{"id":"b8c76a7ac033e25f9682a1f1b2cf4d43","_format":"hh-sol-build-info-1","solcVersion":"0.8.25","solcLongVersion":"0.8.25+commit.b61c2a91","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\n    struct OwnableStorage {\n        address _owner;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Ownable\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\n\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\n        assembly {\n            $.slot := OwnableStorageLocation\n        }\n    }\n\n    /**\n     * @dev The caller account is not authorized to perform an operation.\n     */\n    error OwnableUnauthorizedAccount(address account);\n\n    /**\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\n     */\n    error OwnableInvalidOwner(address owner);\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n     */\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\n        __Ownable_init_unchained(initialOwner);\n    }\n\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\n        if (initialOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(initialOwner);\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        OwnableStorage storage $ = _getOwnableStorage();\n        return $._owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        if (owner() != _msgSender()) {\n            revert OwnableUnauthorizedAccount(_msgSender());\n        }\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        if (newOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        OwnableStorage storage $ = _getOwnableStorage();\n        address oldOwner = $._owner;\n        $._owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n *     function initialize() initializer public {\n *         __ERC20_init(\"MyToken\", \"MTK\");\n *     }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n *     function initializeV2() reinitializer(2) public {\n *         __ERC20Permit_init(\"MyToken\");\n *     }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n *     _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Storage of the initializable contract.\n     *\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n     * when using with upgradeable contracts.\n     *\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n     */\n    struct InitializableStorage {\n        /**\n         * @dev Indicates that the contract has been initialized.\n         */\n        uint64 _initialized;\n        /**\n         * @dev Indicates that the contract is in the process of being initialized.\n         */\n        bool _initializing;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n    /**\n     * @dev The contract is already initialized.\n     */\n    error InvalidInitialization();\n\n    /**\n     * @dev The contract is not initializing.\n     */\n    error NotInitializing();\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint64 version);\n\n    /**\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n     * `onlyInitializing` functions can be used to initialize parent contracts.\n     *\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n     * production.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier initializer() {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        // Cache values to avoid duplicated sloads\n        bool isTopLevelCall = !$._initializing;\n        uint64 initialized = $._initialized;\n\n        // Allowed calls:\n        // - initialSetup: the contract is not in the initializing state and no previous version was\n        //                 initialized\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\n        //                 current contract is just being deployed\n        bool initialSetup = initialized == 0 && isTopLevelCall;\n        bool construction = initialized == 1 && address(this).code.length == 0;\n\n        if (!initialSetup && !construction) {\n            revert InvalidInitialization();\n        }\n        $._initialized = 1;\n        if (isTopLevelCall) {\n            $._initializing = true;\n        }\n        _;\n        if (isTopLevelCall) {\n            $._initializing = false;\n            emit Initialized(1);\n        }\n    }\n\n    /**\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n     * used to initialize parent contracts.\n     *\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n     * are added through upgrades and that require initialization.\n     *\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\n     *\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n     * a contract, executing them in the right order is up to the developer or operator.\n     *\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier reinitializer(uint64 version) {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        if ($._initializing || $._initialized >= version) {\n            revert InvalidInitialization();\n        }\n        $._initialized = version;\n        $._initializing = true;\n        _;\n        $._initializing = false;\n        emit Initialized(version);\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        _checkInitializing();\n        _;\n    }\n\n    /**\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n     */\n    function _checkInitializing() internal view virtual {\n        if (!_isInitializing()) {\n            revert NotInitializing();\n        }\n    }\n\n    /**\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n     * through proxies.\n     *\n     * Emits an {Initialized} event the first time it is successfully executed.\n     */\n    function _disableInitializers() internal virtual {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        if ($._initializing) {\n            revert InvalidInitialization();\n        }\n        if ($._initialized != type(uint64).max) {\n            $._initialized = type(uint64).max;\n            emit Initialized(type(uint64).max);\n        }\n    }\n\n    /**\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\n     */\n    function _getInitializedVersion() internal view returns (uint64) {\n        return _getInitializableStorage()._initialized;\n    }\n\n    /**\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n     */\n    function _isInitializing() internal view returns (bool) {\n        return _getInitializableStorage()._initializing;\n    }\n\n    /**\n     * @dev Returns a pointer to the storage namespace.\n     */\n    // solhint-disable-next-line var-name-mixedcase\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n        assembly {\n            $.slot := INITIALIZABLE_STORAGE\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address private immutable __self = address(this);\n\n    /**\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n     * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n     * during an upgrade.\n     */\n    string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n    /**\n     * @dev The call is from an unauthorized context.\n     */\n    error UUPSUnauthorizedCallContext();\n\n    /**\n     * @dev The storage `slot` is unsupported as a UUID.\n     */\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n    /**\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n     * fail.\n     */\n    modifier onlyProxy() {\n        _checkProxy();\n        _;\n    }\n\n    /**\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n     * callable on the implementing contract but not through proxies.\n     */\n    modifier notDelegated() {\n        _checkNotDelegated();\n        _;\n    }\n\n    function __UUPSUpgradeable_init() internal onlyInitializing {\n    }\n\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n     */\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n     * encoded in `data`.\n     *\n     * Calls {_authorizeUpgrade}.\n     *\n     * Emits an {Upgraded} event.\n     *\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n        _authorizeUpgrade(newImplementation);\n        _upgradeToAndCallUUPS(newImplementation, data);\n    }\n\n    /**\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n     * See {_onlyProxy}.\n     */\n    function _checkProxy() internal view virtual {\n        if (\n            address(this) == __self || // Must be called through delegatecall\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n        ) {\n            revert UUPSUnauthorizedCallContext();\n        }\n    }\n\n    /**\n     * @dev Reverts if the execution is performed via delegatecall.\n     * See {notDelegated}.\n     */\n    function _checkNotDelegated() internal view virtual {\n        if (address(this) != __self) {\n            // Must not be called through delegatecall\n            revert UUPSUnauthorizedCallContext();\n        }\n    }\n\n    /**\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n     * {upgradeToAndCall}.\n     *\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n     *\n     * ```solidity\n     * function _authorizeUpgrade(address) internal onlyOwner {}\n     * ```\n     */\n    function _authorizeUpgrade(address newImplementation) internal virtual;\n\n    /**\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n     *\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n     * is expected to be the implementation slot in ERC1967.\n     *\n     * Emits an {IERC1967-Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n                revert UUPSUnsupportedProxiableUUID(slot);\n            }\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\n        } catch {\n            // The implementation is not UUPS\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {ContextUpgradeable} from \"../../utils/ContextUpgradeable.sol\";\nimport {IERC20Errors} from \"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n */\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\n    struct ERC20Storage {\n        mapping(address account => uint256) _balances;\n\n        mapping(address account => mapping(address spender => uint256)) _allowances;\n\n        uint256 _totalSupply;\n\n        string _name;\n        string _symbol;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC20\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\n\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\n        assembly {\n            $.slot := ERC20StorageLocation\n        }\n    }\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\n        __ERC20_init_unchained(name_, symbol_);\n    }\n\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n        ERC20Storage storage $ = _getERC20Storage();\n        $._name = name_;\n        $._symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        ERC20Storage storage $ = _getERC20Storage();\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            $._totalSupply += value;\n        } else {\n            uint256 fromBalance = $._balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                $._balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                $._totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                $._balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n     * true using the following override:\n     * ```\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        ERC20Storage storage $ = _getERC20Storage();\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        $._allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n    /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\n    struct PausableStorage {\n        bool _paused;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Pausable\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\n\n    function _getPausableStorage() private pure returns (PausableStorage storage $) {\n        assembly {\n            $.slot := PausableStorageLocation\n        }\n    }\n\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    /**\n     * @dev The operation failed because the contract is paused.\n     */\n    error EnforcedPause();\n\n    /**\n     * @dev The operation failed because the contract is not paused.\n     */\n    error ExpectedPause();\n\n    /**\n     * @dev Initializes the contract in unpaused state.\n     */\n    function __Pausable_init() internal onlyInitializing {\n        __Pausable_init_unchained();\n    }\n\n    function __Pausable_init_unchained() internal onlyInitializing {\n        PausableStorage storage $ = _getPausableStorage();\n        $._paused = false;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is not paused.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    modifier whenNotPaused() {\n        _requireNotPaused();\n        _;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is paused.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    modifier whenPaused() {\n        _requirePaused();\n        _;\n    }\n\n    /**\n     * @dev Returns true if the contract is paused, and false otherwise.\n     */\n    function paused() public view virtual returns (bool) {\n        PausableStorage storage $ = _getPausableStorage();\n        return $._paused;\n    }\n\n    /**\n     * @dev Throws if the contract is paused.\n     */\n    function _requireNotPaused() internal view virtual {\n        if (paused()) {\n            revert EnforcedPause();\n        }\n    }\n\n    /**\n     * @dev Throws if the contract is not paused.\n     */\n    function _requirePaused() internal view virtual {\n        if (!paused()) {\n            revert ExpectedPause();\n        }\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual whenNotPaused {\n        PausableStorage storage $ = _getPausableStorage();\n        $._paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual whenPaused {\n        PausableStorage storage $ = _getPausableStorage();\n        $._paused = false;\n        emit Unpaused(_msgSender());\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuardUpgradeable is Initializable {\n    // Booleans are more expensive than uint256 or any type that takes up a full\n    // word because each write operation emits an extra SLOAD to first read the\n    // slot's contents, replace the bits taken up by the boolean, and then write\n    // back. This is the compiler's defense against contract upgrades and\n    // pointer aliasing, and it cannot be disabled.\n\n    // The values being non-zero value makes deployment a bit more expensive,\n    // but in exchange the refund on every call to nonReentrant will be lower in\n    // amount. Since refunds are capped to a percentage of the total\n    // transaction's gas, it is best to keep them low in cases like this one, to\n    // increase the likelihood of the full refund coming into effect.\n    uint256 private constant NOT_ENTERED = 1;\n    uint256 private constant ENTERED = 2;\n\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\n    struct ReentrancyGuardStorage {\n        uint256 _status;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\n        assembly {\n            $.slot := ReentrancyGuardStorageLocation\n        }\n    }\n\n    /**\n     * @dev Unauthorized reentrant call.\n     */\n    error ReentrancyGuardReentrantCall();\n\n    function __ReentrancyGuard_init() internal onlyInitializing {\n        __ReentrancyGuard_init_unchained();\n    }\n\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        $._status = NOT_ENTERED;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant`\n     * function is not supported. It is possible to prevent this from happening\n     * by making the `nonReentrant` function external, and making it call a\n     * `private` function that does the actual work.\n     */\n    modifier nonReentrant() {\n        _nonReentrantBefore();\n        _;\n        _nonReentrantAfter();\n    }\n\n    function _nonReentrantBefore() private {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\n        if ($._status == ENTERED) {\n            revert ReentrancyGuardReentrantCall();\n        }\n\n        // Any calls to nonReentrant after this point will fail\n        $._status = ENTERED;\n    }\n\n    function _nonReentrantAfter() private {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        $._status = NOT_ENTERED;\n    }\n\n    /**\n     * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n     * `nonReentrant` function in the call stack.\n     */\n    function _reentrancyGuardEntered() internal view returns (bool) {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        return $._status == ENTERED;\n    }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\n */\ninterface IERC20Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC20InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC20InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC20InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\n */\ninterface IERC721Errors {\n    /**\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n     * Used in balance queries.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721InvalidOwner(address owner);\n\n    /**\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721NonexistentToken(uint256 tokenId);\n\n    /**\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param tokenId Identifier number of a token.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC721InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC721InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC721InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\n */\ninterface IERC1155Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC1155InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC1155MissingApprovalForAll(address operator, address owner);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC1155InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC1155InvalidOperator(address operator);\n\n    /**\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n     * Used in batch transfers.\n     * @param idsLength Length of the array of token identifiers\n     * @param valuesLength Length of the array of token amounts\n     */\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n    /**\n     * @dev Must return an address that can be used as a delegate call target.\n     *\n     * {UpgradeableBeacon} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n */\nlibrary ERC1967Utils {\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Emitted when the beacon is changed.\n     */\n    event BeaconUpgraded(address indexed beacon);\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev The `implementation` of the proxy is invalid.\n     */\n    error ERC1967InvalidImplementation(address implementation);\n\n    /**\n     * @dev The `admin` of the proxy is invalid.\n     */\n    error ERC1967InvalidAdmin(address admin);\n\n    /**\n     * @dev The `beacon` of the proxy is invalid.\n     */\n    error ERC1967InvalidBeacon(address beacon);\n\n    /**\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\n     */\n    error ERC1967NonPayable();\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        if (newImplementation.code.length == 0) {\n            revert ERC1967InvalidImplementation(newImplementation);\n        }\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n     * to avoid stuck value in the contract.\n     *\n     * Emits an {IERC1967-Upgraded} event.\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n\n        if (data.length > 0) {\n            Address.functionDelegateCall(newImplementation, data);\n        } else {\n            _checkNonPayable();\n        }\n    }\n\n    /**\n     * @dev Storage slot with the admin of the contract.\n     * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function getAdmin() internal view returns (address) {\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        if (newAdmin == address(0)) {\n            revert ERC1967InvalidAdmin(address(0));\n        }\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {IERC1967-AdminChanged} event.\n     */\n    function changeAdmin(address newAdmin) internal {\n        emit AdminChanged(getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        if (newBeacon.code.length == 0) {\n            revert ERC1967InvalidBeacon(newBeacon);\n        }\n\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n        address beaconImplementation = IBeacon(newBeacon).implementation();\n        if (beaconImplementation.code.length == 0) {\n            revert ERC1967InvalidImplementation(beaconImplementation);\n        }\n    }\n\n    /**\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n     * to avoid stuck value in the contract.\n     *\n     * Emits an {IERC1967-BeaconUpgraded} event.\n     *\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n     * efficiency.\n     */\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n\n        if (data.length > 0) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        } else {\n            _checkNonPayable();\n        }\n    }\n\n    /**\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n     * if an upgrade doesn't perform an initialization call.\n     */\n    function _checkNonPayable() private {\n        if (msg.value > 0) {\n            revert ERC1967NonPayable();\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n    mapping(address account => uint256) private _balances;\n\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            _totalSupply += value;\n        } else {\n            uint256 fromBalance = _balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                _balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                _totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                _balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n     * true using the following override:\n     * ```\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        _allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev The ETH balance of the account is not enough to perform the operation.\n     */\n    error AddressInsufficientBalance(address account);\n\n    /**\n     * @dev There's no code at `target` (it is not a contract).\n     */\n    error AddressEmptyCode(address target);\n\n    /**\n     * @dev A call to an address target failed. The target may have reverted.\n     */\n    error FailedInnerCall();\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        if (address(this).balance < amount) {\n            revert AddressInsufficientBalance(address(this));\n        }\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        if (!success) {\n            revert FailedInnerCall();\n        }\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason or custom error, it is bubbled\n     * up by this function (like regular Solidity function calls). However, if\n     * the call reverted with no returned reason, this function reverts with a\n     * {FailedInnerCall} error.\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        if (address(this).balance < value) {\n            revert AddressInsufficientBalance(address(this));\n        }\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n     * unsuccessful call.\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata\n    ) internal view returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            // only check if target is a contract if the call was successful and the return data is empty\n            // otherwise we already know that it was a contract\n            if (returndata.length == 0 && target.code.length == 0) {\n                revert AddressEmptyCode(target);\n            }\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n     * revert reason or with a default {FailedInnerCall} error.\n     */\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n     */\n    function _revert(bytes memory returndata) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert FailedInnerCall();\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(newImplementation.code.length > 0);\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    struct StringSlot {\n        string value;\n    }\n\n    struct BytesSlot {\n        bytes value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n     */\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n     */\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n}\n"},"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IUniswapV3PoolActions#swap\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\ninterface IUniswapV3SwapCallback {\n    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\n    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\n    function uniswapV3SwapCallback(\n        int256 amount0Delta,\n        int256 amount1Delta,\n        bytes calldata data\n    ) external;\n}\n"},"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title The interface for the Uniswap V3 Factory\n/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\ninterface IUniswapV3Factory {\n    /// @notice Emitted when the owner of the factory is changed\n    /// @param oldOwner The owner before the owner was changed\n    /// @param newOwner The owner after the owner was changed\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\n\n    /// @notice Emitted when a pool is created\n    /// @param token0 The first token of the pool by address sort order\n    /// @param token1 The second token of the pool by address sort order\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\n    /// @param pool The address of the created pool\n    event PoolCreated(\n        address indexed token0,\n        address indexed token1,\n        uint24 indexed fee,\n        int24 tickSpacing,\n        address pool\n    );\n\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\n    /// @param fee The enabled fee, denominated in hundredths of a bip\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\n\n    /// @notice Returns the current owner of the factory\n    /// @dev Can be changed by the current owner via setOwner\n    /// @return The address of the factory owner\n    function owner() external view returns (address);\n\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\n    /// @return The tick spacing\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\n\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\n    /// @param tokenA The contract address of either token0 or token1\n    /// @param tokenB The contract address of the other token\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n    /// @return pool The pool address\n    function getPool(\n        address tokenA,\n        address tokenB,\n        uint24 fee\n    ) external view returns (address pool);\n\n    /// @notice Creates a pool for the given two tokens and fee\n    /// @param tokenA One of the two tokens in the desired pool\n    /// @param tokenB The other of the two tokens in the desired pool\n    /// @param fee The desired fee for the pool\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\n    /// are invalid.\n    /// @return pool The address of the newly created pool\n    function createPool(\n        address tokenA,\n        address tokenB,\n        uint24 fee\n    ) external returns (address pool);\n\n    /// @notice Updates the owner of the factory\n    /// @dev Must be called by the current owner\n    /// @param _owner The new owner of the factory\n    function setOwner(address _owner) external;\n\n    /// @notice Enables a fee amount with the given tickSpacing\n    /// @dev Fee amounts may never be removed once enabled\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\n}\n"},"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport './pool/IUniswapV3PoolImmutables.sol';\nimport './pool/IUniswapV3PoolState.sol';\nimport './pool/IUniswapV3PoolDerivedState.sol';\nimport './pool/IUniswapV3PoolActions.sol';\nimport './pool/IUniswapV3PoolOwnerActions.sol';\nimport './pool/IUniswapV3PoolEvents.sol';\n\n/// @title The interface for a Uniswap V3 Pool\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\n/// to the ERC20 specification\n/// @dev The pool interface is broken up into many smaller pieces\ninterface IUniswapV3Pool is\n    IUniswapV3PoolImmutables,\n    IUniswapV3PoolState,\n    IUniswapV3PoolDerivedState,\n    IUniswapV3PoolActions,\n    IUniswapV3PoolOwnerActions,\n    IUniswapV3PoolEvents\n{\n\n}\n"},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissionless pool actions\n/// @notice Contains pool methods that can be called by anyone\ninterface IUniswapV3PoolActions {\n    /// @notice Sets the initial price for the pool\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\n    function initialize(uint160 sqrtPriceX96) external;\n\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\n    /// @param recipient The address for which the liquidity will be created\n    /// @param tickLower The lower tick of the position in which to add liquidity\n    /// @param tickUpper The upper tick of the position in which to add liquidity\n    /// @param amount The amount of liquidity to mint\n    /// @param data Any data that should be passed through to the callback\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\n    function mint(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount,\n        bytes calldata data\n    ) external returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Collects tokens owed to a position\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n    /// @param recipient The address which should receive the fees collected\n    /// @param tickLower The lower tick of the position for which to collect fees\n    /// @param tickUpper The upper tick of the position for which to collect fees\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\n    /// @return amount0 The amount of fees collected in token0\n    /// @return amount1 The amount of fees collected in token1\n    function collect(\n        address recipient,\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external returns (uint128 amount0, uint128 amount1);\n\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n    /// @dev Fees must be collected separately via a call to #collect\n    /// @param tickLower The lower tick of the position for which to burn liquidity\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\n    /// @param amount How much liquidity to burn\n    /// @return amount0 The amount of token0 sent to the recipient\n    /// @return amount1 The amount of token1 sent to the recipient\n    function burn(\n        int24 tickLower,\n        int24 tickUpper,\n        uint128 amount\n    ) external returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Swap token0 for token1, or token1 for token0\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\n    /// @param recipient The address to receive the output of the swap\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\n    /// @param data Any data to be passed through to the callback\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\n    function swap(\n        address recipient,\n        bool zeroForOne,\n        int256 amountSpecified,\n        uint160 sqrtPriceLimitX96,\n        bytes calldata data\n    ) external returns (int256 amount0, int256 amount1);\n\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\n    /// @param recipient The address which will receive the token0 and token1 amounts\n    /// @param amount0 The amount of token0 to send\n    /// @param amount1 The amount of token1 to send\n    /// @param data Any data to be passed through to the callback\n    function flash(\n        address recipient,\n        uint256 amount0,\n        uint256 amount1,\n        bytes calldata data\n    ) external;\n\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n    /// the input observationCardinalityNext.\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\n}\n"},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that is not stored\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n/// blockchain. The functions here may have variable gas costs.\ninterface IUniswapV3PoolDerivedState {\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n    /// you must call it with secondsAgos = [3600, 0].\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n    /// timestamp\n    function observe(uint32[] calldata secondsAgos)\n        external\n        view\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\n\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n    /// snapshot is taken and the second snapshot is taken.\n    /// @param tickLower The lower tick of the range\n    /// @param tickUpper The upper tick of the range\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\n        external\n        view\n        returns (\n            int56 tickCumulativeInside,\n            uint160 secondsPerLiquidityInsideX128,\n            uint32 secondsInside\n        );\n}\n"},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Events emitted by a pool\n/// @notice Contains all events emitted by the pool\ninterface IUniswapV3PoolEvents {\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\n\n    /// @notice Emitted when liquidity is minted for a given position\n    /// @param sender The address that minted the liquidity\n    /// @param owner The owner of the position and recipient of any minted liquidity\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount The amount of liquidity minted to the position range\n    /// @param amount0 How much token0 was required for the minted liquidity\n    /// @param amount1 How much token1 was required for the minted liquidity\n    event Mint(\n        address sender,\n        address indexed owner,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount,\n        uint256 amount0,\n        uint256 amount1\n    );\n\n    /// @notice Emitted when fees are collected by the owner of a position\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n    /// @param owner The owner of the position for which fees are collected\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount0 The amount of token0 fees collected\n    /// @param amount1 The amount of token1 fees collected\n    event Collect(\n        address indexed owner,\n        address recipient,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount0,\n        uint128 amount1\n    );\n\n    /// @notice Emitted when a position's liquidity is removed\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n    /// @param owner The owner of the position for which liquidity is removed\n    /// @param tickLower The lower tick of the position\n    /// @param tickUpper The upper tick of the position\n    /// @param amount The amount of liquidity to remove\n    /// @param amount0 The amount of token0 withdrawn\n    /// @param amount1 The amount of token1 withdrawn\n    event Burn(\n        address indexed owner,\n        int24 indexed tickLower,\n        int24 indexed tickUpper,\n        uint128 amount,\n        uint256 amount0,\n        uint256 amount1\n    );\n\n    /// @notice Emitted by the pool for any swaps between token0 and token1\n    /// @param sender The address that initiated the swap call, and that received the callback\n    /// @param recipient The address that received the output of the swap\n    /// @param amount0 The delta of the token0 balance of the pool\n    /// @param amount1 The delta of the token1 balance of the pool\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\n    /// @param liquidity The liquidity of the pool after the swap\n    /// @param tick The log base 1.0001 of price of the pool after the swap\n    event Swap(\n        address indexed sender,\n        address indexed recipient,\n        int256 amount0,\n        int256 amount1,\n        uint160 sqrtPriceX96,\n        uint128 liquidity,\n        int24 tick\n    );\n\n    /// @notice Emitted by the pool for any flashes of token0/token1\n    /// @param sender The address that initiated the swap call, and that received the callback\n    /// @param recipient The address that received the tokens from flash\n    /// @param amount0 The amount of token0 that was flashed\n    /// @param amount1 The amount of token1 that was flashed\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\n    event Flash(\n        address indexed sender,\n        address indexed recipient,\n        uint256 amount0,\n        uint256 amount1,\n        uint256 paid0,\n        uint256 paid1\n    );\n\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n    /// just before a mint/swap/burn.\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\n    event IncreaseObservationCardinalityNext(\n        uint16 observationCardinalityNextOld,\n        uint16 observationCardinalityNextNew\n    );\n\n    /// @notice Emitted when the protocol fee is changed by the pool\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\n\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\n    /// @param sender The address that collects the protocol fees\n    /// @param recipient The address that receives the collected protocol fees\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\n}\n"},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that never changes\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\ninterface IUniswapV3PoolImmutables {\n    /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\n    /// @return The contract address\n    function factory() external view returns (address);\n\n    /// @notice The first of the two tokens of the pool, sorted by address\n    /// @return The token contract address\n    function token0() external view returns (address);\n\n    /// @notice The second of the two tokens of the pool, sorted by address\n    /// @return The token contract address\n    function token1() external view returns (address);\n\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\n    /// @return The fee\n    function fee() external view returns (uint24);\n\n    /// @notice The pool tick spacing\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n    /// This value is an int24 to avoid casting even though it is always positive.\n    /// @return The tick spacing\n    function tickSpacing() external view returns (int24);\n\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n    /// @return The max amount of liquidity per tick\n    function maxLiquidityPerTick() external view returns (uint128);\n}\n"},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissioned pool actions\n/// @notice Contains pool methods that may only be called by the factory owner\ninterface IUniswapV3PoolOwnerActions {\n    /// @notice Set the denominator of the protocol's % share of the fees\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\n\n    /// @notice Collect the protocol fee accrued to the pool\n    /// @param recipient The address to which collected protocol fees should be sent\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n    /// @return amount0 The protocol fee collected in token0\n    /// @return amount1 The protocol fee collected in token1\n    function collectProtocol(\n        address recipient,\n        uint128 amount0Requested,\n        uint128 amount1Requested\n    ) external returns (uint128 amount0, uint128 amount1);\n}\n"},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that can change\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\n/// per transaction\ninterface IUniswapV3PoolState {\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n    /// when accessed externally.\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n    /// boundary.\n    /// observationIndex The index of the last oracle observation that was written,\n    /// observationCardinality The current maximum number of observations stored in the pool,\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n    /// feeProtocol The protocol fee for both tokens of the pool.\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n    /// unlocked Whether the pool is currently locked to reentrancy\n    function slot0()\n        external\n        view\n        returns (\n            uint160 sqrtPriceX96,\n            int24 tick,\n            uint16 observationIndex,\n            uint16 observationCardinality,\n            uint16 observationCardinalityNext,\n            uint8 feeProtocol,\n            bool unlocked\n        );\n\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n    /// @dev This value can overflow the uint256\n    function feeGrowthGlobal0X128() external view returns (uint256);\n\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n    /// @dev This value can overflow the uint256\n    function feeGrowthGlobal1X128() external view returns (uint256);\n\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\n    /// @dev Protocol fees will never exceed uint128 max in either token\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\n\n    /// @notice The currently in range liquidity available to the pool\n    /// @dev This value has no relationship to the total liquidity across all ticks\n    function liquidity() external view returns (uint128);\n\n    /// @notice Look up information about a specific tick in the pool\n    /// @param tick The tick to look up\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n    /// tick upper,\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\n    /// a specific position.\n    function ticks(int24 tick)\n        external\n        view\n        returns (\n            uint128 liquidityGross,\n            int128 liquidityNet,\n            uint256 feeGrowthOutside0X128,\n            uint256 feeGrowthOutside1X128,\n            int56 tickCumulativeOutside,\n            uint160 secondsPerLiquidityOutsideX128,\n            uint32 secondsOutside,\n            bool initialized\n        );\n\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\n\n    /// @notice Returns the information about a position by the position's key\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n    /// @return _liquidity The amount of liquidity in the position,\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\n    function positions(bytes32 key)\n        external\n        view\n        returns (\n            uint128 _liquidity,\n            uint256 feeGrowthInside0LastX128,\n            uint256 feeGrowthInside1LastX128,\n            uint128 tokensOwed0,\n            uint128 tokensOwed1\n        );\n\n    /// @notice Returns data about a specific observation index\n    /// @param index The element of the observations array to fetch\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n    /// ago, rather than at a specific index in the array.\n    /// @return blockTimestamp The timestamp of the observation,\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\n    function observations(uint256 index)\n        external\n        view\n        returns (\n            uint32 blockTimestamp,\n            int56 tickCumulative,\n            uint160 secondsPerLiquidityCumulativeX128,\n            bool initialized\n        );\n}\n"},"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\n/// @title Quoter Interface\n/// @notice Supports quoting the calculated amounts from exact input or exact output swaps\n/// @dev These functions are not marked view because they rely on calling non-view functions and reverting\n/// to compute the result. They are also not gas efficient and should not be called on-chain.\ninterface IQuoter {\n    /// @notice Returns the amount out received for a given exact input swap without executing the swap\n    /// @param path The path of the swap, i.e. each token pair and the pool fee\n    /// @param amountIn The amount of the first token to swap\n    /// @return amountOut The amount of the last token that would be received\n    function quoteExactInput(bytes memory path, uint256 amountIn) external returns (uint256 amountOut);\n\n    /// @notice Returns the amount out received for a given exact input but for a swap of a single pool\n    /// @param tokenIn The token being swapped in\n    /// @param tokenOut The token being swapped out\n    /// @param fee The fee of the token pool to consider for the pair\n    /// @param amountIn The desired input amount\n    /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n    /// @return amountOut The amount of `tokenOut` that would be received\n    function quoteExactInputSingle(\n        address tokenIn,\n        address tokenOut,\n        uint24 fee,\n        uint256 amountIn,\n        uint160 sqrtPriceLimitX96\n    ) external returns (uint256 amountOut);\n\n    /// @notice Returns the amount in required for a given exact output swap without executing the swap\n    /// @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\n    /// @param amountOut The amount of the last token to receive\n    /// @return amountIn The amount of first token required to be paid\n    function quoteExactOutput(bytes memory path, uint256 amountOut) external returns (uint256 amountIn);\n\n    /// @notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n    /// @param tokenIn The token being swapped in\n    /// @param tokenOut The token being swapped out\n    /// @param fee The fee of the token pool to consider for the pair\n    /// @param amountOut The desired output amount\n    /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n    /// @return amountIn The amount required as the input for the swap in order to receive `amountOut`\n    function quoteExactOutputSingle(\n        address tokenIn,\n        address tokenOut,\n        uint24 fee,\n        uint256 amountOut,\n        uint160 sqrtPriceLimitX96\n    ) external returns (uint256 amountIn);\n}\n"},"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\nimport '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';\n\n/// @title Router token swapping functionality\n/// @notice Functions for swapping tokens via Uniswap V3\ninterface ISwapRouter is IUniswapV3SwapCallback {\n    struct ExactInputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint24 fee;\n        address recipient;\n        uint256 deadline;\n        uint256 amountIn;\n        uint256 amountOutMinimum;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Swaps `amountIn` of one token for as much as possible of another token\n    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\n    /// @return amountOut The amount of the received token\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\n\n    struct ExactInputParams {\n        bytes path;\n        address recipient;\n        uint256 deadline;\n        uint256 amountIn;\n        uint256 amountOutMinimum;\n    }\n\n    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\n    /// @return amountOut The amount of the received token\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\n\n    struct ExactOutputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint24 fee;\n        address recipient;\n        uint256 deadline;\n        uint256 amountOut;\n        uint256 amountInMaximum;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Swaps as little as possible of one token for `amountOut` of another token\n    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\n    /// @return amountIn The amount of the input token\n    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\n\n    struct ExactOutputParams {\n        bytes path;\n        address recipient;\n        uint256 deadline;\n        uint256 amountOut;\n        uint256 amountInMaximum;\n    }\n\n    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\n    /// @return amountIn The amount of the input token\n    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\n}\n"},"contracts/interfaces/I1inchSpotAgg.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\r\n\r\ninterface I1inchSpotAgg {\r\n  function getRate(IERC20 srcToken, IERC20 dstToken, bool useWrappers) external view returns (uint256 weightedRate);\r\n\r\n  function getRateToEth(IERC20 srcToken, bool useWrappers) external view returns (uint256 weightedRate);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Agent.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1Agent {\r\n  struct Call {\r\n    address to;\r\n    uint256 value;\r\n    bytes data;\r\n  }\r\n\r\n  function execute(Call[] memory calls, address[] memory tokensReturn) external;\r\n}\r\n"},"contracts/interfaces/IBaluniV1AgentFactory.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1AgentFactory {\r\n    function getAgentAddress(address user) external view returns (address);\r\n\r\n    function getOrCreateAgent(address user) external returns (address);\r\n\r\n    function getRegistry() external view returns (address);\r\n}\r\n"},"contracts/interfaces/IBaluniV1DCAVault.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1DCAVault {\r\n    function baseAsset() external view returns (address);\r\n    function quoteAsset() external view returns (address);\r\n    function registry() external view returns (address);\r\n    function lastDeposit() external view returns (uint256);\r\n    function deposit(uint256 amount, address to) external;\r\n    function withdraw(uint256 shares, address to) external;\r\n    function pause() external;\r\n    function unpause() external;\r\n    function totalValuation() external view returns (uint256);\r\n    function unitPrice() external view returns (uint256);\r\n}\r\n"},"contracts/interfaces/IBaluniV1HyperUniProxy.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\ninterface IBaluniV1HyperUniProxy {\r\n    function deposit(\r\n        uint256 deposit0,\r\n        uint256 deposit1,\r\n        address to,\r\n        address from,\r\n        address pos\r\n    ) external returns (uint256 shares);\r\n\r\n    function getDepositAmount(\r\n        address pos,\r\n        address token,\r\n        uint256 _deposit\r\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\r\n\r\n    function clearance() external returns (address);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Hypervisor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-only\r\npragma solidity 0.8.25;\r\npragma abicoder v2;\r\n\r\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';\r\n\r\ninterface IBaluniV1Hypervisor {\r\n    function deposit(uint256, uint256, address, address, uint256[4] memory minIn) external returns (uint256);\r\n\r\n    function withdraw(uint256, address, address, uint256[4] memory) external returns (uint256, uint256);\r\n\r\n    function compound()\r\n        external\r\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\r\n\r\n    function compound(\r\n        uint256[4] memory inMin\r\n    )\r\n        external\r\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\r\n\r\n    function rebalance(\r\n        int24 _baseLower,\r\n        int24 _baseUpper,\r\n        int24 _limitLower,\r\n        int24 _limitUpper,\r\n        address _feeRecipient,\r\n        uint256[4] memory minIn,\r\n        uint256[4] memory outMin\r\n    ) external;\r\n\r\n    function addBaseLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\r\n\r\n    function addLimitLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\r\n\r\n    function pullLiquidity(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 shares,\r\n        uint256[2] memory amountMin\r\n    ) external returns (uint256 base0, uint256 base1);\r\n\r\n    function pullLiquidity(\r\n        uint256 shares,\r\n        uint256[4] memory minAmounts\r\n    ) external returns (uint256 base0, uint256 base1, uint256 limit0, uint256 limit1);\r\n\r\n    function addLiquidity(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint256 amount0,\r\n        uint256 amount1,\r\n        uint256[2] memory inMin\r\n    ) external;\r\n\r\n    function pool() external view returns (IUniswapV3Pool);\r\n\r\n    function currentTick() external view returns (int24 tick);\r\n\r\n    function tickSpacing() external view returns (int24 spacing);\r\n\r\n    function baseLower() external view returns (int24 tick);\r\n\r\n    function baseUpper() external view returns (int24 tick);\r\n\r\n    function limitLower() external view returns (int24 tick);\r\n\r\n    function limitUpper() external view returns (int24 tick);\r\n\r\n    function token0() external view returns (address);\r\n\r\n    function token1() external view returns (address);\r\n\r\n    function deposit0Max() external view returns (uint256);\r\n\r\n    function deposit1Max() external view returns (uint256);\r\n\r\n    function balanceOf(address) external view returns (uint256);\r\n\r\n    function approve(address, uint256) external returns (bool);\r\n\r\n    function transferFrom(address, address, uint256) external returns (bool);\r\n\r\n    function transfer(address, uint256) external returns (bool);\r\n\r\n    function getTotalAmounts() external view returns (uint256 total0, uint256 total1);\r\n\r\n    function getBasePosition() external view returns (uint256 liquidity, uint256 total0, uint256 total1);\r\n\r\n    function totalSupply() external view returns (uint256);\r\n\r\n    function setWhitelist(address _address) external;\r\n\r\n    function setFee(uint8 newFee) external;\r\n\r\n    function removeWhitelisted() external;\r\n\r\n    function transferOwnership(address newOwner) external;\r\n\r\n    function toggleDirectDeposit() external;\r\n}\r\n"},"contracts/interfaces/IBaluniV1Oracle.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1Oracle {\r\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\r\n\r\n    function convertScaled(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view returns (uint256 valuation);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Pool.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n * @title IBaluniV1Pool\r\n * @dev Interface for the BaluniV1Pool contract\r\n */\r\ninterface IBaluniV1Pool {\r\n    struct AssetInfo {\r\n        address asset;\r\n        uint256 weight;\r\n        uint256 slippage;\r\n        uint256 reserve;\r\n    }\r\n\r\n    event WeightsRebalanced(address indexed user, uint256[] amountsToAdd);\r\n    event Swap(address indexed user, address fromToken, address toToken, uint256 amountIn, uint256 amountOut);\r\n    event Withdraw(address indexed user, uint256 amount);\r\n    event Deposit(address indexed user, uint256 amount);\r\n    event RebalancePerformed(address indexed user, address[] assets);\r\n\r\n    function rebalanceAndDeposit(address receiver) external returns (uint256[] memory);\r\n\r\n    function swap(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount,\r\n        uint256 minAmount,\r\n        address receiver,\r\n        uint256 deadline\r\n    ) external returns (uint256 amountOut, uint256 fee);\r\n\r\n    function quotePotentialSwap(address fromToken, address toToken, uint256 amount) external view returns (uint256);\r\n\r\n    function getSlippage(address token) external view returns (uint256);\r\n\r\n    function getTokenWeight(address token) external view returns (uint256);\r\n\r\n    function getDeviationForToken(address token) external view returns (uint256);\r\n\r\n    function getSlippageParams() external view returns (uint256[] memory);\r\n\r\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\r\n\r\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\r\n\r\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\r\n\r\n    function rebalance() external;\r\n\r\n    function getDeviations() external view returns (bool[] memory directions, uint256[] memory deviations);\r\n\r\n    function assetLiquidity(uint256 assetIndex) external view returns (uint256);\r\n\r\n    function totalValuation() external view returns (uint256 totalVal, uint256[] memory valuations);\r\n\r\n    function liquidity() external view returns (uint256);\r\n\r\n    function unitPrice() external view returns (uint256);\r\n\r\n    function getReserves() external view returns (uint256[] memory);\r\n\r\n    function getAssetReserve(address asset) external view returns (uint256);\r\n\r\n    function getAssets() external view returns (address[] memory);\r\n\r\n    function getWeights() external view returns (uint256[] memory);\r\n\r\n    function isRebalanceNeeded() external view returns (bool);\r\n}\r\n"},"contracts/interfaces/IBaluniV1PoolPeriphery.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n * @title IBaluniV1PoolPeriphery\r\n * @dev Interface for the BaluniV1PoolPeriphery contract\r\n */\r\ninterface IBaluniV1PoolPeriphery {\r\n    function initialize(address _registry) external;\r\n\r\n    function reinitialize(address _registry, uint64 version) external;\r\n\r\n    function swapTokenForToken(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 fromAmount,\r\n        uint256 minAmount,\r\n        address from,\r\n        address to,\r\n        uint deadline\r\n    ) external returns (uint256 amountOut, uint256 haircut);\r\n\r\n    function swapTokensForTokens(\r\n        address[] calldata tokenPath,\r\n        address[] calldata poolPath,\r\n        uint256 fromAmount,\r\n        uint256 minimumToAmount,\r\n        address to,\r\n        uint256 deadline\r\n    ) external returns (uint256 amountOut, uint256 haircut);\r\n\r\n    function batchSwap(\r\n        address[] calldata fromTokens,\r\n        address[] calldata toTokens,\r\n        uint256[] calldata amounts,\r\n        address[] calldata receivers\r\n    ) external returns (uint256[] memory);\r\n\r\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\r\n\r\n    function getPoolsContainingToken(address token) external view returns (address[] memory);\r\n\r\n    function getVersion() external view returns (uint64);\r\n}\r\n"},"contracts/interfaces/IBaluniV1PoolRegistry.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1PoolRegistry {\r\n    function getPoolByAssets(address asset1, address asset2) external view returns (address);\r\n    function getPoolsByAsset(address token) external view returns (address[] memory);\r\n    function poolExist(address _pool) external view returns (bool);\r\n    function getAllPools() external view returns (address[] memory);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Rebalancer.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1Rebalancer {\r\n    struct RebalanceVars {\r\n        uint256 length;\r\n        uint256 totalValue;\r\n        uint256 finalUsdBalance;\r\n        uint256 overweightVaultsLength;\r\n        uint256 underweightVaultsLength;\r\n        uint256 totalActiveWeight;\r\n        uint256 amountOut;\r\n        uint256[] overweightVaults;\r\n        uint256[] overweightAmounts;\r\n        uint256[] underweightVaults;\r\n        uint256[] underweightAmounts;\r\n        uint256[] balances;\r\n    }\r\n\r\n    // Functions\r\n    function rebalance(\r\n        uint256[] memory balances,\r\n        address[] calldata assets,\r\n        uint256[] calldata weights,\r\n        uint256 limit,\r\n        address sender,\r\n        address receiver,\r\n        address baseAsset\r\n    ) external;\r\n\r\n    function checkRebalance(\r\n        uint256[] memory balances,\r\n        address[] calldata assets,\r\n        uint256[] calldata weights,\r\n        uint256 limit,\r\n        address sender,\r\n        address baseAsset\r\n    ) external view returns (RebalanceVars memory);\r\n\r\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Registry.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n * @title IBaluniV1Registry\r\n * @dev Interface for the BaluniV1Registry contract.\r\n */\r\ninterface IBaluniV1Registry {\r\n    function setUniswapFactory(address _uniswapFactory) external;\r\n\r\n    function setUniswapRouter(address _uniswapRouter) external;\r\n\r\n    function setUniswapQuoter(address _uniswapQuoter) external;\r\n\r\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\r\n\r\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\r\n\r\n    function setBaluniSwapper(address _baluniSwapper) external;\r\n\r\n    function setBaluniOracle(address _baluniOracle) external;\r\n\r\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\r\n\r\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\r\n\r\n    function setBaluniRebalancer(address _baluniRebalancer) external;\r\n\r\n    function setBaluniRouter(address _baluniRouter) external;\r\n\r\n    function setBaluniRegistry(address _baluniRegistry) external;\r\n\r\n    function setWNATIVE(address _WNATIVE) external;\r\n\r\n    function setUSDC(address _USDC) external;\r\n\r\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\r\n\r\n    function setTreasury(address _treasury) external;\r\n\r\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\r\n\r\n    function setBPS_FEE(uint256 __BPS_FEE) external;\r\n\r\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\r\n\r\n    function setBaluniPoolZap(address _baluniPoolZap) external;\r\n\r\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\r\n\r\n    function getUniswapQuoter() external view returns (address);\r\n\r\n    function getUniswapFactory() external view returns (address);\r\n\r\n    function getUniswapRouter() external view returns (address);\r\n\r\n    function getBaluniSwapper() external view returns (address);\r\n\r\n    function getBaluniOracle() external view returns (address);\r\n\r\n    function getBaluniAgentFactory() external view returns (address);\r\n\r\n    function getBaluniPoolPeriphery() external view returns (address);\r\n\r\n    function getBaluniDCAVaultRegistry() external view returns (address);\r\n\r\n    function getBaluniPoolRegistry() external view returns (address);\r\n\r\n    function getBaluniRebalancer() external view returns (address);\r\n\r\n    function getBaluniRouter() external view returns (address);\r\n\r\n    function getBaluniRegistry() external view returns (address);\r\n\r\n    function getWNATIVE() external view returns (address);\r\n\r\n    function getUSDC() external view returns (address);\r\n\r\n    function get1inchSpotAgg() external view returns (address);\r\n\r\n    function getBPS_FEE() external view returns (uint256);\r\n\r\n    function getMAX_BPS_FEE() external view returns (uint256);\r\n\r\n    function getBPS_BASE() external view returns (uint256);\r\n\r\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\r\n\r\n    function getTreasury() external view returns (address);\r\n\r\n    function setStaticOracle(address _staticOracle) external;\r\n\r\n    function getStaticOracle() external view returns (address);\r\n\r\n    function getBaluniYearnVaultRegistry() external view returns (address);\r\n\r\n    function getBaluniPoolZap() external view returns (address);\r\n\r\n    function getBaluniHyperPoolZap() external view returns (address);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Router.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\r\nimport '@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol';\r\nimport './I1inchSpotAgg.sol';\r\nimport './IBaluniV1Agent.sol';\r\n\r\ninterface IBaluniV1Router {\r\n    struct Call {\r\n        address to;\r\n        uint256 value;\r\n        bytes data;\r\n    }\r\n\r\n    // Variables\r\n    function _MAX_BPS_FEE() external view returns (uint256);\r\n\r\n    function _BPS_FEE() external view returns (uint256);\r\n\r\n    function _BPS_BASE() external view returns (uint256);\r\n\r\n    function getTokens() external view returns (address[] memory);\r\n\r\n    function USDC() external view returns (IERC20);\r\n\r\n    function WNATIVE() external view returns (address);\r\n\r\n    function oracle() external view returns (address);\r\n\r\n    function uniswapRouter() external view returns (address);\r\n\r\n    function uniswapFactory() external view returns (address);\r\n\r\n    function baluniFactory() external view returns (address);\r\n\r\n    function baluniPeriphery() external view returns (address);\r\n\r\n    function agentFactory() external view returns (address);\r\n\r\n    function marketOracle() external view returns (address);\r\n\r\n    function rebalancer() external view returns (address);\r\n\r\n    function treasury() external view returns (address);\r\n\r\n    // Functions\r\n    function initialize(\r\n        address _usdc,\r\n        address _wnative,\r\n        address _1inchSpotAgg,\r\n        address _uniRouter,\r\n        address _uniFactory,\r\n        address _rebalancer\r\n    ) external;\r\n\r\n    function reinitialize(\r\n        address _usdc,\r\n        address _wnative,\r\n        address _1inchSpotAgg,\r\n        address _uniRouter,\r\n        address _uniFactory,\r\n        address _rebalancer,\r\n        uint64 version\r\n    ) external;\r\n\r\n    function initializeMarketOracle(address _marketOracle) external;\r\n\r\n    function changeMarketOracle(address _marketOracle) external;\r\n\r\n    function changeBpsFee(uint256 _newFee) external;\r\n\r\n    function changeTreasury(address _newTreasury) external;\r\n\r\n    function changeRebalancer(address _newRebalancer) external;\r\n\r\n    function changeAgentFactory(address _agentFactory) external;\r\n\r\n    function execute(IBaluniV1Agent.Call[] memory calls, address[] memory tokensReturn) external;\r\n\r\n    function liquidate(address token) external;\r\n\r\n    function liquidateAll() external;\r\n\r\n    function burnERC20(uint256 burnAmount) external;\r\n\r\n    function burnUSDC(uint256 burnAmount) external;\r\n\r\n    function getAgentAddress(address _user) external view returns (address);\r\n\r\n    function mintWithUSDC(uint256 balAmountToMint) external;\r\n\r\n    function callRebalance(\r\n        address[] calldata assets,\r\n        uint256[] calldata weights,\r\n        address sender,\r\n        address receiver,\r\n        uint256 limit,\r\n        address baseAsset\r\n    ) external;\r\n\r\n    function requiredUSDCtoMint(uint256 balAmountToMint) external view returns (uint256);\r\n\r\n    function calculateTokenShare(\r\n        uint256 totalBaluni,\r\n        uint256 totalERC20Balance,\r\n        uint256 baluniAmount,\r\n        uint256 tokenDecimals\r\n    ) external pure returns (uint256);\r\n\r\n    function tokenValuation(uint256 amount, address token) external view returns (uint256);\r\n\r\n    function totalValuation() external view returns (uint256);\r\n\r\n    function getUSDCShareValue(uint256 amount) external view returns (uint256);\r\n\r\n    function fetchMarketPrices() external view returns (uint256, uint256);\r\n\r\n    function getVersion() external view returns (uint64);\r\n\r\n    function unitPrice() external view returns (uint256);\r\n}\r\n"},"contracts/interfaces/IBaluniV1Swapper.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1Swapper {\r\n    function singleSwap(\r\n        address token0,\r\n        address token1,\r\n        uint256 amount,\r\n        address receiver\r\n    ) external returns (uint256 amountOut);\r\n    function multiHopSwap(\r\n        address token0,\r\n        address token1,\r\n        address token2,\r\n        uint256 amount,\r\n        address receiver\r\n    ) external returns (uint256 amountOut);\r\n}\r\n"},"contracts/interfaces/IBaluniV1YearnVault.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\ninterface IBaluniV1YearnVault {\r\n    function baseAsset() external view returns (address);\r\n    function yearnVault() external view returns (address);\r\n    function quoteAsset() external view returns (address);\r\n    function registry() external view returns (address);\r\n    function lastDeposit() external view returns (uint256);\r\n    function deposit(uint256 amount, address to) external;\r\n    function withdraw(uint256 shares, address to) external;\r\n    function buy() external;\r\n    function pause() external;\r\n    function unpause() external;\r\n    function totalValuation() external view returns (uint256);\r\n    function unitPrice() external view returns (uint256);\r\n    function interestEarned() external view returns (uint256);\r\n}\r\n"},"contracts/interfaces/IStaticOracle.sol":{"content":"// SPDX-License-Identifier: GPL-2.0-or-later\r\n\r\npragma solidity 0.8.25;\r\n\r\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\r\n\r\n/// @title Uniswap V3 Static Oracle\r\n/// @notice Oracle contract for calculating price quoting against Uniswap V3\r\ninterface IStaticOracle {\r\n    /// @notice Returns the address of the Uniswap V3 factory\r\n    /// @dev This value is assigned during deployment and cannot be changed\r\n    /// @return The address of the Uniswap V3 factory\r\n    function UNISWAP_V3_FACTORY() external view returns (IUniswapV3Factory);\r\n\r\n    /// @notice Returns how many observations are needed per minute in Uniswap V3 oracles, on the deployed chain\r\n    /// @dev This value is assigned during deployment and cannot be changed\r\n    /// @return Number of observation that are needed per minute\r\n    function CARDINALITY_PER_MINUTE() external view returns (uint8);\r\n\r\n    /// @notice Returns all supported fee tiers\r\n    /// @return The supported fee tiers\r\n    function supportedFeeTiers() external view returns (uint24[] memory);\r\n\r\n    /// @notice Returns whether a specific pair can be supported by the oracle\r\n    /// @dev The pair can be provided in tokenA/tokenB or tokenB/tokenA order\r\n    /// @return Whether the given pair can be supported by the oracle\r\n    function isPairSupported(address tokenA, address tokenB) external view returns (bool);\r\n\r\n    /// @notice Returns all existing pools for the given pair\r\n    /// @dev The pair can be provided in tokenA/tokenB or tokenB/tokenA order\r\n    /// @return All existing pools for the given pair\r\n    function getAllPoolsForPair(address tokenA, address tokenB) external view returns (address[] memory);\r\n\r\n    /// @notice Returns a quote, based on the given tokens and amount, by querying all of the pair's pools\r\n    /// @dev If some pools are not configured correctly for the given period, then they will be ignored\r\n    /// @dev Will revert if there are no pools available/configured for the pair and period combination\r\n    /// @param baseAmount Amount of token to be converted\r\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\r\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\r\n    /// @param period Number of seconds from which to calculate the TWAP\r\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\r\n    /// @return queriedPools The pools that were queried to calculate the quote\r\n    function quoteAllAvailablePoolsWithTimePeriod(\r\n        uint128 baseAmount,\r\n        address baseToken,\r\n        address quoteToken,\r\n        uint32 period\r\n    ) external view returns (uint256 quoteAmount, address[] memory queriedPools);\r\n\r\n    /// @notice Returns a quote, based on the given tokens and amount, by querying only the specified fee tiers\r\n    /// @dev Will revert if the pair does not have a pool for one of the given fee tiers, or if one of the pools\r\n    /// is not prepared/configured correctly for the given period\r\n    /// @param baseAmount Amount of token to be converted\r\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\r\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\r\n    /// @param feeTiers The fee tiers to consider when calculating the quote\r\n    /// @param period Number of seconds from which to calculate the TWAP\r\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\r\n    /// @return queriedPools The pools that were queried to calculate the quote\r\n    function quoteSpecificFeeTiersWithTimePeriod(\r\n        uint128 baseAmount,\r\n        address baseToken,\r\n        address quoteToken,\r\n        uint24[] calldata feeTiers,\r\n        uint32 period\r\n    ) external view returns (uint256 quoteAmount, address[] memory queriedPools);\r\n\r\n    /// @notice Returns a quote, based on the given tokens and amount, by querying only the specified pools\r\n    /// @dev Will revert if one of the pools is not prepared/configured correctly for the given period\r\n    /// @param baseAmount Amount of token to be converted\r\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\r\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\r\n    /// @param pools The pools to consider when calculating the quote\r\n    /// @param period Number of seconds from which to calculate the TWAP\r\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\r\n    function quoteSpecificPoolsWithTimePeriod(\r\n        uint128 baseAmount,\r\n        address baseToken,\r\n        address quoteToken,\r\n        address[] calldata pools,\r\n        uint32 period\r\n    ) external view returns (uint256 quoteAmount);\r\n\r\n    /// @notice Will initialize all existing pools for the given pair, so that they can be queried with the given period in the future\r\n    /// @dev Will revert if there are no pools available for the pair and period combination\r\n    /// @param tokenA One of the pair's tokens\r\n    /// @param tokenB The other of the pair's tokens\r\n    /// @param period The period that will be guaranteed when quoting\r\n    /// @return preparedPools The pools that were prepared\r\n    function prepareAllAvailablePoolsWithTimePeriod(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint32 period\r\n    ) external returns (address[] memory preparedPools);\r\n\r\n    /// @notice Will initialize the pair's pools with the specified fee tiers, so that they can be queried with the given period in the future\r\n    /// @dev Will revert if the pair does not have a pool for a given fee tier\r\n    /// @param tokenA One of the pair's tokens\r\n    /// @param tokenB The other of the pair's tokens\r\n    /// @param feeTiers The fee tiers to consider when searching for the pair's pools\r\n    /// @param period The period that will be guaranteed when quoting\r\n    /// @return preparedPools The pools that were prepared\r\n    function prepareSpecificFeeTiersWithTimePeriod(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24[] calldata feeTiers,\r\n        uint32 period\r\n    ) external returns (address[] memory preparedPools);\r\n\r\n    /// @notice Will initialize all given pools, so that they can be queried with the given period in the future\r\n    /// @param pools The pools to initialize\r\n    /// @param period The period that will be guaranteed when quoting\r\n    function prepareSpecificPoolsWithTimePeriod(address[] calldata pools, uint32 period) external;\r\n\r\n    /// @notice Will increase observations for all existing pools for the given pair, so they start accruing information for twap calculations\r\n    /// @dev Will revert if there are no pools available for the pair and period combination\r\n    /// @param tokenA One of the pair's tokens\r\n    /// @param tokenB The other of the pair's tokens\r\n    /// @param cardinality The cardinality that will be guaranteed when quoting\r\n    /// @return preparedPools The pools that were prepared\r\n    function prepareAllAvailablePoolsWithCardinality(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint16 cardinality\r\n    ) external returns (address[] memory preparedPools);\r\n\r\n    /// @notice Will increase the pair's pools with the specified fee tiers observations, so they start accruing information for twap calculations\r\n    /// @dev Will revert if the pair does not have a pool for a given fee tier\r\n    /// @param tokenA One of the pair's tokens\r\n    /// @param tokenB The other of the pair's tokens\r\n    /// @param feeTiers The fee tiers to consider when searching for the pair's pools\r\n    /// @param cardinality The cardinality that will be guaranteed when quoting\r\n    /// @return preparedPools The pools that were prepared\r\n    function prepareSpecificFeeTiersWithCardinality(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint24[] calldata feeTiers,\r\n        uint16 cardinality\r\n    ) external returns (address[] memory preparedPools);\r\n\r\n    /// @notice Will increase all given pools observations, so they start accruing information for twap calculations\r\n    /// @param pools The pools to initialize\r\n    /// @param cardinality The cardinality that will be guaranteed when quoting\r\n    function prepareSpecificPoolsWithCardinality(address[] calldata pools, uint16 cardinality) external;\r\n\r\n    /// @notice Adds support for a new fee tier\r\n    /// @dev Will revert if the given tier is invalid, or already supported\r\n    /// @param feeTier The new fee tier to add\r\n    function addNewFeeTier(uint24 feeTier) external;\r\n}\r\n"},"contracts/interfaces/IYearnVault.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity ^0.8.0;\r\n\r\ninterface IYearnVault {\r\n    function asset() external view returns (address);\r\n\r\n    function balanceOf(address owner) external view returns (uint256);\r\n\r\n    function maxDeposit(address receiver) external view returns (uint256);\r\n\r\n    function redeem(uint256 shares, address receiver, address owner) external returns (uint256);\r\n\r\n    function deposit(uint256 assets, address receiver) external returns (uint256);\r\n\r\n    function totalAssets() external view returns (uint256);\r\n\r\n    function convertToAssets(uint256 shares) external view returns (uint256);\r\n\r\n    function convertToShares(uint256 assets) external view returns (uint256);\r\n\r\n    function previewWithdraw(uint256 assets) external view returns (uint256);\r\n\r\n    function maxRedeem(address owner) external view returns (uint256);\r\n}\r\n"},"contracts/libs/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\r\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\r\n\r\npragma solidity ^0.8.1;\r\n\r\n/**\r\n * @dev Collection of functions related to the address type\r\n */\r\nlibrary AddressUpgradeable {\r\n  /**\r\n   * @dev Returns true if `account` is a contract.\r\n   *\r\n   * [IMPORTANT]\r\n   * ====\r\n   * It is unsafe to assume that an address for which this function returns\r\n   * false is an externally-owned account (EOA) and not a contract.\r\n   *\r\n   * Among others, `isContract` will return false for the following\r\n   * types of addresses:\r\n   *\r\n   *  - an externally-owned account\r\n   *  - a contract in construction\r\n   *  - an address where a contract will be created\r\n   *  - an address where a contract lived, but was destroyed\r\n   * ====\r\n   *\r\n   * [IMPORTANT]\r\n   * ====\r\n   * You shouldn't rely on `isContract` to protect against flash loan attacks!\r\n   *\r\n   * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\r\n   * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\r\n   * constructor.\r\n   * ====\r\n   */\r\n  function isContract(address account) internal view returns (bool) {\r\n    // This method relies on extcodesize/address.code.length, which returns 0\r\n    // for contracts in construction, since the code is only stored at the end\r\n    // of the constructor execution.\r\n\r\n    return account.code.length > 0;\r\n  }\r\n\r\n  /**\r\n   * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\r\n   * `recipient`, forwarding all available gas and reverting on errors.\r\n   *\r\n   * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\r\n   * of certain opcodes, possibly making contracts go over the 2300 gas limit\r\n   * imposed by `transfer`, making them unable to receive funds via\r\n   * `transfer`. {sendValue} removes this limitation.\r\n   *\r\n   * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\r\n   *\r\n   * IMPORTANT: because control is transferred to `recipient`, care must be\r\n   * taken to not create reentrancy vulnerabilities. Consider using\r\n   * {ReentrancyGuard} or the\r\n   * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\r\n   */\r\n  function sendValue(address payable recipient, uint256 amount) internal {\r\n    require(address(this).balance >= amount, 'Address: insufficient balance');\r\n\r\n    (bool success, ) = recipient.call{value: amount}('');\r\n    require(success, 'Address: unable to send value, recipient may have reverted');\r\n  }\r\n\r\n  /**\r\n   * @dev Performs a Solidity function call using a low level `call`. A\r\n   * plain `call` is an unsafe replacement for a function call: use this\r\n   * function instead.\r\n   *\r\n   * If `target` reverts with a revert reason, it is bubbled up by this\r\n   * function (like regular Solidity function calls).\r\n   *\r\n   * Returns the raw returned data. To convert to the expected return value,\r\n   * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\r\n   *\r\n   * Requirements:\r\n   *\r\n   * - `target` must be a contract.\r\n   * - calling `target` with `data` must not revert.\r\n   *\r\n   * _Available since v3.1._\r\n   */\r\n  function functionCall(address target, bytes memory data) internal returns (bytes memory) {\r\n    return functionCall(target, data, 'Address: low-level call failed');\r\n  }\r\n\r\n  /**\r\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\r\n   * `errorMessage` as a fallback revert reason when `target` reverts.\r\n   *\r\n   * _Available since v3.1._\r\n   */\r\n  function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\r\n    return functionCallWithValue(target, data, 0, errorMessage);\r\n  }\r\n\r\n  /**\r\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\r\n   * but also transferring `value` wei to `target`.\r\n   *\r\n   * Requirements:\r\n   *\r\n   * - the calling contract must have an ETH balance of at least `value`.\r\n   * - the called Solidity function must be `payable`.\r\n   *\r\n   * _Available since v3.1._\r\n   */\r\n  function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\r\n    return functionCallWithValue(target, data, value, 'Address: low-level call with value failed');\r\n  }\r\n\r\n  /**\r\n   * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\r\n   * with `errorMessage` as a fallback revert reason when `target` reverts.\r\n   *\r\n   * _Available since v3.1._\r\n   */\r\n  function functionCallWithValue(\r\n    address target,\r\n    bytes memory data,\r\n    uint256 value,\r\n    string memory errorMessage\r\n  ) internal returns (bytes memory) {\r\n    require(address(this).balance >= value, 'Address: insufficient balance for call');\r\n    require(isContract(target), 'Address: call to non-contract');\r\n\r\n    (bool success, bytes memory returndata) = target.call{value: value}(data);\r\n    return verifyCallResult(success, returndata, errorMessage);\r\n  }\r\n\r\n  /**\r\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\r\n   * but performing a static call.\r\n   *\r\n   * _Available since v3.3._\r\n   */\r\n  function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\r\n    return functionStaticCall(target, data, 'Address: low-level static call failed');\r\n  }\r\n\r\n  /**\r\n   * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\r\n   * but performing a static call.\r\n   *\r\n   * _Available since v3.3._\r\n   */\r\n  function functionStaticCall(\r\n    address target,\r\n    bytes memory data,\r\n    string memory errorMessage\r\n  ) internal view returns (bytes memory) {\r\n    require(isContract(target), 'Address: static call to non-contract');\r\n\r\n    (bool success, bytes memory returndata) = target.staticcall(data);\r\n    return verifyCallResult(success, returndata, errorMessage);\r\n  }\r\n\r\n  /**\r\n   * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\r\n   * revert reason using the provided one.\r\n   *\r\n   * _Available since v4.3._\r\n   */\r\n  function verifyCallResult(\r\n    bool success,\r\n    bytes memory returndata,\r\n    string memory errorMessage\r\n  ) internal pure returns (bytes memory) {\r\n    if (success) {\r\n      return returndata;\r\n    } else {\r\n      // Look for revert reason and bubble it up if present\r\n      if (returndata.length > 0) {\r\n        // The easiest way to bubble the revert reason is using memory via assembly\r\n        /// @solidity memory-safe-assembly\r\n        assembly {\r\n          let returndata_size := mload(returndata)\r\n          revert(add(32, returndata), returndata_size)\r\n        }\r\n      } else {\r\n        revert(errorMessage);\r\n      }\r\n    }\r\n  }\r\n}\r\n"},"contracts/libs/ClonesUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\r\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/Clones.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\r\n * deploying minimal proxy contracts, also known as \"clones\".\r\n *\r\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\r\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\r\n *\r\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\r\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\r\n * deterministic method.\r\n *\r\n * _Available since v3.4._\r\n */\r\nlibrary ClonesUpgradeable {\r\n    /**\r\n     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\r\n     *\r\n     * This function uses the create opcode, which should never revert.\r\n     */\r\n    function clone(address implementation) internal returns (address instance) {\r\n        /// @solidity memory-safe-assembly\r\n        assembly {\r\n            let ptr := mload(0x40)\r\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\r\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\r\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\r\n            instance := create(0, ptr, 0x37)\r\n        }\r\n        require(instance != address(0), \"ERC1167: create failed\");\r\n    }\r\n\r\n    /**\r\n     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\r\n     *\r\n     * This function uses the create2 opcode and a `salt` to deterministically deploy\r\n     * the clone. Using the same `implementation` and `salt` multiple time will revert, since\r\n     * the clones cannot be deployed twice at the same address.\r\n     */\r\n    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\r\n        /// @solidity memory-safe-assembly\r\n        assembly {\r\n            let ptr := mload(0x40)\r\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\r\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\r\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\r\n            instance := create2(0, ptr, 0x37, salt)\r\n        }\r\n        require(instance != address(0), \"ERC1167: create2 failed\");\r\n    }\r\n\r\n    /**\r\n     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\r\n     */\r\n    function predictDeterministicAddress(\r\n        address implementation,\r\n        bytes32 salt,\r\n        address deployer\r\n    ) internal pure returns (address predicted) {\r\n        /// @solidity memory-safe-assembly\r\n        assembly {\r\n            let ptr := mload(0x40)\r\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\r\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\r\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)\r\n            mstore(add(ptr, 0x38), shl(0x60, deployer))\r\n            mstore(add(ptr, 0x4c), salt)\r\n            mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\r\n            predicted := keccak256(add(ptr, 0x37), 0x55)\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\r\n     */\r\n    function predictDeterministicAddress(address implementation, bytes32 salt)\r\n        internal\r\n        view\r\n        returns (address predicted)\r\n    {\r\n        return predictDeterministicAddress(implementation, salt, address(this));\r\n    }\r\n}\r\n"},"contracts/libs/DSMath.sol":{"content":"/// math.sol -- mixin for inline numerical wizardry\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n// it under the terms of the GNU General Public License as published by\r\n// the Free Software Foundation, either version 3 of the License, or\r\n// (at your option) any later version.\r\n\r\n// This program is distributed in the hope that it will be useful,\r\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n// GNU General Public License for more details.\r\n\r\n// You should have received a copy of the GNU General Public License\r\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n\r\n// SPDX-License-Identifier: MIT\r\n\r\npragma solidity ^0.8.0;\r\n\r\nlibrary DSMath {\r\n    uint256 public constant WAD = 10 ** 18;\r\n    uint256 public constant RAY = 10 ** 27;\r\n\r\n    //rounds to zero if x*y < WAD / 2\r\n    function wmul(uint256 x, uint256 y) internal pure returns (uint256) {\r\n        return ((x * y) + (WAD / 2)) / WAD;\r\n    }\r\n\r\n    //rounds to zero if x*y < WAD / 2\r\n    function wdiv(uint256 x, uint256 y) internal pure returns (uint256) {\r\n        return ((x * WAD) + (y / 2)) / y;\r\n    }\r\n\r\n    function reciprocal(uint256 x) internal pure returns (uint256) {\r\n        return wdiv(WAD, x);\r\n    }\r\n\r\n    // This famous algorithm is called \"exponentiation by squaring\"\r\n    // and calculates x^n with x as fixed-point and n as regular unsigned.\r\n    //\r\n    // It's O(log n), instead of O(n) for naive repeated multiplication.\r\n    //\r\n    // These facts are why it works:\r\n    //\r\n    //  If n is even, then x^n = (x^2)^(n/2).\r\n    //  If n is odd,  then x^n = x * x^(n-1),\r\n    //   and applying the equation for even x gives\r\n    //    x^n = x * (x^2)^((n-1) / 2).\r\n    //\r\n    //  Also, EVM division is flooring and\r\n    //    floor[(n-1) / 2] = floor[n / 2].\r\n    //\r\n    function rpow(uint256 x, uint256 n) internal pure returns (uint256 z) {\r\n        z = n % 2 != 0 ? x : RAY;\r\n\r\n        for (n /= 2; n != 0; n /= 2) {\r\n            x = rmul(x, x);\r\n\r\n            if (n % 2 != 0) {\r\n                z = rmul(z, x);\r\n            }\r\n        }\r\n    }\r\n\r\n    //rounds to zero if x*y < WAD / 2\r\n    function rmul(uint256 x, uint256 y) internal pure returns (uint256 z) {\r\n        z = ((x * y) + (RAY / 2)) / RAY;\r\n    }\r\n}\r\n"},"contracts/libs/EnumerableSetUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\r\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Library for managing\r\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\r\n * types.\r\n *\r\n * Sets have the following properties:\r\n *\r\n * - Elements are added, removed, and checked for existence in constant time\r\n * (O(1)).\r\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\r\n *\r\n * ```\r\n * contract Example {\r\n *     // Add the library methods\r\n *     using EnumerableSet for EnumerableSet.AddressSet;\r\n *\r\n *     // Declare a set state variable\r\n *     EnumerableSet.AddressSet private mySet;\r\n * }\r\n * ```\r\n *\r\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\r\n * and `uint256` (`UintSet`) are supported.\r\n *\r\n * [WARNING]\r\n * ====\r\n *  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\r\n *  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\r\n *\r\n *  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\r\n * ====\r\n */\r\nlibrary EnumerableSetUpgradeable {\r\n    // To implement this library for multiple types with as little code\r\n    // repetition as possible, we write it in terms of a generic Set type with\r\n    // bytes32 values.\r\n    // The Set implementation uses private functions, and user-facing\r\n    // implementations (such as AddressSet) are just wrappers around the\r\n    // underlying Set.\r\n    // This means that we can only create new EnumerableSets for types that fit\r\n    // in bytes32.\r\n\r\n    struct Set {\r\n        // Storage of set values\r\n        bytes32[] _values;\r\n        // Position of the value in the `values` array, plus 1 because index 0\r\n        // means a value is not in the set.\r\n        mapping(bytes32 => uint256) _indexes;\r\n    }\r\n\r\n    /**\r\n     * @dev Add a value to a set. O(1).\r\n     *\r\n     * Returns true if the value was added to the set, that is if it was not\r\n     * already present.\r\n     */\r\n    function _add(Set storage set, bytes32 value) private returns (bool) {\r\n        if (!_contains(set, value)) {\r\n            set._values.push(value);\r\n            // The value is stored at length-1, but we add 1 to all indexes\r\n            // and use 0 as a sentinel value\r\n            set._indexes[value] = set._values.length;\r\n            return true;\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Removes a value from a set. O(1).\r\n     *\r\n     * Returns true if the value was removed from the set, that is if it was\r\n     * present.\r\n     */\r\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\r\n        // We read and store the value's index to prevent multiple reads from the same storage slot\r\n        uint256 valueIndex = set._indexes[value];\r\n\r\n        if (valueIndex != 0) {\r\n            // Equivalent to contains(set, value)\r\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\r\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\r\n            // This modifies the order of the array, as noted in {at}.\r\n\r\n            uint256 toDeleteIndex = valueIndex - 1;\r\n            uint256 lastIndex = set._values.length - 1;\r\n\r\n            if (lastIndex != toDeleteIndex) {\r\n                bytes32 lastValue = set._values[lastIndex];\r\n\r\n                // Move the last value to the index where the value to delete is\r\n                set._values[toDeleteIndex] = lastValue;\r\n                // Update the index for the moved value\r\n                set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\r\n            }\r\n\r\n            // Delete the slot where the moved value was stored\r\n            set._values.pop();\r\n\r\n            // Delete the index for the deleted slot\r\n            delete set._indexes[value];\r\n\r\n            return true;\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Returns true if the value is in the set. O(1).\r\n     */\r\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\r\n        return set._indexes[value] != 0;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the number of values on the set. O(1).\r\n     */\r\n    function _length(Set storage set) private view returns (uint256) {\r\n        return set._values.length;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the value stored at position `index` in the set. O(1).\r\n     *\r\n     * Note that there are no guarantees on the ordering of values inside the\r\n     * array, and it may change when more values are added or removed.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `index` must be strictly less than {length}.\r\n     */\r\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\r\n        return set._values[index];\r\n    }\r\n\r\n    /**\r\n     * @dev Return the entire set in an array\r\n     *\r\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\r\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\r\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\r\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\r\n     */\r\n    function _values(Set storage set) private view returns (bytes32[] memory) {\r\n        return set._values;\r\n    }\r\n\r\n    // Bytes32Set\r\n\r\n    struct Bytes32Set {\r\n        Set _inner;\r\n    }\r\n\r\n    /**\r\n     * @dev Add a value to a set. O(1).\r\n     *\r\n     * Returns true if the value was added to the set, that is if it was not\r\n     * already present.\r\n     */\r\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\r\n        return _add(set._inner, value);\r\n    }\r\n\r\n    /**\r\n     * @dev Removes a value from a set. O(1).\r\n     *\r\n     * Returns true if the value was removed from the set, that is if it was\r\n     * present.\r\n     */\r\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\r\n        return _remove(set._inner, value);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns true if the value is in the set. O(1).\r\n     */\r\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\r\n        return _contains(set._inner, value);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the number of values in the set. O(1).\r\n     */\r\n    function length(Bytes32Set storage set) internal view returns (uint256) {\r\n        return _length(set._inner);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the value stored at position `index` in the set. O(1).\r\n     *\r\n     * Note that there are no guarantees on the ordering of values inside the\r\n     * array, and it may change when more values are added or removed.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `index` must be strictly less than {length}.\r\n     */\r\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\r\n        return _at(set._inner, index);\r\n    }\r\n\r\n    /**\r\n     * @dev Return the entire set in an array\r\n     *\r\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\r\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\r\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\r\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\r\n     */\r\n    function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\r\n        return _values(set._inner);\r\n    }\r\n\r\n    // AddressSet\r\n\r\n    struct AddressSet {\r\n        Set _inner;\r\n    }\r\n\r\n    /**\r\n     * @dev Add a value to a set. O(1).\r\n     *\r\n     * Returns true if the value was added to the set, that is if it was not\r\n     * already present.\r\n     */\r\n    function add(AddressSet storage set, address value) internal returns (bool) {\r\n        return _add(set._inner, bytes32(uint256(uint160(value))));\r\n    }\r\n\r\n    /**\r\n     * @dev Removes a value from a set. O(1).\r\n     *\r\n     * Returns true if the value was removed from the set, that is if it was\r\n     * present.\r\n     */\r\n    function remove(AddressSet storage set, address value) internal returns (bool) {\r\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\r\n    }\r\n\r\n    /**\r\n     * @dev Returns true if the value is in the set. O(1).\r\n     */\r\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\r\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the number of values in the set. O(1).\r\n     */\r\n    function length(AddressSet storage set) internal view returns (uint256) {\r\n        return _length(set._inner);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the value stored at position `index` in the set. O(1).\r\n     *\r\n     * Note that there are no guarantees on the ordering of values inside the\r\n     * array, and it may change when more values are added or removed.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `index` must be strictly less than {length}.\r\n     */\r\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\r\n        return address(uint160(uint256(_at(set._inner, index))));\r\n    }\r\n\r\n    /**\r\n     * @dev Return the entire set in an array\r\n     *\r\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\r\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\r\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\r\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\r\n     */\r\n    function values(AddressSet storage set) internal view returns (address[] memory) {\r\n        bytes32[] memory store = _values(set._inner);\r\n        address[] memory result;\r\n\r\n        /// @solidity memory-safe-assembly\r\n        assembly {\r\n            result := store\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    // UintSet\r\n\r\n    struct UintSet {\r\n        Set _inner;\r\n    }\r\n\r\n    /**\r\n     * @dev Add a value to a set. O(1).\r\n     *\r\n     * Returns true if the value was added to the set, that is if it was not\r\n     * already present.\r\n     */\r\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\r\n        return _add(set._inner, bytes32(value));\r\n    }\r\n\r\n    /**\r\n     * @dev Removes a value from a set. O(1).\r\n     *\r\n     * Returns true if the value was removed from the set, that is if it was\r\n     * present.\r\n     */\r\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\r\n        return _remove(set._inner, bytes32(value));\r\n    }\r\n\r\n    /**\r\n     * @dev Returns true if the value is in the set. O(1).\r\n     */\r\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\r\n        return _contains(set._inner, bytes32(value));\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the number of values on the set. O(1).\r\n     */\r\n    function length(UintSet storage set) internal view returns (uint256) {\r\n        return _length(set._inner);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the value stored at position `index` in the set. O(1).\r\n     *\r\n     * Note that there are no guarantees on the ordering of values inside the\r\n     * array, and it may change when more values are added or removed.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `index` must be strictly less than {length}.\r\n     */\r\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\r\n        return uint256(_at(set._inner, index));\r\n    }\r\n\r\n    /**\r\n     * @dev Return the entire set in an array\r\n     *\r\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\r\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\r\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\r\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\r\n     */\r\n    function values(UintSet storage set) internal view returns (uint256[] memory) {\r\n        bytes32[] memory store = _values(set._inner);\r\n        uint256[] memory result;\r\n\r\n        /// @solidity memory-safe-assembly\r\n        assembly {\r\n            result := store\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n"},"contracts/managers/BaluniV1HyperPoolZap.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';\r\n\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1Swapper.sol';\r\nimport '../interfaces/IBaluniV1HyperUniProxy.sol';\r\n\r\ninterface IClearingV2 {\r\n    function getDepositAmount(\r\n        address pos,\r\n        address token,\r\n        uint256 _deposit\r\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\r\n\r\n    function applyRatio(\r\n        address pos,\r\n        address token,\r\n        uint256 total0,\r\n        uint256 total1\r\n    ) external view returns (uint256 ratioStart, uint256 ratioEnd);\r\n}\r\n\r\ninterface IBaluniV1Hypervisor {\r\n    function deposit(uint256, uint256, address, address, uint256[4] memory minIn) external returns (uint256);\r\n\r\n    function withdraw(uint256, address, address, uint256[4] memory) external returns (uint256, uint256);\r\n\r\n    function compound()\r\n        external\r\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\r\n\r\n    function compound(\r\n        uint256[4] memory inMin\r\n    )\r\n        external\r\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\r\n\r\n    function rebalance(\r\n        int24 _baseLower,\r\n        int24 _baseUpper,\r\n        int24 _limitLower,\r\n        int24 _limitUpper,\r\n        address _feeRecipient,\r\n        uint256[4] memory minIn,\r\n        uint256[4] memory outMin\r\n    ) external;\r\n\r\n    function addBaseLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\r\n\r\n    function addLimitLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\r\n\r\n    function pullLiquidity(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint128 shares,\r\n        uint256[2] memory amountMin\r\n    ) external returns (uint256 base0, uint256 base1);\r\n\r\n    function pullLiquidity(\r\n        uint256 shares,\r\n        uint256[4] memory minAmounts\r\n    ) external returns (uint256 base0, uint256 base1, uint256 limit0, uint256 limit1);\r\n\r\n    function addLiquidity(\r\n        int24 tickLower,\r\n        int24 tickUpper,\r\n        uint256 amount0,\r\n        uint256 amount1,\r\n        uint256[2] memory inMin\r\n    ) external;\r\n\r\n    function pool() external view returns (IUniswapV3Pool);\r\n\r\n    function currentTick() external view returns (int24 tick);\r\n\r\n    function tickSpacing() external view returns (int24 spacing);\r\n\r\n    function baseLower() external view returns (int24 tick);\r\n\r\n    function baseUpper() external view returns (int24 tick);\r\n\r\n    function limitLower() external view returns (int24 tick);\r\n\r\n    function limitUpper() external view returns (int24 tick);\r\n\r\n    function token0() external view returns (IERC20);\r\n\r\n    function token1() external view returns (IERC20);\r\n\r\n    function deposit0Max() external view returns (uint256);\r\n\r\n    function deposit1Max() external view returns (uint256);\r\n\r\n    function balanceOf(address) external view returns (uint256);\r\n\r\n    function approve(address, uint256) external returns (bool);\r\n\r\n    function transferFrom(address, address, uint256) external returns (bool);\r\n\r\n    function transfer(address, uint256) external returns (bool);\r\n\r\n    function getTotalAmounts() external view returns (uint256 total0, uint256 total1);\r\n\r\n    function getBasePosition() external view returns (uint256 liquidity, uint256 total0, uint256 total1);\r\n\r\n    function totalSupply() external view returns (uint256);\r\n\r\n    function setWhitelist(address _address) external;\r\n\r\n    function setFee(uint8 newFee) external;\r\n\r\n    function removeWhitelisted() external;\r\n\r\n    function transferOwnership(address newOwner) external;\r\n\r\n    function toggleDirectDeposit() external;\r\n}\r\n\r\ninterface IWETH {\r\n    function deposit() external payable;\r\n    function withdraw(uint wad) external;\r\n}\r\n\r\ncontract BaluniV1HyperPoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\r\n    IBaluniV1Registry public registry;\r\n    IBaluniV1Swapper public baluniSwapper;\r\n    IBaluniV1HyperUniProxy public baluniHyperUniProxy;\r\n    address public WETH9;\r\n\r\n    function initialize(address _registry, address _uniProxy) public initializer {\r\n        __Ownable_init(msg.sender);\r\n        __ReentrancyGuard_init();\r\n        __UUPSUpgradeable_init();\r\n\r\n        registry = IBaluniV1Registry(_registry);\r\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\r\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\r\n        WETH9 = registry.getWNATIVE();\r\n    }\r\n\r\n    function changeUniProxy(address _uniProxy) external onlyOwner {\r\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\r\n    }\r\n\r\n    function changeSwapper(address _swapper) external onlyOwner {\r\n        baluniSwapper = IBaluniV1Swapper(_swapper);\r\n    }\r\n\r\n    function changeRegistry(address _registry) external onlyOwner {\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    receive() external payable {}\r\n\r\n    function zapIn(\r\n        address hypervisor,\r\n        address tokenIn,\r\n        uint256 amountIn,\r\n        uint256 minAmountsOut,\r\n        address receiver\r\n    ) external payable nonReentrant {\r\n        // IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\r\n        // address token0 = address(hyperPool.token0());\r\n        // address token1 = address(hyperPool.token1());\r\n        // address[] memory poolAssets = new address[](2);\r\n        // poolAssets[0] = token0;\r\n        // poolAssets[1] = token1;\r\n        // uint256[] memory amounts = new uint256[](2);\r\n        // if (tokenIn == address(0)) {\r\n        //     require(msg.value == amountIn, 'Incorrect ETH amount');\r\n        //     IWETH(WETH9).deposit{value: amountIn}();\r\n        //     tokenIn = WETH9;\r\n        // } else {\r\n        //     IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\r\n        // }\r\n        // // Ottieni i rapporti di deposito utilizzando il contratto ClearingV2\r\n        // IClearingV2 clearingV2 = IClearingV2(baluniHyperUniProxy.clearance());\r\n        // (uint256 amount1Min, uint256 amount1Max) = clearingV2.getDepositAmount(hypervisor, token0, amountIn);\r\n        // (uint256 amount0Min, uint256 amount0Max) = clearingV2.getDepositAmount(hypervisor, token1, amountIn);\r\n        // // Calcola gli importi effettivi da depositare\r\n        // uint256 amount0 = amount0Min;\r\n        // uint256 amount1 = (amount1Min + amount1Max) / 2;\r\n        // // Verifica che gli importi siano sufficienti per il deposito\r\n        // require(amount0 > 0 && amount1 > 0, 'Calculated amounts are insufficient');\r\n        // // Swap per ottenere i token necessari\r\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\r\n        //     if (tokenIn == poolAssets[i]) {\r\n        //         amounts[i] = (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1);\r\n        //     } else {\r\n        //         amounts[i] = _swap(\r\n        //             tokenIn,\r\n        //             poolAssets[i],\r\n        //             (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1),\r\n        //             address(this)\r\n        //         );\r\n        //         require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\r\n        //     }\r\n        // }\r\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\r\n        //     IERC20(poolAssets[i]).approve(address(baluniHyperUniProxy), amounts[i]);\r\n        //     IERC20(poolAssets[i]).approve(address(hypervisor), amounts[i]);\r\n        // }\r\n        // require(amounts[0] > 0 && amounts[1] > 0, 'Insufficient amounts');\r\n        // // Verifica dei bilanci dei token\r\n        // require(IERC20(token0).balanceOf(address(this)) >= amounts[0], 'Insufficient token0 balance');\r\n        // require(IERC20(token1).balanceOf(address(this)) >= amounts[1], 'Insufficient token1 balance');\r\n        // // Deposita i token nel proxy\r\n        // baluniHyperUniProxy.deposit(amounts[0], amounts[1], receiver, address(this), hypervisor);\r\n    }\r\n\r\n    function zapOut(\r\n        address hypervisor,\r\n        uint256 share,\r\n        address tokenOut,\r\n        uint256 minAmountOut,\r\n        address receiver\r\n    ) external nonReentrant {\r\n        IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\r\n\r\n        address token0 = address(hyperPool.token0());\r\n        address token1 = address(hyperPool.token1());\r\n\r\n        address[] memory poolAssets = new address[](2);\r\n        poolAssets[0] = token0;\r\n        poolAssets[1] = token1;\r\n\r\n        uint256[] memory amounts = new uint256[](2);\r\n\r\n        uint256[] memory balances = new uint256[](poolAssets.length);\r\n        for (uint256 i = 0; i < poolAssets.length; i++) {\r\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\r\n        }\r\n\r\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\r\n\r\n        IERC20(hypervisor).transferFrom(msg.sender, address(this), share);\r\n        IERC20(hypervisor).approve(address(hypervisor), share);\r\n\r\n        uint256[4] memory minAmounts;\r\n\r\n        minAmounts[0] = 0;\r\n        minAmounts[1] = 0;\r\n        minAmounts[2] = 0;\r\n        minAmounts[3] = 0;\r\n\r\n        // Withdraw from the pool\r\n        hyperPool.withdraw(share, address(this), address(this), minAmounts);\r\n\r\n        uint256 totalAmountOut = 0;\r\n\r\n        for (uint256 i = 0; i < poolAssets.length; i++) {\r\n            if (poolAssets[i] == tokenOut) {\r\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\r\n                totalAmountOut += amounts[i];\r\n            } else {\r\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\r\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], address(this));\r\n            }\r\n        }\r\n\r\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\r\n        totalAmountOut = balanceAfter - balanceBefore;\r\n\r\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\r\n\r\n        if (tokenOut == WETH9) {\r\n            IWETH(WETH9).withdraw(totalAmountOut);\r\n            payable(receiver).transfer(totalAmountOut);\r\n        } else {\r\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\r\n        }\r\n    }\r\n\r\n    function _swap(\r\n        address tokenIn,\r\n        address tokenOut,\r\n        uint256 amountIn,\r\n        address receiver\r\n    ) internal returns (uint256 amountOut) {\r\n        address WMATIC = registry.getWNATIVE();\r\n\r\n        if (tokenIn == tokenOut) {\r\n            return amountIn;\r\n        }\r\n\r\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\r\n\r\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\r\n            amountOut = _amountOut;\r\n        } catch {\r\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\r\n        }\r\n        require(amountOut > 0, 'Swap failed');\r\n        return amountOut;\r\n    }\r\n}\r\n"},"contracts/managers/BaluniV1PoolZap.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\n\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1Swapper.sol';\r\n\r\ninterface IBaluniV1Pool {\r\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\r\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\r\n    function getAssets() external view returns (address[] memory);\r\n    function getReserves() external view returns (uint256[] memory);\r\n}\r\n\r\ninterface IWETH {\r\n    function deposit() external payable;\r\n    function withdraw(uint wad) external;\r\n}\r\n\r\ncontract BaluniV1PoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\r\n    IBaluniV1Registry public registry;\r\n    IBaluniV1Swapper public baluniSwapper;\r\n    address public WETH9;\r\n\r\n    function initialize(address _registry) public initializer {\r\n        __Ownable_init(msg.sender);\r\n        __ReentrancyGuard_init();\r\n        __UUPSUpgradeable_init();\r\n\r\n        registry = IBaluniV1Registry(_registry);\r\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\r\n        WETH9 = registry.getWNATIVE();\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    receive() external payable {}\r\n\r\n    function zapIn(\r\n        address poolAddress,\r\n        address tokenIn,\r\n        uint256 amountIn,\r\n        uint256 minAmountsOut,\r\n        address receiver\r\n    ) external payable nonReentrant {\r\n        uint256 deadline = block.timestamp + 300;\r\n\r\n        IBaluniV1Pool baluniPool = IBaluniV1Pool(poolAddress);\r\n\r\n        address[] memory poolAssets = baluniPool.getAssets();\r\n        uint256[] memory amounts = new uint256[](poolAssets.length);\r\n\r\n        if (tokenIn == address(0)) {\r\n            require(msg.value == amountIn, 'Incorrect ETH amount');\r\n            IWETH(WETH9).deposit{value: amountIn}();\r\n            tokenIn = WETH9;\r\n        } else {\r\n            IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\r\n        }\r\n\r\n        for (uint256 i = 0; i < poolAssets.length; i++) {\r\n            if (tokenIn == poolAssets[i]) {\r\n                amounts[i] = amountIn / poolAssets.length;\r\n            } else {\r\n                amounts[i] = _swap(tokenIn, poolAssets[i], amountIn / poolAssets.length, address(this));\r\n                require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\r\n            }\r\n        }\r\n\r\n        for (uint256 i = 0; i < poolAssets.length; i++) {\r\n            IERC20(poolAssets[i]).approve(address(baluniPool), amounts[i]);\r\n        }\r\n\r\n        baluniPool.deposit(receiver, amounts, deadline);\r\n    }\r\n\r\n    function zapOut(\r\n        address poolAddress,\r\n        uint256 share,\r\n        address tokenOut,\r\n        uint256 minAmountOut,\r\n        address receiver\r\n    ) external nonReentrant {\r\n        uint256 deadline = block.timestamp + 300;\r\n\r\n        IBaluniV1Pool baluniPool = IBaluniV1Pool(poolAddress);\r\n\r\n        address[] memory poolAssets = baluniPool.getAssets();\r\n        uint256[] memory amounts = new uint256[](poolAssets.length);\r\n\r\n        uint256[] memory balances = new uint256[](poolAssets.length);\r\n        for (uint256 i = 0; i < poolAssets.length; i++) {\r\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\r\n        }\r\n\r\n        // Retrieve balances before withdrawal\r\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\r\n\r\n        IERC20(poolAddress).transferFrom(msg.sender, address(this), share);\r\n        IERC20(poolAddress).approve(address(baluniPool), share);\r\n\r\n        // Withdraw from the pool\r\n        baluniPool.withdraw(share, address(this), deadline);\r\n\r\n        uint256 totalAmountOut = 0;\r\n\r\n        for (uint256 i = 0; i < poolAssets.length; i++) {\r\n            if (poolAssets[i] == tokenOut) {\r\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\r\n                totalAmountOut += amounts[i];\r\n            } else {\r\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\r\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], msg.sender);\r\n            }\r\n        }\r\n\r\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\r\n        totalAmountOut = balanceAfter - balanceBefore;\r\n\r\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\r\n\r\n        if (tokenOut == WETH9) {\r\n            IWETH(WETH9).withdraw(totalAmountOut);\r\n            payable(receiver).transfer(totalAmountOut);\r\n        } else {\r\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\r\n        }\r\n    }\r\n\r\n    function _swap(\r\n        address tokenIn,\r\n        address tokenOut,\r\n        uint256 amountIn,\r\n        address receiver\r\n    ) internal returns (uint256 amountOut) {\r\n        address WMATIC = registry.getWNATIVE();\r\n        if (tokenIn == tokenOut) {\r\n            return amountIn;\r\n        }\r\n\r\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\r\n\r\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\r\n            amountOut = _amountOut;\r\n        } catch {\r\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\r\n        }\r\n        require(amountOut > 0, 'Swap failed');\r\n        return amountOut;\r\n    }\r\n}\r\n"},"contracts/managers/BaluniV1Rebalancer.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';\r\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '../interfaces/IBaluniV1Router.sol';\r\nimport '../interfaces/IBaluniV1Swapper.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1Oracle.sol';\r\n\r\ncontract BaluniV1Rebalancer is Initializable, OwnableUpgradeable, UUPSUpgradeable {\r\n    IBaluniV1Registry public registry;\r\n\r\n    struct RebalanceVars {\r\n        uint256 length;\r\n        uint256 totalValue;\r\n        uint256[] valuations;\r\n        uint256 finalUsdBalance;\r\n        uint256 overweightVaultsLength;\r\n        uint256 underweightVaultsLength;\r\n        uint256 totalActiveWeight;\r\n        uint256 amountOut;\r\n        uint256[] overweightVaults;\r\n        uint256[] overweightAmounts;\r\n        uint256[] underweightVaults;\r\n        uint256[] underweightAmounts;\r\n        uint256[] balances;\r\n    }\r\n\r\n    function initialize(address _registry) public initializer {\r\n        __UUPSUpgradeable_init();\r\n        __Ownable_init(msg.sender);\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    /**\r\n     * @dev Rebalances the portfolio by buying and selling assets based on their weights.\r\n     * @param balances An array of current asset balances.\r\n     * @param assets An array of asset addresses.\r\n     * @param weights An array of asset weights.\r\n     * @param limit The maximum amount of assets to be rebalanced.\r\n     * @param sender The address from which the assets will be transferred.\r\n     * @param receiver The address to which the assets will be transferred.\r\n     * @param baseAsset The base asset used for rebalancing.\r\n     */\r\n    function rebalance(\r\n        uint256[] memory balances,\r\n        address[] calldata assets,\r\n        uint256[] calldata weights,\r\n        uint256 limit,\r\n        address sender,\r\n        address receiver,\r\n        address baseAsset\r\n    ) external {\r\n        address WNATIVE = registry.getWNATIVE();\r\n\r\n        require(assets.length > 0, 'No assets provided');\r\n        require(balances.length == assets.length, 'Mismatched balances and assets length');\r\n        require(weights.length == assets.length, 'Mismatched weights and assets length');\r\n\r\n        if (balances.length == 0) {\r\n            for (uint256 i = 0; i < assets.length; i++) {\r\n                balances[i] = IERC20(assets[i]).balanceOf(sender);\r\n            }\r\n        }\r\n\r\n        RebalanceVars memory vars = _checkRebalance(balances, assets, weights, limit, baseAsset);\r\n\r\n        for (uint256 i = 0; i < vars.overweightVaults.length; i++) {\r\n            if (vars.overweightAmounts[i] > 0) {\r\n                address asset = assets[vars.overweightVaults[i]];\r\n\r\n                if (asset == baseAsset) {\r\n                    IERC20(asset).transferFrom(sender, address(this), vars.overweightAmounts[i]);\r\n                    vars.amountOut += vars.overweightAmounts[i];\r\n                    continue;\r\n                }\r\n\r\n                require(\r\n                    vars.balances[vars.overweightVaults[i]] >= vars.overweightAmounts[i],\r\n                    'BaluniV1Rebalancer: Under Overweight Amount!!'\r\n                );\r\n\r\n                uint256 allowance = IERC20(asset).allowance(sender, address(this));\r\n                require(\r\n                    allowance >= vars.overweightAmounts[i],\r\n                    'BaluniV1Rebalancer: Allowance under Overweight Amount'\r\n                );\r\n\r\n                IERC20(asset).transferFrom(sender, address(this), vars.overweightAmounts[i]);\r\n\r\n                address baluniSwapper = registry.getBaluniSwapper();\r\n                IERC20(asset).approve(baluniSwapper, vars.overweightAmounts[i]);\r\n\r\n                if (asset == address(WNATIVE)) {\r\n                    vars.amountOut += IBaluniV1Swapper(baluniSwapper).singleSwap(\r\n                        asset,\r\n                        baseAsset,\r\n                        vars.overweightAmounts[i],\r\n                        vars.underweightVaults.length == 0 ? receiver : address(this)\r\n                    );\r\n                } else {\r\n                    vars.amountOut += IBaluniV1Swapper(baluniSwapper).multiHopSwap(\r\n                        asset,\r\n                        address(WNATIVE),\r\n                        baseAsset,\r\n                        vars.overweightAmounts[i],\r\n                        vars.underweightVaults.length == 0 ? receiver : address(this)\r\n                    );\r\n                }\r\n            }\r\n        }\r\n\r\n        uint256 baseAssetBalance = IERC20(baseAsset).balanceOf(address(this));\r\n        require(baseAssetBalance >= vars.amountOut, 'BaluniV1Rebalancer:  Insufficient base asset balance');\r\n\r\n        address[] memory _assets = assets;\r\n        uint256 BPS_BASE = registry.getBPS_BASE();\r\n\r\n        for (uint256 i = 0; i < vars.underweightVaults.length; i++) {\r\n            if (vars.underweightAmounts[i] > 0) {\r\n                address asset = _assets[vars.underweightVaults[i]];\r\n\r\n                uint256 rebaseActiveWgt = (vars.underweightAmounts[i] * BPS_BASE) / vars.totalActiveWeight;\r\n                uint256 rebBuyQty = (rebaseActiveWgt * vars.amountOut) / BPS_BASE;\r\n                address _receiver = receiver;\r\n\r\n                if (asset == baseAsset) {\r\n                    IERC20(baseAsset).transfer(_receiver, rebBuyQty);\r\n                    continue;\r\n                }\r\n\r\n                require(rebBuyQty > 0, 'BaluniV1Rebalancer: Rebalance buy quantity is zero');\r\n\r\n                require(\r\n                    rebBuyQty <= baseAssetBalance,\r\n                    'BaluniV1Rebalancer: Rebalance buy quantity exceeds base asset balance'\r\n                );\r\n\r\n                address baluniSwapper = registry.getBaluniSwapper();\r\n                IERC20(baseAsset).approve(baluniSwapper, rebBuyQty);\r\n\r\n                uint256 amountOut;\r\n                if (asset == address(WNATIVE)) {\r\n                    amountOut = IBaluniV1Swapper(baluniSwapper).singleSwap(baseAsset, asset, rebBuyQty, address(this));\r\n                } else {\r\n                    amountOut = IBaluniV1Swapper(baluniSwapper).multiHopSwap(\r\n                        baseAsset,\r\n                        address(WNATIVE),\r\n                        asset,\r\n                        rebBuyQty,\r\n                        address(this)\r\n                    );\r\n                }\r\n\r\n                vars.amountOut = amountOut;\r\n                uint256 amountToReceiver = calculateNetAmountAfterFee(amountOut);\r\n                uint256 remainingToReceiver = amountOut - amountToReceiver;\r\n                uint256 amountToRouter = calculateNetAmountAfterFee(remainingToReceiver);\r\n                uint256 amountToTreasury = remainingToReceiver - amountToRouter;\r\n\r\n                require(IERC20(asset).balanceOf(address(this)) >= amountToReceiver, 'Balance under amount to transfer');\r\n                address baluniRouter = registry.getBaluniRouter();\r\n                address treasury = registry.getTreasury();\r\n\r\n                IERC20(asset).transfer(_receiver, amountToReceiver);\r\n                IERC20(asset).transfer(baluniRouter, amountToRouter);\r\n                IERC20(asset).transfer(treasury, amountToTreasury);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Checks if a rebalance is needed based on the given parameters.\r\n     * @param balances An array of token balances.\r\n     * @param assets An array of token addresses.\r\n     * @param weights An array of token weights.\r\n     * @param limit The maximum allowed difference between the current and target weights.\r\n     * @param sender The address of the caller.\r\n     * @param baseAsset The address of the base asset.\r\n     * @return A struct containing the rebalance variables.\r\n     */\r\n    function checkRebalance(\r\n        uint256[] memory balances,\r\n        address[] calldata assets,\r\n        uint256[] calldata weights,\r\n        uint256 limit,\r\n        address sender,\r\n        address baseAsset\r\n    ) public view returns (RebalanceVars memory) {\r\n        uint256[] memory _balances = new uint256[](assets.length);\r\n\r\n        if (balances.length == 0) {\r\n            for (uint256 i = 0; i < assets.length; i++) {\r\n                _balances[i] = IERC20(assets[i]).balanceOf(sender);\r\n            }\r\n        } else {\r\n            _balances = balances;\r\n        }\r\n\r\n        return _checkRebalance(_balances, assets, weights, limit, baseAsset);\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to check if rebalancing is required based on the given parameters.\r\n     * @param balances An array of token balances.\r\n     * @param assets An array of token addresses.\r\n     * @param weights An array of target weights for each token.\r\n     * @param limit The maximum allowed deviation from the target weight.\r\n     * @param baseAsset The address of the base asset.\r\n     * @return rebalanceVars A struct containing rebalance variables.\r\n     */\r\n    function _checkRebalance(\r\n        uint256[] memory balances,\r\n        address[] calldata assets,\r\n        uint256[] calldata weights,\r\n        uint256 limit,\r\n        address baseAsset\r\n    ) internal view returns (RebalanceVars memory) {\r\n        (uint256 totalValue, uint256[] memory valuations) = calculateTotalValueScaled(balances, assets, baseAsset);\r\n        RebalanceVars memory vars = RebalanceVars(\r\n            assets.length,\r\n            totalValue,\r\n            valuations,\r\n            0,\r\n            0,\r\n            0,\r\n            0,\r\n            0,\r\n            new uint256[](assets.length * 2),\r\n            new uint256[](assets.length * 2),\r\n            new uint256[](assets.length * 2),\r\n            new uint256[](assets.length * 2),\r\n            balances\r\n        );\r\n\r\n        uint256 _limit = limit;\r\n        uint256 _totalVal = totalValue;\r\n\r\n        RebalanceVars memory _vars = vars;\r\n\r\n        for (uint256 i = 0; i < assets.length; i++) {\r\n            IBaluniV1Oracle baluniOracle = IBaluniV1Oracle(registry.getBaluniOracle());\r\n            address asset = assets[i];\r\n            address _baseAsset = baseAsset;\r\n            uint256 targetWeight = weights[i];\r\n            uint256 currentWeight = (valuations[i] * registry.getBPS_BASE()) / _totalVal;\r\n            bool overweight = currentWeight > targetWeight;\r\n            uint256 overweightPercent = overweight ? currentWeight - targetWeight : targetWeight - currentWeight;\r\n\r\n            if (overweight && overweightPercent > _limit) {\r\n                uint256 overweightAmount = (overweightPercent * _totalVal) / registry.getBPS_BASE();\r\n                _vars.finalUsdBalance += overweightAmount;\r\n\r\n                if (asset == _baseAsset) {\r\n                    overweightAmount = overweightAmount;\r\n                    overweightAmount = scaleDown(overweightAmount, IERC20Metadata(asset).decimals());\r\n                } else {\r\n                    overweightAmount = baluniOracle.convert(\r\n                        _baseAsset,\r\n                        asset,\r\n                        scaleDown(overweightAmount, IERC20Metadata(_baseAsset).decimals())\r\n                    );\r\n                }\r\n\r\n                _vars.overweightVaults[_vars.overweightVaultsLength] = i;\r\n                _vars.overweightAmounts[_vars.overweightVaultsLength] = overweightAmount;\r\n                _vars.overweightVaultsLength++;\r\n            } else if (!overweight && overweightPercent > _limit) {\r\n                _vars.totalActiveWeight += overweightPercent;\r\n                _vars.underweightVaults[_vars.underweightVaultsLength] = i;\r\n                _vars.underweightAmounts[_vars.underweightVaultsLength] = overweightPercent;\r\n                _vars.underweightVaultsLength++;\r\n            }\r\n        }\r\n\r\n        _vars.overweightVaults = _resize(_vars.overweightVaults, _vars.overweightVaultsLength);\r\n        _vars.overweightAmounts = _resize(_vars.overweightAmounts, _vars.overweightVaultsLength);\r\n        _vars.underweightVaults = _resize(_vars.underweightVaults, _vars.underweightVaultsLength);\r\n        _vars.underweightAmounts = _resize(_vars.underweightAmounts, _vars.underweightVaultsLength);\r\n\r\n        return _vars;\r\n    }\r\n\r\n    /**\r\n     * @dev Resizes an array to a specified size.\r\n     * @param arr The original array to be resized.\r\n     * @param size The new size for the array.\r\n     * @return ret The resized array.\r\n     */\r\n    function _resize(uint256[] memory arr, uint256 size) internal pure returns (uint256[] memory) {\r\n        uint256[] memory ret = new uint256[](size);\r\n        for (uint256 i; i < size; i++) {\r\n            ret[i] = arr[i];\r\n        }\r\n        return ret;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the net amount after applying a fee.\r\n     * @param _amount The initial amount before the fee is applied.\r\n     * @return The net amount after the fee has been applied.\r\n     *\r\n     * The function uses the Basis Point (BPS) system for fee calculation.\r\n     * 1 BPS is 1/100 of a percent or 0.01% hence the BPS base is 10000.\r\n     * The function retrieves the BPS fee from the baluniRouter and calculates the net amount.\r\n     * The fee is subtracted from the BPS base and the result is multiplied with the initial amount.\r\n     * The product is then divided by the BPS base to get the net amount.\r\n     */\r\n    function calculateNetAmountAfterFee(uint256 _amount) internal view returns (uint256) {\r\n        uint256 _BPS_BASE = registry.getBPS_BASE();\r\n        uint256 _BPS_FEE = registry.getBPS_FEE();\r\n        uint256 amountInWithFee = (_amount * (_BPS_BASE - (_BPS_FEE))) / _BPS_BASE;\r\n        return amountInWithFee;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the total value of the assets held by the caller.\r\n     * @param assets An array of asset addresses.\r\n     * @return The total value of the assets held by the caller.\r\n     */\r\n    function calculateTotalValueScaled(\r\n        uint256[] memory balances,\r\n        address[] memory assets,\r\n        address baseAsset\r\n    ) private view returns (uint256, uint256[] memory) {\r\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\r\n        uint256 totVal = 0;\r\n        IBaluniV1Oracle baluniOracle = IBaluniV1Oracle(registry.getBaluniOracle());\r\n        uint256[] memory valuations = new uint256[](assets.length);\r\n\r\n        for (uint256 i = 0; i < assets.length; i++) {\r\n            if (assets[i] == baseAsset) {\r\n                totVal += scaleUp(balances[i], baseDecimal);\r\n                valuations[i] = scaleUp(balances[i], baseDecimal);\r\n            } else {\r\n                uint256 valuation = baluniOracle.convertScaled(assets[i], baseAsset, balances[i]);\r\n                totVal += valuation;\r\n                valuations[i] = valuation;\r\n            }\r\n        }\r\n\r\n        return (totVal, valuations);\r\n    }\r\n\r\n    /**\r\n     * @dev Scales up the given amount by subtracting the decimals.\r\n     * @param amount The amount to be scaled up.\r\n     * @param decimals The number of decimals to be subtracted.\r\n     * @return The scaled up amount.\r\n     */\r\n    function scaleUp(uint256 amount, uint256 decimals) internal pure returns (uint256) {\r\n        return amount * (10 ** (18 - decimals));\r\n    }\r\n\r\n    /**\r\n     * @dev Scales down the given amount by dividing it by the difference between 10^18 and the decimals.\r\n     * @param amount The amount to be scaled down.\r\n     * @param decimals The number of decimals to be subtracted.\r\n     * @return The scaled down amount.\r\n     */\r\n    function scaleDown(uint256 amount, uint256 decimals) internal pure returns (uint256) {\r\n        return amount / (10 ** (18 - decimals));\r\n    }\r\n}\r\n"},"contracts/managers/BaluniV1Swapper.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';\r\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\r\nimport '@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\n\r\nimport '../interfaces/IBaluniV1PoolPeriphery.sol';\r\nimport '../interfaces/IBaluniV1PoolRegistry.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\n\r\ncontract BaluniV1Swapper is Initializable, OwnableUpgradeable, UUPSUpgradeable {\r\n    IBaluniV1Registry public registry;\r\n\r\n    function initialize(address _registry) public initializer {\r\n        __Ownable_init(msg.sender);\r\n        __UUPSUpgradeable_init();\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\r\n        __Ownable_init(msg.sender);\r\n        __UUPSUpgradeable_init();\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    /**\r\n     * @dev Executes a single swap between two tokens using Uniswap.\r\n     * @param token0 The address of the token to be swapped.\r\n     * @param token1 The address of the token to be received.\r\n     * @param amount The amount of token0 to be swapped.\r\n     * @param receiver The address that will receive the swapped tokens.\r\n     * @return amountOut The amount of token1 received from the swap.\r\n     *\r\n     * The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0.\r\n     * Also, the caller must have approved this contract to spend the amount of token0.\r\n     * The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap.\r\n     * The swapped tokens are sent to the receiver's address.\r\n     * The function returns the amount of token1 received from the swap.\r\n     */\r\n    function singleSwap(\r\n        address token0,\r\n        address token1,\r\n        uint256 amount,\r\n        address receiver\r\n    ) external returns (uint256 amountOut) {\r\n        require(msg.sender != address(this), 'Wrong sender');\r\n        require(amount > 0, 'Amount is 0');\r\n        require(IERC20(token0).balanceOf(msg.sender) >= amount, 'Insufficient Balance');\r\n        uint256 allowance = IERC20(token0).allowance(msg.sender, address(this));\r\n        require(allowance >= amount, 'BaluniSwapper: Insufficient Allowance');\r\n        IERC20(token0).transferFrom(msg.sender, address(this), amount);\r\n        return _singleSwap(token0, token1, amount, receiver);\r\n    }\r\n\r\n    /**\r\n     * @dev Executes a multi-hop swap between three tokens using Uniswap.\r\n     * @param token0 The address of the token to be swapped.\r\n     * @param token1 The address of the intermediate token to be used for the swap.\r\n     * @param token2 The address of the final token to be received.\r\n     * @param amount The amount of token0 to be swapped.\r\n     * @param receiver The address that will receive the swapped tokens.\r\n     * @return amountOut The amount of token2 received from the swap.\r\n     *\r\n     * The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0.\r\n     * Also, the caller must have approved this contract to spend the amount of token0.\r\n     * The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap.\r\n     * The swapped tokens are sent to the receiver's address.\r\n     * The function returns the amount of token2 received from the swap.\r\n     */\r\n    function multiHopSwap(\r\n        address token0,\r\n        address token1,\r\n        address token2,\r\n        uint256 amount,\r\n        address receiver\r\n    ) external returns (uint256 amountOut) {\r\n        require(msg.sender != address(this), 'Wrong sender');\r\n        require(amount > 0, 'Amount is 0');\r\n        require(IERC20(token0).balanceOf(msg.sender) >= amount, 'Insufficient Balance');\r\n        uint256 allowance = IERC20(token0).allowance(msg.sender, address(this));\r\n        require(allowance >= amount, 'BaluniSwapper: Insufficient Allowance');\r\n        IERC20(token0).transferFrom(msg.sender, address(this), amount);\r\n        return _multiHopSwap(token0, token1, token2, amount, receiver);\r\n    }\r\n\r\n    /**\r\n     * @dev Executes a single swap on Uniswap.\r\n     * @param token0 The address of the input token.\r\n     * @param token1 The address of the output token.\r\n     * @param amount The amount of input token to be swapped.\r\n     * @param receiver The address that will receive the swapped tokens.\r\n     * @return amountOut The amount of output tokens received.\r\n     */\r\n    function _singleSwap(\r\n        address token0,\r\n        address token1,\r\n        uint256 amount,\r\n        address receiver\r\n    ) internal returns (uint256 amountOut) {\r\n        address uniswapRouter = registry.getUniswapRouter();\r\n        require(uniswapRouter != address(0), 'BaluniSwapper: Address not set');\r\n        _secureApproval(token0, uniswapRouter, amount);\r\n\r\n        address quoter = registry.getUniswapQuoter();\r\n        uint256 amountOutMin = IQuoter(quoter).quoteExactInputSingle(token0, token1, 3000, amount, 0);\r\n        amountOutMin = amountOutMin - (amountOutMin * slippagePct) / 10000;\r\n\r\n        ISwapRouter.ExactInputSingleParams memory params = ISwapRouter.ExactInputSingleParams({\r\n            tokenIn: token0,\r\n            tokenOut: token1,\r\n            fee: 3000,\r\n            recipient: address(receiver),\r\n            deadline: block.timestamp,\r\n            amountIn: amount,\r\n            amountOutMinimum: amountOutMin,\r\n            sqrtPriceLimitX96: 0\r\n        });\r\n        uint256 amountReceived = ISwapRouter(uniswapRouter).exactInputSingle(params);\r\n        require(amountReceived > 0, 'BaluniSwapper: Amount Received is 0');\r\n        return amountReceived;\r\n    }\r\n\r\n    /**\r\n     * @dev Executes a multi-hop swap using the Uniswap router.\r\n     * @param token0 The address of the first token in the swap path.\r\n     * @param token1 The address of the second token in the swap path.\r\n     * @param token2 The address of the third token in the swap path.\r\n     * @param tokenBalance The amount of tokens to be swapped.\r\n     * @param receiver The address that will receive the swapped tokens.\r\n     * @return amountOut The amount of tokens received after the swap.\r\n     */\r\n    function _multiHopSwap(\r\n        address token0,\r\n        address token1,\r\n        address token2,\r\n        uint256 tokenBalance,\r\n        address receiver\r\n    ) internal returns (uint256 amountOut) {\r\n        address uniswapRouter = registry.getUniswapRouter();\r\n\r\n        _secureApproval(token0, uniswapRouter, tokenBalance);\r\n\r\n        return _multiHopSwapFallback(token0, token1, token2, tokenBalance, receiver);\r\n    }\r\n\r\n    function _multiHopSwapFallback(\r\n        address token0,\r\n        address token1,\r\n        address token2,\r\n        uint256 amount,\r\n        address receiver\r\n    ) internal returns (uint256 amountOut) {\r\n        address uniswapRouter = registry.getUniswapRouter();\r\n        _secureApproval(token0, uniswapRouter, amount);\r\n\r\n        address quoter = registry.getUniswapQuoter();\r\n        bytes memory path = abi.encodePacked(token0, uint24(3000), token1, uint24(3000), token2);\r\n\r\n        uint256 amountOutMin = IQuoter(quoter).quoteExactInput(path, amount);\r\n        amountOutMin = amountOutMin - (amountOutMin * slippagePct) / 10000;\r\n\r\n        ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({\r\n            path: abi.encodePacked(token0, uint24(3000), token1, uint24(3000), token2),\r\n            recipient: address(receiver),\r\n            deadline: block.timestamp,\r\n            amountIn: amount,\r\n            amountOutMinimum: amountOutMin\r\n        });\r\n        uint256 amountReceived = ISwapRouter(uniswapRouter).exactInput(params);\r\n        require(amountReceived > 0, 'BaluniSwapper: Amount Received is 0');\r\n        return amountReceived;\r\n    }\r\n\r\n    /**\r\n     * @dev Ensures that the contract has the necessary approval for a token to be spent by a spender.\r\n     * If the current allowance is not equal to the desired amount, it updates the allowance accordingly.\r\n     * @param token The address of the token to be approved.\r\n     * @param spender The address of the spender.\r\n     * @param amount The desired allowance amount.\r\n     * @notice This function is internal and should not be called directly.\r\n     */\r\n    function _secureApproval(address token, address spender, uint256 amount) internal {\r\n        IERC20 _token = IERC20(token);\r\n        // check allowance thena pprove\r\n        if (_token.allowance(address(this), spender) < amount) {\r\n            _token.approve(spender, 0);\r\n            _token.approve(spender, amount);\r\n        }\r\n    }\r\n\r\n    uint256 slippagePct;\r\n    function setSlippagePercentage(uint256 _slippagePercentage) external onlyOwner {\r\n        slippagePct = _slippagePercentage;\r\n    }\r\n\r\n    function getSlippagePercentage() external view returns (uint256) {\r\n        return slippagePct;\r\n    }\r\n}\r\n"},"contracts/mock/MockOracle.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\r\nimport '@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol';\r\nimport '../interfaces/IBaluniV1Oracle.sol';\r\n\r\ncontract MockOracle is IBaluniV1Oracle {\r\n    mapping(address => mapping(address => uint256)) public rates;\r\n\r\n    // Hardcoded rates\r\n    uint256 public constant USDC_TO_WETH_RATE = 256897185735855109411507118;\r\n    uint256 public constant USDC_TO_USDT_RATE = 1000983989838925640;\r\n    uint256 public constant USDC_TO_WBTC_RATE = 1463657468947761;\r\n    uint256 public constant USDC_TO_WMATIC_RATE = 1351148249095651365340914098616;\r\n\r\n    uint256 public constant WMATIC_TO_USDT_RATE = 747767;\r\n    uint256 public constant WMATIC_TO_USDC_RATE = 733905;\r\n    uint256 public constant WMATIC_TO_WBTC_RATE = 1080;\r\n    uint256 public constant WMATIC_TO_WETH_RATE = 189625582664100;\r\n\r\n    uint256 public constant WBTC_TO_WMATIC_RATE = 924778033538811846038762973579739;\r\n    uint256 public constant WBTC_TO_USDT_RATE = 681360233243484009138;\r\n    uint256 public constant WBTC_TO_WETH_RATE = 175476470939493533556108593598;\r\n    uint256 public constant WBTC_TO_USDC_RATE = 683003374554512029990;\r\n\r\n    uint256 public constant USDT_TO_WBTC_RATE = 1457844841452943;\r\n    uint256 public constant USDT_TO_USDC_RATE = 998840977600189233;\r\n    uint256 public constant USDT_TO_WETH_RATE = 256884484348670192973112135;\r\n    uint256 public constant USDT_TO_WMATIC_RATE = 1351542478738482785523886658083;\r\n\r\n    uint256 public constant WETH_TO_WMATIC_RATE = 5273576410685072782753;\r\n    uint256 public constant WETH_TO_USDC_RATE = 3781382154;\r\n    uint256 public constant WETH_TO_USDT_RATE = 3749163887;\r\n    uint256 public constant WETH_TO_WBTC_RATE = 5561821;\r\n\r\n    address public USDC;\r\n    address public WNATIVE;\r\n\r\n    address public treasury;\r\n\r\n    constructor(address usdt, address _usdc, address _wmatic, address weth, address wbtc) {\r\n        WNATIVE = _wmatic;\r\n        USDC = _usdc;\r\n        treasury = msg.sender;\r\n\r\n        rates[usdt][USDC] = USDT_TO_USDC_RATE;\r\n        rates[usdt][WNATIVE] = USDT_TO_WMATIC_RATE;\r\n        rates[usdt][wbtc] = USDT_TO_WBTC_RATE;\r\n        rates[usdt][weth] = USDT_TO_WETH_RATE;\r\n\r\n        rates[wbtc][usdt] = WBTC_TO_USDT_RATE;\r\n        rates[wbtc][WNATIVE] = WBTC_TO_WMATIC_RATE;\r\n        rates[wbtc][USDC] = WBTC_TO_USDC_RATE;\r\n        rates[wbtc][weth] = WBTC_TO_WETH_RATE;\r\n\r\n        rates[USDC][usdt] = USDC_TO_USDT_RATE;\r\n        rates[USDC][wbtc] = USDC_TO_WBTC_RATE;\r\n        rates[USDC][WNATIVE] = USDC_TO_WMATIC_RATE;\r\n        rates[USDC][weth] = USDC_TO_WETH_RATE;\r\n\r\n        rates[WNATIVE][wbtc] = WMATIC_TO_WBTC_RATE;\r\n        rates[WNATIVE][weth] = WMATIC_TO_WETH_RATE;\r\n        rates[WNATIVE][USDC] = WMATIC_TO_USDC_RATE;\r\n        rates[WNATIVE][usdt] = WMATIC_TO_USDT_RATE;\r\n\r\n        rates[weth][WNATIVE] = WETH_TO_WMATIC_RATE;\r\n        rates[weth][USDC] = WETH_TO_USDC_RATE;\r\n        rates[weth][usdt] = WETH_TO_USDC_RATE;\r\n        rates[weth][wbtc] = WETH_TO_WBTC_RATE;\r\n    }\r\n    /**\r\n     * @dev Converts an amount of tokens from one token to another based on the current exchange rate.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param toToken The address of the token to convert to.\r\n     * @param amount The amount of tokens to convert.\r\n     * @return valuation The converted amount of tokens.\r\n     */\r\n    function convert(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view override returns (uint256 valuation) {\r\n        uint256 rate;\r\n\r\n        uint8 fromDecimal = IERC20Metadata(fromToken).decimals();\r\n        uint8 toDecimal = IERC20Metadata(toToken).decimals();\r\n\r\n        rate = rates[address(fromToken)][address(toToken)];\r\n        rate = (rate * (10 ** fromDecimal)) / (10 ** toDecimal);\r\n\r\n        uint256 factor;\r\n        if (fromDecimal >= toDecimal) {\r\n            factor = 10 ** (fromDecimal - toDecimal);\r\n            valuation = ((amount / factor) * rate) / 1e18;\r\n        } else {\r\n            factor = 10 ** (toDecimal - fromDecimal);\r\n            valuation = ((amount * factor) * rate) / 1e18;\r\n        }\r\n\r\n        return valuation;\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the given amount of tokens from one token to another using the 1inch exchange rate.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param toToken The address of the token to convert to.\r\n     * @param amount The amount of tokens to convert.\r\n     * @return valuation The converted amount of tokens.\r\n     */\r\n    function convertScaled(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view override returns (uint256 valuation) {\r\n        uint256 rate;\r\n\r\n        uint8 fromDecimal = IERC20Metadata(fromToken).decimals();\r\n        uint8 toDecimal = IERC20Metadata(toToken).decimals();\r\n\r\n        rate = rates[address(fromToken)][address(toToken)];\r\n\r\n        rate = (rate * (10 ** fromDecimal)) / (10 ** toDecimal);\r\n\r\n        uint256 scalingFactor;\r\n        uint256 tokenAmount;\r\n        uint256 finalScalingFactor = 10 ** (18 - toDecimal);\r\n\r\n        if (fromDecimal == toDecimal) {\r\n            valuation = (amount * rate) / 1e18;\r\n        } else if (fromDecimal > toDecimal) {\r\n            scalingFactor = 10 ** (fromDecimal - toDecimal);\r\n            tokenAmount = amount / scalingFactor;\r\n            valuation = (tokenAmount * rate) / 1e18;\r\n        } else {\r\n            scalingFactor = 10 ** (toDecimal - fromDecimal);\r\n            tokenAmount = amount * scalingFactor;\r\n            valuation = (tokenAmount * rate) / 1e18;\r\n        }\r\n\r\n        valuation = valuation * finalScalingFactor;\r\n\r\n        return valuation;\r\n    }\r\n}\r\n"},"contracts/mock/MockRebalancer.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\nimport '../interfaces/IBaluniV1Rebalancer.sol';\r\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\r\nimport '@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol';\r\n\r\ncontract MockRebalancer {\r\n    mapping(address => mapping(address => uint256)) public rates;\r\n\r\n    // Hardcoded rates\r\n    uint256 public constant USDC_TO_WETH_RATE = 256897185735855109411507118;\r\n    uint256 public constant USDC_TO_USDT_RATE = 1000983989838925640;\r\n    uint256 public constant USDC_TO_WBTC_RATE = 1463657468947761;\r\n    uint256 public constant USDC_TO_WMATIC_RATE = 1351148249095651365340914098616;\r\n\r\n    uint256 public constant WMATIC_TO_USDT_RATE = 747767;\r\n    uint256 public constant WMATIC_TO_USDC_RATE = 733905;\r\n    uint256 public constant WMATIC_TO_WBTC_RATE = 1080;\r\n    uint256 public constant WMATIC_TO_WETH_RATE = 189625582664100;\r\n\r\n    uint256 public constant WBTC_TO_WMATIC_RATE = 924778033538811846038762973579739;\r\n    uint256 public constant WBTC_TO_USDT_RATE = 681360233243484009138;\r\n    uint256 public constant WBTC_TO_WETH_RATE = 175476470939493533556108593598;\r\n    uint256 public constant WBTC_TO_USDC_RATE = 683003374554512029990;\r\n\r\n    uint256 public constant USDT_TO_WBTC_RATE = 1457844841452943;\r\n    uint256 public constant USDT_TO_USDC_RATE = 998840977600189233;\r\n    uint256 public constant USDT_TO_WETH_RATE = 256884484348670192973112135;\r\n    uint256 public constant USDT_TO_WMATIC_RATE = 1351542478738482785523886658083;\r\n\r\n    uint256 public constant WETH_TO_WMATIC_RATE = 5273576410685072782753;\r\n    uint256 public constant WETH_TO_USDC_RATE = 3781382154;\r\n    uint256 public constant WETH_TO_USDT_RATE = 3749163887;\r\n    uint256 public constant WETH_TO_WBTC_RATE = 5561821;\r\n\r\n    address public USDC;\r\n    address public WNATIVE;\r\n\r\n    address public treasury;\r\n\r\n    constructor(address usdt, address _usdc, address _wmatic, address weth, address wbtc) {\r\n        WNATIVE = _wmatic;\r\n        USDC = _usdc;\r\n        treasury = msg.sender;\r\n\r\n        rates[usdt][USDC] = USDT_TO_USDC_RATE;\r\n        rates[usdt][WNATIVE] = USDT_TO_WMATIC_RATE;\r\n        rates[usdt][wbtc] = USDT_TO_WBTC_RATE;\r\n        rates[usdt][weth] = USDT_TO_WETH_RATE;\r\n\r\n        rates[wbtc][usdt] = WBTC_TO_USDT_RATE;\r\n        rates[wbtc][WNATIVE] = WBTC_TO_WMATIC_RATE;\r\n        rates[wbtc][USDC] = WBTC_TO_USDC_RATE;\r\n        rates[wbtc][weth] = WBTC_TO_WETH_RATE;\r\n\r\n        rates[USDC][usdt] = USDC_TO_USDT_RATE;\r\n        rates[USDC][wbtc] = USDC_TO_WBTC_RATE;\r\n        rates[USDC][WNATIVE] = USDC_TO_WMATIC_RATE;\r\n        rates[USDC][weth] = USDC_TO_WETH_RATE;\r\n\r\n        rates[WNATIVE][wbtc] = WMATIC_TO_WBTC_RATE;\r\n        rates[WNATIVE][weth] = WMATIC_TO_WETH_RATE;\r\n        rates[WNATIVE][USDC] = WMATIC_TO_USDC_RATE;\r\n        rates[WNATIVE][usdt] = WMATIC_TO_USDT_RATE;\r\n\r\n        rates[weth][WNATIVE] = WETH_TO_WMATIC_RATE;\r\n        rates[weth][USDC] = WETH_TO_USDC_RATE;\r\n        rates[weth][usdt] = WETH_TO_USDC_RATE;\r\n        rates[weth][wbtc] = WETH_TO_WBTC_RATE;\r\n    }\r\n\r\n    function setRate(address fromToken, address toToken, uint256 rate) external {\r\n        rates[fromToken][toToken] = rate;\r\n    }\r\n\r\n    function getRate(IERC20 fromToken, IERC20 toToken, bool /*isBuying*/) external view returns (uint256) {\r\n        return rates[address(fromToken)][address(toToken)];\r\n    }\r\n\r\n    function getRateToEth(IERC20 fromToken, bool /*isBuying*/) external view returns (uint256) {\r\n        return rates[address(fromToken)][WNATIVE];\r\n    }\r\n\r\n    function rebalance(\r\n        address[] calldata /* assets */,\r\n        uint256[] calldata /* weights */,\r\n        address /* caller */,\r\n        address /* receiver */,\r\n        uint256 /* trigger */\r\n    ) external {}\r\n\r\n    function checkRebalance(\r\n        address[] calldata /* assets */,\r\n        uint256[] calldata /* weights */,\r\n        uint256[] calldata /* amounts */\r\n    ) external view returns (bool) {\r\n        return true;\r\n    }\r\n\r\n    function getBaluniRouter() external view returns (address) {\r\n        return address(0);\r\n    }\r\n\r\n    function getTreasury() external view returns (address) {\r\n        return treasury;\r\n    }\r\n\r\n    function setTreasury(address _treasury) external {\r\n        treasury = _treasury;\r\n    }\r\n}\r\n"},"contracts/mock/MockSwapRouter.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\r\n\r\ncontract MockSwapRouter {\r\n    struct ExactInputSingleParams {\r\n        address tokenIn;\r\n        address tokenOut;\r\n        uint24 fee;\r\n        address recipient;\r\n        uint256 deadline;\r\n        uint256 amountIn;\r\n        uint256 amountOutMinimum;\r\n        uint160 sqrtPriceLimitX96;\r\n    }\r\n\r\n    struct ExactInputParams {\r\n        address[] path;\r\n        address recipient;\r\n        uint256 deadline;\r\n        uint256 amountIn;\r\n        uint256 amountOutMinimum;\r\n    }\r\n\r\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut) {\r\n        // Mock implementation returning amountIn as amountOut for simplicity\r\n        return params.amountIn;\r\n    }\r\n\r\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut) {\r\n        // Mock implementation returning amountIn as amountOut for simplicity\r\n        return params.amountIn;\r\n    }\r\n}\r\n"},"contracts/mock/MockToken.sol":{"content":"// SPDX-License-Identifier: MIT\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts/token/ERC20/ERC20.sol';\r\n\r\ncontract MockToken is ERC20 {\r\n    uint8 private _decimals;\r\n\r\n    constructor(string memory name, string memory symbol, uint8 decimals_) ERC20(name, symbol) {\r\n        _decimals = decimals_;\r\n    }\r\n\r\n    function decimals() public view override returns (uint8) {\r\n        return _decimals;\r\n    }\r\n\r\n    function mint(address to, uint256 amount) public {\r\n        _mint(to, amount);\r\n    }\r\n}\r\n"},"contracts/oracles/BaluniV1Oracle.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\n\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '../interfaces/I1inchSpotAgg.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1Oracle.sol';\r\nimport '../interfaces/IStaticOracle.sol';\r\n\r\ncontract BaluniV1Oracle is Initializable, OwnableUpgradeable, UUPSUpgradeable, IBaluniV1Oracle {\r\n    IBaluniV1Registry public registry;\r\n\r\n    function initialize(address _registry) public initializer {\r\n        __Ownable_init(msg.sender);\r\n        __UUPSUpgradeable_init();\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\r\n        __Ownable_init(msg.sender);\r\n        __UUPSUpgradeable_init();\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the available oracle.\r\n     * If the conversion fails with the static oracle, it falls back to the aggregator oracle.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param toToken The address of the token to convert to.\r\n     * @param amount The amount of `fromToken` to convert.\r\n     * @return valuation The converted valuation of `amount` in `toToken`.\r\n     */\r\n    function convert(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) public view override returns (uint256 valuation) {\r\n        return this.convertWithStaticOracle(fromToken, toToken, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the available oracle.\r\n     * If the conversion fails with the static oracle, it falls back to the aggregator oracle.\r\n     * This function is externally callable.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param toToken The address of the token to convert to.\r\n     * @param amount The amount of `fromToken` to convert.\r\n     * @return valuation The converted valuation of `amount` in `toToken`.\r\n     */\r\n    function convertScaled(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view override returns (uint256 valuation) {\r\n        return this.convertScaledWithStaticOracle(fromToken, toToken, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param toToken The address of the token to convert to.\r\n     * @param amount The amount of `fromToken` to convert.\r\n     * @return valuation The converted valuation of `amount` in `toToken`.\r\n     */\r\n    function convertWithAgg(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view returns (uint256 valuation) {\r\n        if (fromToken == toToken) return amount;\r\n        address _1InchSpotAgg = registry.get1inchSpotAgg();\r\n        uint8 fromDecimal = IERC20Metadata(fromToken).decimals();\r\n        uint8 toDecimal = IERC20Metadata(toToken).decimals();\r\n        uint256 rate = I1inchSpotAgg(_1InchSpotAgg).getRate(IERC20(fromToken), IERC20(toToken), false);\r\n        rate = (rate * (10 ** fromDecimal)) / (10 ** toDecimal);\r\n        uint256 factor;\r\n        if (fromDecimal >= toDecimal) {\r\n            factor = 10 ** (fromDecimal - toDecimal);\r\n            valuation = ((amount / factor) * rate) / 1e18;\r\n        } else {\r\n            factor = 10 ** (toDecimal - fromDecimal);\r\n            valuation = ((amount * factor) * rate) / 1e18;\r\n        }\r\n        return valuation;\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator and scales the result.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param toToken The address of the token to convert to.\r\n     * @param amount The amount of `fromToken` to convert.\r\n     * @return valuation  The scaled converted valuation of `amount` in `toToken`.\r\n     */\r\n    function convertScaledWithAgg(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view returns (uint256 valuation) {\r\n        if (fromToken == toToken) return amount * 10 ** (18 - IERC20Metadata(toToken).decimals());\r\n        address _1InchSpotAgg = registry.get1inchSpotAgg();\r\n        uint8 fromDecimal = IERC20Metadata(fromToken).decimals();\r\n        uint8 toDecimal = IERC20Metadata(toToken).decimals();\r\n        uint256 rate = I1inchSpotAgg(_1InchSpotAgg).getRate(IERC20(fromToken), IERC20(toToken), false);\r\n        rate = (rate * (10 ** fromDecimal)) / (10 ** toDecimal);\r\n        uint256 scalingFactor;\r\n        uint256 tokenAmount;\r\n        uint256 finalScalingFactor = 10 ** (18 - toDecimal);\r\n        if (fromDecimal == toDecimal) {\r\n            valuation = (amount * rate) / 1e18;\r\n        } else if (fromDecimal > toDecimal) {\r\n            scalingFactor = 10 ** (fromDecimal - toDecimal);\r\n            tokenAmount = amount / scalingFactor;\r\n            valuation = (tokenAmount * rate) / 1e18;\r\n        } else {\r\n            scalingFactor = 10 ** (toDecimal - fromDecimal);\r\n            tokenAmount = amount * scalingFactor;\r\n            valuation = (tokenAmount * rate) / 1e18;\r\n        }\r\n        valuation = valuation * finalScalingFactor;\r\n        return valuation;\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the static oracle.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param toToken The address of the token to convert to.\r\n     * @param amount The amount of `fromToken` to convert.\r\n     * @return  valuation of the converted amount.\r\n     */\r\n    function convertWithStaticOracle(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view returns (uint256 valuation) {\r\n        IStaticOracle staticOracle = IStaticOracle(registry.getStaticOracle());\r\n        require(address(staticOracle) != address(0), 'StaticOracle not set');\r\n        (valuation, ) = staticOracle.quoteAllAvailablePoolsWithTimePeriod(uint128(amount), fromToken, toToken, 60);\r\n        return valuation;\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the given amount of tokens from one token to another using a static oracle.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param toToken The address of the token to convert to.\r\n     * @param amount The amount of tokens to convert.\r\n     * @return  valuation of the converted tokens.\r\n     */\r\n    function convertScaledWithStaticOracle(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) external view returns (uint256 valuation) {\r\n        uint256 _valuation = this.convertWithStaticOracle(fromToken, toToken, amount);\r\n        valuation = scaleUp(_valuation, IERC20Metadata(toToken).decimals());\r\n        return valuation;\r\n    }\r\n\r\n    /**\r\n     * @dev Scales up the given amount by subtracting the decimals.\r\n     * @param amount The amount to be scaled up.\r\n     * @param decimals The number of decimals to be subtracted.\r\n     * @return The scaled up amount.\r\n     */\r\n    function scaleUp(uint256 amount, uint256 decimals) internal pure returns (uint256) {\r\n        return amount * (10 ** (18 - decimals));\r\n    }\r\n\r\n    /**\r\n     * @dev Scales down the given amount by dividing it by the difference between 10^18 and the decimals.\r\n     * @param amount The amount to be scaled down.\r\n     * @param decimals The number of decimals to be subtracted.\r\n     * @return The scaled down amount.\r\n     */\r\n    function scaleDown(uint256 amount, uint256 decimals) internal pure returns (uint256) {\r\n        return amount / (10 ** (18 - decimals));\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n}\r\n"},"contracts/orchestators/BaluniV1Agent.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\n\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '../libs/AddressUpgradeable.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1AgentFactory.sol';\r\n\r\n/**\r\n * @title BaluniV1Agent\r\n * @dev This contract represents the BaluniV1Agent contract.\r\n */\r\ncontract BaluniV1Agent {\r\n    using AddressUpgradeable for address payable;\r\n\r\n    address public owner;\r\n    address private factory;\r\n    address internal constant _NATIVE = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\r\n    uint256 internal constant _DUST = 10;\r\n\r\n    struct Call {\r\n        address to;\r\n        uint256 value;\r\n        bytes data;\r\n    }\r\n\r\n    constructor(address _factory) {\r\n        factory = _factory;\r\n    }\r\n\r\n    /**\r\n     * @dev Initializes the contract with the specified owner and router addresses.\r\n     * @param _owner The address of the contract owner.\r\n     */\r\n    function initialize(address _owner) external {\r\n        require(owner == address(0), 'Already initialized');\r\n        owner = _owner;\r\n        factory = msg.sender;\r\n    }\r\n\r\n    /**\r\n     * @dev Modifier that allows a function to be called only by the router.\r\n     * @notice This modifier checks if the caller is the router contract.\r\n     * @notice If the caller is not the router, the function call will revert.\r\n     */\r\n    modifier onlyRouter() {\r\n        require(msg.sender == getRouter(), 'Callable only by the router');\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @dev Executes a batch of calls and performs token operations.\r\n     * @param calls An array of Call structs representing the calls to be executed.\r\n     * @param tokensReturn An array of token addresses to return after the batch call.\r\n     * @notice Only the router contract is allowed to execute this function.\r\n     */\r\n    function execute(Call[] memory calls, address[] memory tokensReturn) external onlyRouter {\r\n        for (uint i = 0; i < calls.length; i++) {\r\n            (bool success, ) = calls[i].to.call{value: calls[i].value}(calls[i].data);\r\n            require(success, 'Batch call failed');\r\n        }\r\n        _chargeFees(tokensReturn);\r\n        _returnTokens(tokensReturn);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the address of the router contract.\r\n     * @return The address of the router contract.\r\n     */\r\n    function getRouter() public view returns (address) {\r\n        return IBaluniV1Registry(IBaluniV1AgentFactory(factory).getRegistry()).getBaluniRouter();\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the address of the factory contract.\r\n     * @return The address of the factory contract.\r\n     */\r\n    function getFactory() public view returns (address) {\r\n        return factory;\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to charge fees for the tokens returned.\r\n     * @param tokensReturn The array of tokens to charge fees for.\r\n     */\r\n    function _chargeFees(address[] memory tokensReturn) internal {\r\n        IBaluniV1Registry registry = IBaluniV1Registry(IBaluniV1AgentFactory(factory).getRegistry());\r\n        address router = registry.getBaluniRouter();\r\n        uint256 amount;\r\n        uint256 bpsFee = registry.getBPS_FEE();\r\n        uint256 bpsBase = registry.getBPS_BASE();\r\n        for (uint256 i = 0; i < tokensReturn.length; i++) {\r\n            address token = tokensReturn[i];\r\n            if (token == _NATIVE) {\r\n                amount = (address(this).balance * bpsFee) / bpsBase;\r\n                payable(router).sendValue(amount);\r\n            } else {\r\n                uint256 balance = IERC20Metadata(token).balanceOf(address(this));\r\n                amount = (balance * bpsFee) / bpsBase;\r\n                IERC20Metadata(token).transfer(router, amount);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to return tokens to the owner.\r\n     * @param tokensReturn The array of tokens to return.\r\n     */\r\n    function _returnTokens(address[] memory tokensReturn) internal {\r\n        uint256 tokensReturnLength = tokensReturn.length;\r\n        if (tokensReturnLength > 0) {\r\n            for (uint256 i; i < tokensReturnLength; ) {\r\n                address token = tokensReturn[i];\r\n                if (token == _NATIVE) {\r\n                    if (address(this).balance > 0) {\r\n                        payable(owner).sendValue(address(this).balance);\r\n                    }\r\n                } else {\r\n                    uint256 balance = IERC20Metadata(token).balanceOf(address(this));\r\n                    if (balance > _DUST) {\r\n                        IERC20Metadata(token).transfer(owner, balance);\r\n                    }\r\n                }\r\n\r\n                unchecked {\r\n                    ++i;\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/orchestators/BaluniV1AgentFactory.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\n\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport './BaluniV1Agent.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../libs/ClonesUpgradeable.sol';\r\n\r\ncontract BaluniV1AgentFactory is Initializable, OwnableUpgradeable, UUPSUpgradeable {\r\n    // L'indirizzo del contratto logico che sarà utilizzato come implementazione per i proxy\r\n    address private implementation;\r\n\r\n    mapping(address => BaluniV1Agent) public userAgents;\r\n\r\n    IBaluniV1Registry public registry;\r\n\r\n    event AgentCreated(address user, address agent);\r\n\r\n    /**\r\n     * @dev Changes the implementation of the BaluniV1Agent contract.\r\n     * Only the contract owner can call this function.\r\n     * Creates a new instance of BaluniV1Agent and updates the implementation address.\r\n     */\r\n    function changeImplementation() external onlyOwner {\r\n        BaluniV1Agent newAgent = new BaluniV1Agent(address(this));\r\n        implementation = address(newAgent);\r\n    }\r\n\r\n    /**\r\n     * @dev Initializes the contract by calling the initializers of the parent contracts.\r\n     */\r\n    function initialize(address _registry) public initializer {\r\n        __Ownable_init(msg.sender);\r\n        __UUPSUpgradeable_init();\r\n\r\n        registry = IBaluniV1Registry(_registry);\r\n\r\n        // Create a new BaluniV1Agent instance and set it as the implementation address\r\n        BaluniV1Agent newAgent = new BaluniV1Agent(address(this));\r\n        implementation = address(newAgent);\r\n    }\r\n\r\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\r\n        __Ownable_init(msg.sender);\r\n        __UUPSUpgradeable_init();\r\n\r\n        registry = IBaluniV1Registry(_registry);\r\n\r\n        BaluniV1Agent newAgent = new BaluniV1Agent(address(this));\r\n        implementation = address(newAgent);\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\r\n     * @param newImplementation The address of the new implementation contract.\r\n     */\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    /**\r\n     * @dev Internal function to create a new BaluniV1Agent contract instance.\r\n     * @param salt The salt value used for deterministic cloning.\r\n     * @param user The address of the user for whom the agent is being created.\r\n     * @return The address of the newly created BaluniV1Agent contract instance.\r\n     */\r\n    function _createAgent(bytes32 salt, address user) internal returns (BaluniV1Agent) {\r\n        require(address(registry) != address(0), 'registry not set');\r\n        address clone = ClonesUpgradeable.cloneDeterministic(implementation, salt);\r\n        BaluniV1Agent(clone).initialize(user);\r\n        return BaluniV1Agent(clone);\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the address of the BaluniV1Agent contract associated with a user.\r\n     * @param user The address of the user.\r\n     * @return The address of the BaluniV1Agent contract associated with the user.\r\n     */\r\n    function getAgentAddress(address user) public view returns (address) {\r\n        return address(userAgents[user]);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the address of an existing agent for the given user, or creates a new agent if one doesn't exist.\r\n     * @param user The address of the user.\r\n     * @return The address of the agent.\r\n     */\r\n    function getOrCreateAgent(address user) external returns (address) {\r\n        require(address(this) != address(0), 'Agent factory not set');\r\n        bytes32 salt = keccak256(abi.encodePacked(user));\r\n        if (address(userAgents[user]) == address(0) || isContract(address(userAgents[user])) == false) {\r\n            BaluniV1Agent agent = _createAgent(salt, user);\r\n            require(isContract(address(agent)), 'Agent creation failed, not a contract');\r\n            userAgents[user] = agent;\r\n            emit AgentCreated(user, address(agent));\r\n        }\r\n        return address(userAgents[user]);\r\n    }\r\n\r\n    /**\r\n     * @dev Checks if the given address is a contract.\r\n     * @param _addr The address to check.\r\n     * @return A boolean indicating whether the address is a contract or not.\r\n     */\r\n    function isContract(address _addr) private view returns (bool) {\r\n        uint32 size;\r\n        assembly {\r\n            size := extcodesize(_addr)\r\n        }\r\n        return size > 0;\r\n    }\r\n\r\n    function changeRegistry(address _newRegistry) external onlyOwner {\r\n        registry = IBaluniV1Registry(_newRegistry);\r\n    }\r\n\r\n    function getRegistry() external view returns (address) {\r\n        return address(registry);\r\n    }\r\n\r\n    function changeRegistryAddress(address _newAddress) external onlyOwner {\r\n        registry = IBaluniV1Registry(_newAddress);\r\n    }\r\n}\r\n"},"contracts/orchestators/BaluniV1Router.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';\r\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\n\r\nimport '../interfaces/IBaluniV1Agent.sol';\r\nimport '../interfaces/IBaluniV1AgentFactory.sol';\r\nimport '../interfaces/IBaluniV1Rebalancer.sol';\r\nimport '../interfaces/I1inchSpotAgg.sol';\r\nimport '../interfaces/IBaluniV1Oracle.sol';\r\nimport '../libs/EnumerableSetUpgradeable.sol';\r\nimport '../interfaces/IBaluniV1Swapper.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\n\r\ncontract BaluniV1Router is\r\n    Initializable,\r\n    ERC20Upgradeable,\r\n    OwnableUpgradeable,\r\n    ReentrancyGuardUpgradeable,\r\n    UUPSUpgradeable\r\n{\r\n    struct Call {\r\n        address to;\r\n        uint256 value;\r\n        bytes data;\r\n    }\r\n\r\n    EnumerableSetUpgradeable.AddressSet private tokens;\r\n\r\n    IBaluniV1Registry public registry;\r\n\r\n    using EnumerableSetUpgradeable for EnumerableSetUpgradeable.AddressSet;\r\n\r\n    address public baseAsset;\r\n\r\n    event Execute(address user, IBaluniV1Agent.Call[] calls, address[] tokensReturn);\r\n    event Burn(address user, uint256 value);\r\n    event Mint(address user, uint256 value);\r\n    event Log(string message, uint256 value);\r\n\r\n    /**\r\n     * @dev Initializes the BaluniV1Router contract.\r\n     * It sets the initial values for various variables and mints 1 ether to the contract's address.\r\n     * It also sets the USDC token address, WNATIVE token address, oracle address, Uniswap router address, and Uniswap factory address.\r\n     * Finally, it adds the USDC token address to the tokens set.\r\n     */\r\n    function initialize(address _registry) public initializer {\r\n        __ERC20_init('Baluni', 'BALUNI');\r\n        __Ownable_init(msg.sender);\r\n        __ReentrancyGuard_init();\r\n        __UUPSUpgradeable_init();\r\n        _mint(address(this), 1 ether);\r\n\r\n        registry = IBaluniV1Registry(_registry);\r\n        baseAsset = registry.getUSDC();\r\n    }\r\n\r\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\r\n        // __UUPSUpgradeable_init();\r\n        // __Ownable_init(msg.sender);\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    function resetContract(address _registry) public onlyOwner {\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\r\n     * @param newImplementation The address of the new implementation contract.\r\n     * @notice This function can only be called by the contract owner.\r\n     */\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    /**\r\n     * @dev Returns the unit price of the token in USDC.\r\n     * @return The unit price of the token in USDC.\r\n     */\r\n    function unitPrice() public view returns (uint256) {\r\n        return _calculateBaluniToUSDC(1e18);\r\n    }\r\n\r\n    /**\r\n     * @dev Executes a series of calls to a BaluniV1Agent contract and handles token returns.\r\n     * @param calls An array of IBaluniV1Agent.Call structs representing the calls to be executed.\r\n     * @param tokensReturn An array of addresses representing the tokens to be returned.\r\n     * @notice This function requires the agentFactory to be set and creates a new agent if necessary.\r\n     * @notice If a token is new and a Uniswap pool exists for it, the token is added to the tokens set.\r\n     * @notice If no Uniswap pool exists for a token, the token balance is transferred back to the caller.\r\n     */\r\n    function execute(IBaluniV1Agent.Call[] memory calls, address[] memory tokensReturn) external nonReentrant {\r\n        address agentFactory = registry.getBaluniAgentFactory();\r\n        address uniswapFactory = registry.getUniswapFactory();\r\n        address WNATIVE = registry.getWNATIVE();\r\n        address USDC = registry.getUSDC();\r\n\r\n        require(address(agentFactory) != address(0), 'Agent factory not set');\r\n        address agent = IBaluniV1AgentFactory(agentFactory).getOrCreateAgent(msg.sender);\r\n        bool[] memory isTokenNew = new bool[](tokensReturn.length);\r\n        uint256[] memory tokenBalances = new uint256[](tokensReturn.length);\r\n\r\n        for (uint256 i = 0; i < tokensReturn.length; i++) {\r\n            isTokenNew[i] = !EnumerableSetUpgradeable.contains(tokens, tokensReturn[i]);\r\n            tokenBalances[i] = IERC20(tokensReturn[i]).balanceOf(address(this));\r\n        }\r\n\r\n        IBaluniV1Agent(agent).execute(calls, tokensReturn);\r\n\r\n        for (uint256 i = 0; i < tokensReturn.length; i++) {\r\n            address token = tokensReturn[i];\r\n            uint256 balance = IERC20(token).balanceOf(address(this));\r\n            address poolNative3000 = IUniswapV3Factory(uniswapFactory).getPool(token, address(WNATIVE), 3000);\r\n            address poolNative500 = IUniswapV3Factory(uniswapFactory).getPool(token, address(WNATIVE), 500);\r\n            address poolUSDC500 = IUniswapV3Factory(uniswapFactory).getPool(token, address(USDC), 500);\r\n            address poolUSDC3000 = IUniswapV3Factory(uniswapFactory).getPool(token, address(USDC), 3000);\r\n            bool poolExist = poolNative3000 != address(0) ||\r\n                poolNative500 != address(0) ||\r\n                poolUSDC3000 != address(0) ||\r\n                poolUSDC500 != address(0);\r\n\r\n            if (isTokenNew[i] && poolExist) {\r\n                EnumerableSetUpgradeable.add(tokens, token);\r\n            }\r\n\r\n            uint256 amountReceived = balance - tokenBalances[i];\r\n\r\n            if (!poolExist) {\r\n                IERC20(token).transfer(msg.sender, amountReceived);\r\n                return;\r\n            }\r\n\r\n            address treasury = registry.getTreasury();\r\n            uint256 _BPS_FEE = registry.getBPS_FEE();\r\n            uint256 _BPS_BASE = registry.getBPS_BASE();\r\n\r\n            if (balance > tokenBalances[i]) {\r\n                uint256 fee = (amountReceived * _BPS_FEE) / _BPS_BASE;\r\n                IERC20(token).transfer(treasury, fee);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Liquidates the specified token by swapping it for USDC.\r\n     * @param token The address of the token to be liquidated.\r\n     * @notice The contract must have sufficient approval to spend the specified token.\r\n     * @notice If a pool exists for the token and USDC on Uniswap, a direct swap is performed.\r\n     * @notice If no pool exists, a multi-hop swap is performed through the WNATIVE token.\r\n     * @notice If the swap fails, the `burn` function should be called to handle the failed swap.\r\n     */\r\n    function liquidate(address token) public {\r\n        address WNATIVE = registry.getWNATIVE();\r\n        address baluniSwapper = registry.getBaluniSwapper();\r\n\r\n        uint256 totalERC20Balance = IERC20(token).balanceOf(address(this));\r\n        bool haveBalance = totalERC20Balance > 0;\r\n        IERC20(token).approve(baluniSwapper, totalERC20Balance);\r\n\r\n        if (!haveBalance) return;\r\n\r\n        try IBaluniV1Swapper(baluniSwapper).singleSwap(token, baseAsset, totalERC20Balance, address(this)) {\r\n            return;\r\n        } catch {\r\n            uint256 multiHopSwapResult = IBaluniV1Swapper(baluniSwapper).multiHopSwap(\r\n                token,\r\n                address(WNATIVE),\r\n                baseAsset,\r\n                totalERC20Balance,\r\n                address(this)\r\n            );\r\n\r\n            require(multiHopSwapResult > 0, 'Muti Hop Swap Failed, Try Burn()');\r\n            return;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Liquidates all tokens in the contract.\r\n     * This function iterates through all the tokens in the contract and calls the `liquidate` function for each token.\r\n     * Can only be called by the contract owner.\r\n     */\r\n    function liquidateAll() public nonReentrant {\r\n        uint256 length = tokens.length();\r\n        for (uint256 i = 0; i < length; i++) {\r\n            address token = tokens.at(i);\r\n            if (token == baseAsset) continue;\r\n            liquidate(token);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Burns a specified amount of BALUNI tokens from the caller's balance.\r\n     * @param burnAmount The amount of BALUNI tokens to burn.\r\n     * @notice This function requires the caller to have a balance of at least `burnAmount` BAL tokens.\r\n     * @notice The function also checks the USDC balance before burning the tokens.\r\n     * @notice After burning the tokens, the function transfers a proportional share of each ERC20 token held by the contract to the caller.\r\n     * @notice The share is calculated based on the total supply of BAL tokens, the balance of each ERC20 token, and the decimals of each token.\r\n     * @notice Finally, the function emits a `Burn` event with the caller's address and the amount of tokens burned.\r\n     */\r\n    function burnERC20(uint256 burnAmount) external nonReentrant {\r\n        require(burnAmount > 0, 'Burn amount must be greater than 0');\r\n        address treasury = registry.getTreasury();\r\n        require(treasury != address(0), 'Treasury not set');\r\n        require(balanceOf(msg.sender) >= burnAmount, 'Insufficient BAL');\r\n        uint256 burnAmountAfterFee = _calculateNetAmountAfterFee(burnAmount);\r\n        require(burnAmountAfterFee <= burnAmount, 'Fee calculation error');\r\n        transfer(treasury, burnAmount - burnAmountAfterFee);\r\n\r\n        for (uint256 i; i < tokens.length(); i++) {\r\n            address token = tokens.at(i);\r\n            require(token != address(0), 'Invalid token address');\r\n            uint256 totalBaluni = totalSupply();\r\n            require(totalBaluni > 0, 'Total supply is 0');\r\n            uint256 totalERC20Balance = IERC20(token).balanceOf(address(this));\r\n            if (totalERC20Balance == 0 || token == address(this)) continue;\r\n            uint256 decimals = IERC20Metadata(token).decimals();\r\n            uint256 share = _calculateERC20Share(totalBaluni, totalERC20Balance, burnAmountAfterFee, decimals);\r\n            require(share <= totalERC20Balance, 'Share calculation error');\r\n            IERC20(token).transfer(msg.sender, share);\r\n        }\r\n        _burn(msg.sender, burnAmountAfterFee);\r\n        emit Burn(msg.sender, burnAmountAfterFee);\r\n    }\r\n\r\n    /**\r\n     * @dev Burns a specified amount of BAL tokens and performs token swaps on multiple tokens.\r\n     * @param burnAmount The amount of BAL tokens to burn.\r\n     */\r\n    function burnUSDC(uint256 burnAmount) public nonReentrant {\r\n        require(burnAmount > 0, 'Burn amount must be greater than 0');\r\n        address uniswapFactory = registry.getUniswapFactory();\r\n        require(uniswapFactory != address(0), 'UniswapFactory not set');\r\n        address treasury = registry.getTreasury();\r\n        require(treasury != address(0), 'Treasury not set');\r\n        address WNATIVE = registry.getWNATIVE();\r\n        require(WNATIVE != address(0), 'WNATIVE not set');\r\n\r\n        uint256 burnAmountAfterFee = _calculateNetAmountAfterFee(burnAmount);\r\n        require(burnAmountAfterFee <= burnAmount, 'Fee calculation error');\r\n\r\n        uint burnAmountToSend = burnAmount - burnAmountAfterFee;\r\n\r\n        transfer(treasury, burnAmountToSend);\r\n\r\n        for (uint256 i; i < tokens.length(); i++) {\r\n            address token = tokens.at(i);\r\n            require(token != address(0), 'Invalid token address');\r\n\r\n            uint256 totalBaluni = totalSupply();\r\n            require(totalBaluni > 0, 'Total supply is 0');\r\n\r\n            uint256 totalERC20Balance = IERC20(token).balanceOf(address(this));\r\n\r\n            if (totalERC20Balance == 0 || token == address(this)) continue;\r\n\r\n            uint256 decimals = IERC20Metadata(token).decimals();\r\n\r\n            uint256 burnAmountToken = _calculateERC20Share(\r\n                totalBaluni,\r\n                totalERC20Balance,\r\n                burnAmountAfterFee,\r\n                decimals\r\n            );\r\n\r\n            require(burnAmountToken <= totalERC20Balance, 'Share calculation error');\r\n\r\n            if (token == baseAsset) {\r\n                IERC20(baseAsset).transfer(msg.sender, burnAmountToken);\r\n                continue;\r\n            }\r\n\r\n            address baluniSwapper = registry.getBaluniSwapper();\r\n            require(baluniSwapper != address(0), 'BaluniSwapper not set');\r\n\r\n            IERC20(token).approve(baluniSwapper, burnAmountToken);\r\n\r\n            try IBaluniV1Swapper(baluniSwapper).singleSwap(token, baseAsset, burnAmountToken, msg.sender) returns (\r\n                uint256 amountOut\r\n            ) {\r\n                require(amountOut > 0, 'Swap Failed');\r\n                IERC20(baseAsset).transfer(msg.sender, amountOut);\r\n            } catch {\r\n                uint256 amountOutHop = IBaluniV1Swapper(baluniSwapper).multiHopSwap(\r\n                    token,\r\n                    address(WNATIVE),\r\n                    baseAsset,\r\n                    burnAmountToken,\r\n                    msg.sender\r\n                );\r\n                require(amountOutHop > 0, 'MultiHopSwap Failed');\r\n                IERC20(baseAsset).transfer(msg.sender, amountOutHop);\r\n            }\r\n        }\r\n\r\n        _burn(msg.sender, burnAmountAfterFee);\r\n        emit Burn(msg.sender, burnAmountAfterFee);\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the agent address associated with a user.\r\n     * @param _user The user's address.\r\n     * @return The agent address.\r\n     */\r\n    function getAgentAddress(address _user) external view returns (address) {\r\n        address agentFactory = registry.getBaluniAgentFactory();\r\n        return IBaluniV1AgentFactory(agentFactory).getAgentAddress(_user);\r\n    }\r\n\r\n    /**\r\n     * @dev Mints a specified amount of BALUNI tokens in exchange for USDC.\r\n     * @param balAmountToMint The amount of BALUNI tokens to mint.\r\n     */\r\n    function mintWithUSDC(uint256 balAmountToMint) public nonReentrant {\r\n        address treasury = registry.getTreasury();\r\n        address USDC = registry.getUSDC();\r\n        uint256 _BPS_FEE = registry.getBPS_FEE();\r\n        uint256 _BPS_BASE = registry.getBPS_BASE();\r\n        uint256 totalUSDValuation = _totalValuationScaled();\r\n        uint256 totalBalSupply = totalSupply();\r\n        uint256 usdcRequired = (balAmountToMint * totalUSDValuation) / totalBalSupply;\r\n        IERC20(USDC).transferFrom(msg.sender, address(this), usdcRequired / 1e12);\r\n        uint256 balance = IERC20(USDC).balanceOf(msg.sender);\r\n        uint256 allowed = IERC20(USDC).allowance(msg.sender, address(this));\r\n\r\n        require(totalBalSupply > 0, 'Total BALUNI supply cannot be zero');\r\n        require(balance >= usdcRequired / 1e12, 'USDC balance is insufficient');\r\n        require(allowed >= usdcRequired / 1e12, 'Check the token allowance');\r\n\r\n        _mint(msg.sender, balAmountToMint);\r\n        emit Mint(msg.sender, balAmountToMint);\r\n\r\n        uint256 fee = ((usdcRequired / 1e12) * _BPS_FEE) / _BPS_BASE;\r\n        IERC20(address(USDC)).transfer(treasury, fee);\r\n    }\r\n\r\n    /**\r\n     * @dev Calls the `rebalance` function of the `rebalancer` contract.\r\n     * @param assets An array of addresses representing the assets to rebalance.\r\n     * @param weights An array of uint256 values representing the weights of the assets.\r\n     * @param sender The address of the sender.\r\n     * @param receiver The address of the receiver.\r\n     * @param limit The maximum number of assets to rebalance.\r\n     */\r\n    function callRebalance(\r\n        address[] calldata assets,\r\n        uint256[] calldata weights,\r\n        address sender,\r\n        address receiver,\r\n        uint256 limit,\r\n        address /* baseAsset */\r\n    ) external {\r\n        address USDC = registry.getUSDC();\r\n        address rebalancer = registry.getBaluniRebalancer();\r\n        uint256[] memory balances = new uint256[](0);\r\n        IBaluniV1Rebalancer(rebalancer).rebalance(balances, assets, weights, limit, sender, receiver, USDC);\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the amount of USDC required to mint a given amount of BAL tokens.\r\n     * @param balAmountToMint The amount of BAL tokens to be minted.\r\n     * @return The amount of USDC required to mint the specified amount of BAL tokens.\r\n     */\r\n    function requiredUSDCtoMint(uint256 balAmountToMint) public view returns (uint256) {\r\n        uint256 totalUSDValuation = _totalValuationScaled();\r\n        uint256 totalBalSupply = totalSupply();\r\n        uint256 usdcRequired = (balAmountToMint * totalUSDValuation) / totalBalSupply;\r\n        return usdcRequired / 1e12;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the token share based on the total Baluni supply, total ERC20 balance, Baluni amount, and token decimals.\r\n     * @param totalBaluni The total supply of Baluni tokens.\r\n     * @param totalERC20Balance The total balance of the ERC20 token.\r\n     * @param baluniAmount The amount of Baluni tokens.\r\n     * @param tokenDecimals The number of decimals for the ERC20 token.\r\n     * @return The calculated token share.\r\n     */\r\n    function calculateTokenShare(\r\n        uint256 totalBaluni,\r\n        uint256 totalERC20Balance,\r\n        uint256 baluniAmount,\r\n        uint256 tokenDecimals\r\n    ) external pure returns (uint256) {\r\n        return _calculateERC20Share(totalBaluni, totalERC20Balance, baluniAmount, tokenDecimals);\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the valuation of a given amount of a specific ERC20 token.\r\n     * @param amount The amount of the ERC20 token.\r\n     * @param token The address of the ERC20 token.\r\n     * @return The calculated valuation of the ERC20 token.\r\n     */\r\n    function tokenValuation(uint256 amount, address token) external view returns (uint256) {\r\n        address baluniOracle = registry.getBaluniOracle();\r\n        return IBaluniV1Oracle(baluniOracle).convertScaled(token, baseAsset, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the total valuation of the Baluni ecosystem.\r\n     * @return The total valuation of the Baluni ecosystem.\r\n     */\r\n    function totalValuation() external view returns (uint256) {\r\n        return _totalValuationScaled();\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the value of a given amount of Baluni tokens in USDC.\r\n     * @param amount The amount of Baluni tokens.\r\n     * @return The calculated value of the Baluni tokens in USDC.\r\n     */\r\n    function getUSDCShareValue(uint256 amount) external view returns (uint256) {\r\n        return _calculateBaluniToUSDC(amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the valuation of an ERC20 token based on the amount and token address.\r\n     * @param amount The amount of the token.\r\n     * @param token The address of the token.\r\n     * @return valuation The valuation of the token.\r\n     */\r\n    function _calculateERC20ValuationScaled(uint256 amount, address token) internal view returns (uint256 valuation) {\r\n        address baluniOracle = registry.getBaluniOracle();\r\n        return IBaluniV1Oracle(baluniOracle).convertScaled(token, baseAsset, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the equivalent amount of USDC tokens for a given amount of Baluni tokens.\r\n     * @param amount The amount of Baluni tokens to convert.\r\n     * @return shareUSDC The equivalent amount of USDC tokens.\r\n     *\r\n     * Requirements:\r\n     * - The total supply of Baluni tokens must be greater than zero.\r\n     */\r\n    function _calculateBaluniToUSDC(uint256 amount) internal view returns (uint256 shareUSDC) {\r\n        uint256 baseDecimal = IERC20Metadata(baseAsset).decimals();\r\n        uint256 totalBaluni = totalSupply();\r\n        require(totalBaluni > 0, 'Total supply cannot be zero');\r\n        uint256 totalUSDC = _totalValuationScaled();\r\n        shareUSDC = (amount * totalUSDC) / totalBaluni;\r\n        shareUSDC /= 10 ** (18 - baseDecimal);\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the ERC20 share based on the total Baluni supply, total ERC20 balance,\r\n     * Baluni amount, and token decimals.\r\n     * @param totalBaluni The total supply of Baluni tokens.\r\n     * @param totalERC20Balance The total balance of the ERC20 token.\r\n     * @param baluniAmount The amount of Baluni tokens.\r\n     * @param tokenDecimals The number of decimals for the ERC20 token.\r\n     * @return The calculated ERC20 share.\r\n     */\r\n    function _calculateERC20Share(\r\n        uint256 totalBaluni,\r\n        uint256 totalERC20Balance,\r\n        uint256 baluniAmount,\r\n        uint256 tokenDecimals\r\n    ) internal pure returns (uint256) {\r\n        require(totalBaluni > 0, 'Total supply cannot be zero');\r\n        require(tokenDecimals <= 18, 'Token decimals should be <= 18');\r\n        uint256 baluniAdjusted;\r\n        uint256 amountAdjusted;\r\n        uint256 factor = (10 ** (18 - tokenDecimals));\r\n\r\n        if (tokenDecimals < 18) {\r\n            baluniAdjusted = totalBaluni / factor;\r\n            amountAdjusted = baluniAmount / factor;\r\n        } else {\r\n            baluniAdjusted = totalBaluni;\r\n            amountAdjusted = baluniAmount;\r\n        }\r\n\r\n        uint256 result = (amountAdjusted * totalERC20Balance) / baluniAdjusted;\r\n\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the total valuation of the contract by summing up the valuation of each token held.\r\n     * @return The total valuation of the contract.\r\n     */\r\n    function _totalValuationScaled() internal view returns (uint256) {\r\n        uint256 _totalV = 0;\r\n\r\n        for (uint256 i = 0; i < tokens.length(); i++) {\r\n            address token = tokens.at(i);\r\n            uint256 balance = IERC20(token).balanceOf(address(this));\r\n\r\n            if (balance == 0) continue;\r\n\r\n            if (token == baseAsset) {\r\n                _totalV += balance * 1e12;\r\n                continue;\r\n            }\r\n\r\n            address baluniOracle = registry.getBaluniOracle();\r\n            uint256 tokenBalanceValuation = IBaluniV1Oracle(baluniOracle).convertScaled(token, baseAsset, balance);\r\n            require(tokenBalanceValuation > 0, 'Token valuation is zero');\r\n            _totalV += tokenBalanceValuation;\r\n        }\r\n        return _totalV;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the net amount after deducting the fee.\r\n     * @param _amount The input amount.\r\n     * @return The net amount after deducting the fee.\r\n     */\r\n    function _calculateNetAmountAfterFee(uint256 _amount) internal view returns (uint256) {\r\n        uint256 _BPS_FEE = registry.getBPS_FEE();\r\n        uint256 _BPS_BASE = registry.getBPS_BASE();\r\n        uint256 amountInWithFee = (_amount * (_BPS_BASE - (_BPS_FEE))) / _BPS_BASE;\r\n        return amountInWithFee;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the version of the contract.\r\n     * @return The version string.\r\n     */\r\n    function getVersion() external view returns (uint64) {\r\n        return _getInitializedVersion();\r\n    }\r\n\r\n    /**\r\n     * @dev Returns an array of addresses representing the tokens.\r\n     * @return An array of addresses representing the tokens.\r\n     */\r\n    function getTokens() external view returns (address[] memory) {\r\n        return tokens.values();\r\n    }\r\n\r\n    /**\r\n     * @dev Adds a token to the `tokens` set.\r\n     * Can only be called by the contract owner.\r\n     * @param _token The address of the token to be added.\r\n     */\r\n    function addToken(address _token) external onlyOwner {\r\n        EnumerableSetUpgradeable.add(tokens, _token);\r\n    }\r\n\r\n    /**\r\n     * @dev Removes a token from the `tokens` set.\r\n     * Can only be called by the contract owner.\r\n     * @param _token The address of the token to be removed.\r\n     */\r\n    function removeToken(address _token) external onlyOwner {\r\n        EnumerableSetUpgradeable.remove(tokens, _token);\r\n    }\r\n}\r\n"},"contracts/pools/BaluniV1Pool.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\n\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol';\r\n\r\nimport '../interfaces/IBaluniV1PoolPeriphery.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1Rebalancer.sol';\r\nimport '../interfaces/IBaluniV1Oracle.sol';\r\nimport '../interfaces/IBaluniV1Pool.sol';\r\n\r\ncontract BaluniV1Pool is\r\n    Initializable,\r\n    UUPSUpgradeable,\r\n    OwnableUpgradeable,\r\n    ERC20Upgradeable,\r\n    ReentrancyGuardUpgradeable,\r\n    PausableUpgradeable,\r\n    IBaluniV1Pool\r\n{\r\n    // An array to store information about different assets in the pool\r\n    AssetInfo[] public assetInfos;\r\n\r\n    // A constant value representing 1\r\n    uint256 public ONE;\r\n\r\n    // The address of the base asset in the pool\r\n    address public baseAsset;\r\n\r\n    // A scaling factor used in calculations\r\n    uint256 private scalingFactor;\r\n\r\n    // The registry contract used in the BaluniV1 system\r\n    IBaluniV1Registry public registry;\r\n\r\n    /**\r\n     * @dev A mapping that stores the reserves for each address.\r\n     */\r\n    mapping(address => uint256) public reserves;\r\n\r\n    /**\r\n     * @dev Modifier to ensure that the provided deadline is not expired.\r\n     * @param deadline The deadline timestamp to check against the current block timestamp.\r\n     * @dev Throws an error if the deadline is expired.\r\n     */\r\n    modifier ensure(uint256 deadline) {\r\n        require(deadline >= block.timestamp, 'EXPIRED');\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @dev Initializes the BaluniV1Pool contract.\r\n     * @param _assets The array of asset addresses.\r\n     * @param _weights The array of asset weights.\r\n     * @param _registry The address of the BaluniV1Registry contract.\r\n     */\r\n    function initialize(\r\n        string memory _name,\r\n        string memory _symbol,\r\n        address[] memory _assets,\r\n        uint256[] memory _weights,\r\n        address _registry\r\n    ) external initializer {\r\n        __Ownable_init(msg.sender);\r\n        __ERC20_init(_name, _symbol);\r\n        __UUPSUpgradeable_init();\r\n        __ReentrancyGuard_init();\r\n        __Pausable_init();\r\n\r\n        registry = IBaluniV1Registry(_registry);\r\n        ONE = 1e18;\r\n        baseAsset = registry.getUSDC();\r\n        scalingFactor = 10 ** (18 - 6);\r\n\r\n        require(baseAsset != address(0), 'Invalid base asset address');\r\n        require(initializeAssets(_assets, _weights), 'Initialization failed');\r\n\r\n        uint256 totalWeight = 0;\r\n\r\n        for (uint256 i = 0; i < _weights.length; i++) {\r\n            totalWeight += _weights[i];\r\n        }\r\n\r\n        require(totalWeight == 10000, 'Invalid weights');\r\n    }\r\n\r\n    function reinitialize(\r\n        string memory _name,\r\n        string memory _symbol,\r\n        address[] memory _assets,\r\n        uint256[] memory _weights,\r\n        address _registry,\r\n        uint64 _version\r\n    ) external reinitializer(_version) {\r\n        __Ownable_init(msg.sender);\r\n        __ERC20_init(_name, _symbol);\r\n        __UUPSUpgradeable_init();\r\n        __ReentrancyGuard_init();\r\n        __Pausable_init();\r\n\r\n        registry = IBaluniV1Registry(_registry);\r\n        ONE = 1e18;\r\n        baseAsset = registry.getUSDC();\r\n        scalingFactor = 10 ** (18 - 6);\r\n\r\n        // reset assetInfos\r\n\r\n        require(baseAsset != address(0), 'Invalid base asset address');\r\n        require(initializeAssets(_assets, _weights), 'Initialization failed');\r\n\r\n        uint256 totalWeight = 0;\r\n\r\n        for (uint256 i = 0; i < _weights.length; i++) {\r\n            totalWeight += _weights[i];\r\n        }\r\n\r\n        require(totalWeight == 10000, 'Invalid weights');\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\r\n     * @param newImplementation The address of the new implementation contract.\r\n     * @notice This function can only be called by the contract owner.\r\n     */\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    /**\r\n     * @dev Initializes the assets and their weights for the pool.\r\n     * @param _assets The array of asset addresses.\r\n     * @param _weights The array of weights corresponding to each asset.\r\n     */\r\n    function initializeAssets(address[] memory _assets, uint256[] memory _weights) internal returns (bool) {\r\n        address rebalancer = registry.getBaluniRebalancer();\r\n\r\n        require(registry.getBaluniRebalancer() != address(0), 'Invalid rebalancer address');\r\n        require(_assets.length == _weights.length, 'Assets and weights length mismatch');\r\n        // reset asset Infos\r\n        delete assetInfos;\r\n\r\n        for (uint256 i = 0; i < _assets.length; i++) {\r\n            require(_assets[i] != address(0), 'Invalid asset address');\r\n            require(_weights[i] > 0, 'Invalid weight');\r\n\r\n            assetInfos.push(\r\n                AssetInfo({\r\n                    asset: _assets[i],\r\n                    weight: _weights[i],\r\n                    slippage: 0, // Imposta slippage iniziale a 1%\r\n                    reserve: 0\r\n                })\r\n            );\r\n\r\n            IERC20 asset = IERC20(_assets[i]);\r\n            if (asset.allowance(address(this), address(rebalancer)) == 0) {\r\n                asset.approve(address(rebalancer), type(uint256).max);\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Rebalances the weights of the pool by calculating the amounts to add for each token,\r\n     * transferring the calculated amounts from the user to the pool, minting the total added liquidity,\r\n     * updating the reserves, and emitting an event to indicate the rebalancing of weights.\r\n     * @param receiver The address to receive the minted liquidity tokens.\r\n     */\r\n    function rebalanceAndDeposit(address receiver) external override returns (uint256[] memory) {\r\n        require(isRebalanceNeeded(), 'Rebalance not needed');\r\n        (uint256 tVal, uint256[] memory valuations) = _computeTotalValuation();\r\n\r\n        uint256[] memory amountsToAdd = _calculateAmountsToAdd(tVal, valuations);\r\n        uint256[] memory amounts = new uint256[](assetInfos.length);\r\n        uint256 totalAddedLiquidity = _calculateTotalAddedLiquidity(amountsToAdd);\r\n\r\n        totalAddedLiquidity *= scalingFactor;\r\n\r\n        for (uint256 i = 0; i < amountsToAdd.length; i++) {\r\n            if (amountsToAdd[i] > 0) {\r\n                amounts[i] = _calculateLiquidity(i, amountsToAdd[i]);\r\n                IERC20(assetInfos[i].asset).transferFrom(msg.sender, address(this), amountsToAdd[i]);\r\n            }\r\n        }\r\n\r\n        _mint(receiver, totalAddedLiquidity);\r\n\r\n        _updateSlippage();\r\n        _update();\r\n\r\n        emit WeightsRebalanced(msg.sender, amountsToAdd);\r\n\r\n        return amounts;\r\n    }\r\n\r\n    /**\r\n     * @dev Swaps `amount` of `fromToken` to `toToken` and transfers the received amount to `receiver`.\r\n     *\r\n     * Requirements:\r\n     * - `fromToken` and `toToken` must be different tokens.\r\n     * - `amount` must be greater than zero.\r\n     * - Sufficient liquidity of `toToken` must be available in the contract.\r\n     *\r\n     * Emits a `Swap` event with the details of the swap.\r\n     *\r\n     * Updates the reserves after the swap.\r\n     *\r\n     * @param fromToken The address of the token to swap from.\r\n     * @param toToken The address of the token to swap to.\r\n     * @param amount The amount of `fromToken` to swap.\r\n     * @param receiver The address to receive the swapped tokens.\r\n     * @return amountOut The amount of `toToken` received after the swap.\r\n     */\r\n    function swap(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount,\r\n        uint256 minAmount,\r\n        address receiver,\r\n        uint256 deadline\r\n    ) external override ensure(deadline) nonReentrant returns (uint256 amountOut, uint256 fee) {\r\n        require(fromToken != address(0) && toToken != address(0), 'Invalid token address');\r\n        require(fromToken != toToken, 'Cannot swap the same token');\r\n        require(amount > 0, 'Amount must be greater than zero');\r\n        require(receiver != address(0), 'Invalid receiver address');\r\n\r\n        bool transferInSuccess = IERC20(fromToken).transferFrom(msg.sender, address(this), amount);\r\n        require(transferInSuccess, 'Token transfer failed');\r\n\r\n        uint256 receivedAmount = quotePotentialSwap(fromToken, toToken, amount);\r\n        require(getAssetReserve(toToken) >= receivedAmount, 'Insufficient Liquidity');\r\n\r\n        fee = _haircut(receivedAmount);\r\n        amountOut = receivedAmount - fee;\r\n        require(amountOut > 0, 'Amount to send must be greater than 0');\r\n        require(amountOut >= minAmount, 'Amount out must be greater than min amount');\r\n\r\n        bool transferOutSuccess = IERC20(toToken).transfer(receiver, amountOut);\r\n        require(transferOutSuccess, 'Token transfer failed');\r\n\r\n        _updateSlippage();\r\n        _update();\r\n\r\n        emit Swap(receiver, fromToken, toToken, amount, amountOut);\r\n\r\n        return (amountOut, fee);\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the potential amount of `toToken` that can be obtained by swapping `amount` of `fromToken`.\r\n     * This function takes into account the slippage and token weights to provide an accurate estimation.\r\n     *\r\n     * @param fromToken The address of the token being swapped from.\r\n     * @param toToken The address of the token being swapped to.\r\n     * @param amount The amount of `fromToken` being swapped.\r\n     *\r\n     * @return The potential amount of `toToken` that can be obtained.\r\n     */\r\n    function quotePotentialSwap(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 amount\r\n    ) public view override returns (uint256) {\r\n        uint256 amountOut = getAmountOut(fromToken, toToken, amount);\r\n\r\n        uint256 slippageFrom = getSlippage(fromToken);\r\n        uint256 slippageTo = getSlippage(toToken);\r\n\r\n        uint256 fromTokenWeight = getTokenWeight(fromToken);\r\n        uint256 toTokenWeight = getTokenWeight(toToken);\r\n\r\n        uint256 slippageFromAmount = ((amountOut * slippageFrom)) / 10000;\r\n        uint256 slippageToAmount = (amountOut * slippageTo) / 10000;\r\n\r\n        if (fromTokenWeight > getDeviationForToken(fromToken)) {\r\n            amountOut = amountOut - slippageFromAmount;\r\n        } else {\r\n            amountOut = amountOut + slippageFromAmount;\r\n        }\r\n\r\n        if (toTokenWeight < getDeviationForToken(toToken)) {\r\n            amountOut = amountOut + slippageToAmount;\r\n        } else {\r\n            amountOut = amountOut - slippageToAmount;\r\n        }\r\n\r\n        return amountOut;\r\n    }\r\n\r\n    /**\r\n     * @dev Restituisce lo slippage attuale per un dato token.\r\n     * @param token The address of the token.\r\n     * @return Lo slippage attuale per il token.\r\n     */\r\n    function getSlippage(address token) public view override returns (uint256) {\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            if (assetInfos[i].asset == token) {\r\n                return assetInfos[i].slippage;\r\n            }\r\n        }\r\n        return 0; // Default slippage se non trovato\r\n    }\r\n\r\n    /**\r\n     * @dev Updates the slippage for each asset in the pool based on the deviations.\r\n     * @notice This function is internal and should only be called within the contract.\r\n     */\r\n    function _updateSlippage() internal {\r\n        (bool[] memory directions, uint256[] memory deviations) = getDeviations();\r\n\r\n        uint256 sdf = 100;\r\n        uint256 slippageLimit = 10;\r\n\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            uint256 previousSlippage = assetInfos[i].slippage;\r\n\r\n            if (deviations[i] <= sdf) {\r\n                assetInfos[i].slippage = slippageLimit;\r\n                continue;\r\n            }\r\n\r\n            if (directions[i]) {\r\n                assetInfos[i].slippage += deviations[i] / sdf;\r\n                require(assetInfos[i].slippage >= previousSlippage, 'Overflow incrementing slippage');\r\n            } else {\r\n                if (assetInfos[i].slippage > deviations[i] / sdf) {\r\n                    assetInfos[i].slippage -= deviations[i] / sdf;\r\n                    require(assetInfos[i].slippage <= previousSlippage, 'Underflow decrementing slippage');\r\n                } else {\r\n                    assetInfos[i].slippage += deviations[i] / sdf;\r\n                }\r\n            }\r\n\r\n            // Limita lo slippage al massimo consentito\r\n            if (assetInfos[i].slippage > slippageLimit) {\r\n                assetInfos[i].slippage = slippageLimit;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the weight of a token in the pool.\r\n     * @param token The address of the token.\r\n     * @return The weight of the token.\r\n     */\r\n    function getTokenWeight(address token) public view override returns (uint256) {\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            if (assetInfos[i].asset == token) {\r\n                return assetInfos[i].weight;\r\n            }\r\n        }\r\n        return 0; // Default weight if not found\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the deviation for a token in the pool.\r\n     * @param token The address of the token.\r\n     * @return The deviation for the token.\r\n     */\r\n    function getDeviationForToken(address token) public view override returns (uint256) {\r\n        (, uint256[] memory deviations) = getDeviations();\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            if (assetInfos[i].asset == token) {\r\n                return deviations[i];\r\n            }\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns an array of slippage parameters for each token in the pool.\r\n     * @return An array of slippage parameters.\r\n     */\r\n    function getSlippageParams() external view override returns (uint256[] memory) {\r\n        uint256[] memory slippages = new uint256[](assetInfos.length);\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            slippages[i] = assetInfos[i].slippage;\r\n        }\r\n        return slippages;\r\n    }\r\n\r\n    /**\r\n     * @dev Mints new tokens and adds them to the specified address.\r\n     * @param to The address to which the new tokens will be minted.\r\n     * @return The amount of tokens minted.\r\n     */\r\n    function deposit(\r\n        address to,\r\n        uint256[] memory amounts,\r\n        uint256 deadline\r\n    ) external override ensure(deadline) nonReentrant whenNotPaused returns (uint256) {\r\n        uint256 totalSupply = totalSupply();\r\n        uint256 totalValue = 0;\r\n        uint256[] memory _reserves = getReserves();\r\n        require(assetInfos.length == _reserves.length, 'Invalid reserves length');\r\n        require(assetInfos.length > 0, 'No assets');\r\n\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            address asset = assetInfos[i].asset;\r\n            bool success = IERC20(asset).transferFrom(msg.sender, address(this), amounts[i]);\r\n            require(success, 'BaluniV1Pool: Transfer from failed');\r\n\r\n            uint256 valuation;\r\n\r\n            if (asset == baseAsset) {\r\n                valuation = amounts[i];\r\n                totalValue += valuation;\r\n                continue;\r\n            }\r\n\r\n            valuation = _convertTokenToBase(asset, amounts[i]);\r\n            totalValue += valuation;\r\n        }\r\n\r\n        require(totalValue > 0, 'Total value must be greater than 0');\r\n\r\n        uint256 toMint;\r\n\r\n        if (totalSupply == 0) {\r\n            toMint = totalValue * scalingFactor;\r\n        } else {\r\n            (uint256 totalLiquidity, ) = _computeTotalValuation();\r\n            require(totalLiquidity > 0, 'Total liquidity must be greater than 0');\r\n            toMint = ((totalValue * scalingFactor) * totalSupply) / (totalLiquidity * scalingFactor);\r\n        }\r\n\r\n        require(toMint != 0, 'Mint qty is 0');\r\n\r\n        _mint(to, toMint);\r\n\r\n        _updateSlippage();\r\n        _update();\r\n\r\n        emit Deposit(to, toMint);\r\n\r\n        return toMint;\r\n    }\r\n\r\n    /**\r\n     * @dev Burns the pool tokens and transfers the underlying assets to the specified address.\r\n     * @param to The address to transfer the underlying assets to.\r\n     * @notice This function can only be called by the periphery contract.\r\n     * @notice The pool tokens must have a balance greater than 0.\r\n     * @notice The total supply of pool tokens must be greater than 0.\r\n     * @notice The function calculates the amounts of each underlying asset to transfer based on the share of pool tokens being burned.\r\n     * @notice A fee is deducted from the share of pool tokens being burned and transferred to the treasury address.\r\n     * @notice The function checks if the pool has sufficient liquidity before performing any transfers.\r\n     * @notice If any transfer fails, the function reverts the entire operation.\r\n     * @notice After the transfers, the function updates the reserves of the pool.\r\n     * @notice Emits a `Burn` event with the address and share of pool tokens burned.\r\n     */\r\n    function withdraw(\r\n        uint256 share,\r\n        address to,\r\n        uint256 deadline\r\n    ) external override ensure(deadline) nonReentrant whenNotPaused returns (uint256) {\r\n        require(to != address(0), 'Invalid address');\r\n        require(share > 0, 'Share must be greater than 0');\r\n\r\n        uint256 allowance = IERC20(address(this)).allowance(msg.sender, address(this));\r\n        require(allowance >= share, 'BaluniV1Pool: Insufficient Allowance');\r\n\r\n        bool transferResult = IERC20(address(this)).transferFrom(msg.sender, address(this), share);\r\n        require(transferResult, 'Transfer From Failed');\r\n\r\n        uint256 totalSupply = totalSupply();\r\n        require(totalSupply > 0, 'No liquidity');\r\n\r\n        address treasury = registry.getTreasury();\r\n        require(treasury != address(0), 'Invalid treasury address');\r\n\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            uint256 amountToSend = calculateAssetShare(share)[i];\r\n            require(\r\n                IERC20(assetInfos[i].asset).balanceOf(address(this)) >= amountToSend,\r\n                'BaluniV1Pool: Insufficient Asset Balance'\r\n            );\r\n\r\n            uint256 fee = _haircut(amountToSend);\r\n            amountToSend -= fee;\r\n            bool transferProtocolSuccess = IERC20(assetInfos[i].asset).transfer(treasury, fee);\r\n            require(transferProtocolSuccess, 'BaluniV1Pool: Fee Transfer Failed');\r\n\r\n            bool transferSuccess = IERC20(assetInfos[i].asset).transfer(to, amountToSend);\r\n            require(transferSuccess, 'Asset transfer failed');\r\n        }\r\n\r\n        require(balanceOf(address(this)) >= share, 'Insufficient BALUNI liquidity');\r\n\r\n        _burn(address(this), share);\r\n\r\n        _updateSlippage();\r\n        _update();\r\n\r\n        emit Withdraw(to, share);\r\n\r\n        return share;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the asset shares based on the provided share amount.\r\n     * @param share The share amount to calculate the asset shares for.\r\n     * @return An array of asset shares corresponding to each asset in the pool.\r\n     */\r\n    function calculateAssetShare(uint256 share) public view returns (uint256[] memory) {\r\n        uint256 fee = _haircut(share);\r\n        uint256 shareAfterFee = share - fee;\r\n        uint256[] memory assetShares = new uint256[](assetInfos.length);\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            uint256 assetBalance = IERC20(assetInfos[i].asset).balanceOf(address(this));\r\n            assetShares[i] = (assetBalance * shareAfterFee) / totalSupply();\r\n        }\r\n        return assetShares;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the fee amount based on the provided amount using the haircut formula.\r\n     * @param amount The amount to calculate the fee for.\r\n     * @return The fee amount.\r\n     */\r\n    function _haircut(uint256 amount) internal view returns (uint256) {\r\n        uint256 _BPS_FEE = registry.getBPS_FEE();\r\n        uint256 _BPS_BASE = registry.getBPS_BASE();\r\n        return (amount * _BPS_FEE) / _BPS_BASE;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the amount of `toToken` that will be received when swapping `fromToken` for `toToken`.\r\n     * @param fromToken The address of the token being swapped from.\r\n     * @param toToken The address of the token being swapped to.\r\n     * @param amount The amount of `fromToken` being swapped.\r\n     * @return The amount of `toToken` that will be received.\r\n     */\r\n    function getAmountOut(address fromToken, address toToken, uint256 amount) public view override returns (uint256) {\r\n        IBaluniV1Oracle baluniOracle = IBaluniV1Oracle(registry.getBaluniOracle());\r\n        require(registry.getBaluniOracle() != address(0), 'Invalid oracle address');\r\n        uint256 amountOut = baluniOracle.convert(fromToken, toToken, amount);\r\n        return amountOut;\r\n    }\r\n\r\n    /**\r\n     * @dev Performs rebalance\r\n     */\r\n    function rebalance() external override {\r\n        require(isRebalanceNeeded(), 'Rebalance not needed');\r\n        return _performRebalanceIfNeeded();\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the deviation between the current weights and target weights of the assets in the pool.\r\n     * @return directions An array of boolean values indicating whether the current weight is higher (true) or lower (false) than the target weight.\r\n     */\r\n    function getDeviations() public view override returns (bool[] memory directions, uint256[] memory deviations) {\r\n        (uint256 totVal, uint256[] memory valuations) = _computeTotalValuation();\r\n        uint256 numAssets = assetInfos.length;\r\n\r\n        directions = new bool[](numAssets);\r\n        deviations = new uint256[](numAssets);\r\n\r\n        for (uint256 i = 0; i < numAssets; i++) {\r\n            uint256 currentWeight = (valuations[i] * 10000) / totVal;\r\n            uint256 targetWeight = assetInfos[i].weight;\r\n\r\n            if (currentWeight > targetWeight) {\r\n                deviations[i] = currentWeight - targetWeight;\r\n                directions[i] = true;\r\n            } else {\r\n                deviations[i] = targetWeight - currentWeight;\r\n                directions[i] = false;\r\n            }\r\n        }\r\n\r\n        return (directions, deviations);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the liquidity of a specific asset in the pool.\r\n     * @param assetIndex The index of the asset.\r\n     * @return The liquidity of the asset.\r\n     */\r\n    function assetLiquidity(uint256 assetIndex) external view override returns (uint256) {\r\n        (, uint256[] memory usdValuations) = _computeTotalValuation();\r\n        require(assetIndex < usdValuations.length, 'Invalid asset index');\r\n        return usdValuations[assetIndex];\r\n    }\r\n\r\n    /**\r\n     * @dev Computes the total valuation of the pool and returns the total valuation and an array of individual valuations.\r\n     * @return totalVal The total valuation of the pool.\r\n     * @return valuations An array of individual valuations.\r\n     */\r\n    function totalValuation() external view override returns (uint256 totalVal, uint256[] memory valuations) {\r\n        (totalVal, valuations) = _computeTotalValuation();\r\n        return (totalVal, valuations);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the total liquidity of the pool.\r\n     * @return The total liquidity of the pool.\r\n     */\r\n    function liquidity() external view override returns (uint256) {\r\n        (uint256 totalVal, ) = _computeTotalValuation();\r\n        return totalVal;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the unit price of the pool.\r\n     * @return The unit price of the pool.\r\n     */\r\n    function unitPrice() external view override returns (uint256) {\r\n        uint256 baseDecimal = IERC20Metadata(baseAsset).decimals();\r\n        uint256 factor = 10 ** (18 - baseDecimal);\r\n        uint256 supply = totalSupply();\r\n\r\n        if (supply == 0) {\r\n            return 0;\r\n        }\r\n\r\n        (uint256 tVal, ) = _computeTotalValuation();\r\n\r\n        if (tVal == 0) {\r\n            return 0;\r\n        }\r\n\r\n        // Ensure scaling is done properly to avoid precision loss\r\n        uint256 scaledTotalVal = tVal * factor;\r\n        uint256 unitPriceScaledDown = (scaledTotalVal * ONE) / supply;\r\n\r\n        return unitPriceScaledDown;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns an array of reserves for each asset in the pool.\r\n     * @return An array of reserves.\r\n     */\r\n    function getReserves() public view override returns (uint256[] memory) {\r\n        uint256[] memory _reserves = new uint256[](assetInfos.length);\r\n\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            _reserves[i] = IERC20(assetInfos[i].asset).balanceOf(address(this));\r\n        }\r\n\r\n        return _reserves;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the reserve amount of the specified asset.\r\n     * @param asset The address of the asset.\r\n     * @return The reserve amount of the asset.\r\n     */\r\n    function getAssetReserve(address asset) public view override returns (uint256) {\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            if (asset == assetInfos[i].asset) return IERC20(asset).balanceOf(address(this));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the list of assets in the pool.\r\n     * @return An array of addresses representing the assets.\r\n     */\r\n    function getAssets() public view override returns (address[] memory) {\r\n        address[] memory assets = new address[](assetInfos.length);\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            assets[i] = assetInfos[i].asset;\r\n        }\r\n        return assets;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the list of weights associated with the assets in the pool.\r\n     * @return An array of uint256 values representing the weights.\r\n     */\r\n    function getWeights() public view override returns (uint256[] memory) {\r\n        uint256[] memory weights = new uint256[](assetInfos.length);\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            weights[i] = assetInfos[i].weight;\r\n        }\r\n        return weights;\r\n    }\r\n\r\n    /**\r\n     * @dev Checks if rebalancing is needed for the pool.\r\n     * @return A boolean value indicating whether rebalancing is needed or not.\r\n     */\r\n    function isRebalanceNeeded() public view returns (bool) {\r\n        uint256 rebalance_threshold = registry.getREBALANCE_THRESHOLD();\r\n        (bool[] memory directions, uint256[] memory deviations) = getDeviations();\r\n        for (uint256 i = 0; i < deviations.length; i++) {\r\n            if (directions[i] && deviations[i] > rebalance_threshold) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * @dev Computes the total valuation of the assets in the pool.\r\n     * @return tVal The total valuation of the assets.\r\n     * @return valuations An array of valuations for each asset in the pool.\r\n     */\r\n    function _computeTotalValuation() internal view returns (uint256 tVal, uint256[] memory valuations) {\r\n        uint256 numAssets = assetInfos.length;\r\n        valuations = new uint256[](numAssets);\r\n        for (uint256 i = 0; i < numAssets; i++) {\r\n            address asset = assetInfos[i].asset;\r\n            uint256 assetReserve = getAssetReserve(address(asset));\r\n\r\n            if (assetReserve == 0) continue;\r\n\r\n            if ((address(asset) == baseAsset)) {\r\n                valuations[i] = assetReserve;\r\n            } else {\r\n                uint256 valuation = _convertTokenToBase(address(asset), assetReserve);\r\n                valuations[i] = valuation;\r\n            }\r\n            tVal += valuations[i];\r\n        }\r\n        return (tVal, valuations);\r\n    }\r\n\r\n    /**\r\n     * @dev Performs rebalance if needed.\r\n     * This function retrieves the assets and weights from the `assetInfos` array,\r\n     * and calls the `rebalance` function of the `rebalancer` contract with the retrieved values.\r\n     * It emits a `RebalancePerformed` event after the rebalance is performed.\r\n     * @notice This function should only be called internally.\r\n     */\r\n    function _performRebalanceIfNeeded() internal {\r\n        address rebalancer = registry.getBaluniRebalancer();\r\n        address[] memory assets = getAssets();\r\n        uint256[] memory weights = getWeights();\r\n\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            uint256 allowance = IERC20(assetInfos[i].asset).allowance(address(this), rebalancer);\r\n            if (allowance < type(uint256).max) {\r\n                IERC20(assetInfos[i].asset).approve(rebalancer, type(uint256).max);\r\n            }\r\n        }\r\n\r\n        uint256[] memory balances = getReserves();\r\n        uint256 rebalance_threshold = registry.getREBALANCE_THRESHOLD();\r\n        IBaluniV1Rebalancer(rebalancer).rebalance(\r\n            balances,\r\n            assets,\r\n            weights,\r\n            rebalance_threshold,\r\n            address(this),\r\n            address(this),\r\n            baseAsset\r\n        );\r\n\r\n        _updateSlippage();\r\n        _update();\r\n\r\n        emit RebalancePerformed(msg.sender, assets);\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the total added liquidity based on the amounts to add.\r\n     * @param amountsToAdd An array of amounts to add for each asset.\r\n     * @return totalAddedLiquidity The total added liquidity.\r\n     */\r\n    function _calculateTotalAddedLiquidity(\r\n        uint256[] memory amountsToAdd\r\n    ) internal view returns (uint256 totalAddedLiquidity) {\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            totalAddedLiquidity += amountsToAdd[i];\r\n        }\r\n        return totalAddedLiquidity;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the amounts to add to each asset based on the total valuation and current valuations.\r\n     * @param tVal The total valuation of the pool.\r\n     * @param valuations An array of current valuations for each asset.\r\n     * @return amountsToAdd An array of amounts to add to each asset.\r\n     */\r\n    function _calculateAmountsToAdd(\r\n        uint256 tVal,\r\n        uint256[] memory valuations\r\n    ) internal view returns (uint256[] memory amountsToAdd) {\r\n        amountsToAdd = new uint256[](assetInfos.length);\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            uint256 targetValuation = (tVal * assetInfos[i].weight) / 10000;\r\n            if (valuations[i] < targetValuation) {\r\n                amountsToAdd[i] = targetValuation - valuations[i];\r\n            }\r\n        }\r\n\r\n        return amountsToAdd;\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to transfer tokens from the caller to the contract and calculate the liquidity.\r\n     * @param index The index of the asset in the assetInfos array.\r\n     * @param amountToAdd The amount of native tokens to add as liquidity.\r\n     */\r\n    function _calculateLiquidity(uint256 index, uint256 amountToAdd) internal view returns (uint256) {\r\n        if (assetInfos[index].asset == baseAsset) return amountToAdd;\r\n        uint256 tokenAmount = _convertBaseToToken(assetInfos[index].asset, amountToAdd);\r\n        require(tokenAmount > 0, 'Invalid token amount to add');\r\n        return tokenAmount;\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the specified amount of native token to the corresponding token amount.\r\n     * @param toToken The address of the native token to convert from.\r\n     * @param amount The amount of native token to convert.\r\n     * @return The corresponding token amount.\r\n     */\r\n    function _convertBaseToToken(address toToken, uint256 amount) internal view returns (uint256) {\r\n        return getAmountOut(baseAsset, toToken, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Converts the specified token to the native token using the rebalancer contract.\r\n     * @param fromToken The address of the token to convert from.\r\n     * @param amount The amount of tokens to convert.\r\n     * @return tokenAmount The converted amount of tokens.\r\n     */\r\n    function _convertTokenToBase(address fromToken, uint256 amount) internal view returns (uint256 tokenAmount) {\r\n        return getAmountOut(fromToken, baseAsset, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Generates the name for the pool token based on the symbols of the assets.\r\n     * @param _assets The array of asset addresses.\r\n     * @return The generated token name.\r\n     */\r\n    function generateTokenName(address[] memory _assets) internal pure returns (string memory) {\r\n        string memory name = 'Baluni Liquidity Pool';\r\n        return name;\r\n    }\r\n\r\n    /**\r\n     * @dev Generates the symbol for the pool token based on the symbols of the assets.\r\n     * @param _assets The array of asset addresses.\r\n     * @return The generated token symbol.\r\n     */\r\n    function generateTokenSymbol(address[] memory _assets) internal view returns (string memory) {\r\n        string memory symbol = 'bLP-';\r\n        for (uint256 i = 0; i < _assets.length; i++) {\r\n            if (i == 0) {\r\n                symbol = string(abi.encodePacked(symbol, IERC20Metadata(_assets[i]).symbol()));\r\n            } else {\r\n                symbol = string(abi.encodePacked(symbol, '-', IERC20Metadata(_assets[i]).symbol()));\r\n            }\r\n        }\r\n        return symbol;\r\n    }\r\n\r\n    /**\r\n     * @dev pause pool, restricting certain operations\r\n     */\r\n    function pause() external onlyOwner {\r\n        _pause();\r\n    }\r\n\r\n    /**\r\n     * @dev unpause pool, enabling certain operations\r\n     */\r\n    function unpause() external onlyOwner {\r\n        _unpause();\r\n    }\r\n\r\n    function _update() internal {\r\n        for (uint256 i = 0; i < assetInfos.length; i++) {\r\n            assetInfos[i].reserve = IERC20(assetInfos[i].asset).balanceOf(address(this));\r\n        }\r\n    }\r\n}\r\n"},"contracts/pools/BaluniV1PoolPeriphery.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\n\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\n\r\nimport '../interfaces/IBaluniV1PoolRegistry.sol';\r\nimport '../interfaces/IBaluniV1PoolPeriphery.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1Pool.sol';\r\n\r\n/**\r\n * @title BaluniV1PoolPeriphery\r\n * @dev This contract serves as the periphery contract for interacting with BaluniV1Pool contracts.\r\n */\r\ncontract BaluniV1PoolPeriphery is\r\n    Initializable,\r\n    OwnableUpgradeable,\r\n    UUPSUpgradeable,\r\n    ReentrancyGuardUpgradeable,\r\n    IBaluniV1PoolPeriphery\r\n{\r\n    IBaluniV1Registry public registry;\r\n\r\n    mapping(address => mapping(address => uint256)) public poolsReserves; // Mapping of token address to pool addresses (for quick lookup\r\n\r\n    modifier ensure(uint256 deadline) {\r\n        require(deadline >= block.timestamp, 'EXPIRED');\r\n        _;\r\n    }\r\n\r\n    function initialize(address _registry) public initializer {\r\n        __UUPSUpgradeable_init();\r\n        __Ownable_init(msg.sender);\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\r\n        registry = IBaluniV1Registry(_registry);\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\r\n     * @param newImplementation The address of the new implementation contract.\r\n     * @notice This function can only be called by the contract owner.\r\n     */\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    /**\r\n     * @dev Swaps tokens using a Baluni V1 pool.\r\n     * @param fromToken The address of the token to swap from.\r\n     * @param toToken The address of the token to swap to.\r\n     * @param fromAmount The amount of tokens to swap from.\r\n     * @param minAmount The minimum amount of tokens to receive in the swap.\r\n     * @param from The address from which the tokens are being swapped.\r\n     * @param to The address to which the tokens are being swapped.\r\n     * @param deadline The deadline by which the swap must be executed.\r\n     * @return amountOut The amount of tokens received in the swap.\r\n     * @return haircut The haircut applied to the swap.\r\n     */\r\n    function swapTokenForToken(\r\n        address fromToken,\r\n        address toToken,\r\n        uint256 fromAmount,\r\n        uint256 minAmount,\r\n        address from,\r\n        address to,\r\n        uint deadline\r\n    ) public override ensure(deadline) nonReentrant returns (uint256 amountOut, uint256 haircut) {\r\n        IBaluniV1PoolRegistry poolRegistry = IBaluniV1PoolRegistry(registry.getBaluniPoolRegistry());\r\n        require(fromAmount > 0, 'Amount must be greater than zero');\r\n        address poolAddress = poolRegistry.getPoolByAssets(fromToken, toToken);\r\n        require(poolAddress != address(0), 'BaluniV1PoolPeriphery: Pool not found');\r\n        IERC20(fromToken).transferFrom(from, address(this), fromAmount);\r\n\r\n        address[] memory tokenPath = new address[](2);\r\n        tokenPath[0] = fromToken;\r\n        tokenPath[1] = toToken;\r\n\r\n        address[] memory poolPath = new address[](1);\r\n        poolPath[0] = poolAddress;\r\n\r\n        (amountOut, haircut) = _swap(tokenPath, poolPath, fromAmount, to);\r\n        require(amountOut >= minAmount, 'amountOut too low');\r\n\r\n        return (amountOut, haircut);\r\n    }\r\n\r\n    /**\r\n     * @dev Swaps tokens for tokens using a specified token path and pool path.\r\n     * @param tokenPath The array of token addresses representing the path of tokens to swap.\r\n     * @param poolPath The array of pool addresses representing the path of pools to use for swapping.\r\n     * @param fromAmount The amount of tokens to swap from.\r\n     * @param minimumToAmount The minimum amount of tokens to receive after swapping.\r\n     * @param to The address to receive the swapped tokens.\r\n     * @param deadline The deadline for the swap to occur.\r\n     * @return amountOut The amount of tokens received after swapping.\r\n     * @return haircut The amount of tokens deducted as a fee during the swap.\r\n     */\r\n    function swapTokensForTokens(\r\n        address[] memory tokenPath,\r\n        address[] memory poolPath,\r\n        uint256 fromAmount,\r\n        uint256 minimumToAmount,\r\n        address to,\r\n        uint256 deadline\r\n    ) external override ensure(deadline) nonReentrant returns (uint256 amountOut, uint256 haircut) {\r\n        require(fromAmount > 0, 'invalid from amount');\r\n        require(tokenPath.length >= 2, 'invalid token path');\r\n        require(poolPath.length == tokenPath.length - 1, 'invalid pool path');\r\n        require(to != address(0), 'zero address');\r\n\r\n        // get from token from users\r\n        IERC20(tokenPath[0]).transferFrom(address(msg.sender), address(this), fromAmount);\r\n\r\n        (amountOut, haircut) = _swap(tokenPath, poolPath, fromAmount, to);\r\n        require(amountOut >= minimumToAmount, 'amountOut too low');\r\n    }\r\n\r\n    /// @notice _swap private function. Assumes router has initial fromAmount in balance.\r\n    /// @dev assumes tokens being swapped have been approve via the approveSpendingByPool function\r\n    /// @param tokenPath An array of token addresses. path.length must be >= 2.\r\n    /// @param tokenPath The first element of the path is the input token, the last element is the output token.\r\n    /// @param poolPath An array of pool addresses. The pools where the pathTokens are contained in order.\r\n    /// @param fromAmount the amount in\r\n    /// @param to the user to send the tokens to\r\n    /// @return amountOut received by user\r\n    /// @return haircut total fee charged by pool\r\n    function _swap(\r\n        address[] memory tokenPath,\r\n        address[] memory poolPath,\r\n        uint256 fromAmount,\r\n        address to\r\n    ) internal returns (uint256 amountOut, uint256 haircut) {\r\n        // haircut of current call\r\n        uint256 localHaircut;\r\n        // next from amount, starts with fromAmount in arg\r\n        uint256 nextFromAmount = fromAmount;\r\n        // where to send tokens on next step\r\n        address nextTo;\r\n\r\n        for (uint256 i; i < poolPath.length; ++i) {\r\n            // check if we're reaching the beginning or end of the poolPath array\r\n            if (i == 0 && poolPath.length == 1) {\r\n                // only one element in pool path - simple swap\r\n                nextTo = to;\r\n            } else if (i == 0) {\r\n                // first element of a larger than one poolPath\r\n                nextTo = address(this);\r\n            } else if (i < poolPath.length - 1) {\r\n                // middle element of a larger than one poolPath\r\n                nextTo = address(this);\r\n                nextFromAmount = amountOut;\r\n            } else {\r\n                // send final swapped tokens to user\r\n                nextTo = to;\r\n                nextFromAmount = amountOut;\r\n            }\r\n\r\n            uint256 allowance = IERC20(tokenPath[i]).allowance(address(this), poolPath[i]);\r\n\r\n            if (nextFromAmount >= allowance) {\r\n                IERC20(tokenPath[i]).approve(poolPath[i], nextFromAmount);\r\n            }\r\n\r\n            // make the swap with the correct arguments\r\n            (amountOut, localHaircut) = IBaluniV1Pool(poolPath[i]).swap(\r\n                tokenPath[i],\r\n                tokenPath[i + 1],\r\n                nextFromAmount,\r\n                0, // minimum amount received is ensured on calling function\r\n                nextTo,\r\n                type(uint256).max // deadline is ensured on calling function\r\n            );\r\n            // increment total haircut\r\n            haircut += localHaircut * 10 ** (18 - IERC20Metadata(tokenPath[i + 1]).decimals());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @notice Quotes potential outcome of a swap given current tokenPath and poolPath,\r\n     taking in account slippage and haircut\r\n     * @dev To be used by frontend\r\n     * @param tokenPath The token swap path\r\n     * @param poolPath The token pool path\r\n     * @param fromAmount The amount to quote\r\n     * @return potentialOutcome The potential final amount user would receive\r\n     * @return haircut The total haircut that would be applied\r\n     */\r\n    function quotePotentialSwaps(\r\n        address[] memory tokenPath,\r\n        address[] memory poolPath,\r\n        uint256 fromAmount\r\n    ) external view returns (uint256 potentialOutcome, uint256 haircut) {\r\n        require(fromAmount > 0, 'invalid from amount');\r\n        require(tokenPath.length >= 2, 'invalid token path');\r\n        require(poolPath.length == tokenPath.length - 1, 'invalid pool path');\r\n\r\n        // haircut of current call\r\n        uint256 localHaircut;\r\n        // next from amount, starts with fromAmount in arg\r\n        uint256 nextFromAmount = fromAmount;\r\n        // where to send tokens on next step\r\n\r\n        for (uint256 i; i < poolPath.length; ++i) {\r\n            // check if we're reaching the beginning or end of the poolPath array\r\n            if (i != 0) {\r\n                nextFromAmount = potentialOutcome;\r\n            }\r\n\r\n            // make the swap with the correct arguments\r\n            (potentialOutcome) = IBaluniV1Pool(poolPath[i]).quotePotentialSwap(\r\n                tokenPath[i],\r\n                tokenPath[i + 1],\r\n                nextFromAmount\r\n            );\r\n\r\n            // increment total haircut - convert to 18 d.p decimals\r\n            haircut += localHaircut * 10 ** (18 - IERC20Metadata(tokenPath[i + 1]).decimals());\r\n        }\r\n\r\n        return (potentialOutcome, haircut);\r\n    }\r\n\r\n    /**\r\n     * @dev Performs batch swaps between multiple token pairs.\r\n     * @param fromTokens An array of addresses representing the tokens to swap from.\r\n     * @param toTokens An array of addresses representing the tokens to swap to.\r\n     * @param amounts An array of amounts representing the amounts to swap.\r\n     * @param receivers An array of addresses representing the receivers of the swapped tokens.\r\n     * @return An array of amounts representing the amounts of tokens received after the swaps.\r\n     */\r\n    function batchSwap(\r\n        address[] calldata fromTokens,\r\n        address[] calldata toTokens,\r\n        uint256[] calldata amounts,\r\n        address[] calldata receivers\r\n    ) external override returns (uint256[] memory) {\r\n        require(\r\n            fromTokens.length == toTokens.length &&\r\n                toTokens.length == amounts.length &&\r\n                amounts.length == receivers.length,\r\n            'Input arrays length mismatch'\r\n        );\r\n\r\n        uint256[] memory amountsOut = new uint256[](fromTokens.length);\r\n\r\n        for (uint256 i = 0; i < fromTokens.length; i++) {\r\n            require(amounts[i] > 0, 'Amount must be greater than zero');\r\n\r\n            address fromToken = fromTokens[i];\r\n            address toToken = toTokens[i];\r\n\r\n            uint256 amount = amounts[i];\r\n            address receiver = receivers[i];\r\n\r\n            require(IERC20(fromToken).balanceOf(msg.sender) >= amount, 'Insufficient Balance');\r\n            (amountsOut[i], ) = swapTokenForToken(\r\n                fromToken,\r\n                toToken,\r\n                amount,\r\n                0,\r\n                msg.sender,\r\n                receiver,\r\n                block.timestamp + 300\r\n            );\r\n        }\r\n\r\n        return amountsOut;\r\n    }\r\n\r\n    /**\r\n     * @dev Gets the amount of tokens received after a swap in a BaluniV1Pool.\r\n     * @param fromToken The address of the token to swap from.\r\n     * @param toToken The address of the token to swap to.\r\n     * @param amount The amount of tokens to swap.\r\n     * @return The amount of tokens received after the swap.\r\n     */\r\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view override returns (uint256) {\r\n        IBaluniV1PoolRegistry poolRegistry = IBaluniV1PoolRegistry(registry.getBaluniPoolRegistry());\r\n        address poolAddress = poolRegistry.getPoolByAssets(fromToken, toToken);\r\n        IBaluniV1Pool pool = IBaluniV1Pool(poolAddress);\r\n        uint256 amountOut = pool.quotePotentialSwap(fromToken, toToken, amount);\r\n        return amountOut;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns an array of pool addresses that contain the given token.\r\n     * @param token The address of the token to search for.\r\n     * @return An array of pool addresses.\r\n     */\r\n    function getPoolsContainingToken(address token) external view override returns (address[] memory) {\r\n        IBaluniV1PoolRegistry poolRegistry = IBaluniV1PoolRegistry(registry.getBaluniPoolRegistry());\r\n        return poolRegistry.getPoolsByAsset(token);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the version of the contract.\r\n     * @return The version string.\r\n     */\r\n    function getVersion() external view override returns (uint64) {\r\n        return _getInitializedVersion();\r\n    }\r\n}\r\n"},"contracts/registry/BaluniV1DCAVaultRegistry.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1DCAVault.sol';\r\n\r\ncontract BaluniV1DCAVaultRegistry is Initializable, UUPSUpgradeable, OwnableUpgradeable {\r\n    address[] public allVaults;\r\n\r\n    IBaluniV1Registry public registry;\r\n\r\n    mapping(address => mapping(address => address)) public getVault;\r\n\r\n    event vaultCreated(address indexed vault, address[] assets);\r\n\r\n    function initialize(address _register) public initializer {\r\n        __UUPSUpgradeable_init();\r\n        __Ownable_init(msg.sender);\r\n        registry = IBaluniV1Registry(_register);\r\n    }\r\n\r\n    function reinitialize(address _register, uint64 _version) public reinitializer(_version) {\r\n        registry = IBaluniV1Registry(_register);\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    function addVault(address vaultAddress) external onlyOwner {\r\n        require(vaultAddress != address(0), 'BaluniV1VaultFactory: INVALID_vault_ADDRESS');\r\n        allVaults.push(vaultAddress);\r\n        address baseAsset = IBaluniV1DCAVault(vaultAddress).baseAsset();\r\n        address quoteAsset = IBaluniV1DCAVault(vaultAddress).quoteAsset();\r\n\r\n        getVault[baseAsset][quoteAsset] = vaultAddress;\r\n        getVault[quoteAsset][baseAsset] = vaultAddress;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves all the vaults created by the factory.\r\n     * @return An array of vault addresses.\r\n     */\r\n    function getAllVaults() external view returns (address[] memory) {\r\n        return allVaults;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the number of vaults created by the factory.\r\n     * @return The count of vaults.\r\n     */\r\n    function getVaultsCount() external view returns (uint256) {\r\n        return allVaults.length;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the assets of a specific vault.\r\n     * @param vaultAddress The address of the vault.\r\n     * @return An array of asset addresses.\r\n     */\r\n    function getVaultAsset(address vaultAddress) external view returns (address[] memory) {\r\n        address[] memory assets = new address[](2);\r\n        assets[0] = IBaluniV1DCAVault(vaultAddress).baseAsset();\r\n        assets[1] = IBaluniV1DCAVault(vaultAddress).quoteAsset();\r\n        return assets;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the vault address based on the given assets.\r\n     * @param asset1 The address of the first asset.\r\n     * @param asset2 The address of the second asset.\r\n     * @return The address of the vault.\r\n     */\r\n    function getVaultType1ByAssets(address asset1, address asset2) external view returns (address) {\r\n        return getVault[asset1][asset2];\r\n    }\r\n\r\n    function getVaultsByAsset(address token) external view returns (address[] memory) {\r\n        address[] memory vaults = new address[](allVaults.length);\r\n        uint256 count = 0;\r\n\r\n        for (uint256 i = 0; i < allVaults.length; i++) {\r\n            IBaluniV1DCAVault vault = IBaluniV1DCAVault(allVaults[i]);\r\n            address asset = vault.baseAsset();\r\n\r\n            if (asset == token) {\r\n                vaults[count] = address(vault);\r\n                count++;\r\n                break;\r\n            }\r\n\r\n            if (count == vaults.length) {\r\n                break;\r\n            }\r\n        }\r\n\r\n        address[] memory result = new address[](count);\r\n        for (uint256 i = 0; i < count; i++) {\r\n            result[i] = vaults[i];\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    function vaultExist(address _vault) external view returns (bool) {\r\n        for (uint256 i = 0; i < allVaults.length; i++) {\r\n            if (allVaults[i] == _vault) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    function removeVault(address _vault) external onlyOwner {\r\n        for (uint256 i = 0; i < allVaults.length; i++) {\r\n            if (allVaults[i] == _vault) {\r\n                allVaults[i] = allVaults[allVaults.length - 1];\r\n                getVault[IBaluniV1DCAVault(_vault).quoteAsset()][IBaluniV1DCAVault(_vault).baseAsset()] = address(0);\r\n                getVault[IBaluniV1DCAVault(_vault).baseAsset()][IBaluniV1DCAVault(_vault).quoteAsset()] = address(0);\r\n                allVaults.pop();\r\n                break;\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/registry/BaluniV1PoolRegistry.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1Pool.sol';\r\n\r\ncontract BaluniV1PoolRegistry is Initializable, UUPSUpgradeable, OwnableUpgradeable {\r\n    address[] public allPools;\r\n\r\n    IBaluniV1Registry public registry;\r\n\r\n    mapping(address => mapping(address => address)) public getPool;\r\n\r\n    event PoolCreated(address indexed pool, address[] assets);\r\n\r\n    function initialize(address _register) public initializer {\r\n        __UUPSUpgradeable_init();\r\n        __Ownable_init(msg.sender);\r\n        registry = IBaluniV1Registry(_register);\r\n    }\r\n\r\n    function reinitialize(address _register, uint64 _version) public reinitializer(_version) {\r\n        registry = IBaluniV1Registry(_register);\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    function addPool(address poolAddress) external onlyOwner {\r\n        require(poolAddress != address(0), 'BaluniV1PoolFactory: INVALID_POOL_ADDRESS');\r\n        allPools.push(poolAddress);\r\n        address[] memory assets = IBaluniV1Pool(poolAddress).getAssets();\r\n        for (uint256 i = 0; i < assets.length; i++) {\r\n            for (uint256 j = i + 1; j < assets.length; j++) {\r\n                getPool[assets[i]][assets[j]] = poolAddress;\r\n                getPool[assets[j]][assets[i]] = poolAddress;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves all the pools created by the factory.\r\n     * @return An array of pool addresses.\r\n     */\r\n    function getAllPools() external view returns (address[] memory) {\r\n        return allPools;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the number of pools created by the factory.\r\n     * @return The count of pools.\r\n     */\r\n    function getPoolsCount() external view returns (uint256) {\r\n        return allPools.length;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the assets of a specific pool.\r\n     * @param poolAddress The address of the pool.\r\n     * @return An array of asset addresses.\r\n     */\r\n    function getPoolAssets(address poolAddress) external view returns (address[] memory) {\r\n        IBaluniV1Pool pool = IBaluniV1Pool(poolAddress);\r\n        return pool.getAssets();\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the pool address based on the given assets.\r\n     * @param asset1 The address of the first asset.\r\n     * @param asset2 The address of the second asset.\r\n     * @return The address of the pool.\r\n     */\r\n    function getPoolByAssets(address asset1, address asset2) external view returns (address) {\r\n        return address(getPool[asset1][asset2]);\r\n    }\r\n\r\n    /**\r\n     * @dev Returns an array of pool addresses that contain the specified token.\r\n     * @param token The address of the token to search for.\r\n     * @return An array of pool addresses.\r\n     */\r\n    function getPoolsByAsset(address token) external view returns (address[] memory) {\r\n        address[] memory pools = new address[](allPools.length);\r\n        uint256 count = 0;\r\n\r\n        for (uint256 i = 0; i < allPools.length; i++) {\r\n            IBaluniV1Pool pool = IBaluniV1Pool(allPools[i]);\r\n            address[] memory assets = pool.getAssets();\r\n\r\n            for (uint256 j = 0; j < assets.length; j++) {\r\n                if (assets[j] == token) {\r\n                    pools[count] = address(pool);\r\n                    count++;\r\n                    break;\r\n                }\r\n            }\r\n\r\n            if (count == pools.length) {\r\n                break;\r\n            }\r\n        }\r\n\r\n        address[] memory result = new address[](count);\r\n        for (uint256 i = 0; i < count; i++) {\r\n            result[i] = pools[i];\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    function poolExist(address _pool) external view returns (bool) {\r\n        for (uint256 i = 0; i < allPools.length; i++) {\r\n            if (allPools[i] == _pool) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    function removePool(address _pool) external onlyOwner {\r\n        for (uint256 i = 0; i < allPools.length; i++) {\r\n            if (allPools[i] == _pool) {\r\n                allPools[i] = allPools[allPools.length - 1];\r\n                getPool[IBaluniV1Pool(_pool).getAssets()[0]][IBaluniV1Pool(_pool).getAssets()[1]] = address(0);\r\n                getPool[IBaluniV1Pool(_pool).getAssets()[1]][IBaluniV1Pool(_pool).getAssets()[0]] = address(0);\r\n                allPools.pop();\r\n                break;\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/registry/BaluniV1Registry.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\n\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\n\r\ncontract BaluniV1Registry is Initializable, OwnableUpgradeable, UUPSUpgradeable, IBaluniV1Registry {\r\n    address public uniswapFactory;\r\n    address public uniswapRouter;\r\n    address public baluniAgentFactory;\r\n    address public baluniPoolPeriphery;\r\n    address public baluniPoolRegistry;\r\n    address public baluniRebalancer;\r\n    address public baluniRouter;\r\n    address public baluniRegistry;\r\n    address public baluniOracle;\r\n    address public baluniSwapper;\r\n    address public baluniYearnVaultRegistry;\r\n    address public baluniDCAVaultRegistry;\r\n\r\n    address public treasury;\r\n    address public staticOracle;\r\n    address public WNATIVE;\r\n    address public USDC;\r\n    address public _1inchSpotAgg;\r\n    uint256 public _MAX_BPS_FEE;\r\n    uint256 public _BPS_FEE;\r\n    uint256 public _BPS_BASE;\r\n    uint256 public _REBALANCE_THRESHOLD;\r\n\r\n    function initialize() public initializer {\r\n        __Ownable_init(msg.sender);\r\n        __UUPSUpgradeable_init();\r\n        _MAX_BPS_FEE = 100;\r\n        _BPS_FEE = 30;\r\n        _BPS_BASE = 10000;\r\n        _REBALANCE_THRESHOLD = 100;\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    function setTreasury(address _treasury) external override onlyOwner {\r\n        treasury = _treasury;\r\n    }\r\n\r\n    function setUniswapFactory(address _uniswapFactory) external override onlyOwner {\r\n        uniswapFactory = _uniswapFactory;\r\n    }\r\n\r\n    function setUniswapRouter(address _uniswapRouter) external override onlyOwner {\r\n        uniswapRouter = _uniswapRouter;\r\n    }\r\n\r\n    function setBaluniSwapper(address _baluniSwapper) external override onlyOwner {\r\n        baluniSwapper = _baluniSwapper;\r\n    }\r\n\r\n    function setBaluniOracle(address _baluniOracle) external override onlyOwner {\r\n        baluniOracle = _baluniOracle;\r\n    }\r\n\r\n    function setBaluniAgentFactory(address _baluniAgentFactory) external override onlyOwner {\r\n        baluniAgentFactory = _baluniAgentFactory;\r\n    }\r\n\r\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external override onlyOwner {\r\n        baluniPoolPeriphery = _baluniPoolPeriphery;\r\n    }\r\n\r\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external override onlyOwner {\r\n        baluniPoolRegistry = _baluniPoolRegistry;\r\n    }\r\n\r\n    function setBaluniRebalancer(address _baluniRebalancer) external override onlyOwner {\r\n        baluniRebalancer = _baluniRebalancer;\r\n    }\r\n\r\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external override onlyOwner {\r\n        baluniYearnVaultRegistry = _baluniYearnVaultRegistry;\r\n    }\r\n\r\n    function setBaluniRouter(address _baluniRouter) external override onlyOwner {\r\n        baluniRouter = _baluniRouter;\r\n    }\r\n\r\n    function setBaluniRegistry(address _baluniRegistry) external override onlyOwner {\r\n        baluniRegistry = _baluniRegistry;\r\n    }\r\n\r\n    function setWNATIVE(address _WNATIVE) external override onlyOwner {\r\n        WNATIVE = _WNATIVE;\r\n    }\r\n\r\n    function setUSDC(address _USDC) external override onlyOwner {\r\n        USDC = _USDC;\r\n    }\r\n\r\n    function set1inchSpotAgg(address __1inchSpotAgg) external override onlyOwner {\r\n        _1inchSpotAgg = __1inchSpotAgg;\r\n    }\r\n\r\n    function setStaticOracle(address _staticOracle) external override onlyOwner {\r\n        staticOracle = _staticOracle;\r\n    }\r\n\r\n    function setBaluniDCAVaultRegistry(address _baluniDCAVaultRegistry) external override onlyOwner {\r\n        baluniDCAVaultRegistry = _baluniDCAVaultRegistry;\r\n    }\r\n\r\n    function setBPS_FEE(uint256 __BPS_FEE) external override onlyOwner {\r\n        _BPS_FEE = __BPS_FEE;\r\n    }\r\n\r\n    function setREBALANCE_THRESHOLD(uint256 __REBALANCE_THRESHOLD) external override onlyOwner {\r\n        _REBALANCE_THRESHOLD = __REBALANCE_THRESHOLD;\r\n    }\r\n\r\n    function getUniswapFactory() external view override returns (address) {\r\n        return uniswapFactory;\r\n    }\r\n\r\n    function getUniswapRouter() external view override returns (address) {\r\n        return uniswapRouter;\r\n    }\r\n\r\n    function getBaluniSwapper() external view override returns (address) {\r\n        return baluniSwapper;\r\n    }\r\n\r\n    function getBaluniOracle() external view override returns (address) {\r\n        return baluniOracle;\r\n    }\r\n\r\n    function getBaluniAgentFactory() external view override returns (address) {\r\n        return baluniAgentFactory;\r\n    }\r\n\r\n    function getBaluniPoolPeriphery() external view override returns (address) {\r\n        return baluniPoolPeriphery;\r\n    }\r\n\r\n    function getBaluniPoolRegistry() external view override returns (address) {\r\n        return baluniPoolRegistry;\r\n    }\r\n\r\n    function getBaluniRebalancer() external view override returns (address) {\r\n        return baluniRebalancer;\r\n    }\r\n\r\n    function getBaluniRouter() external view override returns (address) {\r\n        return baluniRouter;\r\n    }\r\n\r\n    function getBaluniRegistry() external view override returns (address) {\r\n        return baluniRegistry;\r\n    }\r\n\r\n    function getWNATIVE() external view override returns (address) {\r\n        return WNATIVE;\r\n    }\r\n\r\n    function getUSDC() external view override returns (address) {\r\n        return USDC;\r\n    }\r\n\r\n    function get1inchSpotAgg() external view override returns (address) {\r\n        return _1inchSpotAgg;\r\n    }\r\n\r\n    function getBPS_FEE() external view override returns (uint256) {\r\n        return _BPS_FEE;\r\n    }\r\n\r\n    function getMAX_BPS_FEE() external view override returns (uint256) {\r\n        return _MAX_BPS_FEE;\r\n    }\r\n\r\n    function getBPS_BASE() external view override returns (uint256) {\r\n        return _BPS_BASE;\r\n    }\r\n\r\n    function getREBALANCE_THRESHOLD() external view override returns (uint256) {\r\n        return _REBALANCE_THRESHOLD;\r\n    }\r\n\r\n    function getTreasury() external view override returns (address) {\r\n        return treasury;\r\n    }\r\n\r\n    function getStaticOracle() external view override returns (address) {\r\n        return staticOracle;\r\n    }\r\n\r\n    function getBaluniYearnVaultRegistry() external view override returns (address) {\r\n        return baluniYearnVaultRegistry;\r\n    }\r\n\r\n    function getBaluniDCAVaultRegistry() external view override returns (address) {\r\n        return baluniDCAVaultRegistry;\r\n    }\r\n\r\n    // v1\r\n    address public uniswapQuoter;\r\n\r\n    function setUniswapQuoter(address _uniswapQuoter) external override onlyOwner {\r\n        uniswapQuoter = _uniswapQuoter;\r\n    }\r\n\r\n    function getUniswapQuoter() external view override returns (address) {\r\n        return uniswapQuoter;\r\n    }\r\n\r\n    // v2\r\n\r\n    address public baluniPoolZap;\r\n\r\n    function setBaluniPoolZap(address _baluniPoolZap) external override onlyOwner {\r\n        baluniPoolZap = _baluniPoolZap;\r\n    }\r\n\r\n    function getBaluniPoolZap() external view override returns (address) {\r\n        return baluniPoolZap;\r\n    }\r\n\r\n    // v3\r\n\r\n    address public baluniHyperPoolZap;\r\n\r\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external override onlyOwner {\r\n        baluniHyperPoolZap = _baluniHyperPoolZap;\r\n    }\r\n\r\n    function getBaluniHyperPoolZap() external view override returns (address) {\r\n        return baluniHyperPoolZap;\r\n    }\r\n}\r\n"},"contracts/registry/BaluniV1YearnVaultRegistry.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n/**\r\n *  __                  __                      __\r\n * /  |                /  |                    /  |\r\n * $$ |____    ______  $$ | __    __  _______  $$/\r\n * $$      \\  /      \\ $$ |/  |  /  |/       \\ /  |\r\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\r\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\r\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\__$$ |$$ |  $$ |$$ |\r\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\r\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\r\n *\r\n *\r\n *                  ,-\"\"\"\"-.\r\n *                ,'      _ `.\r\n *               /       )_)  \\\r\n *              :              :\r\n *              \\              /\r\n *               \\            /\r\n *                `.        ,'\r\n *                  `.    ,'\r\n *                    `.,'\r\n *                     /\\`.   ,-._\r\n *                         `-'    \\__\r\n *                              .\r\n *               s                \\\r\n *                                \\\\\r\n *                                 \\\\\r\n *                                  >\\/7\r\n *                              _.-(6'  \\\r\n *                             (=___._/` \\\r\n *                                  )  \\ |\r\n *                                 /   / |\r\n *                                /    > /\r\n *                               j    < _\\\r\n *                           _.-' :      ``.\r\n *                           \\ r=._\\        `.\r\n */\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1YearnVault.sol';\r\n\r\ncontract BaluniV1YearnVaultRegistry is Initializable, UUPSUpgradeable, OwnableUpgradeable {\r\n    address[] public allVaults;\r\n\r\n    IBaluniV1Registry public registry;\r\n\r\n    mapping(address => address) public getVaultType0;\r\n    mapping(address => mapping(address => address)) public getVaultType1;\r\n\r\n    event vaultCreated(address indexed vault, address[] assets);\r\n\r\n    function initialize(address _register) public initializer {\r\n        __UUPSUpgradeable_init();\r\n        __Ownable_init(msg.sender);\r\n        registry = IBaluniV1Registry(_register);\r\n    }\r\n\r\n    function reinitialize(address _register, uint64 _version) public reinitializer(_version) {\r\n        registry = IBaluniV1Registry(_register);\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    function addVault(address vaultAddress) external onlyOwner {\r\n        require(vaultAddress != address(0), 'BaluniV1VaultFactory: INVALID_vault_ADDRESS');\r\n        allVaults.push(vaultAddress);\r\n        address baseAsset = IBaluniV1YearnVault(vaultAddress).baseAsset();\r\n        address quoteAsset = IBaluniV1YearnVault(vaultAddress).quoteAsset();\r\n        if (quoteAsset == address(0)) {\r\n            getVaultType0[baseAsset] = vaultAddress;\r\n        } else {\r\n            getVaultType1[baseAsset][quoteAsset] = vaultAddress;\r\n            getVaultType1[quoteAsset][baseAsset] = vaultAddress;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves all the vaults created by the factory.\r\n     * @return An array of vault addresses.\r\n     */\r\n    function getAllVaults() external view returns (address[] memory) {\r\n        return allVaults;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the number of vaults created by the factory.\r\n     * @return The count of vaults.\r\n     */\r\n    function getVaultsCount() external view returns (uint256) {\r\n        return allVaults.length;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the assets of a specific vault.\r\n     * @param vaultAddress The address of the vault.\r\n     * @return An array of asset addresses.\r\n     */\r\n    function getVaultAsset(address vaultAddress) external view returns (address[] memory) {\r\n        address[] memory assets = new address[](2);\r\n        assets[0] = IBaluniV1YearnVault(vaultAddress).baseAsset();\r\n        assets[1] = IBaluniV1YearnVault(vaultAddress).quoteAsset();\r\n        return assets;\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the vault address based on the given assets.\r\n     * @param asset1 The address of the first asset.\r\n     * @param asset2 The address of the second asset.\r\n     * @return The address of the vault.\r\n     */\r\n    function getVaultType1ByAssets(address asset1, address asset2) external view returns (address) {\r\n        return getVaultType1[asset1][asset2];\r\n    }\r\n\r\n    /**\r\n     * @dev Retrieves the address of the vault type 0 associated with the given asset.\r\n     * @param asset The address of the asset.\r\n     * @return The address of the vault type 0 associated with the asset.\r\n     */\r\n    function getVaultType0ByAsset(address asset) external view returns (address) {\r\n        return getVaultType0[asset];\r\n    }\r\n\r\n    function getVaultsByAsset(address token) external view returns (address[] memory) {\r\n        address[] memory vaults = new address[](allVaults.length);\r\n        uint256 count = 0;\r\n\r\n        for (uint256 i = 0; i < allVaults.length; i++) {\r\n            IBaluniV1YearnVault vault = IBaluniV1YearnVault(allVaults[i]);\r\n            address asset = vault.baseAsset();\r\n\r\n            if (asset == token) {\r\n                vaults[count] = address(vault);\r\n                count++;\r\n                break;\r\n            }\r\n\r\n            if (count == vaults.length) {\r\n                break;\r\n            }\r\n        }\r\n\r\n        address[] memory result = new address[](count);\r\n        for (uint256 i = 0; i < count; i++) {\r\n            result[i] = vaults[i];\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    function vaultExist(address _vault) external view returns (bool) {\r\n        for (uint256 i = 0; i < allVaults.length; i++) {\r\n            if (allVaults[i] == _vault) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    function removeVault(address _vault) external onlyOwner {\r\n        for (uint256 i = 0; i < allVaults.length; i++) {\r\n            if (allVaults[i] == _vault) {\r\n                allVaults[i] = allVaults[allVaults.length - 1];\r\n                getVaultType0[IBaluniV1YearnVault(_vault).baseAsset()] = address(0);\r\n                getVaultType1[IBaluniV1YearnVault(_vault).quoteAsset()][\r\n                    IBaluniV1YearnVault(_vault).baseAsset()\r\n                ] = address(0);\r\n                getVaultType1[IBaluniV1YearnVault(_vault).baseAsset()][\r\n                    IBaluniV1YearnVault(_vault).quoteAsset()\r\n                ] = address(0);\r\n                allVaults.pop();\r\n                break;\r\n            }\r\n        }\r\n    }\r\n}\r\n"},"contracts/vaults/BaluniV1DCAVault.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol';\r\n\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IBaluniV1Swapper.sol';\r\nimport '../interfaces/IBaluniV1Oracle.sol';\r\nimport '../interfaces/IBaluniV1DCAVault.sol';\r\n\r\ncontract BaluniV1DCAVault is\r\n    Initializable,\r\n    UUPSUpgradeable,\r\n    OwnableUpgradeable,\r\n    ERC20Upgradeable,\r\n    ReentrancyGuardUpgradeable,\r\n    PausableUpgradeable,\r\n    IBaluniV1DCAVault\r\n{\r\n    address public baseAsset;\r\n    address public quoteAsset;\r\n\r\n    IBaluniV1Registry private _registry;\r\n    uint256 public accumulatedAssetB;\r\n\r\n    uint256 public lastDeposit;\r\n    uint256 public lastInvestedBlock;\r\n    uint256 public maxPerSwap;\r\n    uint256 public swapDuration;\r\n    uint256 public reinvestDuration;\r\n\r\n    mapping(address => bool) public executors;\r\n\r\n    event ExecuteTrade(address indexed sender, uint256 amountIn, uint256 amountOut);\r\n\r\n    /**\r\n     * @dev Initializes the BaluniV1DCA contract.\r\n     * @param _name The name of the token.\r\n     * @param _symbol The symbol of the token.\r\n     * @param _baseAsset The address of the base asset.\r\n     * @param _quoteAsset The address of the quote asset.\r\n     * @param _registryAddress The address of the registry contract.\r\n     * @param _reinvestDuration The duration between reinvestments.\r\n     */\r\n    function initialize(\r\n        string memory _name,\r\n        string memory _symbol,\r\n        address _baseAsset,\r\n        address _quoteAsset,\r\n        address _registryAddress,\r\n        uint256 _reinvestDuration\r\n    ) external initializer {\r\n        __Ownable_init(msg.sender);\r\n        __ERC20_init(_name, _symbol);\r\n        __UUPSUpgradeable_init();\r\n        __ReentrancyGuard_init();\r\n        __Pausable_init();\r\n\r\n        baseAsset = _baseAsset;\r\n        quoteAsset = _quoteAsset;\r\n        _registry = IBaluniV1Registry(_registryAddress);\r\n\r\n        swapDuration = 360 * _reinvestDuration;\r\n        reinvestDuration = _reinvestDuration;\r\n        lastInvestedBlock = block.number;\r\n        maxPerSwap = 10000 * 10 ** ERC20Upgradeable(_baseAsset).decimals();\r\n    }\r\n\r\n    function reinitialize(\r\n        string memory _name,\r\n        string memory _symbol,\r\n        address _baseAsset,\r\n        address _quoteAsset,\r\n        address _registryAddress,\r\n        uint256 _reinvestDuration,\r\n        uint64 _version\r\n    ) external reinitializer(_version) {\r\n        __Ownable_init(msg.sender);\r\n        __ERC20_init(_name, _symbol);\r\n        __UUPSUpgradeable_init();\r\n        __ReentrancyGuard_init();\r\n        __Pausable_init();\r\n\r\n        baseAsset = _baseAsset;\r\n        quoteAsset = _quoteAsset;\r\n        _registry = IBaluniV1Registry(_registryAddress);\r\n\r\n        swapDuration = 360 * _reinvestDuration;\r\n        reinvestDuration = _reinvestDuration;\r\n        lastInvestedBlock = block.number;\r\n        maxPerSwap = 10000 * 10 ** ERC20Upgradeable(_baseAsset).decimals();\r\n    }\r\n\r\n    function changeReinvestDuration(uint256 _reinvestDuration) external onlyOwner {\r\n        reinvestDuration = _reinvestDuration;\r\n        swapDuration = 360 * _reinvestDuration;\r\n    }\r\n\r\n    modifier onlyExecutor() {\r\n        require(executors[msg.sender], 'executor: wut?');\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\r\n     * @param newImplementation The address of the new implementation contract.\r\n     * @notice This function can only be called by the contract owner.\r\n     */\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    /**\r\n     * @dev Deposits assetA into the pool.\r\n     * @param amount The amount of assetA to deposit.\r\n     * @param to The address to receive pool tokens.\r\n     */\r\n    function deposit(uint256 amount, address to) external nonReentrant whenNotPaused {\r\n        require(amount > 0, 'Amount must be greater than zero');\r\n\r\n        IERC20(baseAsset).transferFrom(msg.sender, address(this), amount);\r\n\r\n        address baluniRouter = _registry.getBaluniRouter();\r\n        address treasury = _registry.getTreasury();\r\n\r\n        uint hairCut = _haircut(amount);\r\n        uint hairCut2 = _haircut(hairCut);\r\n\r\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n        IERC20(baseAsset).transfer(treasury, hairCut2);\r\n\r\n        uint256 amountAfter = amount - hairCut;\r\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\r\n\r\n        // scale up amount\r\n        uint256 amountScaled = amountAfter * 10 ** (18 - baseDecimal);\r\n        _mint(to, amountScaled);\r\n\r\n        lastDeposit += amountAfter;\r\n    }\r\n\r\n    /**\r\n     * @dev Withdraws assetA and assetB from the pool.\r\n     * @param shares The amount of pool tokens to redeem.\r\n     * @param to The address to receive assetA and assetB.\r\n     */\r\n    function withdraw(uint256 shares, address to) external nonReentrant whenNotPaused {\r\n        require(shares > 0, 'Shares must be greater than zero');\r\n        require(balanceOf(msg.sender) >= shares, 'Insufficient balance');\r\n\r\n        uint8 quoteDecimal = IERC20Metadata(quoteAsset).decimals();\r\n        uint256 quoteBalance = IERC20(quoteAsset).balanceOf(address(this));\r\n        uint256 baseBalance = IERC20(baseAsset).balanceOf(address(this));\r\n\r\n        // scale up totalDeposit and accumualteAssetB\r\n        quoteBalance *= 10 ** (18 - quoteDecimal);\r\n\r\n        uint256 withdrawAmountA = (shares * baseBalance) / totalSupply();\r\n        uint256 withdrawAmountB = (shares * quoteBalance) / totalSupply();\r\n\r\n        _burn(msg.sender, shares);\r\n\r\n        // scale down totalDeposit and accumualteAssetB\r\n        withdrawAmountB /= 10 ** (18 - quoteDecimal);\r\n\r\n        uint256 amountToSend = withdrawAmountA;\r\n\r\n        uint hairCut = _haircut(amountToSend);\r\n        IERC20(baseAsset).transfer(to, amountToSend - hairCut);\r\n\r\n        uint hairCut2 = _haircut(hairCut);\r\n        address baluniRouter = _registry.getBaluniRouter();\r\n        address treasury = _registry.getTreasury();\r\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n        IERC20(baseAsset).transfer(treasury, hairCut2);\r\n\r\n        hairCut = _haircut(withdrawAmountB);\r\n        IERC20(quoteAsset).transfer(to, withdrawAmountB - hairCut);\r\n        hairCut2 = _haircut(hairCut);\r\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n        IERC20(baseAsset).transfer(treasury, hairCut2);\r\n\r\n        lastDeposit -= amountToSend;\r\n    }\r\n\r\n    function systemDeposit() external nonReentrant whenNotPaused {\r\n        require((block.number - lastInvestedBlock) > reinvestDuration, 'wait till next reinvest cycle');\r\n\r\n        uint amtToSwap = getAmountToSwap(); // return 1e18\r\n        require(amtToSwap > 0, 'Nothing to swap');\r\n\r\n        IBaluniV1Swapper swapper = IBaluniV1Swapper(_registry.getBaluniSwapper());\r\n        IERC20(baseAsset).approve(address(swapper), amtToSwap);\r\n\r\n        uint256 quoteReceived = swapper.singleSwap(baseAsset, quoteAsset, amtToSwap, address(this));\r\n        lastInvestedBlock = block.number;\r\n\r\n        emit ExecuteTrade(msg.sender, amtToSwap, quoteReceived);\r\n    }\r\n\r\n    function getAmountToSwap() public view returns (uint) {\r\n        uint baseTokenBal = IERC20(baseAsset).balanceOf(address(this));\r\n        uint blockDiff = block.number - lastInvestedBlock;\r\n        uint toSwapQty = (baseTokenBal * blockDiff) / swapDuration;\r\n        return toSwapQty > maxPerSwap ? maxPerSwap : toSwapQty;\r\n    }\r\n\r\n    function canSystemDeposit() public view returns (bool) {\r\n        uint amtToSwap = getAmountToSwap();\r\n        return ((block.number - lastInvestedBlock) > reinvestDuration) && (amtToSwap > 0);\r\n    }\r\n\r\n    /**\r\n     * @dev pause pool, restricting certain operations\r\n     */\r\n    function pause() external onlyOwner {\r\n        _pause();\r\n    }\r\n\r\n    /**\r\n     * @dev unpause pool, enabling certain operations\r\n     */\r\n    function unpause() external onlyOwner {\r\n        _unpause();\r\n    }\r\n\r\n    function unitPrice() external view returns (uint256) {\r\n        if (totalSupply() == 0) return 0;\r\n\r\n        address USDC = _registry.getUSDC();\r\n        uint8 decimals = IERC20Metadata(USDC).decimals();\r\n        uint256 factor = 10 ** (18 - decimals);\r\n        uint256 valuationScaledUp = totalValuation() * factor;\r\n        uint256 unitPriceScaled = (valuationScaledUp * 1e18) / totalSupply();\r\n        return unitPriceScaled;\r\n    }\r\n\r\n    function registry() external view returns (address) {\r\n        return address(_registry);\r\n    }\r\n\r\n    function setExecutor(address _wallet, bool _allow) external onlyOwner {\r\n        executors[_wallet] = _allow;\r\n    }\r\n\r\n    /**\r\n     * @dev Calculates the fee amount based on the provided amount using the haircut formula.\r\n     * @param amount The amount to calculate the fee for.\r\n     * @return The fee amount.\r\n     */\r\n    function _haircut(uint256 amount) internal view returns (uint256) {\r\n        uint256 _BPS_FEE = _registry.getBPS_FEE();\r\n        uint256 _BPS_BASE = _registry.getBPS_BASE();\r\n        return (amount * _BPS_FEE) / _BPS_BASE;\r\n    }\r\n\r\n    function totalValuation() public view returns (uint256) {\r\n        IBaluniV1Oracle oracle = IBaluniV1Oracle(_registry.getBaluniOracle());\r\n        address USDC = _registry.getUSDC();\r\n        uint256 valuation = 0;\r\n\r\n        uint baseBalance = IERC20(baseAsset).balanceOf(address(this));\r\n        uint balanceQuote = IERC20(quoteAsset).balanceOf(address(this));\r\n\r\n        if (baseBalance == 0 && balanceQuote == 0) return 0;\r\n\r\n        valuation += oracle.convert(quoteAsset, USDC, balanceQuote);\r\n\r\n        if (baseAsset == USDC) {\r\n            valuation += baseBalance;\r\n        } else {\r\n            valuation += oracle.convert(baseAsset, USDC, baseBalance);\r\n        }\r\n\r\n        return valuation;\r\n    }\r\n}\r\n"},"contracts/vaults/BaluniV1YearnVault.sol":{"content":"// SPDX-License-Identifier: GNU AGPLv3\r\npragma solidity 0.8.25;\r\n\r\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\r\nimport '@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol';\r\n\r\nimport '../interfaces/IBaluniV1Registry.sol';\r\nimport '../interfaces/IYearnVault.sol';\r\nimport '../interfaces/IBaluniV1Swapper.sol';\r\nimport '../interfaces/IBaluniV1Oracle.sol';\r\nimport '../interfaces/IBaluniV1YearnVault.sol';\r\n\r\ncontract BaluniV1YearnVault is\r\n    Initializable,\r\n    UUPSUpgradeable,\r\n    OwnableUpgradeable,\r\n    ERC20Upgradeable,\r\n    ReentrancyGuardUpgradeable,\r\n    PausableUpgradeable,\r\n    IBaluniV1YearnVault\r\n{\r\n    address public baseAsset;\r\n    IYearnVault private _yearnVault;\r\n    address public quoteAsset;\r\n    IBaluniV1Registry private _registry;\r\n\r\n    uint256 public accumulatedAssetB;\r\n    uint256 public lastDeposit;\r\n    uint256 public allTimeInterest;\r\n\r\n    event Buy(address indexed sender, uint256 amount, uint256 interest);\r\n\r\n    function initialize(\r\n        string memory _name,\r\n        string memory _symbol,\r\n        address _assetA,\r\n        address _yearnVaultAddress,\r\n        address _assetB,\r\n        address _registryAddress\r\n    ) external initializer {\r\n        __Ownable_init(msg.sender);\r\n        __ERC20_init(_name, _symbol);\r\n        __UUPSUpgradeable_init();\r\n        __ReentrancyGuard_init();\r\n        __Pausable_init();\r\n\r\n        baseAsset = _assetA;\r\n        _yearnVault = IYearnVault(_yearnVaultAddress);\r\n        quoteAsset = _assetB;\r\n        _registry = IBaluniV1Registry(_registryAddress);\r\n\r\n        require(baseAsset != address(0), 'Invalid assetA address');\r\n        require(address(_yearnVault) != address(0), 'Invalid Yearn Vault address');\r\n        require(quoteAsset != address(0), 'Invalid assetB address');\r\n    }\r\n\r\n    function reinitialize(\r\n        string memory _name,\r\n        string memory _symbol,\r\n        address _assetA,\r\n        address _yearnVaultAddress,\r\n        address _assetB,\r\n        address _registryAddress,\r\n        uint64 _version\r\n    ) external reinitializer(_version) {\r\n        __Ownable_init(msg.sender);\r\n        __ERC20_init(_name, _symbol);\r\n        __UUPSUpgradeable_init();\r\n        __ReentrancyGuard_init();\r\n        __Pausable_init();\r\n\r\n        baseAsset = _assetA;\r\n        _yearnVault = IYearnVault(_yearnVaultAddress);\r\n        quoteAsset = _assetB;\r\n        _registry = IBaluniV1Registry(_registryAddress);\r\n\r\n        require(baseAsset != address(0), 'Invalid assetA address');\r\n        require(address(_yearnVault) != address(0), 'Invalid Yearn Vault address');\r\n        require(quoteAsset != address(0), 'Invalid assetB address');\r\n    }\r\n\r\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\r\n\r\n    function deposit(uint256 amount, address to) external override nonReentrant whenNotPaused {\r\n        require(amount > 0, 'Amount must be greater than zero');\r\n\r\n        _processInterest();\r\n\r\n        IERC20(baseAsset).transferFrom(msg.sender, address(this), amount);\r\n\r\n        address baluniRouter = _registry.getBaluniRouter();\r\n        address treasury = _registry.getTreasury();\r\n\r\n        uint hairCut = _haircut(amount);\r\n        uint hairCut2 = _haircut(hairCut);\r\n\r\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n        IERC20(baseAsset).transfer(treasury, hairCut2);\r\n\r\n        uint256 amountAfter = amount - hairCut;\r\n\r\n        IERC20(baseAsset).approve(address(_yearnVault), amountAfter);\r\n        _yearnVault.deposit(amountAfter, address(this));\r\n\r\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\r\n        uint8 yearnDecimal = IERC20Metadata(address(_yearnVault)).decimals();\r\n\r\n        if (baseDecimal > yearnDecimal) {\r\n            amountAfter = amountAfter / 10 ** (baseDecimal - yearnDecimal);\r\n        } else {\r\n            amountAfter = amountAfter * 10 ** (yearnDecimal - baseDecimal);\r\n        }\r\n\r\n        uint256 amountScaled = amountAfter * 10 ** (18 - yearnDecimal);\r\n\r\n        _mint(to, amountScaled);\r\n\r\n        lastDeposit = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n    }\r\n\r\n    function _buy() internal {\r\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\r\n        require(interest > 0, 'BaluniV1yVault: No interest available');\r\n\r\n        uint256 sharesToRedeem = _yearnVault.convertToShares(interest);\r\n        uint256 amountOut = _yearnVault.redeem(sharesToRedeem, address(this), address(this));\r\n\r\n        require(amountOut > 0, 'BaluniV1yVault: Redeem Failed');\r\n\r\n        IBaluniV1Swapper swapper = IBaluniV1Swapper(_registry.getBaluniSwapper());\r\n\r\n        IERC20(baseAsset).approve(address(swapper), amountOut);\r\n\r\n        swapper.singleSwap(baseAsset, quoteAsset, amountOut, address(this));\r\n\r\n        emit Buy(msg.sender, amountOut, interest);\r\n    }\r\n\r\n    function buy() external override nonReentrant whenNotPaused {\r\n        _buy();\r\n    }\r\n\r\n    function _processInterest() internal {\r\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\r\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\r\n        uint limit = 1 * 10 ** (baseDecimal - 2);\r\n        if (interest > limit) {\r\n            _buy();\r\n        }\r\n    }\r\n\r\n    function pause() external override onlyOwner {\r\n        _pause();\r\n    }\r\n\r\n    function unpause() external override onlyOwner {\r\n        _unpause();\r\n    }\r\n\r\n    function totalValuation() public view override returns (uint256) {\r\n        IBaluniV1Oracle oracle = IBaluniV1Oracle(_registry.getBaluniOracle());\r\n        address USDC = _registry.getUSDC();\r\n        uint256 valuation = 0;\r\n\r\n        uint yearnBalance = _yearnVault.balanceOf(address(this));\r\n        uint yearnBalanceConvert = _yearnVault.convertToAssets(yearnBalance);\r\n        uint balanceQuote = IERC20(quoteAsset).balanceOf(address(this));\r\n\r\n        if (baseAsset != USDC) valuation += oracle.convert(baseAsset, USDC, yearnBalanceConvert);\r\n        valuation += oracle.convert(quoteAsset, baseAsset, balanceQuote);\r\n        valuation += yearnBalanceConvert;\r\n\r\n        uint256 interest = interestEarned();\r\n\r\n        if (baseAsset != USDC) valuation += oracle.convert(baseAsset, USDC, interest);\r\n\r\n        valuation += interest;\r\n\r\n        return valuation;\r\n    }\r\n\r\n    function unitPrice() external view override returns (uint256) {\r\n        if (totalSupply() == 0) return 0;\r\n        address USDC = _registry.getUSDC();\r\n        uint8 decimals = IERC20Metadata(USDC).decimals();\r\n        uint256 factor = 10 ** (18 - decimals);\r\n        uint256 valuationScaledUp = totalValuation() * factor;\r\n        uint256 unitPriceScaled = (valuationScaledUp * 1e18) / totalSupply();\r\n        return unitPriceScaled;\r\n    }\r\n\r\n    function registry() external view override returns (address) {\r\n        return address(_registry);\r\n    }\r\n\r\n    function yearnVault() external view override returns (address) {\r\n        return address(_yearnVault);\r\n    }\r\n\r\n    function _haircut(uint256 amount) internal view returns (uint256) {\r\n        uint256 _BPS_FEE = _registry.getBPS_FEE();\r\n        uint256 _BPS_BASE = _registry.getBPS_BASE();\r\n        return (amount * _BPS_FEE) / _BPS_BASE;\r\n    }\r\n\r\n    function interestEarned() public view override returns (uint256) {\r\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\r\n        return interest;\r\n    }\r\n\r\n    function withdraw(uint256 shares, address to) external override nonReentrant whenNotPaused {\r\n        require(shares > 0, 'Shares must be greater than zero');\r\n        require(balanceOf(msg.sender) >= shares, 'Insufficient balance');\r\n\r\n        uint8 yearnDecimal = IERC20Metadata(address(_yearnVault)).decimals();\r\n        uint8 quoteDecimal = IERC20Metadata(quoteAsset).decimals();\r\n        uint256 balanceYearnVault = _yearnVault.balanceOf(address(this));\r\n        uint256 quoteBalance = IERC20(quoteAsset).balanceOf(address(this));\r\n        uint256 baseBalance = IERC20(baseAsset).balanceOf(address(this));\r\n        balanceYearnVault *= 10 ** (18 - yearnDecimal);\r\n        quoteBalance *= 10 ** (18 - quoteDecimal);\r\n\r\n        uint256 withdrawAmountA = (shares * balanceYearnVault) / totalSupply();\r\n        uint256 withdrawAmountB = (shares * quoteBalance) / totalSupply();\r\n\r\n        _burn(msg.sender, shares);\r\n\r\n        withdrawAmountA /= 10 ** (18 - yearnDecimal);\r\n        withdrawAmountB /= 10 ** (18 - quoteDecimal);\r\n\r\n        _yearnVault.redeem(withdrawAmountA, address(this), address(this));\r\n\r\n        uint256 baseBalanceAfter = IERC20(baseAsset).balanceOf(address(this));\r\n        uint256 amountToSend = baseBalanceAfter - baseBalance;\r\n        address receiver = to;\r\n\r\n        if (amountToSend > 0) {\r\n            uint hairCut = _haircut(amountToSend);\r\n            IERC20(baseAsset).transfer(receiver, amountToSend - hairCut);\r\n            uint hairCut2 = _haircut(hairCut);\r\n            address baluniRouter = _registry.getBaluniRouter();\r\n            address treasury = _registry.getTreasury();\r\n            IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n            IERC20(baseAsset).transfer(treasury, hairCut2);\r\n        }\r\n\r\n        if (withdrawAmountB > 0) {\r\n            bool success = _handleWithdrawB(withdrawAmountB, receiver);\r\n            require(success, \"Failed to transfer quoteAsset\");\r\n        }\r\n\r\n        lastDeposit = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\r\n    }\r\n\r\n    function _handleWithdrawB(uint256 withdrawAmountB, address receiver) internal returns (bool) {\r\n        uint hairCut = _haircut(withdrawAmountB);\r\n        accumulatedAssetB -= withdrawAmountB;\r\n        IERC20(quoteAsset).transfer(receiver, withdrawAmountB - hairCut);\r\n        uint hairCut2 = _haircut(hairCut);\r\n        address baluniRouter = _registry.getBaluniRouter();\r\n        address treasury = _registry.getTreasury();\r\n        IERC20(quoteAsset).transfer(baluniRouter, hairCut - hairCut2);\r\n        IERC20(quoteAsset).transfer(treasury, hairCut2);\r\n        return true;\r\n    }\r\n}\r\n"}},"settings":{"optimizer":{"enabled":false,"runs":20000},"viaIR":true,"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates","devdoc","userdoc"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"errors":[{"component":"general","errorCode":"6321","formattedMessage":"Warning: Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.\n   --> contracts/pools/BaluniV1Pool.sol:691:75:\n    |\n691 |     function getAssetReserve(address asset) public view override returns (uint256) {\n    |                                                                           ^^^^^^^\n\n","message":"Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.","severity":"warning","sourceLocation":{"end":26807,"file":"contracts/pools/BaluniV1Pool.sol","start":26800},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/pools/BaluniV1Pool.sol:870:32:\n    |\n870 |     function generateTokenName(address[] memory _assets) internal pure returns (string memory) {\n    |                                ^^^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":34142,"file":"contracts/pools/BaluniV1Pool.sol","start":34118},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"Warning: Function state mutability can be restricted to pure\n  --> contracts/mock/MockRebalancer.sol:93:5:\n   |\n93 |     function checkRebalance(\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":3994,"file":"contracts/mock/MockRebalancer.sol","start":3776},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"Warning: Function state mutability can be restricted to pure\n   --> contracts/mock/MockRebalancer.sol:101:5:\n    |\n101 |     function getBaluniRouter() external view returns (address) {\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":4097,"file":"contracts/mock/MockRebalancer.sol","start":4002},"type":"Warning"},{"component":"general","errorCode":"5574","formattedMessage":"Warning: Contract code size is 32324 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n  --> contracts/orchestators/BaluniV1Router.sol:58:1:\n   |\n58 | contract BaluniV1Router is\n   | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract code size is 32324 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.","severity":"warning","sourceLocation":{"end":25375,"file":"contracts/orchestators/BaluniV1Router.sol","start":2383},"type":"Warning"},{"component":"general","errorCode":"5574","formattedMessage":"Warning: Contract code size is 35567 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n  --> contracts/pools/BaluniV1Pool.sol:54:1:\n   |\n54 | contract BaluniV1Pool is\n   | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract code size is 35567 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.","severity":"warning","sourceLocation":{"end":35475,"file":"contracts/pools/BaluniV1Pool.sol","start":2182},"type":"Warning"},{"component":"general","errorCode":"5574","formattedMessage":"Warning: Contract code size is 24789 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n  --> contracts/vaults/BaluniV1YearnVault.sol:17:1:\n   |\n17 | contract BaluniV1YearnVault is\n   | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract code size is 24789 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.","severity":"warning","sourceLocation":{"end":10714,"file":"contracts/vaults/BaluniV1YearnVault.sol","start":773},"type":"Warning"}],"sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1293],"Initializable":[448],"OwnableUpgradeable":[194]},"id":195,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:0"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":195,"sourceUnit":1294,"src":"128:67:0","symbolAliases":[{"foreign":{"id":2,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"136:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":195,"sourceUnit":449,"src":"196:63:0","symbolAliases":[{"foreign":{"id":4,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"204:13:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7,"name":"Initializable","nameLocations":["789:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"789:13:0"},"id":8,"nodeType":"InheritanceSpecifier","src":"789:13:0"},{"baseName":{"id":9,"name":"ContextUpgradeable","nameLocations":["804:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":1293,"src":"804:18:0"},"id":10,"nodeType":"InheritanceSpecifier","src":"804:18:0"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"261:487:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":194,"linearizedBaseContracts":[194,1293,448],"name":"OwnableUpgradeable","nameLocation":"767:18:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"OwnableUpgradeable.OwnableStorage","documentation":{"id":11,"nodeType":"StructuredDocumentation","src":"829:65:0","text":"@custom:storage-location erc7201:openzeppelin.storage.Ownable"},"id":14,"members":[{"constant":false,"id":13,"mutability":"mutable","name":"_owner","nameLocation":"939:6:0","nodeType":"VariableDeclaration","scope":14,"src":"931:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"OwnableStorage","nameLocation":"906:14:0","nodeType":"StructDefinition","scope":194,"src":"899:53:0","visibility":"public"},{"constant":true,"id":17,"mutability":"constant","name":"OwnableStorageLocation","nameLocation":"1094:22:0","nodeType":"VariableDeclaration","scope":194,"src":"1069:116:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1069:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839303136643039643732643430666461653266643863656163366236323334633737303632313466643339633163643165363039613035323863313939333030","id":16,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1119:66:0","typeDescriptions":{"typeIdentifier":"t_rational_65173360639460082030725920392146925864023520599682862633725751242436743107328_by_1","typeString":"int_const 6517...(69 digits omitted)...7328"},"value":"0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300"},"visibility":"private"},{"body":{"id":24,"nodeType":"Block","src":"1270:81:0","statements":[{"AST":{"nativeSrc":"1289:56:0","nodeType":"YulBlock","src":"1289:56:0","statements":[{"nativeSrc":"1303:32:0","nodeType":"YulAssignment","src":"1303:32:0","value":{"name":"OwnableStorageLocation","nativeSrc":"1313:22:0","nodeType":"YulIdentifier","src":"1313:22:0"},"variableNames":[{"name":"$.slot","nativeSrc":"1303:6:0","nodeType":"YulIdentifier","src":"1303:6:0"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":21,"isOffset":false,"isSlot":true,"src":"1303:6:0","suffix":"slot","valueSize":1},{"declaration":17,"isOffset":false,"isSlot":false,"src":"1313:22:0","valueSize":1}],"id":23,"nodeType":"InlineAssembly","src":"1280:65:0"}]},"id":25,"implemented":true,"kind":"function","modifiers":[],"name":"_getOwnableStorage","nameLocation":"1201:18:0","nodeType":"FunctionDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"1219:2:0"},"returnParameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"$","nameLocation":"1267:1:0","nodeType":"VariableDeclaration","scope":25,"src":"1244:24:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":20,"nodeType":"UserDefinedTypeName","pathNode":{"id":19,"name":"OwnableStorage","nameLocations":["1244:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":14,"src":"1244:14:0"},"referencedDeclaration":14,"src":"1244:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"src":"1243:26:0"},"scope":194,"src":"1192:159:0","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":26,"nodeType":"StructuredDocumentation","src":"1357:85:0","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":30,"name":"OwnableUnauthorizedAccount","nameLocation":"1453:26:0","nodeType":"ErrorDefinition","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"mutability":"mutable","name":"account","nameLocation":"1488:7:0","nodeType":"VariableDeclaration","scope":30,"src":"1480:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27,"name":"address","nodeType":"ElementaryTypeName","src":"1480:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1479:17:0"},"src":"1447:50:0"},{"documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"1503:82:0","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":35,"name":"OwnableInvalidOwner","nameLocation":"1596:19:0","nodeType":"ErrorDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"owner","nameLocation":"1624:5:0","nodeType":"VariableDeclaration","scope":35,"src":"1616:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1615:15:0"},"src":"1590:41:0"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":41,"name":"OwnershipTransferred","nameLocation":"1643:20:0","nodeType":"EventDefinition","parameters":{"id":40,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1680:13:0","nodeType":"VariableDeclaration","scope":41,"src":"1664:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36,"name":"address","nodeType":"ElementaryTypeName","src":"1664:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1711:8:0","nodeType":"VariableDeclaration","scope":41,"src":"1695:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:57:0"},"src":"1637:84:0"},{"body":{"id":53,"nodeType":"Block","src":"1919:55:0","statements":[{"expression":{"arguments":[{"id":50,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1954:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":49,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"1929:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1929:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"1929:38:0"}]},"documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"1727:115:0","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":54,"implemented":true,"kind":"function","modifiers":[{"id":47,"kind":"modifierInvocation","modifierName":{"id":46,"name":"onlyInitializing","nameLocations":["1902:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"1902:16:0"},"nodeType":"ModifierInvocation","src":"1902:16:0"}],"name":"__Ownable_init","nameLocation":"1856:14:0","nodeType":"FunctionDefinition","parameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"initialOwner","nameLocation":"1879:12:0","nodeType":"VariableDeclaration","scope":54,"src":"1871:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43,"name":"address","nodeType":"ElementaryTypeName","src":"1871:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1870:22:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"1919:0:0"},"scope":194,"src":"1847:127:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":80,"nodeType":"Block","src":"2062:153:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":66,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"2076:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":63,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2092:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62,"name":"address","nodeType":"ElementaryTypeName","src":"2092:7:0","typeDescriptions":{}}},"id":65,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2092:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2076:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75,"nodeType":"IfStatement","src":"2072:95:0","trueBody":{"id":74,"nodeType":"Block","src":"2104:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":70,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2153:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":69,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2145:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"2145:7:0","typeDescriptions":{}}},"id":71,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2145:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2125:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2125:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73,"nodeType":"RevertStatement","src":"2118:38:0"}]}},{"expression":{"arguments":[{"id":77,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"2195:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"2176:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79,"nodeType":"ExpressionStatement","src":"2176:32:0"}]},"id":81,"implemented":true,"kind":"function","modifiers":[{"id":59,"kind":"modifierInvocation","modifierName":{"id":58,"name":"onlyInitializing","nameLocations":["2045:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2045:16:0"},"nodeType":"ModifierInvocation","src":"2045:16:0"}],"name":"__Ownable_init_unchained","nameLocation":"1989:24:0","nodeType":"FunctionDefinition","parameters":{"id":57,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56,"mutability":"mutable","name":"initialOwner","nameLocation":"2022:12:0","nodeType":"VariableDeclaration","scope":81,"src":"2014:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2013:22:0"},"returnParameters":{"id":60,"nodeType":"ParameterList","parameters":[],"src":"2062:0:0"},"scope":194,"src":"1980:235:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":88,"nodeType":"Block","src":"2324:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"2334:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2334:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86,"nodeType":"ExpressionStatement","src":"2334:13:0"},{"id":87,"nodeType":"PlaceholderStatement","src":"2357:1:0"}]},"documentation":{"id":82,"nodeType":"StructuredDocumentation","src":"2221:77:0","text":" @dev Throws if called by any account other than the owner."},"id":89,"name":"onlyOwner","nameLocation":"2312:9:0","nodeType":"ModifierDefinition","parameters":{"id":83,"nodeType":"ParameterList","parameters":[],"src":"2321:2:0"},"src":"2303:62:0","virtual":false,"visibility":"internal"},{"body":{"id":104,"nodeType":"Block","src":"2496:89:0","statements":[{"assignments":[97],"declarations":[{"constant":false,"id":97,"mutability":"mutable","name":"$","nameLocation":"2529:1:0","nodeType":"VariableDeclaration","scope":104,"src":"2506:24:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":96,"nodeType":"UserDefinedTypeName","pathNode":{"id":95,"name":"OwnableStorage","nameLocations":["2506:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":14,"src":"2506:14:0"},"referencedDeclaration":14,"src":"2506:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"id":100,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":98,"name":"_getOwnableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"2533:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_OwnableStorage_$14_storage_ptr_$","typeString":"function () pure returns (struct OwnableUpgradeable.OwnableStorage storage pointer)"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2533:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2506:47:0"},{"expression":{"expression":{"id":101,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97,"src":"2570:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2572:6:0","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":13,"src":"2570:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":94,"id":103,"nodeType":"Return","src":"2563:15:0"}]},"documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"2371:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":105,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2450:5:0","nodeType":"FunctionDefinition","parameters":{"id":91,"nodeType":"ParameterList","parameters":[],"src":"2455:2:0"},"returnParameters":{"id":94,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":105,"src":"2487:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"2487:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2486:9:0"},"scope":194,"src":"2441:144:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":121,"nodeType":"Block","src":"2703:117:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":109,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":105,"src":"2717:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2717:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":111,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"2728:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2717:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":120,"nodeType":"IfStatement","src":"2713:101:0","trueBody":{"id":119,"nodeType":"Block","src":"2742:72:0","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":115,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"2790:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2790:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":114,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"2763:26:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2763:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":118,"nodeType":"RevertStatement","src":"2756:47:0"}]}}]},"documentation":{"id":106,"nodeType":"StructuredDocumentation","src":"2591:62:0","text":" @dev Throws if the sender is not the owner."},"id":122,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2667:11:0","nodeType":"FunctionDefinition","parameters":{"id":107,"nodeType":"ParameterList","parameters":[],"src":"2678:2:0"},"returnParameters":{"id":108,"nodeType":"ParameterList","parameters":[],"src":"2703:0:0"},"scope":194,"src":"2658:162:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":135,"nodeType":"Block","src":"3209:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3246:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3238:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"3238:7:0","typeDescriptions":{}}},"id":132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3238:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":128,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"3219:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3219:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134,"nodeType":"ExpressionStatement","src":"3219:30:0"}]},"documentation":{"id":123,"nodeType":"StructuredDocumentation","src":"2826:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":136,"implemented":true,"kind":"function","modifiers":[{"id":126,"kind":"modifierInvocation","modifierName":{"id":125,"name":"onlyOwner","nameLocations":["3199:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3199:9:0"},"nodeType":"ModifierInvocation","src":"3199:9:0"}],"name":"renounceOwnership","nameLocation":"3164:17:0","nodeType":"FunctionDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"3181:2:0"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"3209:0:0"},"scope":194,"src":"3155:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":163,"nodeType":"Block","src":"3475:145:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":144,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":139,"src":"3489:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3509:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3501:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":145,"name":"address","nodeType":"ElementaryTypeName","src":"3501:7:0","typeDescriptions":{}}},"id":148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3489:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":158,"nodeType":"IfStatement","src":"3485:91:0","trueBody":{"id":157,"nodeType":"Block","src":"3513:63:0","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3562:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3554:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"3554:7:0","typeDescriptions":{}}},"id":154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3554:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":150,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"3534:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3534:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":156,"nodeType":"RevertStatement","src":"3527:38:0"}]}},{"expression":{"arguments":[{"id":160,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":139,"src":"3604:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":159,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"3585:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3585:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":162,"nodeType":"ExpressionStatement","src":"3585:28:0"}]},"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"3262:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":164,"implemented":true,"kind":"function","modifiers":[{"id":142,"kind":"modifierInvocation","modifierName":{"id":141,"name":"onlyOwner","nameLocations":["3465:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3465:9:0"},"nodeType":"ModifierInvocation","src":"3465:9:0"}],"name":"transferOwnership","nameLocation":"3414:17:0","nodeType":"FunctionDefinition","parameters":{"id":140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"mutability":"mutable","name":"newOwner","nameLocation":"3440:8:0","nodeType":"VariableDeclaration","scope":164,"src":"3432:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"3432:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3431:18:0"},"returnParameters":{"id":143,"nodeType":"ParameterList","parameters":[],"src":"3475:0:0"},"scope":194,"src":"3405:215:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":192,"nodeType":"Block","src":"3837:185:0","statements":[{"assignments":[172],"declarations":[{"constant":false,"id":172,"mutability":"mutable","name":"$","nameLocation":"3870:1:0","nodeType":"VariableDeclaration","scope":192,"src":"3847:24:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":171,"nodeType":"UserDefinedTypeName","pathNode":{"id":170,"name":"OwnableStorage","nameLocations":["3847:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":14,"src":"3847:14:0"},"referencedDeclaration":14,"src":"3847:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"id":175,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":173,"name":"_getOwnableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"3874:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_OwnableStorage_$14_storage_ptr_$","typeString":"function () pure returns (struct OwnableUpgradeable.OwnableStorage storage pointer)"}},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3874:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3847:47:0"},{"assignments":[177],"declarations":[{"constant":false,"id":177,"mutability":"mutable","name":"oldOwner","nameLocation":"3912:8:0","nodeType":"VariableDeclaration","scope":192,"src":"3904:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"3904:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":180,"initialValue":{"expression":{"id":178,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"3923:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3925:6:0","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":13,"src":"3923:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3904:27:0"},{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":181,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"3941:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$14_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3943:6:0","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":13,"src":"3941:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":184,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"3952:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3941:19:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":186,"nodeType":"ExpressionStatement","src":"3941:19:0"},{"eventCall":{"arguments":[{"id":188,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"3996:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":189,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"4006:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":187,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"3975:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3975:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":191,"nodeType":"EmitStatement","src":"3970:45:0"}]},"documentation":{"id":165,"nodeType":"StructuredDocumentation","src":"3626:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":193,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3783:18:0","nodeType":"FunctionDefinition","parameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"newOwner","nameLocation":"3810:8:0","nodeType":"VariableDeclaration","scope":193,"src":"3802:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":166,"name":"address","nodeType":"ElementaryTypeName","src":"3802:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3801:18:0"},"returnParameters":{"id":169,"nodeType":"ParameterList","parameters":[],"src":"3837:0:0"},"scope":194,"src":"3774:248:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":195,"src":"749:3275:0","usedErrors":[30,35,211,214],"usedEvents":[41,219]}],"src":"102:3923:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[448]},"id":449,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":196,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:1"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":197,"nodeType":"StructuredDocumentation","src":"139:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":448,"linearizedBaseContracts":[448],"name":"Initializable","nameLocation":"2367:13:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"2387:293:1","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"id":205,"members":[{"constant":false,"id":201,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:1","nodeType":"VariableDeclaration","scope":205,"src":"2813:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":200,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":204,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:1","nodeType":"VariableDeclaration","scope":205,"src":"2950:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":203,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:1","nodeType":"StructDefinition","scope":448,"src":"2685:290:1","visibility":"public"},{"constant":true,"id":208,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:1","nodeType":"VariableDeclaration","scope":448,"src":"3098:115:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:1","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":209,"nodeType":"StructuredDocumentation","src":"3220:60:1","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":211,"name":"InvalidInitialization","nameLocation":"3291:21:1","nodeType":"ErrorDefinition","parameters":{"id":210,"nodeType":"ParameterList","parameters":[],"src":"3312:2:1"},"src":"3285:30:1"},{"documentation":{"id":212,"nodeType":"StructuredDocumentation","src":"3321:57:1","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":214,"name":"NotInitializing","nameLocation":"3389:15:1","nodeType":"ErrorDefinition","parameters":{"id":213,"nodeType":"ParameterList","parameters":[],"src":"3404:2:1"},"src":"3383:24:1"},{"anonymous":false,"documentation":{"id":215,"nodeType":"StructuredDocumentation","src":"3413:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":219,"name":"Initialized","nameLocation":"3514:11:1","nodeType":"EventDefinition","parameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:1","nodeType":"VariableDeclaration","scope":219,"src":"3526:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":216,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:1"},"src":"3508:34:1"},{"body":{"id":301,"nodeType":"Block","src":"4092:1081:1","statements":[{"assignments":[224],"declarations":[{"constant":false,"id":224,"mutability":"mutable","name":"$","nameLocation":"4187:1:1","nodeType":"VariableDeclaration","scope":301,"src":"4158:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":223,"nodeType":"UserDefinedTypeName","pathNode":{"id":222,"name":"InitializableStorage","nameLocations":["4158:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":205,"src":"4158:20:1"},"referencedDeclaration":205,"src":"4158:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":227,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":225,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"4191:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:1"},{"assignments":[229],"declarations":[{"constant":false,"id":229,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:1","nodeType":"VariableDeclaration","scope":301,"src":"4279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":228,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":233,"initialValue":{"id":232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:1","subExpression":{"expression":{"id":230,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"4302:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"4302:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:1"},{"assignments":[235],"declarations":[{"constant":false,"id":235,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:1","nodeType":"VariableDeclaration","scope":301,"src":"4327:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":234,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":238,"initialValue":{"expression":{"id":236,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"4348:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"4348:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:1"},{"assignments":[240],"declarations":[{"constant":false,"id":240,"mutability":"mutable","name":"initialSetup","nameLocation":"4711:12:1","nodeType":"VariableDeclaration","scope":301,"src":"4706:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":239,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":246,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":241,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"4726:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4741:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4726:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":244,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"4746:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4726:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4706:54:1"},{"assignments":[248],"declarations":[{"constant":false,"id":248,"mutability":"mutable","name":"construction","nameLocation":"4775:12:1","nodeType":"VariableDeclaration","scope":301,"src":"4770:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":247,"name":"bool","nodeType":"ElementaryTypeName","src":"4770:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":261,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":249,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"4790:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4805:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4790:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":254,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4818:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$448","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$448","typeString":"contract Initializable"}],"id":253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4810:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":252,"name":"address","nodeType":"ElementaryTypeName","src":"4810:7:1","typeDescriptions":{}}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4810:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4824:4:1","memberName":"code","nodeType":"MemberAccess","src":"4810:18:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4829:6:1","memberName":"length","nodeType":"MemberAccess","src":"4810:25:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4810:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4790:50:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4770:70:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4855:13:1","subExpression":{"id":262,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"4856:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4872:13:1","subExpression":{"id":264,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"4873:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4855:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":271,"nodeType":"IfStatement","src":"4851:91:1","trueBody":{"id":270,"nodeType":"Block","src":"4887:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":267,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":211,"src":"4908:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4908:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":269,"nodeType":"RevertStatement","src":"4901:30:1"}]}},{"expression":{"id":276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":272,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"4951:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4953:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"4951:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4968:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4951:18:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":277,"nodeType":"ExpressionStatement","src":"4951:18:1"},{"condition":{"id":278,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"4983:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":286,"nodeType":"IfStatement","src":"4979:67:1","trueBody":{"id":285,"nodeType":"Block","src":"4999:47:1","statements":[{"expression":{"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":279,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"5013:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5015:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"5013:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5031:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5013:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":284,"nodeType":"ExpressionStatement","src":"5013:22:1"}]}},{"id":287,"nodeType":"PlaceholderStatement","src":"5055:1:1"},{"condition":{"id":288,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"5070:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":300,"nodeType":"IfStatement","src":"5066:101:1","trueBody":{"id":299,"nodeType":"Block","src":"5086:81:1","statements":[{"expression":{"id":293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":289,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":224,"src":"5100:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5102:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"5100:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5118:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5100:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":294,"nodeType":"ExpressionStatement","src":"5100:23:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5154:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":295,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":219,"src":"5142:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":298,"nodeType":"EmitStatement","src":"5137:19:1"}]}}]},"documentation":{"id":220,"nodeType":"StructuredDocumentation","src":"3548:516:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"id":302,"name":"initializer","nameLocation":"4078:11:1","nodeType":"ModifierDefinition","parameters":{"id":221,"nodeType":"ParameterList","parameters":[],"src":"4089:2:1"},"src":"4069:1104:1","virtual":false,"visibility":"internal"},{"body":{"id":348,"nodeType":"Block","src":"6291:392:1","statements":[{"assignments":[309],"declarations":[{"constant":false,"id":309,"mutability":"mutable","name":"$","nameLocation":"6386:1:1","nodeType":"VariableDeclaration","scope":348,"src":"6357:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":308,"nodeType":"UserDefinedTypeName","pathNode":{"id":307,"name":"InitializableStorage","nameLocations":["6357:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":205,"src":"6357:20:1"},"referencedDeclaration":205,"src":"6357:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":312,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":310,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"6390:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6357:59:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":313,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6431:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6433:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"6431:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":315,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6450:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6452:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"6450:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":317,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"6468:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6450:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6431:44:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":324,"nodeType":"IfStatement","src":"6427:105:1","trueBody":{"id":323,"nodeType":"Block","src":"6477:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":320,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":211,"src":"6498:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":322,"nodeType":"RevertStatement","src":"6491:30:1"}]}},{"expression":{"id":329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":325,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6541:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6543:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"6541:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":328,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"6558:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6541:24:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":330,"nodeType":"ExpressionStatement","src":"6541:24:1"},{"expression":{"id":335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":331,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6575:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6577:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"6575:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6593:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6575:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":336,"nodeType":"ExpressionStatement","src":"6575:22:1"},{"id":337,"nodeType":"PlaceholderStatement","src":"6607:1:1"},{"expression":{"id":342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":338,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6618:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6620:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"6618:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6636:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6618:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":343,"nodeType":"ExpressionStatement","src":"6618:23:1"},{"eventCall":{"arguments":[{"id":345,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"6668:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":344,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":219,"src":"6656:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6656:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":347,"nodeType":"EmitStatement","src":"6651:25:1"}]},"documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"5179:1068:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":349,"name":"reinitializer","nameLocation":"6261:13:1","nodeType":"ModifierDefinition","parameters":{"id":306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":305,"mutability":"mutable","name":"version","nameLocation":"6282:7:1","nodeType":"VariableDeclaration","scope":349,"src":"6275:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":304,"name":"uint64","nodeType":"ElementaryTypeName","src":"6275:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6274:16:1"},"src":"6252:431:1","virtual":false,"visibility":"internal"},{"body":{"id":356,"nodeType":"Block","src":"6921:48:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":352,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"6931:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6931:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":354,"nodeType":"ExpressionStatement","src":"6931:20:1"},{"id":355,"nodeType":"PlaceholderStatement","src":"6961:1:1"}]},"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"6689:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":357,"name":"onlyInitializing","nameLocation":"6902:16:1","nodeType":"ModifierDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[],"src":"6918:2:1"},"src":"6893:76:1","virtual":false,"visibility":"internal"},{"body":{"id":369,"nodeType":"Block","src":"7136:89:1","statements":[{"condition":{"id":363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7150:18:1","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":361,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":438,"src":"7151:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7151:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":368,"nodeType":"IfStatement","src":"7146:73:1","trueBody":{"id":367,"nodeType":"Block","src":"7170:49:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":364,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"7191:15:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7191:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":366,"nodeType":"RevertStatement","src":"7184:24:1"}]}}]},"documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"6975:104:1","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":370,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7093:18:1","nodeType":"FunctionDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[],"src":"7111:2:1"},"returnParameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"7136:0:1"},"scope":448,"src":"7084:141:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":415,"nodeType":"Block","src":"7760:373:1","statements":[{"assignments":[376],"declarations":[{"constant":false,"id":376,"mutability":"mutable","name":"$","nameLocation":"7855:1:1","nodeType":"VariableDeclaration","scope":415,"src":"7826:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":375,"nodeType":"UserDefinedTypeName","pathNode":{"id":374,"name":"InitializableStorage","nameLocations":["7826:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":205,"src":"7826:20:1"},"referencedDeclaration":205,"src":"7826:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":379,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":377,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"7859:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7859:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7826:59:1"},{"condition":{"expression":{"id":380,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"7900:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7902:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"7900:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":386,"nodeType":"IfStatement","src":"7896:76:1","trueBody":{"id":385,"nodeType":"Block","src":"7917:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":382,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":211,"src":"7938:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7938:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":384,"nodeType":"RevertStatement","src":"7931:30:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":387,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"7985:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7987:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"7985:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8008:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":390,"name":"uint64","nodeType":"ElementaryTypeName","src":"8008:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":389,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8003:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8003:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8016:3:1","memberName":"max","nodeType":"MemberAccess","src":"8003:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7985:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":414,"nodeType":"IfStatement","src":"7981:146:1","trueBody":{"id":413,"nodeType":"Block","src":"8021:106:1","statements":[{"expression":{"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":395,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"8035:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8037:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"8035:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8057:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":399,"name":"uint64","nodeType":"ElementaryTypeName","src":"8057:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":398,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8052:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8065:3:1","memberName":"max","nodeType":"MemberAccess","src":"8052:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8035:33:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":404,"nodeType":"ExpressionStatement","src":"8035:33:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8104:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":407,"name":"uint64","nodeType":"ElementaryTypeName","src":"8104:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":406,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8099:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8099:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8112:3:1","memberName":"max","nodeType":"MemberAccess","src":"8099:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":405,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":219,"src":"8087:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8087:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":412,"nodeType":"EmitStatement","src":"8082:34:1"}]}}]},"documentation":{"id":371,"nodeType":"StructuredDocumentation","src":"7231:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":416,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7720:20:1","nodeType":"FunctionDefinition","parameters":{"id":372,"nodeType":"ParameterList","parameters":[],"src":"7740:2:1"},"returnParameters":{"id":373,"nodeType":"ParameterList","parameters":[],"src":"7760:0:1"},"scope":448,"src":"7711:422:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":426,"nodeType":"Block","src":"8308:63:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":422,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"8325:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8352:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":201,"src":"8325:39:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":421,"id":425,"nodeType":"Return","src":"8318:46:1"}]},"documentation":{"id":417,"nodeType":"StructuredDocumentation","src":"8139:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":427,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8252:22:1","nodeType":"FunctionDefinition","parameters":{"id":418,"nodeType":"ParameterList","parameters":[],"src":"8274:2:1"},"returnParameters":{"id":421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":420,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":427,"src":"8300:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":419,"name":"uint64","nodeType":"ElementaryTypeName","src":"8300:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8299:8:1"},"scope":448,"src":"8243:128:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":437,"nodeType":"Block","src":"8543:64:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":433,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"8560:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$205_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8587:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":204,"src":"8560:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":432,"id":436,"nodeType":"Return","src":"8553:47:1"}]},"documentation":{"id":428,"nodeType":"StructuredDocumentation","src":"8377:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":438,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8496:15:1","nodeType":"FunctionDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[],"src":"8511:2:1"},"returnParameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":431,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":438,"src":"8537:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":430,"name":"bool","nodeType":"ElementaryTypeName","src":"8537:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8536:6:1"},"scope":448,"src":"8487:120:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":446,"nodeType":"Block","src":"8827:80:1","statements":[{"AST":{"nativeSrc":"8846:55:1","nodeType":"YulBlock","src":"8846:55:1","statements":[{"nativeSrc":"8860:31:1","nodeType":"YulAssignment","src":"8860:31:1","value":{"name":"INITIALIZABLE_STORAGE","nativeSrc":"8870:21:1","nodeType":"YulIdentifier","src":"8870:21:1"},"variableNames":[{"name":"$.slot","nativeSrc":"8860:6:1","nodeType":"YulIdentifier","src":"8860:6:1"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":443,"isOffset":false,"isSlot":true,"src":"8860:6:1","suffix":"slot","valueSize":1},{"declaration":208,"isOffset":false,"isSlot":false,"src":"8870:21:1","valueSize":1}],"id":445,"nodeType":"InlineAssembly","src":"8837:64:1"}]},"documentation":{"id":439,"nodeType":"StructuredDocumentation","src":"8613:67:1","text":" @dev Returns a pointer to the storage namespace."},"id":447,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"8746:24:1","nodeType":"FunctionDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[],"src":"8770:2:1"},"returnParameters":{"id":444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":443,"mutability":"mutable","name":"$","nameLocation":"8824:1:1","nodeType":"VariableDeclaration","scope":447,"src":"8795:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":442,"nodeType":"UserDefinedTypeName","pathNode":{"id":441,"name":"InitializableStorage","nameLocations":["8795:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":205,"src":"8795:20:1"},"referencedDeclaration":205,"src":"8795:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$205_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"8794:32:1"},"scope":448,"src":"8737:170:1","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":449,"src":"2349:6560:1","usedErrors":[211,214],"usedEvents":[219]}],"src":"113:8797:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[2048],"IERC1822Proxiable":[1608],"Initializable":[448],"UUPSUpgradeable":[630]},"id":631,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":450,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:2"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":452,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":631,"sourceUnit":1609,"src":"141:88:2","symbolAliases":[{"foreign":{"id":451,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"149:17:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":454,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":631,"sourceUnit":2049,"src":"230:84:2","symbolAliases":[{"foreign":{"id":453,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"238:12:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":456,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":631,"sourceUnit":449,"src":"315:50:2","symbolAliases":[{"foreign":{"id":455,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"323:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":458,"name":"Initializable","nameLocations":["1023:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1023:13:2"},"id":459,"nodeType":"InheritanceSpecifier","src":"1023:13:2"},{"baseName":{"id":460,"name":"IERC1822Proxiable","nameLocations":["1038:17:2"],"nodeType":"IdentifierPath","referencedDeclaration":1608,"src":"1038:17:2"},"id":461,"nodeType":"InheritanceSpecifier","src":"1038:17:2"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":457,"nodeType":"StructuredDocumentation","src":"367:618:2","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism."},"fullyImplemented":false,"id":630,"linearizedBaseContracts":[630,1608,448],"name":"UUPSUpgradeable","nameLocation":"1004:15:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":462,"nodeType":"StructuredDocumentation","src":"1062:61:2","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":468,"mutability":"immutable","name":"__self","nameLocation":"1154:6:2","nodeType":"VariableDeclaration","scope":630,"src":"1128:48:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":463,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":466,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}],"id":465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":464,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:2","typeDescriptions":{}}},"id":467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":469,"nodeType":"StructuredDocumentation","src":"1183:631:2","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade."},"functionSelector":"ad3cb1cc","id":472,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:2","nodeType":"VariableDeclaration","scope":630,"src":"1819:58:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":470,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":473,"nodeType":"StructuredDocumentation","src":"1884:65:2","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":475,"name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:2","nodeType":"ErrorDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[],"src":"1987:2:2"},"src":"1954:36:2"},{"documentation":{"id":476,"nodeType":"StructuredDocumentation","src":"1996:68:2","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":480,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:2","nodeType":"ErrorDefinition","parameters":{"id":479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"slot","nameLocation":"2112:4:2","nodeType":"VariableDeclaration","scope":480,"src":"2104:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":477,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:2"},"src":"2069:49:2"},{"body":{"id":487,"nodeType":"Block","src":"2643:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":483,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"2653:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2653:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":485,"nodeType":"ExpressionStatement","src":"2653:13:2"},{"id":486,"nodeType":"PlaceholderStatement","src":"2676:1:2"}]},"documentation":{"id":481,"nodeType":"StructuredDocumentation","src":"2124:493:2","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":488,"name":"onlyProxy","nameLocation":"2631:9:2","nodeType":"ModifierDefinition","parameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"2640:2:2"},"src":"2622:62:2","virtual":false,"visibility":"internal"},{"body":{"id":495,"nodeType":"Block","src":"2914:48:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":491,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"2924:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2924:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":493,"nodeType":"ExpressionStatement","src":"2924:20:2"},{"id":494,"nodeType":"PlaceholderStatement","src":"2954:1:2"}]},"documentation":{"id":489,"nodeType":"StructuredDocumentation","src":"2690:195:2","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":496,"name":"notDelegated","nameLocation":"2899:12:2","nodeType":"ModifierDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[],"src":"2911:2:2"},"src":"2890:72:2","virtual":false,"visibility":"internal"},{"body":{"id":501,"nodeType":"Block","src":"3028:7:2","statements":[]},"id":502,"implemented":true,"kind":"function","modifiers":[{"id":499,"kind":"modifierInvocation","modifierName":{"id":498,"name":"onlyInitializing","nameLocations":["3011:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"3011:16:2"},"nodeType":"ModifierInvocation","src":"3011:16:2"}],"name":"__UUPSUpgradeable_init","nameLocation":"2977:22:2","nodeType":"FunctionDefinition","parameters":{"id":497,"nodeType":"ParameterList","parameters":[],"src":"2999:2:2"},"returnParameters":{"id":500,"nodeType":"ParameterList","parameters":[],"src":"3028:0:2"},"scope":630,"src":"2968:67:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":507,"nodeType":"Block","src":"3111:7:2","statements":[]},"id":508,"implemented":true,"kind":"function","modifiers":[{"id":505,"kind":"modifierInvocation","modifierName":{"id":504,"name":"onlyInitializing","nameLocations":["3094:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"3094:16:2"},"nodeType":"ModifierInvocation","src":"3094:16:2"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3050:32:2","nodeType":"FunctionDefinition","parameters":{"id":503,"nodeType":"ParameterList","parameters":[],"src":"3082:2:2"},"returnParameters":{"id":506,"nodeType":"ParameterList","parameters":[],"src":"3111:0:2"},"scope":630,"src":"3041:77:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1607],"body":{"id":519,"nodeType":"Block","src":"3783:56:2","statements":[{"expression":{"expression":{"id":516,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"3800:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3813:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1775,"src":"3800:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":515,"id":518,"nodeType":"Return","src":"3793:39:2"}]},"documentation":{"id":509,"nodeType":"StructuredDocumentation","src":"3123:577:2","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":520,"implemented":true,"kind":"function","modifiers":[{"id":512,"kind":"modifierInvocation","modifierName":{"id":511,"name":"notDelegated","nameLocations":["3752:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":496,"src":"3752:12:2"},"nodeType":"ModifierInvocation","src":"3752:12:2"}],"name":"proxiableUUID","nameLocation":"3714:13:2","nodeType":"FunctionDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[],"src":"3727:2:2"},"returnParameters":{"id":515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":520,"src":"3774:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3774:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3773:9:2"},"scope":630,"src":"3705:134:2","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":539,"nodeType":"Block","src":"4263:109:2","statements":[{"expression":{"arguments":[{"id":531,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"4291:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":530,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"4273:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4273:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":533,"nodeType":"ExpressionStatement","src":"4273:36:2"},{"expression":{"arguments":[{"id":535,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"4341:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":536,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"4360:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":534,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"4319:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4319:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":538,"nodeType":"ExpressionStatement","src":"4319:46:2"}]},"documentation":{"id":521,"nodeType":"StructuredDocumentation","src":"3845:308:2","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":540,"implemented":true,"kind":"function","modifiers":[{"id":528,"kind":"modifierInvocation","modifierName":{"id":527,"name":"onlyProxy","nameLocations":["4253:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":488,"src":"4253:9:2"},"nodeType":"ModifierInvocation","src":"4253:9:2"}],"name":"upgradeToAndCall","nameLocation":"4167:16:2","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":523,"mutability":"mutable","name":"newImplementation","nameLocation":"4192:17:2","nodeType":"VariableDeclaration","scope":540,"src":"4184:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":522,"name":"address","nodeType":"ElementaryTypeName","src":"4184:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":525,"mutability":"mutable","name":"data","nameLocation":"4224:4:2","nodeType":"VariableDeclaration","scope":540,"src":"4211:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":524,"name":"bytes","nodeType":"ElementaryTypeName","src":"4211:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4183:46:2"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[],"src":"4263:0:2"},"scope":630,"src":"4158:214:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":561,"nodeType":"Block","src":"4644:267:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":546,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4679:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}],"id":545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4671:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":544,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:2","typeDescriptions":{}}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4671:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":548,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":468,"src":"4688:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4671:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":550,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"4749:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4762:17:2","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"4749:30:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":553,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":468,"src":"4785:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4749:42:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4671:120:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":560,"nodeType":"IfStatement","src":"4654:251:2","trueBody":{"id":559,"nodeType":"Block","src":"4844:61:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":556,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"4865:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":558,"nodeType":"RevertStatement","src":"4858:36:2"}]}}]},"documentation":{"id":541,"nodeType":"StructuredDocumentation","src":"4378:216:2","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n See {_onlyProxy}."},"id":562,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4608:11:2","nodeType":"FunctionDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[],"src":"4619:2:2"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"4644:0:2"},"scope":630,"src":"4599:312:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":577,"nodeType":"Block","src":"5080:161:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":568,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5102:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$630","typeString":"contract UUPSUpgradeable"}],"id":567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5094:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":566,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:2","typeDescriptions":{}}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":570,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":468,"src":"5111:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5094:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":576,"nodeType":"IfStatement","src":"5090:145:2","trueBody":{"id":575,"nodeType":"Block","src":"5119:116:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":572,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"5195:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5195:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":574,"nodeType":"RevertStatement","src":"5188:36:2"}]}}]},"documentation":{"id":563,"nodeType":"StructuredDocumentation","src":"4917:106:2","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":578,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5037:18:2","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[],"src":"5055:2:2"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[],"src":"5080:0:2"},"scope":630,"src":"5028:213:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":579,"nodeType":"StructuredDocumentation","src":"5247:372:2","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```"},"id":584,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5633:17:2","nodeType":"FunctionDefinition","parameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"newImplementation","nameLocation":"5659:17:2","nodeType":"VariableDeclaration","scope":584,"src":"5651:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":580,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:27:2"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[],"src":"5694:0:2"},"scope":630,"src":"5624:71:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":628,"nodeType":"Block","src":"6137:453:2","statements":[{"clauses":[{"block":{"id":617,"nodeType":"Block","src":"6227:212:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":600,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":601,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"6253:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6266:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1775,"src":"6253:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6245:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":609,"nodeType":"IfStatement","src":"6241:120:2","trueBody":{"id":608,"nodeType":"Block","src":"6287:74:2","statements":[{"errorCall":{"arguments":[{"id":605,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"6341:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":604,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"6312:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":607,"nodeType":"RevertStatement","src":"6305:41:2"}]}},{"expression":{"arguments":[{"id":613,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"6404:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":614,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"6423:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":610,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"6374:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6387:16:2","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1867,"src":"6374:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":616,"nodeType":"ExpressionStatement","src":"6374:54:2"}]},"errorName":"","id":618,"nodeType":"TryCatchClause","parameters":{"id":599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":598,"mutability":"mutable","name":"slot","nameLocation":"6221:4:2","nodeType":"VariableDeclaration","scope":618,"src":"6213:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6213:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6212:14:2"},"src":"6204:235:2"},{"block":{"id":625,"nodeType":"Block","src":"6446:138:2","statements":[{"errorCall":{"arguments":[{"id":622,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"6555:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":619,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"6513:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2048_$","typeString":"type(library ERC1967Utils)"}},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6526:28:2","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":1780,"src":"6513:41:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6513:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":624,"nodeType":"RevertStatement","src":"6506:67:2"}]},"errorName":"","id":626,"nodeType":"TryCatchClause","src":"6440:144:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":593,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"6169:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":592,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1608,"src":"6151:17:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$1608_$","typeString":"type(contract IERC1822Proxiable)"}},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$1608","typeString":"contract IERC1822Proxiable"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6188:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":1607,"src":"6151:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:52:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":627,"nodeType":"TryStatement","src":"6147:437:2"}]},"documentation":{"id":585,"nodeType":"StructuredDocumentation","src":"5701:346:2","text":" @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC1967.\n Emits an {IERC1967-Upgraded} event."},"id":629,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6061:21:2","nodeType":"FunctionDefinition","parameters":{"id":590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":587,"mutability":"mutable","name":"newImplementation","nameLocation":"6091:17:2","nodeType":"VariableDeclaration","scope":629,"src":"6083:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":586,"name":"address","nodeType":"ElementaryTypeName","src":"6083:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":589,"mutability":"mutable","name":"data","nameLocation":"6123:4:2","nodeType":"VariableDeclaration","scope":629,"src":"6110:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":588,"name":"bytes","nodeType":"ElementaryTypeName","src":"6110:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6082:46:2"},"returnParameters":{"id":591,"nodeType":"ParameterList","parameters":[],"src":"6137:0:2"},"scope":630,"src":"6052:538:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":631,"src":"986:5606:2","usedErrors":[211,214,475,480,1780,1793,2690,2693],"usedEvents":[219,1759]}],"src":"115:6478:2"},"id":2},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1293],"ERC20Upgradeable":[1247],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"Initializable":[448]},"id":1248,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":632,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":634,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":2652,"src":"131:70:3","symbolAliases":[{"foreign":{"id":633,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"139:6:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":636,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":2678,"src":"202:97:3","symbolAliases":[{"foreign":{"id":635,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"210:14:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","id":638,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":1294,"src":"300:70:3","symbolAliases":[{"foreign":{"id":637,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"308:18:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","id":640,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":1746,"src":"371:83:3","symbolAliases":[{"foreign":{"id":639,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"379:12:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":642,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":449,"src":"455:66:3","symbolAliases":[{"foreign":{"id":641,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"463:13:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":644,"name":"Initializable","nameLocations":["1614:13:3"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1614:13:3"},"id":645,"nodeType":"InheritanceSpecifier","src":"1614:13:3"},{"baseName":{"id":646,"name":"ContextUpgradeable","nameLocations":["1629:18:3"],"nodeType":"IdentifierPath","referencedDeclaration":1293,"src":"1629:18:3"},"id":647,"nodeType":"InheritanceSpecifier","src":"1629:18:3"},{"baseName":{"id":648,"name":"IERC20","nameLocations":["1649:6:3"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"1649:6:3"},"id":649,"nodeType":"InheritanceSpecifier","src":"1649:6:3"},{"baseName":{"id":650,"name":"IERC20Metadata","nameLocations":["1657:14:3"],"nodeType":"IdentifierPath","referencedDeclaration":2677,"src":"1657:14:3"},"id":651,"nodeType":"InheritanceSpecifier","src":"1657:14:3"},{"baseName":{"id":652,"name":"IERC20Errors","nameLocations":["1673:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":1650,"src":"1673:12:3"},"id":653,"nodeType":"InheritanceSpecifier","src":"1673:12:3"}],"canonicalName":"ERC20Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":643,"nodeType":"StructuredDocumentation","src":"523:1052:3","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification."},"fullyImplemented":true,"id":1247,"linearizedBaseContracts":[1247,1650,2677,2651,1293,448],"name":"ERC20Upgradeable","nameLocation":"1594:16:3","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ERC20Upgradeable.ERC20Storage","documentation":{"id":654,"nodeType":"StructuredDocumentation","src":"1692:63:3","text":"@custom:storage-location erc7201:openzeppelin.storage.ERC20"},"id":671,"members":[{"constant":false,"id":658,"mutability":"mutable","name":"_balances","nameLocation":"1826:9:3","nodeType":"VariableDeclaration","scope":671,"src":"1790:45:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":657,"keyName":"account","keyNameLocation":"1806:7:3","keyType":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1790:35:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":656,"name":"uint256","nodeType":"ElementaryTypeName","src":"1817:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":664,"mutability":"mutable","name":"_allowances","nameLocation":"1910:11:3","nodeType":"VariableDeclaration","scope":671,"src":"1846:75:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":663,"keyName":"account","keyNameLocation":"1862:7:3","keyType":{"id":659,"name":"address","nodeType":"ElementaryTypeName","src":"1854:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1846:63:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":662,"keyName":"spender","keyNameLocation":"1889:7:3","keyType":{"id":660,"name":"address","nodeType":"ElementaryTypeName","src":"1881:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1873:35:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":661,"name":"uint256","nodeType":"ElementaryTypeName","src":"1900:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":666,"mutability":"mutable","name":"_totalSupply","nameLocation":"1940:12:3","nodeType":"VariableDeclaration","scope":671,"src":"1932:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":665,"name":"uint256","nodeType":"ElementaryTypeName","src":"1932:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":668,"mutability":"mutable","name":"_name","nameLocation":"1970:5:3","nodeType":"VariableDeclaration","scope":671,"src":"1963:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":667,"name":"string","nodeType":"ElementaryTypeName","src":"1963:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":670,"mutability":"mutable","name":"_symbol","nameLocation":"1992:7:3","nodeType":"VariableDeclaration","scope":671,"src":"1985:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":669,"name":"string","nodeType":"ElementaryTypeName","src":"1985:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"ERC20Storage","nameLocation":"1767:12:3","nodeType":"StructDefinition","scope":1247,"src":"1760:246:3","visibility":"public"},{"constant":true,"id":674,"mutability":"constant","name":"ERC20StorageLocation","nameLocation":"2146:20:3","nodeType":"VariableDeclaration","scope":1247,"src":"2121:114:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2121:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835326336333234376531663437646231396435636530343630303330633439376630363763613463656266373162613938656561646162653230626163653030","id":673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2169:66:3","typeDescriptions":{"typeIdentifier":"t_rational_37439836327923360225337895871394760624280537466773280374265222508165906222592_by_1","typeString":"int_const 3743...(69 digits omitted)...2592"},"value":"0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00"},"visibility":"private"},{"body":{"id":681,"nodeType":"Block","src":"2316:79:3","statements":[{"AST":{"nativeSrc":"2335:54:3","nodeType":"YulBlock","src":"2335:54:3","statements":[{"nativeSrc":"2349:30:3","nodeType":"YulAssignment","src":"2349:30:3","value":{"name":"ERC20StorageLocation","nativeSrc":"2359:20:3","nodeType":"YulIdentifier","src":"2359:20:3"},"variableNames":[{"name":"$.slot","nativeSrc":"2349:6:3","nodeType":"YulIdentifier","src":"2349:6:3"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":678,"isOffset":false,"isSlot":true,"src":"2349:6:3","suffix":"slot","valueSize":1},{"declaration":674,"isOffset":false,"isSlot":false,"src":"2359:20:3","valueSize":1}],"id":680,"nodeType":"InlineAssembly","src":"2326:63:3"}]},"id":682,"implemented":true,"kind":"function","modifiers":[],"name":"_getERC20Storage","nameLocation":"2251:16:3","nodeType":"FunctionDefinition","parameters":{"id":675,"nodeType":"ParameterList","parameters":[],"src":"2267:2:3"},"returnParameters":{"id":679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":678,"mutability":"mutable","name":"$","nameLocation":"2313:1:3","nodeType":"VariableDeclaration","scope":682,"src":"2292:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":677,"nodeType":"UserDefinedTypeName","pathNode":{"id":676,"name":"ERC20Storage","nameLocations":["2292:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"2292:12:3"},"referencedDeclaration":671,"src":"2292:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"src":"2291:24:3"},"scope":1247,"src":"2242:153:3","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":697,"nodeType":"Block","src":"2669:55:3","statements":[{"expression":{"arguments":[{"id":693,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"2702:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":694,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"2709:7:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":692,"name":"__ERC20_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"2679:22:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2679:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":696,"nodeType":"ExpressionStatement","src":"2679:38:3"}]},"documentation":{"id":683,"nodeType":"StructuredDocumentation","src":"2401:171:3","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":698,"implemented":true,"kind":"function","modifiers":[{"id":690,"kind":"modifierInvocation","modifierName":{"id":689,"name":"onlyInitializing","nameLocations":["2652:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2652:16:3"},"nodeType":"ModifierInvocation","src":"2652:16:3"}],"name":"__ERC20_init","nameLocation":"2586:12:3","nodeType":"FunctionDefinition","parameters":{"id":688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":685,"mutability":"mutable","name":"name_","nameLocation":"2613:5:3","nodeType":"VariableDeclaration","scope":698,"src":"2599:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":684,"name":"string","nodeType":"ElementaryTypeName","src":"2599:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":687,"mutability":"mutable","name":"symbol_","nameLocation":"2634:7:3","nodeType":"VariableDeclaration","scope":698,"src":"2620:21:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":686,"name":"string","nodeType":"ElementaryTypeName","src":"2620:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2598:44:3"},"returnParameters":{"id":691,"nodeType":"ParameterList","parameters":[],"src":"2669:0:3"},"scope":1247,"src":"2577:147:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":725,"nodeType":"Block","src":"2832:114:3","statements":[{"assignments":[709],"declarations":[{"constant":false,"id":709,"mutability":"mutable","name":"$","nameLocation":"2863:1:3","nodeType":"VariableDeclaration","scope":725,"src":"2842:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":708,"nodeType":"UserDefinedTypeName","pathNode":{"id":707,"name":"ERC20Storage","nameLocations":["2842:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"2842:12:3"},"referencedDeclaration":671,"src":"2842:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":712,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":710,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"2867:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2867:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2842:43:3"},{"expression":{"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":713,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"2895:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2897:5:3","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":668,"src":"2895:7:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":716,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"2905:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2895:15:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":718,"nodeType":"ExpressionStatement","src":"2895:15:3"},{"expression":{"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":719,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"2920:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2922:7:3","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":670,"src":"2920:9:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":722,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"2932:7:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2920:19:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":724,"nodeType":"ExpressionStatement","src":"2920:19:3"}]},"id":726,"implemented":true,"kind":"function","modifiers":[{"id":705,"kind":"modifierInvocation","modifierName":{"id":704,"name":"onlyInitializing","nameLocations":["2815:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2815:16:3"},"nodeType":"ModifierInvocation","src":"2815:16:3"}],"name":"__ERC20_init_unchained","nameLocation":"2739:22:3","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":700,"mutability":"mutable","name":"name_","nameLocation":"2776:5:3","nodeType":"VariableDeclaration","scope":726,"src":"2762:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":699,"name":"string","nodeType":"ElementaryTypeName","src":"2762:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":702,"mutability":"mutable","name":"symbol_","nameLocation":"2797:7:3","nodeType":"VariableDeclaration","scope":726,"src":"2783:21:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":701,"name":"string","nodeType":"ElementaryTypeName","src":"2783:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2761:44:3"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[],"src":"2832:0:3"},"scope":1247,"src":"2730:216:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2664],"body":{"id":741,"nodeType":"Block","src":"3071:84:3","statements":[{"assignments":[734],"declarations":[{"constant":false,"id":734,"mutability":"mutable","name":"$","nameLocation":"3102:1:3","nodeType":"VariableDeclaration","scope":741,"src":"3081:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":733,"nodeType":"UserDefinedTypeName","pathNode":{"id":732,"name":"ERC20Storage","nameLocations":["3081:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"3081:12:3"},"referencedDeclaration":671,"src":"3081:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":737,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":735,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"3106:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3106:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3081:43:3"},{"expression":{"expression":{"id":738,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"3141:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3143:5:3","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":668,"src":"3141:7:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":731,"id":740,"nodeType":"Return","src":"3134:14:3"}]},"documentation":{"id":727,"nodeType":"StructuredDocumentation","src":"2952:54:3","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":742,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"3020:4:3","nodeType":"FunctionDefinition","parameters":{"id":728,"nodeType":"ParameterList","parameters":[],"src":"3024:2:3"},"returnParameters":{"id":731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":742,"src":"3056:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":729,"name":"string","nodeType":"ElementaryTypeName","src":"3056:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3055:15:3"},"scope":1247,"src":"3011:144:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2670],"body":{"id":757,"nodeType":"Block","src":"3330:86:3","statements":[{"assignments":[750],"declarations":[{"constant":false,"id":750,"mutability":"mutable","name":"$","nameLocation":"3361:1:3","nodeType":"VariableDeclaration","scope":757,"src":"3340:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":749,"nodeType":"UserDefinedTypeName","pathNode":{"id":748,"name":"ERC20Storage","nameLocations":["3340:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"3340:12:3"},"referencedDeclaration":671,"src":"3340:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":753,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":751,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"3365:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3365:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3340:43:3"},{"expression":{"expression":{"id":754,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":750,"src":"3400:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3402:7:3","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":670,"src":"3400:9:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":747,"id":756,"nodeType":"Return","src":"3393:16:3"}]},"documentation":{"id":743,"nodeType":"StructuredDocumentation","src":"3161:102:3","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":758,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3277:6:3","nodeType":"FunctionDefinition","parameters":{"id":744,"nodeType":"ParameterList","parameters":[],"src":"3283:2:3"},"returnParameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":758,"src":"3315:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":745,"name":"string","nodeType":"ElementaryTypeName","src":"3315:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3314:15:3"},"scope":1247,"src":"3268:148:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2676],"body":{"id":766,"nodeType":"Block","src":"4105:26:3","statements":[{"expression":{"hexValue":"3138","id":764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4122:2:3","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":763,"id":765,"nodeType":"Return","src":"4115:9:3"}]},"documentation":{"id":759,"nodeType":"StructuredDocumentation","src":"3422:622:3","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":767,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"4058:8:3","nodeType":"FunctionDefinition","parameters":{"id":760,"nodeType":"ParameterList","parameters":[],"src":"4066:2:3"},"returnParameters":{"id":763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":762,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":767,"src":"4098:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":761,"name":"uint8","nodeType":"ElementaryTypeName","src":"4098:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4097:7:3"},"scope":1247,"src":"4049:82:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2600],"body":{"id":782,"nodeType":"Block","src":"4252:91:3","statements":[{"assignments":[775],"declarations":[{"constant":false,"id":775,"mutability":"mutable","name":"$","nameLocation":"4283:1:3","nodeType":"VariableDeclaration","scope":782,"src":"4262:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":774,"nodeType":"UserDefinedTypeName","pathNode":{"id":773,"name":"ERC20Storage","nameLocations":["4262:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"4262:12:3"},"referencedDeclaration":671,"src":"4262:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":778,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":776,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"4287:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4287:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4262:43:3"},{"expression":{"expression":{"id":779,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"4322:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4324:12:3","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":666,"src":"4322:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":772,"id":781,"nodeType":"Return","src":"4315:21:3"}]},"documentation":{"id":768,"nodeType":"StructuredDocumentation","src":"4137:49:3","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":783,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"4200:11:3","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[],"src":"4211:2:3"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":783,"src":"4243:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":770,"name":"uint256","nodeType":"ElementaryTypeName","src":"4243:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4242:9:3"},"scope":1247,"src":"4191:152:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2608],"body":{"id":802,"nodeType":"Block","src":"4475:97:3","statements":[{"assignments":[793],"declarations":[{"constant":false,"id":793,"mutability":"mutable","name":"$","nameLocation":"4506:1:3","nodeType":"VariableDeclaration","scope":802,"src":"4485:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":792,"nodeType":"UserDefinedTypeName","pathNode":{"id":791,"name":"ERC20Storage","nameLocations":["4485:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"4485:12:3"},"referencedDeclaration":671,"src":"4485:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":796,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":794,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"4510:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4510:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4485:43:3"},{"expression":{"baseExpression":{"expression":{"id":797,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":793,"src":"4545:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4547:9:3","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":658,"src":"4545:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":800,"indexExpression":{"id":799,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"4557:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4545:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":790,"id":801,"nodeType":"Return","src":"4538:27:3"}]},"documentation":{"id":784,"nodeType":"StructuredDocumentation","src":"4349:47:3","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":803,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4410:9:3","nodeType":"FunctionDefinition","parameters":{"id":787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":786,"mutability":"mutable","name":"account","nameLocation":"4428:7:3","nodeType":"VariableDeclaration","scope":803,"src":"4420:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":785,"name":"address","nodeType":"ElementaryTypeName","src":"4420:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4419:17:3"},"returnParameters":{"id":790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":803,"src":"4466:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":788,"name":"uint256","nodeType":"ElementaryTypeName","src":"4466:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4465:9:3"},"scope":1247,"src":"4401:171:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2618],"body":{"id":826,"nodeType":"Block","src":"4842:103:3","statements":[{"assignments":[814],"declarations":[{"constant":false,"id":814,"mutability":"mutable","name":"owner","nameLocation":"4860:5:3","nodeType":"VariableDeclaration","scope":826,"src":"4852:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":813,"name":"address","nodeType":"ElementaryTypeName","src":"4852:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":817,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":815,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"4868:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4868:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4852:28:3"},{"expression":{"arguments":[{"id":819,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"4900:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":820,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"4907:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":821,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"4911:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":818,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"4890:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4890:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":823,"nodeType":"ExpressionStatement","src":"4890:27:3"},{"expression":{"hexValue":"74727565","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4934:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":812,"id":825,"nodeType":"Return","src":"4927:11:3"}]},"documentation":{"id":804,"nodeType":"StructuredDocumentation","src":"4578:184:3","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":827,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4776:8:3","nodeType":"FunctionDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":806,"mutability":"mutable","name":"to","nameLocation":"4793:2:3","nodeType":"VariableDeclaration","scope":827,"src":"4785:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":805,"name":"address","nodeType":"ElementaryTypeName","src":"4785:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":808,"mutability":"mutable","name":"value","nameLocation":"4805:5:3","nodeType":"VariableDeclaration","scope":827,"src":"4797:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":807,"name":"uint256","nodeType":"ElementaryTypeName","src":"4797:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4784:27:3"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":827,"src":"4836:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":810,"name":"bool","nodeType":"ElementaryTypeName","src":"4836:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4835:6:3"},"scope":1247,"src":"4767:178:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2628],"body":{"id":850,"nodeType":"Block","src":"5092:106:3","statements":[{"assignments":[839],"declarations":[{"constant":false,"id":839,"mutability":"mutable","name":"$","nameLocation":"5123:1:3","nodeType":"VariableDeclaration","scope":850,"src":"5102:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":838,"nodeType":"UserDefinedTypeName","pathNode":{"id":837,"name":"ERC20Storage","nameLocations":["5102:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"5102:12:3"},"referencedDeclaration":671,"src":"5102:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":842,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":840,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"5127:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5127:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5102:43:3"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":843,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":839,"src":"5162:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5164:11:3","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":664,"src":"5162:13:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":846,"indexExpression":{"id":845,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"5176:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5162:20:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":848,"indexExpression":{"id":847,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":832,"src":"5183:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5162:29:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":836,"id":849,"nodeType":"Return","src":"5155:36:3"}]},"documentation":{"id":828,"nodeType":"StructuredDocumentation","src":"4951:47:3","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":851,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"5012:9:3","nodeType":"FunctionDefinition","parameters":{"id":833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":830,"mutability":"mutable","name":"owner","nameLocation":"5030:5:3","nodeType":"VariableDeclaration","scope":851,"src":"5022:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":829,"name":"address","nodeType":"ElementaryTypeName","src":"5022:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":832,"mutability":"mutable","name":"spender","nameLocation":"5045:7:3","nodeType":"VariableDeclaration","scope":851,"src":"5037:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":831,"name":"address","nodeType":"ElementaryTypeName","src":"5037:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5021:32:3"},"returnParameters":{"id":836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":851,"src":"5083:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":834,"name":"uint256","nodeType":"ElementaryTypeName","src":"5083:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5082:9:3"},"scope":1247,"src":"5003:195:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2638],"body":{"id":874,"nodeType":"Block","src":"5584:107:3","statements":[{"assignments":[862],"declarations":[{"constant":false,"id":862,"mutability":"mutable","name":"owner","nameLocation":"5602:5:3","nodeType":"VariableDeclaration","scope":874,"src":"5594:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":861,"name":"address","nodeType":"ElementaryTypeName","src":"5594:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":865,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":863,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"5610:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5610:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5594:28:3"},{"expression":{"arguments":[{"id":867,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":862,"src":"5641:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":868,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"5648:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":869,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"5657:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":866,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1130,1198],"referencedDeclaration":1130,"src":"5632:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5632:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":871,"nodeType":"ExpressionStatement","src":"5632:31:3"},{"expression":{"hexValue":"74727565","id":872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5680:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":860,"id":873,"nodeType":"Return","src":"5673:11:3"}]},"documentation":{"id":852,"nodeType":"StructuredDocumentation","src":"5204:296:3","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":875,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5514:7:3","nodeType":"FunctionDefinition","parameters":{"id":857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":854,"mutability":"mutable","name":"spender","nameLocation":"5530:7:3","nodeType":"VariableDeclaration","scope":875,"src":"5522:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":853,"name":"address","nodeType":"ElementaryTypeName","src":"5522:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":856,"mutability":"mutable","name":"value","nameLocation":"5547:5:3","nodeType":"VariableDeclaration","scope":875,"src":"5539:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":855,"name":"uint256","nodeType":"ElementaryTypeName","src":"5539:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5521:32:3"},"returnParameters":{"id":860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":875,"src":"5578:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":858,"name":"bool","nodeType":"ElementaryTypeName","src":"5578:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5577:6:3"},"scope":1247,"src":"5505:186:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2650],"body":{"id":906,"nodeType":"Block","src":"6344:151:3","statements":[{"assignments":[888],"declarations":[{"constant":false,"id":888,"mutability":"mutable","name":"spender","nameLocation":"6362:7:3","nodeType":"VariableDeclaration","scope":906,"src":"6354:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":887,"name":"address","nodeType":"ElementaryTypeName","src":"6354:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":891,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":889,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"6372:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6372:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6354:30:3"},{"expression":{"arguments":[{"id":893,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"6410:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":894,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"6416:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"6425:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":892,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"6394:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6394:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":897,"nodeType":"ExpressionStatement","src":"6394:37:3"},{"expression":{"arguments":[{"id":899,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"6451:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":900,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"6457:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"6461:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":898,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"6441:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6441:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":903,"nodeType":"ExpressionStatement","src":"6441:26:3"},{"expression":{"hexValue":"74727565","id":904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6484:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":886,"id":905,"nodeType":"Return","src":"6477:11:3"}]},"documentation":{"id":876,"nodeType":"StructuredDocumentation","src":"5697:549:3","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":907,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"6260:12:3","nodeType":"FunctionDefinition","parameters":{"id":883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":878,"mutability":"mutable","name":"from","nameLocation":"6281:4:3","nodeType":"VariableDeclaration","scope":907,"src":"6273:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":877,"name":"address","nodeType":"ElementaryTypeName","src":"6273:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":880,"mutability":"mutable","name":"to","nameLocation":"6295:2:3","nodeType":"VariableDeclaration","scope":907,"src":"6287:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":879,"name":"address","nodeType":"ElementaryTypeName","src":"6287:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":882,"mutability":"mutable","name":"value","nameLocation":"6307:5:3","nodeType":"VariableDeclaration","scope":907,"src":"6299:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":881,"name":"uint256","nodeType":"ElementaryTypeName","src":"6299:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6272:41:3"},"returnParameters":{"id":886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":907,"src":"6338:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":884,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6337:6:3"},"scope":1247,"src":"6251:244:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":953,"nodeType":"Block","src":"6937:231:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":917,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"6951:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6967:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6959:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":918,"name":"address","nodeType":"ElementaryTypeName","src":"6959:7:3","typeDescriptions":{}}},"id":921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6959:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6951:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":931,"nodeType":"IfStatement","src":"6947:86:3","trueBody":{"id":930,"nodeType":"Block","src":"6971:62:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7019:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7011:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":924,"name":"address","nodeType":"ElementaryTypeName","src":"7011:7:3","typeDescriptions":{}}},"id":927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7011:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":923,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"6992:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6992:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":929,"nodeType":"RevertStatement","src":"6985:37:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":932,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"7046:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7060:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7052:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":933,"name":"address","nodeType":"ElementaryTypeName","src":"7052:7:3","typeDescriptions":{}}},"id":936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7052:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7046:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":946,"nodeType":"IfStatement","src":"7042:86:3","trueBody":{"id":945,"nodeType":"Block","src":"7064:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7114:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7106:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":939,"name":"address","nodeType":"ElementaryTypeName","src":"7106:7:3","typeDescriptions":{}}},"id":942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7106:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":938,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"7085:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7085:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":944,"nodeType":"RevertStatement","src":"7078:39:3"}]}},{"expression":{"arguments":[{"id":948,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"7145:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":949,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"7151:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":914,"src":"7155:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":947,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"7137:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7137:24:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":952,"nodeType":"ExpressionStatement","src":"7137:24:3"}]},"documentation":{"id":908,"nodeType":"StructuredDocumentation","src":"6501:362:3","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":954,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6877:9:3","nodeType":"FunctionDefinition","parameters":{"id":915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":910,"mutability":"mutable","name":"from","nameLocation":"6895:4:3","nodeType":"VariableDeclaration","scope":954,"src":"6887:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":909,"name":"address","nodeType":"ElementaryTypeName","src":"6887:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":912,"mutability":"mutable","name":"to","nameLocation":"6909:2:3","nodeType":"VariableDeclaration","scope":954,"src":"6901:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":911,"name":"address","nodeType":"ElementaryTypeName","src":"6901:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":914,"mutability":"mutable","name":"value","nameLocation":"6921:5:3","nodeType":"VariableDeclaration","scope":954,"src":"6913:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":913,"name":"uint256","nodeType":"ElementaryTypeName","src":"6913:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6886:41:3"},"returnParameters":{"id":916,"nodeType":"ParameterList","parameters":[],"src":"6937:0:3"},"scope":1247,"src":"6868:300:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1045,"nodeType":"Block","src":"7558:1095:3","statements":[{"assignments":[966],"declarations":[{"constant":false,"id":966,"mutability":"mutable","name":"$","nameLocation":"7589:1:3","nodeType":"VariableDeclaration","scope":1045,"src":"7568:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":965,"nodeType":"UserDefinedTypeName","pathNode":{"id":964,"name":"ERC20Storage","nameLocations":["7568:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"7568:12:3"},"referencedDeclaration":671,"src":"7568:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":969,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":967,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"7593:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7593:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7568:43:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":970,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"7625:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7641:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7633:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":971,"name":"address","nodeType":"ElementaryTypeName","src":"7633:7:3","typeDescriptions":{}}},"id":974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7633:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7625:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1012,"nodeType":"Block","src":"7801:366:3","statements":[{"assignments":[984],"declarations":[{"constant":false,"id":984,"mutability":"mutable","name":"fromBalance","nameLocation":"7823:11:3","nodeType":"VariableDeclaration","scope":1012,"src":"7815:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":983,"name":"uint256","nodeType":"ElementaryTypeName","src":"7815:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":989,"initialValue":{"baseExpression":{"expression":{"id":985,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"7837:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7839:9:3","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":658,"src":"7837:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":988,"indexExpression":{"id":987,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"7849:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7837:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7815:39:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":990,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"7872:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"7886:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7872:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1000,"nodeType":"IfStatement","src":"7868:115:3","trueBody":{"id":999,"nodeType":"Block","src":"7893:90:3","statements":[{"errorCall":{"arguments":[{"id":994,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"7943:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":995,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"7949:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"7962:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":993,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1620,"src":"7918:24:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7918:50:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":998,"nodeType":"RevertStatement","src":"7911:57:3"}]}},{"id":1011,"nodeType":"UncheckedBlock","src":"7996:161:3","statements":[{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1001,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8103:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":1004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8105:9:3","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":658,"src":"8103:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1005,"indexExpression":{"id":1003,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"8115:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8103:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1006,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"8123:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1007,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8137:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8123:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8103:39:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"8103:39:3"}]}]},"id":1013,"nodeType":"IfStatement","src":"7621:546:3","trueBody":{"id":982,"nodeType":"Block","src":"7645:150:3","statements":[{"expression":{"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":976,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"7761:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7763:12:3","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":666,"src":"7761:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":979,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"7779:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7761:23:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":981,"nodeType":"ExpressionStatement","src":"7761:23:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1014,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8181:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8195:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8187:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1015,"name":"address","nodeType":"ElementaryTypeName","src":"8187:7:3","typeDescriptions":{}}},"id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8187:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8181:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1037,"nodeType":"Block","src":"8398:208:3","statements":[{"id":1036,"nodeType":"UncheckedBlock","src":"8412:184:3","statements":[{"expression":{"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":1028,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8557:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":1031,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8559:9:3","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":658,"src":"8557:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1032,"indexExpression":{"id":1030,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8569:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8557:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1033,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8576:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8557:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1035,"nodeType":"ExpressionStatement","src":"8557:24:3"}]}]},"id":1038,"nodeType":"IfStatement","src":"8177:429:3","trueBody":{"id":1027,"nodeType":"Block","src":"8199:193:3","statements":[{"id":1026,"nodeType":"UncheckedBlock","src":"8213:169:3","statements":[{"expression":{"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1020,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8344:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":1022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8346:12:3","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":666,"src":"8344:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":1023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8362:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8344:23:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1025,"nodeType":"ExpressionStatement","src":"8344:23:3"}]}]}},{"eventCall":{"arguments":[{"id":1040,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"8630:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1041,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8636:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1042,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8640:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1039,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"8621:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8621:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1044,"nodeType":"EmitStatement","src":"8616:30:3"}]},"documentation":{"id":955,"nodeType":"StructuredDocumentation","src":"7174:304:3","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":1046,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"7492:7:3","nodeType":"FunctionDefinition","parameters":{"id":962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":957,"mutability":"mutable","name":"from","nameLocation":"7508:4:3","nodeType":"VariableDeclaration","scope":1046,"src":"7500:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":956,"name":"address","nodeType":"ElementaryTypeName","src":"7500:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":959,"mutability":"mutable","name":"to","nameLocation":"7522:2:3","nodeType":"VariableDeclaration","scope":1046,"src":"7514:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":958,"name":"address","nodeType":"ElementaryTypeName","src":"7514:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":961,"mutability":"mutable","name":"value","nameLocation":"7534:5:3","nodeType":"VariableDeclaration","scope":1046,"src":"7526:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"7526:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7499:41:3"},"returnParameters":{"id":963,"nodeType":"ParameterList","parameters":[],"src":"7558:0:3"},"scope":1247,"src":"7483:1170:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1078,"nodeType":"Block","src":"9052:152:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1054,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"9066:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9085:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9077:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1055,"name":"address","nodeType":"ElementaryTypeName","src":"9077:7:3","typeDescriptions":{}}},"id":1058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9077:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9066:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1068,"nodeType":"IfStatement","src":"9062:91:3","trueBody":{"id":1067,"nodeType":"Block","src":"9089:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9139:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9131:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1061,"name":"address","nodeType":"ElementaryTypeName","src":"9131:7:3","typeDescriptions":{}}},"id":1064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9131:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1060,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"9110:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9110:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1066,"nodeType":"RevertStatement","src":"9103:39:3"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9178:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9170:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1070,"name":"address","nodeType":"ElementaryTypeName","src":"9170:7:3","typeDescriptions":{}}},"id":1073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9170:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1074,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"9182:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"9191:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1069,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"9162:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9162:35:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1077,"nodeType":"ExpressionStatement","src":"9162:35:3"}]},"documentation":{"id":1047,"nodeType":"StructuredDocumentation","src":"8659:332:3","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":1079,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9005:5:3","nodeType":"FunctionDefinition","parameters":{"id":1052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1049,"mutability":"mutable","name":"account","nameLocation":"9019:7:3","nodeType":"VariableDeclaration","scope":1079,"src":"9011:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1048,"name":"address","nodeType":"ElementaryTypeName","src":"9011:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1051,"mutability":"mutable","name":"value","nameLocation":"9036:5:3","nodeType":"VariableDeclaration","scope":1079,"src":"9028:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1050,"name":"uint256","nodeType":"ElementaryTypeName","src":"9028:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9010:32:3"},"returnParameters":{"id":1053,"nodeType":"ParameterList","parameters":[],"src":"9052:0:3"},"scope":1247,"src":"8996:208:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1111,"nodeType":"Block","src":"9578:150:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1087,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"9592:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9611:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9603:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1088,"name":"address","nodeType":"ElementaryTypeName","src":"9603:7:3","typeDescriptions":{}}},"id":1091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9603:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9592:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1101,"nodeType":"IfStatement","src":"9588:89:3","trueBody":{"id":1100,"nodeType":"Block","src":"9615:62:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9663:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9655:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1094,"name":"address","nodeType":"ElementaryTypeName","src":"9655:7:3","typeDescriptions":{}}},"id":1097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9655:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1093,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"9636:18:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9636:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1099,"nodeType":"RevertStatement","src":"9629:37:3"}]}},{"expression":{"arguments":[{"id":1103,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"9694:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9711:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9703:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1104,"name":"address","nodeType":"ElementaryTypeName","src":"9703:7:3","typeDescriptions":{}}},"id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9703:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"9715:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1102,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"9686:7:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9686:35:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1110,"nodeType":"ExpressionStatement","src":"9686:35:3"}]},"documentation":{"id":1080,"nodeType":"StructuredDocumentation","src":"9210:307:3","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":1112,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9531:5:3","nodeType":"FunctionDefinition","parameters":{"id":1085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1082,"mutability":"mutable","name":"account","nameLocation":"9545:7:3","nodeType":"VariableDeclaration","scope":1112,"src":"9537:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1081,"name":"address","nodeType":"ElementaryTypeName","src":"9537:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1084,"mutability":"mutable","name":"value","nameLocation":"9562:5:3","nodeType":"VariableDeclaration","scope":1112,"src":"9554:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1083,"name":"uint256","nodeType":"ElementaryTypeName","src":"9554:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9536:32:3"},"returnParameters":{"id":1086,"nodeType":"ParameterList","parameters":[],"src":"9578:0:3"},"scope":1247,"src":"9522:206:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1129,"nodeType":"Block","src":"10338:54:3","statements":[{"expression":{"arguments":[{"id":1123,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"10357:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1124,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"10364:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"10373:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":1126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10380:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1122,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1130,1198],"referencedDeclaration":1198,"src":"10348:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":1127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10348:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1128,"nodeType":"ExpressionStatement","src":"10348:37:3"}]},"documentation":{"id":1113,"nodeType":"StructuredDocumentation","src":"9734:525:3","text":" @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":1130,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10273:8:3","nodeType":"FunctionDefinition","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1115,"mutability":"mutable","name":"owner","nameLocation":"10290:5:3","nodeType":"VariableDeclaration","scope":1130,"src":"10282:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1114,"name":"address","nodeType":"ElementaryTypeName","src":"10282:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1117,"mutability":"mutable","name":"spender","nameLocation":"10305:7:3","nodeType":"VariableDeclaration","scope":1130,"src":"10297:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1116,"name":"address","nodeType":"ElementaryTypeName","src":"10297:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1119,"mutability":"mutable","name":"value","nameLocation":"10322:5:3","nodeType":"VariableDeclaration","scope":1130,"src":"10314:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1118,"name":"uint256","nodeType":"ElementaryTypeName","src":"10314:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10281:47:3"},"returnParameters":{"id":1121,"nodeType":"ParameterList","parameters":[],"src":"10338:0:3"},"scope":1247,"src":"10264:128:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1197,"nodeType":"Block","src":"11322:389:3","statements":[{"assignments":[1144],"declarations":[{"constant":false,"id":1144,"mutability":"mutable","name":"$","nameLocation":"11353:1:3","nodeType":"VariableDeclaration","scope":1197,"src":"11332:22:3","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":1143,"nodeType":"UserDefinedTypeName","pathNode":{"id":1142,"name":"ERC20Storage","nameLocations":["11332:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"11332:12:3"},"referencedDeclaration":671,"src":"11332:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":1147,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1145,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"11357:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$671_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":1146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11357:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11332:43:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1148,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"11389:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11406:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11398:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1149,"name":"address","nodeType":"ElementaryTypeName","src":"11398:7:3","typeDescriptions":{}}},"id":1152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11398:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11389:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1162,"nodeType":"IfStatement","src":"11385:89:3","trueBody":{"id":1161,"nodeType":"Block","src":"11410:64:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11460:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11452:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1155,"name":"address","nodeType":"ElementaryTypeName","src":"11452:7:3","typeDescriptions":{}}},"id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11452:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1154,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"11431:20:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11431:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1160,"nodeType":"RevertStatement","src":"11424:39:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1163,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"11487:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11506:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11498:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1164,"name":"address","nodeType":"ElementaryTypeName","src":"11498:7:3","typeDescriptions":{}}},"id":1167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11498:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11487:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1177,"nodeType":"IfStatement","src":"11483:90:3","trueBody":{"id":1176,"nodeType":"Block","src":"11510:63:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11559:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11551:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1170,"name":"address","nodeType":"ElementaryTypeName","src":"11551:7:3","typeDescriptions":{}}},"id":1173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11551:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1169,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"11531:19:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11531:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1175,"nodeType":"RevertStatement","src":"11524:38:3"}]}},{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":1178,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"11582:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$671_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":1182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11584:11:3","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":664,"src":"11582:13:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":1183,"indexExpression":{"id":1180,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"11596:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11582:20:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1184,"indexExpression":{"id":1181,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"11603:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11582:29:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"11614:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11582:37:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"11582:37:3"},{"condition":{"id":1188,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"11633:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1196,"nodeType":"IfStatement","src":"11629:76:3","trueBody":{"id":1195,"nodeType":"Block","src":"11644:61:3","statements":[{"eventCall":{"arguments":[{"id":1190,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"11672:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1191,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"11679:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1192,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"11688:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1189,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"11663:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11663:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1194,"nodeType":"EmitStatement","src":"11658:36:3"}]}}]},"documentation":{"id":1131,"nodeType":"StructuredDocumentation","src":"10398:821:3","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":1198,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"11233:8:3","nodeType":"FunctionDefinition","parameters":{"id":1140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1133,"mutability":"mutable","name":"owner","nameLocation":"11250:5:3","nodeType":"VariableDeclaration","scope":1198,"src":"11242:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1132,"name":"address","nodeType":"ElementaryTypeName","src":"11242:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1135,"mutability":"mutable","name":"spender","nameLocation":"11265:7:3","nodeType":"VariableDeclaration","scope":1198,"src":"11257:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1134,"name":"address","nodeType":"ElementaryTypeName","src":"11257:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1137,"mutability":"mutable","name":"value","nameLocation":"11282:5:3","nodeType":"VariableDeclaration","scope":1198,"src":"11274:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1136,"name":"uint256","nodeType":"ElementaryTypeName","src":"11274:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1139,"mutability":"mutable","name":"emitEvent","nameLocation":"11294:9:3","nodeType":"VariableDeclaration","scope":1198,"src":"11289:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1138,"name":"bool","nodeType":"ElementaryTypeName","src":"11289:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11241:63:3"},"returnParameters":{"id":1141,"nodeType":"ParameterList","parameters":[],"src":"11322:0:3"},"scope":1247,"src":"11224:487:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1245,"nodeType":"Block","src":"12082:388:3","statements":[{"assignments":[1209],"declarations":[{"constant":false,"id":1209,"mutability":"mutable","name":"currentAllowance","nameLocation":"12100:16:3","nodeType":"VariableDeclaration","scope":1245,"src":"12092:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1208,"name":"uint256","nodeType":"ElementaryTypeName","src":"12092:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1214,"initialValue":{"arguments":[{"id":1211,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"12129:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1212,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"12136:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1210,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"12119:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12119:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12092:52:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1215,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"12158:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":1218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12183:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1217,"name":"uint256","nodeType":"ElementaryTypeName","src":"12183:7:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1216,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12178:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12178:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12192:3:3","memberName":"max","nodeType":"MemberAccess","src":"12178:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12158:37:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1244,"nodeType":"IfStatement","src":"12154:310:3","trueBody":{"id":1243,"nodeType":"Block","src":"12197:267:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1222,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"12215:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"12234:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12215:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1232,"nodeType":"IfStatement","src":"12211:130:3","trueBody":{"id":1231,"nodeType":"Block","src":"12241:100:3","statements":[{"errorCall":{"arguments":[{"id":1226,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"12293:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1227,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"12302:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1228,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"12320:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1225,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"12266:26:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12266:60:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1230,"nodeType":"RevertStatement","src":"12259:67:3"}]}},{"id":1242,"nodeType":"UncheckedBlock","src":"12354:100:3","statements":[{"expression":{"arguments":[{"id":1234,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"12391:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1235,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"12398:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1236,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"12407:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"12426:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12407:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":1239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12433:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1233,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[1130,1198],"referencedDeclaration":1198,"src":"12382:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:57:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1241,"nodeType":"ExpressionStatement","src":"12382:57:3"}]}]}}]},"documentation":{"id":1199,"nodeType":"StructuredDocumentation","src":"11717:271:3","text":" @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":1246,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"12002:15:3","nodeType":"FunctionDefinition","parameters":{"id":1206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1201,"mutability":"mutable","name":"owner","nameLocation":"12026:5:3","nodeType":"VariableDeclaration","scope":1246,"src":"12018:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1200,"name":"address","nodeType":"ElementaryTypeName","src":"12018:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1203,"mutability":"mutable","name":"spender","nameLocation":"12041:7:3","nodeType":"VariableDeclaration","scope":1246,"src":"12033:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1202,"name":"address","nodeType":"ElementaryTypeName","src":"12033:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1205,"mutability":"mutable","name":"value","nameLocation":"12058:5:3","nodeType":"VariableDeclaration","scope":1246,"src":"12050:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1204,"name":"uint256","nodeType":"ElementaryTypeName","src":"12050:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12017:47:3"},"returnParameters":{"id":1207,"nodeType":"ParameterList","parameters":[],"src":"12082:0:3"},"scope":1247,"src":"11993:477:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1248,"src":"1576:10896:3","usedErrors":[211,214,1620,1625,1630,1639,1644,1649],"usedEvents":[219,2585,2594]}],"src":"105:12368:3"},"id":3},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1293],"Initializable":[448]},"id":1294,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1249,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1251,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1294,"sourceUnit":449,"src":"126:63:4","symbolAliases":[{"foreign":{"id":1250,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"134:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1253,"name":"Initializable","nameLocations":["728:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"728:13:4"},"id":1254,"nodeType":"InheritanceSpecifier","src":"728:13:4"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1252,"nodeType":"StructuredDocumentation","src":"191:496:4","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1293,"linearizedBaseContracts":[1293,448],"name":"ContextUpgradeable","nameLocation":"706:18:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":1259,"nodeType":"Block","src":"800:7:4","statements":[]},"id":1260,"implemented":true,"kind":"function","modifiers":[{"id":1257,"kind":"modifierInvocation","modifierName":{"id":1256,"name":"onlyInitializing","nameLocations":["783:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"783:16:4"},"nodeType":"ModifierInvocation","src":"783:16:4"}],"name":"__Context_init","nameLocation":"757:14:4","nodeType":"FunctionDefinition","parameters":{"id":1255,"nodeType":"ParameterList","parameters":[],"src":"771:2:4"},"returnParameters":{"id":1258,"nodeType":"ParameterList","parameters":[],"src":"800:0:4"},"scope":1293,"src":"748:59:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1265,"nodeType":"Block","src":"875:7:4","statements":[]},"id":1266,"implemented":true,"kind":"function","modifiers":[{"id":1263,"kind":"modifierInvocation","modifierName":{"id":1262,"name":"onlyInitializing","nameLocations":["858:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"858:16:4"},"nodeType":"ModifierInvocation","src":"858:16:4"}],"name":"__Context_init_unchained","nameLocation":"822:24:4","nodeType":"FunctionDefinition","parameters":{"id":1261,"nodeType":"ParameterList","parameters":[],"src":"846:2:4"},"returnParameters":{"id":1264,"nodeType":"ParameterList","parameters":[],"src":"875:0:4"},"scope":1293,"src":"813:69:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1274,"nodeType":"Block","src":"949:34:4","statements":[{"expression":{"expression":{"id":1271,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:4","memberName":"sender","nodeType":"MemberAccess","src":"966:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1270,"id":1273,"nodeType":"Return","src":"959:17:4"}]},"id":1275,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:4","nodeType":"FunctionDefinition","parameters":{"id":1267,"nodeType":"ParameterList","parameters":[],"src":"906:2:4"},"returnParameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1275,"src":"940:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1268,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:4"},"scope":1293,"src":"887:96:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1283,"nodeType":"Block","src":"1056:32:4","statements":[{"expression":{"expression":{"id":1280,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:4","memberName":"data","nodeType":"MemberAccess","src":"1073:8:4","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1279,"id":1282,"nodeType":"Return","src":"1066:15:4"}]},"id":1284,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:4","nodeType":"FunctionDefinition","parameters":{"id":1276,"nodeType":"ParameterList","parameters":[],"src":"1006:2:4"},"returnParameters":{"id":1279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1284,"src":"1040:14:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1277,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:4"},"scope":1293,"src":"989:99:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1291,"nodeType":"Block","src":"1166:25:4","statements":[{"expression":{"hexValue":"30","id":1289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1288,"id":1290,"nodeType":"Return","src":"1176:8:4"}]},"id":1292,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:4","nodeType":"FunctionDefinition","parameters":{"id":1285,"nodeType":"ParameterList","parameters":[],"src":"1123:2:4"},"returnParameters":{"id":1288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"1157:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1286,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:4"},"scope":1293,"src":"1094:97:4","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1294,"src":"688:505:4","usedErrors":[211,214],"usedEvents":[219]}],"src":"101:1093:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1293],"Initializable":[448],"PausableUpgradeable":[1469]},"id":1470,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1295,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:5"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":1297,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1470,"sourceUnit":1294,"src":"128:67:5","symbolAliases":[{"foreign":{"id":1296,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"136:18:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1299,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1470,"sourceUnit":449,"src":"196:63:5","symbolAliases":[{"foreign":{"id":1298,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"204:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1301,"name":"Initializable","nameLocations":["742:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"742:13:5"},"id":1302,"nodeType":"InheritanceSpecifier","src":"742:13:5"},{"baseName":{"id":1303,"name":"ContextUpgradeable","nameLocations":["757:18:5"],"nodeType":"IdentifierPath","referencedDeclaration":1293,"src":"757:18:5"},"id":1304,"nodeType":"InheritanceSpecifier","src":"757:18:5"}],"canonicalName":"PausableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1300,"nodeType":"StructuredDocumentation","src":"261:439:5","text":" @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."},"fullyImplemented":true,"id":1469,"linearizedBaseContracts":[1469,1293,448],"name":"PausableUpgradeable","nameLocation":"719:19:5","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PausableUpgradeable.PausableStorage","documentation":{"id":1305,"nodeType":"StructuredDocumentation","src":"782:66:5","text":"@custom:storage-location erc7201:openzeppelin.storage.Pausable"},"id":1308,"members":[{"constant":false,"id":1307,"mutability":"mutable","name":"_paused","nameLocation":"891:7:5","nodeType":"VariableDeclaration","scope":1308,"src":"886:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1306,"name":"bool","nodeType":"ElementaryTypeName","src":"886:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"PausableStorage","nameLocation":"860:15:5","nodeType":"StructDefinition","scope":1469,"src":"853:52:5","visibility":"public"},{"constant":true,"id":1311,"mutability":"constant","name":"PausableStorageLocation","nameLocation":"1048:23:5","nodeType":"VariableDeclaration","scope":1469,"src":"1023:117:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1309,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1023:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307863643565643135633665313837653737653961656538383138346332316634663231383261623538323763623362376530376662656463643633663033333030","id":1310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1074:66:5","typeDescriptions":{"typeIdentifier":"t_rational_92891662540554778686986514950364265630913525426840345632122912437671245656832_by_1","typeString":"int_const 9289...(69 digits omitted)...6832"},"value":"0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300"},"visibility":"private"},{"body":{"id":1318,"nodeType":"Block","src":"1227:82:5","statements":[{"AST":{"nativeSrc":"1246:57:5","nodeType":"YulBlock","src":"1246:57:5","statements":[{"nativeSrc":"1260:33:5","nodeType":"YulAssignment","src":"1260:33:5","value":{"name":"PausableStorageLocation","nativeSrc":"1270:23:5","nodeType":"YulIdentifier","src":"1270:23:5"},"variableNames":[{"name":"$.slot","nativeSrc":"1260:6:5","nodeType":"YulIdentifier","src":"1260:6:5"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1315,"isOffset":false,"isSlot":true,"src":"1260:6:5","suffix":"slot","valueSize":1},{"declaration":1311,"isOffset":false,"isSlot":false,"src":"1270:23:5","valueSize":1}],"id":1317,"nodeType":"InlineAssembly","src":"1237:66:5"}]},"id":1319,"implemented":true,"kind":"function","modifiers":[],"name":"_getPausableStorage","nameLocation":"1156:19:5","nodeType":"FunctionDefinition","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[],"src":"1175:2:5"},"returnParameters":{"id":1316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1315,"mutability":"mutable","name":"$","nameLocation":"1224:1:5","nodeType":"VariableDeclaration","scope":1319,"src":"1200:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1314,"nodeType":"UserDefinedTypeName","pathNode":{"id":1313,"name":"PausableStorage","nameLocations":["1200:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"1200:15:5"},"referencedDeclaration":1308,"src":"1200:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"src":"1199:27:5"},"scope":1469,"src":"1147:162:5","stateMutability":"pure","virtual":false,"visibility":"private"},{"anonymous":false,"documentation":{"id":1320,"nodeType":"StructuredDocumentation","src":"1315:73:5","text":" @dev Emitted when the pause is triggered by `account`."},"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":1324,"name":"Paused","nameLocation":"1399:6:5","nodeType":"EventDefinition","parameters":{"id":1323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1322,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1414:7:5","nodeType":"VariableDeclaration","scope":1324,"src":"1406:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1321,"name":"address","nodeType":"ElementaryTypeName","src":"1406:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1405:17:5"},"src":"1393:30:5"},{"anonymous":false,"documentation":{"id":1325,"nodeType":"StructuredDocumentation","src":"1429:70:5","text":" @dev Emitted when the pause is lifted by `account`."},"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":1329,"name":"Unpaused","nameLocation":"1510:8:5","nodeType":"EventDefinition","parameters":{"id":1328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1327,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1527:7:5","nodeType":"VariableDeclaration","scope":1329,"src":"1519:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1326,"name":"address","nodeType":"ElementaryTypeName","src":"1519:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1518:17:5"},"src":"1504:32:5"},{"documentation":{"id":1330,"nodeType":"StructuredDocumentation","src":"1542:76:5","text":" @dev The operation failed because the contract is paused."},"errorSelector":"d93c0665","id":1332,"name":"EnforcedPause","nameLocation":"1629:13:5","nodeType":"ErrorDefinition","parameters":{"id":1331,"nodeType":"ParameterList","parameters":[],"src":"1642:2:5"},"src":"1623:22:5"},{"documentation":{"id":1333,"nodeType":"StructuredDocumentation","src":"1651:80:5","text":" @dev The operation failed because the contract is not paused."},"errorSelector":"8dfc202b","id":1335,"name":"ExpectedPause","nameLocation":"1742:13:5","nodeType":"ErrorDefinition","parameters":{"id":1334,"nodeType":"ParameterList","parameters":[],"src":"1755:2:5"},"src":"1736:22:5"},{"body":{"id":1344,"nodeType":"Block","src":"1889:44:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1341,"name":"__Pausable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1363,"src":"1899:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1899:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1343,"nodeType":"ExpressionStatement","src":"1899:27:5"}]},"documentation":{"id":1336,"nodeType":"StructuredDocumentation","src":"1764:67:5","text":" @dev Initializes the contract in unpaused state."},"id":1345,"implemented":true,"kind":"function","modifiers":[{"id":1339,"kind":"modifierInvocation","modifierName":{"id":1338,"name":"onlyInitializing","nameLocations":["1872:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"1872:16:5"},"nodeType":"ModifierInvocation","src":"1872:16:5"}],"name":"__Pausable_init","nameLocation":"1845:15:5","nodeType":"FunctionDefinition","parameters":{"id":1337,"nodeType":"ParameterList","parameters":[],"src":"1860:2:5"},"returnParameters":{"id":1340,"nodeType":"ParameterList","parameters":[],"src":"1889:0:5"},"scope":1469,"src":"1836:97:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1362,"nodeType":"Block","src":"2002:93:5","statements":[{"assignments":[1352],"declarations":[{"constant":false,"id":1352,"mutability":"mutable","name":"$","nameLocation":"2036:1:5","nodeType":"VariableDeclaration","scope":1362,"src":"2012:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1351,"nodeType":"UserDefinedTypeName","pathNode":{"id":1350,"name":"PausableStorage","nameLocations":["2012:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"2012:15:5"},"referencedDeclaration":1308,"src":"2012:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1355,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1353,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"2040:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1308_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2040:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2012:49:5"},{"expression":{"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1356,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1352,"src":"2071:1:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2073:7:5","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"2071:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2083:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2071:17:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1361,"nodeType":"ExpressionStatement","src":"2071:17:5"}]},"id":1363,"implemented":true,"kind":"function","modifiers":[{"id":1348,"kind":"modifierInvocation","modifierName":{"id":1347,"name":"onlyInitializing","nameLocations":["1985:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"1985:16:5"},"nodeType":"ModifierInvocation","src":"1985:16:5"}],"name":"__Pausable_init_unchained","nameLocation":"1948:25:5","nodeType":"FunctionDefinition","parameters":{"id":1346,"nodeType":"ParameterList","parameters":[],"src":"1973:2:5"},"returnParameters":{"id":1349,"nodeType":"ParameterList","parameters":[],"src":"2002:0:5"},"scope":1469,"src":"1939:156:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1370,"nodeType":"Block","src":"2306:47:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1366,"name":"_requireNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1407,"src":"2316:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2316:19:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1368,"nodeType":"ExpressionStatement","src":"2316:19:5"},{"id":1369,"nodeType":"PlaceholderStatement","src":"2345:1:5"}]},"documentation":{"id":1364,"nodeType":"StructuredDocumentation","src":"2101:175:5","text":" @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."},"id":1371,"name":"whenNotPaused","nameLocation":"2290:13:5","nodeType":"ModifierDefinition","parameters":{"id":1365,"nodeType":"ParameterList","parameters":[],"src":"2303:2:5"},"src":"2281:72:5","virtual":false,"visibility":"internal"},{"body":{"id":1378,"nodeType":"Block","src":"2553:44:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1374,"name":"_requirePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1420,"src":"2563:14:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1376,"nodeType":"ExpressionStatement","src":"2563:16:5"},{"id":1377,"nodeType":"PlaceholderStatement","src":"2589:1:5"}]},"documentation":{"id":1372,"nodeType":"StructuredDocumentation","src":"2359:167:5","text":" @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."},"id":1379,"name":"whenPaused","nameLocation":"2540:10:5","nodeType":"ModifierDefinition","parameters":{"id":1373,"nodeType":"ParameterList","parameters":[],"src":"2550:2:5"},"src":"2531:66:5","virtual":false,"visibility":"internal"},{"body":{"id":1394,"nodeType":"Block","src":"2745:92:5","statements":[{"assignments":[1387],"declarations":[{"constant":false,"id":1387,"mutability":"mutable","name":"$","nameLocation":"2779:1:5","nodeType":"VariableDeclaration","scope":1394,"src":"2755:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1386,"nodeType":"UserDefinedTypeName","pathNode":{"id":1385,"name":"PausableStorage","nameLocations":["2755:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"2755:15:5"},"referencedDeclaration":1308,"src":"2755:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1390,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1388,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"2783:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1308_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2783:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2755:49:5"},{"expression":{"expression":{"id":1391,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"2821:1:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2823:7:5","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"2821:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1384,"id":1393,"nodeType":"Return","src":"2814:16:5"}]},"documentation":{"id":1380,"nodeType":"StructuredDocumentation","src":"2603:84:5","text":" @dev Returns true if the contract is paused, and false otherwise."},"functionSelector":"5c975abb","id":1395,"implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"2701:6:5","nodeType":"FunctionDefinition","parameters":{"id":1381,"nodeType":"ParameterList","parameters":[],"src":"2707:2:5"},"returnParameters":{"id":1384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1383,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1395,"src":"2739:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1382,"name":"bool","nodeType":"ElementaryTypeName","src":"2739:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2738:6:5"},"scope":1469,"src":"2692:145:5","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1406,"nodeType":"Block","src":"2956:77:5","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":1399,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"2970:6:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2970:8:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1405,"nodeType":"IfStatement","src":"2966:61:5","trueBody":{"id":1404,"nodeType":"Block","src":"2980:47:5","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1401,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"3001:13:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3001:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1403,"nodeType":"RevertStatement","src":"2994:22:5"}]}}]},"documentation":{"id":1396,"nodeType":"StructuredDocumentation","src":"2843:57:5","text":" @dev Throws if the contract is paused."},"id":1407,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNotPaused","nameLocation":"2914:17:5","nodeType":"FunctionDefinition","parameters":{"id":1397,"nodeType":"ParameterList","parameters":[],"src":"2931:2:5"},"returnParameters":{"id":1398,"nodeType":"ParameterList","parameters":[],"src":"2956:0:5"},"scope":1469,"src":"2905:128:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1419,"nodeType":"Block","src":"3153:78:5","statements":[{"condition":{"id":1413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3167:9:5","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1411,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"3168:6:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3168:8:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1418,"nodeType":"IfStatement","src":"3163:62:5","trueBody":{"id":1417,"nodeType":"Block","src":"3178:47:5","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1414,"name":"ExpectedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"3199:13:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3199:15:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1416,"nodeType":"RevertStatement","src":"3192:22:5"}]}}]},"documentation":{"id":1408,"nodeType":"StructuredDocumentation","src":"3039:61:5","text":" @dev Throws if the contract is not paused."},"id":1420,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaused","nameLocation":"3114:14:5","nodeType":"FunctionDefinition","parameters":{"id":1409,"nodeType":"ParameterList","parameters":[],"src":"3128:2:5"},"returnParameters":{"id":1410,"nodeType":"ParameterList","parameters":[],"src":"3153:0:5"},"scope":1469,"src":"3105:126:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1443,"nodeType":"Block","src":"3415:127:5","statements":[{"assignments":[1428],"declarations":[{"constant":false,"id":1428,"mutability":"mutable","name":"$","nameLocation":"3449:1:5","nodeType":"VariableDeclaration","scope":1443,"src":"3425:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1427,"nodeType":"UserDefinedTypeName","pathNode":{"id":1426,"name":"PausableStorage","nameLocations":["3425:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"3425:15:5"},"referencedDeclaration":1308,"src":"3425:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1431,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1429,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"3453:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1308_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3453:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3425:49:5"},{"expression":{"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1432,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"3484:1:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3486:7:5","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"3484:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3496:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3484:16:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1437,"nodeType":"ExpressionStatement","src":"3484:16:5"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1439,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"3522:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3522:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1438,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"3515:6:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3515:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1442,"nodeType":"EmitStatement","src":"3510:25:5"}]},"documentation":{"id":1421,"nodeType":"StructuredDocumentation","src":"3237:124:5","text":" @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."},"id":1444,"implemented":true,"kind":"function","modifiers":[{"id":1424,"kind":"modifierInvocation","modifierName":{"id":1423,"name":"whenNotPaused","nameLocations":["3401:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"3401:13:5"},"nodeType":"ModifierInvocation","src":"3401:13:5"}],"name":"_pause","nameLocation":"3375:6:5","nodeType":"FunctionDefinition","parameters":{"id":1422,"nodeType":"ParameterList","parameters":[],"src":"3381:2:5"},"returnParameters":{"id":1425,"nodeType":"ParameterList","parameters":[],"src":"3415:0:5"},"scope":1469,"src":"3366:176:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1467,"nodeType":"Block","src":"3722:130:5","statements":[{"assignments":[1452],"declarations":[{"constant":false,"id":1452,"mutability":"mutable","name":"$","nameLocation":"3756:1:5","nodeType":"VariableDeclaration","scope":1467,"src":"3732:25:5","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1451,"nodeType":"UserDefinedTypeName","pathNode":{"id":1450,"name":"PausableStorage","nameLocations":["3732:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"3732:15:5"},"referencedDeclaration":1308,"src":"3732:15:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1455,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1453,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"3760:19:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1308_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3760:21:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3732:49:5"},{"expression":{"id":1460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1456,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1452,"src":"3791:1:5","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1308_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3793:7:5","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"3791:9:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3803:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3791:17:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1461,"nodeType":"ExpressionStatement","src":"3791:17:5"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1463,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"3832:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3832:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1462,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1329,"src":"3823:8:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3823:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1466,"nodeType":"EmitStatement","src":"3818:27:5"}]},"documentation":{"id":1445,"nodeType":"StructuredDocumentation","src":"3548:121:5","text":" @dev Returns to normal state.\n Requirements:\n - The contract must be paused."},"id":1468,"implemented":true,"kind":"function","modifiers":[{"id":1448,"kind":"modifierInvocation","modifierName":{"id":1447,"name":"whenPaused","nameLocations":["3711:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":1379,"src":"3711:10:5"},"nodeType":"ModifierInvocation","src":"3711:10:5"}],"name":"_unpause","nameLocation":"3683:8:5","nodeType":"FunctionDefinition","parameters":{"id":1446,"nodeType":"ParameterList","parameters":[],"src":"3691:2:5"},"returnParameters":{"id":1449,"nodeType":"ParameterList","parameters":[],"src":"3722:0:5"},"scope":1469,"src":"3674:178:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1470,"src":"701:3153:5","usedErrors":[211,214,1332,1335],"usedEvents":[219,1324,1329]}],"src":"102:3753:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","exportedSymbols":{"Initializable":[448],"ReentrancyGuardUpgradeable":[1598]},"id":1599,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1471,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:6"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1473,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1599,"sourceUnit":449,"src":"134:63:6","symbolAliases":[{"foreign":{"id":1472,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"142:13:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1475,"name":"Initializable","nameLocations":["998:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"998:13:6"},"id":1476,"nodeType":"InheritanceSpecifier","src":"998:13:6"}],"canonicalName":"ReentrancyGuardUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1474,"nodeType":"StructuredDocumentation","src":"199:750:6","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":1598,"linearizedBaseContracts":[1598,448],"name":"ReentrancyGuardUpgradeable","nameLocation":"968:26:6","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1479,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"1791:11:6","nodeType":"VariableDeclaration","scope":1598,"src":"1766:40:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1477,"name":"uint256","nodeType":"ElementaryTypeName","src":"1766:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1805:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":1482,"mutability":"constant","name":"ENTERED","nameLocation":"1837:7:6","nodeType":"VariableDeclaration","scope":1598,"src":"1812:36:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1480,"name":"uint256","nodeType":"ElementaryTypeName","src":"1812:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1847:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"canonicalName":"ReentrancyGuardUpgradeable.ReentrancyGuardStorage","documentation":{"id":1483,"nodeType":"StructuredDocumentation","src":"1855:73:6","text":"@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard"},"id":1486,"members":[{"constant":false,"id":1485,"mutability":"mutable","name":"_status","nameLocation":"1981:7:6","nodeType":"VariableDeclaration","scope":1486,"src":"1973:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1484,"name":"uint256","nodeType":"ElementaryTypeName","src":"1973:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ReentrancyGuardStorage","nameLocation":"1940:22:6","nodeType":"StructDefinition","scope":1598,"src":"1933:62:6","visibility":"public"},{"constant":true,"id":1489,"mutability":"constant","name":"ReentrancyGuardStorageLocation","nameLocation":"2145:30:6","nodeType":"VariableDeclaration","scope":1598,"src":"2120:124:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2120:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2178:66:6","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"body":{"id":1496,"nodeType":"Block","src":"2345:89:6","statements":[{"AST":{"nativeSrc":"2364:64:6","nodeType":"YulBlock","src":"2364:64:6","statements":[{"nativeSrc":"2378:40:6","nodeType":"YulAssignment","src":"2378:40:6","value":{"name":"ReentrancyGuardStorageLocation","nativeSrc":"2388:30:6","nodeType":"YulIdentifier","src":"2388:30:6"},"variableNames":[{"name":"$.slot","nativeSrc":"2378:6:6","nodeType":"YulIdentifier","src":"2378:6:6"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1493,"isOffset":false,"isSlot":true,"src":"2378:6:6","suffix":"slot","valueSize":1},{"declaration":1489,"isOffset":false,"isSlot":false,"src":"2388:30:6","valueSize":1}],"id":1495,"nodeType":"InlineAssembly","src":"2355:73:6"}]},"id":1497,"implemented":true,"kind":"function","modifiers":[],"name":"_getReentrancyGuardStorage","nameLocation":"2260:26:6","nodeType":"FunctionDefinition","parameters":{"id":1490,"nodeType":"ParameterList","parameters":[],"src":"2286:2:6"},"returnParameters":{"id":1494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1493,"mutability":"mutable","name":"$","nameLocation":"2342:1:6","nodeType":"VariableDeclaration","scope":1497,"src":"2311:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1492,"nodeType":"UserDefinedTypeName","pathNode":{"id":1491,"name":"ReentrancyGuardStorage","nameLocations":["2311:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"2311:22:6"},"referencedDeclaration":1486,"src":"2311:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"src":"2310:34:6"},"scope":1598,"src":"2251:183:6","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":1498,"nodeType":"StructuredDocumentation","src":"2440:52:6","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":1500,"name":"ReentrancyGuardReentrantCall","nameLocation":"2503:28:6","nodeType":"ErrorDefinition","parameters":{"id":1499,"nodeType":"ParameterList","parameters":[],"src":"2531:2:6"},"src":"2497:37:6"},{"body":{"id":1508,"nodeType":"Block","src":"2600:51:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1505,"name":"__ReentrancyGuard_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"2610:32:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2610:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1507,"nodeType":"ExpressionStatement","src":"2610:34:6"}]},"id":1509,"implemented":true,"kind":"function","modifiers":[{"id":1503,"kind":"modifierInvocation","modifierName":{"id":1502,"name":"onlyInitializing","nameLocations":["2583:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2583:16:6"},"nodeType":"ModifierInvocation","src":"2583:16:6"}],"name":"__ReentrancyGuard_init","nameLocation":"2549:22:6","nodeType":"FunctionDefinition","parameters":{"id":1501,"nodeType":"ParameterList","parameters":[],"src":"2571:2:6"},"returnParameters":{"id":1504,"nodeType":"ParameterList","parameters":[],"src":"2600:0:6"},"scope":1598,"src":"2540:111:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1526,"nodeType":"Block","src":"2727:113:6","statements":[{"assignments":[1516],"declarations":[{"constant":false,"id":1516,"mutability":"mutable","name":"$","nameLocation":"2768:1:6","nodeType":"VariableDeclaration","scope":1526,"src":"2737:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1515,"nodeType":"UserDefinedTypeName","pathNode":{"id":1514,"name":"ReentrancyGuardStorage","nameLocations":["2737:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"2737:22:6"},"referencedDeclaration":1486,"src":"2737:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":1519,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1517,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"2772:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1486_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2737:63:6"},{"expression":{"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1520,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"2810:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2812:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"2810:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1523,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"2822:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2810:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1525,"nodeType":"ExpressionStatement","src":"2810:23:6"}]},"id":1527,"implemented":true,"kind":"function","modifiers":[{"id":1512,"kind":"modifierInvocation","modifierName":{"id":1511,"name":"onlyInitializing","nameLocations":["2710:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":357,"src":"2710:16:6"},"nodeType":"ModifierInvocation","src":"2710:16:6"}],"name":"__ReentrancyGuard_init_unchained","nameLocation":"2666:32:6","nodeType":"FunctionDefinition","parameters":{"id":1510,"nodeType":"ParameterList","parameters":[],"src":"2698:2:6"},"returnParameters":{"id":1513,"nodeType":"ParameterList","parameters":[],"src":"2727:0:6"},"scope":1598,"src":"2657:183:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1537,"nodeType":"Block","src":"3241:79:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1530,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1563,"src":"3251:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3251:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1532,"nodeType":"ExpressionStatement","src":"3251:21:6"},{"id":1533,"nodeType":"PlaceholderStatement","src":"3282:1:6"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1534,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1579,"src":"3293:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3293:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1536,"nodeType":"ExpressionStatement","src":"3293:20:6"}]},"documentation":{"id":1528,"nodeType":"StructuredDocumentation","src":"2846:366:6","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":1538,"name":"nonReentrant","nameLocation":"3226:12:6","nodeType":"ModifierDefinition","parameters":{"id":1529,"nodeType":"ParameterList","parameters":[],"src":"3238:2:6"},"src":"3217:103:6","virtual":false,"visibility":"internal"},{"body":{"id":1562,"nodeType":"Block","src":"3365:345:6","statements":[{"assignments":[1543],"declarations":[{"constant":false,"id":1543,"mutability":"mutable","name":"$","nameLocation":"3406:1:6","nodeType":"VariableDeclaration","scope":1562,"src":"3375:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1542,"nodeType":"UserDefinedTypeName","pathNode":{"id":1541,"name":"ReentrancyGuardStorage","nameLocations":["3375:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"3375:22:6"},"referencedDeclaration":1486,"src":"3375:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":1546,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1544,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"3410:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1486_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":1545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3410:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3375:63:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1547,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"3526:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1548,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3528:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"3526:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1549,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"3539:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3526:20:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1555,"nodeType":"IfStatement","src":"3522:88:6","trueBody":{"id":1554,"nodeType":"Block","src":"3548:62:6","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1551,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"3569:28:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3569:30:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1553,"nodeType":"RevertStatement","src":"3562:37:6"}]}},{"expression":{"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1556,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"3684:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1558,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3686:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"3684:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1559,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"3696:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3684:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1561,"nodeType":"ExpressionStatement","src":"3684:19:6"}]},"id":1563,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"3335:19:6","nodeType":"FunctionDefinition","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[],"src":"3354:2:6"},"returnParameters":{"id":1540,"nodeType":"ParameterList","parameters":[],"src":"3365:0:6"},"scope":1598,"src":"3326:384:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1578,"nodeType":"Block","src":"3754:245:6","statements":[{"assignments":[1568],"declarations":[{"constant":false,"id":1568,"mutability":"mutable","name":"$","nameLocation":"3795:1:6","nodeType":"VariableDeclaration","scope":1578,"src":"3764:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1567,"nodeType":"UserDefinedTypeName","pathNode":{"id":1566,"name":"ReentrancyGuardStorage","nameLocations":["3764:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"3764:22:6"},"referencedDeclaration":1486,"src":"3764:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":1571,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1569,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"3799:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1486_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3799:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3764:63:6"},{"expression":{"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1572,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"3969:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3971:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"3969:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1575,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"3981:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3969:23:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1577,"nodeType":"ExpressionStatement","src":"3969:23:6"}]},"id":1579,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"3725:18:6","nodeType":"FunctionDefinition","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[],"src":"3743:2:6"},"returnParameters":{"id":1565,"nodeType":"ParameterList","parameters":[],"src":"3754:0:6"},"scope":1598,"src":"3716:283:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1596,"nodeType":"Block","src":"4242:117:6","statements":[{"assignments":[1587],"declarations":[{"constant":false,"id":1587,"mutability":"mutable","name":"$","nameLocation":"4283:1:6","nodeType":"VariableDeclaration","scope":1596,"src":"4252:32:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":1586,"nodeType":"UserDefinedTypeName","pathNode":{"id":1585,"name":"ReentrancyGuardStorage","nameLocations":["4252:22:6"],"nodeType":"IdentifierPath","referencedDeclaration":1486,"src":"4252:22:6"},"referencedDeclaration":1486,"src":"4252:22:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":1590,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1588,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"4287:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1486_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4287:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4252:63:6"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1591,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"4332:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$1486_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":1592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4334:7:6","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":1485,"src":"4332:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1593,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"4345:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4332:20:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1584,"id":1595,"nodeType":"Return","src":"4325:27:6"}]},"documentation":{"id":1580,"nodeType":"StructuredDocumentation","src":"4005:168:6","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":1597,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"4187:23:6","nodeType":"FunctionDefinition","parameters":{"id":1581,"nodeType":"ParameterList","parameters":[],"src":"4210:2:6"},"returnParameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1597,"src":"4236:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1582,"name":"bool","nodeType":"ElementaryTypeName","src":"4236:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4235:6:6"},"scope":1598,"src":"4178:181:6","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1599,"src":"950:3411:6","usedErrors":[211,214,1500],"usedEvents":[219]}],"src":"109:4253:6"},"id":6},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[1608]},"id":1609,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1600,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1601,"nodeType":"StructuredDocumentation","src":"139:203:7","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":1608,"linearizedBaseContracts":[1608],"name":"IERC1822Proxiable","nameLocation":"353:17:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"377:438:7","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":1607,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"829:13:7","nodeType":"FunctionDefinition","parameters":{"id":1603,"nodeType":"ParameterList","parameters":[],"src":"842:2:7"},"returnParameters":{"id":1606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1605,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1607,"src":"868:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"868:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"867:9:7"},"scope":1608,"src":"820:57:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1609,"src":"343:536:7","usedErrors":[],"usedEvents":[]}],"src":"113:767:7"},"id":7},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[1745],"IERC20Errors":[1650],"IERC721Errors":[1698]},"id":1746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1610,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"138:139:8","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"id":1650,"linearizedBaseContracts":[1650],"name":"IERC20Errors","nameLocation":"288:12:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1612,"nodeType":"StructuredDocumentation","src":"307:309:8","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":1620,"name":"ERC20InsufficientBalance","nameLocation":"627:24:8","nodeType":"ErrorDefinition","parameters":{"id":1619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"sender","nameLocation":"660:6:8","nodeType":"VariableDeclaration","scope":1620,"src":"652:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1613,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1616,"mutability":"mutable","name":"balance","nameLocation":"676:7:8","nodeType":"VariableDeclaration","scope":1620,"src":"668:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1615,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1618,"mutability":"mutable","name":"needed","nameLocation":"693:6:8","nodeType":"VariableDeclaration","scope":1620,"src":"685:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1617,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:8"},"src":"621:80:8"},{"documentation":{"id":1621,"nodeType":"StructuredDocumentation","src":"707:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":1625,"name":"ERC20InvalidSender","nameLocation":"870:18:8","nodeType":"ErrorDefinition","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1623,"mutability":"mutable","name":"sender","nameLocation":"897:6:8","nodeType":"VariableDeclaration","scope":1625,"src":"889:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1622,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:8"},"src":"864:41:8"},{"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"911:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":1630,"name":"ERC20InvalidReceiver","nameLocation":"1081:20:8","nodeType":"ErrorDefinition","parameters":{"id":1629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:8","nodeType":"VariableDeclaration","scope":1630,"src":"1102:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:8"},"src":"1075:45:8"},{"documentation":{"id":1631,"nodeType":"StructuredDocumentation","src":"1126:345:8","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":1639,"name":"ERC20InsufficientAllowance","nameLocation":"1482:26:8","nodeType":"ErrorDefinition","parameters":{"id":1638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1633,"mutability":"mutable","name":"spender","nameLocation":"1517:7:8","nodeType":"VariableDeclaration","scope":1639,"src":"1509:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1632,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1635,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:8","nodeType":"VariableDeclaration","scope":1639,"src":"1526:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1634,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1637,"mutability":"mutable","name":"needed","nameLocation":"1553:6:8","nodeType":"VariableDeclaration","scope":1639,"src":"1545:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:8"},"src":"1476:85:8"},{"documentation":{"id":1640,"nodeType":"StructuredDocumentation","src":"1567:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":1644,"name":"ERC20InvalidApprover","nameLocation":"1752:20:8","nodeType":"ErrorDefinition","parameters":{"id":1643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1642,"mutability":"mutable","name":"approver","nameLocation":"1781:8:8","nodeType":"VariableDeclaration","scope":1644,"src":"1773:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1641,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:8"},"src":"1746:45:8"},{"documentation":{"id":1645,"nodeType":"StructuredDocumentation","src":"1797:195:8","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":1649,"name":"ERC20InvalidSpender","nameLocation":"2003:19:8","nodeType":"ErrorDefinition","parameters":{"id":1648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1647,"mutability":"mutable","name":"spender","nameLocation":"2031:7:8","nodeType":"VariableDeclaration","scope":1649,"src":"2023:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:8"},"src":"1997:43:8"}],"scope":1746,"src":"278:1764:8","usedErrors":[1620,1625,1630,1639,1644,1649],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1651,"nodeType":"StructuredDocumentation","src":"2044:141:8","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"id":1698,"linearizedBaseContracts":[1698],"name":"IERC721Errors","nameLocation":"2196:13:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1652,"nodeType":"StructuredDocumentation","src":"2216:219:8","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":1656,"name":"ERC721InvalidOwner","nameLocation":"2446:18:8","nodeType":"ErrorDefinition","parameters":{"id":1655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1654,"mutability":"mutable","name":"owner","nameLocation":"2473:5:8","nodeType":"VariableDeclaration","scope":1656,"src":"2465:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1653,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:8"},"src":"2440:40:8"},{"documentation":{"id":1657,"nodeType":"StructuredDocumentation","src":"2486:132:8","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":1661,"name":"ERC721NonexistentToken","nameLocation":"2629:22:8","nodeType":"ErrorDefinition","parameters":{"id":1660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:8","nodeType":"VariableDeclaration","scope":1661,"src":"2652:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1658,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:8"},"src":"2623:46:8"},{"documentation":{"id":1662,"nodeType":"StructuredDocumentation","src":"2675:289:8","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":1670,"name":"ERC721IncorrectOwner","nameLocation":"2975:20:8","nodeType":"ErrorDefinition","parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1664,"mutability":"mutable","name":"sender","nameLocation":"3004:6:8","nodeType":"VariableDeclaration","scope":1670,"src":"2996:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1663,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1666,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:8","nodeType":"VariableDeclaration","scope":1670,"src":"3012:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"owner","nameLocation":"3037:5:8","nodeType":"VariableDeclaration","scope":1670,"src":"3029:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1667,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:8"},"src":"2969:75:8"},{"documentation":{"id":1671,"nodeType":"StructuredDocumentation","src":"3050:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":1675,"name":"ERC721InvalidSender","nameLocation":"3213:19:8","nodeType":"ErrorDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1673,"mutability":"mutable","name":"sender","nameLocation":"3241:6:8","nodeType":"VariableDeclaration","scope":1675,"src":"3233:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:8"},"src":"3207:42:8"},{"documentation":{"id":1676,"nodeType":"StructuredDocumentation","src":"3255:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":1680,"name":"ERC721InvalidReceiver","nameLocation":"3425:21:8","nodeType":"ErrorDefinition","parameters":{"id":1679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1678,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:8","nodeType":"VariableDeclaration","scope":1680,"src":"3447:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1677,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:8"},"src":"3419:46:8"},{"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"3471:247:8","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":1687,"name":"ERC721InsufficientApproval","nameLocation":"3729:26:8","nodeType":"ErrorDefinition","parameters":{"id":1686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"operator","nameLocation":"3764:8:8","nodeType":"VariableDeclaration","scope":1687,"src":"3756:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:8","nodeType":"VariableDeclaration","scope":1687,"src":"3774:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1684,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:8"},"src":"3723:68:8"},{"documentation":{"id":1688,"nodeType":"StructuredDocumentation","src":"3797:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":1692,"name":"ERC721InvalidApprover","nameLocation":"3982:21:8","nodeType":"ErrorDefinition","parameters":{"id":1691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1690,"mutability":"mutable","name":"approver","nameLocation":"4012:8:8","nodeType":"VariableDeclaration","scope":1692,"src":"4004:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1689,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:8"},"src":"3976:46:8"},{"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"4028:197:8","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":1697,"name":"ERC721InvalidOperator","nameLocation":"4236:21:8","nodeType":"ErrorDefinition","parameters":{"id":1696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"operator","nameLocation":"4266:8:8","nodeType":"VariableDeclaration","scope":1697,"src":"4258:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1694,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:8"},"src":"4230:46:8"}],"scope":1746,"src":"2186:2092:8","usedErrors":[1656,1661,1670,1675,1680,1687,1692,1697],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1699,"nodeType":"StructuredDocumentation","src":"4280:143:8","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"id":1745,"linearizedBaseContracts":[1745],"name":"IERC1155Errors","nameLocation":"4434:14:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1700,"nodeType":"StructuredDocumentation","src":"4455:361:8","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":1710,"name":"ERC1155InsufficientBalance","nameLocation":"4827:26:8","nodeType":"ErrorDefinition","parameters":{"id":1709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1702,"mutability":"mutable","name":"sender","nameLocation":"4862:6:8","nodeType":"VariableDeclaration","scope":1710,"src":"4854:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1701,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1704,"mutability":"mutable","name":"balance","nameLocation":"4878:7:8","nodeType":"VariableDeclaration","scope":1710,"src":"4870:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1703,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1706,"mutability":"mutable","name":"needed","nameLocation":"4895:6:8","nodeType":"VariableDeclaration","scope":1710,"src":"4887:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1705,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1708,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:8","nodeType":"VariableDeclaration","scope":1710,"src":"4903:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1707,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:8"},"src":"4821:99:8"},{"documentation":{"id":1711,"nodeType":"StructuredDocumentation","src":"4926:152:8","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":1715,"name":"ERC1155InvalidSender","nameLocation":"5089:20:8","nodeType":"ErrorDefinition","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1713,"mutability":"mutable","name":"sender","nameLocation":"5118:6:8","nodeType":"VariableDeclaration","scope":1715,"src":"5110:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1712,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:8"},"src":"5083:43:8"},{"documentation":{"id":1716,"nodeType":"StructuredDocumentation","src":"5132:159:8","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":1720,"name":"ERC1155InvalidReceiver","nameLocation":"5302:22:8","nodeType":"ErrorDefinition","parameters":{"id":1719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1718,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:8","nodeType":"VariableDeclaration","scope":1720,"src":"5325:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1717,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:8"},"src":"5296:47:8"},{"documentation":{"id":1721,"nodeType":"StructuredDocumentation","src":"5349:256:8","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":1727,"name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:8","nodeType":"ErrorDefinition","parameters":{"id":1726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1723,"mutability":"mutable","name":"operator","nameLocation":"5653:8:8","nodeType":"VariableDeclaration","scope":1727,"src":"5645:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1722,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1725,"mutability":"mutable","name":"owner","nameLocation":"5671:5:8","nodeType":"VariableDeclaration","scope":1727,"src":"5663:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1724,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:8"},"src":"5610:68:8"},{"documentation":{"id":1728,"nodeType":"StructuredDocumentation","src":"5684:174:8","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":1732,"name":"ERC1155InvalidApprover","nameLocation":"5869:22:8","nodeType":"ErrorDefinition","parameters":{"id":1731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1730,"mutability":"mutable","name":"approver","nameLocation":"5900:8:8","nodeType":"VariableDeclaration","scope":1732,"src":"5892:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1729,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:8"},"src":"5863:47:8"},{"documentation":{"id":1733,"nodeType":"StructuredDocumentation","src":"5916:197:8","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":1737,"name":"ERC1155InvalidOperator","nameLocation":"6124:22:8","nodeType":"ErrorDefinition","parameters":{"id":1736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1735,"mutability":"mutable","name":"operator","nameLocation":"6155:8:8","nodeType":"VariableDeclaration","scope":1737,"src":"6147:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1734,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:8"},"src":"6118:47:8"},{"documentation":{"id":1738,"nodeType":"StructuredDocumentation","src":"6171:280:8","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":1744,"name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:8","nodeType":"ErrorDefinition","parameters":{"id":1743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1740,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:8","nodeType":"VariableDeclaration","scope":1744,"src":"6488:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1739,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1742,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:8","nodeType":"VariableDeclaration","scope":1744,"src":"6507:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1741,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:8"},"src":"6456:73:8"}],"scope":1746,"src":"4424:2107:8","usedErrors":[1710,1715,1720,1727,1732,1737,1744],"usedEvents":[]}],"src":"112:6420:8"},"id":8},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[2930],"ERC1967Utils":[2048],"IBeacon":[2058],"StorageSlot":[3070]},"id":2049,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1747,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:9"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":1749,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2049,"sourceUnit":2059,"src":"140:46:9","symbolAliases":[{"foreign":{"id":1748,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"148:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1751,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2049,"sourceUnit":2931,"src":"187:48:9","symbolAliases":[{"foreign":{"id":1750,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"195:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":1753,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2049,"sourceUnit":3071,"src":"236:56:9","symbolAliases":[{"foreign":{"id":1752,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"244:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":1754,"nodeType":"StructuredDocumentation","src":"294:154:9","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots."},"fullyImplemented":true,"id":2048,"linearizedBaseContracts":[2048],"name":"ERC1967Utils","nameLocation":"457:12:9","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1755,"nodeType":"StructuredDocumentation","src":"660:68:9","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1759,"name":"Upgraded","nameLocation":"739:8:9","nodeType":"EventDefinition","parameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"764:14:9","nodeType":"VariableDeclaration","scope":1759,"src":"748:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1756,"name":"address","nodeType":"ElementaryTypeName","src":"748:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"747:32:9"},"src":"733:47:9"},{"anonymous":false,"documentation":{"id":1760,"nodeType":"StructuredDocumentation","src":"786:67:9","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":1766,"name":"AdminChanged","nameLocation":"864:12:9","nodeType":"EventDefinition","parameters":{"id":1765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1762,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"885:13:9","nodeType":"VariableDeclaration","scope":1766,"src":"877:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1761,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1764,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"908:8:9","nodeType":"VariableDeclaration","scope":1766,"src":"900:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1763,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"876:41:9"},"src":"858:60:9"},{"anonymous":false,"documentation":{"id":1767,"nodeType":"StructuredDocumentation","src":"924:59:9","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":1771,"name":"BeaconUpgraded","nameLocation":"994:14:9","nodeType":"EventDefinition","parameters":{"id":1770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1769,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"1025:6:9","nodeType":"VariableDeclaration","scope":1771,"src":"1009:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1768,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1008:24:9"},"src":"988:45:9"},{"constant":true,"documentation":{"id":1772,"nodeType":"StructuredDocumentation","src":"1039:170:9","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"id":1775,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"1305:19:9","nodeType":"VariableDeclaration","scope":2048,"src":"1279:114:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1773,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1279:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":1774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1327:66:9","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":1776,"nodeType":"StructuredDocumentation","src":"1400:69:9","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":1780,"name":"ERC1967InvalidImplementation","nameLocation":"1480:28:9","nodeType":"ErrorDefinition","parameters":{"id":1779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1778,"mutability":"mutable","name":"implementation","nameLocation":"1517:14:9","nodeType":"VariableDeclaration","scope":1780,"src":"1509:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1777,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1508:24:9"},"src":"1474:59:9"},{"documentation":{"id":1781,"nodeType":"StructuredDocumentation","src":"1539:60:9","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":1785,"name":"ERC1967InvalidAdmin","nameLocation":"1610:19:9","nodeType":"ErrorDefinition","parameters":{"id":1784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1783,"mutability":"mutable","name":"admin","nameLocation":"1638:5:9","nodeType":"VariableDeclaration","scope":1785,"src":"1630:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1782,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1629:15:9"},"src":"1604:41:9"},{"documentation":{"id":1786,"nodeType":"StructuredDocumentation","src":"1651:61:9","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":1790,"name":"ERC1967InvalidBeacon","nameLocation":"1723:20:9","nodeType":"ErrorDefinition","parameters":{"id":1789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1788,"mutability":"mutable","name":"beacon","nameLocation":"1752:6:9","nodeType":"VariableDeclaration","scope":1790,"src":"1744:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1787,"name":"address","nodeType":"ElementaryTypeName","src":"1744:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1743:16:9"},"src":"1717:43:9"},{"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"1766:82:9","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":1793,"name":"ERC1967NonPayable","nameLocation":"1859:17:9","nodeType":"ErrorDefinition","parameters":{"id":1792,"nodeType":"ParameterList","parameters":[],"src":"1876:2:9"},"src":"1853:26:9"},{"body":{"id":1805,"nodeType":"Block","src":"2018:77:9","statements":[{"expression":{"expression":{"arguments":[{"id":1801,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2062:19:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1799,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"2035:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3070_$","typeString":"type(library StorageSlot)"}},"id":1800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2047:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2992,"src":"2035:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2966_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2035:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2966_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2083:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2965,"src":"2035:53:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1798,"id":1804,"nodeType":"Return","src":"2028:60:9"}]},"documentation":{"id":1794,"nodeType":"StructuredDocumentation","src":"1885:67:9","text":" @dev Returns the current implementation address."},"id":1806,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1966:17:9","nodeType":"FunctionDefinition","parameters":{"id":1795,"nodeType":"ParameterList","parameters":[],"src":"1983:2:9"},"returnParameters":{"id":1798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1806,"src":"2009:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1796,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2008:9:9"},"scope":2048,"src":"1957:138:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1832,"nodeType":"Block","src":"2249:218:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1812,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"2263:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2281:4:9","memberName":"code","nodeType":"MemberAccess","src":"2263:22:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2286:6:9","memberName":"length","nodeType":"MemberAccess","src":"2263:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2263:34:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1822,"nodeType":"IfStatement","src":"2259:119:9","trueBody":{"id":1821,"nodeType":"Block","src":"2299:79:9","statements":[{"errorCall":{"arguments":[{"id":1818,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"2349:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1817,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"2320:28:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1820,"nodeType":"RevertStatement","src":"2313:54:9"}]}},{"expression":{"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1826,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2414:19:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1823,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"2387:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3070_$","typeString":"type(library StorageSlot)"}},"id":1825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2399:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2992,"src":"2387:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2966_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2387:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2966_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1828,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2435:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2965,"src":"2387:53:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1829,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"2443:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2387:73:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1831,"nodeType":"ExpressionStatement","src":"2387:73:9"}]},"documentation":{"id":1807,"nodeType":"StructuredDocumentation","src":"2101:80:9","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":1833,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"2195:18:9","nodeType":"FunctionDefinition","parameters":{"id":1810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1809,"mutability":"mutable","name":"newImplementation","nameLocation":"2222:17:9","nodeType":"VariableDeclaration","scope":1833,"src":"2214:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1808,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2213:27:9"},"returnParameters":{"id":1811,"nodeType":"ParameterList","parameters":[],"src":"2249:0:9"},"scope":2048,"src":"2186:281:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1866,"nodeType":"Block","src":"2860:254:9","statements":[{"expression":{"arguments":[{"id":1842,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"2889:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1841,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1833,"src":"2870:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2870:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1844,"nodeType":"ExpressionStatement","src":"2870:37:9"},{"eventCall":{"arguments":[{"id":1846,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"2931:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1845,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1759,"src":"2922:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2922:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1848,"nodeType":"EmitStatement","src":"2917:32:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1849,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"2964:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2969:6:9","memberName":"length","nodeType":"MemberAccess","src":"2964:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2978:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2964:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1864,"nodeType":"Block","src":"3065:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1861,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2047,"src":"3079:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3079:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1863,"nodeType":"ExpressionStatement","src":"3079:18:9"}]},"id":1865,"nodeType":"IfStatement","src":"2960:148:9","trueBody":{"id":1860,"nodeType":"Block","src":"2981:78:9","statements":[{"expression":{"arguments":[{"id":1856,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"3024:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1857,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3043:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1853,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"2995:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2930_$","typeString":"type(library Address)"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3003:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":2849,"src":"2995:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1859,"nodeType":"ExpressionStatement","src":"2995:53:9"}]}}]},"documentation":{"id":1834,"nodeType":"StructuredDocumentation","src":"2473:301:9","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"id":1867,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2788:16:9","nodeType":"FunctionDefinition","parameters":{"id":1839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1836,"mutability":"mutable","name":"newImplementation","nameLocation":"2813:17:9","nodeType":"VariableDeclaration","scope":1867,"src":"2805:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1835,"name":"address","nodeType":"ElementaryTypeName","src":"2805:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1838,"mutability":"mutable","name":"data","nameLocation":"2845:4:9","nodeType":"VariableDeclaration","scope":1867,"src":"2832:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1837,"name":"bytes","nodeType":"ElementaryTypeName","src":"2832:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2804:46:9"},"returnParameters":{"id":1840,"nodeType":"ParameterList","parameters":[],"src":"2860:0:9"},"scope":2048,"src":"2779:335:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1868,"nodeType":"StructuredDocumentation","src":"3120:145:9","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"id":1871,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"3361:10:9","nodeType":"VariableDeclaration","scope":2048,"src":"3335:105:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3335:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":1870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3374:66:9","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":1883,"nodeType":"Block","src":"3844:68:9","statements":[{"expression":{"expression":{"arguments":[{"id":1879,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"3888:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1877,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"3861:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3070_$","typeString":"type(library StorageSlot)"}},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3873:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2992,"src":"3861:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2966_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2966_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1881,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3900:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2965,"src":"3861:44:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1876,"id":1882,"nodeType":"Return","src":"3854:51:9"}]},"documentation":{"id":1872,"nodeType":"StructuredDocumentation","src":"3447:340:9","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":1884,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3801:8:9","nodeType":"FunctionDefinition","parameters":{"id":1873,"nodeType":"ParameterList","parameters":[],"src":"3809:2:9"},"returnParameters":{"id":1876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1884,"src":"3835:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1874,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3834:9:9"},"scope":2048,"src":"3792:120:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1914,"nodeType":"Block","src":"4039:172:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1890,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"4053:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4073:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4065:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1891,"name":"address","nodeType":"ElementaryTypeName","src":"4065:7:9","typeDescriptions":{}}},"id":1894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4053:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1904,"nodeType":"IfStatement","src":"4049:91:9","trueBody":{"id":1903,"nodeType":"Block","src":"4077:63:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4126:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4118:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"4118:7:9","typeDescriptions":{}}},"id":1900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1896,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"4098:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4098:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1902,"nodeType":"RevertStatement","src":"4091:38:9"}]}},{"expression":{"id":1912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1908,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"4176:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1905,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"4149:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3070_$","typeString":"type(library StorageSlot)"}},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4161:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2992,"src":"4149:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2966_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4149:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2966_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4188:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2965,"src":"4149:44:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1911,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"4196:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4149:55:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1913,"nodeType":"ExpressionStatement","src":"4149:55:9"}]},"documentation":{"id":1885,"nodeType":"StructuredDocumentation","src":"3918:71:9","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":1915,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4003:9:9","nodeType":"FunctionDefinition","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"newAdmin","nameLocation":"4021:8:9","nodeType":"VariableDeclaration","scope":1915,"src":"4013:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1886,"name":"address","nodeType":"ElementaryTypeName","src":"4013:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4012:18:9"},"returnParameters":{"id":1889,"nodeType":"ParameterList","parameters":[],"src":"4039:0:9"},"scope":2048,"src":"3994:217:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1931,"nodeType":"Block","src":"4379:85:9","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1922,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1884,"src":"4407:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4407:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1924,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"4419:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1921,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1766,"src":"4394:12:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4394:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1926,"nodeType":"EmitStatement","src":"4389:39:9"},{"expression":{"arguments":[{"id":1928,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"4448:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1927,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1915,"src":"4438:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1930,"nodeType":"ExpressionStatement","src":"4438:19:9"}]},"documentation":{"id":1916,"nodeType":"StructuredDocumentation","src":"4217:109:9","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":1932,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"4340:11:9","nodeType":"FunctionDefinition","parameters":{"id":1919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1918,"mutability":"mutable","name":"newAdmin","nameLocation":"4360:8:9","nodeType":"VariableDeclaration","scope":1932,"src":"4352:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1917,"name":"address","nodeType":"ElementaryTypeName","src":"4352:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4351:18:9"},"returnParameters":{"id":1920,"nodeType":"ParameterList","parameters":[],"src":"4379:0:9"},"scope":2048,"src":"4331:133:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1933,"nodeType":"StructuredDocumentation","src":"4470:201:9","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"id":1936,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4767:11:9","nodeType":"VariableDeclaration","scope":2048,"src":"4741:106:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4741:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":1935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4781:66:9","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":1948,"nodeType":"Block","src":"4963:69:9","statements":[{"expression":{"expression":{"arguments":[{"id":1944,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1936,"src":"5007:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1942,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"4980:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3070_$","typeString":"type(library StorageSlot)"}},"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4992:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2992,"src":"4980:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2966_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2966_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5020:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2965,"src":"4980:45:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1941,"id":1947,"nodeType":"Return","src":"4973:52:9"}]},"documentation":{"id":1937,"nodeType":"StructuredDocumentation","src":"4854:51:9","text":" @dev Returns the current beacon."},"id":1949,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4919:9:9","nodeType":"FunctionDefinition","parameters":{"id":1938,"nodeType":"ParameterList","parameters":[],"src":"4928:2:9"},"returnParameters":{"id":1941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1940,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1949,"src":"4954:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1939,"name":"address","nodeType":"ElementaryTypeName","src":"4954:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4953:9:9"},"scope":2048,"src":"4910:122:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1994,"nodeType":"Block","src":"5161:390:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1955,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"5175:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5185:4:9","memberName":"code","nodeType":"MemberAccess","src":"5175:14:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5190:6:9","memberName":"length","nodeType":"MemberAccess","src":"5175:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5200:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1965,"nodeType":"IfStatement","src":"5171:95:9","trueBody":{"id":1964,"nodeType":"Block","src":"5203:63:9","statements":[{"errorCall":{"arguments":[{"id":1961,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"5245:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1960,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"5224:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5224:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1963,"nodeType":"RevertStatement","src":"5217:38:9"}]}},{"expression":{"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1969,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1936,"src":"5303:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1966,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"5276:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3070_$","typeString":"type(library StorageSlot)"}},"id":1968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5288:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2992,"src":"5276:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2966_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5276:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2966_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5316:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2965,"src":"5276:45:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1972,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"5324:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5276:57:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1974,"nodeType":"ExpressionStatement","src":"5276:57:9"},{"assignments":[1976],"declarations":[{"constant":false,"id":1976,"mutability":"mutable","name":"beaconImplementation","nameLocation":"5352:20:9","nodeType":"VariableDeclaration","scope":1994,"src":"5344:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1975,"name":"address","nodeType":"ElementaryTypeName","src":"5344:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1982,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1978,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"5383:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1977,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"5375:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$2058_$","typeString":"type(contract IBeacon)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$2058","typeString":"contract IBeacon"}},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5394:14:9","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":2057,"src":"5375:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5344:66:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1983,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"5424:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5445:4:9","memberName":"code","nodeType":"MemberAccess","src":"5424:25:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5450:6:9","memberName":"length","nodeType":"MemberAccess","src":"5424:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5460:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5424:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1993,"nodeType":"IfStatement","src":"5420:125:9","trueBody":{"id":1992,"nodeType":"Block","src":"5463:82:9","statements":[{"errorCall":{"arguments":[{"id":1989,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"5513:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1988,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"5484:28:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5484:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1991,"nodeType":"RevertStatement","src":"5477:57:9"}]}}]},"documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"5038:71:9","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":1995,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5123:10:9","nodeType":"FunctionDefinition","parameters":{"id":1953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1952,"mutability":"mutable","name":"newBeacon","nameLocation":"5142:9:9","nodeType":"VariableDeclaration","scope":1995,"src":"5134:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"5134:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5133:19:9"},"returnParameters":{"id":1954,"nodeType":"ParameterList","parameters":[],"src":"5161:0:9"},"scope":2048,"src":"5114:437:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2032,"nodeType":"Block","src":"6155:254:9","statements":[{"expression":{"arguments":[{"id":2004,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"6176:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2003,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1995,"src":"6165:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2006,"nodeType":"ExpressionStatement","src":"6165:21:9"},{"eventCall":{"arguments":[{"id":2008,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"6216:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2007,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"6201:14:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6201:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2010,"nodeType":"EmitStatement","src":"6196:30:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2011,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"6241:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6246:6:9","memberName":"length","nodeType":"MemberAccess","src":"6241:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6255:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6241:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2030,"nodeType":"Block","src":"6360:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2027,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2047,"src":"6374:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2029,"nodeType":"ExpressionStatement","src":"6374:18:9"}]},"id":2031,"nodeType":"IfStatement","src":"6237:166:9","trueBody":{"id":2026,"nodeType":"Block","src":"6258:96:9","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2019,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"6309:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2018,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"6301:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$2058_$","typeString":"type(contract IBeacon)"}},"id":2020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$2058","typeString":"contract IBeacon"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6320:14:9","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":2057,"src":"6301:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2023,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"6338:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2015,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"6272:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2930_$","typeString":"type(library Address)"}},"id":2017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6280:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":2849,"src":"6272:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":2024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6272:71:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2025,"nodeType":"ExpressionStatement","src":"6272:71:9"}]}}]},"documentation":{"id":1996,"nodeType":"StructuredDocumentation","src":"5557:514:9","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"id":2033,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"6085:22:9","nodeType":"FunctionDefinition","parameters":{"id":2001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1998,"mutability":"mutable","name":"newBeacon","nameLocation":"6116:9:9","nodeType":"VariableDeclaration","scope":2033,"src":"6108:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1997,"name":"address","nodeType":"ElementaryTypeName","src":"6108:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2000,"mutability":"mutable","name":"data","nameLocation":"6140:4:9","nodeType":"VariableDeclaration","scope":2033,"src":"6127:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1999,"name":"bytes","nodeType":"ElementaryTypeName","src":"6127:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6107:38:9"},"returnParameters":{"id":2002,"nodeType":"ParameterList","parameters":[],"src":"6155:0:9"},"scope":2048,"src":"6076:333:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2046,"nodeType":"Block","src":"6634:86:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2037,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6648:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6652:5:9","memberName":"value","nodeType":"MemberAccess","src":"6648:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6648:13:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2045,"nodeType":"IfStatement","src":"6644:70:9","trueBody":{"id":2044,"nodeType":"Block","src":"6663:51:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2041,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"6684:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6684:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2043,"nodeType":"RevertStatement","src":"6677:26:9"}]}}]},"documentation":{"id":2034,"nodeType":"StructuredDocumentation","src":"6415:178:9","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"id":2047,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6607:16:9","nodeType":"FunctionDefinition","parameters":{"id":2035,"nodeType":"ParameterList","parameters":[],"src":"6623:2:9"},"returnParameters":{"id":2036,"nodeType":"ParameterList","parameters":[],"src":"6634:0:9"},"scope":2048,"src":"6598:122:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":2049,"src":"449:6273:9","usedErrors":[1780,1785,1790,1793],"usedEvents":[1759,1766,1771]}],"src":"114:6609:9"},"id":9},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[2058]},"id":2059,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2050,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":2051,"nodeType":"StructuredDocumentation","src":"134:79:10","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":2058,"linearizedBaseContracts":[2058],"name":"IBeacon","nameLocation":"224:7:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2052,"nodeType":"StructuredDocumentation","src":"238:168:10","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","id":2057,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:10","nodeType":"FunctionDefinition","parameters":{"id":2053,"nodeType":"ParameterList","parameters":[],"src":"434:2:10"},"returnParameters":{"id":2056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2057,"src":"460:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2054,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:10"},"scope":2058,"src":"411:58:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2059,"src":"214:257:10","usedErrors":[],"usedEvents":[]}],"src":"108:364:10"},"id":10},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[2960],"ERC20":[2573],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677]},"id":2574,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2060,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:11"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":2062,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2574,"sourceUnit":2652,"src":"131:36:11","symbolAliases":[{"foreign":{"id":2061,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"139:6:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":2064,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2574,"sourceUnit":2678,"src":"168:63:11","symbolAliases":[{"foreign":{"id":2063,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"176:14:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":2066,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2574,"sourceUnit":2961,"src":"232:48:11","symbolAliases":[{"foreign":{"id":2065,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2960,"src":"240:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":2068,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2574,"sourceUnit":1746,"src":"281:65:11","symbolAliases":[{"foreign":{"id":2067,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"289:12:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2070,"name":"Context","nameLocations":["1428:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":2960,"src":"1428:7:11"},"id":2071,"nodeType":"InheritanceSpecifier","src":"1428:7:11"},{"baseName":{"id":2072,"name":"IERC20","nameLocations":["1437:6:11"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"1437:6:11"},"id":2073,"nodeType":"InheritanceSpecifier","src":"1437:6:11"},{"baseName":{"id":2074,"name":"IERC20Metadata","nameLocations":["1445:14:11"],"nodeType":"IdentifierPath","referencedDeclaration":2677,"src":"1445:14:11"},"id":2075,"nodeType":"InheritanceSpecifier","src":"1445:14:11"},{"baseName":{"id":2076,"name":"IERC20Errors","nameLocations":["1461:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":1650,"src":"1461:12:11"},"id":2077,"nodeType":"InheritanceSpecifier","src":"1461:12:11"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":2069,"nodeType":"StructuredDocumentation","src":"348:1052:11","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification."},"fullyImplemented":true,"id":2573,"linearizedBaseContracts":[2573,1650,2677,2651,2960],"name":"ERC20","nameLocation":"1419:5:11","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2081,"mutability":"mutable","name":"_balances","nameLocation":"1524:9:11","nodeType":"VariableDeclaration","scope":2573,"src":"1480:53:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2080,"keyName":"account","keyNameLocation":"1496:7:11","keyType":{"id":2078,"name":"address","nodeType":"ElementaryTypeName","src":"1488:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1480:35:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2079,"name":"uint256","nodeType":"ElementaryTypeName","src":"1507:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":2087,"mutability":"mutable","name":"_allowances","nameLocation":"1612:11:11","nodeType":"VariableDeclaration","scope":2573,"src":"1540:83:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":2086,"keyName":"account","keyNameLocation":"1556:7:11","keyType":{"id":2082,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1540:63:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2085,"keyName":"spender","keyNameLocation":"1583:7:11","keyType":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"1575:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1567:35:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2084,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":2089,"mutability":"mutable","name":"_totalSupply","nameLocation":"1646:12:11","nodeType":"VariableDeclaration","scope":2573,"src":"1630:28:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2088,"name":"uint256","nodeType":"ElementaryTypeName","src":"1630:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":2091,"mutability":"mutable","name":"_name","nameLocation":"1680:5:11","nodeType":"VariableDeclaration","scope":2573,"src":"1665:20:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2090,"name":"string","nodeType":"ElementaryTypeName","src":"1665:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":2093,"mutability":"mutable","name":"_symbol","nameLocation":"1706:7:11","nodeType":"VariableDeclaration","scope":2573,"src":"1691:22:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2092,"name":"string","nodeType":"ElementaryTypeName","src":"1691:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":2109,"nodeType":"Block","src":"1952:57:11","statements":[{"expression":{"id":2103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2101,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2091,"src":"1962:5:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2102,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2096,"src":"1970:5:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1962:13:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2104,"nodeType":"ExpressionStatement","src":"1962:13:11"},{"expression":{"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2105,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2093,"src":"1985:7:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2106,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"1995:7:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1985:17:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2108,"nodeType":"ExpressionStatement","src":"1985:17:11"}]},"documentation":{"id":2094,"nodeType":"StructuredDocumentation","src":"1720:171:11","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":2110,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"name_","nameLocation":"1922:5:11","nodeType":"VariableDeclaration","scope":2110,"src":"1908:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2095,"name":"string","nodeType":"ElementaryTypeName","src":"1908:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2098,"mutability":"mutable","name":"symbol_","nameLocation":"1943:7:11","nodeType":"VariableDeclaration","scope":2110,"src":"1929:21:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2097,"name":"string","nodeType":"ElementaryTypeName","src":"1929:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1907:44:11"},"returnParameters":{"id":2100,"nodeType":"ParameterList","parameters":[],"src":"1952:0:11"},"scope":2573,"src":"1896:113:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2664],"body":{"id":2118,"nodeType":"Block","src":"2134:29:11","statements":[{"expression":{"id":2116,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2091,"src":"2151:5:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2115,"id":2117,"nodeType":"Return","src":"2144:12:11"}]},"documentation":{"id":2111,"nodeType":"StructuredDocumentation","src":"2015:54:11","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":2119,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2083:4:11","nodeType":"FunctionDefinition","parameters":{"id":2112,"nodeType":"ParameterList","parameters":[],"src":"2087:2:11"},"returnParameters":{"id":2115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2119,"src":"2119:13:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2113,"name":"string","nodeType":"ElementaryTypeName","src":"2119:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2118:15:11"},"scope":2573,"src":"2074:89:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2670],"body":{"id":2127,"nodeType":"Block","src":"2338:31:11","statements":[{"expression":{"id":2125,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2093,"src":"2355:7:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2124,"id":2126,"nodeType":"Return","src":"2348:14:11"}]},"documentation":{"id":2120,"nodeType":"StructuredDocumentation","src":"2169:102:11","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":2128,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2285:6:11","nodeType":"FunctionDefinition","parameters":{"id":2121,"nodeType":"ParameterList","parameters":[],"src":"2291:2:11"},"returnParameters":{"id":2124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2123,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2128,"src":"2323:13:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2122,"name":"string","nodeType":"ElementaryTypeName","src":"2323:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2322:15:11"},"scope":2573,"src":"2276:93:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2676],"body":{"id":2136,"nodeType":"Block","src":"3058:26:11","statements":[{"expression":{"hexValue":"3138","id":2134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3075:2:11","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":2133,"id":2135,"nodeType":"Return","src":"3068:9:11"}]},"documentation":{"id":2129,"nodeType":"StructuredDocumentation","src":"2375:622:11","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":2137,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3011:8:11","nodeType":"FunctionDefinition","parameters":{"id":2130,"nodeType":"ParameterList","parameters":[],"src":"3019:2:11"},"returnParameters":{"id":2133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2137,"src":"3051:5:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2131,"name":"uint8","nodeType":"ElementaryTypeName","src":"3051:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3050:7:11"},"scope":2573,"src":"3002:82:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2600],"body":{"id":2145,"nodeType":"Block","src":"3205:36:11","statements":[{"expression":{"id":2143,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2089,"src":"3222:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2142,"id":2144,"nodeType":"Return","src":"3215:19:11"}]},"documentation":{"id":2138,"nodeType":"StructuredDocumentation","src":"3090:49:11","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":2146,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3153:11:11","nodeType":"FunctionDefinition","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[],"src":"3164:2:11"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2146,"src":"3196:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2140,"name":"uint256","nodeType":"ElementaryTypeName","src":"3196:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3195:9:11"},"scope":2573,"src":"3144:97:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2608],"body":{"id":2158,"nodeType":"Block","src":"3373:42:11","statements":[{"expression":{"baseExpression":{"id":2154,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"3390:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2156,"indexExpression":{"id":2155,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"3400:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3390:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2153,"id":2157,"nodeType":"Return","src":"3383:25:11"}]},"documentation":{"id":2147,"nodeType":"StructuredDocumentation","src":"3247:47:11","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":2159,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3308:9:11","nodeType":"FunctionDefinition","parameters":{"id":2150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2149,"mutability":"mutable","name":"account","nameLocation":"3326:7:11","nodeType":"VariableDeclaration","scope":2159,"src":"3318:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2148,"name":"address","nodeType":"ElementaryTypeName","src":"3318:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3317:17:11"},"returnParameters":{"id":2153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2159,"src":"3364:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2151,"name":"uint256","nodeType":"ElementaryTypeName","src":"3364:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3363:9:11"},"scope":2573,"src":"3299:116:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2618],"body":{"id":2182,"nodeType":"Block","src":"3685:103:11","statements":[{"assignments":[2170],"declarations":[{"constant":false,"id":2170,"mutability":"mutable","name":"owner","nameLocation":"3703:5:11","nodeType":"VariableDeclaration","scope":2182,"src":"3695:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"3695:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2173,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2171,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3711:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3711:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3695:28:11"},{"expression":{"arguments":[{"id":2175,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"3743:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2176,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"3750:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2177,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2164,"src":"3754:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2174,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2303,"src":"3733:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3733:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2179,"nodeType":"ExpressionStatement","src":"3733:27:11"},{"expression":{"hexValue":"74727565","id":2180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3777:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2168,"id":2181,"nodeType":"Return","src":"3770:11:11"}]},"documentation":{"id":2160,"nodeType":"StructuredDocumentation","src":"3421:184:11","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":2183,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3619:8:11","nodeType":"FunctionDefinition","parameters":{"id":2165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2162,"mutability":"mutable","name":"to","nameLocation":"3636:2:11","nodeType":"VariableDeclaration","scope":2183,"src":"3628:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2161,"name":"address","nodeType":"ElementaryTypeName","src":"3628:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2164,"mutability":"mutable","name":"value","nameLocation":"3648:5:11","nodeType":"VariableDeclaration","scope":2183,"src":"3640:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2163,"name":"uint256","nodeType":"ElementaryTypeName","src":"3640:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3627:27:11"},"returnParameters":{"id":2168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2183,"src":"3679:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2166,"name":"bool","nodeType":"ElementaryTypeName","src":"3679:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3678:6:11"},"scope":2573,"src":"3610:178:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2628],"body":{"id":2199,"nodeType":"Block","src":"3935:51:11","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2193,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2087,"src":"3952:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2195,"indexExpression":{"id":2194,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"3964:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3952:18:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2197,"indexExpression":{"id":2196,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2188,"src":"3971:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3952:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2192,"id":2198,"nodeType":"Return","src":"3945:34:11"}]},"documentation":{"id":2184,"nodeType":"StructuredDocumentation","src":"3794:47:11","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":2200,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3855:9:11","nodeType":"FunctionDefinition","parameters":{"id":2189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2186,"mutability":"mutable","name":"owner","nameLocation":"3873:5:11","nodeType":"VariableDeclaration","scope":2200,"src":"3865:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2185,"name":"address","nodeType":"ElementaryTypeName","src":"3865:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2188,"mutability":"mutable","name":"spender","nameLocation":"3888:7:11","nodeType":"VariableDeclaration","scope":2200,"src":"3880:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2187,"name":"address","nodeType":"ElementaryTypeName","src":"3880:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3864:32:11"},"returnParameters":{"id":2192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2200,"src":"3926:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2190,"name":"uint256","nodeType":"ElementaryTypeName","src":"3926:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3925:9:11"},"scope":2573,"src":"3846:140:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2638],"body":{"id":2223,"nodeType":"Block","src":"4372:107:11","statements":[{"assignments":[2211],"declarations":[{"constant":false,"id":2211,"mutability":"mutable","name":"owner","nameLocation":"4390:5:11","nodeType":"VariableDeclaration","scope":2223,"src":"4382:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2210,"name":"address","nodeType":"ElementaryTypeName","src":"4382:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2214,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2212,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"4398:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4398:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4382:28:11"},{"expression":{"arguments":[{"id":2216,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2211,"src":"4429:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2217,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2203,"src":"4436:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2218,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"4445:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2215,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2464,2524],"referencedDeclaration":2464,"src":"4420:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4420:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2220,"nodeType":"ExpressionStatement","src":"4420:31:11"},{"expression":{"hexValue":"74727565","id":2221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4468:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2209,"id":2222,"nodeType":"Return","src":"4461:11:11"}]},"documentation":{"id":2201,"nodeType":"StructuredDocumentation","src":"3992:296:11","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":2224,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4302:7:11","nodeType":"FunctionDefinition","parameters":{"id":2206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2203,"mutability":"mutable","name":"spender","nameLocation":"4318:7:11","nodeType":"VariableDeclaration","scope":2224,"src":"4310:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2202,"name":"address","nodeType":"ElementaryTypeName","src":"4310:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2205,"mutability":"mutable","name":"value","nameLocation":"4335:5:11","nodeType":"VariableDeclaration","scope":2224,"src":"4327:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2204,"name":"uint256","nodeType":"ElementaryTypeName","src":"4327:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4309:32:11"},"returnParameters":{"id":2209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2224,"src":"4366:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2207,"name":"bool","nodeType":"ElementaryTypeName","src":"4366:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:6:11"},"scope":2573,"src":"4293:186:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2650],"body":{"id":2255,"nodeType":"Block","src":"5132:151:11","statements":[{"assignments":[2237],"declarations":[{"constant":false,"id":2237,"mutability":"mutable","name":"spender","nameLocation":"5150:7:11","nodeType":"VariableDeclaration","scope":2255,"src":"5142:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2236,"name":"address","nodeType":"ElementaryTypeName","src":"5142:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2240,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2238,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"5160:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5160:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5142:30:11"},{"expression":{"arguments":[{"id":2242,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"5198:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2243,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"5204:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2244,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2231,"src":"5213:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2241,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"5182:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5182:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2246,"nodeType":"ExpressionStatement","src":"5182:37:11"},{"expression":{"arguments":[{"id":2248,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"5239:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2249,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"5245:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2231,"src":"5249:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2247,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2303,"src":"5229:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5229:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2252,"nodeType":"ExpressionStatement","src":"5229:26:11"},{"expression":{"hexValue":"74727565","id":2253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5272:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2235,"id":2254,"nodeType":"Return","src":"5265:11:11"}]},"documentation":{"id":2225,"nodeType":"StructuredDocumentation","src":"4485:549:11","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":2256,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5048:12:11","nodeType":"FunctionDefinition","parameters":{"id":2232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2227,"mutability":"mutable","name":"from","nameLocation":"5069:4:11","nodeType":"VariableDeclaration","scope":2256,"src":"5061:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"5061:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2229,"mutability":"mutable","name":"to","nameLocation":"5083:2:11","nodeType":"VariableDeclaration","scope":2256,"src":"5075:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2228,"name":"address","nodeType":"ElementaryTypeName","src":"5075:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2231,"mutability":"mutable","name":"value","nameLocation":"5095:5:11","nodeType":"VariableDeclaration","scope":2256,"src":"5087:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2230,"name":"uint256","nodeType":"ElementaryTypeName","src":"5087:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5060:41:11"},"returnParameters":{"id":2235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2256,"src":"5126:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2233,"name":"bool","nodeType":"ElementaryTypeName","src":"5126:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5125:6:11"},"scope":2573,"src":"5039:244:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2302,"nodeType":"Block","src":"5725:231:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2266,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2259,"src":"5739:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5755:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5747:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2267,"name":"address","nodeType":"ElementaryTypeName","src":"5747:7:11","typeDescriptions":{}}},"id":2270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5747:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5739:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2280,"nodeType":"IfStatement","src":"5735:86:11","trueBody":{"id":2279,"nodeType":"Block","src":"5759:62:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5807:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5799:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2273,"name":"address","nodeType":"ElementaryTypeName","src":"5799:7:11","typeDescriptions":{}}},"id":2276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5799:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2272,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"5780:18:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5780:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2278,"nodeType":"RevertStatement","src":"5773:37:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2281,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2261,"src":"5834:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5848:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5840:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2282,"name":"address","nodeType":"ElementaryTypeName","src":"5840:7:11","typeDescriptions":{}}},"id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5840:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5834:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2295,"nodeType":"IfStatement","src":"5830:86:11","trueBody":{"id":2294,"nodeType":"Block","src":"5852:64:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5902:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5894:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2288,"name":"address","nodeType":"ElementaryTypeName","src":"5894:7:11","typeDescriptions":{}}},"id":2291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5894:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2287,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"5873:20:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5873:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2293,"nodeType":"RevertStatement","src":"5866:39:11"}]}},{"expression":{"arguments":[{"id":2297,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2259,"src":"5933:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2261,"src":"5939:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"5943:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2296,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"5925:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5925:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2301,"nodeType":"ExpressionStatement","src":"5925:24:11"}]},"documentation":{"id":2257,"nodeType":"StructuredDocumentation","src":"5289:362:11","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":2303,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5665:9:11","nodeType":"FunctionDefinition","parameters":{"id":2264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2259,"mutability":"mutable","name":"from","nameLocation":"5683:4:11","nodeType":"VariableDeclaration","scope":2303,"src":"5675:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2258,"name":"address","nodeType":"ElementaryTypeName","src":"5675:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2261,"mutability":"mutable","name":"to","nameLocation":"5697:2:11","nodeType":"VariableDeclaration","scope":2303,"src":"5689:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2260,"name":"address","nodeType":"ElementaryTypeName","src":"5689:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2263,"mutability":"mutable","name":"value","nameLocation":"5709:5:11","nodeType":"VariableDeclaration","scope":2303,"src":"5701:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2262,"name":"uint256","nodeType":"ElementaryTypeName","src":"5701:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:41:11"},"returnParameters":{"id":2265,"nodeType":"ParameterList","parameters":[],"src":"5725:0:11"},"scope":2573,"src":"5656:300:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2379,"nodeType":"Block","src":"6346:1032:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2313,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2306,"src":"6360:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6376:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6368:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2314,"name":"address","nodeType":"ElementaryTypeName","src":"6368:7:11","typeDescriptions":{}}},"id":2317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6368:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6360:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2350,"nodeType":"Block","src":"6534:362:11","statements":[{"assignments":[2325],"declarations":[{"constant":false,"id":2325,"mutability":"mutable","name":"fromBalance","nameLocation":"6556:11:11","nodeType":"VariableDeclaration","scope":2350,"src":"6548:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2324,"name":"uint256","nodeType":"ElementaryTypeName","src":"6548:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2329,"initialValue":{"baseExpression":{"id":2326,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"6570:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2328,"indexExpression":{"id":2327,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2306,"src":"6580:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6570:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6548:37:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2330,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"6603:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"6617:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6603:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2340,"nodeType":"IfStatement","src":"6599:115:11","trueBody":{"id":2339,"nodeType":"Block","src":"6624:90:11","statements":[{"errorCall":{"arguments":[{"id":2334,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2306,"src":"6674:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2335,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"6680:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2336,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"6693:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2333,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1620,"src":"6649:24:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":2337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6649:50:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2338,"nodeType":"RevertStatement","src":"6642:57:11"}]}},{"id":2349,"nodeType":"UncheckedBlock","src":"6727:159:11","statements":[{"expression":{"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2341,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"6834:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2343,"indexExpression":{"id":2342,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2306,"src":"6844:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6834:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"6852:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"6866:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6852:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6834:37:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2348,"nodeType":"ExpressionStatement","src":"6834:37:11"}]}]},"id":2351,"nodeType":"IfStatement","src":"6356:540:11","trueBody":{"id":2323,"nodeType":"Block","src":"6380:148:11","statements":[{"expression":{"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2319,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2089,"src":"6496:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"6512:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6496:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2322,"nodeType":"ExpressionStatement","src":"6496:21:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2352,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"6910:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6924:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2353,"name":"address","nodeType":"ElementaryTypeName","src":"6916:7:11","typeDescriptions":{}}},"id":2356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6910:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2371,"nodeType":"Block","src":"7125:206:11","statements":[{"id":2370,"nodeType":"UncheckedBlock","src":"7139:182:11","statements":[{"expression":{"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2364,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"7284:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2366,"indexExpression":{"id":2365,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"7294:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7284:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"7301:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7284:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2369,"nodeType":"ExpressionStatement","src":"7284:22:11"}]}]},"id":2372,"nodeType":"IfStatement","src":"6906:425:11","trueBody":{"id":2363,"nodeType":"Block","src":"6928:191:11","statements":[{"id":2362,"nodeType":"UncheckedBlock","src":"6942:167:11","statements":[{"expression":{"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2358,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2089,"src":"7073:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":2359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"7089:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7073:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2361,"nodeType":"ExpressionStatement","src":"7073:21:11"}]}]}},{"eventCall":{"arguments":[{"id":2374,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2306,"src":"7355:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2375,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"7361:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"7365:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2373,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"7346:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7346:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2378,"nodeType":"EmitStatement","src":"7341:30:11"}]},"documentation":{"id":2304,"nodeType":"StructuredDocumentation","src":"5962:304:11","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":2380,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"6280:7:11","nodeType":"FunctionDefinition","parameters":{"id":2311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2306,"mutability":"mutable","name":"from","nameLocation":"6296:4:11","nodeType":"VariableDeclaration","scope":2380,"src":"6288:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2305,"name":"address","nodeType":"ElementaryTypeName","src":"6288:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2308,"mutability":"mutable","name":"to","nameLocation":"6310:2:11","nodeType":"VariableDeclaration","scope":2380,"src":"6302:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2307,"name":"address","nodeType":"ElementaryTypeName","src":"6302:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2310,"mutability":"mutable","name":"value","nameLocation":"6322:5:11","nodeType":"VariableDeclaration","scope":2380,"src":"6314:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2309,"name":"uint256","nodeType":"ElementaryTypeName","src":"6314:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6287:41:11"},"returnParameters":{"id":2312,"nodeType":"ParameterList","parameters":[],"src":"6346:0:11"},"scope":2573,"src":"6271:1107:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2412,"nodeType":"Block","src":"7777:152:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2388,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"7791:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7810:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7802:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2389,"name":"address","nodeType":"ElementaryTypeName","src":"7802:7:11","typeDescriptions":{}}},"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7802:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7791:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2402,"nodeType":"IfStatement","src":"7787:91:11","trueBody":{"id":2401,"nodeType":"Block","src":"7814:64:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7864:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7856:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2395,"name":"address","nodeType":"ElementaryTypeName","src":"7856:7:11","typeDescriptions":{}}},"id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7856:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2394,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"7835:20:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7835:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2400,"nodeType":"RevertStatement","src":"7828:39:11"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7903:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7895:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2404,"name":"address","nodeType":"ElementaryTypeName","src":"7895:7:11","typeDescriptions":{}}},"id":2407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7895:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2408,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"7907:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2385,"src":"7916:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2403,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"7887:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7887:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2411,"nodeType":"ExpressionStatement","src":"7887:35:11"}]},"documentation":{"id":2381,"nodeType":"StructuredDocumentation","src":"7384:332:11","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":2413,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7730:5:11","nodeType":"FunctionDefinition","parameters":{"id":2386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2383,"mutability":"mutable","name":"account","nameLocation":"7744:7:11","nodeType":"VariableDeclaration","scope":2413,"src":"7736:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2382,"name":"address","nodeType":"ElementaryTypeName","src":"7736:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2385,"mutability":"mutable","name":"value","nameLocation":"7761:5:11","nodeType":"VariableDeclaration","scope":2413,"src":"7753:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2384,"name":"uint256","nodeType":"ElementaryTypeName","src":"7753:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7735:32:11"},"returnParameters":{"id":2387,"nodeType":"ParameterList","parameters":[],"src":"7777:0:11"},"scope":2573,"src":"7721:208:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2445,"nodeType":"Block","src":"8303:150:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"8317:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8336:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8328:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2422,"name":"address","nodeType":"ElementaryTypeName","src":"8328:7:11","typeDescriptions":{}}},"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8328:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8317:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2435,"nodeType":"IfStatement","src":"8313:89:11","trueBody":{"id":2434,"nodeType":"Block","src":"8340:62:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8388:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8380:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2428,"name":"address","nodeType":"ElementaryTypeName","src":"8380:7:11","typeDescriptions":{}}},"id":2431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8380:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2427,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1625,"src":"8361:18:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8361:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2433,"nodeType":"RevertStatement","src":"8354:37:11"}]}},{"expression":{"arguments":[{"id":2437,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"8419:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8436:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8428:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"8428:7:11","typeDescriptions":{}}},"id":2441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8428:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"8440:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2436,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"8411:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8411:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2444,"nodeType":"ExpressionStatement","src":"8411:35:11"}]},"documentation":{"id":2414,"nodeType":"StructuredDocumentation","src":"7935:307:11","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":2446,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"8256:5:11","nodeType":"FunctionDefinition","parameters":{"id":2419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2416,"mutability":"mutable","name":"account","nameLocation":"8270:7:11","nodeType":"VariableDeclaration","scope":2446,"src":"8262:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"8262:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2418,"mutability":"mutable","name":"value","nameLocation":"8287:5:11","nodeType":"VariableDeclaration","scope":2446,"src":"8279:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2417,"name":"uint256","nodeType":"ElementaryTypeName","src":"8279:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8261:32:11"},"returnParameters":{"id":2420,"nodeType":"ParameterList","parameters":[],"src":"8303:0:11"},"scope":2573,"src":"8247:206:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2463,"nodeType":"Block","src":"9063:54:11","statements":[{"expression":{"arguments":[{"id":2457,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"9082:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2458,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"9089:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2453,"src":"9098:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":2460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9105:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2456,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2464,2524],"referencedDeclaration":2524,"src":"9073:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9073:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2462,"nodeType":"ExpressionStatement","src":"9073:37:11"}]},"documentation":{"id":2447,"nodeType":"StructuredDocumentation","src":"8459:525:11","text":" @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":2464,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8998:8:11","nodeType":"FunctionDefinition","parameters":{"id":2454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2449,"mutability":"mutable","name":"owner","nameLocation":"9015:5:11","nodeType":"VariableDeclaration","scope":2464,"src":"9007:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2448,"name":"address","nodeType":"ElementaryTypeName","src":"9007:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2451,"mutability":"mutable","name":"spender","nameLocation":"9030:7:11","nodeType":"VariableDeclaration","scope":2464,"src":"9022:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2450,"name":"address","nodeType":"ElementaryTypeName","src":"9022:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2453,"mutability":"mutable","name":"value","nameLocation":"9047:5:11","nodeType":"VariableDeclaration","scope":2464,"src":"9039:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2452,"name":"uint256","nodeType":"ElementaryTypeName","src":"9039:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9006:47:11"},"returnParameters":{"id":2455,"nodeType":"ParameterList","parameters":[],"src":"9063:0:11"},"scope":2573,"src":"8989:128:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2523,"nodeType":"Block","src":"10047:334:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2476,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"10061:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10078:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10070:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2477,"name":"address","nodeType":"ElementaryTypeName","src":"10070:7:11","typeDescriptions":{}}},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10070:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10061:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2490,"nodeType":"IfStatement","src":"10057:89:11","trueBody":{"id":2489,"nodeType":"Block","src":"10082:64:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10132:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10124:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2483,"name":"address","nodeType":"ElementaryTypeName","src":"10124:7:11","typeDescriptions":{}}},"id":2486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10124:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2482,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10103:20:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10103:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2488,"nodeType":"RevertStatement","src":"10096:39:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2491,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2469,"src":"10159:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10178:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10170:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2492,"name":"address","nodeType":"ElementaryTypeName","src":"10170:7:11","typeDescriptions":{}}},"id":2495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10170:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10159:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2505,"nodeType":"IfStatement","src":"10155:90:11","trueBody":{"id":2504,"nodeType":"Block","src":"10182:63:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10231:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10223:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"10223:7:11","typeDescriptions":{}}},"id":2501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10223:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2497,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"10203:19:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10203:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2503,"nodeType":"RevertStatement","src":"10196:38:11"}]}},{"expression":{"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2506,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2087,"src":"10254:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2509,"indexExpression":{"id":2507,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"10266:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10254:18:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2510,"indexExpression":{"id":2508,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2469,"src":"10273:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10254:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2511,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"10284:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10254:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2513,"nodeType":"ExpressionStatement","src":"10254:35:11"},{"condition":{"id":2514,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2473,"src":"10303:9:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2522,"nodeType":"IfStatement","src":"10299:76:11","trueBody":{"id":2521,"nodeType":"Block","src":"10314:61:11","statements":[{"eventCall":{"arguments":[{"id":2516,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"10342:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2517,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2469,"src":"10349:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2518,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"10358:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2515,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"10333:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10333:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2520,"nodeType":"EmitStatement","src":"10328:36:11"}]}}]},"documentation":{"id":2465,"nodeType":"StructuredDocumentation","src":"9123:821:11","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":2524,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9958:8:11","nodeType":"FunctionDefinition","parameters":{"id":2474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2467,"mutability":"mutable","name":"owner","nameLocation":"9975:5:11","nodeType":"VariableDeclaration","scope":2524,"src":"9967:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2466,"name":"address","nodeType":"ElementaryTypeName","src":"9967:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2469,"mutability":"mutable","name":"spender","nameLocation":"9990:7:11","nodeType":"VariableDeclaration","scope":2524,"src":"9982:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2468,"name":"address","nodeType":"ElementaryTypeName","src":"9982:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2471,"mutability":"mutable","name":"value","nameLocation":"10007:5:11","nodeType":"VariableDeclaration","scope":2524,"src":"9999:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2470,"name":"uint256","nodeType":"ElementaryTypeName","src":"9999:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2473,"mutability":"mutable","name":"emitEvent","nameLocation":"10019:9:11","nodeType":"VariableDeclaration","scope":2524,"src":"10014:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2472,"name":"bool","nodeType":"ElementaryTypeName","src":"10014:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9966:63:11"},"returnParameters":{"id":2475,"nodeType":"ParameterList","parameters":[],"src":"10047:0:11"},"scope":2573,"src":"9949:432:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2571,"nodeType":"Block","src":"10752:388:11","statements":[{"assignments":[2535],"declarations":[{"constant":false,"id":2535,"mutability":"mutable","name":"currentAllowance","nameLocation":"10770:16:11","nodeType":"VariableDeclaration","scope":2571,"src":"10762:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2534,"name":"uint256","nodeType":"ElementaryTypeName","src":"10762:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2540,"initialValue":{"arguments":[{"id":2537,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"10799:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2538,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2529,"src":"10806:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2536,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"10789:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10789:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10762:52:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2541,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"10828:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":2544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10853:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2543,"name":"uint256","nodeType":"ElementaryTypeName","src":"10853:7:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":2542,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10848:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10848:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":2546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10862:3:11","memberName":"max","nodeType":"MemberAccess","src":"10848:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10828:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2570,"nodeType":"IfStatement","src":"10824:310:11","trueBody":{"id":2569,"nodeType":"Block","src":"10867:267:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2548,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"10885:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2531,"src":"10904:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10885:24:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2558,"nodeType":"IfStatement","src":"10881:130:11","trueBody":{"id":2557,"nodeType":"Block","src":"10911:100:11","statements":[{"errorCall":{"arguments":[{"id":2552,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2529,"src":"10963:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2553,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"10972:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2531,"src":"10990:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2551,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"10936:26:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) pure"}},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10936:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2556,"nodeType":"RevertStatement","src":"10929:67:11"}]}},{"id":2568,"nodeType":"UncheckedBlock","src":"11024:100:11","statements":[{"expression":{"arguments":[{"id":2560,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"11061:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2561,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2529,"src":"11068:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2562,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"11077:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2563,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2531,"src":"11096:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11077:24:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":2565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11103:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2559,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[2464,2524],"referencedDeclaration":2524,"src":"11052:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":2566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11052:57:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2567,"nodeType":"ExpressionStatement","src":"11052:57:11"}]}]}}]},"documentation":{"id":2525,"nodeType":"StructuredDocumentation","src":"10387:271:11","text":" @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":2572,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10672:15:11","nodeType":"FunctionDefinition","parameters":{"id":2532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2527,"mutability":"mutable","name":"owner","nameLocation":"10696:5:11","nodeType":"VariableDeclaration","scope":2572,"src":"10688:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2526,"name":"address","nodeType":"ElementaryTypeName","src":"10688:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2529,"mutability":"mutable","name":"spender","nameLocation":"10711:7:11","nodeType":"VariableDeclaration","scope":2572,"src":"10703:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2528,"name":"address","nodeType":"ElementaryTypeName","src":"10703:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2531,"mutability":"mutable","name":"value","nameLocation":"10728:5:11","nodeType":"VariableDeclaration","scope":2572,"src":"10720:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2530,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10687:47:11"},"returnParameters":{"id":2533,"nodeType":"ParameterList","parameters":[],"src":"10752:0:11"},"scope":2573,"src":"10663:477:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2574,"src":"1401:9741:11","usedErrors":[1620,1625,1630,1639,1644,1649],"usedEvents":[2585,2594]}],"src":"105:11038:11"},"id":11},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[2651]},"id":2652,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2575,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2576,"nodeType":"StructuredDocumentation","src":"132:70:12","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2651,"linearizedBaseContracts":[2651],"name":"IERC20","nameLocation":"213:6:12","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2577,"nodeType":"StructuredDocumentation","src":"226:158:12","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":2585,"name":"Transfer","nameLocation":"395:8:12","nodeType":"EventDefinition","parameters":{"id":2584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2579,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"420:4:12","nodeType":"VariableDeclaration","scope":2585,"src":"404:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2578,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2581,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"442:2:12","nodeType":"VariableDeclaration","scope":2585,"src":"426:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2580,"name":"address","nodeType":"ElementaryTypeName","src":"426:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2583,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"454:5:12","nodeType":"VariableDeclaration","scope":2585,"src":"446:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2582,"name":"uint256","nodeType":"ElementaryTypeName","src":"446:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"403:57:12"},"src":"389:72:12"},{"anonymous":false,"documentation":{"id":2586,"nodeType":"StructuredDocumentation","src":"467:148:12","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":2594,"name":"Approval","nameLocation":"626:8:12","nodeType":"EventDefinition","parameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2588,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"651:5:12","nodeType":"VariableDeclaration","scope":2594,"src":"635:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2587,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2590,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"674:7:12","nodeType":"VariableDeclaration","scope":2594,"src":"658:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2589,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2592,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"691:5:12","nodeType":"VariableDeclaration","scope":2594,"src":"683:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"683:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"634:63:12"},"src":"620:78:12"},{"documentation":{"id":2595,"nodeType":"StructuredDocumentation","src":"704:65:12","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":2600,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:12","nodeType":"FunctionDefinition","parameters":{"id":2596,"nodeType":"ParameterList","parameters":[],"src":"794:2:12"},"returnParameters":{"id":2599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2600,"src":"820:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2597,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:12"},"scope":2651,"src":"774:55:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2601,"nodeType":"StructuredDocumentation","src":"835:71:12","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":2608,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"920:9:12","nodeType":"FunctionDefinition","parameters":{"id":2604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2603,"mutability":"mutable","name":"account","nameLocation":"938:7:12","nodeType":"VariableDeclaration","scope":2608,"src":"930:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2602,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"929:17:12"},"returnParameters":{"id":2607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2608,"src":"970:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2605,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"969:9:12"},"scope":2651,"src":"911:68:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2609,"nodeType":"StructuredDocumentation","src":"985:213:12","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2618,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1212:8:12","nodeType":"FunctionDefinition","parameters":{"id":2614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2611,"mutability":"mutable","name":"to","nameLocation":"1229:2:12","nodeType":"VariableDeclaration","scope":2618,"src":"1221:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2610,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2613,"mutability":"mutable","name":"value","nameLocation":"1241:5:12","nodeType":"VariableDeclaration","scope":2618,"src":"1233:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2612,"name":"uint256","nodeType":"ElementaryTypeName","src":"1233:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:27:12"},"returnParameters":{"id":2617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2616,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2618,"src":"1266:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2615,"name":"bool","nodeType":"ElementaryTypeName","src":"1266:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1265:6:12"},"scope":2651,"src":"1203:69:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2619,"nodeType":"StructuredDocumentation","src":"1278:264:12","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2628,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1556:9:12","nodeType":"FunctionDefinition","parameters":{"id":2624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2621,"mutability":"mutable","name":"owner","nameLocation":"1574:5:12","nodeType":"VariableDeclaration","scope":2628,"src":"1566:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2620,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2623,"mutability":"mutable","name":"spender","nameLocation":"1589:7:12","nodeType":"VariableDeclaration","scope":2628,"src":"1581:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2622,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1565:32:12"},"returnParameters":{"id":2627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2628,"src":"1621:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2625,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1620:9:12"},"scope":2651,"src":"1547:83:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2629,"nodeType":"StructuredDocumentation","src":"1636:667:12","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2638,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2317:7:12","nodeType":"FunctionDefinition","parameters":{"id":2634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2631,"mutability":"mutable","name":"spender","nameLocation":"2333:7:12","nodeType":"VariableDeclaration","scope":2638,"src":"2325:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2630,"name":"address","nodeType":"ElementaryTypeName","src":"2325:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2633,"mutability":"mutable","name":"value","nameLocation":"2350:5:12","nodeType":"VariableDeclaration","scope":2638,"src":"2342:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2632,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2324:32:12"},"returnParameters":{"id":2637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2638,"src":"2375:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2635,"name":"bool","nodeType":"ElementaryTypeName","src":"2375:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2374:6:12"},"scope":2651,"src":"2308:73:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2639,"nodeType":"StructuredDocumentation","src":"2387:297:12","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2650,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2698:12:12","nodeType":"FunctionDefinition","parameters":{"id":2646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2641,"mutability":"mutable","name":"from","nameLocation":"2719:4:12","nodeType":"VariableDeclaration","scope":2650,"src":"2711:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2640,"name":"address","nodeType":"ElementaryTypeName","src":"2711:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2643,"mutability":"mutable","name":"to","nameLocation":"2733:2:12","nodeType":"VariableDeclaration","scope":2650,"src":"2725:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2642,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2645,"mutability":"mutable","name":"value","nameLocation":"2745:5:12","nodeType":"VariableDeclaration","scope":2650,"src":"2737:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2644,"name":"uint256","nodeType":"ElementaryTypeName","src":"2737:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2710:41:12"},"returnParameters":{"id":2649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2650,"src":"2770:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2647,"name":"bool","nodeType":"ElementaryTypeName","src":"2770:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2769:6:12"},"scope":2651,"src":"2689:87:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2652,"src":"203:2575:12","usedErrors":[],"usedEvents":[2585,2594]}],"src":"106:2673:12"},"id":12},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[2651],"IERC20Metadata":[2677]},"id":2678,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2653,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"125:24:13"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":2655,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2678,"sourceUnit":2652,"src":"151:37:13","symbolAliases":[{"foreign":{"id":2654,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"159:6:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2657,"name":"IERC20","nameLocations":["305:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"305:6:13"},"id":2658,"nodeType":"InheritanceSpecifier","src":"305:6:13"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":2656,"nodeType":"StructuredDocumentation","src":"190:86:13","text":" @dev Interface for the optional metadata functions from the ERC20 standard."},"fullyImplemented":false,"id":2677,"linearizedBaseContracts":[2677,2651],"name":"IERC20Metadata","nameLocation":"287:14:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2659,"nodeType":"StructuredDocumentation","src":"318:54:13","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":2664,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:13","nodeType":"FunctionDefinition","parameters":{"id":2660,"nodeType":"ParameterList","parameters":[],"src":"390:2:13"},"returnParameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2664,"src":"416:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2661,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:13"},"scope":2677,"src":"377:54:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2665,"nodeType":"StructuredDocumentation","src":"437:56:13","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":2670,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:13","nodeType":"FunctionDefinition","parameters":{"id":2666,"nodeType":"ParameterList","parameters":[],"src":"513:2:13"},"returnParameters":{"id":2669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2670,"src":"539:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2667,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:13"},"scope":2677,"src":"498:56:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2671,"nodeType":"StructuredDocumentation","src":"560:65:13","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":2676,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:13","nodeType":"FunctionDefinition","parameters":{"id":2672,"nodeType":"ParameterList","parameters":[],"src":"647:2:13"},"returnParameters":{"id":2675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2674,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2676,"src":"673:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2673,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:13"},"scope":2677,"src":"630:50:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2678,"src":"277:405:13","usedErrors":[],"usedEvents":[2585,2594]}],"src":"125:558:13"},"id":13},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[2930]},"id":2931,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2679,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:14"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":2680,"nodeType":"StructuredDocumentation","src":"127:67:14","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":2930,"linearizedBaseContracts":[2930],"name":"Address","nameLocation":"203:7:14","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2681,"nodeType":"StructuredDocumentation","src":"217:94:14","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cd786059","id":2685,"name":"AddressInsufficientBalance","nameLocation":"322:26:14","nodeType":"ErrorDefinition","parameters":{"id":2684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2683,"mutability":"mutable","name":"account","nameLocation":"357:7:14","nodeType":"VariableDeclaration","scope":2685,"src":"349:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2682,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:17:14"},"src":"316:50:14"},{"documentation":{"id":2686,"nodeType":"StructuredDocumentation","src":"372:75:14","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":2690,"name":"AddressEmptyCode","nameLocation":"458:16:14","nodeType":"ErrorDefinition","parameters":{"id":2689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2688,"mutability":"mutable","name":"target","nameLocation":"483:6:14","nodeType":"VariableDeclaration","scope":2690,"src":"475:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2687,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"474:16:14"},"src":"452:39:14"},{"documentation":{"id":2691,"nodeType":"StructuredDocumentation","src":"497:89:14","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"1425ea42","id":2693,"name":"FailedInnerCall","nameLocation":"597:15:14","nodeType":"ErrorDefinition","parameters":{"id":2692,"nodeType":"ParameterList","parameters":[],"src":"612:2:14"},"src":"591:24:14"},{"body":{"id":2733,"nodeType":"Block","src":"1602:260:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2703,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1624:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2930","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2930","typeString":"library Address"}],"id":2702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1616:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2701,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:14","typeDescriptions":{}}},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1630:7:14","memberName":"balance","nodeType":"MemberAccess","src":"1616:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2706,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"1640:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1616:30:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2716,"nodeType":"IfStatement","src":"1612:109:14","trueBody":{"id":2715,"nodeType":"Block","src":"1648:73:14","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2711,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1704:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2930","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2930","typeString":"library Address"}],"id":2710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1696:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2709,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:14","typeDescriptions":{}}},"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2708,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"1669:26:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1669:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2714,"nodeType":"RevertStatement","src":"1662:48:14"}]}},{"assignments":[2718,null],"declarations":[{"constant":false,"id":2718,"mutability":"mutable","name":"success","nameLocation":"1737:7:14","nodeType":"VariableDeclaration","scope":2733,"src":"1732:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2717,"name":"bool","nodeType":"ElementaryTypeName","src":"1732:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2725,"initialValue":{"arguments":[{"hexValue":"","id":2723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1780:2:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":2719,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"1750:9:14","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1760:4:14","memberName":"call","nodeType":"MemberAccess","src":"1750:14:14","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2721,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"1772:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1750:29:14","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1750:33:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1731:52:14"},{"condition":{"id":2727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1797:8:14","subExpression":{"id":2726,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2718,"src":"1798:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2732,"nodeType":"IfStatement","src":"1793:63:14","trueBody":{"id":2731,"nodeType":"Block","src":"1807:49:14","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2728,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"1828:15:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:17:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2730,"nodeType":"RevertStatement","src":"1821:24:14"}]}}]},"documentation":{"id":2694,"nodeType":"StructuredDocumentation","src":"621:905:14","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":2734,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1540:9:14","nodeType":"FunctionDefinition","parameters":{"id":2699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"recipient","nameLocation":"1566:9:14","nodeType":"VariableDeclaration","scope":2734,"src":"1550:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2695,"name":"address","nodeType":"ElementaryTypeName","src":"1550:15:14","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2698,"mutability":"mutable","name":"amount","nameLocation":"1585:6:14","nodeType":"VariableDeclaration","scope":2734,"src":"1577:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2697,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:43:14"},"returnParameters":{"id":2700,"nodeType":"ParameterList","parameters":[],"src":"1602:0:14"},"scope":2930,"src":"1531:331:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2750,"nodeType":"Block","src":"2794:62:14","statements":[{"expression":{"arguments":[{"id":2745,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2737,"src":"2833:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2746,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2739,"src":"2841:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":2747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2847:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2744,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"2811:21:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":2748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:38:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2743,"id":2749,"nodeType":"Return","src":"2804:45:14"}]},"documentation":{"id":2735,"nodeType":"StructuredDocumentation","src":"1868:832:14","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."},"id":2751,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2714:12:14","nodeType":"FunctionDefinition","parameters":{"id":2740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2737,"mutability":"mutable","name":"target","nameLocation":"2735:6:14","nodeType":"VariableDeclaration","scope":2751,"src":"2727:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2736,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2739,"mutability":"mutable","name":"data","nameLocation":"2756:4:14","nodeType":"VariableDeclaration","scope":2751,"src":"2743:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2738,"name":"bytes","nodeType":"ElementaryTypeName","src":"2743:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2726:35:14"},"returnParameters":{"id":2743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2742,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2751,"src":"2780:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2741,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2779:14:14"},"scope":2930,"src":"2705:151:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2796,"nodeType":"Block","src":"3293:279:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2765,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3315:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2930","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2930","typeString":"library Address"}],"id":2764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3307:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2763,"name":"address","nodeType":"ElementaryTypeName","src":"3307:7:14","typeDescriptions":{}}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3307:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3321:7:14","memberName":"balance","nodeType":"MemberAccess","src":"3307:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"3331:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3307:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2778,"nodeType":"IfStatement","src":"3303:108:14","trueBody":{"id":2777,"nodeType":"Block","src":"3338:73:14","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2773,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3394:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2930","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2930","typeString":"library Address"}],"id":2772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3386:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2771,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:14","typeDescriptions":{}}},"id":2774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2770,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"3359:26:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2776,"nodeType":"RevertStatement","src":"3352:48:14"}]}},{"assignments":[2780,2782],"declarations":[{"constant":false,"id":2780,"mutability":"mutable","name":"success","nameLocation":"3426:7:14","nodeType":"VariableDeclaration","scope":2796,"src":"3421:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2779,"name":"bool","nodeType":"ElementaryTypeName","src":"3421:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2782,"mutability":"mutable","name":"returndata","nameLocation":"3448:10:14","nodeType":"VariableDeclaration","scope":2796,"src":"3435:23:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2781,"name":"bytes","nodeType":"ElementaryTypeName","src":"3435:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2789,"initialValue":{"arguments":[{"id":2787,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"3488:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2783,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2754,"src":"3462:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3469:4:14","memberName":"call","nodeType":"MemberAccess","src":"3462:11:14","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2785,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"3481:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3462:25:14","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:31:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3420:73:14"},{"expression":{"arguments":[{"id":2791,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2754,"src":"3537:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2792,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2780,"src":"3545:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2793,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"3554:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2790,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"3510:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3510:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2762,"id":2795,"nodeType":"Return","src":"3503:62:14"}]},"documentation":{"id":2752,"nodeType":"StructuredDocumentation","src":"2862:313:14","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."},"id":2797,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"3189:21:14","nodeType":"FunctionDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2754,"mutability":"mutable","name":"target","nameLocation":"3219:6:14","nodeType":"VariableDeclaration","scope":2797,"src":"3211:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2753,"name":"address","nodeType":"ElementaryTypeName","src":"3211:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2756,"mutability":"mutable","name":"data","nameLocation":"3240:4:14","nodeType":"VariableDeclaration","scope":2797,"src":"3227:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2755,"name":"bytes","nodeType":"ElementaryTypeName","src":"3227:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2758,"mutability":"mutable","name":"value","nameLocation":"3254:5:14","nodeType":"VariableDeclaration","scope":2797,"src":"3246:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2757,"name":"uint256","nodeType":"ElementaryTypeName","src":"3246:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3210:50:14"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2797,"src":"3279:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2760,"name":"bytes","nodeType":"ElementaryTypeName","src":"3279:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3278:14:14"},"scope":2930,"src":"3180:392:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2822,"nodeType":"Block","src":"3811:154:14","statements":[{"assignments":[2808,2810],"declarations":[{"constant":false,"id":2808,"mutability":"mutable","name":"success","nameLocation":"3827:7:14","nodeType":"VariableDeclaration","scope":2822,"src":"3822:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2807,"name":"bool","nodeType":"ElementaryTypeName","src":"3822:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2810,"mutability":"mutable","name":"returndata","nameLocation":"3849:10:14","nodeType":"VariableDeclaration","scope":2822,"src":"3836:23:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2809,"name":"bytes","nodeType":"ElementaryTypeName","src":"3836:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2815,"initialValue":{"arguments":[{"id":2813,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2802,"src":"3881:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2811,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"3863:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:10:14","memberName":"staticcall","nodeType":"MemberAccess","src":"3863:17:14","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3863:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3821:65:14"},{"expression":{"arguments":[{"id":2817,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"3930:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2818,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2808,"src":"3938:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2819,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"3947:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2816,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"3903:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3903:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2806,"id":2821,"nodeType":"Return","src":"3896:62:14"}]},"documentation":{"id":2798,"nodeType":"StructuredDocumentation","src":"3578:128:14","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":2823,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3720:18:14","nodeType":"FunctionDefinition","parameters":{"id":2803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2800,"mutability":"mutable","name":"target","nameLocation":"3747:6:14","nodeType":"VariableDeclaration","scope":2823,"src":"3739:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2799,"name":"address","nodeType":"ElementaryTypeName","src":"3739:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2802,"mutability":"mutable","name":"data","nameLocation":"3768:4:14","nodeType":"VariableDeclaration","scope":2823,"src":"3755:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2801,"name":"bytes","nodeType":"ElementaryTypeName","src":"3755:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3738:35:14"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2805,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2823,"src":"3797:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2804,"name":"bytes","nodeType":"ElementaryTypeName","src":"3797:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3796:14:14"},"scope":2930,"src":"3711:254:14","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2848,"nodeType":"Block","src":"4203:156:14","statements":[{"assignments":[2834,2836],"declarations":[{"constant":false,"id":2834,"mutability":"mutable","name":"success","nameLocation":"4219:7:14","nodeType":"VariableDeclaration","scope":2848,"src":"4214:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2833,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2836,"mutability":"mutable","name":"returndata","nameLocation":"4241:10:14","nodeType":"VariableDeclaration","scope":2848,"src":"4228:23:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2835,"name":"bytes","nodeType":"ElementaryTypeName","src":"4228:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2841,"initialValue":{"arguments":[{"id":2839,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2828,"src":"4275:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2837,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2826,"src":"4255:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4262:12:14","memberName":"delegatecall","nodeType":"MemberAccess","src":"4255:19:14","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4255:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4213:67:14"},{"expression":{"arguments":[{"id":2843,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2826,"src":"4324:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2844,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"4332:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2845,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4341:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2842,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"4297:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":2846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2832,"id":2847,"nodeType":"Return","src":"4290:62:14"}]},"documentation":{"id":2824,"nodeType":"StructuredDocumentation","src":"3971:130:14","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":2849,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"4115:20:14","nodeType":"FunctionDefinition","parameters":{"id":2829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2826,"mutability":"mutable","name":"target","nameLocation":"4144:6:14","nodeType":"VariableDeclaration","scope":2849,"src":"4136:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2825,"name":"address","nodeType":"ElementaryTypeName","src":"4136:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2828,"mutability":"mutable","name":"data","nameLocation":"4165:4:14","nodeType":"VariableDeclaration","scope":2849,"src":"4152:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2827,"name":"bytes","nodeType":"ElementaryTypeName","src":"4152:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4135:35:14"},"returnParameters":{"id":2832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2849,"src":"4189:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2830,"name":"bytes","nodeType":"ElementaryTypeName","src":"4189:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4188:14:14"},"scope":2930,"src":"4106:253:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2888,"nodeType":"Block","src":"4783:424:14","statements":[{"condition":{"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4797:8:14","subExpression":{"id":2861,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2854,"src":"4798:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2886,"nodeType":"Block","src":"4857:344:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2868,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"5045:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:6:14","memberName":"length","nodeType":"MemberAccess","src":"5045:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5045:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2872,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2852,"src":"5071:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5078:4:14","memberName":"code","nodeType":"MemberAccess","src":"5071:11:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5083:6:14","memberName":"length","nodeType":"MemberAccess","src":"5071:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5093:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5071:23:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5045:49:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2883,"nodeType":"IfStatement","src":"5041:119:14","trueBody":{"id":2882,"nodeType":"Block","src":"5096:64:14","statements":[{"errorCall":{"arguments":[{"id":2879,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2852,"src":"5138:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2878,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2690,"src":"5121:16:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:24:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2881,"nodeType":"RevertStatement","src":"5114:31:14"}]}},{"expression":{"id":2884,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"5180:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2860,"id":2885,"nodeType":"Return","src":"5173:17:14"}]},"id":2887,"nodeType":"IfStatement","src":"4793:408:14","trueBody":{"id":2867,"nodeType":"Block","src":"4807:44:14","statements":[{"expression":{"arguments":[{"id":2864,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"4829:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2863,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2929,"src":"4821:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4821:19:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2866,"nodeType":"ExpressionStatement","src":"4821:19:14"}]}}]},"documentation":{"id":2850,"nodeType":"StructuredDocumentation","src":"4365:255:14","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call."},"id":2889,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4634:26:14","nodeType":"FunctionDefinition","parameters":{"id":2857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2852,"mutability":"mutable","name":"target","nameLocation":"4678:6:14","nodeType":"VariableDeclaration","scope":2889,"src":"4670:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2851,"name":"address","nodeType":"ElementaryTypeName","src":"4670:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2854,"mutability":"mutable","name":"success","nameLocation":"4699:7:14","nodeType":"VariableDeclaration","scope":2889,"src":"4694:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2853,"name":"bool","nodeType":"ElementaryTypeName","src":"4694:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2856,"mutability":"mutable","name":"returndata","nameLocation":"4729:10:14","nodeType":"VariableDeclaration","scope":2889,"src":"4716:23:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2855,"name":"bytes","nodeType":"ElementaryTypeName","src":"4716:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4660:85:14"},"returnParameters":{"id":2860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2889,"src":"4769:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2858,"name":"bytes","nodeType":"ElementaryTypeName","src":"4769:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4768:14:14"},"scope":2930,"src":"4625:582:14","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2910,"nodeType":"Block","src":"5509:122:14","statements":[{"condition":{"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5523:8:14","subExpression":{"id":2899,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"5524:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2908,"nodeType":"Block","src":"5583:42:14","statements":[{"expression":{"id":2906,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"5604:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2898,"id":2907,"nodeType":"Return","src":"5597:17:14"}]},"id":2909,"nodeType":"IfStatement","src":"5519:106:14","trueBody":{"id":2905,"nodeType":"Block","src":"5533:44:14","statements":[{"expression":{"arguments":[{"id":2902,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"5555:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2901,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2929,"src":"5547:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5547:19:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2904,"nodeType":"ExpressionStatement","src":"5547:19:14"}]}}]},"documentation":{"id":2890,"nodeType":"StructuredDocumentation","src":"5213:189:14","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error."},"id":2911,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5416:16:14","nodeType":"FunctionDefinition","parameters":{"id":2895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2892,"mutability":"mutable","name":"success","nameLocation":"5438:7:14","nodeType":"VariableDeclaration","scope":2911,"src":"5433:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2891,"name":"bool","nodeType":"ElementaryTypeName","src":"5433:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2894,"mutability":"mutable","name":"returndata","nameLocation":"5460:10:14","nodeType":"VariableDeclaration","scope":2911,"src":"5447:23:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2893,"name":"bytes","nodeType":"ElementaryTypeName","src":"5447:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5432:39:14"},"returnParameters":{"id":2898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2897,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2911,"src":"5495:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2896,"name":"bytes","nodeType":"ElementaryTypeName","src":"5495:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5494:14:14"},"scope":2930,"src":"5407:224:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2928,"nodeType":"Block","src":"5798:461:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2917,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2914,"src":"5874:10:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5885:6:14","memberName":"length","nodeType":"MemberAccess","src":"5874:17:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5874:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2926,"nodeType":"Block","src":"6204:49:14","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2923,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"6225:15:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6225:17:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2925,"nodeType":"RevertStatement","src":"6218:24:14"}]},"id":2927,"nodeType":"IfStatement","src":"5870:383:14","trueBody":{"id":2922,"nodeType":"Block","src":"5897:301:14","statements":[{"AST":{"nativeSrc":"6055:133:14","nodeType":"YulBlock","src":"6055:133:14","statements":[{"nativeSrc":"6073:40:14","nodeType":"YulVariableDeclaration","src":"6073:40:14","value":{"arguments":[{"name":"returndata","nativeSrc":"6102:10:14","nodeType":"YulIdentifier","src":"6102:10:14"}],"functionName":{"name":"mload","nativeSrc":"6096:5:14","nodeType":"YulIdentifier","src":"6096:5:14"},"nativeSrc":"6096:17:14","nodeType":"YulFunctionCall","src":"6096:17:14"},"variables":[{"name":"returndata_size","nativeSrc":"6077:15:14","nodeType":"YulTypedName","src":"6077:15:14","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6141:2:14","nodeType":"YulLiteral","src":"6141:2:14","type":"","value":"32"},{"name":"returndata","nativeSrc":"6145:10:14","nodeType":"YulIdentifier","src":"6145:10:14"}],"functionName":{"name":"add","nativeSrc":"6137:3:14","nodeType":"YulIdentifier","src":"6137:3:14"},"nativeSrc":"6137:19:14","nodeType":"YulFunctionCall","src":"6137:19:14"},{"name":"returndata_size","nativeSrc":"6158:15:14","nodeType":"YulIdentifier","src":"6158:15:14"}],"functionName":{"name":"revert","nativeSrc":"6130:6:14","nodeType":"YulIdentifier","src":"6130:6:14"},"nativeSrc":"6130:44:14","nodeType":"YulFunctionCall","src":"6130:44:14"},"nativeSrc":"6130:44:14","nodeType":"YulExpressionStatement","src":"6130:44:14"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2914,"isOffset":false,"isSlot":false,"src":"6102:10:14","valueSize":1},{"declaration":2914,"isOffset":false,"isSlot":false,"src":"6145:10:14","valueSize":1}],"id":2921,"nodeType":"InlineAssembly","src":"6046:142:14"}]}}]},"documentation":{"id":2912,"nodeType":"StructuredDocumentation","src":"5637:101:14","text":" @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}."},"id":2929,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5752:7:14","nodeType":"FunctionDefinition","parameters":{"id":2915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2914,"mutability":"mutable","name":"returndata","nameLocation":"5773:10:14","nodeType":"VariableDeclaration","scope":2929,"src":"5760:23:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2913,"name":"bytes","nodeType":"ElementaryTypeName","src":"5760:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5759:25:14"},"returnParameters":{"id":2916,"nodeType":"ParameterList","parameters":[],"src":"5798:0:14"},"scope":2930,"src":"5743:516:14","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2931,"src":"195:6066:14","usedErrors":[2685,2690,2693],"usedEvents":[]}],"src":"101:6161:14"},"id":14},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[2960]},"id":2961,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2932,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:15"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2933,"nodeType":"StructuredDocumentation","src":"127:496:15","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2960,"linearizedBaseContracts":[2960],"name":"Context","nameLocation":"642:7:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":2941,"nodeType":"Block","src":"718:34:15","statements":[{"expression":{"expression":{"id":2938,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:15","memberName":"sender","nodeType":"MemberAccess","src":"735:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2937,"id":2940,"nodeType":"Return","src":"728:17:15"}]},"id":2942,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:15","nodeType":"FunctionDefinition","parameters":{"id":2934,"nodeType":"ParameterList","parameters":[],"src":"675:2:15"},"returnParameters":{"id":2937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2942,"src":"709:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2935,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:15"},"scope":2960,"src":"656:96:15","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2950,"nodeType":"Block","src":"825:32:15","statements":[{"expression":{"expression":{"id":2947,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:15","memberName":"data","nodeType":"MemberAccess","src":"842:8:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2946,"id":2949,"nodeType":"Return","src":"835:15:15"}]},"id":2951,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:15","nodeType":"FunctionDefinition","parameters":{"id":2943,"nodeType":"ParameterList","parameters":[],"src":"775:2:15"},"returnParameters":{"id":2946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2951,"src":"809:14:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2944,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:15"},"scope":2960,"src":"758:99:15","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2958,"nodeType":"Block","src":"935:25:15","statements":[{"expression":{"hexValue":"30","id":2956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2955,"id":2957,"nodeType":"Return","src":"945:8:15"}]},"id":2959,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:15","nodeType":"FunctionDefinition","parameters":{"id":2952,"nodeType":"ParameterList","parameters":[],"src":"892:2:15"},"returnParameters":{"id":2955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2959,"src":"926:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2953,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:15"},"scope":2960,"src":"863:97:15","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2961,"src":"624:338:15","usedErrors":[],"usedEvents":[]}],"src":"101:862:15"},"id":15},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[3070]},"id":3071,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2962,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:16"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":2963,"nodeType":"StructuredDocumentation","src":"219:1025:16","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(newImplementation.code.length > 0);\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```"},"fullyImplemented":true,"id":3070,"linearizedBaseContracts":[3070],"name":"StorageSlot","nameLocation":"1253:11:16","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":2966,"members":[{"constant":false,"id":2965,"mutability":"mutable","name":"value","nameLocation":"1308:5:16","nodeType":"VariableDeclaration","scope":2966,"src":"1300:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2964,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1278:11:16","nodeType":"StructDefinition","scope":3070,"src":"1271:49:16","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":2969,"members":[{"constant":false,"id":2968,"mutability":"mutable","name":"value","nameLocation":"1360:5:16","nodeType":"VariableDeclaration","scope":2969,"src":"1355:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2967,"name":"bool","nodeType":"ElementaryTypeName","src":"1355:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1333:11:16","nodeType":"StructDefinition","scope":3070,"src":"1326:46:16","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":2972,"members":[{"constant":false,"id":2971,"mutability":"mutable","name":"value","nameLocation":"1415:5:16","nodeType":"VariableDeclaration","scope":2972,"src":"1407:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2970,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1407:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1385:11:16","nodeType":"StructDefinition","scope":3070,"src":"1378:49:16","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":2975,"members":[{"constant":false,"id":2974,"mutability":"mutable","name":"value","nameLocation":"1470:5:16","nodeType":"VariableDeclaration","scope":2975,"src":"1462:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2973,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1440:11:16","nodeType":"StructDefinition","scope":3070,"src":"1433:49:16","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":2978,"members":[{"constant":false,"id":2977,"mutability":"mutable","name":"value","nameLocation":"1523:5:16","nodeType":"VariableDeclaration","scope":2978,"src":"1516:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2976,"name":"string","nodeType":"ElementaryTypeName","src":"1516:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1495:10:16","nodeType":"StructDefinition","scope":3070,"src":"1488:47:16","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":2981,"members":[{"constant":false,"id":2980,"mutability":"mutable","name":"value","nameLocation":"1574:5:16","nodeType":"VariableDeclaration","scope":2981,"src":"1568:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2979,"name":"bytes","nodeType":"ElementaryTypeName","src":"1568:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1548:9:16","nodeType":"StructDefinition","scope":3070,"src":"1541:45:16","visibility":"public"},{"body":{"id":2991,"nodeType":"Block","src":"1768:106:16","statements":[{"AST":{"nativeSrc":"1830:38:16","nodeType":"YulBlock","src":"1830:38:16","statements":[{"nativeSrc":"1844:14:16","nodeType":"YulAssignment","src":"1844:14:16","value":{"name":"slot","nativeSrc":"1854:4:16","nodeType":"YulIdentifier","src":"1854:4:16"},"variableNames":[{"name":"r.slot","nativeSrc":"1844:6:16","nodeType":"YulIdentifier","src":"1844:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2988,"isOffset":false,"isSlot":true,"src":"1844:6:16","suffix":"slot","valueSize":1},{"declaration":2984,"isOffset":false,"isSlot":false,"src":"1854:4:16","valueSize":1}],"id":2990,"nodeType":"InlineAssembly","src":"1821:47:16"}]},"documentation":{"id":2982,"nodeType":"StructuredDocumentation","src":"1592:87:16","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":2992,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1693:14:16","nodeType":"FunctionDefinition","parameters":{"id":2985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2984,"mutability":"mutable","name":"slot","nameLocation":"1716:4:16","nodeType":"VariableDeclaration","scope":2992,"src":"1708:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2983,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1708:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1707:14:16"},"returnParameters":{"id":2989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2988,"mutability":"mutable","name":"r","nameLocation":"1765:1:16","nodeType":"VariableDeclaration","scope":2992,"src":"1745:21:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2966_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":2987,"nodeType":"UserDefinedTypeName","pathNode":{"id":2986,"name":"AddressSlot","nameLocations":["1745:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":2966,"src":"1745:11:16"},"referencedDeclaration":2966,"src":"1745:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2966_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1744:23:16"},"scope":3070,"src":"1684:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3002,"nodeType":"Block","src":"2056:106:16","statements":[{"AST":{"nativeSrc":"2118:38:16","nodeType":"YulBlock","src":"2118:38:16","statements":[{"nativeSrc":"2132:14:16","nodeType":"YulAssignment","src":"2132:14:16","value":{"name":"slot","nativeSrc":"2142:4:16","nodeType":"YulIdentifier","src":"2142:4:16"},"variableNames":[{"name":"r.slot","nativeSrc":"2132:6:16","nodeType":"YulIdentifier","src":"2132:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2999,"isOffset":false,"isSlot":true,"src":"2132:6:16","suffix":"slot","valueSize":1},{"declaration":2995,"isOffset":false,"isSlot":false,"src":"2142:4:16","valueSize":1}],"id":3001,"nodeType":"InlineAssembly","src":"2109:47:16"}]},"documentation":{"id":2993,"nodeType":"StructuredDocumentation","src":"1880:87:16","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":3003,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"1981:14:16","nodeType":"FunctionDefinition","parameters":{"id":2996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2995,"mutability":"mutable","name":"slot","nameLocation":"2004:4:16","nodeType":"VariableDeclaration","scope":3003,"src":"1996:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2994,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1996:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1995:14:16"},"returnParameters":{"id":3000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2999,"mutability":"mutable","name":"r","nameLocation":"2053:1:16","nodeType":"VariableDeclaration","scope":3003,"src":"2033:21:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2969_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":2998,"nodeType":"UserDefinedTypeName","pathNode":{"id":2997,"name":"BooleanSlot","nameLocations":["2033:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":2969,"src":"2033:11:16"},"referencedDeclaration":2969,"src":"2033:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2969_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2032:23:16"},"scope":3070,"src":"1972:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3013,"nodeType":"Block","src":"2344:106:16","statements":[{"AST":{"nativeSrc":"2406:38:16","nodeType":"YulBlock","src":"2406:38:16","statements":[{"nativeSrc":"2420:14:16","nodeType":"YulAssignment","src":"2420:14:16","value":{"name":"slot","nativeSrc":"2430:4:16","nodeType":"YulIdentifier","src":"2430:4:16"},"variableNames":[{"name":"r.slot","nativeSrc":"2420:6:16","nodeType":"YulIdentifier","src":"2420:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3010,"isOffset":false,"isSlot":true,"src":"2420:6:16","suffix":"slot","valueSize":1},{"declaration":3006,"isOffset":false,"isSlot":false,"src":"2430:4:16","valueSize":1}],"id":3012,"nodeType":"InlineAssembly","src":"2397:47:16"}]},"documentation":{"id":3004,"nodeType":"StructuredDocumentation","src":"2168:87:16","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":3014,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2269:14:16","nodeType":"FunctionDefinition","parameters":{"id":3007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3006,"mutability":"mutable","name":"slot","nameLocation":"2292:4:16","nodeType":"VariableDeclaration","scope":3014,"src":"2284:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3005,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2283:14:16"},"returnParameters":{"id":3011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3010,"mutability":"mutable","name":"r","nameLocation":"2341:1:16","nodeType":"VariableDeclaration","scope":3014,"src":"2321:21:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2972_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":3009,"nodeType":"UserDefinedTypeName","pathNode":{"id":3008,"name":"Bytes32Slot","nameLocations":["2321:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":2972,"src":"2321:11:16"},"referencedDeclaration":2972,"src":"2321:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2972_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2320:23:16"},"scope":3070,"src":"2260:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3024,"nodeType":"Block","src":"2632:106:16","statements":[{"AST":{"nativeSrc":"2694:38:16","nodeType":"YulBlock","src":"2694:38:16","statements":[{"nativeSrc":"2708:14:16","nodeType":"YulAssignment","src":"2708:14:16","value":{"name":"slot","nativeSrc":"2718:4:16","nodeType":"YulIdentifier","src":"2718:4:16"},"variableNames":[{"name":"r.slot","nativeSrc":"2708:6:16","nodeType":"YulIdentifier","src":"2708:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3021,"isOffset":false,"isSlot":true,"src":"2708:6:16","suffix":"slot","valueSize":1},{"declaration":3017,"isOffset":false,"isSlot":false,"src":"2718:4:16","valueSize":1}],"id":3023,"nodeType":"InlineAssembly","src":"2685:47:16"}]},"documentation":{"id":3015,"nodeType":"StructuredDocumentation","src":"2456:87:16","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":3025,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2557:14:16","nodeType":"FunctionDefinition","parameters":{"id":3018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3017,"mutability":"mutable","name":"slot","nameLocation":"2580:4:16","nodeType":"VariableDeclaration","scope":3025,"src":"2572:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3016,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2572:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2571:14:16"},"returnParameters":{"id":3022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3021,"mutability":"mutable","name":"r","nameLocation":"2629:1:16","nodeType":"VariableDeclaration","scope":3025,"src":"2609:21:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2975_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":3020,"nodeType":"UserDefinedTypeName","pathNode":{"id":3019,"name":"Uint256Slot","nameLocations":["2609:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":2975,"src":"2609:11:16"},"referencedDeclaration":2975,"src":"2609:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2975_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2608:23:16"},"scope":3070,"src":"2548:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3035,"nodeType":"Block","src":"2917:106:16","statements":[{"AST":{"nativeSrc":"2979:38:16","nodeType":"YulBlock","src":"2979:38:16","statements":[{"nativeSrc":"2993:14:16","nodeType":"YulAssignment","src":"2993:14:16","value":{"name":"slot","nativeSrc":"3003:4:16","nodeType":"YulIdentifier","src":"3003:4:16"},"variableNames":[{"name":"r.slot","nativeSrc":"2993:6:16","nodeType":"YulIdentifier","src":"2993:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3032,"isOffset":false,"isSlot":true,"src":"2993:6:16","suffix":"slot","valueSize":1},{"declaration":3028,"isOffset":false,"isSlot":false,"src":"3003:4:16","valueSize":1}],"id":3034,"nodeType":"InlineAssembly","src":"2970:47:16"}]},"documentation":{"id":3026,"nodeType":"StructuredDocumentation","src":"2744:86:16","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":3036,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"2844:13:16","nodeType":"FunctionDefinition","parameters":{"id":3029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3028,"mutability":"mutable","name":"slot","nameLocation":"2866:4:16","nodeType":"VariableDeclaration","scope":3036,"src":"2858:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3027,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2858:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2857:14:16"},"returnParameters":{"id":3033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3032,"mutability":"mutable","name":"r","nameLocation":"2914:1:16","nodeType":"VariableDeclaration","scope":3036,"src":"2895:20:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2978_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":3031,"nodeType":"UserDefinedTypeName","pathNode":{"id":3030,"name":"StringSlot","nameLocations":["2895:10:16"],"nodeType":"IdentifierPath","referencedDeclaration":2978,"src":"2895:10:16"},"referencedDeclaration":2978,"src":"2895:10:16","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2978_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"2894:22:16"},"scope":3070,"src":"2835:188:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3046,"nodeType":"Block","src":"3225:112:16","statements":[{"AST":{"nativeSrc":"3287:44:16","nodeType":"YulBlock","src":"3287:44:16","statements":[{"nativeSrc":"3301:20:16","nodeType":"YulAssignment","src":"3301:20:16","value":{"name":"store.slot","nativeSrc":"3311:10:16","nodeType":"YulIdentifier","src":"3311:10:16"},"variableNames":[{"name":"r.slot","nativeSrc":"3301:6:16","nodeType":"YulIdentifier","src":"3301:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3043,"isOffset":false,"isSlot":true,"src":"3301:6:16","suffix":"slot","valueSize":1},{"declaration":3039,"isOffset":false,"isSlot":true,"src":"3311:10:16","suffix":"slot","valueSize":1}],"id":3045,"nodeType":"InlineAssembly","src":"3278:53:16"}]},"documentation":{"id":3037,"nodeType":"StructuredDocumentation","src":"3029:101:16","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":3047,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3144:13:16","nodeType":"FunctionDefinition","parameters":{"id":3040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3039,"mutability":"mutable","name":"store","nameLocation":"3173:5:16","nodeType":"VariableDeclaration","scope":3047,"src":"3158:20:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3038,"name":"string","nodeType":"ElementaryTypeName","src":"3158:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3157:22:16"},"returnParameters":{"id":3044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3043,"mutability":"mutable","name":"r","nameLocation":"3222:1:16","nodeType":"VariableDeclaration","scope":3047,"src":"3203:20:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2978_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":3042,"nodeType":"UserDefinedTypeName","pathNode":{"id":3041,"name":"StringSlot","nameLocations":["3203:10:16"],"nodeType":"IdentifierPath","referencedDeclaration":2978,"src":"3203:10:16"},"referencedDeclaration":2978,"src":"3203:10:16","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2978_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3202:22:16"},"scope":3070,"src":"3135:202:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3057,"nodeType":"Block","src":"3513:106:16","statements":[{"AST":{"nativeSrc":"3575:38:16","nodeType":"YulBlock","src":"3575:38:16","statements":[{"nativeSrc":"3589:14:16","nodeType":"YulAssignment","src":"3589:14:16","value":{"name":"slot","nativeSrc":"3599:4:16","nodeType":"YulIdentifier","src":"3599:4:16"},"variableNames":[{"name":"r.slot","nativeSrc":"3589:6:16","nodeType":"YulIdentifier","src":"3589:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3054,"isOffset":false,"isSlot":true,"src":"3589:6:16","suffix":"slot","valueSize":1},{"declaration":3050,"isOffset":false,"isSlot":false,"src":"3599:4:16","valueSize":1}],"id":3056,"nodeType":"InlineAssembly","src":"3566:47:16"}]},"documentation":{"id":3048,"nodeType":"StructuredDocumentation","src":"3343:85:16","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":3058,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3442:12:16","nodeType":"FunctionDefinition","parameters":{"id":3051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3050,"mutability":"mutable","name":"slot","nameLocation":"3463:4:16","nodeType":"VariableDeclaration","scope":3058,"src":"3455:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3455:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3454:14:16"},"returnParameters":{"id":3055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3054,"mutability":"mutable","name":"r","nameLocation":"3510:1:16","nodeType":"VariableDeclaration","scope":3058,"src":"3492:19:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2981_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":3053,"nodeType":"UserDefinedTypeName","pathNode":{"id":3052,"name":"BytesSlot","nameLocations":["3492:9:16"],"nodeType":"IdentifierPath","referencedDeclaration":2981,"src":"3492:9:16"},"referencedDeclaration":2981,"src":"3492:9:16","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2981_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3491:21:16"},"scope":3070,"src":"3433:186:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3068,"nodeType":"Block","src":"3816:112:16","statements":[{"AST":{"nativeSrc":"3878:44:16","nodeType":"YulBlock","src":"3878:44:16","statements":[{"nativeSrc":"3892:20:16","nodeType":"YulAssignment","src":"3892:20:16","value":{"name":"store.slot","nativeSrc":"3902:10:16","nodeType":"YulIdentifier","src":"3902:10:16"},"variableNames":[{"name":"r.slot","nativeSrc":"3892:6:16","nodeType":"YulIdentifier","src":"3892:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3065,"isOffset":false,"isSlot":true,"src":"3892:6:16","suffix":"slot","valueSize":1},{"declaration":3061,"isOffset":false,"isSlot":true,"src":"3902:10:16","suffix":"slot","valueSize":1}],"id":3067,"nodeType":"InlineAssembly","src":"3869:53:16"}]},"documentation":{"id":3059,"nodeType":"StructuredDocumentation","src":"3625:99:16","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":3069,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3738:12:16","nodeType":"FunctionDefinition","parameters":{"id":3062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3061,"mutability":"mutable","name":"store","nameLocation":"3765:5:16","nodeType":"VariableDeclaration","scope":3069,"src":"3751:19:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3060,"name":"bytes","nodeType":"ElementaryTypeName","src":"3751:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3750:21:16"},"returnParameters":{"id":3066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3065,"mutability":"mutable","name":"r","nameLocation":"3813:1:16","nodeType":"VariableDeclaration","scope":3069,"src":"3795:19:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2981_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":3064,"nodeType":"UserDefinedTypeName","pathNode":{"id":3063,"name":"BytesSlot","nameLocations":["3795:9:16"],"nodeType":"IdentifierPath","referencedDeclaration":2981,"src":"3795:9:16"},"referencedDeclaration":2981,"src":"3795:9:16","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2981_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3794:21:16"},"scope":3070,"src":"3729:199:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3071,"src":"1245:2685:16","usedErrors":[],"usedEvents":[]}],"src":"193:3738:16"},"id":16},"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","exportedSymbols":{"IUniswapV3Factory":[3153]},"id":3154,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3072,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3Factory","contractDependencies":[],"contractKind":"interface","documentation":{"id":3073,"nodeType":"StructuredDocumentation","src":"71:163:17","text":"@title The interface for the Uniswap V3 Factory\n @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees"},"fullyImplemented":false,"id":3153,"linearizedBaseContracts":[3153],"name":"IUniswapV3Factory","nameLocation":"244:17:17","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3074,"nodeType":"StructuredDocumentation","src":"268:185:17","text":"@notice Emitted when the owner of the factory is changed\n @param oldOwner The owner before the owner was changed\n @param newOwner The owner after the owner was changed"},"eventSelector":"b532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c","id":3080,"name":"OwnerChanged","nameLocation":"464:12:17","nodeType":"EventDefinition","parameters":{"id":3079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3076,"indexed":true,"mutability":"mutable","name":"oldOwner","nameLocation":"493:8:17","nodeType":"VariableDeclaration","scope":3080,"src":"477:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3075,"name":"address","nodeType":"ElementaryTypeName","src":"477:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3078,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"519:8:17","nodeType":"VariableDeclaration","scope":3080,"src":"503:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3077,"name":"address","nodeType":"ElementaryTypeName","src":"503:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"476:52:17"},"src":"458:71:17"},{"anonymous":false,"documentation":{"id":3081,"nodeType":"StructuredDocumentation","src":"535:421:17","text":"@notice Emitted when a pool is created\n @param token0 The first token of the pool by address sort order\n @param token1 The second token of the pool by address sort order\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks\n @param pool The address of the created pool"},"eventSelector":"783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118","id":3093,"name":"PoolCreated","nameLocation":"967:11:17","nodeType":"EventDefinition","parameters":{"id":3092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3083,"indexed":true,"mutability":"mutable","name":"token0","nameLocation":"1004:6:17","nodeType":"VariableDeclaration","scope":3093,"src":"988:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3082,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3085,"indexed":true,"mutability":"mutable","name":"token1","nameLocation":"1036:6:17","nodeType":"VariableDeclaration","scope":3093,"src":"1020:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3084,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3087,"indexed":true,"mutability":"mutable","name":"fee","nameLocation":"1067:3:17","nodeType":"VariableDeclaration","scope":3093,"src":"1052:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3086,"name":"uint24","nodeType":"ElementaryTypeName","src":"1052:6:17","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3089,"indexed":false,"mutability":"mutable","name":"tickSpacing","nameLocation":"1086:11:17","nodeType":"VariableDeclaration","scope":3093,"src":"1080:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3088,"name":"int24","nodeType":"ElementaryTypeName","src":"1080:5:17","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3091,"indexed":false,"mutability":"mutable","name":"pool","nameLocation":"1115:4:17","nodeType":"VariableDeclaration","scope":3093,"src":"1107:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3090,"name":"address","nodeType":"ElementaryTypeName","src":"1107:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"978:147:17"},"src":"961:165:17"},{"anonymous":false,"documentation":{"id":3094,"nodeType":"StructuredDocumentation","src":"1132:275:17","text":"@notice Emitted when a new fee amount is enabled for pool creation via the factory\n @param fee The enabled fee, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee"},"eventSelector":"c66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc","id":3100,"name":"FeeAmountEnabled","nameLocation":"1418:16:17","nodeType":"EventDefinition","parameters":{"id":3099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3096,"indexed":true,"mutability":"mutable","name":"fee","nameLocation":"1450:3:17","nodeType":"VariableDeclaration","scope":3100,"src":"1435:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3095,"name":"uint24","nodeType":"ElementaryTypeName","src":"1435:6:17","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3098,"indexed":true,"mutability":"mutable","name":"tickSpacing","nameLocation":"1469:11:17","nodeType":"VariableDeclaration","scope":3100,"src":"1455:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3097,"name":"int24","nodeType":"ElementaryTypeName","src":"1455:5:17","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1434:47:17"},"src":"1412:70:17"},{"documentation":{"id":3101,"nodeType":"StructuredDocumentation","src":"1488:163:17","text":"@notice Returns the current owner of the factory\n @dev Can be changed by the current owner via setOwner\n @return The address of the factory owner"},"functionSelector":"8da5cb5b","id":3106,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1665:5:17","nodeType":"FunctionDefinition","parameters":{"id":3102,"nodeType":"ParameterList","parameters":[],"src":"1670:2:17"},"returnParameters":{"id":3105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3106,"src":"1696:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3103,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1695:9:17"},"scope":3153,"src":"1656:49:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3107,"nodeType":"StructuredDocumentation","src":"1711:348:17","text":"@notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\n @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\n @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\n @return The tick spacing"},"functionSelector":"22afcccb","id":3114,"implemented":false,"kind":"function","modifiers":[],"name":"feeAmountTickSpacing","nameLocation":"2073:20:17","nodeType":"FunctionDefinition","parameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3109,"mutability":"mutable","name":"fee","nameLocation":"2101:3:17","nodeType":"VariableDeclaration","scope":3114,"src":"2094:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3108,"name":"uint24","nodeType":"ElementaryTypeName","src":"2094:6:17","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2093:12:17"},"returnParameters":{"id":3113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3114,"src":"2129:5:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3111,"name":"int24","nodeType":"ElementaryTypeName","src":"2129:5:17","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2128:7:17"},"scope":3153,"src":"2064:72:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3115,"nodeType":"StructuredDocumentation","src":"2142:471:17","text":"@notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\n @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\n @param tokenA The contract address of either token0 or token1\n @param tokenB The contract address of the other token\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @return pool The pool address"},"functionSelector":"1698ee82","id":3126,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nameLocation":"2627:7:17","nodeType":"FunctionDefinition","parameters":{"id":3122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3117,"mutability":"mutable","name":"tokenA","nameLocation":"2652:6:17","nodeType":"VariableDeclaration","scope":3126,"src":"2644:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3116,"name":"address","nodeType":"ElementaryTypeName","src":"2644:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3119,"mutability":"mutable","name":"tokenB","nameLocation":"2676:6:17","nodeType":"VariableDeclaration","scope":3126,"src":"2668:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3118,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3121,"mutability":"mutable","name":"fee","nameLocation":"2699:3:17","nodeType":"VariableDeclaration","scope":3126,"src":"2692:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3120,"name":"uint24","nodeType":"ElementaryTypeName","src":"2692:6:17","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"2634:74:17"},"returnParameters":{"id":3125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3124,"mutability":"mutable","name":"pool","nameLocation":"2740:4:17","nodeType":"VariableDeclaration","scope":3126,"src":"2732:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3123,"name":"address","nodeType":"ElementaryTypeName","src":"2732:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2731:14:17"},"scope":3153,"src":"2618:128:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3127,"nodeType":"StructuredDocumentation","src":"2752:554:17","text":"@notice Creates a pool for the given two tokens and fee\n @param tokenA One of the two tokens in the desired pool\n @param tokenB The other of the two tokens in the desired pool\n @param fee The desired fee for the pool\n @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\n from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\n are invalid.\n @return pool The address of the newly created pool"},"functionSelector":"a1671295","id":3138,"implemented":false,"kind":"function","modifiers":[],"name":"createPool","nameLocation":"3320:10:17","nodeType":"FunctionDefinition","parameters":{"id":3134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3129,"mutability":"mutable","name":"tokenA","nameLocation":"3348:6:17","nodeType":"VariableDeclaration","scope":3138,"src":"3340:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3128,"name":"address","nodeType":"ElementaryTypeName","src":"3340:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3131,"mutability":"mutable","name":"tokenB","nameLocation":"3372:6:17","nodeType":"VariableDeclaration","scope":3138,"src":"3364:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3130,"name":"address","nodeType":"ElementaryTypeName","src":"3364:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3133,"mutability":"mutable","name":"fee","nameLocation":"3395:3:17","nodeType":"VariableDeclaration","scope":3138,"src":"3388:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3132,"name":"uint24","nodeType":"ElementaryTypeName","src":"3388:6:17","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"3330:74:17"},"returnParameters":{"id":3137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3136,"mutability":"mutable","name":"pool","nameLocation":"3431:4:17","nodeType":"VariableDeclaration","scope":3138,"src":"3423:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3135,"name":"address","nodeType":"ElementaryTypeName","src":"3423:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3422:14:17"},"scope":3153,"src":"3311:126:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3139,"nodeType":"StructuredDocumentation","src":"3443:144:17","text":"@notice Updates the owner of the factory\n @dev Must be called by the current owner\n @param _owner The new owner of the factory"},"functionSelector":"13af4035","id":3144,"implemented":false,"kind":"function","modifiers":[],"name":"setOwner","nameLocation":"3601:8:17","nodeType":"FunctionDefinition","parameters":{"id":3142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3141,"mutability":"mutable","name":"_owner","nameLocation":"3618:6:17","nodeType":"VariableDeclaration","scope":3144,"src":"3610:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3140,"name":"address","nodeType":"ElementaryTypeName","src":"3610:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3609:16:17"},"returnParameters":{"id":3143,"nodeType":"ParameterList","parameters":[],"src":"3634:0:17"},"scope":3153,"src":"3592:43:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3145,"nodeType":"StructuredDocumentation","src":"3641:326:17","text":"@notice Enables a fee amount with the given tickSpacing\n @dev Fee amounts may never be removed once enabled\n @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\n @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount"},"functionSelector":"8a7c195f","id":3152,"implemented":false,"kind":"function","modifiers":[],"name":"enableFeeAmount","nameLocation":"3981:15:17","nodeType":"FunctionDefinition","parameters":{"id":3150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3147,"mutability":"mutable","name":"fee","nameLocation":"4004:3:17","nodeType":"VariableDeclaration","scope":3152,"src":"3997:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3146,"name":"uint24","nodeType":"ElementaryTypeName","src":"3997:6:17","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3149,"mutability":"mutable","name":"tickSpacing","nameLocation":"4015:11:17","nodeType":"VariableDeclaration","scope":3152,"src":"4009:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3148,"name":"int24","nodeType":"ElementaryTypeName","src":"4009:5:17","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3996:31:17"},"returnParameters":{"id":3151,"nodeType":"ParameterList","parameters":[],"src":"4036:0:17"},"scope":3153,"src":"3972:65:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3154,"src":"234:3805:17","usedErrors":[],"usedEvents":[3080,3093,3100]}],"src":"45:3995:17"},"id":17},"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol","exportedSymbols":{"IUniswapV3Pool":[3175],"IUniswapV3PoolActions":[3285],"IUniswapV3PoolDerivedState":[3316],"IUniswapV3PoolEvents":[3435],"IUniswapV3PoolImmutables":[3475],"IUniswapV3PoolOwnerActions":[3501],"IUniswapV3PoolState":[3609]},"id":3176,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3155,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:18"},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol","file":"./pool/IUniswapV3PoolImmutables.sol","id":3156,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3176,"sourceUnit":3476,"src":"71:45:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol","file":"./pool/IUniswapV3PoolState.sol","id":3157,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3176,"sourceUnit":3610,"src":"117:40:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol","file":"./pool/IUniswapV3PoolDerivedState.sol","id":3158,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3176,"sourceUnit":3317,"src":"158:47:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol","file":"./pool/IUniswapV3PoolActions.sol","id":3159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3176,"sourceUnit":3286,"src":"206:42:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol","file":"./pool/IUniswapV3PoolOwnerActions.sol","id":3160,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3176,"sourceUnit":3502,"src":"249:47:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol","file":"./pool/IUniswapV3PoolEvents.sol","id":3161,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3176,"sourceUnit":3436,"src":"297:41:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3163,"name":"IUniswapV3PoolImmutables","nameLocations":["637:24:18"],"nodeType":"IdentifierPath","referencedDeclaration":3475,"src":"637:24:18"},"id":3164,"nodeType":"InheritanceSpecifier","src":"637:24:18"},{"baseName":{"id":3165,"name":"IUniswapV3PoolState","nameLocations":["667:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":3609,"src":"667:19:18"},"id":3166,"nodeType":"InheritanceSpecifier","src":"667:19:18"},{"baseName":{"id":3167,"name":"IUniswapV3PoolDerivedState","nameLocations":["692:26:18"],"nodeType":"IdentifierPath","referencedDeclaration":3316,"src":"692:26:18"},"id":3168,"nodeType":"InheritanceSpecifier","src":"692:26:18"},{"baseName":{"id":3169,"name":"IUniswapV3PoolActions","nameLocations":["724:21:18"],"nodeType":"IdentifierPath","referencedDeclaration":3285,"src":"724:21:18"},"id":3170,"nodeType":"InheritanceSpecifier","src":"724:21:18"},{"baseName":{"id":3171,"name":"IUniswapV3PoolOwnerActions","nameLocations":["751:26:18"],"nodeType":"IdentifierPath","referencedDeclaration":3501,"src":"751:26:18"},"id":3172,"nodeType":"InheritanceSpecifier","src":"751:26:18"},{"baseName":{"id":3173,"name":"IUniswapV3PoolEvents","nameLocations":["783:20:18"],"nodeType":"IdentifierPath","referencedDeclaration":3435,"src":"783:20:18"},"id":3174,"nodeType":"InheritanceSpecifier","src":"783:20:18"}],"canonicalName":"IUniswapV3Pool","contractDependencies":[],"contractKind":"interface","documentation":{"id":3162,"nodeType":"StructuredDocumentation","src":"340:265:18","text":"@title The interface for a Uniswap V3 Pool\n @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\n to the ERC20 specification\n @dev The pool interface is broken up into many smaller pieces"},"fullyImplemented":false,"id":3175,"linearizedBaseContracts":[3175,3435,3501,3285,3316,3609,3475],"name":"IUniswapV3Pool","nameLocation":"615:14:18","nodeType":"ContractDefinition","nodes":[],"scope":3176,"src":"605:203:18","usedErrors":[],"usedEvents":[3326,3343,3358,3373,3390,3405,3412,3423,3434]}],"src":"45:764:18"},"id":18},"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","exportedSymbols":{"IUniswapV3SwapCallback":[3189]},"id":3190,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3177,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:19"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3SwapCallback","contractDependencies":[],"contractKind":"interface","documentation":{"id":3178,"nodeType":"StructuredDocumentation","src":"71:144:19","text":"@title Callback for IUniswapV3PoolActions#swap\n @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface"},"fullyImplemented":false,"id":3189,"linearizedBaseContracts":[3189],"name":"IUniswapV3SwapCallback","nameLocation":"225:22:19","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3179,"nodeType":"StructuredDocumentation","src":"254:898:19","text":"@notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n @dev In the implementation you must pay the pool tokens owed for the swap.\n The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call"},"functionSelector":"fa461e33","id":3188,"implemented":false,"kind":"function","modifiers":[],"name":"uniswapV3SwapCallback","nameLocation":"1166:21:19","nodeType":"FunctionDefinition","parameters":{"id":3186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3181,"mutability":"mutable","name":"amount0Delta","nameLocation":"1204:12:19","nodeType":"VariableDeclaration","scope":3188,"src":"1197:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3180,"name":"int256","nodeType":"ElementaryTypeName","src":"1197:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3183,"mutability":"mutable","name":"amount1Delta","nameLocation":"1233:12:19","nodeType":"VariableDeclaration","scope":3188,"src":"1226:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3182,"name":"int256","nodeType":"ElementaryTypeName","src":"1226:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3185,"mutability":"mutable","name":"data","nameLocation":"1270:4:19","nodeType":"VariableDeclaration","scope":3188,"src":"1255:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3184,"name":"bytes","nodeType":"ElementaryTypeName","src":"1255:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1187:93:19"},"returnParameters":{"id":3187,"nodeType":"ParameterList","parameters":[],"src":"1289:0:19"},"scope":3189,"src":"1157:133:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3190,"src":"215:1077:19","usedErrors":[],"usedEvents":[]}],"src":"45:1248:19"},"id":19},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol","exportedSymbols":{"IUniswapV3PoolActions":[3285]},"id":3286,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3191,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:20"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3PoolActions","contractDependencies":[],"contractKind":"interface","documentation":{"id":3192,"nodeType":"StructuredDocumentation","src":"71:102:20","text":"@title Permissionless pool actions\n @notice Contains pool methods that can be called by anyone"},"fullyImplemented":false,"id":3285,"linearizedBaseContracts":[3285],"name":"IUniswapV3PoolActions","nameLocation":"183:21:20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3193,"nodeType":"StructuredDocumentation","src":"211:206:20","text":"@notice Sets the initial price for the pool\n @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96"},"functionSelector":"f637731d","id":3198,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"431:10:20","nodeType":"FunctionDefinition","parameters":{"id":3196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3195,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"450:12:20","nodeType":"VariableDeclaration","scope":3198,"src":"442:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3194,"name":"uint160","nodeType":"ElementaryTypeName","src":"442:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"441:22:20"},"returnParameters":{"id":3197,"nodeType":"ParameterList","parameters":[],"src":"472:0:20"},"scope":3285,"src":"422:51:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3199,"nodeType":"StructuredDocumentation","src":"479:1029:20","text":"@notice Adds liquidity for the given recipient/tickLower/tickUpper position\n @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\n in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n on tickLower, tickUpper, the amount of liquidity, and the current price.\n @param recipient The address for which the liquidity will be created\n @param tickLower The lower tick of the position in which to add liquidity\n @param tickUpper The upper tick of the position in which to add liquidity\n @param amount The amount of liquidity to mint\n @param data Any data that should be passed through to the callback\n @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"},"functionSelector":"3c8a7d8d","id":3216,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"1522:4:20","nodeType":"FunctionDefinition","parameters":{"id":3210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3201,"mutability":"mutable","name":"recipient","nameLocation":"1544:9:20","nodeType":"VariableDeclaration","scope":3216,"src":"1536:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3200,"name":"address","nodeType":"ElementaryTypeName","src":"1536:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3203,"mutability":"mutable","name":"tickLower","nameLocation":"1569:9:20","nodeType":"VariableDeclaration","scope":3216,"src":"1563:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3202,"name":"int24","nodeType":"ElementaryTypeName","src":"1563:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3205,"mutability":"mutable","name":"tickUpper","nameLocation":"1594:9:20","nodeType":"VariableDeclaration","scope":3216,"src":"1588:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3204,"name":"int24","nodeType":"ElementaryTypeName","src":"1588:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3207,"mutability":"mutable","name":"amount","nameLocation":"1621:6:20","nodeType":"VariableDeclaration","scope":3216,"src":"1613:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3206,"name":"uint128","nodeType":"ElementaryTypeName","src":"1613:7:20","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3209,"mutability":"mutable","name":"data","nameLocation":"1652:4:20","nodeType":"VariableDeclaration","scope":3216,"src":"1637:19:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3208,"name":"bytes","nodeType":"ElementaryTypeName","src":"1637:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1526:136:20"},"returnParameters":{"id":3215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3212,"mutability":"mutable","name":"amount0","nameLocation":"1689:7:20","nodeType":"VariableDeclaration","scope":3216,"src":"1681:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3211,"name":"uint256","nodeType":"ElementaryTypeName","src":"1681:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3214,"mutability":"mutable","name":"amount1","nameLocation":"1706:7:20","nodeType":"VariableDeclaration","scope":3216,"src":"1698:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3213,"name":"uint256","nodeType":"ElementaryTypeName","src":"1698:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1680:34:20"},"scope":3285,"src":"1513:202:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3217,"nodeType":"StructuredDocumentation","src":"1721:1053:20","text":"@notice Collects tokens owed to a position\n @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n @param recipient The address which should receive the fees collected\n @param tickLower The lower tick of the position for which to collect fees\n @param tickUpper The upper tick of the position for which to collect fees\n @param amount0Requested How much token0 should be withdrawn from the fees owed\n @param amount1Requested How much token1 should be withdrawn from the fees owed\n @return amount0 The amount of fees collected in token0\n @return amount1 The amount of fees collected in token1"},"functionSelector":"4f1eb3d8","id":3234,"implemented":false,"kind":"function","modifiers":[],"name":"collect","nameLocation":"2788:7:20","nodeType":"FunctionDefinition","parameters":{"id":3228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3219,"mutability":"mutable","name":"recipient","nameLocation":"2813:9:20","nodeType":"VariableDeclaration","scope":3234,"src":"2805:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3218,"name":"address","nodeType":"ElementaryTypeName","src":"2805:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3221,"mutability":"mutable","name":"tickLower","nameLocation":"2838:9:20","nodeType":"VariableDeclaration","scope":3234,"src":"2832:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3220,"name":"int24","nodeType":"ElementaryTypeName","src":"2832:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3223,"mutability":"mutable","name":"tickUpper","nameLocation":"2863:9:20","nodeType":"VariableDeclaration","scope":3234,"src":"2857:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3222,"name":"int24","nodeType":"ElementaryTypeName","src":"2857:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3225,"mutability":"mutable","name":"amount0Requested","nameLocation":"2890:16:20","nodeType":"VariableDeclaration","scope":3234,"src":"2882:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3224,"name":"uint128","nodeType":"ElementaryTypeName","src":"2882:7:20","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3227,"mutability":"mutable","name":"amount1Requested","nameLocation":"2924:16:20","nodeType":"VariableDeclaration","scope":3234,"src":"2916:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3226,"name":"uint128","nodeType":"ElementaryTypeName","src":"2916:7:20","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2795:151:20"},"returnParameters":{"id":3233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3230,"mutability":"mutable","name":"amount0","nameLocation":"2973:7:20","nodeType":"VariableDeclaration","scope":3234,"src":"2965:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3229,"name":"uint128","nodeType":"ElementaryTypeName","src":"2965:7:20","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3232,"mutability":"mutable","name":"amount1","nameLocation":"2990:7:20","nodeType":"VariableDeclaration","scope":3234,"src":"2982:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3231,"name":"uint128","nodeType":"ElementaryTypeName","src":"2982:7:20","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2964:34:20"},"scope":3285,"src":"2779:220:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3235,"nodeType":"StructuredDocumentation","src":"3005:631:20","text":"@notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n @dev Fees must be collected separately via a call to #collect\n @param tickLower The lower tick of the position for which to burn liquidity\n @param tickUpper The upper tick of the position for which to burn liquidity\n @param amount How much liquidity to burn\n @return amount0 The amount of token0 sent to the recipient\n @return amount1 The amount of token1 sent to the recipient"},"functionSelector":"a34123a7","id":3248,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"3650:4:20","nodeType":"FunctionDefinition","parameters":{"id":3242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3237,"mutability":"mutable","name":"tickLower","nameLocation":"3670:9:20","nodeType":"VariableDeclaration","scope":3248,"src":"3664:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3236,"name":"int24","nodeType":"ElementaryTypeName","src":"3664:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3239,"mutability":"mutable","name":"tickUpper","nameLocation":"3695:9:20","nodeType":"VariableDeclaration","scope":3248,"src":"3689:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3238,"name":"int24","nodeType":"ElementaryTypeName","src":"3689:5:20","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3241,"mutability":"mutable","name":"amount","nameLocation":"3722:6:20","nodeType":"VariableDeclaration","scope":3248,"src":"3714:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3240,"name":"uint128","nodeType":"ElementaryTypeName","src":"3714:7:20","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3654:80:20"},"returnParameters":{"id":3247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3244,"mutability":"mutable","name":"amount0","nameLocation":"3761:7:20","nodeType":"VariableDeclaration","scope":3248,"src":"3753:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3243,"name":"uint256","nodeType":"ElementaryTypeName","src":"3753:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3246,"mutability":"mutable","name":"amount1","nameLocation":"3778:7:20","nodeType":"VariableDeclaration","scope":3248,"src":"3770:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3245,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3752:34:20"},"scope":3285,"src":"3641:146:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3249,"nodeType":"StructuredDocumentation","src":"3793:1015:20","text":"@notice Swap token0 for token1, or token1 for token0\n @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\n @param recipient The address to receive the output of the swap\n @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n value after the swap. If one for zero, the price cannot be greater than this value after the swap\n @param data Any data to be passed through to the callback\n @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive"},"functionSelector":"128acb08","id":3266,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nameLocation":"4822:4:20","nodeType":"FunctionDefinition","parameters":{"id":3260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3251,"mutability":"mutable","name":"recipient","nameLocation":"4844:9:20","nodeType":"VariableDeclaration","scope":3266,"src":"4836:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3250,"name":"address","nodeType":"ElementaryTypeName","src":"4836:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3253,"mutability":"mutable","name":"zeroForOne","nameLocation":"4868:10:20","nodeType":"VariableDeclaration","scope":3266,"src":"4863:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3252,"name":"bool","nodeType":"ElementaryTypeName","src":"4863:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3255,"mutability":"mutable","name":"amountSpecified","nameLocation":"4895:15:20","nodeType":"VariableDeclaration","scope":3266,"src":"4888:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3254,"name":"int256","nodeType":"ElementaryTypeName","src":"4888:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3257,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"4928:17:20","nodeType":"VariableDeclaration","scope":3266,"src":"4920:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3256,"name":"uint160","nodeType":"ElementaryTypeName","src":"4920:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3259,"mutability":"mutable","name":"data","nameLocation":"4970:4:20","nodeType":"VariableDeclaration","scope":3266,"src":"4955:19:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3258,"name":"bytes","nodeType":"ElementaryTypeName","src":"4955:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4826:154:20"},"returnParameters":{"id":3265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3262,"mutability":"mutable","name":"amount0","nameLocation":"5006:7:20","nodeType":"VariableDeclaration","scope":3266,"src":"4999:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3261,"name":"int256","nodeType":"ElementaryTypeName","src":"4999:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3264,"mutability":"mutable","name":"amount1","nameLocation":"5022:7:20","nodeType":"VariableDeclaration","scope":3266,"src":"5015:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3263,"name":"int256","nodeType":"ElementaryTypeName","src":"5015:6:20","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4998:32:20"},"scope":3285,"src":"4813:218:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3267,"nodeType":"StructuredDocumentation","src":"5037:657:20","text":"@notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\n @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n with 0 amount{0,1} and sending the donation amount(s) from the callback\n @param recipient The address which will receive the token0 and token1 amounts\n @param amount0 The amount of token0 to send\n @param amount1 The amount of token1 to send\n @param data Any data to be passed through to the callback"},"functionSelector":"490e6cbc","id":3278,"implemented":false,"kind":"function","modifiers":[],"name":"flash","nameLocation":"5708:5:20","nodeType":"FunctionDefinition","parameters":{"id":3276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3269,"mutability":"mutable","name":"recipient","nameLocation":"5731:9:20","nodeType":"VariableDeclaration","scope":3278,"src":"5723:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3268,"name":"address","nodeType":"ElementaryTypeName","src":"5723:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3271,"mutability":"mutable","name":"amount0","nameLocation":"5758:7:20","nodeType":"VariableDeclaration","scope":3278,"src":"5750:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3270,"name":"uint256","nodeType":"ElementaryTypeName","src":"5750:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3273,"mutability":"mutable","name":"amount1","nameLocation":"5783:7:20","nodeType":"VariableDeclaration","scope":3278,"src":"5775:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3272,"name":"uint256","nodeType":"ElementaryTypeName","src":"5775:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3275,"mutability":"mutable","name":"data","nameLocation":"5815:4:20","nodeType":"VariableDeclaration","scope":3278,"src":"5800:19:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3274,"name":"bytes","nodeType":"ElementaryTypeName","src":"5800:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5713:112:20"},"returnParameters":{"id":3277,"nodeType":"ParameterList","parameters":[],"src":"5834:0:20"},"scope":3285,"src":"5699:136:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3279,"nodeType":"StructuredDocumentation","src":"5841:367:20","text":"@notice Increase the maximum number of price and liquidity observations that this pool will store\n @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n the input observationCardinalityNext.\n @param observationCardinalityNext The desired minimum number of observations for the pool to store"},"functionSelector":"32148f67","id":3284,"implemented":false,"kind":"function","modifiers":[],"name":"increaseObservationCardinalityNext","nameLocation":"6222:34:20","nodeType":"FunctionDefinition","parameters":{"id":3282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3281,"mutability":"mutable","name":"observationCardinalityNext","nameLocation":"6264:26:20","nodeType":"VariableDeclaration","scope":3284,"src":"6257:33:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3280,"name":"uint16","nodeType":"ElementaryTypeName","src":"6257:6:20","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6256:35:20"},"returnParameters":{"id":3283,"nodeType":"ParameterList","parameters":[],"src":"6300:0:20"},"scope":3285,"src":"6213:88:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3286,"src":"173:6130:20","usedErrors":[],"usedEvents":[]}],"src":"45:6259:20"},"id":20},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol","exportedSymbols":{"IUniswapV3PoolDerivedState":[3316]},"id":3317,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3287,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:21"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3PoolDerivedState","contractDependencies":[],"contractKind":"interface","documentation":{"id":3288,"nodeType":"StructuredDocumentation","src":"71:222:21","text":"@title Pool state that is not stored\n @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n blockchain. The functions here may have variable gas costs."},"fullyImplemented":false,"id":3316,"linearizedBaseContracts":[3316],"name":"IUniswapV3PoolDerivedState","nameLocation":"303:26:21","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3289,"nodeType":"StructuredDocumentation","src":"336:1045:21","text":"@notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n you must call it with secondsAgos = [3600, 0].\n @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n timestamp"},"functionSelector":"883bdbfd","id":3301,"implemented":false,"kind":"function","modifiers":[],"name":"observe","nameLocation":"1395:7:21","nodeType":"FunctionDefinition","parameters":{"id":3293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3292,"mutability":"mutable","name":"secondsAgos","nameLocation":"1421:11:21","nodeType":"VariableDeclaration","scope":3301,"src":"1403:29:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_calldata_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":3290,"name":"uint32","nodeType":"ElementaryTypeName","src":"1403:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":3291,"nodeType":"ArrayTypeName","src":"1403:8:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"1402:31:21"},"returnParameters":{"id":3300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3296,"mutability":"mutable","name":"tickCumulatives","nameLocation":"1496:15:21","nodeType":"VariableDeclaration","scope":3301,"src":"1481:30:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_memory_ptr","typeString":"int56[]"},"typeName":{"baseType":{"id":3294,"name":"int56","nodeType":"ElementaryTypeName","src":"1481:5:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":3295,"nodeType":"ArrayTypeName","src":"1481:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_int56_$dyn_storage_ptr","typeString":"int56[]"}},"visibility":"internal"},{"constant":false,"id":3299,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128s","nameLocation":"1530:34:21","nodeType":"VariableDeclaration","scope":3301,"src":"1513:51:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_memory_ptr","typeString":"uint160[]"},"typeName":{"baseType":{"id":3297,"name":"uint160","nodeType":"ElementaryTypeName","src":"1513:7:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":3298,"nodeType":"ArrayTypeName","src":"1513:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint160_$dyn_storage_ptr","typeString":"uint160[]"}},"visibility":"internal"}],"src":"1480:85:21"},"scope":3316,"src":"1386:180:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3302,"nodeType":"StructuredDocumentation","src":"1572:771:21","text":"@notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n snapshot is taken and the second snapshot is taken.\n @param tickLower The lower tick of the range\n @param tickUpper The upper tick of the range\n @return tickCumulativeInside The snapshot of the tick accumulator for the range\n @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n @return secondsInside The snapshot of seconds per liquidity for the range"},"functionSelector":"a38807f2","id":3315,"implemented":false,"kind":"function","modifiers":[],"name":"snapshotCumulativesInside","nameLocation":"2357:25:21","nodeType":"FunctionDefinition","parameters":{"id":3307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3304,"mutability":"mutable","name":"tickLower","nameLocation":"2389:9:21","nodeType":"VariableDeclaration","scope":3315,"src":"2383:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3303,"name":"int24","nodeType":"ElementaryTypeName","src":"2383:5:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3306,"mutability":"mutable","name":"tickUpper","nameLocation":"2406:9:21","nodeType":"VariableDeclaration","scope":3315,"src":"2400:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3305,"name":"int24","nodeType":"ElementaryTypeName","src":"2400:5:21","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2382:34:21"},"returnParameters":{"id":3314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3309,"mutability":"mutable","name":"tickCumulativeInside","nameLocation":"2483:20:21","nodeType":"VariableDeclaration","scope":3315,"src":"2477:26:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":3308,"name":"int56","nodeType":"ElementaryTypeName","src":"2477:5:21","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":3311,"mutability":"mutable","name":"secondsPerLiquidityInsideX128","nameLocation":"2525:29:21","nodeType":"VariableDeclaration","scope":3315,"src":"2517:37:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3310,"name":"uint160","nodeType":"ElementaryTypeName","src":"2517:7:21","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3313,"mutability":"mutable","name":"secondsInside","nameLocation":"2575:13:21","nodeType":"VariableDeclaration","scope":3315,"src":"2568:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3312,"name":"uint32","nodeType":"ElementaryTypeName","src":"2568:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2463:135:21"},"scope":3316,"src":"2348:251:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3317,"src":"293:2308:21","usedErrors":[],"usedEvents":[]}],"src":"45:2557:21"},"id":21},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol","exportedSymbols":{"IUniswapV3PoolEvents":[3435]},"id":3436,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3318,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:22"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3PoolEvents","contractDependencies":[],"contractKind":"interface","documentation":{"id":3319,"nodeType":"StructuredDocumentation","src":"71:88:22","text":"@title Events emitted by a pool\n @notice Contains all events emitted by the pool"},"fullyImplemented":true,"id":3435,"linearizedBaseContracts":[3435],"name":"IUniswapV3PoolEvents","nameLocation":"169:20:22","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3320,"nodeType":"StructuredDocumentation","src":"196:344:22","text":"@notice Emitted exactly once by a pool when #initialize is first called on the pool\n @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool"},"eventSelector":"98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95","id":3326,"name":"Initialize","nameLocation":"551:10:22","nodeType":"EventDefinition","parameters":{"id":3325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3322,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"570:12:22","nodeType":"VariableDeclaration","scope":3326,"src":"562:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3321,"name":"uint160","nodeType":"ElementaryTypeName","src":"562:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3324,"indexed":false,"mutability":"mutable","name":"tick","nameLocation":"590:4:22","nodeType":"VariableDeclaration","scope":3326,"src":"584:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3323,"name":"int24","nodeType":"ElementaryTypeName","src":"584:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"561:34:22"},"src":"545:51:22"},{"anonymous":false,"documentation":{"id":3327,"nodeType":"StructuredDocumentation","src":"602:551:22","text":"@notice Emitted when liquidity is minted for a given position\n @param sender The address that minted the liquidity\n @param owner The owner of the position and recipient of any minted liquidity\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity minted to the position range\n @param amount0 How much token0 was required for the minted liquidity\n @param amount1 How much token1 was required for the minted liquidity"},"eventSelector":"7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde","id":3343,"name":"Mint","nameLocation":"1164:4:22","nodeType":"EventDefinition","parameters":{"id":3342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3329,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"1186:6:22","nodeType":"VariableDeclaration","scope":3343,"src":"1178:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3328,"name":"address","nodeType":"ElementaryTypeName","src":"1178:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3331,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1218:5:22","nodeType":"VariableDeclaration","scope":3343,"src":"1202:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3330,"name":"address","nodeType":"ElementaryTypeName","src":"1202:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3333,"indexed":true,"mutability":"mutable","name":"tickLower","nameLocation":"1247:9:22","nodeType":"VariableDeclaration","scope":3343,"src":"1233:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3332,"name":"int24","nodeType":"ElementaryTypeName","src":"1233:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3335,"indexed":true,"mutability":"mutable","name":"tickUpper","nameLocation":"1280:9:22","nodeType":"VariableDeclaration","scope":3343,"src":"1266:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3334,"name":"int24","nodeType":"ElementaryTypeName","src":"1266:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3337,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1307:6:22","nodeType":"VariableDeclaration","scope":3343,"src":"1299:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3336,"name":"uint128","nodeType":"ElementaryTypeName","src":"1299:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3339,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"1331:7:22","nodeType":"VariableDeclaration","scope":3343,"src":"1323:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3338,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3341,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"1356:7:22","nodeType":"VariableDeclaration","scope":3343,"src":"1348:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3340,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1168:201:22"},"src":"1158:212:22"},{"anonymous":false,"documentation":{"id":3344,"nodeType":"StructuredDocumentation","src":"1376:493:22","text":"@notice Emitted when fees are collected by the owner of a position\n @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n @param owner The owner of the position for which fees are collected\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount0 The amount of token0 fees collected\n @param amount1 The amount of token1 fees collected"},"eventSelector":"70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0","id":3358,"name":"Collect","nameLocation":"1880:7:22","nodeType":"EventDefinition","parameters":{"id":3357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3346,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1913:5:22","nodeType":"VariableDeclaration","scope":3358,"src":"1897:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3345,"name":"address","nodeType":"ElementaryTypeName","src":"1897:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3348,"indexed":false,"mutability":"mutable","name":"recipient","nameLocation":"1936:9:22","nodeType":"VariableDeclaration","scope":3358,"src":"1928:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3347,"name":"address","nodeType":"ElementaryTypeName","src":"1928:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3350,"indexed":true,"mutability":"mutable","name":"tickLower","nameLocation":"1969:9:22","nodeType":"VariableDeclaration","scope":3358,"src":"1955:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3349,"name":"int24","nodeType":"ElementaryTypeName","src":"1955:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3352,"indexed":true,"mutability":"mutable","name":"tickUpper","nameLocation":"2002:9:22","nodeType":"VariableDeclaration","scope":3358,"src":"1988:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3351,"name":"int24","nodeType":"ElementaryTypeName","src":"1988:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3354,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"2029:7:22","nodeType":"VariableDeclaration","scope":3358,"src":"2021:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3353,"name":"uint128","nodeType":"ElementaryTypeName","src":"2021:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3356,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"2054:7:22","nodeType":"VariableDeclaration","scope":3358,"src":"2046:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3355,"name":"uint128","nodeType":"ElementaryTypeName","src":"2046:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1887:180:22"},"src":"1874:194:22"},{"anonymous":false,"documentation":{"id":3359,"nodeType":"StructuredDocumentation","src":"2074:523:22","text":"@notice Emitted when a position's liquidity is removed\n @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n @param owner The owner of the position for which liquidity is removed\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity to remove\n @param amount0 The amount of token0 withdrawn\n @param amount1 The amount of token1 withdrawn"},"eventSelector":"0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c","id":3373,"name":"Burn","nameLocation":"2608:4:22","nodeType":"EventDefinition","parameters":{"id":3372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3361,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"2638:5:22","nodeType":"VariableDeclaration","scope":3373,"src":"2622:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3360,"name":"address","nodeType":"ElementaryTypeName","src":"2622:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3363,"indexed":true,"mutability":"mutable","name":"tickLower","nameLocation":"2667:9:22","nodeType":"VariableDeclaration","scope":3373,"src":"2653:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3362,"name":"int24","nodeType":"ElementaryTypeName","src":"2653:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3365,"indexed":true,"mutability":"mutable","name":"tickUpper","nameLocation":"2700:9:22","nodeType":"VariableDeclaration","scope":3373,"src":"2686:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3364,"name":"int24","nodeType":"ElementaryTypeName","src":"2686:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3367,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2727:6:22","nodeType":"VariableDeclaration","scope":3373,"src":"2719:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3366,"name":"uint128","nodeType":"ElementaryTypeName","src":"2719:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3369,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"2751:7:22","nodeType":"VariableDeclaration","scope":3373,"src":"2743:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3368,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3371,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"2776:7:22","nodeType":"VariableDeclaration","scope":3373,"src":"2768:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3370,"name":"uint256","nodeType":"ElementaryTypeName","src":"2768:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2612:177:22"},"src":"2602:188:22"},{"anonymous":false,"documentation":{"id":3374,"nodeType":"StructuredDocumentation","src":"2796:600:22","text":"@notice Emitted by the pool for any swaps between token0 and token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the output of the swap\n @param amount0 The delta of the token0 balance of the pool\n @param amount1 The delta of the token1 balance of the pool\n @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\n @param liquidity The liquidity of the pool after the swap\n @param tick The log base 1.0001 of price of the pool after the swap"},"eventSelector":"c42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67","id":3390,"name":"Swap","nameLocation":"3407:4:22","nodeType":"EventDefinition","parameters":{"id":3389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3376,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"3437:6:22","nodeType":"VariableDeclaration","scope":3390,"src":"3421:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3375,"name":"address","nodeType":"ElementaryTypeName","src":"3421:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3378,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"3469:9:22","nodeType":"VariableDeclaration","scope":3390,"src":"3453:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3377,"name":"address","nodeType":"ElementaryTypeName","src":"3453:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3380,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"3495:7:22","nodeType":"VariableDeclaration","scope":3390,"src":"3488:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3379,"name":"int256","nodeType":"ElementaryTypeName","src":"3488:6:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3382,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"3519:7:22","nodeType":"VariableDeclaration","scope":3390,"src":"3512:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3381,"name":"int256","nodeType":"ElementaryTypeName","src":"3512:6:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3384,"indexed":false,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"3544:12:22","nodeType":"VariableDeclaration","scope":3390,"src":"3536:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3383,"name":"uint160","nodeType":"ElementaryTypeName","src":"3536:7:22","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3386,"indexed":false,"mutability":"mutable","name":"liquidity","nameLocation":"3574:9:22","nodeType":"VariableDeclaration","scope":3390,"src":"3566:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3385,"name":"uint128","nodeType":"ElementaryTypeName","src":"3566:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3388,"indexed":false,"mutability":"mutable","name":"tick","nameLocation":"3599:4:22","nodeType":"VariableDeclaration","scope":3390,"src":"3593:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3387,"name":"int24","nodeType":"ElementaryTypeName","src":"3593:5:22","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3411:198:22"},"src":"3401:209:22"},{"anonymous":false,"documentation":{"id":3391,"nodeType":"StructuredDocumentation","src":"3616:562:22","text":"@notice Emitted by the pool for any flashes of token0/token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the tokens from flash\n @param amount0 The amount of token0 that was flashed\n @param amount1 The amount of token1 that was flashed\n @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee"},"eventSelector":"bdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633","id":3405,"name":"Flash","nameLocation":"4189:5:22","nodeType":"EventDefinition","parameters":{"id":3404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3393,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"4220:6:22","nodeType":"VariableDeclaration","scope":3405,"src":"4204:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3392,"name":"address","nodeType":"ElementaryTypeName","src":"4204:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3395,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"4252:9:22","nodeType":"VariableDeclaration","scope":3405,"src":"4236:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3394,"name":"address","nodeType":"ElementaryTypeName","src":"4236:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3397,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"4279:7:22","nodeType":"VariableDeclaration","scope":3405,"src":"4271:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3396,"name":"uint256","nodeType":"ElementaryTypeName","src":"4271:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3399,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"4304:7:22","nodeType":"VariableDeclaration","scope":3405,"src":"4296:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3398,"name":"uint256","nodeType":"ElementaryTypeName","src":"4296:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3401,"indexed":false,"mutability":"mutable","name":"paid0","nameLocation":"4329:5:22","nodeType":"VariableDeclaration","scope":3405,"src":"4321:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3400,"name":"uint256","nodeType":"ElementaryTypeName","src":"4321:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3403,"indexed":false,"mutability":"mutable","name":"paid1","nameLocation":"4352:5:22","nodeType":"VariableDeclaration","scope":3405,"src":"4344:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3402,"name":"uint256","nodeType":"ElementaryTypeName","src":"4344:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4194:169:22"},"src":"4183:181:22"},{"anonymous":false,"documentation":{"id":3406,"nodeType":"StructuredDocumentation","src":"4370:451:22","text":"@notice Emitted by the pool for increases to the number of observations that can be stored\n @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n just before a mint/swap/burn.\n @param observationCardinalityNextOld The previous value of the next observation cardinality\n @param observationCardinalityNextNew The updated value of the next observation cardinality"},"eventSelector":"ac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a","id":3412,"name":"IncreaseObservationCardinalityNext","nameLocation":"4832:34:22","nodeType":"EventDefinition","parameters":{"id":3411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3408,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextOld","nameLocation":"4883:29:22","nodeType":"VariableDeclaration","scope":3412,"src":"4876:36:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3407,"name":"uint16","nodeType":"ElementaryTypeName","src":"4876:6:22","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3410,"indexed":false,"mutability":"mutable","name":"observationCardinalityNextNew","nameLocation":"4929:29:22","nodeType":"VariableDeclaration","scope":3412,"src":"4922:36:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3409,"name":"uint16","nodeType":"ElementaryTypeName","src":"4922:6:22","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"4866:98:22"},"src":"4826:139:22"},{"anonymous":false,"documentation":{"id":3413,"nodeType":"StructuredDocumentation","src":"4971:370:22","text":"@notice Emitted when the protocol fee is changed by the pool\n @param feeProtocol0Old The previous value of the token0 protocol fee\n @param feeProtocol1Old The previous value of the token1 protocol fee\n @param feeProtocol0New The updated value of the token0 protocol fee\n @param feeProtocol1New The updated value of the token1 protocol fee"},"eventSelector":"973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133","id":3423,"name":"SetFeeProtocol","nameLocation":"5352:14:22","nodeType":"EventDefinition","parameters":{"id":3422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3415,"indexed":false,"mutability":"mutable","name":"feeProtocol0Old","nameLocation":"5373:15:22","nodeType":"VariableDeclaration","scope":3423,"src":"5367:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3414,"name":"uint8","nodeType":"ElementaryTypeName","src":"5367:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3417,"indexed":false,"mutability":"mutable","name":"feeProtocol1Old","nameLocation":"5396:15:22","nodeType":"VariableDeclaration","scope":3423,"src":"5390:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3416,"name":"uint8","nodeType":"ElementaryTypeName","src":"5390:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3419,"indexed":false,"mutability":"mutable","name":"feeProtocol0New","nameLocation":"5419:15:22","nodeType":"VariableDeclaration","scope":3423,"src":"5413:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3418,"name":"uint8","nodeType":"ElementaryTypeName","src":"5413:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3421,"indexed":false,"mutability":"mutable","name":"feeProtocol1New","nameLocation":"5442:15:22","nodeType":"VariableDeclaration","scope":3423,"src":"5436:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3420,"name":"uint8","nodeType":"ElementaryTypeName","src":"5436:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5366:92:22"},"src":"5346:113:22"},{"anonymous":false,"documentation":{"id":3424,"nodeType":"StructuredDocumentation","src":"5465:384:22","text":"@notice Emitted when the collected protocol fees are withdrawn by the factory owner\n @param sender The address that collects the protocol fees\n @param recipient The address that receives the collected protocol fees\n @param amount0 The amount of token0 protocol fees that is withdrawn\n @param amount0 The amount of token1 protocol fees that is withdrawn"},"eventSelector":"596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151","id":3434,"name":"CollectProtocol","nameLocation":"5860:15:22","nodeType":"EventDefinition","parameters":{"id":3433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3426,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"5892:6:22","nodeType":"VariableDeclaration","scope":3434,"src":"5876:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3425,"name":"address","nodeType":"ElementaryTypeName","src":"5876:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3428,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"5916:9:22","nodeType":"VariableDeclaration","scope":3434,"src":"5900:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3427,"name":"address","nodeType":"ElementaryTypeName","src":"5900:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3430,"indexed":false,"mutability":"mutable","name":"amount0","nameLocation":"5935:7:22","nodeType":"VariableDeclaration","scope":3434,"src":"5927:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3429,"name":"uint128","nodeType":"ElementaryTypeName","src":"5927:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3432,"indexed":false,"mutability":"mutable","name":"amount1","nameLocation":"5952:7:22","nodeType":"VariableDeclaration","scope":3434,"src":"5944:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3431,"name":"uint128","nodeType":"ElementaryTypeName","src":"5944:7:22","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5875:85:22"},"src":"5854:107:22"}],"scope":3436,"src":"159:5804:22","usedErrors":[],"usedEvents":[3326,3343,3358,3373,3390,3405,3412,3423,3434]}],"src":"45:5919:22"},"id":22},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol","exportedSymbols":{"IUniswapV3PoolImmutables":[3475]},"id":3476,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3437,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:23"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3PoolImmutables","contractDependencies":[],"contractKind":"interface","documentation":{"id":3438,"nodeType":"StructuredDocumentation","src":"71:153:23","text":"@title Pool state that never changes\n @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values"},"fullyImplemented":false,"id":3475,"linearizedBaseContracts":[3475],"name":"IUniswapV3PoolImmutables","nameLocation":"234:24:23","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3439,"nodeType":"StructuredDocumentation","src":"265:138:23","text":"@notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\n @return The contract address"},"functionSelector":"c45a0155","id":3444,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nameLocation":"417:7:23","nodeType":"FunctionDefinition","parameters":{"id":3440,"nodeType":"ParameterList","parameters":[],"src":"424:2:23"},"returnParameters":{"id":3443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3444,"src":"450:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3441,"name":"address","nodeType":"ElementaryTypeName","src":"450:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"449:9:23"},"scope":3475,"src":"408:51:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3445,"nodeType":"StructuredDocumentation","src":"465:113:23","text":"@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"0dfe1681","id":3450,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nameLocation":"592:6:23","nodeType":"FunctionDefinition","parameters":{"id":3446,"nodeType":"ParameterList","parameters":[],"src":"598:2:23"},"returnParameters":{"id":3449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3450,"src":"624:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3447,"name":"address","nodeType":"ElementaryTypeName","src":"624:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"623:9:23"},"scope":3475,"src":"583:50:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3451,"nodeType":"StructuredDocumentation","src":"639:114:23","text":"@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address"},"functionSelector":"d21220a7","id":3456,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nameLocation":"767:6:23","nodeType":"FunctionDefinition","parameters":{"id":3452,"nodeType":"ParameterList","parameters":[],"src":"773:2:23"},"returnParameters":{"id":3455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3454,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3456,"src":"799:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3453,"name":"address","nodeType":"ElementaryTypeName","src":"799:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"798:9:23"},"scope":3475,"src":"758:50:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3457,"nodeType":"StructuredDocumentation","src":"814:84:23","text":"@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee"},"functionSelector":"ddca3f43","id":3462,"implemented":false,"kind":"function","modifiers":[],"name":"fee","nameLocation":"912:3:23","nodeType":"FunctionDefinition","parameters":{"id":3458,"nodeType":"ParameterList","parameters":[],"src":"915:2:23"},"returnParameters":{"id":3461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3462,"src":"941:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3459,"name":"uint24","nodeType":"ElementaryTypeName","src":"941:6:23","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"940:8:23"},"scope":3475,"src":"903:46:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3463,"nodeType":"StructuredDocumentation","src":"955:358:23","text":"@notice The pool tick spacing\n @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n This value is an int24 to avoid casting even though it is always positive.\n @return The tick spacing"},"functionSelector":"d0c93a7c","id":3468,"implemented":false,"kind":"function","modifiers":[],"name":"tickSpacing","nameLocation":"1327:11:23","nodeType":"FunctionDefinition","parameters":{"id":3464,"nodeType":"ParameterList","parameters":[],"src":"1338:2:23"},"returnParameters":{"id":3467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3468,"src":"1364:5:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3465,"name":"int24","nodeType":"ElementaryTypeName","src":"1364:5:23","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1363:7:23"},"scope":3475,"src":"1318:53:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3469,"nodeType":"StructuredDocumentation","src":"1377:363:23","text":"@notice The maximum amount of position liquidity that can use any tick in the range\n @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n @return The max amount of liquidity per tick"},"functionSelector":"70cf754a","id":3474,"implemented":false,"kind":"function","modifiers":[],"name":"maxLiquidityPerTick","nameLocation":"1754:19:23","nodeType":"FunctionDefinition","parameters":{"id":3470,"nodeType":"ParameterList","parameters":[],"src":"1773:2:23"},"returnParameters":{"id":3473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3472,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3474,"src":"1799:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3471,"name":"uint128","nodeType":"ElementaryTypeName","src":"1799:7:23","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1798:9:23"},"scope":3475,"src":"1745:63:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3476,"src":"224:1586:23","usedErrors":[],"usedEvents":[]}],"src":"45:1766:23"},"id":23},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol","exportedSymbols":{"IUniswapV3PoolOwnerActions":[3501]},"id":3502,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3477,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:24"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3PoolOwnerActions","contractDependencies":[],"contractKind":"interface","documentation":{"id":3478,"nodeType":"StructuredDocumentation","src":"71:116:24","text":"@title Permissioned pool actions\n @notice Contains pool methods that may only be called by the factory owner"},"fullyImplemented":false,"id":3501,"linearizedBaseContracts":[3501],"name":"IUniswapV3PoolOwnerActions","nameLocation":"197:26:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3479,"nodeType":"StructuredDocumentation","src":"230:205:24","text":"@notice Set the denominator of the protocol's % share of the fees\n @param feeProtocol0 new protocol fee for token0 of the pool\n @param feeProtocol1 new protocol fee for token1 of the pool"},"functionSelector":"8206a4d1","id":3486,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeProtocol","nameLocation":"449:14:24","nodeType":"FunctionDefinition","parameters":{"id":3484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3481,"mutability":"mutable","name":"feeProtocol0","nameLocation":"470:12:24","nodeType":"VariableDeclaration","scope":3486,"src":"464:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3480,"name":"uint8","nodeType":"ElementaryTypeName","src":"464:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3483,"mutability":"mutable","name":"feeProtocol1","nameLocation":"490:12:24","nodeType":"VariableDeclaration","scope":3486,"src":"484:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3482,"name":"uint8","nodeType":"ElementaryTypeName","src":"484:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"463:40:24"},"returnParameters":{"id":3485,"nodeType":"ParameterList","parameters":[],"src":"512:0:24"},"scope":3501,"src":"440:73:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3487,"nodeType":"StructuredDocumentation","src":"519:483:24","text":"@notice Collect the protocol fee accrued to the pool\n @param recipient The address to which collected protocol fees should be sent\n @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n @return amount0 The protocol fee collected in token0\n @return amount1 The protocol fee collected in token1"},"functionSelector":"85b66729","id":3500,"implemented":false,"kind":"function","modifiers":[],"name":"collectProtocol","nameLocation":"1016:15:24","nodeType":"FunctionDefinition","parameters":{"id":3494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3489,"mutability":"mutable","name":"recipient","nameLocation":"1049:9:24","nodeType":"VariableDeclaration","scope":3500,"src":"1041:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3488,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3491,"mutability":"mutable","name":"amount0Requested","nameLocation":"1076:16:24","nodeType":"VariableDeclaration","scope":3500,"src":"1068:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3490,"name":"uint128","nodeType":"ElementaryTypeName","src":"1068:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3493,"mutability":"mutable","name":"amount1Requested","nameLocation":"1110:16:24","nodeType":"VariableDeclaration","scope":3500,"src":"1102:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3492,"name":"uint128","nodeType":"ElementaryTypeName","src":"1102:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1031:101:24"},"returnParameters":{"id":3499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3496,"mutability":"mutable","name":"amount0","nameLocation":"1159:7:24","nodeType":"VariableDeclaration","scope":3500,"src":"1151:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3495,"name":"uint128","nodeType":"ElementaryTypeName","src":"1151:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3498,"mutability":"mutable","name":"amount1","nameLocation":"1176:7:24","nodeType":"VariableDeclaration","scope":3500,"src":"1168:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3497,"name":"uint128","nodeType":"ElementaryTypeName","src":"1168:7:24","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1150:34:24"},"scope":3501,"src":"1007:178:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3502,"src":"187:1000:24","usedErrors":[],"usedEvents":[]}],"src":"45:1143:24"},"id":24},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol","exportedSymbols":{"IUniswapV3PoolState":[3609]},"id":3610,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3503,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:25"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3PoolState","contractDependencies":[],"contractKind":"interface","documentation":{"id":3504,"nodeType":"StructuredDocumentation","src":"71:169:25","text":"@title Pool state that can change\n @notice These methods compose the pool's state, and can change with any frequency including multiple times\n per transaction"},"fullyImplemented":false,"id":3609,"linearizedBaseContracts":[3609],"name":"IUniswapV3PoolState","nameLocation":"250:19:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3505,"nodeType":"StructuredDocumentation","src":"276:1140:25","text":"@notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n when accessed externally.\n @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n tick The current tick of the pool, i.e. according to the last tick transition that was run.\n This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n boundary.\n observationIndex The index of the last oracle observation that was written,\n observationCardinality The current maximum number of observations stored in the pool,\n observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n feeProtocol The protocol fee for both tokens of the pool.\n Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n unlocked Whether the pool is currently locked to reentrancy"},"functionSelector":"3850c7bd","id":3522,"implemented":false,"kind":"function","modifiers":[],"name":"slot0","nameLocation":"1430:5:25","nodeType":"FunctionDefinition","parameters":{"id":3506,"nodeType":"ParameterList","parameters":[],"src":"1435:2:25"},"returnParameters":{"id":3521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3508,"mutability":"mutable","name":"sqrtPriceX96","nameLocation":"1506:12:25","nodeType":"VariableDeclaration","scope":3522,"src":"1498:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3507,"name":"uint160","nodeType":"ElementaryTypeName","src":"1498:7:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3510,"mutability":"mutable","name":"tick","nameLocation":"1538:4:25","nodeType":"VariableDeclaration","scope":3522,"src":"1532:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3509,"name":"int24","nodeType":"ElementaryTypeName","src":"1532:5:25","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3512,"mutability":"mutable","name":"observationIndex","nameLocation":"1563:16:25","nodeType":"VariableDeclaration","scope":3522,"src":"1556:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3511,"name":"uint16","nodeType":"ElementaryTypeName","src":"1556:6:25","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3514,"mutability":"mutable","name":"observationCardinality","nameLocation":"1600:22:25","nodeType":"VariableDeclaration","scope":3522,"src":"1593:29:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3513,"name":"uint16","nodeType":"ElementaryTypeName","src":"1593:6:25","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3516,"mutability":"mutable","name":"observationCardinalityNext","nameLocation":"1643:26:25","nodeType":"VariableDeclaration","scope":3522,"src":"1636:33:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3515,"name":"uint16","nodeType":"ElementaryTypeName","src":"1636:6:25","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3518,"mutability":"mutable","name":"feeProtocol","nameLocation":"1689:11:25","nodeType":"VariableDeclaration","scope":3522,"src":"1683:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3517,"name":"uint8","nodeType":"ElementaryTypeName","src":"1683:5:25","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3520,"mutability":"mutable","name":"unlocked","nameLocation":"1719:8:25","nodeType":"VariableDeclaration","scope":3522,"src":"1714:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3519,"name":"bool","nodeType":"ElementaryTypeName","src":"1714:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1484:253:25"},"scope":3609,"src":"1421:317:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3523,"nodeType":"StructuredDocumentation","src":"1744:168:25","text":"@notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256"},"functionSelector":"f3058399","id":3528,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal0X128","nameLocation":"1926:20:25","nodeType":"FunctionDefinition","parameters":{"id":3524,"nodeType":"ParameterList","parameters":[],"src":"1946:2:25"},"returnParameters":{"id":3527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3528,"src":"1972:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3525,"name":"uint256","nodeType":"ElementaryTypeName","src":"1972:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1971:9:25"},"scope":3609,"src":"1917:64:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3529,"nodeType":"StructuredDocumentation","src":"1987:168:25","text":"@notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256"},"functionSelector":"46141319","id":3534,"implemented":false,"kind":"function","modifiers":[],"name":"feeGrowthGlobal1X128","nameLocation":"2169:20:25","nodeType":"FunctionDefinition","parameters":{"id":3530,"nodeType":"ParameterList","parameters":[],"src":"2189:2:25"},"returnParameters":{"id":3533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3534,"src":"2215:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3531,"name":"uint256","nodeType":"ElementaryTypeName","src":"2215:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2214:9:25"},"scope":3609,"src":"2160:64:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3535,"nodeType":"StructuredDocumentation","src":"2230:147:25","text":"@notice The amounts of token0 and token1 that are owed to the protocol\n @dev Protocol fees will never exceed uint128 max in either token"},"functionSelector":"1ad8b03b","id":3542,"implemented":false,"kind":"function","modifiers":[],"name":"protocolFees","nameLocation":"2391:12:25","nodeType":"FunctionDefinition","parameters":{"id":3536,"nodeType":"ParameterList","parameters":[],"src":"2403:2:25"},"returnParameters":{"id":3541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3538,"mutability":"mutable","name":"token0","nameLocation":"2437:6:25","nodeType":"VariableDeclaration","scope":3542,"src":"2429:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3537,"name":"uint128","nodeType":"ElementaryTypeName","src":"2429:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3540,"mutability":"mutable","name":"token1","nameLocation":"2453:6:25","nodeType":"VariableDeclaration","scope":3542,"src":"2445:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3539,"name":"uint128","nodeType":"ElementaryTypeName","src":"2445:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2428:32:25"},"scope":3609,"src":"2382:79:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3543,"nodeType":"StructuredDocumentation","src":"2467:150:25","text":"@notice The currently in range liquidity available to the pool\n @dev This value has no relationship to the total liquidity across all ticks"},"functionSelector":"1a686502","id":3548,"implemented":false,"kind":"function","modifiers":[],"name":"liquidity","nameLocation":"2631:9:25","nodeType":"FunctionDefinition","parameters":{"id":3544,"nodeType":"ParameterList","parameters":[],"src":"2640:2:25"},"returnParameters":{"id":3547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3548,"src":"2666:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3545,"name":"uint128","nodeType":"ElementaryTypeName","src":"2666:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2665:9:25"},"scope":3609,"src":"2622:53:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3549,"nodeType":"StructuredDocumentation","src":"2681:1244:25","text":"@notice Look up information about a specific tick in the pool\n @param tick The tick to look up\n @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n tick upper,\n liquidityNet how much liquidity changes when the pool price crosses the tick,\n feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n secondsOutside the seconds spent on the other side of the tick from the current tick,\n initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n In addition, these values are only relative and must be used only in comparison to previous snapshots for\n a specific position."},"functionSelector":"f30dba93","id":3570,"implemented":false,"kind":"function","modifiers":[],"name":"ticks","nameLocation":"3939:5:25","nodeType":"FunctionDefinition","parameters":{"id":3552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3551,"mutability":"mutable","name":"tick","nameLocation":"3951:4:25","nodeType":"VariableDeclaration","scope":3570,"src":"3945:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3550,"name":"int24","nodeType":"ElementaryTypeName","src":"3945:5:25","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3944:12:25"},"returnParameters":{"id":3569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3554,"mutability":"mutable","name":"liquidityGross","nameLocation":"4025:14:25","nodeType":"VariableDeclaration","scope":3570,"src":"4017:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3553,"name":"uint128","nodeType":"ElementaryTypeName","src":"4017:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3556,"mutability":"mutable","name":"liquidityNet","nameLocation":"4060:12:25","nodeType":"VariableDeclaration","scope":3570,"src":"4053:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":3555,"name":"int128","nodeType":"ElementaryTypeName","src":"4053:6:25","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":3558,"mutability":"mutable","name":"feeGrowthOutside0X128","nameLocation":"4094:21:25","nodeType":"VariableDeclaration","scope":3570,"src":"4086:29:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3557,"name":"uint256","nodeType":"ElementaryTypeName","src":"4086:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3560,"mutability":"mutable","name":"feeGrowthOutside1X128","nameLocation":"4137:21:25","nodeType":"VariableDeclaration","scope":3570,"src":"4129:29:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3559,"name":"uint256","nodeType":"ElementaryTypeName","src":"4129:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3562,"mutability":"mutable","name":"tickCumulativeOutside","nameLocation":"4178:21:25","nodeType":"VariableDeclaration","scope":3570,"src":"4172:27:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":3561,"name":"int56","nodeType":"ElementaryTypeName","src":"4172:5:25","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":3564,"mutability":"mutable","name":"secondsPerLiquidityOutsideX128","nameLocation":"4221:30:25","nodeType":"VariableDeclaration","scope":3570,"src":"4213:38:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3563,"name":"uint160","nodeType":"ElementaryTypeName","src":"4213:7:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3566,"mutability":"mutable","name":"secondsOutside","nameLocation":"4272:14:25","nodeType":"VariableDeclaration","scope":3570,"src":"4265:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3565,"name":"uint32","nodeType":"ElementaryTypeName","src":"4265:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3568,"mutability":"mutable","name":"initialized","nameLocation":"4305:11:25","nodeType":"VariableDeclaration","scope":3570,"src":"4300:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3567,"name":"bool","nodeType":"ElementaryTypeName","src":"4300:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4003:323:25"},"scope":3609,"src":"3930:397:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3571,"nodeType":"StructuredDocumentation","src":"4333:99:25","text":"@notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"functionSelector":"5339c296","id":3578,"implemented":false,"kind":"function","modifiers":[],"name":"tickBitmap","nameLocation":"4446:10:25","nodeType":"FunctionDefinition","parameters":{"id":3574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3573,"mutability":"mutable","name":"wordPosition","nameLocation":"4463:12:25","nodeType":"VariableDeclaration","scope":3578,"src":"4457:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":3572,"name":"int16","nodeType":"ElementaryTypeName","src":"4457:5:25","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"4456:20:25"},"returnParameters":{"id":3577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3576,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3578,"src":"4500:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3575,"name":"uint256","nodeType":"ElementaryTypeName","src":"4500:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4499:9:25"},"scope":3609,"src":"4437:72:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3579,"nodeType":"StructuredDocumentation","src":"4515:700:25","text":"@notice Returns the information about a position by the position's key\n @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n @return _liquidity The amount of liquidity in the position,\n Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke"},"functionSelector":"514ea4bf","id":3594,"implemented":false,"kind":"function","modifiers":[],"name":"positions","nameLocation":"5229:9:25","nodeType":"FunctionDefinition","parameters":{"id":3582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3581,"mutability":"mutable","name":"key","nameLocation":"5247:3:25","nodeType":"VariableDeclaration","scope":3594,"src":"5239:11:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3580,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5239:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5238:13:25"},"returnParameters":{"id":3593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3584,"mutability":"mutable","name":"_liquidity","nameLocation":"5320:10:25","nodeType":"VariableDeclaration","scope":3594,"src":"5312:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3583,"name":"uint128","nodeType":"ElementaryTypeName","src":"5312:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3586,"mutability":"mutable","name":"feeGrowthInside0LastX128","nameLocation":"5352:24:25","nodeType":"VariableDeclaration","scope":3594,"src":"5344:32:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3585,"name":"uint256","nodeType":"ElementaryTypeName","src":"5344:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3588,"mutability":"mutable","name":"feeGrowthInside1LastX128","nameLocation":"5398:24:25","nodeType":"VariableDeclaration","scope":3594,"src":"5390:32:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3587,"name":"uint256","nodeType":"ElementaryTypeName","src":"5390:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3590,"mutability":"mutable","name":"tokensOwed0","nameLocation":"5444:11:25","nodeType":"VariableDeclaration","scope":3594,"src":"5436:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3589,"name":"uint128","nodeType":"ElementaryTypeName","src":"5436:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3592,"mutability":"mutable","name":"tokensOwed1","nameLocation":"5477:11:25","nodeType":"VariableDeclaration","scope":3594,"src":"5469:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3591,"name":"uint128","nodeType":"ElementaryTypeName","src":"5469:7:25","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5298:200:25"},"scope":3609,"src":"5220:279:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3595,"nodeType":"StructuredDocumentation","src":"5505:749:25","text":"@notice Returns data about a specific observation index\n @param index The element of the observations array to fetch\n @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n ago, rather than at a specific index in the array.\n @return blockTimestamp The timestamp of the observation,\n Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n Returns initialized whether the observation has been initialized and the values are safe to use"},"functionSelector":"252c09d7","id":3608,"implemented":false,"kind":"function","modifiers":[],"name":"observations","nameLocation":"6268:12:25","nodeType":"FunctionDefinition","parameters":{"id":3598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3597,"mutability":"mutable","name":"index","nameLocation":"6289:5:25","nodeType":"VariableDeclaration","scope":3608,"src":"6281:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3596,"name":"uint256","nodeType":"ElementaryTypeName","src":"6281:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6280:15:25"},"returnParameters":{"id":3607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3600,"mutability":"mutable","name":"blockTimestamp","nameLocation":"6363:14:25","nodeType":"VariableDeclaration","scope":3608,"src":"6356:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3599,"name":"uint32","nodeType":"ElementaryTypeName","src":"6356:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3602,"mutability":"mutable","name":"tickCumulative","nameLocation":"6397:14:25","nodeType":"VariableDeclaration","scope":3608,"src":"6391:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":3601,"name":"int56","nodeType":"ElementaryTypeName","src":"6391:5:25","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"},{"constant":false,"id":3604,"mutability":"mutable","name":"secondsPerLiquidityCumulativeX128","nameLocation":"6433:33:25","nodeType":"VariableDeclaration","scope":3608,"src":"6425:41:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3603,"name":"uint160","nodeType":"ElementaryTypeName","src":"6425:7:25","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3606,"mutability":"mutable","name":"initialized","nameLocation":"6485:11:25","nodeType":"VariableDeclaration","scope":3608,"src":"6480:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3605,"name":"bool","nodeType":"ElementaryTypeName","src":"6480:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6342:164:25"},"scope":3609,"src":"6259:248:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3610,"src":"240:6269:25","usedErrors":[],"usedEvents":[]}],"src":"45:6465:25"},"id":25},"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol":{"ast":{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol","exportedSymbols":{"IQuoter":[3666]},"id":3667,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3611,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:26"},{"id":3612,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:26"},{"abstract":false,"baseContracts":[],"canonicalName":"IQuoter","contractDependencies":[],"contractKind":"interface","documentation":{"id":3613,"nodeType":"StructuredDocumentation","src":"91:320:26","text":"@title Quoter Interface\n @notice Supports quoting the calculated amounts from exact input or exact output swaps\n @dev These functions are not marked view because they rely on calling non-view functions and reverting\n to compute the result. They are also not gas efficient and should not be called on-chain."},"fullyImplemented":false,"id":3666,"linearizedBaseContracts":[3666],"name":"IQuoter","nameLocation":"421:7:26","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3614,"nodeType":"StructuredDocumentation","src":"435:319:26","text":"@notice Returns the amount out received for a given exact input swap without executing the swap\n @param path The path of the swap, i.e. each token pair and the pool fee\n @param amountIn The amount of the first token to swap\n @return amountOut The amount of the last token that would be received"},"functionSelector":"cdca1753","id":3623,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactInput","nameLocation":"768:15:26","nodeType":"FunctionDefinition","parameters":{"id":3619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3616,"mutability":"mutable","name":"path","nameLocation":"797:4:26","nodeType":"VariableDeclaration","scope":3623,"src":"784:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3615,"name":"bytes","nodeType":"ElementaryTypeName","src":"784:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3618,"mutability":"mutable","name":"amountIn","nameLocation":"811:8:26","nodeType":"VariableDeclaration","scope":3623,"src":"803:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3617,"name":"uint256","nodeType":"ElementaryTypeName","src":"803:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"783:37:26"},"returnParameters":{"id":3622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3621,"mutability":"mutable","name":"amountOut","nameLocation":"847:9:26","nodeType":"VariableDeclaration","scope":3623,"src":"839:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3620,"name":"uint256","nodeType":"ElementaryTypeName","src":"839:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"838:19:26"},"scope":3666,"src":"759:99:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3624,"nodeType":"StructuredDocumentation","src":"864:491:26","text":"@notice Returns the amount out received for a given exact input but for a swap of a single pool\n @param tokenIn The token being swapped in\n @param tokenOut The token being swapped out\n @param fee The fee of the token pool to consider for the pair\n @param amountIn The desired input amount\n @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountOut The amount of `tokenOut` that would be received"},"functionSelector":"f7729d43","id":3639,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactInputSingle","nameLocation":"1369:21:26","nodeType":"FunctionDefinition","parameters":{"id":3635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3626,"mutability":"mutable","name":"tokenIn","nameLocation":"1408:7:26","nodeType":"VariableDeclaration","scope":3639,"src":"1400:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3625,"name":"address","nodeType":"ElementaryTypeName","src":"1400:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3628,"mutability":"mutable","name":"tokenOut","nameLocation":"1433:8:26","nodeType":"VariableDeclaration","scope":3639,"src":"1425:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3627,"name":"address","nodeType":"ElementaryTypeName","src":"1425:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3630,"mutability":"mutable","name":"fee","nameLocation":"1458:3:26","nodeType":"VariableDeclaration","scope":3639,"src":"1451:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3629,"name":"uint24","nodeType":"ElementaryTypeName","src":"1451:6:26","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3632,"mutability":"mutable","name":"amountIn","nameLocation":"1479:8:26","nodeType":"VariableDeclaration","scope":3639,"src":"1471:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3631,"name":"uint256","nodeType":"ElementaryTypeName","src":"1471:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3634,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"1505:17:26","nodeType":"VariableDeclaration","scope":3639,"src":"1497:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3633,"name":"uint160","nodeType":"ElementaryTypeName","src":"1497:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1390:138:26"},"returnParameters":{"id":3638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3637,"mutability":"mutable","name":"amountOut","nameLocation":"1555:9:26","nodeType":"VariableDeclaration","scope":3639,"src":"1547:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1546:19:26"},"scope":3666,"src":"1360:206:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3640,"nodeType":"StructuredDocumentation","src":"1572:355:26","text":"@notice Returns the amount in required for a given exact output swap without executing the swap\n @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\n @param amountOut The amount of the last token to receive\n @return amountIn The amount of first token required to be paid"},"functionSelector":"2f80bb1d","id":3649,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactOutput","nameLocation":"1941:16:26","nodeType":"FunctionDefinition","parameters":{"id":3645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3642,"mutability":"mutable","name":"path","nameLocation":"1971:4:26","nodeType":"VariableDeclaration","scope":3649,"src":"1958:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3641,"name":"bytes","nodeType":"ElementaryTypeName","src":"1958:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3644,"mutability":"mutable","name":"amountOut","nameLocation":"1985:9:26","nodeType":"VariableDeclaration","scope":3649,"src":"1977:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3643,"name":"uint256","nodeType":"ElementaryTypeName","src":"1977:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1957:38:26"},"returnParameters":{"id":3648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3647,"mutability":"mutable","name":"amountIn","nameLocation":"2022:8:26","nodeType":"VariableDeclaration","scope":3649,"src":"2014:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3646,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2013:18:26"},"scope":3666,"src":"1932:100:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3650,"nodeType":"StructuredDocumentation","src":"2038:538:26","text":"@notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n @param tokenIn The token being swapped in\n @param tokenOut The token being swapped out\n @param fee The fee of the token pool to consider for the pair\n @param amountOut The desired output amount\n @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountIn The amount required as the input for the swap in order to receive `amountOut`"},"functionSelector":"30d07f21","id":3665,"implemented":false,"kind":"function","modifiers":[],"name":"quoteExactOutputSingle","nameLocation":"2590:22:26","nodeType":"FunctionDefinition","parameters":{"id":3661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3652,"mutability":"mutable","name":"tokenIn","nameLocation":"2630:7:26","nodeType":"VariableDeclaration","scope":3665,"src":"2622:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3651,"name":"address","nodeType":"ElementaryTypeName","src":"2622:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3654,"mutability":"mutable","name":"tokenOut","nameLocation":"2655:8:26","nodeType":"VariableDeclaration","scope":3665,"src":"2647:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3653,"name":"address","nodeType":"ElementaryTypeName","src":"2647:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3656,"mutability":"mutable","name":"fee","nameLocation":"2680:3:26","nodeType":"VariableDeclaration","scope":3665,"src":"2673:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3655,"name":"uint24","nodeType":"ElementaryTypeName","src":"2673:6:26","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3658,"mutability":"mutable","name":"amountOut","nameLocation":"2701:9:26","nodeType":"VariableDeclaration","scope":3665,"src":"2693:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3657,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3660,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"2728:17:26","nodeType":"VariableDeclaration","scope":3665,"src":"2720:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3659,"name":"uint160","nodeType":"ElementaryTypeName","src":"2720:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"2612:139:26"},"returnParameters":{"id":3664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3663,"mutability":"mutable","name":"amountIn","nameLocation":"2778:8:26","nodeType":"VariableDeclaration","scope":3665,"src":"2770:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3662,"name":"uint256","nodeType":"ElementaryTypeName","src":"2770:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2769:18:26"},"scope":3666,"src":"2581:207:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3667,"src":"411:2379:26","usedErrors":[],"usedEvents":[]}],"src":"45:2746:26"},"id":26},"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol":{"ast":{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","exportedSymbols":{"ISwapRouter":[3766],"IUniswapV3SwapCallback":[3189]},"id":3767,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3668,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:27"},{"id":3669,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:27"},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","file":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","id":3670,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3767,"sourceUnit":3190,"src":"91:83:27","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3672,"name":"IUniswapV3SwapCallback","nameLocations":["305:22:27"],"nodeType":"IdentifierPath","referencedDeclaration":3189,"src":"305:22:27"},"id":3673,"nodeType":"InheritanceSpecifier","src":"305:22:27"}],"canonicalName":"ISwapRouter","contractDependencies":[],"contractKind":"interface","documentation":{"id":3671,"nodeType":"StructuredDocumentation","src":"176:104:27","text":"@title Router token swapping functionality\n @notice Functions for swapping tokens via Uniswap V3"},"fullyImplemented":false,"id":3766,"linearizedBaseContracts":[3766,3189],"name":"ISwapRouter","nameLocation":"290:11:27","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ISwapRouter.ExactInputSingleParams","id":3690,"members":[{"constant":false,"id":3675,"mutability":"mutable","name":"tokenIn","nameLocation":"382:7:27","nodeType":"VariableDeclaration","scope":3690,"src":"374:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3674,"name":"address","nodeType":"ElementaryTypeName","src":"374:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3677,"mutability":"mutable","name":"tokenOut","nameLocation":"407:8:27","nodeType":"VariableDeclaration","scope":3690,"src":"399:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3676,"name":"address","nodeType":"ElementaryTypeName","src":"399:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3679,"mutability":"mutable","name":"fee","nameLocation":"432:3:27","nodeType":"VariableDeclaration","scope":3690,"src":"425:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3678,"name":"uint24","nodeType":"ElementaryTypeName","src":"425:6:27","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3681,"mutability":"mutable","name":"recipient","nameLocation":"453:9:27","nodeType":"VariableDeclaration","scope":3690,"src":"445:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3680,"name":"address","nodeType":"ElementaryTypeName","src":"445:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3683,"mutability":"mutable","name":"deadline","nameLocation":"480:8:27","nodeType":"VariableDeclaration","scope":3690,"src":"472:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3682,"name":"uint256","nodeType":"ElementaryTypeName","src":"472:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3685,"mutability":"mutable","name":"amountIn","nameLocation":"506:8:27","nodeType":"VariableDeclaration","scope":3690,"src":"498:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3684,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3687,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"532:16:27","nodeType":"VariableDeclaration","scope":3690,"src":"524:24:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3686,"name":"uint256","nodeType":"ElementaryTypeName","src":"524:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3689,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"566:17:27","nodeType":"VariableDeclaration","scope":3690,"src":"558:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3688,"name":"uint160","nodeType":"ElementaryTypeName","src":"558:7:27","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactInputSingleParams","nameLocation":"341:22:27","nodeType":"StructDefinition","scope":3766,"src":"334:256:27","visibility":"public"},{"documentation":{"id":3691,"nodeType":"StructuredDocumentation","src":"596:250:27","text":"@notice Swaps `amountIn` of one token for as much as possible of another token\n @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\n @return amountOut The amount of the received token"},"functionSelector":"414bf389","id":3699,"implemented":false,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"860:16:27","nodeType":"FunctionDefinition","parameters":{"id":3695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3694,"mutability":"mutable","name":"params","nameLocation":"909:6:27","nodeType":"VariableDeclaration","scope":3699,"src":"877:38:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$3690_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":3693,"nodeType":"UserDefinedTypeName","pathNode":{"id":3692,"name":"ExactInputSingleParams","nameLocations":["877:22:27"],"nodeType":"IdentifierPath","referencedDeclaration":3690,"src":"877:22:27"},"referencedDeclaration":3690,"src":"877:22:27","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$3690_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"876:40:27"},"returnParameters":{"id":3698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3697,"mutability":"mutable","name":"amountOut","nameLocation":"951:9:27","nodeType":"VariableDeclaration","scope":3699,"src":"943:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3696,"name":"uint256","nodeType":"ElementaryTypeName","src":"943:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"942:19:27"},"scope":3766,"src":"851:111:27","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactInputParams","id":3710,"members":[{"constant":false,"id":3701,"mutability":"mutable","name":"path","nameLocation":"1008:4:27","nodeType":"VariableDeclaration","scope":3710,"src":"1002:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3700,"name":"bytes","nodeType":"ElementaryTypeName","src":"1002:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3703,"mutability":"mutable","name":"recipient","nameLocation":"1030:9:27","nodeType":"VariableDeclaration","scope":3710,"src":"1022:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3702,"name":"address","nodeType":"ElementaryTypeName","src":"1022:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3705,"mutability":"mutable","name":"deadline","nameLocation":"1057:8:27","nodeType":"VariableDeclaration","scope":3710,"src":"1049:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3707,"mutability":"mutable","name":"amountIn","nameLocation":"1083:8:27","nodeType":"VariableDeclaration","scope":3710,"src":"1075:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3706,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3709,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"1109:16:27","nodeType":"VariableDeclaration","scope":3710,"src":"1101:24:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3708,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactInputParams","nameLocation":"975:16:27","nodeType":"StructDefinition","scope":3766,"src":"968:164:27","visibility":"public"},{"documentation":{"id":3711,"nodeType":"StructuredDocumentation","src":"1138:273:27","text":"@notice Swaps `amountIn` of one token for as much as possible of another along the specified path\n @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\n @return amountOut The amount of the received token"},"functionSelector":"c04b8d59","id":3719,"implemented":false,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"1425:10:27","nodeType":"FunctionDefinition","parameters":{"id":3715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3714,"mutability":"mutable","name":"params","nameLocation":"1462:6:27","nodeType":"VariableDeclaration","scope":3719,"src":"1436:32:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$3710_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":3713,"nodeType":"UserDefinedTypeName","pathNode":{"id":3712,"name":"ExactInputParams","nameLocations":["1436:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":3710,"src":"1436:16:27"},"referencedDeclaration":3710,"src":"1436:16:27","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$3710_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"1435:34:27"},"returnParameters":{"id":3718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3717,"mutability":"mutable","name":"amountOut","nameLocation":"1504:9:27","nodeType":"VariableDeclaration","scope":3719,"src":"1496:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3716,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:19:27"},"scope":3766,"src":"1416:99:27","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputSingleParams","id":3736,"members":[{"constant":false,"id":3721,"mutability":"mutable","name":"tokenIn","nameLocation":"1570:7:27","nodeType":"VariableDeclaration","scope":3736,"src":"1562:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3720,"name":"address","nodeType":"ElementaryTypeName","src":"1562:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3723,"mutability":"mutable","name":"tokenOut","nameLocation":"1595:8:27","nodeType":"VariableDeclaration","scope":3736,"src":"1587:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3722,"name":"address","nodeType":"ElementaryTypeName","src":"1587:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3725,"mutability":"mutable","name":"fee","nameLocation":"1620:3:27","nodeType":"VariableDeclaration","scope":3736,"src":"1613:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3724,"name":"uint24","nodeType":"ElementaryTypeName","src":"1613:6:27","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":3727,"mutability":"mutable","name":"recipient","nameLocation":"1641:9:27","nodeType":"VariableDeclaration","scope":3736,"src":"1633:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3726,"name":"address","nodeType":"ElementaryTypeName","src":"1633:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3729,"mutability":"mutable","name":"deadline","nameLocation":"1668:8:27","nodeType":"VariableDeclaration","scope":3736,"src":"1660:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3728,"name":"uint256","nodeType":"ElementaryTypeName","src":"1660:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3731,"mutability":"mutable","name":"amountOut","nameLocation":"1694:9:27","nodeType":"VariableDeclaration","scope":3736,"src":"1686:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3730,"name":"uint256","nodeType":"ElementaryTypeName","src":"1686:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3733,"mutability":"mutable","name":"amountInMaximum","nameLocation":"1721:15:27","nodeType":"VariableDeclaration","scope":3736,"src":"1713:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3732,"name":"uint256","nodeType":"ElementaryTypeName","src":"1713:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3735,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"1754:17:27","nodeType":"VariableDeclaration","scope":3736,"src":"1746:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3734,"name":"uint160","nodeType":"ElementaryTypeName","src":"1746:7:27","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactOutputSingleParams","nameLocation":"1528:23:27","nodeType":"StructDefinition","scope":3766,"src":"1521:257:27","visibility":"public"},{"documentation":{"id":3737,"nodeType":"StructuredDocumentation","src":"1784:250:27","text":"@notice Swaps as little as possible of one token for `amountOut` of another token\n @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\n @return amountIn The amount of the input token"},"functionSelector":"db3e2198","id":3745,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutputSingle","nameLocation":"2048:17:27","nodeType":"FunctionDefinition","parameters":{"id":3741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3740,"mutability":"mutable","name":"params","nameLocation":"2099:6:27","nodeType":"VariableDeclaration","scope":3745,"src":"2066:39:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$3736_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":3739,"nodeType":"UserDefinedTypeName","pathNode":{"id":3738,"name":"ExactOutputSingleParams","nameLocations":["2066:23:27"],"nodeType":"IdentifierPath","referencedDeclaration":3736,"src":"2066:23:27"},"referencedDeclaration":3736,"src":"2066:23:27","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$3736_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2065:41:27"},"returnParameters":{"id":3744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3743,"mutability":"mutable","name":"amountIn","nameLocation":"2141:8:27","nodeType":"VariableDeclaration","scope":3745,"src":"2133:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3742,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2132:18:27"},"scope":3766,"src":"2039:112:27","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputParams","id":3756,"members":[{"constant":false,"id":3747,"mutability":"mutable","name":"path","nameLocation":"2198:4:27","nodeType":"VariableDeclaration","scope":3756,"src":"2192:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3746,"name":"bytes","nodeType":"ElementaryTypeName","src":"2192:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3749,"mutability":"mutable","name":"recipient","nameLocation":"2220:9:27","nodeType":"VariableDeclaration","scope":3756,"src":"2212:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3748,"name":"address","nodeType":"ElementaryTypeName","src":"2212:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3751,"mutability":"mutable","name":"deadline","nameLocation":"2247:8:27","nodeType":"VariableDeclaration","scope":3756,"src":"2239:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3750,"name":"uint256","nodeType":"ElementaryTypeName","src":"2239:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3753,"mutability":"mutable","name":"amountOut","nameLocation":"2273:9:27","nodeType":"VariableDeclaration","scope":3756,"src":"2265:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3752,"name":"uint256","nodeType":"ElementaryTypeName","src":"2265:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3755,"mutability":"mutable","name":"amountInMaximum","nameLocation":"2300:15:27","nodeType":"VariableDeclaration","scope":3756,"src":"2292:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3754,"name":"uint256","nodeType":"ElementaryTypeName","src":"2292:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactOutputParams","nameLocation":"2164:17:27","nodeType":"StructDefinition","scope":3766,"src":"2157:165:27","visibility":"public"},{"documentation":{"id":3757,"nodeType":"StructuredDocumentation","src":"2328:284:27","text":"@notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\n @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\n @return amountIn The amount of the input token"},"functionSelector":"f28c0498","id":3765,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"2626:11:27","nodeType":"FunctionDefinition","parameters":{"id":3761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3760,"mutability":"mutable","name":"params","nameLocation":"2665:6:27","nodeType":"VariableDeclaration","scope":3765,"src":"2638:33:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$3756_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":3759,"nodeType":"UserDefinedTypeName","pathNode":{"id":3758,"name":"ExactOutputParams","nameLocations":["2638:17:27"],"nodeType":"IdentifierPath","referencedDeclaration":3756,"src":"2638:17:27"},"referencedDeclaration":3756,"src":"2638:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$3756_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"2637:35:27"},"returnParameters":{"id":3764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3763,"mutability":"mutable","name":"amountIn","nameLocation":"2707:8:27","nodeType":"VariableDeclaration","scope":3765,"src":"2699:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3762,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2698:18:27"},"scope":3766,"src":"2617:100:27","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":3767,"src":"280:2439:27","usedErrors":[],"usedEvents":[]}],"src":"45:2675:27"},"id":27},"contracts/interfaces/I1inchSpotAgg.sol":{"ast":{"absolutePath":"contracts/interfaces/I1inchSpotAgg.sol","exportedSymbols":{"I1inchSpotAgg":[3793],"IERC20":[2651]},"id":3794,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":3768,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:28"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3769,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3794,"sourceUnit":2652,"src":"65:56:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"I1inchSpotAgg","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3793,"linearizedBaseContracts":[3793],"name":"I1inchSpotAgg","nameLocation":"135:13:28","nodeType":"ContractDefinition","nodes":[{"functionSelector":"802431fb","id":3782,"implemented":false,"kind":"function","modifiers":[],"name":"getRate","nameLocation":"163:7:28","nodeType":"FunctionDefinition","parameters":{"id":3778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3772,"mutability":"mutable","name":"srcToken","nameLocation":"178:8:28","nodeType":"VariableDeclaration","scope":3782,"src":"171:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":3771,"nodeType":"UserDefinedTypeName","pathNode":{"id":3770,"name":"IERC20","nameLocations":["171:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"171:6:28"},"referencedDeclaration":2651,"src":"171:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3775,"mutability":"mutable","name":"dstToken","nameLocation":"195:8:28","nodeType":"VariableDeclaration","scope":3782,"src":"188:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":3774,"nodeType":"UserDefinedTypeName","pathNode":{"id":3773,"name":"IERC20","nameLocations":["188:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"188:6:28"},"referencedDeclaration":2651,"src":"188:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3777,"mutability":"mutable","name":"useWrappers","nameLocation":"210:11:28","nodeType":"VariableDeclaration","scope":3782,"src":"205:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3776,"name":"bool","nodeType":"ElementaryTypeName","src":"205:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"170:52:28"},"returnParameters":{"id":3781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3780,"mutability":"mutable","name":"weightedRate","nameLocation":"254:12:28","nodeType":"VariableDeclaration","scope":3782,"src":"246:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3779,"name":"uint256","nodeType":"ElementaryTypeName","src":"246:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"245:22:28"},"scope":3793,"src":"154:114:28","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7de4fd10","id":3792,"implemented":false,"kind":"function","modifiers":[],"name":"getRateToEth","nameLocation":"283:12:28","nodeType":"FunctionDefinition","parameters":{"id":3788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3785,"mutability":"mutable","name":"srcToken","nameLocation":"303:8:28","nodeType":"VariableDeclaration","scope":3792,"src":"296:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":3784,"nodeType":"UserDefinedTypeName","pathNode":{"id":3783,"name":"IERC20","nameLocations":["296:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"296:6:28"},"referencedDeclaration":2651,"src":"296:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3787,"mutability":"mutable","name":"useWrappers","nameLocation":"318:11:28","nodeType":"VariableDeclaration","scope":3792,"src":"313:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3786,"name":"bool","nodeType":"ElementaryTypeName","src":"313:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"295:35:28"},"returnParameters":{"id":3791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3790,"mutability":"mutable","name":"weightedRate","nameLocation":"362:12:28","nodeType":"VariableDeclaration","scope":3792,"src":"354:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3789,"name":"uint256","nodeType":"ElementaryTypeName","src":"354:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"353:22:28"},"scope":3793,"src":"274:102:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3794,"src":"125:254:28","usedErrors":[],"usedEvents":[]}],"src":"40:341:28"},"id":28},"contracts/interfaces/IBaluniV1Agent.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Agent.sol","exportedSymbols":{"IBaluniV1Agent":[3813]},"id":3814,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":3795,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:29"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Agent","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3813,"linearizedBaseContracts":[3813],"name":"IBaluniV1Agent","nameLocation":"77:14:29","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IBaluniV1Agent.Call","id":3802,"members":[{"constant":false,"id":3797,"mutability":"mutable","name":"to","nameLocation":"124:2:29","nodeType":"VariableDeclaration","scope":3802,"src":"116:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3796,"name":"address","nodeType":"ElementaryTypeName","src":"116:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3799,"mutability":"mutable","name":"value","nameLocation":"141:5:29","nodeType":"VariableDeclaration","scope":3802,"src":"133:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3798,"name":"uint256","nodeType":"ElementaryTypeName","src":"133:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3801,"mutability":"mutable","name":"data","nameLocation":"159:4:29","nodeType":"VariableDeclaration","scope":3802,"src":"153:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3800,"name":"bytes","nodeType":"ElementaryTypeName","src":"153:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Call","nameLocation":"104:4:29","nodeType":"StructDefinition","scope":3813,"src":"97:72:29","visibility":"public"},{"functionSelector":"eedc3c50","id":3812,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"184:7:29","nodeType":"FunctionDefinition","parameters":{"id":3810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3806,"mutability":"mutable","name":"calls","nameLocation":"206:5:29","nodeType":"VariableDeclaration","scope":3812,"src":"192:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_memory_ptr_$dyn_memory_ptr","typeString":"struct IBaluniV1Agent.Call[]"},"typeName":{"baseType":{"id":3804,"nodeType":"UserDefinedTypeName","pathNode":{"id":3803,"name":"Call","nameLocations":["192:4:29"],"nodeType":"IdentifierPath","referencedDeclaration":3802,"src":"192:4:29"},"referencedDeclaration":3802,"src":"192:4:29","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$3802_storage_ptr","typeString":"struct IBaluniV1Agent.Call"}},"id":3805,"nodeType":"ArrayTypeName","src":"192:6:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_storage_$dyn_storage_ptr","typeString":"struct IBaluniV1Agent.Call[]"}},"visibility":"internal"},{"constant":false,"id":3809,"mutability":"mutable","name":"tokensReturn","nameLocation":"230:12:29","nodeType":"VariableDeclaration","scope":3812,"src":"213:29:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3807,"name":"address","nodeType":"ElementaryTypeName","src":"213:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3808,"nodeType":"ArrayTypeName","src":"213:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"191:52:29"},"returnParameters":{"id":3811,"nodeType":"ParameterList","parameters":[],"src":"252:0:29"},"scope":3813,"src":"175:78:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3814,"src":"67:189:29","usedErrors":[],"usedEvents":[]}],"src":"40:218:29"},"id":29},"contracts/interfaces/IBaluniV1AgentFactory.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1AgentFactory.sol","exportedSymbols":{"IBaluniV1AgentFactory":[3835]},"id":3836,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":3815,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:30"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1AgentFactory","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3835,"linearizedBaseContracts":[3835],"name":"IBaluniV1AgentFactory","nameLocation":"77:21:30","nodeType":"ContractDefinition","nodes":[{"functionSelector":"27d54a92","id":3822,"implemented":false,"kind":"function","modifiers":[],"name":"getAgentAddress","nameLocation":"115:15:30","nodeType":"FunctionDefinition","parameters":{"id":3818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3817,"mutability":"mutable","name":"user","nameLocation":"139:4:30","nodeType":"VariableDeclaration","scope":3822,"src":"131:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3816,"name":"address","nodeType":"ElementaryTypeName","src":"131:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"130:14:30"},"returnParameters":{"id":3821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3822,"src":"168:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3819,"name":"address","nodeType":"ElementaryTypeName","src":"168:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"167:9:30"},"scope":3835,"src":"106:71:30","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9b76a5cd","id":3829,"implemented":false,"kind":"function","modifiers":[],"name":"getOrCreateAgent","nameLocation":"194:16:30","nodeType":"FunctionDefinition","parameters":{"id":3825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3824,"mutability":"mutable","name":"user","nameLocation":"219:4:30","nodeType":"VariableDeclaration","scope":3829,"src":"211:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3823,"name":"address","nodeType":"ElementaryTypeName","src":"211:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"210:14:30"},"returnParameters":{"id":3828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3829,"src":"243:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3826,"name":"address","nodeType":"ElementaryTypeName","src":"243:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"242:9:30"},"scope":3835,"src":"185:67:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5ab1bd53","id":3834,"implemented":false,"kind":"function","modifiers":[],"name":"getRegistry","nameLocation":"269:11:30","nodeType":"FunctionDefinition","parameters":{"id":3830,"nodeType":"ParameterList","parameters":[],"src":"280:2:30"},"returnParameters":{"id":3833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3834,"src":"306:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3831,"name":"address","nodeType":"ElementaryTypeName","src":"306:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"305:9:30"},"scope":3835,"src":"260:55:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3836,"src":"67:251:30","usedErrors":[],"usedEvents":[]}],"src":"40:280:30"},"id":30},"contracts/interfaces/IBaluniV1DCAVault.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1DCAVault.sol","exportedSymbols":{"IBaluniV1DCAVault":[3888]},"id":3889,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":3837,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:31"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1DCAVault","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3888,"linearizedBaseContracts":[3888],"name":"IBaluniV1DCAVault","nameLocation":"77:17:31","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cdf456e1","id":3842,"implemented":false,"kind":"function","modifiers":[],"name":"baseAsset","nameLocation":"111:9:31","nodeType":"FunctionDefinition","parameters":{"id":3838,"nodeType":"ParameterList","parameters":[],"src":"120:2:31"},"returnParameters":{"id":3841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3842,"src":"146:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3839,"name":"address","nodeType":"ElementaryTypeName","src":"146:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"145:9:31"},"scope":3888,"src":"102:53:31","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fdf262b7","id":3847,"implemented":false,"kind":"function","modifiers":[],"name":"quoteAsset","nameLocation":"170:10:31","nodeType":"FunctionDefinition","parameters":{"id":3843,"nodeType":"ParameterList","parameters":[],"src":"180:2:31"},"returnParameters":{"id":3846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3847,"src":"206:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3844,"name":"address","nodeType":"ElementaryTypeName","src":"206:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"205:9:31"},"scope":3888,"src":"161:54:31","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7b103999","id":3852,"implemented":false,"kind":"function","modifiers":[],"name":"registry","nameLocation":"230:8:31","nodeType":"FunctionDefinition","parameters":{"id":3848,"nodeType":"ParameterList","parameters":[],"src":"238:2:31"},"returnParameters":{"id":3851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3850,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3852,"src":"264:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3849,"name":"address","nodeType":"ElementaryTypeName","src":"264:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"263:9:31"},"scope":3888,"src":"221:52:31","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"36b77107","id":3857,"implemented":false,"kind":"function","modifiers":[],"name":"lastDeposit","nameLocation":"288:11:31","nodeType":"FunctionDefinition","parameters":{"id":3853,"nodeType":"ParameterList","parameters":[],"src":"299:2:31"},"returnParameters":{"id":3856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3857,"src":"325:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3854,"name":"uint256","nodeType":"ElementaryTypeName","src":"325:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"324:9:31"},"scope":3888,"src":"279:55:31","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":3864,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"349:7:31","nodeType":"FunctionDefinition","parameters":{"id":3862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3859,"mutability":"mutable","name":"amount","nameLocation":"365:6:31","nodeType":"VariableDeclaration","scope":3864,"src":"357:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3858,"name":"uint256","nodeType":"ElementaryTypeName","src":"357:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3861,"mutability":"mutable","name":"to","nameLocation":"381:2:31","nodeType":"VariableDeclaration","scope":3864,"src":"373:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3860,"name":"address","nodeType":"ElementaryTypeName","src":"373:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"356:28:31"},"returnParameters":{"id":3863,"nodeType":"ParameterList","parameters":[],"src":"393:0:31"},"scope":3888,"src":"340:54:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"00f714ce","id":3871,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"409:8:31","nodeType":"FunctionDefinition","parameters":{"id":3869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3866,"mutability":"mutable","name":"shares","nameLocation":"426:6:31","nodeType":"VariableDeclaration","scope":3871,"src":"418:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3865,"name":"uint256","nodeType":"ElementaryTypeName","src":"418:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3868,"mutability":"mutable","name":"to","nameLocation":"442:2:31","nodeType":"VariableDeclaration","scope":3871,"src":"434:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3867,"name":"address","nodeType":"ElementaryTypeName","src":"434:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"417:28:31"},"returnParameters":{"id":3870,"nodeType":"ParameterList","parameters":[],"src":"454:0:31"},"scope":3888,"src":"400:55:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8456cb59","id":3874,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"470:5:31","nodeType":"FunctionDefinition","parameters":{"id":3872,"nodeType":"ParameterList","parameters":[],"src":"475:2:31"},"returnParameters":{"id":3873,"nodeType":"ParameterList","parameters":[],"src":"486:0:31"},"scope":3888,"src":"461:26:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f4ba83a","id":3877,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"502:7:31","nodeType":"FunctionDefinition","parameters":{"id":3875,"nodeType":"ParameterList","parameters":[],"src":"509:2:31"},"returnParameters":{"id":3876,"nodeType":"ParameterList","parameters":[],"src":"520:0:31"},"scope":3888,"src":"493:28:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"295b9300","id":3882,"implemented":false,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"536:14:31","nodeType":"FunctionDefinition","parameters":{"id":3878,"nodeType":"ParameterList","parameters":[],"src":"550:2:31"},"returnParameters":{"id":3881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3882,"src":"576:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3879,"name":"uint256","nodeType":"ElementaryTypeName","src":"576:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"575:9:31"},"scope":3888,"src":"527:58:31","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e73faa2d","id":3887,"implemented":false,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"600:9:31","nodeType":"FunctionDefinition","parameters":{"id":3883,"nodeType":"ParameterList","parameters":[],"src":"609:2:31"},"returnParameters":{"id":3886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3887,"src":"635:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3884,"name":"uint256","nodeType":"ElementaryTypeName","src":"635:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"634:9:31"},"scope":3888,"src":"591:53:31","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3889,"src":"67:580:31","usedErrors":[],"usedEvents":[]}],"src":"40:609:31"},"id":31},"contracts/interfaces/IBaluniV1HyperUniProxy.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1HyperUniProxy.sol","exportedSymbols":{"IBaluniV1HyperUniProxy":[3924]},"id":3925,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":3890,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:32"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1HyperUniProxy","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3924,"linearizedBaseContracts":[3924],"name":"IBaluniV1HyperUniProxy","nameLocation":"75:22:32","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e6d7b876","id":3905,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"114:7:32","nodeType":"FunctionDefinition","parameters":{"id":3901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3892,"mutability":"mutable","name":"deposit0","nameLocation":"140:8:32","nodeType":"VariableDeclaration","scope":3905,"src":"132:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3891,"name":"uint256","nodeType":"ElementaryTypeName","src":"132:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3894,"mutability":"mutable","name":"deposit1","nameLocation":"167:8:32","nodeType":"VariableDeclaration","scope":3905,"src":"159:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3893,"name":"uint256","nodeType":"ElementaryTypeName","src":"159:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3896,"mutability":"mutable","name":"to","nameLocation":"194:2:32","nodeType":"VariableDeclaration","scope":3905,"src":"186:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3895,"name":"address","nodeType":"ElementaryTypeName","src":"186:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3898,"mutability":"mutable","name":"from","nameLocation":"215:4:32","nodeType":"VariableDeclaration","scope":3905,"src":"207:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3897,"name":"address","nodeType":"ElementaryTypeName","src":"207:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3900,"mutability":"mutable","name":"pos","nameLocation":"238:3:32","nodeType":"VariableDeclaration","scope":3905,"src":"230:11:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3899,"name":"address","nodeType":"ElementaryTypeName","src":"230:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"121:127:32"},"returnParameters":{"id":3904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3903,"mutability":"mutable","name":"shares","nameLocation":"275:6:32","nodeType":"VariableDeclaration","scope":3905,"src":"267:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3902,"name":"uint256","nodeType":"ElementaryTypeName","src":"267:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"266:16:32"},"scope":3924,"src":"105:178:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5ccfb71d","id":3918,"implemented":false,"kind":"function","modifiers":[],"name":"getDepositAmount","nameLocation":"300:16:32","nodeType":"FunctionDefinition","parameters":{"id":3912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3907,"mutability":"mutable","name":"pos","nameLocation":"335:3:32","nodeType":"VariableDeclaration","scope":3918,"src":"327:11:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3906,"name":"address","nodeType":"ElementaryTypeName","src":"327:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3909,"mutability":"mutable","name":"token","nameLocation":"357:5:32","nodeType":"VariableDeclaration","scope":3918,"src":"349:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3908,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3911,"mutability":"mutable","name":"_deposit","nameLocation":"381:8:32","nodeType":"VariableDeclaration","scope":3918,"src":"373:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3910,"name":"uint256","nodeType":"ElementaryTypeName","src":"373:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"316:80:32"},"returnParameters":{"id":3917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3914,"mutability":"mutable","name":"amountStart","nameLocation":"428:11:32","nodeType":"VariableDeclaration","scope":3918,"src":"420:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3913,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3916,"mutability":"mutable","name":"amountEnd","nameLocation":"449:9:32","nodeType":"VariableDeclaration","scope":3918,"src":"441:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3915,"name":"uint256","nodeType":"ElementaryTypeName","src":"441:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"419:40:32"},"scope":3924,"src":"291:169:32","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"14897194","id":3923,"implemented":false,"kind":"function","modifiers":[],"name":"clearance","nameLocation":"477:9:32","nodeType":"FunctionDefinition","parameters":{"id":3919,"nodeType":"ParameterList","parameters":[],"src":"486:2:32"},"returnParameters":{"id":3922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3921,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3923,"src":"507:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3920,"name":"address","nodeType":"ElementaryTypeName","src":"507:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"506:9:32"},"scope":3924,"src":"468:48:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3925,"src":"65:454:32","usedErrors":[],"usedEvents":[]}],"src":"40:481:32"},"id":32},"contracts/interfaces/IBaluniV1Hypervisor.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Hypervisor.sol","exportedSymbols":{"IBaluniV1Hypervisor":[4215],"IUniswapV3Pool":[3175],"IUniswapV3PoolActions":[3285],"IUniswapV3PoolDerivedState":[3316],"IUniswapV3PoolEvents":[3435],"IUniswapV3PoolImmutables":[3475],"IUniswapV3PoolOwnerActions":[3501],"IUniswapV3PoolState":[3609]},"id":4216,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":3926,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"42:23:33"},{"id":3927,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"67:19:33"},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol","file":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol","id":3928,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4216,"sourceUnit":3176,"src":"90:66:33","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Hypervisor","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4215,"linearizedBaseContracts":[4215],"name":"IBaluniV1Hypervisor","nameLocation":"170:19:33","nodeType":"ContractDefinition","nodes":[{"functionSelector":"8e3c92e4","id":3945,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"206:7:33","nodeType":"FunctionDefinition","parameters":{"id":3941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3945,"src":"214:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3929,"name":"uint256","nodeType":"ElementaryTypeName","src":"214:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3945,"src":"223:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3931,"name":"uint256","nodeType":"ElementaryTypeName","src":"223:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3945,"src":"232:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3933,"name":"address","nodeType":"ElementaryTypeName","src":"232:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3945,"src":"241:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3935,"name":"address","nodeType":"ElementaryTypeName","src":"241:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3940,"mutability":"mutable","name":"minIn","nameLocation":"268:5:33","nodeType":"VariableDeclaration","scope":3945,"src":"250:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":3937,"name":"uint256","nodeType":"ElementaryTypeName","src":"250:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3939,"length":{"hexValue":"34","id":3938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"258:1:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"250:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"213:61:33"},"returnParameters":{"id":3944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3945,"src":"293:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3942,"name":"uint256","nodeType":"ElementaryTypeName","src":"293:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"292:9:33"},"scope":4215,"src":"197:105:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a8559872","id":3962,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"319:8:33","nodeType":"FunctionDefinition","parameters":{"id":3956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3962,"src":"328:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3946,"name":"uint256","nodeType":"ElementaryTypeName","src":"328:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3949,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3962,"src":"337:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3948,"name":"address","nodeType":"ElementaryTypeName","src":"337:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3962,"src":"346:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3950,"name":"address","nodeType":"ElementaryTypeName","src":"346:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3962,"src":"355:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":3952,"name":"uint256","nodeType":"ElementaryTypeName","src":"355:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3954,"length":{"hexValue":"34","id":3953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"363:1:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"355:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"327:46:33"},"returnParameters":{"id":3961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3962,"src":"392:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3957,"name":"uint256","nodeType":"ElementaryTypeName","src":"392:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3962,"src":"401:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3959,"name":"uint256","nodeType":"ElementaryTypeName","src":"401:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"391:18:33"},"scope":4215,"src":"310:100:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f69e2046","id":3973,"implemented":false,"kind":"function","modifiers":[],"name":"compound","nameLocation":"427:8:33","nodeType":"FunctionDefinition","parameters":{"id":3963,"nodeType":"ParameterList","parameters":[],"src":"435:2:33"},"returnParameters":{"id":3972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3965,"mutability":"mutable","name":"baseToken0Owed","nameLocation":"482:14:33","nodeType":"VariableDeclaration","scope":3973,"src":"474:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3964,"name":"uint128","nodeType":"ElementaryTypeName","src":"474:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3967,"mutability":"mutable","name":"baseToken1Owed","nameLocation":"506:14:33","nodeType":"VariableDeclaration","scope":3973,"src":"498:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3966,"name":"uint128","nodeType":"ElementaryTypeName","src":"498:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3969,"mutability":"mutable","name":"limitToken0Owed","nameLocation":"530:15:33","nodeType":"VariableDeclaration","scope":3973,"src":"522:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3968,"name":"uint128","nodeType":"ElementaryTypeName","src":"522:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3971,"mutability":"mutable","name":"limitToken1Owed","nameLocation":"555:15:33","nodeType":"VariableDeclaration","scope":3973,"src":"547:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3970,"name":"uint128","nodeType":"ElementaryTypeName","src":"547:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"473:98:33"},"scope":4215,"src":"418:154:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"513ea884","id":3988,"implemented":false,"kind":"function","modifiers":[],"name":"compound","nameLocation":"589:8:33","nodeType":"FunctionDefinition","parameters":{"id":3978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3977,"mutability":"mutable","name":"inMin","nameLocation":"626:5:33","nodeType":"VariableDeclaration","scope":3988,"src":"608:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":3974,"name":"uint256","nodeType":"ElementaryTypeName","src":"608:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3976,"length":{"hexValue":"34","id":3975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"616:1:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"608:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"597:41:33"},"returnParameters":{"id":3987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3980,"mutability":"mutable","name":"baseToken0Owed","nameLocation":"683:14:33","nodeType":"VariableDeclaration","scope":3988,"src":"675:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3979,"name":"uint128","nodeType":"ElementaryTypeName","src":"675:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3982,"mutability":"mutable","name":"baseToken1Owed","nameLocation":"707:14:33","nodeType":"VariableDeclaration","scope":3988,"src":"699:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3981,"name":"uint128","nodeType":"ElementaryTypeName","src":"699:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3984,"mutability":"mutable","name":"limitToken0Owed","nameLocation":"731:15:33","nodeType":"VariableDeclaration","scope":3988,"src":"723:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3983,"name":"uint128","nodeType":"ElementaryTypeName","src":"723:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3986,"mutability":"mutable","name":"limitToken1Owed","nameLocation":"756:15:33","nodeType":"VariableDeclaration","scope":3988,"src":"748:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3985,"name":"uint128","nodeType":"ElementaryTypeName","src":"748:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"674:98:33"},"scope":4215,"src":"580:193:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"85919c5d","id":4009,"implemented":false,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"790:9:33","nodeType":"FunctionDefinition","parameters":{"id":4007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3990,"mutability":"mutable","name":"_baseLower","nameLocation":"816:10:33","nodeType":"VariableDeclaration","scope":4009,"src":"810:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3989,"name":"int24","nodeType":"ElementaryTypeName","src":"810:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3992,"mutability":"mutable","name":"_baseUpper","nameLocation":"843:10:33","nodeType":"VariableDeclaration","scope":4009,"src":"837:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3991,"name":"int24","nodeType":"ElementaryTypeName","src":"837:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3994,"mutability":"mutable","name":"_limitLower","nameLocation":"870:11:33","nodeType":"VariableDeclaration","scope":4009,"src":"864:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3993,"name":"int24","nodeType":"ElementaryTypeName","src":"864:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3996,"mutability":"mutable","name":"_limitUpper","nameLocation":"898:11:33","nodeType":"VariableDeclaration","scope":4009,"src":"892:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":3995,"name":"int24","nodeType":"ElementaryTypeName","src":"892:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":3998,"mutability":"mutable","name":"_feeRecipient","nameLocation":"928:13:33","nodeType":"VariableDeclaration","scope":4009,"src":"920:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3997,"name":"address","nodeType":"ElementaryTypeName","src":"920:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4002,"mutability":"mutable","name":"minIn","nameLocation":"970:5:33","nodeType":"VariableDeclaration","scope":4009,"src":"952:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":3999,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4001,"length":{"hexValue":"34","id":4000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"960:1:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"952:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"},{"constant":false,"id":4006,"mutability":"mutable","name":"outMin","nameLocation":"1004:6:33","nodeType":"VariableDeclaration","scope":4009,"src":"986:24:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":4003,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4005,"length":{"hexValue":"34","id":4004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"994:1:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"986:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"799:218:33"},"returnParameters":{"id":4008,"nodeType":"ParameterList","parameters":[],"src":"1026:0:33"},"scope":4215,"src":"781:246:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2527aa1d","id":4020,"implemented":false,"kind":"function","modifiers":[],"name":"addBaseLiquidity","nameLocation":"1044:16:33","nodeType":"FunctionDefinition","parameters":{"id":4018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4011,"mutability":"mutable","name":"amount0","nameLocation":"1069:7:33","nodeType":"VariableDeclaration","scope":4020,"src":"1061:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4010,"name":"uint256","nodeType":"ElementaryTypeName","src":"1061:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4013,"mutability":"mutable","name":"amount1","nameLocation":"1086:7:33","nodeType":"VariableDeclaration","scope":4020,"src":"1078:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4012,"name":"uint256","nodeType":"ElementaryTypeName","src":"1078:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4017,"mutability":"mutable","name":"minIn","nameLocation":"1113:5:33","nodeType":"VariableDeclaration","scope":4020,"src":"1095:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":4014,"name":"uint256","nodeType":"ElementaryTypeName","src":"1095:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4016,"length":{"hexValue":"32","id":4015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1103:1:33","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"1095:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"1060:59:33"},"returnParameters":{"id":4019,"nodeType":"ParameterList","parameters":[],"src":"1128:0:33"},"scope":4215,"src":"1035:94:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"49e8f1c2","id":4031,"implemented":false,"kind":"function","modifiers":[],"name":"addLimitLiquidity","nameLocation":"1146:17:33","nodeType":"FunctionDefinition","parameters":{"id":4029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4022,"mutability":"mutable","name":"amount0","nameLocation":"1172:7:33","nodeType":"VariableDeclaration","scope":4031,"src":"1164:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1164:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4024,"mutability":"mutable","name":"amount1","nameLocation":"1189:7:33","nodeType":"VariableDeclaration","scope":4031,"src":"1181:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4023,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4028,"mutability":"mutable","name":"minIn","nameLocation":"1216:5:33","nodeType":"VariableDeclaration","scope":4031,"src":"1198:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":4025,"name":"uint256","nodeType":"ElementaryTypeName","src":"1198:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4027,"length":{"hexValue":"32","id":4026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1206:1:33","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"1198:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"1163:59:33"},"returnParameters":{"id":4030,"nodeType":"ParameterList","parameters":[],"src":"1231:0:33"},"scope":4215,"src":"1137:95:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"95235656","id":4048,"implemented":false,"kind":"function","modifiers":[],"name":"pullLiquidity","nameLocation":"1249:13:33","nodeType":"FunctionDefinition","parameters":{"id":4042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4033,"mutability":"mutable","name":"tickLower","nameLocation":"1279:9:33","nodeType":"VariableDeclaration","scope":4048,"src":"1273:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4032,"name":"int24","nodeType":"ElementaryTypeName","src":"1273:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4035,"mutability":"mutable","name":"tickUpper","nameLocation":"1305:9:33","nodeType":"VariableDeclaration","scope":4048,"src":"1299:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4034,"name":"int24","nodeType":"ElementaryTypeName","src":"1299:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4037,"mutability":"mutable","name":"shares","nameLocation":"1333:6:33","nodeType":"VariableDeclaration","scope":4048,"src":"1325:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4036,"name":"uint128","nodeType":"ElementaryTypeName","src":"1325:7:33","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4041,"mutability":"mutable","name":"amountMin","nameLocation":"1368:9:33","nodeType":"VariableDeclaration","scope":4048,"src":"1350:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":4038,"name":"uint256","nodeType":"ElementaryTypeName","src":"1350:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4040,"length":{"hexValue":"32","id":4039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1358:1:33","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"1350:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"1262:122:33"},"returnParameters":{"id":4047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4044,"mutability":"mutable","name":"base0","nameLocation":"1411:5:33","nodeType":"VariableDeclaration","scope":4048,"src":"1403:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4043,"name":"uint256","nodeType":"ElementaryTypeName","src":"1403:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4046,"mutability":"mutable","name":"base1","nameLocation":"1426:5:33","nodeType":"VariableDeclaration","scope":4048,"src":"1418:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4045,"name":"uint256","nodeType":"ElementaryTypeName","src":"1418:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1402:30:33"},"scope":4215,"src":"1240:193:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1bead8f3","id":4065,"implemented":false,"kind":"function","modifiers":[],"name":"pullLiquidity","nameLocation":"1450:13:33","nodeType":"FunctionDefinition","parameters":{"id":4055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4050,"mutability":"mutable","name":"shares","nameLocation":"1482:6:33","nodeType":"VariableDeclaration","scope":4065,"src":"1474:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4049,"name":"uint256","nodeType":"ElementaryTypeName","src":"1474:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4054,"mutability":"mutable","name":"minAmounts","nameLocation":"1517:10:33","nodeType":"VariableDeclaration","scope":4065,"src":"1499:28:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":4051,"name":"uint256","nodeType":"ElementaryTypeName","src":"1499:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4053,"length":{"hexValue":"34","id":4052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1507:1:33","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"1499:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"1463:71:33"},"returnParameters":{"id":4064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4057,"mutability":"mutable","name":"base0","nameLocation":"1561:5:33","nodeType":"VariableDeclaration","scope":4065,"src":"1553:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4056,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4059,"mutability":"mutable","name":"base1","nameLocation":"1576:5:33","nodeType":"VariableDeclaration","scope":4065,"src":"1568:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4058,"name":"uint256","nodeType":"ElementaryTypeName","src":"1568:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4061,"mutability":"mutable","name":"limit0","nameLocation":"1591:6:33","nodeType":"VariableDeclaration","scope":4065,"src":"1583:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4060,"name":"uint256","nodeType":"ElementaryTypeName","src":"1583:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4063,"mutability":"mutable","name":"limit1","nameLocation":"1607:6:33","nodeType":"VariableDeclaration","scope":4065,"src":"1599:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4062,"name":"uint256","nodeType":"ElementaryTypeName","src":"1599:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1552:62:33"},"scope":4215,"src":"1441:174:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"63e96836","id":4080,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidity","nameLocation":"1632:12:33","nodeType":"FunctionDefinition","parameters":{"id":4078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4067,"mutability":"mutable","name":"tickLower","nameLocation":"1661:9:33","nodeType":"VariableDeclaration","scope":4080,"src":"1655:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4066,"name":"int24","nodeType":"ElementaryTypeName","src":"1655:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4069,"mutability":"mutable","name":"tickUpper","nameLocation":"1687:9:33","nodeType":"VariableDeclaration","scope":4080,"src":"1681:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4068,"name":"int24","nodeType":"ElementaryTypeName","src":"1681:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":4071,"mutability":"mutable","name":"amount0","nameLocation":"1715:7:33","nodeType":"VariableDeclaration","scope":4080,"src":"1707:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4070,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4073,"mutability":"mutable","name":"amount1","nameLocation":"1741:7:33","nodeType":"VariableDeclaration","scope":4080,"src":"1733:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4072,"name":"uint256","nodeType":"ElementaryTypeName","src":"1733:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4077,"mutability":"mutable","name":"inMin","nameLocation":"1777:5:33","nodeType":"VariableDeclaration","scope":4080,"src":"1759:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":4074,"name":"uint256","nodeType":"ElementaryTypeName","src":"1759:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4076,"length":{"hexValue":"32","id":4075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1767:1:33","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"1759:10:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"1644:145:33"},"returnParameters":{"id":4079,"nodeType":"ParameterList","parameters":[],"src":"1798:0:33"},"scope":4215,"src":"1623:176:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"16f0115b","id":4086,"implemented":false,"kind":"function","modifiers":[],"name":"pool","nameLocation":"1816:4:33","nodeType":"FunctionDefinition","parameters":{"id":4081,"nodeType":"ParameterList","parameters":[],"src":"1820:2:33"},"returnParameters":{"id":4085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4086,"src":"1846:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Pool_$3175","typeString":"contract IUniswapV3Pool"},"typeName":{"id":4083,"nodeType":"UserDefinedTypeName","pathNode":{"id":4082,"name":"IUniswapV3Pool","nameLocations":["1846:14:33"],"nodeType":"IdentifierPath","referencedDeclaration":3175,"src":"1846:14:33"},"referencedDeclaration":3175,"src":"1846:14:33","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Pool_$3175","typeString":"contract IUniswapV3Pool"}},"visibility":"internal"}],"src":"1845:16:33"},"scope":4215,"src":"1807:55:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"065e5360","id":4091,"implemented":false,"kind":"function","modifiers":[],"name":"currentTick","nameLocation":"1879:11:33","nodeType":"FunctionDefinition","parameters":{"id":4087,"nodeType":"ParameterList","parameters":[],"src":"1890:2:33"},"returnParameters":{"id":4090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4089,"mutability":"mutable","name":"tick","nameLocation":"1922:4:33","nodeType":"VariableDeclaration","scope":4091,"src":"1916:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4088,"name":"int24","nodeType":"ElementaryTypeName","src":"1916:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1915:12:33"},"scope":4215,"src":"1870:58:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d0c93a7c","id":4096,"implemented":false,"kind":"function","modifiers":[],"name":"tickSpacing","nameLocation":"1945:11:33","nodeType":"FunctionDefinition","parameters":{"id":4092,"nodeType":"ParameterList","parameters":[],"src":"1956:2:33"},"returnParameters":{"id":4095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4094,"mutability":"mutable","name":"spacing","nameLocation":"1988:7:33","nodeType":"VariableDeclaration","scope":4096,"src":"1982:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4093,"name":"int24","nodeType":"ElementaryTypeName","src":"1982:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"1981:15:33"},"scope":4215,"src":"1936:61:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fa082743","id":4101,"implemented":false,"kind":"function","modifiers":[],"name":"baseLower","nameLocation":"2014:9:33","nodeType":"FunctionDefinition","parameters":{"id":4097,"nodeType":"ParameterList","parameters":[],"src":"2023:2:33"},"returnParameters":{"id":4100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4099,"mutability":"mutable","name":"tick","nameLocation":"2055:4:33","nodeType":"VariableDeclaration","scope":4101,"src":"2049:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4098,"name":"int24","nodeType":"ElementaryTypeName","src":"2049:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2048:12:33"},"scope":4215,"src":"2005:56:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"888a9134","id":4106,"implemented":false,"kind":"function","modifiers":[],"name":"baseUpper","nameLocation":"2078:9:33","nodeType":"FunctionDefinition","parameters":{"id":4102,"nodeType":"ParameterList","parameters":[],"src":"2087:2:33"},"returnParameters":{"id":4105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4104,"mutability":"mutable","name":"tick","nameLocation":"2119:4:33","nodeType":"VariableDeclaration","scope":4106,"src":"2113:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4103,"name":"int24","nodeType":"ElementaryTypeName","src":"2113:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2112:12:33"},"scope":4215,"src":"2069:56:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"51e87af7","id":4111,"implemented":false,"kind":"function","modifiers":[],"name":"limitLower","nameLocation":"2142:10:33","nodeType":"FunctionDefinition","parameters":{"id":4107,"nodeType":"ParameterList","parameters":[],"src":"2152:2:33"},"returnParameters":{"id":4110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"tick","nameLocation":"2184:4:33","nodeType":"VariableDeclaration","scope":4111,"src":"2178:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4108,"name":"int24","nodeType":"ElementaryTypeName","src":"2178:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2177:12:33"},"scope":4215,"src":"2133:57:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f35bcac","id":4116,"implemented":false,"kind":"function","modifiers":[],"name":"limitUpper","nameLocation":"2207:10:33","nodeType":"FunctionDefinition","parameters":{"id":4112,"nodeType":"ParameterList","parameters":[],"src":"2217:2:33"},"returnParameters":{"id":4115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4114,"mutability":"mutable","name":"tick","nameLocation":"2249:4:33","nodeType":"VariableDeclaration","scope":4116,"src":"2243:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4113,"name":"int24","nodeType":"ElementaryTypeName","src":"2243:5:33","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2242:12:33"},"scope":4215,"src":"2198:57:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0dfe1681","id":4121,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nameLocation":"2272:6:33","nodeType":"FunctionDefinition","parameters":{"id":4117,"nodeType":"ParameterList","parameters":[],"src":"2278:2:33"},"returnParameters":{"id":4120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4121,"src":"2304:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4118,"name":"address","nodeType":"ElementaryTypeName","src":"2304:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2303:9:33"},"scope":4215,"src":"2263:50:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d21220a7","id":4126,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nameLocation":"2330:6:33","nodeType":"FunctionDefinition","parameters":{"id":4122,"nodeType":"ParameterList","parameters":[],"src":"2336:2:33"},"returnParameters":{"id":4125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4126,"src":"2362:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4123,"name":"address","nodeType":"ElementaryTypeName","src":"2362:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2361:9:33"},"scope":4215,"src":"2321:50:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"648cab85","id":4131,"implemented":false,"kind":"function","modifiers":[],"name":"deposit0Max","nameLocation":"2388:11:33","nodeType":"FunctionDefinition","parameters":{"id":4127,"nodeType":"ParameterList","parameters":[],"src":"2399:2:33"},"returnParameters":{"id":4130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4131,"src":"2425:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4128,"name":"uint256","nodeType":"ElementaryTypeName","src":"2425:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2424:9:33"},"scope":4215,"src":"2379:55:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4d461fbb","id":4136,"implemented":false,"kind":"function","modifiers":[],"name":"deposit1Max","nameLocation":"2451:11:33","nodeType":"FunctionDefinition","parameters":{"id":4132,"nodeType":"ParameterList","parameters":[],"src":"2462:2:33"},"returnParameters":{"id":4135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4136,"src":"2488:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4133,"name":"uint256","nodeType":"ElementaryTypeName","src":"2488:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2487:9:33"},"scope":4215,"src":"2442:55:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":4143,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2514:9:33","nodeType":"FunctionDefinition","parameters":{"id":4139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4138,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4143,"src":"2524:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4137,"name":"address","nodeType":"ElementaryTypeName","src":"2524:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2523:9:33"},"returnParameters":{"id":4142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4143,"src":"2556:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4140,"name":"uint256","nodeType":"ElementaryTypeName","src":"2556:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2555:9:33"},"scope":4215,"src":"2505:60:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":4152,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2582:7:33","nodeType":"FunctionDefinition","parameters":{"id":4148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4152,"src":"2590:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4144,"name":"address","nodeType":"ElementaryTypeName","src":"2590:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4152,"src":"2599:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4146,"name":"uint256","nodeType":"ElementaryTypeName","src":"2599:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2589:18:33"},"returnParameters":{"id":4151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4152,"src":"2626:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4149,"name":"bool","nodeType":"ElementaryTypeName","src":"2626:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2625:6:33"},"scope":4215,"src":"2573:59:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":4163,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2649:12:33","nodeType":"FunctionDefinition","parameters":{"id":4159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4163,"src":"2662:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4153,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4163,"src":"2671:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4155,"name":"address","nodeType":"ElementaryTypeName","src":"2671:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4163,"src":"2680:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4157,"name":"uint256","nodeType":"ElementaryTypeName","src":"2680:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2661:27:33"},"returnParameters":{"id":4162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4163,"src":"2707:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4160,"name":"bool","nodeType":"ElementaryTypeName","src":"2707:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2706:6:33"},"scope":4215,"src":"2640:73:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":4172,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"2730:8:33","nodeType":"FunctionDefinition","parameters":{"id":4168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4172,"src":"2739:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4164,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4172,"src":"2748:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4166,"name":"uint256","nodeType":"ElementaryTypeName","src":"2748:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2738:18:33"},"returnParameters":{"id":4171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4172,"src":"2775:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4169,"name":"bool","nodeType":"ElementaryTypeName","src":"2775:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2774:6:33"},"scope":4215,"src":"2721:60:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c4a7761e","id":4179,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalAmounts","nameLocation":"2798:15:33","nodeType":"FunctionDefinition","parameters":{"id":4173,"nodeType":"ParameterList","parameters":[],"src":"2813:2:33"},"returnParameters":{"id":4178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4175,"mutability":"mutable","name":"total0","nameLocation":"2847:6:33","nodeType":"VariableDeclaration","scope":4179,"src":"2839:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4174,"name":"uint256","nodeType":"ElementaryTypeName","src":"2839:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4177,"mutability":"mutable","name":"total1","nameLocation":"2863:6:33","nodeType":"VariableDeclaration","scope":4179,"src":"2855:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4176,"name":"uint256","nodeType":"ElementaryTypeName","src":"2855:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2838:32:33"},"scope":4215,"src":"2789:82:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d2eabcfc","id":4188,"implemented":false,"kind":"function","modifiers":[],"name":"getBasePosition","nameLocation":"2888:15:33","nodeType":"FunctionDefinition","parameters":{"id":4180,"nodeType":"ParameterList","parameters":[],"src":"2903:2:33"},"returnParameters":{"id":4187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4182,"mutability":"mutable","name":"liquidity","nameLocation":"2937:9:33","nodeType":"VariableDeclaration","scope":4188,"src":"2929:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4181,"name":"uint256","nodeType":"ElementaryTypeName","src":"2929:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4184,"mutability":"mutable","name":"total0","nameLocation":"2956:6:33","nodeType":"VariableDeclaration","scope":4188,"src":"2948:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4183,"name":"uint256","nodeType":"ElementaryTypeName","src":"2948:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4186,"mutability":"mutable","name":"total1","nameLocation":"2972:6:33","nodeType":"VariableDeclaration","scope":4188,"src":"2964:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4185,"name":"uint256","nodeType":"ElementaryTypeName","src":"2964:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2928:51:33"},"scope":4215,"src":"2879:101:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":4193,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2997:11:33","nodeType":"FunctionDefinition","parameters":{"id":4189,"nodeType":"ParameterList","parameters":[],"src":"3008:2:33"},"returnParameters":{"id":4192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4193,"src":"3034:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4190,"name":"uint256","nodeType":"ElementaryTypeName","src":"3034:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3033:9:33"},"scope":4215,"src":"2988:55:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"854cff2f","id":4198,"implemented":false,"kind":"function","modifiers":[],"name":"setWhitelist","nameLocation":"3060:12:33","nodeType":"FunctionDefinition","parameters":{"id":4196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4195,"mutability":"mutable","name":"_address","nameLocation":"3081:8:33","nodeType":"VariableDeclaration","scope":4198,"src":"3073:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4194,"name":"address","nodeType":"ElementaryTypeName","src":"3073:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3072:18:33"},"returnParameters":{"id":4197,"nodeType":"ParameterList","parameters":[],"src":"3099:0:33"},"scope":4215,"src":"3051:49:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cb122a09","id":4203,"implemented":false,"kind":"function","modifiers":[],"name":"setFee","nameLocation":"3117:6:33","nodeType":"FunctionDefinition","parameters":{"id":4201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4200,"mutability":"mutable","name":"newFee","nameLocation":"3130:6:33","nodeType":"VariableDeclaration","scope":4203,"src":"3124:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4199,"name":"uint8","nodeType":"ElementaryTypeName","src":"3124:5:33","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3123:14:33"},"returnParameters":{"id":4202,"nodeType":"ParameterList","parameters":[],"src":"3146:0:33"},"scope":4215,"src":"3108:39:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c5241e29","id":4206,"implemented":false,"kind":"function","modifiers":[],"name":"removeWhitelisted","nameLocation":"3164:17:33","nodeType":"FunctionDefinition","parameters":{"id":4204,"nodeType":"ParameterList","parameters":[],"src":"3181:2:33"},"returnParameters":{"id":4205,"nodeType":"ParameterList","parameters":[],"src":"3192:0:33"},"scope":4215,"src":"3155:38:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f2fde38b","id":4211,"implemented":false,"kind":"function","modifiers":[],"name":"transferOwnership","nameLocation":"3210:17:33","nodeType":"FunctionDefinition","parameters":{"id":4209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4208,"mutability":"mutable","name":"newOwner","nameLocation":"3236:8:33","nodeType":"VariableDeclaration","scope":4211,"src":"3228:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4207,"name":"address","nodeType":"ElementaryTypeName","src":"3228:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3227:18:33"},"returnParameters":{"id":4210,"nodeType":"ParameterList","parameters":[],"src":"3254:0:33"},"scope":4215,"src":"3201:54:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b1a3d533","id":4214,"implemented":false,"kind":"function","modifiers":[],"name":"toggleDirectDeposit","nameLocation":"3272:19:33","nodeType":"FunctionDefinition","parameters":{"id":4212,"nodeType":"ParameterList","parameters":[],"src":"3291:2:33"},"returnParameters":{"id":4213,"nodeType":"ParameterList","parameters":[],"src":"3302:0:33"},"scope":4215,"src":"3263:40:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4216,"src":"160:3146:33","usedErrors":[],"usedEvents":[]}],"src":"42:3266:33"},"id":33},"contracts/interfaces/IBaluniV1Oracle.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","exportedSymbols":{"IBaluniV1Oracle":[4240]},"id":4241,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":4217,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:34"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Oracle","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4240,"linearizedBaseContracts":[4240],"name":"IBaluniV1Oracle","nameLocation":"77:15:34","nodeType":"ContractDefinition","nodes":[{"functionSelector":"248391ff","id":4228,"implemented":false,"kind":"function","modifiers":[],"name":"convert","nameLocation":"109:7:34","nodeType":"FunctionDefinition","parameters":{"id":4224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4219,"mutability":"mutable","name":"fromToken","nameLocation":"125:9:34","nodeType":"VariableDeclaration","scope":4228,"src":"117:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4218,"name":"address","nodeType":"ElementaryTypeName","src":"117:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4221,"mutability":"mutable","name":"toToken","nameLocation":"144:7:34","nodeType":"VariableDeclaration","scope":4228,"src":"136:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4220,"name":"address","nodeType":"ElementaryTypeName","src":"136:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4223,"mutability":"mutable","name":"amount","nameLocation":"161:6:34","nodeType":"VariableDeclaration","scope":4228,"src":"153:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4222,"name":"uint256","nodeType":"ElementaryTypeName","src":"153:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"116:52:34"},"returnParameters":{"id":4227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4226,"mutability":"mutable","name":"valuation","nameLocation":"200:9:34","nodeType":"VariableDeclaration","scope":4228,"src":"192:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4225,"name":"uint256","nodeType":"ElementaryTypeName","src":"192:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"191:19:34"},"scope":4240,"src":"100:111:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b27b5e75","id":4239,"implemented":false,"kind":"function","modifiers":[],"name":"convertScaled","nameLocation":"228:13:34","nodeType":"FunctionDefinition","parameters":{"id":4235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4230,"mutability":"mutable","name":"fromToken","nameLocation":"260:9:34","nodeType":"VariableDeclaration","scope":4239,"src":"252:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4229,"name":"address","nodeType":"ElementaryTypeName","src":"252:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4232,"mutability":"mutable","name":"toToken","nameLocation":"288:7:34","nodeType":"VariableDeclaration","scope":4239,"src":"280:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4231,"name":"address","nodeType":"ElementaryTypeName","src":"280:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4234,"mutability":"mutable","name":"amount","nameLocation":"314:6:34","nodeType":"VariableDeclaration","scope":4239,"src":"306:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4233,"name":"uint256","nodeType":"ElementaryTypeName","src":"306:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"241:86:34"},"returnParameters":{"id":4238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4237,"mutability":"mutable","name":"valuation","nameLocation":"359:9:34","nodeType":"VariableDeclaration","scope":4239,"src":"351:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4236,"name":"uint256","nodeType":"ElementaryTypeName","src":"351:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"350:19:34"},"scope":4240,"src":"219:151:34","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4241,"src":"67:306:34","usedErrors":[],"usedEvents":[]}],"src":"40:335:34"},"id":34},"contracts/interfaces/IBaluniV1Pool.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Pool.sol","exportedSymbols":{"IBaluniV1Pool":[4457]},"id":4458,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":4242,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:35"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Pool","contractDependencies":[],"contractKind":"interface","documentation":{"id":4243,"nodeType":"StructuredDocumentation","src":"67:82:35","text":" @title IBaluniV1Pool\n @dev Interface for the BaluniV1Pool contract"},"fullyImplemented":false,"id":4457,"linearizedBaseContracts":[4457],"name":"IBaluniV1Pool","nameLocation":"161:13:35","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IBaluniV1Pool.AssetInfo","id":4252,"members":[{"constant":false,"id":4245,"mutability":"mutable","name":"asset","nameLocation":"218:5:35","nodeType":"VariableDeclaration","scope":4252,"src":"210:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4244,"name":"address","nodeType":"ElementaryTypeName","src":"210:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4247,"mutability":"mutable","name":"weight","nameLocation":"242:6:35","nodeType":"VariableDeclaration","scope":4252,"src":"234:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4246,"name":"uint256","nodeType":"ElementaryTypeName","src":"234:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4249,"mutability":"mutable","name":"slippage","nameLocation":"267:8:35","nodeType":"VariableDeclaration","scope":4252,"src":"259:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4248,"name":"uint256","nodeType":"ElementaryTypeName","src":"259:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4251,"mutability":"mutable","name":"reserve","nameLocation":"294:7:35","nodeType":"VariableDeclaration","scope":4252,"src":"286:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4250,"name":"uint256","nodeType":"ElementaryTypeName","src":"286:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AssetInfo","nameLocation":"189:9:35","nodeType":"StructDefinition","scope":4457,"src":"182:127:35","visibility":"public"},{"anonymous":false,"eventSelector":"a95ad530009c6f929555e70a66aadbeae7231e45756c5b028ca77fbaa376e73e","id":4259,"name":"WeightsRebalanced","nameLocation":"323:17:35","nodeType":"EventDefinition","parameters":{"id":4258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4254,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"357:4:35","nodeType":"VariableDeclaration","scope":4259,"src":"341:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4253,"name":"address","nodeType":"ElementaryTypeName","src":"341:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4257,"indexed":false,"mutability":"mutable","name":"amountsToAdd","nameLocation":"373:12:35","nodeType":"VariableDeclaration","scope":4259,"src":"363:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4255,"name":"uint256","nodeType":"ElementaryTypeName","src":"363:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4256,"nodeType":"ArrayTypeName","src":"363:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"340:46:35"},"src":"317:70:35"},{"anonymous":false,"eventSelector":"cd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062","id":4271,"name":"Swap","nameLocation":"399:4:35","nodeType":"EventDefinition","parameters":{"id":4270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4261,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"420:4:35","nodeType":"VariableDeclaration","scope":4271,"src":"404:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4260,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4263,"indexed":false,"mutability":"mutable","name":"fromToken","nameLocation":"434:9:35","nodeType":"VariableDeclaration","scope":4271,"src":"426:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4262,"name":"address","nodeType":"ElementaryTypeName","src":"426:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4265,"indexed":false,"mutability":"mutable","name":"toToken","nameLocation":"453:7:35","nodeType":"VariableDeclaration","scope":4271,"src":"445:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4264,"name":"address","nodeType":"ElementaryTypeName","src":"445:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4267,"indexed":false,"mutability":"mutable","name":"amountIn","nameLocation":"470:8:35","nodeType":"VariableDeclaration","scope":4271,"src":"462:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4266,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4269,"indexed":false,"mutability":"mutable","name":"amountOut","nameLocation":"488:9:35","nodeType":"VariableDeclaration","scope":4271,"src":"480:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4268,"name":"uint256","nodeType":"ElementaryTypeName","src":"480:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"403:95:35"},"src":"393:106:35"},{"anonymous":false,"eventSelector":"884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364","id":4277,"name":"Withdraw","nameLocation":"511:8:35","nodeType":"EventDefinition","parameters":{"id":4276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4273,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"536:4:35","nodeType":"VariableDeclaration","scope":4277,"src":"520:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4272,"name":"address","nodeType":"ElementaryTypeName","src":"520:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4275,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"550:6:35","nodeType":"VariableDeclaration","scope":4277,"src":"542:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4274,"name":"uint256","nodeType":"ElementaryTypeName","src":"542:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"519:38:35"},"src":"505:53:35"},{"anonymous":false,"eventSelector":"e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c","id":4283,"name":"Deposit","nameLocation":"570:7:35","nodeType":"EventDefinition","parameters":{"id":4282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4279,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"594:4:35","nodeType":"VariableDeclaration","scope":4283,"src":"578:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4278,"name":"address","nodeType":"ElementaryTypeName","src":"578:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4281,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"608:6:35","nodeType":"VariableDeclaration","scope":4283,"src":"600:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4280,"name":"uint256","nodeType":"ElementaryTypeName","src":"600:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"577:38:35"},"src":"564:52:35"},{"anonymous":false,"eventSelector":"279b343370f587af7fb675ae7c8578e9c8abcc373236ad02c501a4771fe7a7b8","id":4290,"name":"RebalancePerformed","nameLocation":"628:18:35","nodeType":"EventDefinition","parameters":{"id":4289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4285,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"663:4:35","nodeType":"VariableDeclaration","scope":4290,"src":"647:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4284,"name":"address","nodeType":"ElementaryTypeName","src":"647:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4288,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"679:6:35","nodeType":"VariableDeclaration","scope":4290,"src":"669:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4286,"name":"address","nodeType":"ElementaryTypeName","src":"669:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4287,"nodeType":"ArrayTypeName","src":"669:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"646:40:35"},"src":"622:65:35"},{"functionSelector":"8de30f30","id":4298,"implemented":false,"kind":"function","modifiers":[],"name":"rebalanceAndDeposit","nameLocation":"704:19:35","nodeType":"FunctionDefinition","parameters":{"id":4293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4292,"mutability":"mutable","name":"receiver","nameLocation":"732:8:35","nodeType":"VariableDeclaration","scope":4298,"src":"724:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4291,"name":"address","nodeType":"ElementaryTypeName","src":"724:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"723:18:35"},"returnParameters":{"id":4297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4298,"src":"760:16:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4294,"name":"uint256","nodeType":"ElementaryTypeName","src":"760:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4295,"nodeType":"ArrayTypeName","src":"760:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"759:18:35"},"scope":4457,"src":"695:83:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9908fc8b","id":4317,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nameLocation":"795:4:35","nodeType":"FunctionDefinition","parameters":{"id":4311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4300,"mutability":"mutable","name":"fromToken","nameLocation":"818:9:35","nodeType":"VariableDeclaration","scope":4317,"src":"810:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4299,"name":"address","nodeType":"ElementaryTypeName","src":"810:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4302,"mutability":"mutable","name":"toToken","nameLocation":"846:7:35","nodeType":"VariableDeclaration","scope":4317,"src":"838:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4301,"name":"address","nodeType":"ElementaryTypeName","src":"838:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4304,"mutability":"mutable","name":"amount","nameLocation":"872:6:35","nodeType":"VariableDeclaration","scope":4317,"src":"864:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4303,"name":"uint256","nodeType":"ElementaryTypeName","src":"864:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4306,"mutability":"mutable","name":"minAmount","nameLocation":"897:9:35","nodeType":"VariableDeclaration","scope":4317,"src":"889:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4305,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4308,"mutability":"mutable","name":"receiver","nameLocation":"925:8:35","nodeType":"VariableDeclaration","scope":4317,"src":"917:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4307,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4310,"mutability":"mutable","name":"deadline","nameLocation":"952:8:35","nodeType":"VariableDeclaration","scope":4317,"src":"944:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4309,"name":"uint256","nodeType":"ElementaryTypeName","src":"944:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"799:168:35"},"returnParameters":{"id":4316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4313,"mutability":"mutable","name":"amountOut","nameLocation":"994:9:35","nodeType":"VariableDeclaration","scope":4317,"src":"986:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4312,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4315,"mutability":"mutable","name":"fee","nameLocation":"1013:3:35","nodeType":"VariableDeclaration","scope":4317,"src":"1005:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4314,"name":"uint256","nodeType":"ElementaryTypeName","src":"1005:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"985:32:35"},"scope":4457,"src":"786:232:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"43c2e2f5","id":4328,"implemented":false,"kind":"function","modifiers":[],"name":"quotePotentialSwap","nameLocation":"1035:18:35","nodeType":"FunctionDefinition","parameters":{"id":4324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4319,"mutability":"mutable","name":"fromToken","nameLocation":"1062:9:35","nodeType":"VariableDeclaration","scope":4328,"src":"1054:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4318,"name":"address","nodeType":"ElementaryTypeName","src":"1054:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4321,"mutability":"mutable","name":"toToken","nameLocation":"1081:7:35","nodeType":"VariableDeclaration","scope":4328,"src":"1073:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4320,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4323,"mutability":"mutable","name":"amount","nameLocation":"1098:6:35","nodeType":"VariableDeclaration","scope":4328,"src":"1090:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4322,"name":"uint256","nodeType":"ElementaryTypeName","src":"1090:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1053:52:35"},"returnParameters":{"id":4327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4326,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4328,"src":"1129:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4325,"name":"uint256","nodeType":"ElementaryTypeName","src":"1129:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1128:9:35"},"scope":4457,"src":"1026:112:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"12899068","id":4335,"implemented":false,"kind":"function","modifiers":[],"name":"getSlippage","nameLocation":"1155:11:35","nodeType":"FunctionDefinition","parameters":{"id":4331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4330,"mutability":"mutable","name":"token","nameLocation":"1175:5:35","nodeType":"VariableDeclaration","scope":4335,"src":"1167:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4329,"name":"address","nodeType":"ElementaryTypeName","src":"1167:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1166:15:35"},"returnParameters":{"id":4334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4335,"src":"1205:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4332,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1204:9:35"},"scope":4457,"src":"1146:68:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"250aa683","id":4342,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenWeight","nameLocation":"1231:14:35","nodeType":"FunctionDefinition","parameters":{"id":4338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4337,"mutability":"mutable","name":"token","nameLocation":"1254:5:35","nodeType":"VariableDeclaration","scope":4342,"src":"1246:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4336,"name":"address","nodeType":"ElementaryTypeName","src":"1246:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1245:15:35"},"returnParameters":{"id":4341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4340,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4342,"src":"1284:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4339,"name":"uint256","nodeType":"ElementaryTypeName","src":"1284:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1283:9:35"},"scope":4457,"src":"1222:71:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"89b3179b","id":4349,"implemented":false,"kind":"function","modifiers":[],"name":"getDeviationForToken","nameLocation":"1310:20:35","nodeType":"FunctionDefinition","parameters":{"id":4345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4344,"mutability":"mutable","name":"token","nameLocation":"1339:5:35","nodeType":"VariableDeclaration","scope":4349,"src":"1331:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4343,"name":"address","nodeType":"ElementaryTypeName","src":"1331:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1330:15:35"},"returnParameters":{"id":4348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4349,"src":"1369:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4346,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1368:9:35"},"scope":4457,"src":"1301:77:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7ff1c179","id":4355,"implemented":false,"kind":"function","modifiers":[],"name":"getSlippageParams","nameLocation":"1395:17:35","nodeType":"FunctionDefinition","parameters":{"id":4350,"nodeType":"ParameterList","parameters":[],"src":"1412:2:35"},"returnParameters":{"id":4354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4355,"src":"1438:16:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4351,"name":"uint256","nodeType":"ElementaryTypeName","src":"1438:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4352,"nodeType":"ArrayTypeName","src":"1438:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1437:18:35"},"scope":4457,"src":"1386:70:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b3bf9d32","id":4367,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"1473:7:35","nodeType":"FunctionDefinition","parameters":{"id":4363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4357,"mutability":"mutable","name":"to","nameLocation":"1489:2:35","nodeType":"VariableDeclaration","scope":4367,"src":"1481:10:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4356,"name":"address","nodeType":"ElementaryTypeName","src":"1481:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4360,"mutability":"mutable","name":"amounts","nameLocation":"1510:7:35","nodeType":"VariableDeclaration","scope":4367,"src":"1493:24:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4358,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4359,"nodeType":"ArrayTypeName","src":"1493:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4362,"mutability":"mutable","name":"deadline","nameLocation":"1527:8:35","nodeType":"VariableDeclaration","scope":4367,"src":"1519:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4361,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:56:35"},"returnParameters":{"id":4366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4365,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4367,"src":"1555:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4364,"name":"uint256","nodeType":"ElementaryTypeName","src":"1555:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1554:9:35"},"scope":4457,"src":"1464:100:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e63697c8","id":4378,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"1581:8:35","nodeType":"FunctionDefinition","parameters":{"id":4374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4369,"mutability":"mutable","name":"share","nameLocation":"1598:5:35","nodeType":"VariableDeclaration","scope":4378,"src":"1590:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4368,"name":"uint256","nodeType":"ElementaryTypeName","src":"1590:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4371,"mutability":"mutable","name":"to","nameLocation":"1613:2:35","nodeType":"VariableDeclaration","scope":4378,"src":"1605:10:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4370,"name":"address","nodeType":"ElementaryTypeName","src":"1605:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4373,"mutability":"mutable","name":"deadline","nameLocation":"1625:8:35","nodeType":"VariableDeclaration","scope":4378,"src":"1617:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4372,"name":"uint256","nodeType":"ElementaryTypeName","src":"1617:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1589:45:35"},"returnParameters":{"id":4377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4378,"src":"1653:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4375,"name":"uint256","nodeType":"ElementaryTypeName","src":"1653:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1652:9:35"},"scope":4457,"src":"1572:90:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4aa06652","id":4389,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountOut","nameLocation":"1679:12:35","nodeType":"FunctionDefinition","parameters":{"id":4385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4380,"mutability":"mutable","name":"fromToken","nameLocation":"1700:9:35","nodeType":"VariableDeclaration","scope":4389,"src":"1692:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4379,"name":"address","nodeType":"ElementaryTypeName","src":"1692:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4382,"mutability":"mutable","name":"toToken","nameLocation":"1719:7:35","nodeType":"VariableDeclaration","scope":4389,"src":"1711:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4381,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4384,"mutability":"mutable","name":"amount","nameLocation":"1736:6:35","nodeType":"VariableDeclaration","scope":4389,"src":"1728:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4383,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1691:52:35"},"returnParameters":{"id":4388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4387,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4389,"src":"1767:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4386,"name":"uint256","nodeType":"ElementaryTypeName","src":"1767:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1766:9:35"},"scope":4457,"src":"1670:106:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7d7c2a1c","id":4392,"implemented":false,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"1793:9:35","nodeType":"FunctionDefinition","parameters":{"id":4390,"nodeType":"ParameterList","parameters":[],"src":"1802:2:35"},"returnParameters":{"id":4391,"nodeType":"ParameterList","parameters":[],"src":"1813:0:35"},"scope":4457,"src":"1784:30:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b7110e13","id":4401,"implemented":false,"kind":"function","modifiers":[],"name":"getDeviations","nameLocation":"1831:13:35","nodeType":"FunctionDefinition","parameters":{"id":4393,"nodeType":"ParameterList","parameters":[],"src":"1844:2:35"},"returnParameters":{"id":4400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4396,"mutability":"mutable","name":"directions","nameLocation":"1884:10:35","nodeType":"VariableDeclaration","scope":4401,"src":"1870:24:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":4394,"name":"bool","nodeType":"ElementaryTypeName","src":"1870:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4395,"nodeType":"ArrayTypeName","src":"1870:6:35","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"},{"constant":false,"id":4399,"mutability":"mutable","name":"deviations","nameLocation":"1913:10:35","nodeType":"VariableDeclaration","scope":4401,"src":"1896:27:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4397,"name":"uint256","nodeType":"ElementaryTypeName","src":"1896:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4398,"nodeType":"ArrayTypeName","src":"1896:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1869:55:35"},"scope":4457,"src":"1822:103:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"cf8fa764","id":4408,"implemented":false,"kind":"function","modifiers":[],"name":"assetLiquidity","nameLocation":"1942:14:35","nodeType":"FunctionDefinition","parameters":{"id":4404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4403,"mutability":"mutable","name":"assetIndex","nameLocation":"1965:10:35","nodeType":"VariableDeclaration","scope":4408,"src":"1957:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4402,"name":"uint256","nodeType":"ElementaryTypeName","src":"1957:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1956:20:35"},"returnParameters":{"id":4407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4408,"src":"2000:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4405,"name":"uint256","nodeType":"ElementaryTypeName","src":"2000:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1999:9:35"},"scope":4457,"src":"1933:76:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"295b9300","id":4416,"implemented":false,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"2026:14:35","nodeType":"FunctionDefinition","parameters":{"id":4409,"nodeType":"ParameterList","parameters":[],"src":"2040:2:35"},"returnParameters":{"id":4415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4411,"mutability":"mutable","name":"totalVal","nameLocation":"2074:8:35","nodeType":"VariableDeclaration","scope":4416,"src":"2066:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4410,"name":"uint256","nodeType":"ElementaryTypeName","src":"2066:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4414,"mutability":"mutable","name":"valuations","nameLocation":"2101:10:35","nodeType":"VariableDeclaration","scope":4416,"src":"2084:27:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4412,"name":"uint256","nodeType":"ElementaryTypeName","src":"2084:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4413,"nodeType":"ArrayTypeName","src":"2084:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2065:47:35"},"scope":4457,"src":"2017:96:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1a686502","id":4421,"implemented":false,"kind":"function","modifiers":[],"name":"liquidity","nameLocation":"2130:9:35","nodeType":"FunctionDefinition","parameters":{"id":4417,"nodeType":"ParameterList","parameters":[],"src":"2139:2:35"},"returnParameters":{"id":4420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4421,"src":"2165:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4418,"name":"uint256","nodeType":"ElementaryTypeName","src":"2165:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2164:9:35"},"scope":4457,"src":"2121:53:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e73faa2d","id":4426,"implemented":false,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"2191:9:35","nodeType":"FunctionDefinition","parameters":{"id":4422,"nodeType":"ParameterList","parameters":[],"src":"2200:2:35"},"returnParameters":{"id":4425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4424,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4426,"src":"2226:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4423,"name":"uint256","nodeType":"ElementaryTypeName","src":"2226:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2225:9:35"},"scope":4457,"src":"2182:53:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0902f1ac","id":4432,"implemented":false,"kind":"function","modifiers":[],"name":"getReserves","nameLocation":"2252:11:35","nodeType":"FunctionDefinition","parameters":{"id":4427,"nodeType":"ParameterList","parameters":[],"src":"2263:2:35"},"returnParameters":{"id":4431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4430,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4432,"src":"2289:16:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4428,"name":"uint256","nodeType":"ElementaryTypeName","src":"2289:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4429,"nodeType":"ArrayTypeName","src":"2289:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2288:18:35"},"scope":4457,"src":"2243:64:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b2b55d70","id":4439,"implemented":false,"kind":"function","modifiers":[],"name":"getAssetReserve","nameLocation":"2324:15:35","nodeType":"FunctionDefinition","parameters":{"id":4435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4434,"mutability":"mutable","name":"asset","nameLocation":"2348:5:35","nodeType":"VariableDeclaration","scope":4439,"src":"2340:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4433,"name":"address","nodeType":"ElementaryTypeName","src":"2340:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2339:15:35"},"returnParameters":{"id":4438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4439,"src":"2378:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4436,"name":"uint256","nodeType":"ElementaryTypeName","src":"2378:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2377:9:35"},"scope":4457,"src":"2315:72:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"67e4ac2c","id":4445,"implemented":false,"kind":"function","modifiers":[],"name":"getAssets","nameLocation":"2404:9:35","nodeType":"FunctionDefinition","parameters":{"id":4440,"nodeType":"ParameterList","parameters":[],"src":"2413:2:35"},"returnParameters":{"id":4444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4443,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4445,"src":"2439:16:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4441,"name":"address","nodeType":"ElementaryTypeName","src":"2439:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4442,"nodeType":"ArrayTypeName","src":"2439:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2438:18:35"},"scope":4457,"src":"2395:62:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"22acb867","id":4451,"implemented":false,"kind":"function","modifiers":[],"name":"getWeights","nameLocation":"2474:10:35","nodeType":"FunctionDefinition","parameters":{"id":4446,"nodeType":"ParameterList","parameters":[],"src":"2484:2:35"},"returnParameters":{"id":4450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4449,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4451,"src":"2510:16:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4447,"name":"uint256","nodeType":"ElementaryTypeName","src":"2510:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4448,"nodeType":"ArrayTypeName","src":"2510:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2509:18:35"},"scope":4457,"src":"2465:63:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8a77c8dc","id":4456,"implemented":false,"kind":"function","modifiers":[],"name":"isRebalanceNeeded","nameLocation":"2545:17:35","nodeType":"FunctionDefinition","parameters":{"id":4452,"nodeType":"ParameterList","parameters":[],"src":"2562:2:35"},"returnParameters":{"id":4455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4454,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4456,"src":"2588:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4453,"name":"bool","nodeType":"ElementaryTypeName","src":"2588:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2587:6:35"},"scope":4457,"src":"2536:58:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4458,"src":"151:2446:35","usedErrors":[],"usedEvents":[4259,4271,4277,4283,4290]}],"src":"40:2559:35"},"id":35},"contracts/interfaces/IBaluniV1PoolPeriphery.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1PoolPeriphery.sol","exportedSymbols":{"IBaluniV1PoolPeriphery":[4557]},"id":4558,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":4459,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:36"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1PoolPeriphery","contractDependencies":[],"contractKind":"interface","documentation":{"id":4460,"nodeType":"StructuredDocumentation","src":"67:100:36","text":" @title IBaluniV1PoolPeriphery\n @dev Interface for the BaluniV1PoolPeriphery contract"},"fullyImplemented":false,"id":4557,"linearizedBaseContracts":[4557],"name":"IBaluniV1PoolPeriphery","nameLocation":"179:22:36","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c4d66de8","id":4465,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"218:10:36","nodeType":"FunctionDefinition","parameters":{"id":4463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4462,"mutability":"mutable","name":"_registry","nameLocation":"237:9:36","nodeType":"VariableDeclaration","scope":4465,"src":"229:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4461,"name":"address","nodeType":"ElementaryTypeName","src":"229:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"228:19:36"},"returnParameters":{"id":4464,"nodeType":"ParameterList","parameters":[],"src":"256:0:36"},"scope":4557,"src":"209:48:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8f2248bc","id":4472,"implemented":false,"kind":"function","modifiers":[],"name":"reinitialize","nameLocation":"274:12:36","nodeType":"FunctionDefinition","parameters":{"id":4470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4467,"mutability":"mutable","name":"_registry","nameLocation":"295:9:36","nodeType":"VariableDeclaration","scope":4472,"src":"287:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4466,"name":"address","nodeType":"ElementaryTypeName","src":"287:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4469,"mutability":"mutable","name":"version","nameLocation":"313:7:36","nodeType":"VariableDeclaration","scope":4472,"src":"306:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4468,"name":"uint64","nodeType":"ElementaryTypeName","src":"306:6:36","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"286:35:36"},"returnParameters":{"id":4471,"nodeType":"ParameterList","parameters":[],"src":"330:0:36"},"scope":4557,"src":"265:66:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"35823d76","id":4493,"implemented":false,"kind":"function","modifiers":[],"name":"swapTokenForToken","nameLocation":"348:17:36","nodeType":"FunctionDefinition","parameters":{"id":4487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4474,"mutability":"mutable","name":"fromToken","nameLocation":"384:9:36","nodeType":"VariableDeclaration","scope":4493,"src":"376:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4473,"name":"address","nodeType":"ElementaryTypeName","src":"376:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4476,"mutability":"mutable","name":"toToken","nameLocation":"412:7:36","nodeType":"VariableDeclaration","scope":4493,"src":"404:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4475,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4478,"mutability":"mutable","name":"fromAmount","nameLocation":"438:10:36","nodeType":"VariableDeclaration","scope":4493,"src":"430:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4477,"name":"uint256","nodeType":"ElementaryTypeName","src":"430:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4480,"mutability":"mutable","name":"minAmount","nameLocation":"467:9:36","nodeType":"VariableDeclaration","scope":4493,"src":"459:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4479,"name":"uint256","nodeType":"ElementaryTypeName","src":"459:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4482,"mutability":"mutable","name":"from","nameLocation":"495:4:36","nodeType":"VariableDeclaration","scope":4493,"src":"487:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4481,"name":"address","nodeType":"ElementaryTypeName","src":"487:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4484,"mutability":"mutable","name":"to","nameLocation":"518:2:36","nodeType":"VariableDeclaration","scope":4493,"src":"510:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4483,"name":"address","nodeType":"ElementaryTypeName","src":"510:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4486,"mutability":"mutable","name":"deadline","nameLocation":"536:8:36","nodeType":"VariableDeclaration","scope":4493,"src":"531:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4485,"name":"uint","nodeType":"ElementaryTypeName","src":"531:4:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"365:186:36"},"returnParameters":{"id":4492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4489,"mutability":"mutable","name":"amountOut","nameLocation":"578:9:36","nodeType":"VariableDeclaration","scope":4493,"src":"570:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4488,"name":"uint256","nodeType":"ElementaryTypeName","src":"570:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4491,"mutability":"mutable","name":"haircut","nameLocation":"597:7:36","nodeType":"VariableDeclaration","scope":4493,"src":"589:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4490,"name":"uint256","nodeType":"ElementaryTypeName","src":"589:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"569:36:36"},"scope":4557,"src":"339:267:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"21579b79","id":4514,"implemented":false,"kind":"function","modifiers":[],"name":"swapTokensForTokens","nameLocation":"623:19:36","nodeType":"FunctionDefinition","parameters":{"id":4508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4496,"mutability":"mutable","name":"tokenPath","nameLocation":"672:9:36","nodeType":"VariableDeclaration","scope":4514,"src":"653:28:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4494,"name":"address","nodeType":"ElementaryTypeName","src":"653:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4495,"nodeType":"ArrayTypeName","src":"653:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4499,"mutability":"mutable","name":"poolPath","nameLocation":"711:8:36","nodeType":"VariableDeclaration","scope":4514,"src":"692:27:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4497,"name":"address","nodeType":"ElementaryTypeName","src":"692:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4498,"nodeType":"ArrayTypeName","src":"692:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4501,"mutability":"mutable","name":"fromAmount","nameLocation":"738:10:36","nodeType":"VariableDeclaration","scope":4514,"src":"730:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4500,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4503,"mutability":"mutable","name":"minimumToAmount","nameLocation":"767:15:36","nodeType":"VariableDeclaration","scope":4514,"src":"759:23:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4502,"name":"uint256","nodeType":"ElementaryTypeName","src":"759:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4505,"mutability":"mutable","name":"to","nameLocation":"801:2:36","nodeType":"VariableDeclaration","scope":4514,"src":"793:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4504,"name":"address","nodeType":"ElementaryTypeName","src":"793:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4507,"mutability":"mutable","name":"deadline","nameLocation":"822:8:36","nodeType":"VariableDeclaration","scope":4514,"src":"814:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4506,"name":"uint256","nodeType":"ElementaryTypeName","src":"814:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"642:195:36"},"returnParameters":{"id":4513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4510,"mutability":"mutable","name":"amountOut","nameLocation":"864:9:36","nodeType":"VariableDeclaration","scope":4514,"src":"856:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4509,"name":"uint256","nodeType":"ElementaryTypeName","src":"856:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4512,"mutability":"mutable","name":"haircut","nameLocation":"883:7:36","nodeType":"VariableDeclaration","scope":4514,"src":"875:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4511,"name":"uint256","nodeType":"ElementaryTypeName","src":"875:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"855:36:36"},"scope":4557,"src":"614:278:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e74e9b06","id":4532,"implemented":false,"kind":"function","modifiers":[],"name":"batchSwap","nameLocation":"909:9:36","nodeType":"FunctionDefinition","parameters":{"id":4527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4517,"mutability":"mutable","name":"fromTokens","nameLocation":"948:10:36","nodeType":"VariableDeclaration","scope":4532,"src":"929:29:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4515,"name":"address","nodeType":"ElementaryTypeName","src":"929:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4516,"nodeType":"ArrayTypeName","src":"929:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4520,"mutability":"mutable","name":"toTokens","nameLocation":"988:8:36","nodeType":"VariableDeclaration","scope":4532,"src":"969:27:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4518,"name":"address","nodeType":"ElementaryTypeName","src":"969:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4519,"nodeType":"ArrayTypeName","src":"969:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4523,"mutability":"mutable","name":"amounts","nameLocation":"1026:7:36","nodeType":"VariableDeclaration","scope":4532,"src":"1007:26:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4521,"name":"uint256","nodeType":"ElementaryTypeName","src":"1007:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4522,"nodeType":"ArrayTypeName","src":"1007:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4526,"mutability":"mutable","name":"receivers","nameLocation":"1063:9:36","nodeType":"VariableDeclaration","scope":4532,"src":"1044:28:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4524,"name":"address","nodeType":"ElementaryTypeName","src":"1044:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4525,"nodeType":"ArrayTypeName","src":"1044:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"918:161:36"},"returnParameters":{"id":4531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4530,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4532,"src":"1098:16:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4529,"nodeType":"ArrayTypeName","src":"1098:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1097:18:36"},"scope":4557,"src":"900:216:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4aa06652","id":4543,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountOut","nameLocation":"1133:12:36","nodeType":"FunctionDefinition","parameters":{"id":4539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4534,"mutability":"mutable","name":"fromToken","nameLocation":"1154:9:36","nodeType":"VariableDeclaration","scope":4543,"src":"1146:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4533,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4536,"mutability":"mutable","name":"toToken","nameLocation":"1173:7:36","nodeType":"VariableDeclaration","scope":4543,"src":"1165:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4535,"name":"address","nodeType":"ElementaryTypeName","src":"1165:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4538,"mutability":"mutable","name":"amount","nameLocation":"1190:6:36","nodeType":"VariableDeclaration","scope":4543,"src":"1182:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4537,"name":"uint256","nodeType":"ElementaryTypeName","src":"1182:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1145:52:36"},"returnParameters":{"id":4542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4543,"src":"1221:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4540,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:9:36"},"scope":4557,"src":"1124:106:36","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ae3cce1c","id":4551,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolsContainingToken","nameLocation":"1247:23:36","nodeType":"FunctionDefinition","parameters":{"id":4546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4545,"mutability":"mutable","name":"token","nameLocation":"1279:5:36","nodeType":"VariableDeclaration","scope":4551,"src":"1271:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4544,"name":"address","nodeType":"ElementaryTypeName","src":"1271:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1270:15:36"},"returnParameters":{"id":4550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4551,"src":"1309:16:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4547,"name":"address","nodeType":"ElementaryTypeName","src":"1309:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4548,"nodeType":"ArrayTypeName","src":"1309:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1308:18:36"},"scope":4557,"src":"1238:89:36","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0d8e6e2c","id":4556,"implemented":false,"kind":"function","modifiers":[],"name":"getVersion","nameLocation":"1344:10:36","nodeType":"FunctionDefinition","parameters":{"id":4552,"nodeType":"ParameterList","parameters":[],"src":"1354:2:36"},"returnParameters":{"id":4555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4554,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4556,"src":"1380:6:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4553,"name":"uint64","nodeType":"ElementaryTypeName","src":"1380:6:36","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1379:8:36"},"scope":4557,"src":"1335:53:36","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4558,"src":"169:1222:36","usedErrors":[],"usedEvents":[]}],"src":"40:1353:36"},"id":36},"contracts/interfaces/IBaluniV1PoolRegistry.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1PoolRegistry.sol","exportedSymbols":{"IBaluniV1PoolRegistry":[4590]},"id":4591,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":4559,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:37"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1PoolRegistry","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4590,"linearizedBaseContracts":[4590],"name":"IBaluniV1PoolRegistry","nameLocation":"77:21:37","nodeType":"ContractDefinition","nodes":[{"functionSelector":"2d5e94a7","id":4568,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolByAssets","nameLocation":"115:15:37","nodeType":"FunctionDefinition","parameters":{"id":4564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4561,"mutability":"mutable","name":"asset1","nameLocation":"139:6:37","nodeType":"VariableDeclaration","scope":4568,"src":"131:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4560,"name":"address","nodeType":"ElementaryTypeName","src":"131:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4563,"mutability":"mutable","name":"asset2","nameLocation":"155:6:37","nodeType":"VariableDeclaration","scope":4568,"src":"147:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4562,"name":"address","nodeType":"ElementaryTypeName","src":"147:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"130:32:37"},"returnParameters":{"id":4567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4568,"src":"186:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4565,"name":"address","nodeType":"ElementaryTypeName","src":"186:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"185:9:37"},"scope":4590,"src":"106:89:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b4340e6a","id":4576,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolsByAsset","nameLocation":"210:15:37","nodeType":"FunctionDefinition","parameters":{"id":4571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4570,"mutability":"mutable","name":"token","nameLocation":"234:5:37","nodeType":"VariableDeclaration","scope":4576,"src":"226:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4569,"name":"address","nodeType":"ElementaryTypeName","src":"226:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"225:15:37"},"returnParameters":{"id":4575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4574,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4576,"src":"264:16:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4572,"name":"address","nodeType":"ElementaryTypeName","src":"264:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4573,"nodeType":"ArrayTypeName","src":"264:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"263:18:37"},"scope":4590,"src":"201:81:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"89345efb","id":4583,"implemented":false,"kind":"function","modifiers":[],"name":"poolExist","nameLocation":"297:9:37","nodeType":"FunctionDefinition","parameters":{"id":4579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4578,"mutability":"mutable","name":"_pool","nameLocation":"315:5:37","nodeType":"VariableDeclaration","scope":4583,"src":"307:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4577,"name":"address","nodeType":"ElementaryTypeName","src":"307:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"306:15:37"},"returnParameters":{"id":4582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4583,"src":"345:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4580,"name":"bool","nodeType":"ElementaryTypeName","src":"345:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"344:6:37"},"scope":4590,"src":"288:63:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d88ff1f4","id":4589,"implemented":false,"kind":"function","modifiers":[],"name":"getAllPools","nameLocation":"366:11:37","nodeType":"FunctionDefinition","parameters":{"id":4584,"nodeType":"ParameterList","parameters":[],"src":"377:2:37"},"returnParameters":{"id":4588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4587,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4589,"src":"403:16:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4585,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4586,"nodeType":"ArrayTypeName","src":"403:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"402:18:37"},"scope":4590,"src":"357:64:37","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4591,"src":"67:357:37","usedErrors":[],"usedEvents":[]}],"src":"40:386:37"},"id":37},"contracts/interfaces/IBaluniV1Rebalancer.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Rebalancer.sol","exportedSymbols":{"IBaluniV1Rebalancer":[4675]},"id":4676,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":4592,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:38"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Rebalancer","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4675,"linearizedBaseContracts":[4675],"name":"IBaluniV1Rebalancer","nameLocation":"77:19:38","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IBaluniV1Rebalancer.RebalanceVars","id":4622,"members":[{"constant":false,"id":4594,"mutability":"mutable","name":"length","nameLocation":"144:6:38","nodeType":"VariableDeclaration","scope":4622,"src":"136:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4593,"name":"uint256","nodeType":"ElementaryTypeName","src":"136:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4596,"mutability":"mutable","name":"totalValue","nameLocation":"169:10:38","nodeType":"VariableDeclaration","scope":4622,"src":"161:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4595,"name":"uint256","nodeType":"ElementaryTypeName","src":"161:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4598,"mutability":"mutable","name":"finalUsdBalance","nameLocation":"198:15:38","nodeType":"VariableDeclaration","scope":4622,"src":"190:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4597,"name":"uint256","nodeType":"ElementaryTypeName","src":"190:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4600,"mutability":"mutable","name":"overweightVaultsLength","nameLocation":"232:22:38","nodeType":"VariableDeclaration","scope":4622,"src":"224:30:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4599,"name":"uint256","nodeType":"ElementaryTypeName","src":"224:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4602,"mutability":"mutable","name":"underweightVaultsLength","nameLocation":"273:23:38","nodeType":"VariableDeclaration","scope":4622,"src":"265:31:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4601,"name":"uint256","nodeType":"ElementaryTypeName","src":"265:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4604,"mutability":"mutable","name":"totalActiveWeight","nameLocation":"315:17:38","nodeType":"VariableDeclaration","scope":4622,"src":"307:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4603,"name":"uint256","nodeType":"ElementaryTypeName","src":"307:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4606,"mutability":"mutable","name":"amountOut","nameLocation":"351:9:38","nodeType":"VariableDeclaration","scope":4622,"src":"343:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4605,"name":"uint256","nodeType":"ElementaryTypeName","src":"343:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4609,"mutability":"mutable","name":"overweightVaults","nameLocation":"381:16:38","nodeType":"VariableDeclaration","scope":4622,"src":"371:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4607,"name":"uint256","nodeType":"ElementaryTypeName","src":"371:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4608,"nodeType":"ArrayTypeName","src":"371:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4612,"mutability":"mutable","name":"overweightAmounts","nameLocation":"418:17:38","nodeType":"VariableDeclaration","scope":4622,"src":"408:27:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4610,"name":"uint256","nodeType":"ElementaryTypeName","src":"408:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4611,"nodeType":"ArrayTypeName","src":"408:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4615,"mutability":"mutable","name":"underweightVaults","nameLocation":"456:17:38","nodeType":"VariableDeclaration","scope":4622,"src":"446:27:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4613,"name":"uint256","nodeType":"ElementaryTypeName","src":"446:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4614,"nodeType":"ArrayTypeName","src":"446:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4618,"mutability":"mutable","name":"underweightAmounts","nameLocation":"494:18:38","nodeType":"VariableDeclaration","scope":4622,"src":"484:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4616,"name":"uint256","nodeType":"ElementaryTypeName","src":"484:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4617,"nodeType":"ArrayTypeName","src":"484:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4621,"mutability":"mutable","name":"balances","nameLocation":"533:8:38","nodeType":"VariableDeclaration","scope":4622,"src":"523:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4619,"name":"uint256","nodeType":"ElementaryTypeName","src":"523:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4620,"nodeType":"ArrayTypeName","src":"523:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"RebalanceVars","nameLocation":"111:13:38","nodeType":"StructDefinition","scope":4675,"src":"104:445:38","visibility":"public"},{"functionSelector":"f0bf7714","id":4642,"implemented":false,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"584:9:38","nodeType":"FunctionDefinition","parameters":{"id":4640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4625,"mutability":"mutable","name":"balances","nameLocation":"621:8:38","nodeType":"VariableDeclaration","scope":4642,"src":"604:25:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4623,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4624,"nodeType":"ArrayTypeName","src":"604:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4628,"mutability":"mutable","name":"assets","nameLocation":"659:6:38","nodeType":"VariableDeclaration","scope":4642,"src":"640:25:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4626,"name":"address","nodeType":"ElementaryTypeName","src":"640:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4627,"nodeType":"ArrayTypeName","src":"640:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4631,"mutability":"mutable","name":"weights","nameLocation":"695:7:38","nodeType":"VariableDeclaration","scope":4642,"src":"676:26:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4629,"name":"uint256","nodeType":"ElementaryTypeName","src":"676:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4630,"nodeType":"ArrayTypeName","src":"676:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4633,"mutability":"mutable","name":"limit","nameLocation":"721:5:38","nodeType":"VariableDeclaration","scope":4642,"src":"713:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4632,"name":"uint256","nodeType":"ElementaryTypeName","src":"713:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4635,"mutability":"mutable","name":"sender","nameLocation":"745:6:38","nodeType":"VariableDeclaration","scope":4642,"src":"737:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4634,"name":"address","nodeType":"ElementaryTypeName","src":"737:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4637,"mutability":"mutable","name":"receiver","nameLocation":"770:8:38","nodeType":"VariableDeclaration","scope":4642,"src":"762:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4636,"name":"address","nodeType":"ElementaryTypeName","src":"762:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4639,"mutability":"mutable","name":"baseAsset","nameLocation":"797:9:38","nodeType":"VariableDeclaration","scope":4642,"src":"789:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4638,"name":"address","nodeType":"ElementaryTypeName","src":"789:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"593:220:38"},"returnParameters":{"id":4641,"nodeType":"ParameterList","parameters":[],"src":"822:0:38"},"scope":4675,"src":"575:248:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"997146f5","id":4663,"implemented":false,"kind":"function","modifiers":[],"name":"checkRebalance","nameLocation":"840:14:38","nodeType":"FunctionDefinition","parameters":{"id":4658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4645,"mutability":"mutable","name":"balances","nameLocation":"882:8:38","nodeType":"VariableDeclaration","scope":4663,"src":"865:25:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4643,"name":"uint256","nodeType":"ElementaryTypeName","src":"865:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4644,"nodeType":"ArrayTypeName","src":"865:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4648,"mutability":"mutable","name":"assets","nameLocation":"920:6:38","nodeType":"VariableDeclaration","scope":4663,"src":"901:25:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4646,"name":"address","nodeType":"ElementaryTypeName","src":"901:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4647,"nodeType":"ArrayTypeName","src":"901:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4651,"mutability":"mutable","name":"weights","nameLocation":"956:7:38","nodeType":"VariableDeclaration","scope":4663,"src":"937:26:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4649,"name":"uint256","nodeType":"ElementaryTypeName","src":"937:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4650,"nodeType":"ArrayTypeName","src":"937:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4653,"mutability":"mutable","name":"limit","nameLocation":"982:5:38","nodeType":"VariableDeclaration","scope":4663,"src":"974:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4652,"name":"uint256","nodeType":"ElementaryTypeName","src":"974:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4655,"mutability":"mutable","name":"sender","nameLocation":"1006:6:38","nodeType":"VariableDeclaration","scope":4663,"src":"998:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4654,"name":"address","nodeType":"ElementaryTypeName","src":"998:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4657,"mutability":"mutable","name":"baseAsset","nameLocation":"1031:9:38","nodeType":"VariableDeclaration","scope":4663,"src":"1023:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4656,"name":"address","nodeType":"ElementaryTypeName","src":"1023:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"854:193:38"},"returnParameters":{"id":4662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4663,"src":"1071:20:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$4622_memory_ptr","typeString":"struct IBaluniV1Rebalancer.RebalanceVars"},"typeName":{"id":4660,"nodeType":"UserDefinedTypeName","pathNode":{"id":4659,"name":"RebalanceVars","nameLocations":["1071:13:38"],"nodeType":"IdentifierPath","referencedDeclaration":4622,"src":"1071:13:38"},"referencedDeclaration":4622,"src":"1071:13:38","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$4622_storage_ptr","typeString":"struct IBaluniV1Rebalancer.RebalanceVars"}},"visibility":"internal"}],"src":"1070:22:38"},"scope":4675,"src":"831:262:38","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248391ff","id":4674,"implemented":false,"kind":"function","modifiers":[],"name":"convert","nameLocation":"1110:7:38","nodeType":"FunctionDefinition","parameters":{"id":4670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4665,"mutability":"mutable","name":"fromToken","nameLocation":"1126:9:38","nodeType":"VariableDeclaration","scope":4674,"src":"1118:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4664,"name":"address","nodeType":"ElementaryTypeName","src":"1118:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4667,"mutability":"mutable","name":"toToken","nameLocation":"1145:7:38","nodeType":"VariableDeclaration","scope":4674,"src":"1137:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4666,"name":"address","nodeType":"ElementaryTypeName","src":"1137:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4669,"mutability":"mutable","name":"amount","nameLocation":"1162:6:38","nodeType":"VariableDeclaration","scope":4674,"src":"1154:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4668,"name":"uint256","nodeType":"ElementaryTypeName","src":"1154:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1117:52:38"},"returnParameters":{"id":4673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4672,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4674,"src":"1193:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4671,"name":"uint256","nodeType":"ElementaryTypeName","src":"1193:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1192:9:38"},"scope":4675,"src":"1101:101:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4676,"src":"67:1138:38","usedErrors":[],"usedEvents":[]}],"src":"40:1167:38"},"id":38},"contracts/interfaces/IBaluniV1Registry.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","exportedSymbols":{"IBaluniV1Registry":[4909]},"id":4910,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":4677,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:39"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Registry","contractDependencies":[],"contractKind":"interface","documentation":{"id":4678,"nodeType":"StructuredDocumentation","src":"67:91:39","text":" @title IBaluniV1Registry\n @dev Interface for the BaluniV1Registry contract."},"fullyImplemented":false,"id":4909,"linearizedBaseContracts":[4909],"name":"IBaluniV1Registry","nameLocation":"170:17:39","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e04b677f","id":4683,"implemented":false,"kind":"function","modifiers":[],"name":"setUniswapFactory","nameLocation":"204:17:39","nodeType":"FunctionDefinition","parameters":{"id":4681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4680,"mutability":"mutable","name":"_uniswapFactory","nameLocation":"230:15:39","nodeType":"VariableDeclaration","scope":4683,"src":"222:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4679,"name":"address","nodeType":"ElementaryTypeName","src":"222:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"221:25:39"},"returnParameters":{"id":4682,"nodeType":"ParameterList","parameters":[],"src":"255:0:39"},"scope":4909,"src":"195:61:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bea9849e","id":4688,"implemented":false,"kind":"function","modifiers":[],"name":"setUniswapRouter","nameLocation":"273:16:39","nodeType":"FunctionDefinition","parameters":{"id":4686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4685,"mutability":"mutable","name":"_uniswapRouter","nameLocation":"298:14:39","nodeType":"VariableDeclaration","scope":4688,"src":"290:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4684,"name":"address","nodeType":"ElementaryTypeName","src":"290:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"289:24:39"},"returnParameters":{"id":4687,"nodeType":"ParameterList","parameters":[],"src":"322:0:39"},"scope":4909,"src":"264:59:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"26158136","id":4693,"implemented":false,"kind":"function","modifiers":[],"name":"setUniswapQuoter","nameLocation":"340:16:39","nodeType":"FunctionDefinition","parameters":{"id":4691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4690,"mutability":"mutable","name":"_uniswapQuoter","nameLocation":"365:14:39","nodeType":"VariableDeclaration","scope":4693,"src":"357:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4689,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"356:24:39"},"returnParameters":{"id":4692,"nodeType":"ParameterList","parameters":[],"src":"389:0:39"},"scope":4909,"src":"331:59:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f1dccde7","id":4698,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniAgentFactory","nameLocation":"407:21:39","nodeType":"FunctionDefinition","parameters":{"id":4696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4695,"mutability":"mutable","name":"_baluniAgentFactory","nameLocation":"437:19:39","nodeType":"VariableDeclaration","scope":4698,"src":"429:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4694,"name":"address","nodeType":"ElementaryTypeName","src":"429:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"428:29:39"},"returnParameters":{"id":4697,"nodeType":"ParameterList","parameters":[],"src":"466:0:39"},"scope":4909,"src":"398:69:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"588c5b70","id":4703,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniPoolPeriphery","nameLocation":"484:22:39","nodeType":"FunctionDefinition","parameters":{"id":4701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4700,"mutability":"mutable","name":"_baluniPoolPeriphery","nameLocation":"515:20:39","nodeType":"VariableDeclaration","scope":4703,"src":"507:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4699,"name":"address","nodeType":"ElementaryTypeName","src":"507:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"506:30:39"},"returnParameters":{"id":4702,"nodeType":"ParameterList","parameters":[],"src":"545:0:39"},"scope":4909,"src":"475:71:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c3f5df5c","id":4708,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniSwapper","nameLocation":"563:16:39","nodeType":"FunctionDefinition","parameters":{"id":4706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4705,"mutability":"mutable","name":"_baluniSwapper","nameLocation":"588:14:39","nodeType":"VariableDeclaration","scope":4708,"src":"580:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4704,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"579:24:39"},"returnParameters":{"id":4707,"nodeType":"ParameterList","parameters":[],"src":"612:0:39"},"scope":4909,"src":"554:59:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f5b84f64","id":4713,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniOracle","nameLocation":"630:15:39","nodeType":"FunctionDefinition","parameters":{"id":4711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4710,"mutability":"mutable","name":"_baluniOracle","nameLocation":"654:13:39","nodeType":"VariableDeclaration","scope":4713,"src":"646:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4709,"name":"address","nodeType":"ElementaryTypeName","src":"646:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"645:23:39"},"returnParameters":{"id":4712,"nodeType":"ParameterList","parameters":[],"src":"677:0:39"},"scope":4909,"src":"621:57:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f98977a9","id":4718,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniPoolRegistry","nameLocation":"695:21:39","nodeType":"FunctionDefinition","parameters":{"id":4716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4715,"mutability":"mutable","name":"_baluniPoolRegistry","nameLocation":"725:19:39","nodeType":"VariableDeclaration","scope":4718,"src":"717:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4714,"name":"address","nodeType":"ElementaryTypeName","src":"717:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"716:29:39"},"returnParameters":{"id":4717,"nodeType":"ParameterList","parameters":[],"src":"754:0:39"},"scope":4909,"src":"686:69:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d7e53673","id":4723,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniDCAVaultRegistry","nameLocation":"772:25:39","nodeType":"FunctionDefinition","parameters":{"id":4721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4720,"mutability":"mutable","name":"_baluniPoolRegistry","nameLocation":"806:19:39","nodeType":"VariableDeclaration","scope":4723,"src":"798:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4719,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"797:29:39"},"returnParameters":{"id":4722,"nodeType":"ParameterList","parameters":[],"src":"835:0:39"},"scope":4909,"src":"763:73:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0241bffa","id":4728,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniRebalancer","nameLocation":"853:19:39","nodeType":"FunctionDefinition","parameters":{"id":4726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4725,"mutability":"mutable","name":"_baluniRebalancer","nameLocation":"881:17:39","nodeType":"VariableDeclaration","scope":4728,"src":"873:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4724,"name":"address","nodeType":"ElementaryTypeName","src":"873:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"872:27:39"},"returnParameters":{"id":4727,"nodeType":"ParameterList","parameters":[],"src":"908:0:39"},"scope":4909,"src":"844:65:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"400fb668","id":4733,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniRouter","nameLocation":"926:15:39","nodeType":"FunctionDefinition","parameters":{"id":4731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4730,"mutability":"mutable","name":"_baluniRouter","nameLocation":"950:13:39","nodeType":"VariableDeclaration","scope":4733,"src":"942:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4729,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"941:23:39"},"returnParameters":{"id":4732,"nodeType":"ParameterList","parameters":[],"src":"973:0:39"},"scope":4909,"src":"917:57:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6c43274c","id":4738,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniRegistry","nameLocation":"991:17:39","nodeType":"FunctionDefinition","parameters":{"id":4736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4735,"mutability":"mutable","name":"_baluniRegistry","nameLocation":"1017:15:39","nodeType":"VariableDeclaration","scope":4738,"src":"1009:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4734,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1008:25:39"},"returnParameters":{"id":4737,"nodeType":"ParameterList","parameters":[],"src":"1042:0:39"},"scope":4909,"src":"982:61:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b6fe9cc7","id":4743,"implemented":false,"kind":"function","modifiers":[],"name":"setWNATIVE","nameLocation":"1060:10:39","nodeType":"FunctionDefinition","parameters":{"id":4741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4740,"mutability":"mutable","name":"_WNATIVE","nameLocation":"1079:8:39","nodeType":"VariableDeclaration","scope":4743,"src":"1071:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4739,"name":"address","nodeType":"ElementaryTypeName","src":"1071:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1070:18:39"},"returnParameters":{"id":4742,"nodeType":"ParameterList","parameters":[],"src":"1097:0:39"},"scope":4909,"src":"1051:47:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b3e089a2","id":4748,"implemented":false,"kind":"function","modifiers":[],"name":"setUSDC","nameLocation":"1115:7:39","nodeType":"FunctionDefinition","parameters":{"id":4746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4745,"mutability":"mutable","name":"_USDC","nameLocation":"1131:5:39","nodeType":"VariableDeclaration","scope":4748,"src":"1123:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4744,"name":"address","nodeType":"ElementaryTypeName","src":"1123:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1122:15:39"},"returnParameters":{"id":4747,"nodeType":"ParameterList","parameters":[],"src":"1146:0:39"},"scope":4909,"src":"1106:41:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2da52442","id":4753,"implemented":false,"kind":"function","modifiers":[],"name":"setREBALANCE_THRESHOLD","nameLocation":"1164:22:39","nodeType":"FunctionDefinition","parameters":{"id":4751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4750,"mutability":"mutable","name":"_REBALANCE_THRESHOLD","nameLocation":"1195:20:39","nodeType":"VariableDeclaration","scope":4753,"src":"1187:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4749,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:30:39"},"returnParameters":{"id":4752,"nodeType":"ParameterList","parameters":[],"src":"1225:0:39"},"scope":4909,"src":"1155:71:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f0f44260","id":4758,"implemented":false,"kind":"function","modifiers":[],"name":"setTreasury","nameLocation":"1243:11:39","nodeType":"FunctionDefinition","parameters":{"id":4756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4755,"mutability":"mutable","name":"_treasury","nameLocation":"1263:9:39","nodeType":"VariableDeclaration","scope":4758,"src":"1255:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4754,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1254:19:39"},"returnParameters":{"id":4757,"nodeType":"ParameterList","parameters":[],"src":"1282:0:39"},"scope":4909,"src":"1234:49:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c08f786b","id":4763,"implemented":false,"kind":"function","modifiers":[],"name":"set1inchSpotAgg","nameLocation":"1300:15:39","nodeType":"FunctionDefinition","parameters":{"id":4761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4760,"mutability":"mutable","name":"__1inchSpotAgg","nameLocation":"1324:14:39","nodeType":"VariableDeclaration","scope":4763,"src":"1316:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4759,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1315:24:39"},"returnParameters":{"id":4762,"nodeType":"ParameterList","parameters":[],"src":"1348:0:39"},"scope":4909,"src":"1291:58:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9e6453f8","id":4768,"implemented":false,"kind":"function","modifiers":[],"name":"setBPS_FEE","nameLocation":"1366:10:39","nodeType":"FunctionDefinition","parameters":{"id":4766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4765,"mutability":"mutable","name":"__BPS_FEE","nameLocation":"1385:9:39","nodeType":"VariableDeclaration","scope":4768,"src":"1377:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4764,"name":"uint256","nodeType":"ElementaryTypeName","src":"1377:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1376:19:39"},"returnParameters":{"id":4767,"nodeType":"ParameterList","parameters":[],"src":"1404:0:39"},"scope":4909,"src":"1357:48:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ba535c54","id":4773,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniYearnVaultRegistry","nameLocation":"1422:27:39","nodeType":"FunctionDefinition","parameters":{"id":4771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4770,"mutability":"mutable","name":"_baluniYearnVaultRegistry","nameLocation":"1458:25:39","nodeType":"VariableDeclaration","scope":4773,"src":"1450:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4769,"name":"address","nodeType":"ElementaryTypeName","src":"1450:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1449:35:39"},"returnParameters":{"id":4772,"nodeType":"ParameterList","parameters":[],"src":"1493:0:39"},"scope":4909,"src":"1413:81:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8ffc0673","id":4778,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniPoolZap","nameLocation":"1511:16:39","nodeType":"FunctionDefinition","parameters":{"id":4776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4775,"mutability":"mutable","name":"_baluniPoolZap","nameLocation":"1536:14:39","nodeType":"VariableDeclaration","scope":4778,"src":"1528:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4774,"name":"address","nodeType":"ElementaryTypeName","src":"1528:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1527:24:39"},"returnParameters":{"id":4777,"nodeType":"ParameterList","parameters":[],"src":"1560:0:39"},"scope":4909,"src":"1502:59:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a23dccee","id":4783,"implemented":false,"kind":"function","modifiers":[],"name":"setBaluniHyperPoolZap","nameLocation":"1578:21:39","nodeType":"FunctionDefinition","parameters":{"id":4781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4780,"mutability":"mutable","name":"_baluniHyperPoolZap","nameLocation":"1608:19:39","nodeType":"VariableDeclaration","scope":4783,"src":"1600:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4779,"name":"address","nodeType":"ElementaryTypeName","src":"1600:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1599:29:39"},"returnParameters":{"id":4782,"nodeType":"ParameterList","parameters":[],"src":"1637:0:39"},"scope":4909,"src":"1569:69:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b0a70975","id":4788,"implemented":false,"kind":"function","modifiers":[],"name":"getUniswapQuoter","nameLocation":"1655:16:39","nodeType":"FunctionDefinition","parameters":{"id":4784,"nodeType":"ParameterList","parameters":[],"src":"1671:2:39"},"returnParameters":{"id":4787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4788,"src":"1697:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4785,"name":"address","nodeType":"ElementaryTypeName","src":"1697:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1696:9:39"},"scope":4909,"src":"1646:60:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3e6dfa36","id":4793,"implemented":false,"kind":"function","modifiers":[],"name":"getUniswapFactory","nameLocation":"1723:17:39","nodeType":"FunctionDefinition","parameters":{"id":4789,"nodeType":"ParameterList","parameters":[],"src":"1740:2:39"},"returnParameters":{"id":4792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4793,"src":"1766:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4790,"name":"address","nodeType":"ElementaryTypeName","src":"1766:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1765:9:39"},"scope":4909,"src":"1714:61:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"524900b5","id":4798,"implemented":false,"kind":"function","modifiers":[],"name":"getUniswapRouter","nameLocation":"1792:16:39","nodeType":"FunctionDefinition","parameters":{"id":4794,"nodeType":"ParameterList","parameters":[],"src":"1808:2:39"},"returnParameters":{"id":4797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4798,"src":"1834:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4795,"name":"address","nodeType":"ElementaryTypeName","src":"1834:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1833:9:39"},"scope":4909,"src":"1783:60:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"82755ebb","id":4803,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniSwapper","nameLocation":"1860:16:39","nodeType":"FunctionDefinition","parameters":{"id":4799,"nodeType":"ParameterList","parameters":[],"src":"1876:2:39"},"returnParameters":{"id":4802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4803,"src":"1902:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4800,"name":"address","nodeType":"ElementaryTypeName","src":"1902:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1901:9:39"},"scope":4909,"src":"1851:60:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bb3ba04c","id":4808,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniOracle","nameLocation":"1928:15:39","nodeType":"FunctionDefinition","parameters":{"id":4804,"nodeType":"ParameterList","parameters":[],"src":"1943:2:39"},"returnParameters":{"id":4807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4808,"src":"1969:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4805,"name":"address","nodeType":"ElementaryTypeName","src":"1969:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1968:9:39"},"scope":4909,"src":"1919:59:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f5d2d998","id":4813,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniAgentFactory","nameLocation":"1995:21:39","nodeType":"FunctionDefinition","parameters":{"id":4809,"nodeType":"ParameterList","parameters":[],"src":"2016:2:39"},"returnParameters":{"id":4812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4813,"src":"2042:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4810,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2041:9:39"},"scope":4909,"src":"1986:65:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1acb6141","id":4818,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniPoolPeriphery","nameLocation":"2068:22:39","nodeType":"FunctionDefinition","parameters":{"id":4814,"nodeType":"ParameterList","parameters":[],"src":"2090:2:39"},"returnParameters":{"id":4817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4818,"src":"2116:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4815,"name":"address","nodeType":"ElementaryTypeName","src":"2116:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2115:9:39"},"scope":4909,"src":"2059:66:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ffa08e95","id":4823,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniDCAVaultRegistry","nameLocation":"2142:25:39","nodeType":"FunctionDefinition","parameters":{"id":4819,"nodeType":"ParameterList","parameters":[],"src":"2167:2:39"},"returnParameters":{"id":4822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4823,"src":"2193:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4820,"name":"address","nodeType":"ElementaryTypeName","src":"2193:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2192:9:39"},"scope":4909,"src":"2133:69:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"32569e02","id":4828,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniPoolRegistry","nameLocation":"2219:21:39","nodeType":"FunctionDefinition","parameters":{"id":4824,"nodeType":"ParameterList","parameters":[],"src":"2240:2:39"},"returnParameters":{"id":4827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4828,"src":"2266:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4825,"name":"address","nodeType":"ElementaryTypeName","src":"2266:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2265:9:39"},"scope":4909,"src":"2210:65:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"cff49d68","id":4833,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniRebalancer","nameLocation":"2292:19:39","nodeType":"FunctionDefinition","parameters":{"id":4829,"nodeType":"ParameterList","parameters":[],"src":"2311:2:39"},"returnParameters":{"id":4832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4833,"src":"2337:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4830,"name":"address","nodeType":"ElementaryTypeName","src":"2337:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2336:9:39"},"scope":4909,"src":"2283:63:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"04cc7325","id":4838,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniRouter","nameLocation":"2363:15:39","nodeType":"FunctionDefinition","parameters":{"id":4834,"nodeType":"ParameterList","parameters":[],"src":"2378:2:39"},"returnParameters":{"id":4837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4836,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4838,"src":"2404:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4835,"name":"address","nodeType":"ElementaryTypeName","src":"2404:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2403:9:39"},"scope":4909,"src":"2354:59:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c9aba8ae","id":4843,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniRegistry","nameLocation":"2430:17:39","nodeType":"FunctionDefinition","parameters":{"id":4839,"nodeType":"ParameterList","parameters":[],"src":"2447:2:39"},"returnParameters":{"id":4842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4841,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4843,"src":"2473:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4840,"name":"address","nodeType":"ElementaryTypeName","src":"2473:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2472:9:39"},"scope":4909,"src":"2421:61:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6c9c0078","id":4848,"implemented":false,"kind":"function","modifiers":[],"name":"getWNATIVE","nameLocation":"2499:10:39","nodeType":"FunctionDefinition","parameters":{"id":4844,"nodeType":"ParameterList","parameters":[],"src":"2509:2:39"},"returnParameters":{"id":4847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4848,"src":"2535:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4845,"name":"address","nodeType":"ElementaryTypeName","src":"2535:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2534:9:39"},"scope":4909,"src":"2490:54:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1bf01e9b","id":4853,"implemented":false,"kind":"function","modifiers":[],"name":"getUSDC","nameLocation":"2561:7:39","nodeType":"FunctionDefinition","parameters":{"id":4849,"nodeType":"ParameterList","parameters":[],"src":"2568:2:39"},"returnParameters":{"id":4852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4853,"src":"2594:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4850,"name":"address","nodeType":"ElementaryTypeName","src":"2594:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2593:9:39"},"scope":4909,"src":"2552:51:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8e1c3a8a","id":4858,"implemented":false,"kind":"function","modifiers":[],"name":"get1inchSpotAgg","nameLocation":"2620:15:39","nodeType":"FunctionDefinition","parameters":{"id":4854,"nodeType":"ParameterList","parameters":[],"src":"2635:2:39"},"returnParameters":{"id":4857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4858,"src":"2661:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4855,"name":"address","nodeType":"ElementaryTypeName","src":"2661:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2660:9:39"},"scope":4909,"src":"2611:59:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"85462d6f","id":4863,"implemented":false,"kind":"function","modifiers":[],"name":"getBPS_FEE","nameLocation":"2687:10:39","nodeType":"FunctionDefinition","parameters":{"id":4859,"nodeType":"ParameterList","parameters":[],"src":"2697:2:39"},"returnParameters":{"id":4862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4863,"src":"2723:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2723:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2722:9:39"},"scope":4909,"src":"2678:54:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9380fb6f","id":4868,"implemented":false,"kind":"function","modifiers":[],"name":"getMAX_BPS_FEE","nameLocation":"2749:14:39","nodeType":"FunctionDefinition","parameters":{"id":4864,"nodeType":"ParameterList","parameters":[],"src":"2763:2:39"},"returnParameters":{"id":4867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4866,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4868,"src":"2789:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4865,"name":"uint256","nodeType":"ElementaryTypeName","src":"2789:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2788:9:39"},"scope":4909,"src":"2740:58:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4f4608a2","id":4873,"implemented":false,"kind":"function","modifiers":[],"name":"getBPS_BASE","nameLocation":"2815:11:39","nodeType":"FunctionDefinition","parameters":{"id":4869,"nodeType":"ParameterList","parameters":[],"src":"2826:2:39"},"returnParameters":{"id":4872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4873,"src":"2852:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4870,"name":"uint256","nodeType":"ElementaryTypeName","src":"2852:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2851:9:39"},"scope":4909,"src":"2806:55:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ea233c05","id":4878,"implemented":false,"kind":"function","modifiers":[],"name":"getREBALANCE_THRESHOLD","nameLocation":"2878:22:39","nodeType":"FunctionDefinition","parameters":{"id":4874,"nodeType":"ParameterList","parameters":[],"src":"2900:2:39"},"returnParameters":{"id":4877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4878,"src":"2926:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4875,"name":"uint256","nodeType":"ElementaryTypeName","src":"2926:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2925:9:39"},"scope":4909,"src":"2869:66:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3b19e84a","id":4883,"implemented":false,"kind":"function","modifiers":[],"name":"getTreasury","nameLocation":"2952:11:39","nodeType":"FunctionDefinition","parameters":{"id":4879,"nodeType":"ParameterList","parameters":[],"src":"2963:2:39"},"returnParameters":{"id":4882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4883,"src":"2989:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4880,"name":"address","nodeType":"ElementaryTypeName","src":"2989:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2988:9:39"},"scope":4909,"src":"2943:55:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"cc01e9a6","id":4888,"implemented":false,"kind":"function","modifiers":[],"name":"setStaticOracle","nameLocation":"3015:15:39","nodeType":"FunctionDefinition","parameters":{"id":4886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4885,"mutability":"mutable","name":"_staticOracle","nameLocation":"3039:13:39","nodeType":"VariableDeclaration","scope":4888,"src":"3031:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4884,"name":"address","nodeType":"ElementaryTypeName","src":"3031:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3030:23:39"},"returnParameters":{"id":4887,"nodeType":"ParameterList","parameters":[],"src":"3062:0:39"},"scope":4909,"src":"3006:57:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a5d2236f","id":4893,"implemented":false,"kind":"function","modifiers":[],"name":"getStaticOracle","nameLocation":"3080:15:39","nodeType":"FunctionDefinition","parameters":{"id":4889,"nodeType":"ParameterList","parameters":[],"src":"3095:2:39"},"returnParameters":{"id":4892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4893,"src":"3121:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4890,"name":"address","nodeType":"ElementaryTypeName","src":"3121:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3120:9:39"},"scope":4909,"src":"3071:59:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"32327d1f","id":4898,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniYearnVaultRegistry","nameLocation":"3147:27:39","nodeType":"FunctionDefinition","parameters":{"id":4894,"nodeType":"ParameterList","parameters":[],"src":"3174:2:39"},"returnParameters":{"id":4897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4898,"src":"3200:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4895,"name":"address","nodeType":"ElementaryTypeName","src":"3200:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3199:9:39"},"scope":4909,"src":"3138:71:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"040f767e","id":4903,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniPoolZap","nameLocation":"3226:16:39","nodeType":"FunctionDefinition","parameters":{"id":4899,"nodeType":"ParameterList","parameters":[],"src":"3242:2:39"},"returnParameters":{"id":4902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4903,"src":"3268:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4900,"name":"address","nodeType":"ElementaryTypeName","src":"3268:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3267:9:39"},"scope":4909,"src":"3217:60:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f21717d","id":4908,"implemented":false,"kind":"function","modifiers":[],"name":"getBaluniHyperPoolZap","nameLocation":"3294:21:39","nodeType":"FunctionDefinition","parameters":{"id":4904,"nodeType":"ParameterList","parameters":[],"src":"3315:2:39"},"returnParameters":{"id":4907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4908,"src":"3341:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4905,"name":"address","nodeType":"ElementaryTypeName","src":"3341:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3340:9:39"},"scope":4909,"src":"3285:65:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4910,"src":"160:3193:39","usedErrors":[],"usedEvents":[]}],"src":"40:3315:39"},"id":39},"contracts/interfaces/IBaluniV1Router.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Router.sol","exportedSymbols":{"I1inchSpotAgg":[3793],"IBaluniV1Agent":[3813],"IBaluniV1Router":[5177],"IERC20":[2651],"IERC20Metadata":[2677]},"id":5178,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":4911,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:40"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":4912,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5178,"sourceUnit":2652,"src":"67:56:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":4913,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5178,"sourceUnit":2678,"src":"125:75:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/I1inchSpotAgg.sol","file":"./I1inchSpotAgg.sol","id":4914,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5178,"sourceUnit":3794,"src":"202:29:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Agent.sol","file":"./IBaluniV1Agent.sol","id":4915,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5178,"sourceUnit":3814,"src":"233:30:40","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Router","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5177,"linearizedBaseContracts":[5177],"name":"IBaluniV1Router","nameLocation":"277:15:40","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IBaluniV1Router.Call","id":4922,"members":[{"constant":false,"id":4917,"mutability":"mutable","name":"to","nameLocation":"331:2:40","nodeType":"VariableDeclaration","scope":4922,"src":"323:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4916,"name":"address","nodeType":"ElementaryTypeName","src":"323:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4919,"mutability":"mutable","name":"value","nameLocation":"352:5:40","nodeType":"VariableDeclaration","scope":4922,"src":"344:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4918,"name":"uint256","nodeType":"ElementaryTypeName","src":"344:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4921,"mutability":"mutable","name":"data","nameLocation":"374:4:40","nodeType":"VariableDeclaration","scope":4922,"src":"368:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4920,"name":"bytes","nodeType":"ElementaryTypeName","src":"368:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Call","nameLocation":"307:4:40","nodeType":"StructDefinition","scope":5177,"src":"300:86:40","visibility":"public"},{"functionSelector":"34decfc9","id":4927,"implemented":false,"kind":"function","modifiers":[],"name":"_MAX_BPS_FEE","nameLocation":"421:12:40","nodeType":"FunctionDefinition","parameters":{"id":4923,"nodeType":"ParameterList","parameters":[],"src":"433:2:40"},"returnParameters":{"id":4926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4927,"src":"459:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4924,"name":"uint256","nodeType":"ElementaryTypeName","src":"459:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"458:9:40"},"scope":5177,"src":"412:56:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b9f5e617","id":4932,"implemented":false,"kind":"function","modifiers":[],"name":"_BPS_FEE","nameLocation":"485:8:40","nodeType":"FunctionDefinition","parameters":{"id":4928,"nodeType":"ParameterList","parameters":[],"src":"493:2:40"},"returnParameters":{"id":4931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4932,"src":"519:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4929,"name":"uint256","nodeType":"ElementaryTypeName","src":"519:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"518:9:40"},"scope":5177,"src":"476:52:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"85377188","id":4937,"implemented":false,"kind":"function","modifiers":[],"name":"_BPS_BASE","nameLocation":"545:9:40","nodeType":"FunctionDefinition","parameters":{"id":4933,"nodeType":"ParameterList","parameters":[],"src":"554:2:40"},"returnParameters":{"id":4936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4935,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4937,"src":"580:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4934,"name":"uint256","nodeType":"ElementaryTypeName","src":"580:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:9:40"},"scope":5177,"src":"536:53:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aa6ca808","id":4943,"implemented":false,"kind":"function","modifiers":[],"name":"getTokens","nameLocation":"606:9:40","nodeType":"FunctionDefinition","parameters":{"id":4938,"nodeType":"ParameterList","parameters":[],"src":"615:2:40"},"returnParameters":{"id":4942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4941,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4943,"src":"641:16:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4939,"name":"address","nodeType":"ElementaryTypeName","src":"641:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4940,"nodeType":"ArrayTypeName","src":"641:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"640:18:40"},"scope":5177,"src":"597:62:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"89a30271","id":4949,"implemented":false,"kind":"function","modifiers":[],"name":"USDC","nameLocation":"676:4:40","nodeType":"FunctionDefinition","parameters":{"id":4944,"nodeType":"ParameterList","parameters":[],"src":"680:2:40"},"returnParameters":{"id":4948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4949,"src":"706:6:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":4946,"nodeType":"UserDefinedTypeName","pathNode":{"id":4945,"name":"IERC20","nameLocations":["706:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"706:6:40"},"referencedDeclaration":2651,"src":"706:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"705:8:40"},"scope":5177,"src":"667:47:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b381cf40","id":4954,"implemented":false,"kind":"function","modifiers":[],"name":"WNATIVE","nameLocation":"731:7:40","nodeType":"FunctionDefinition","parameters":{"id":4950,"nodeType":"ParameterList","parameters":[],"src":"738:2:40"},"returnParameters":{"id":4953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4954,"src":"764:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4951,"name":"address","nodeType":"ElementaryTypeName","src":"764:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"763:9:40"},"scope":5177,"src":"722:51:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7dc0d1d0","id":4959,"implemented":false,"kind":"function","modifiers":[],"name":"oracle","nameLocation":"790:6:40","nodeType":"FunctionDefinition","parameters":{"id":4955,"nodeType":"ParameterList","parameters":[],"src":"796:2:40"},"returnParameters":{"id":4958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4957,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4959,"src":"822:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4956,"name":"address","nodeType":"ElementaryTypeName","src":"822:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"821:9:40"},"scope":5177,"src":"781:50:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"735de9f7","id":4964,"implemented":false,"kind":"function","modifiers":[],"name":"uniswapRouter","nameLocation":"848:13:40","nodeType":"FunctionDefinition","parameters":{"id":4960,"nodeType":"ParameterList","parameters":[],"src":"861:2:40"},"returnParameters":{"id":4963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4964,"src":"887:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4961,"name":"address","nodeType":"ElementaryTypeName","src":"887:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"886:9:40"},"scope":5177,"src":"839:57:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8bdb2afa","id":4969,"implemented":false,"kind":"function","modifiers":[],"name":"uniswapFactory","nameLocation":"913:14:40","nodeType":"FunctionDefinition","parameters":{"id":4965,"nodeType":"ParameterList","parameters":[],"src":"927:2:40"},"returnParameters":{"id":4968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4969,"src":"953:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4966,"name":"address","nodeType":"ElementaryTypeName","src":"953:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"952:9:40"},"scope":5177,"src":"904:58:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"196b7a5f","id":4974,"implemented":false,"kind":"function","modifiers":[],"name":"baluniFactory","nameLocation":"979:13:40","nodeType":"FunctionDefinition","parameters":{"id":4970,"nodeType":"ParameterList","parameters":[],"src":"992:2:40"},"returnParameters":{"id":4973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4974,"src":"1018:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4971,"name":"address","nodeType":"ElementaryTypeName","src":"1018:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1017:9:40"},"scope":5177,"src":"970:57:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"060b5e82","id":4979,"implemented":false,"kind":"function","modifiers":[],"name":"baluniPeriphery","nameLocation":"1044:15:40","nodeType":"FunctionDefinition","parameters":{"id":4975,"nodeType":"ParameterList","parameters":[],"src":"1059:2:40"},"returnParameters":{"id":4978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4977,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4979,"src":"1085:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4976,"name":"address","nodeType":"ElementaryTypeName","src":"1085:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1084:9:40"},"scope":5177,"src":"1035:59:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7df107ea","id":4984,"implemented":false,"kind":"function","modifiers":[],"name":"agentFactory","nameLocation":"1111:12:40","nodeType":"FunctionDefinition","parameters":{"id":4980,"nodeType":"ParameterList","parameters":[],"src":"1123:2:40"},"returnParameters":{"id":4983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4984,"src":"1149:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4981,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1148:9:40"},"scope":5177,"src":"1102:56:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"60961528","id":4989,"implemented":false,"kind":"function","modifiers":[],"name":"marketOracle","nameLocation":"1175:12:40","nodeType":"FunctionDefinition","parameters":{"id":4985,"nodeType":"ParameterList","parameters":[],"src":"1187:2:40"},"returnParameters":{"id":4988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4987,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4989,"src":"1213:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4986,"name":"address","nodeType":"ElementaryTypeName","src":"1213:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1212:9:40"},"scope":5177,"src":"1166:56:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"01d22ccd","id":4994,"implemented":false,"kind":"function","modifiers":[],"name":"rebalancer","nameLocation":"1239:10:40","nodeType":"FunctionDefinition","parameters":{"id":4990,"nodeType":"ParameterList","parameters":[],"src":"1249:2:40"},"returnParameters":{"id":4993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4994,"src":"1275:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4991,"name":"address","nodeType":"ElementaryTypeName","src":"1275:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1274:9:40"},"scope":5177,"src":"1230:54:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"61d027b3","id":4999,"implemented":false,"kind":"function","modifiers":[],"name":"treasury","nameLocation":"1301:8:40","nodeType":"FunctionDefinition","parameters":{"id":4995,"nodeType":"ParameterList","parameters":[],"src":"1309:2:40"},"returnParameters":{"id":4998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4999,"src":"1335:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4996,"name":"address","nodeType":"ElementaryTypeName","src":"1335:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1334:9:40"},"scope":5177,"src":"1292:52:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"cc2a9a5b","id":5014,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1379:10:40","nodeType":"FunctionDefinition","parameters":{"id":5012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5001,"mutability":"mutable","name":"_usdc","nameLocation":"1408:5:40","nodeType":"VariableDeclaration","scope":5014,"src":"1400:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5000,"name":"address","nodeType":"ElementaryTypeName","src":"1400:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5003,"mutability":"mutable","name":"_wnative","nameLocation":"1432:8:40","nodeType":"VariableDeclaration","scope":5014,"src":"1424:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5002,"name":"address","nodeType":"ElementaryTypeName","src":"1424:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5005,"mutability":"mutable","name":"_1inchSpotAgg","nameLocation":"1459:13:40","nodeType":"VariableDeclaration","scope":5014,"src":"1451:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5004,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5007,"mutability":"mutable","name":"_uniRouter","nameLocation":"1491:10:40","nodeType":"VariableDeclaration","scope":5014,"src":"1483:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5006,"name":"address","nodeType":"ElementaryTypeName","src":"1483:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5009,"mutability":"mutable","name":"_uniFactory","nameLocation":"1520:11:40","nodeType":"VariableDeclaration","scope":5014,"src":"1512:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5008,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5011,"mutability":"mutable","name":"_rebalancer","nameLocation":"1550:11:40","nodeType":"VariableDeclaration","scope":5014,"src":"1542:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5010,"name":"address","nodeType":"ElementaryTypeName","src":"1542:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1389:179:40"},"returnParameters":{"id":5013,"nodeType":"ParameterList","parameters":[],"src":"1577:0:40"},"scope":5177,"src":"1370:208:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b0d60ba0","id":5031,"implemented":false,"kind":"function","modifiers":[],"name":"reinitialize","nameLocation":"1595:12:40","nodeType":"FunctionDefinition","parameters":{"id":5029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5016,"mutability":"mutable","name":"_usdc","nameLocation":"1626:5:40","nodeType":"VariableDeclaration","scope":5031,"src":"1618:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5015,"name":"address","nodeType":"ElementaryTypeName","src":"1618:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5018,"mutability":"mutable","name":"_wnative","nameLocation":"1650:8:40","nodeType":"VariableDeclaration","scope":5031,"src":"1642:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5017,"name":"address","nodeType":"ElementaryTypeName","src":"1642:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5020,"mutability":"mutable","name":"_1inchSpotAgg","nameLocation":"1677:13:40","nodeType":"VariableDeclaration","scope":5031,"src":"1669:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5019,"name":"address","nodeType":"ElementaryTypeName","src":"1669:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5022,"mutability":"mutable","name":"_uniRouter","nameLocation":"1709:10:40","nodeType":"VariableDeclaration","scope":5031,"src":"1701:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5021,"name":"address","nodeType":"ElementaryTypeName","src":"1701:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5024,"mutability":"mutable","name":"_uniFactory","nameLocation":"1738:11:40","nodeType":"VariableDeclaration","scope":5031,"src":"1730:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5023,"name":"address","nodeType":"ElementaryTypeName","src":"1730:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5026,"mutability":"mutable","name":"_rebalancer","nameLocation":"1768:11:40","nodeType":"VariableDeclaration","scope":5031,"src":"1760:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5025,"name":"address","nodeType":"ElementaryTypeName","src":"1760:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5028,"mutability":"mutable","name":"version","nameLocation":"1797:7:40","nodeType":"VariableDeclaration","scope":5031,"src":"1790:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5027,"name":"uint64","nodeType":"ElementaryTypeName","src":"1790:6:40","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1607:204:40"},"returnParameters":{"id":5030,"nodeType":"ParameterList","parameters":[],"src":"1820:0:40"},"scope":5177,"src":"1586:235:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"980d24f9","id":5036,"implemented":false,"kind":"function","modifiers":[],"name":"initializeMarketOracle","nameLocation":"1838:22:40","nodeType":"FunctionDefinition","parameters":{"id":5034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5033,"mutability":"mutable","name":"_marketOracle","nameLocation":"1869:13:40","nodeType":"VariableDeclaration","scope":5036,"src":"1861:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5032,"name":"address","nodeType":"ElementaryTypeName","src":"1861:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1860:23:40"},"returnParameters":{"id":5035,"nodeType":"ParameterList","parameters":[],"src":"1892:0:40"},"scope":5177,"src":"1829:64:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"35aa0efa","id":5041,"implemented":false,"kind":"function","modifiers":[],"name":"changeMarketOracle","nameLocation":"1910:18:40","nodeType":"FunctionDefinition","parameters":{"id":5039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5038,"mutability":"mutable","name":"_marketOracle","nameLocation":"1937:13:40","nodeType":"VariableDeclaration","scope":5041,"src":"1929:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5037,"name":"address","nodeType":"ElementaryTypeName","src":"1929:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1928:23:40"},"returnParameters":{"id":5040,"nodeType":"ParameterList","parameters":[],"src":"1960:0:40"},"scope":5177,"src":"1901:60:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"06497cb9","id":5046,"implemented":false,"kind":"function","modifiers":[],"name":"changeBpsFee","nameLocation":"1978:12:40","nodeType":"FunctionDefinition","parameters":{"id":5044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5043,"mutability":"mutable","name":"_newFee","nameLocation":"1999:7:40","nodeType":"VariableDeclaration","scope":5046,"src":"1991:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5042,"name":"uint256","nodeType":"ElementaryTypeName","src":"1991:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1990:17:40"},"returnParameters":{"id":5045,"nodeType":"ParameterList","parameters":[],"src":"2016:0:40"},"scope":5177,"src":"1969:48:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b14f2a39","id":5051,"implemented":false,"kind":"function","modifiers":[],"name":"changeTreasury","nameLocation":"2034:14:40","nodeType":"FunctionDefinition","parameters":{"id":5049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5048,"mutability":"mutable","name":"_newTreasury","nameLocation":"2057:12:40","nodeType":"VariableDeclaration","scope":5051,"src":"2049:20:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5047,"name":"address","nodeType":"ElementaryTypeName","src":"2049:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2048:22:40"},"returnParameters":{"id":5050,"nodeType":"ParameterList","parameters":[],"src":"2079:0:40"},"scope":5177,"src":"2025:55:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0918281b","id":5056,"implemented":false,"kind":"function","modifiers":[],"name":"changeRebalancer","nameLocation":"2097:16:40","nodeType":"FunctionDefinition","parameters":{"id":5054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5053,"mutability":"mutable","name":"_newRebalancer","nameLocation":"2122:14:40","nodeType":"VariableDeclaration","scope":5056,"src":"2114:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5052,"name":"address","nodeType":"ElementaryTypeName","src":"2114:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2113:24:40"},"returnParameters":{"id":5055,"nodeType":"ParameterList","parameters":[],"src":"2146:0:40"},"scope":5177,"src":"2088:59:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0a38abab","id":5061,"implemented":false,"kind":"function","modifiers":[],"name":"changeAgentFactory","nameLocation":"2164:18:40","nodeType":"FunctionDefinition","parameters":{"id":5059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5058,"mutability":"mutable","name":"_agentFactory","nameLocation":"2191:13:40","nodeType":"VariableDeclaration","scope":5061,"src":"2183:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5057,"name":"address","nodeType":"ElementaryTypeName","src":"2183:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2182:23:40"},"returnParameters":{"id":5060,"nodeType":"ParameterList","parameters":[],"src":"2214:0:40"},"scope":5177,"src":"2155:60:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"eedc3c50","id":5071,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"2232:7:40","nodeType":"FunctionDefinition","parameters":{"id":5069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5065,"mutability":"mutable","name":"calls","nameLocation":"2269:5:40","nodeType":"VariableDeclaration","scope":5071,"src":"2240:34:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_memory_ptr_$dyn_memory_ptr","typeString":"struct IBaluniV1Agent.Call[]"},"typeName":{"baseType":{"id":5063,"nodeType":"UserDefinedTypeName","pathNode":{"id":5062,"name":"IBaluniV1Agent.Call","nameLocations":["2240:14:40","2255:4:40"],"nodeType":"IdentifierPath","referencedDeclaration":3802,"src":"2240:19:40"},"referencedDeclaration":3802,"src":"2240:19:40","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$3802_storage_ptr","typeString":"struct IBaluniV1Agent.Call"}},"id":5064,"nodeType":"ArrayTypeName","src":"2240:21:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_storage_$dyn_storage_ptr","typeString":"struct IBaluniV1Agent.Call[]"}},"visibility":"internal"},{"constant":false,"id":5068,"mutability":"mutable","name":"tokensReturn","nameLocation":"2293:12:40","nodeType":"VariableDeclaration","scope":5071,"src":"2276:29:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5066,"name":"address","nodeType":"ElementaryTypeName","src":"2276:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5067,"nodeType":"ArrayTypeName","src":"2276:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2239:67:40"},"returnParameters":{"id":5070,"nodeType":"ParameterList","parameters":[],"src":"2315:0:40"},"scope":5177,"src":"2223:93:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2f865568","id":5076,"implemented":false,"kind":"function","modifiers":[],"name":"liquidate","nameLocation":"2333:9:40","nodeType":"FunctionDefinition","parameters":{"id":5074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5073,"mutability":"mutable","name":"token","nameLocation":"2351:5:40","nodeType":"VariableDeclaration","scope":5076,"src":"2343:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5072,"name":"address","nodeType":"ElementaryTypeName","src":"2343:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2342:15:40"},"returnParameters":{"id":5075,"nodeType":"ParameterList","parameters":[],"src":"2366:0:40"},"scope":5177,"src":"2324:43:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3c2066a9","id":5079,"implemented":false,"kind":"function","modifiers":[],"name":"liquidateAll","nameLocation":"2384:12:40","nodeType":"FunctionDefinition","parameters":{"id":5077,"nodeType":"ParameterList","parameters":[],"src":"2396:2:40"},"returnParameters":{"id":5078,"nodeType":"ParameterList","parameters":[],"src":"2407:0:40"},"scope":5177,"src":"2375:33:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1a168da2","id":5084,"implemented":false,"kind":"function","modifiers":[],"name":"burnERC20","nameLocation":"2425:9:40","nodeType":"FunctionDefinition","parameters":{"id":5082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5081,"mutability":"mutable","name":"burnAmount","nameLocation":"2443:10:40","nodeType":"VariableDeclaration","scope":5084,"src":"2435:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5080,"name":"uint256","nodeType":"ElementaryTypeName","src":"2435:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2434:20:40"},"returnParameters":{"id":5083,"nodeType":"ParameterList","parameters":[],"src":"2463:0:40"},"scope":5177,"src":"2416:48:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fe0a4dd1","id":5089,"implemented":false,"kind":"function","modifiers":[],"name":"burnUSDC","nameLocation":"2481:8:40","nodeType":"FunctionDefinition","parameters":{"id":5087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5086,"mutability":"mutable","name":"burnAmount","nameLocation":"2498:10:40","nodeType":"VariableDeclaration","scope":5089,"src":"2490:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5085,"name":"uint256","nodeType":"ElementaryTypeName","src":"2490:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2489:20:40"},"returnParameters":{"id":5088,"nodeType":"ParameterList","parameters":[],"src":"2518:0:40"},"scope":5177,"src":"2472:47:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"27d54a92","id":5096,"implemented":false,"kind":"function","modifiers":[],"name":"getAgentAddress","nameLocation":"2536:15:40","nodeType":"FunctionDefinition","parameters":{"id":5092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5091,"mutability":"mutable","name":"_user","nameLocation":"2560:5:40","nodeType":"VariableDeclaration","scope":5096,"src":"2552:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5090,"name":"address","nodeType":"ElementaryTypeName","src":"2552:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2551:15:40"},"returnParameters":{"id":5095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5094,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5096,"src":"2590:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5093,"name":"address","nodeType":"ElementaryTypeName","src":"2590:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2589:9:40"},"scope":5177,"src":"2527:72:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0cfc7386","id":5101,"implemented":false,"kind":"function","modifiers":[],"name":"mintWithUSDC","nameLocation":"2616:12:40","nodeType":"FunctionDefinition","parameters":{"id":5099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5098,"mutability":"mutable","name":"balAmountToMint","nameLocation":"2637:15:40","nodeType":"VariableDeclaration","scope":5101,"src":"2629:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5097,"name":"uint256","nodeType":"ElementaryTypeName","src":"2629:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2628:25:40"},"returnParameters":{"id":5100,"nodeType":"ParameterList","parameters":[],"src":"2662:0:40"},"scope":5177,"src":"2607:56:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"599f69f7","id":5118,"implemented":false,"kind":"function","modifiers":[],"name":"callRebalance","nameLocation":"2680:13:40","nodeType":"FunctionDefinition","parameters":{"id":5116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5104,"mutability":"mutable","name":"assets","nameLocation":"2723:6:40","nodeType":"VariableDeclaration","scope":5118,"src":"2704:25:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5102,"name":"address","nodeType":"ElementaryTypeName","src":"2704:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5103,"nodeType":"ArrayTypeName","src":"2704:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5107,"mutability":"mutable","name":"weights","nameLocation":"2759:7:40","nodeType":"VariableDeclaration","scope":5118,"src":"2740:26:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5105,"name":"uint256","nodeType":"ElementaryTypeName","src":"2740:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5106,"nodeType":"ArrayTypeName","src":"2740:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":5109,"mutability":"mutable","name":"sender","nameLocation":"2785:6:40","nodeType":"VariableDeclaration","scope":5118,"src":"2777:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5108,"name":"address","nodeType":"ElementaryTypeName","src":"2777:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5111,"mutability":"mutable","name":"receiver","nameLocation":"2810:8:40","nodeType":"VariableDeclaration","scope":5118,"src":"2802:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5110,"name":"address","nodeType":"ElementaryTypeName","src":"2802:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5113,"mutability":"mutable","name":"limit","nameLocation":"2837:5:40","nodeType":"VariableDeclaration","scope":5118,"src":"2829:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5112,"name":"uint256","nodeType":"ElementaryTypeName","src":"2829:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5115,"mutability":"mutable","name":"baseAsset","nameLocation":"2861:9:40","nodeType":"VariableDeclaration","scope":5118,"src":"2853:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5114,"name":"address","nodeType":"ElementaryTypeName","src":"2853:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2693:184:40"},"returnParameters":{"id":5117,"nodeType":"ParameterList","parameters":[],"src":"2886:0:40"},"scope":5177,"src":"2671:216:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"aa95d893","id":5125,"implemented":false,"kind":"function","modifiers":[],"name":"requiredUSDCtoMint","nameLocation":"2904:18:40","nodeType":"FunctionDefinition","parameters":{"id":5121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5120,"mutability":"mutable","name":"balAmountToMint","nameLocation":"2931:15:40","nodeType":"VariableDeclaration","scope":5125,"src":"2923:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5119,"name":"uint256","nodeType":"ElementaryTypeName","src":"2923:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2922:25:40"},"returnParameters":{"id":5124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5123,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5125,"src":"2971:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5122,"name":"uint256","nodeType":"ElementaryTypeName","src":"2971:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2970:9:40"},"scope":5177,"src":"2895:85:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fe330a51","id":5138,"implemented":false,"kind":"function","modifiers":[],"name":"calculateTokenShare","nameLocation":"2997:19:40","nodeType":"FunctionDefinition","parameters":{"id":5134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5127,"mutability":"mutable","name":"totalBaluni","nameLocation":"3035:11:40","nodeType":"VariableDeclaration","scope":5138,"src":"3027:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5126,"name":"uint256","nodeType":"ElementaryTypeName","src":"3027:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5129,"mutability":"mutable","name":"totalERC20Balance","nameLocation":"3065:17:40","nodeType":"VariableDeclaration","scope":5138,"src":"3057:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5128,"name":"uint256","nodeType":"ElementaryTypeName","src":"3057:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5131,"mutability":"mutable","name":"baluniAmount","nameLocation":"3101:12:40","nodeType":"VariableDeclaration","scope":5138,"src":"3093:20:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5130,"name":"uint256","nodeType":"ElementaryTypeName","src":"3093:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5133,"mutability":"mutable","name":"tokenDecimals","nameLocation":"3132:13:40","nodeType":"VariableDeclaration","scope":5138,"src":"3124:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5132,"name":"uint256","nodeType":"ElementaryTypeName","src":"3124:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3016:136:40"},"returnParameters":{"id":5137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5138,"src":"3176:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5135,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3175:9:40"},"scope":5177,"src":"2988:197:40","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"2bdd955a","id":5147,"implemented":false,"kind":"function","modifiers":[],"name":"tokenValuation","nameLocation":"3202:14:40","nodeType":"FunctionDefinition","parameters":{"id":5143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5140,"mutability":"mutable","name":"amount","nameLocation":"3225:6:40","nodeType":"VariableDeclaration","scope":5147,"src":"3217:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5139,"name":"uint256","nodeType":"ElementaryTypeName","src":"3217:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5142,"mutability":"mutable","name":"token","nameLocation":"3241:5:40","nodeType":"VariableDeclaration","scope":5147,"src":"3233:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5141,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3216:31:40"},"returnParameters":{"id":5146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5147,"src":"3271:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5144,"name":"uint256","nodeType":"ElementaryTypeName","src":"3271:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3270:9:40"},"scope":5177,"src":"3193:87:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"295b9300","id":5152,"implemented":false,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"3297:14:40","nodeType":"FunctionDefinition","parameters":{"id":5148,"nodeType":"ParameterList","parameters":[],"src":"3311:2:40"},"returnParameters":{"id":5151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5152,"src":"3337:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5149,"name":"uint256","nodeType":"ElementaryTypeName","src":"3337:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3336:9:40"},"scope":5177,"src":"3288:58:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"71ddcfb8","id":5159,"implemented":false,"kind":"function","modifiers":[],"name":"getUSDCShareValue","nameLocation":"3363:17:40","nodeType":"FunctionDefinition","parameters":{"id":5155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5154,"mutability":"mutable","name":"amount","nameLocation":"3389:6:40","nodeType":"VariableDeclaration","scope":5159,"src":"3381:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5153,"name":"uint256","nodeType":"ElementaryTypeName","src":"3381:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3380:16:40"},"returnParameters":{"id":5158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5159,"src":"3420:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5156,"name":"uint256","nodeType":"ElementaryTypeName","src":"3420:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3419:9:40"},"scope":5177,"src":"3354:75:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d483df1","id":5166,"implemented":false,"kind":"function","modifiers":[],"name":"fetchMarketPrices","nameLocation":"3446:17:40","nodeType":"FunctionDefinition","parameters":{"id":5160,"nodeType":"ParameterList","parameters":[],"src":"3463:2:40"},"returnParameters":{"id":5165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5166,"src":"3489:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5161,"name":"uint256","nodeType":"ElementaryTypeName","src":"3489:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5166,"src":"3498:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5163,"name":"uint256","nodeType":"ElementaryTypeName","src":"3498:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3488:18:40"},"scope":5177,"src":"3437:70:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0d8e6e2c","id":5171,"implemented":false,"kind":"function","modifiers":[],"name":"getVersion","nameLocation":"3524:10:40","nodeType":"FunctionDefinition","parameters":{"id":5167,"nodeType":"ParameterList","parameters":[],"src":"3534:2:40"},"returnParameters":{"id":5170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5171,"src":"3560:6:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5168,"name":"uint64","nodeType":"ElementaryTypeName","src":"3560:6:40","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3559:8:40"},"scope":5177,"src":"3515:53:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e73faa2d","id":5176,"implemented":false,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"3585:9:40","nodeType":"FunctionDefinition","parameters":{"id":5172,"nodeType":"ParameterList","parameters":[],"src":"3594:2:40"},"returnParameters":{"id":5175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5174,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5176,"src":"3620:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5173,"name":"uint256","nodeType":"ElementaryTypeName","src":"3620:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3619:9:40"},"scope":5177,"src":"3576:53:40","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5178,"src":"267:3365:40","usedErrors":[],"usedEvents":[]}],"src":"40:3594:40"},"id":40},"contracts/interfaces/IBaluniV1Swapper.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","exportedSymbols":{"IBaluniV1Swapper":[5208]},"id":5209,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":5179,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:41"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Swapper","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5208,"linearizedBaseContracts":[5208],"name":"IBaluniV1Swapper","nameLocation":"77:16:41","nodeType":"ContractDefinition","nodes":[{"functionSelector":"2d6bc8ea","id":5192,"implemented":false,"kind":"function","modifiers":[],"name":"singleSwap","nameLocation":"110:10:41","nodeType":"FunctionDefinition","parameters":{"id":5188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5181,"mutability":"mutable","name":"token0","nameLocation":"139:6:41","nodeType":"VariableDeclaration","scope":5192,"src":"131:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5180,"name":"address","nodeType":"ElementaryTypeName","src":"131:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5183,"mutability":"mutable","name":"token1","nameLocation":"164:6:41","nodeType":"VariableDeclaration","scope":5192,"src":"156:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5182,"name":"address","nodeType":"ElementaryTypeName","src":"156:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5185,"mutability":"mutable","name":"amount","nameLocation":"189:6:41","nodeType":"VariableDeclaration","scope":5192,"src":"181:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5184,"name":"uint256","nodeType":"ElementaryTypeName","src":"181:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5187,"mutability":"mutable","name":"receiver","nameLocation":"214:8:41","nodeType":"VariableDeclaration","scope":5192,"src":"206:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5186,"name":"address","nodeType":"ElementaryTypeName","src":"206:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"120:109:41"},"returnParameters":{"id":5191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5190,"mutability":"mutable","name":"amountOut","nameLocation":"256:9:41","nodeType":"VariableDeclaration","scope":5192,"src":"248:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5189,"name":"uint256","nodeType":"ElementaryTypeName","src":"248:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"247:19:41"},"scope":5208,"src":"101:166:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5efaaebb","id":5207,"implemented":false,"kind":"function","modifiers":[],"name":"multiHopSwap","nameLocation":"282:12:41","nodeType":"FunctionDefinition","parameters":{"id":5203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5194,"mutability":"mutable","name":"token0","nameLocation":"313:6:41","nodeType":"VariableDeclaration","scope":5207,"src":"305:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5193,"name":"address","nodeType":"ElementaryTypeName","src":"305:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5196,"mutability":"mutable","name":"token1","nameLocation":"338:6:41","nodeType":"VariableDeclaration","scope":5207,"src":"330:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5195,"name":"address","nodeType":"ElementaryTypeName","src":"330:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5198,"mutability":"mutable","name":"token2","nameLocation":"363:6:41","nodeType":"VariableDeclaration","scope":5207,"src":"355:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5197,"name":"address","nodeType":"ElementaryTypeName","src":"355:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5200,"mutability":"mutable","name":"amount","nameLocation":"388:6:41","nodeType":"VariableDeclaration","scope":5207,"src":"380:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5199,"name":"uint256","nodeType":"ElementaryTypeName","src":"380:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5202,"mutability":"mutable","name":"receiver","nameLocation":"413:8:41","nodeType":"VariableDeclaration","scope":5207,"src":"405:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5201,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"294:134:41"},"returnParameters":{"id":5206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5205,"mutability":"mutable","name":"amountOut","nameLocation":"455:9:41","nodeType":"VariableDeclaration","scope":5207,"src":"447:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5204,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"446:19:41"},"scope":5208,"src":"273:193:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5209,"src":"67:402:41","usedErrors":[],"usedEvents":[]}],"src":"40:431:41"},"id":41},"contracts/interfaces/IBaluniV1YearnVault.sol":{"ast":{"absolutePath":"contracts/interfaces/IBaluniV1YearnVault.sol","exportedSymbols":{"IBaluniV1YearnVault":[5274]},"id":5275,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":5210,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:42"},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1YearnVault","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5274,"linearizedBaseContracts":[5274],"name":"IBaluniV1YearnVault","nameLocation":"77:19:42","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cdf456e1","id":5215,"implemented":false,"kind":"function","modifiers":[],"name":"baseAsset","nameLocation":"113:9:42","nodeType":"FunctionDefinition","parameters":{"id":5211,"nodeType":"ParameterList","parameters":[],"src":"122:2:42"},"returnParameters":{"id":5214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5215,"src":"148:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5212,"name":"address","nodeType":"ElementaryTypeName","src":"148:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"147:9:42"},"scope":5274,"src":"104:53:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9db5df46","id":5220,"implemented":false,"kind":"function","modifiers":[],"name":"yearnVault","nameLocation":"172:10:42","nodeType":"FunctionDefinition","parameters":{"id":5216,"nodeType":"ParameterList","parameters":[],"src":"182:2:42"},"returnParameters":{"id":5219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5218,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5220,"src":"208:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5217,"name":"address","nodeType":"ElementaryTypeName","src":"208:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"207:9:42"},"scope":5274,"src":"163:54:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fdf262b7","id":5225,"implemented":false,"kind":"function","modifiers":[],"name":"quoteAsset","nameLocation":"232:10:42","nodeType":"FunctionDefinition","parameters":{"id":5221,"nodeType":"ParameterList","parameters":[],"src":"242:2:42"},"returnParameters":{"id":5224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5223,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5225,"src":"268:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5222,"name":"address","nodeType":"ElementaryTypeName","src":"268:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"267:9:42"},"scope":5274,"src":"223:54:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7b103999","id":5230,"implemented":false,"kind":"function","modifiers":[],"name":"registry","nameLocation":"292:8:42","nodeType":"FunctionDefinition","parameters":{"id":5226,"nodeType":"ParameterList","parameters":[],"src":"300:2:42"},"returnParameters":{"id":5229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5230,"src":"326:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5227,"name":"address","nodeType":"ElementaryTypeName","src":"326:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"325:9:42"},"scope":5274,"src":"283:52:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"36b77107","id":5235,"implemented":false,"kind":"function","modifiers":[],"name":"lastDeposit","nameLocation":"350:11:42","nodeType":"FunctionDefinition","parameters":{"id":5231,"nodeType":"ParameterList","parameters":[],"src":"361:2:42"},"returnParameters":{"id":5234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5233,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5235,"src":"387:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5232,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"386:9:42"},"scope":5274,"src":"341:55:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":5242,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"411:7:42","nodeType":"FunctionDefinition","parameters":{"id":5240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5237,"mutability":"mutable","name":"amount","nameLocation":"427:6:42","nodeType":"VariableDeclaration","scope":5242,"src":"419:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5236,"name":"uint256","nodeType":"ElementaryTypeName","src":"419:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5239,"mutability":"mutable","name":"to","nameLocation":"443:2:42","nodeType":"VariableDeclaration","scope":5242,"src":"435:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5238,"name":"address","nodeType":"ElementaryTypeName","src":"435:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"418:28:42"},"returnParameters":{"id":5241,"nodeType":"ParameterList","parameters":[],"src":"455:0:42"},"scope":5274,"src":"402:54:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"00f714ce","id":5249,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"471:8:42","nodeType":"FunctionDefinition","parameters":{"id":5247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5244,"mutability":"mutable","name":"shares","nameLocation":"488:6:42","nodeType":"VariableDeclaration","scope":5249,"src":"480:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5243,"name":"uint256","nodeType":"ElementaryTypeName","src":"480:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5246,"mutability":"mutable","name":"to","nameLocation":"504:2:42","nodeType":"VariableDeclaration","scope":5249,"src":"496:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5245,"name":"address","nodeType":"ElementaryTypeName","src":"496:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"479:28:42"},"returnParameters":{"id":5248,"nodeType":"ParameterList","parameters":[],"src":"516:0:42"},"scope":5274,"src":"462:55:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a6f2ae3a","id":5252,"implemented":false,"kind":"function","modifiers":[],"name":"buy","nameLocation":"532:3:42","nodeType":"FunctionDefinition","parameters":{"id":5250,"nodeType":"ParameterList","parameters":[],"src":"535:2:42"},"returnParameters":{"id":5251,"nodeType":"ParameterList","parameters":[],"src":"546:0:42"},"scope":5274,"src":"523:24:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8456cb59","id":5255,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"562:5:42","nodeType":"FunctionDefinition","parameters":{"id":5253,"nodeType":"ParameterList","parameters":[],"src":"567:2:42"},"returnParameters":{"id":5254,"nodeType":"ParameterList","parameters":[],"src":"578:0:42"},"scope":5274,"src":"553:26:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f4ba83a","id":5258,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"594:7:42","nodeType":"FunctionDefinition","parameters":{"id":5256,"nodeType":"ParameterList","parameters":[],"src":"601:2:42"},"returnParameters":{"id":5257,"nodeType":"ParameterList","parameters":[],"src":"612:0:42"},"scope":5274,"src":"585:28:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"295b9300","id":5263,"implemented":false,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"628:14:42","nodeType":"FunctionDefinition","parameters":{"id":5259,"nodeType":"ParameterList","parameters":[],"src":"642:2:42"},"returnParameters":{"id":5262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5263,"src":"668:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5260,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"667:9:42"},"scope":5274,"src":"619:58:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e73faa2d","id":5268,"implemented":false,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"692:9:42","nodeType":"FunctionDefinition","parameters":{"id":5264,"nodeType":"ParameterList","parameters":[],"src":"701:2:42"},"returnParameters":{"id":5267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5268,"src":"727:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5265,"name":"uint256","nodeType":"ElementaryTypeName","src":"727:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"726:9:42"},"scope":5274,"src":"683:53:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"374261ab","id":5273,"implemented":false,"kind":"function","modifiers":[],"name":"interestEarned","nameLocation":"751:14:42","nodeType":"FunctionDefinition","parameters":{"id":5269,"nodeType":"ParameterList","parameters":[],"src":"765:2:42"},"returnParameters":{"id":5272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5273,"src":"791:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5270,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"790:9:42"},"scope":5274,"src":"742:58:42","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5275,"src":"67:736:42","usedErrors":[],"usedEvents":[]}],"src":"40:765:42"},"id":42},"contracts/interfaces/IStaticOracle.sol":{"ast":{"absolutePath":"contracts/interfaces/IStaticOracle.sol","exportedSymbols":{"IStaticOracle":[5456],"IUniswapV3Factory":[3153]},"id":5457,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5276,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"48:23:43"},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","file":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","id":5277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5457,"sourceUnit":3154,"src":"75:69:43","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IStaticOracle","contractDependencies":[],"contractKind":"interface","documentation":{"id":5278,"nodeType":"StructuredDocumentation","src":"148:115:43","text":"@title Uniswap V3 Static Oracle\n @notice Oracle contract for calculating price quoting against Uniswap V3"},"fullyImplemented":false,"id":5456,"linearizedBaseContracts":[5456],"name":"IStaticOracle","nameLocation":"273:13:43","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5279,"nodeType":"StructuredDocumentation","src":"294:189:43","text":"@notice Returns the address of the Uniswap V3 factory\n @dev This value is assigned during deployment and cannot be changed\n @return The address of the Uniswap V3 factory"},"functionSelector":"f73e5aab","id":5285,"implemented":false,"kind":"function","modifiers":[],"name":"UNISWAP_V3_FACTORY","nameLocation":"498:18:43","nodeType":"FunctionDefinition","parameters":{"id":5280,"nodeType":"ParameterList","parameters":[],"src":"516:2:43"},"returnParameters":{"id":5284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5285,"src":"542:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Factory_$3153","typeString":"contract IUniswapV3Factory"},"typeName":{"id":5282,"nodeType":"UserDefinedTypeName","pathNode":{"id":5281,"name":"IUniswapV3Factory","nameLocations":["542:17:43"],"nodeType":"IdentifierPath","referencedDeclaration":3153,"src":"542:17:43"},"referencedDeclaration":3153,"src":"542:17:43","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Factory_$3153","typeString":"contract IUniswapV3Factory"}},"visibility":"internal"}],"src":"541:19:43"},"scope":5456,"src":"489:72:43","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5286,"nodeType":"StructuredDocumentation","src":"569:251:43","text":"@notice Returns how many observations are needed per minute in Uniswap V3 oracles, on the deployed chain\n @dev This value is assigned during deployment and cannot be changed\n @return Number of observation that are needed per minute"},"functionSelector":"b7604e53","id":5291,"implemented":false,"kind":"function","modifiers":[],"name":"CARDINALITY_PER_MINUTE","nameLocation":"835:22:43","nodeType":"FunctionDefinition","parameters":{"id":5287,"nodeType":"ParameterList","parameters":[],"src":"857:2:43"},"returnParameters":{"id":5290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5291,"src":"883:5:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5288,"name":"uint8","nodeType":"ElementaryTypeName","src":"883:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"882:7:43"},"scope":5456,"src":"826:64:43","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5292,"nodeType":"StructuredDocumentation","src":"898:84:43","text":"@notice Returns all supported fee tiers\n @return The supported fee tiers"},"functionSelector":"bc4389f7","id":5298,"implemented":false,"kind":"function","modifiers":[],"name":"supportedFeeTiers","nameLocation":"997:17:43","nodeType":"FunctionDefinition","parameters":{"id":5293,"nodeType":"ParameterList","parameters":[],"src":"1014:2:43"},"returnParameters":{"id":5297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5298,"src":"1040:15:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint24_$dyn_memory_ptr","typeString":"uint24[]"},"typeName":{"baseType":{"id":5294,"name":"uint24","nodeType":"ElementaryTypeName","src":"1040:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":5295,"nodeType":"ArrayTypeName","src":"1040:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint24_$dyn_storage_ptr","typeString":"uint24[]"}},"visibility":"internal"}],"src":"1039:17:43"},"scope":5456,"src":"988:69:43","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5299,"nodeType":"StructuredDocumentation","src":"1065:224:43","text":"@notice Returns whether a specific pair can be supported by the oracle\n @dev The pair can be provided in tokenA/tokenB or tokenB/tokenA order\n @return Whether the given pair can be supported by the oracle"},"functionSelector":"9446994a","id":5308,"implemented":false,"kind":"function","modifiers":[],"name":"isPairSupported","nameLocation":"1304:15:43","nodeType":"FunctionDefinition","parameters":{"id":5304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5301,"mutability":"mutable","name":"tokenA","nameLocation":"1328:6:43","nodeType":"VariableDeclaration","scope":5308,"src":"1320:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5300,"name":"address","nodeType":"ElementaryTypeName","src":"1320:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5303,"mutability":"mutable","name":"tokenB","nameLocation":"1344:6:43","nodeType":"VariableDeclaration","scope":5308,"src":"1336:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5302,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1319:32:43"},"returnParameters":{"id":5307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5308,"src":"1375:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5305,"name":"bool","nodeType":"ElementaryTypeName","src":"1375:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1374:6:43"},"scope":5456,"src":"1295:86:43","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5309,"nodeType":"StructuredDocumentation","src":"1389:191:43","text":"@notice Returns all existing pools for the given pair\n @dev The pair can be provided in tokenA/tokenB or tokenB/tokenA order\n @return All existing pools for the given pair"},"functionSelector":"62d99119","id":5319,"implemented":false,"kind":"function","modifiers":[],"name":"getAllPoolsForPair","nameLocation":"1595:18:43","nodeType":"FunctionDefinition","parameters":{"id":5314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5311,"mutability":"mutable","name":"tokenA","nameLocation":"1622:6:43","nodeType":"VariableDeclaration","scope":5319,"src":"1614:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5310,"name":"address","nodeType":"ElementaryTypeName","src":"1614:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5313,"mutability":"mutable","name":"tokenB","nameLocation":"1638:6:43","nodeType":"VariableDeclaration","scope":5319,"src":"1630:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5312,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1613:32:43"},"returnParameters":{"id":5318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5319,"src":"1669:16:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5315,"name":"address","nodeType":"ElementaryTypeName","src":"1669:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5316,"nodeType":"ArrayTypeName","src":"1669:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1668:18:43"},"scope":5456,"src":"1586:101:43","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5320,"nodeType":"StructuredDocumentation","src":"1695:809:43","text":"@notice Returns a quote, based on the given tokens and amount, by querying all of the pair's pools\n @dev If some pools are not configured correctly for the given period, then they will be ignored\n @dev Will revert if there are no pools available/configured for the pair and period combination\n @param baseAmount Amount of token to be converted\n @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\n @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\n @param period Number of seconds from which to calculate the TWAP\n @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\n @return queriedPools The pools that were queried to calculate the quote"},"functionSelector":"0757bc81","id":5336,"implemented":false,"kind":"function","modifiers":[],"name":"quoteAllAvailablePoolsWithTimePeriod","nameLocation":"2519:36:43","nodeType":"FunctionDefinition","parameters":{"id":5329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5322,"mutability":"mutable","name":"baseAmount","nameLocation":"2574:10:43","nodeType":"VariableDeclaration","scope":5336,"src":"2566:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5321,"name":"uint128","nodeType":"ElementaryTypeName","src":"2566:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5324,"mutability":"mutable","name":"baseToken","nameLocation":"2603:9:43","nodeType":"VariableDeclaration","scope":5336,"src":"2595:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5323,"name":"address","nodeType":"ElementaryTypeName","src":"2595:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5326,"mutability":"mutable","name":"quoteToken","nameLocation":"2631:10:43","nodeType":"VariableDeclaration","scope":5336,"src":"2623:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5325,"name":"address","nodeType":"ElementaryTypeName","src":"2623:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5328,"mutability":"mutable","name":"period","nameLocation":"2659:6:43","nodeType":"VariableDeclaration","scope":5336,"src":"2652:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5327,"name":"uint32","nodeType":"ElementaryTypeName","src":"2652:6:43","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2555:117:43"},"returnParameters":{"id":5335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5331,"mutability":"mutable","name":"quoteAmount","nameLocation":"2704:11:43","nodeType":"VariableDeclaration","scope":5336,"src":"2696:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5330,"name":"uint256","nodeType":"ElementaryTypeName","src":"2696:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5334,"mutability":"mutable","name":"queriedPools","nameLocation":"2734:12:43","nodeType":"VariableDeclaration","scope":5336,"src":"2717:29:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5332,"name":"address","nodeType":"ElementaryTypeName","src":"2717:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5333,"nodeType":"ArrayTypeName","src":"2717:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2695:52:43"},"scope":5456,"src":"2510:238:43","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5337,"nodeType":"StructuredDocumentation","src":"2756:863:43","text":"@notice Returns a quote, based on the given tokens and amount, by querying only the specified fee tiers\n @dev Will revert if the pair does not have a pool for one of the given fee tiers, or if one of the pools\n is not prepared/configured correctly for the given period\n @param baseAmount Amount of token to be converted\n @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\n @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\n @param feeTiers The fee tiers to consider when calculating the quote\n @param period Number of seconds from which to calculate the TWAP\n @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\n @return queriedPools The pools that were queried to calculate the quote"},"functionSelector":"d8045eca","id":5356,"implemented":false,"kind":"function","modifiers":[],"name":"quoteSpecificFeeTiersWithTimePeriod","nameLocation":"3634:35:43","nodeType":"FunctionDefinition","parameters":{"id":5349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5339,"mutability":"mutable","name":"baseAmount","nameLocation":"3688:10:43","nodeType":"VariableDeclaration","scope":5356,"src":"3680:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5338,"name":"uint128","nodeType":"ElementaryTypeName","src":"3680:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5341,"mutability":"mutable","name":"baseToken","nameLocation":"3717:9:43","nodeType":"VariableDeclaration","scope":5356,"src":"3709:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5340,"name":"address","nodeType":"ElementaryTypeName","src":"3709:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5343,"mutability":"mutable","name":"quoteToken","nameLocation":"3745:10:43","nodeType":"VariableDeclaration","scope":5356,"src":"3737:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5342,"name":"address","nodeType":"ElementaryTypeName","src":"3737:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5346,"mutability":"mutable","name":"feeTiers","nameLocation":"3784:8:43","nodeType":"VariableDeclaration","scope":5356,"src":"3766:26:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint24_$dyn_calldata_ptr","typeString":"uint24[]"},"typeName":{"baseType":{"id":5344,"name":"uint24","nodeType":"ElementaryTypeName","src":"3766:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":5345,"nodeType":"ArrayTypeName","src":"3766:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint24_$dyn_storage_ptr","typeString":"uint24[]"}},"visibility":"internal"},{"constant":false,"id":5348,"mutability":"mutable","name":"period","nameLocation":"3810:6:43","nodeType":"VariableDeclaration","scope":5356,"src":"3803:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5347,"name":"uint32","nodeType":"ElementaryTypeName","src":"3803:6:43","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"3669:154:43"},"returnParameters":{"id":5355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5351,"mutability":"mutable","name":"quoteAmount","nameLocation":"3855:11:43","nodeType":"VariableDeclaration","scope":5356,"src":"3847:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5350,"name":"uint256","nodeType":"ElementaryTypeName","src":"3847:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5354,"mutability":"mutable","name":"queriedPools","nameLocation":"3885:12:43","nodeType":"VariableDeclaration","scope":5356,"src":"3868:29:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5352,"name":"address","nodeType":"ElementaryTypeName","src":"3868:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5353,"nodeType":"ArrayTypeName","src":"3868:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3846:52:43"},"scope":5456,"src":"3625:274:43","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5357,"nodeType":"StructuredDocumentation","src":"3907:694:43","text":"@notice Returns a quote, based on the given tokens and amount, by querying only the specified pools\n @dev Will revert if one of the pools is not prepared/configured correctly for the given period\n @param baseAmount Amount of token to be converted\n @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\n @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\n @param pools The pools to consider when calculating the quote\n @param period Number of seconds from which to calculate the TWAP\n @return quoteAmount Amount of quoteToken received for baseAmount of baseToken"},"functionSelector":"07f7ca9f","id":5373,"implemented":false,"kind":"function","modifiers":[],"name":"quoteSpecificPoolsWithTimePeriod","nameLocation":"4616:32:43","nodeType":"FunctionDefinition","parameters":{"id":5369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5359,"mutability":"mutable","name":"baseAmount","nameLocation":"4667:10:43","nodeType":"VariableDeclaration","scope":5373,"src":"4659:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5358,"name":"uint128","nodeType":"ElementaryTypeName","src":"4659:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5361,"mutability":"mutable","name":"baseToken","nameLocation":"4696:9:43","nodeType":"VariableDeclaration","scope":5373,"src":"4688:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5360,"name":"address","nodeType":"ElementaryTypeName","src":"4688:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5363,"mutability":"mutable","name":"quoteToken","nameLocation":"4724:10:43","nodeType":"VariableDeclaration","scope":5373,"src":"4716:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5362,"name":"address","nodeType":"ElementaryTypeName","src":"4716:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5366,"mutability":"mutable","name":"pools","nameLocation":"4764:5:43","nodeType":"VariableDeclaration","scope":5373,"src":"4745:24:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5364,"name":"address","nodeType":"ElementaryTypeName","src":"4745:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5365,"nodeType":"ArrayTypeName","src":"4745:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5368,"mutability":"mutable","name":"period","nameLocation":"4787:6:43","nodeType":"VariableDeclaration","scope":5373,"src":"4780:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5367,"name":"uint32","nodeType":"ElementaryTypeName","src":"4780:6:43","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4648:152:43"},"returnParameters":{"id":5372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5371,"mutability":"mutable","name":"quoteAmount","nameLocation":"4832:11:43","nodeType":"VariableDeclaration","scope":5373,"src":"4824:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5370,"name":"uint256","nodeType":"ElementaryTypeName","src":"4824:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4823:21:43"},"scope":5456,"src":"4607:238:43","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":5374,"nodeType":"StructuredDocumentation","src":"4853:457:43","text":"@notice Will initialize all existing pools for the given pair, so that they can be queried with the given period in the future\n @dev Will revert if there are no pools available for the pair and period combination\n @param tokenA One of the pair's tokens\n @param tokenB The other of the pair's tokens\n @param period The period that will be guaranteed when quoting\n @return preparedPools The pools that were prepared"},"functionSelector":"1c49cbb5","id":5386,"implemented":false,"kind":"function","modifiers":[],"name":"prepareAllAvailablePoolsWithTimePeriod","nameLocation":"5325:38:43","nodeType":"FunctionDefinition","parameters":{"id":5381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5376,"mutability":"mutable","name":"tokenA","nameLocation":"5382:6:43","nodeType":"VariableDeclaration","scope":5386,"src":"5374:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5375,"name":"address","nodeType":"ElementaryTypeName","src":"5374:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5378,"mutability":"mutable","name":"tokenB","nameLocation":"5407:6:43","nodeType":"VariableDeclaration","scope":5386,"src":"5399:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5377,"name":"address","nodeType":"ElementaryTypeName","src":"5399:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5380,"mutability":"mutable","name":"period","nameLocation":"5431:6:43","nodeType":"VariableDeclaration","scope":5386,"src":"5424:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5379,"name":"uint32","nodeType":"ElementaryTypeName","src":"5424:6:43","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"5363:81:43"},"returnParameters":{"id":5385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5384,"mutability":"mutable","name":"preparedPools","nameLocation":"5480:13:43","nodeType":"VariableDeclaration","scope":5386,"src":"5463:30:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5382,"name":"address","nodeType":"ElementaryTypeName","src":"5463:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5383,"nodeType":"ArrayTypeName","src":"5463:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5462:32:43"},"scope":5456,"src":"5316:179:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5387,"nodeType":"StructuredDocumentation","src":"5503:538:43","text":"@notice Will initialize the pair's pools with the specified fee tiers, so that they can be queried with the given period in the future\n @dev Will revert if the pair does not have a pool for a given fee tier\n @param tokenA One of the pair's tokens\n @param tokenB The other of the pair's tokens\n @param feeTiers The fee tiers to consider when searching for the pair's pools\n @param period The period that will be guaranteed when quoting\n @return preparedPools The pools that were prepared"},"functionSelector":"e85dd383","id":5402,"implemented":false,"kind":"function","modifiers":[],"name":"prepareSpecificFeeTiersWithTimePeriod","nameLocation":"6056:37:43","nodeType":"FunctionDefinition","parameters":{"id":5397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5389,"mutability":"mutable","name":"tokenA","nameLocation":"6112:6:43","nodeType":"VariableDeclaration","scope":5402,"src":"6104:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5388,"name":"address","nodeType":"ElementaryTypeName","src":"6104:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5391,"mutability":"mutable","name":"tokenB","nameLocation":"6137:6:43","nodeType":"VariableDeclaration","scope":5402,"src":"6129:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5390,"name":"address","nodeType":"ElementaryTypeName","src":"6129:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5394,"mutability":"mutable","name":"feeTiers","nameLocation":"6172:8:43","nodeType":"VariableDeclaration","scope":5402,"src":"6154:26:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint24_$dyn_calldata_ptr","typeString":"uint24[]"},"typeName":{"baseType":{"id":5392,"name":"uint24","nodeType":"ElementaryTypeName","src":"6154:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":5393,"nodeType":"ArrayTypeName","src":"6154:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint24_$dyn_storage_ptr","typeString":"uint24[]"}},"visibility":"internal"},{"constant":false,"id":5396,"mutability":"mutable","name":"period","nameLocation":"6198:6:43","nodeType":"VariableDeclaration","scope":5402,"src":"6191:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5395,"name":"uint32","nodeType":"ElementaryTypeName","src":"6191:6:43","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6093:118:43"},"returnParameters":{"id":5401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5400,"mutability":"mutable","name":"preparedPools","nameLocation":"6247:13:43","nodeType":"VariableDeclaration","scope":5402,"src":"6230:30:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5398,"name":"address","nodeType":"ElementaryTypeName","src":"6230:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5399,"nodeType":"ArrayTypeName","src":"6230:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6229:32:43"},"scope":5456,"src":"6047:215:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5403,"nodeType":"StructuredDocumentation","src":"6270:225:43","text":"@notice Will initialize all given pools, so that they can be queried with the given period in the future\n @param pools The pools to initialize\n @param period The period that will be guaranteed when quoting"},"functionSelector":"354b1a7d","id":5411,"implemented":false,"kind":"function","modifiers":[],"name":"prepareSpecificPoolsWithTimePeriod","nameLocation":"6510:34:43","nodeType":"FunctionDefinition","parameters":{"id":5409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5406,"mutability":"mutable","name":"pools","nameLocation":"6564:5:43","nodeType":"VariableDeclaration","scope":5411,"src":"6545:24:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5404,"name":"address","nodeType":"ElementaryTypeName","src":"6545:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5405,"nodeType":"ArrayTypeName","src":"6545:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5408,"mutability":"mutable","name":"period","nameLocation":"6578:6:43","nodeType":"VariableDeclaration","scope":5411,"src":"6571:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5407,"name":"uint32","nodeType":"ElementaryTypeName","src":"6571:6:43","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6544:41:43"},"returnParameters":{"id":5410,"nodeType":"ParameterList","parameters":[],"src":"6594:0:43"},"scope":5456,"src":"6501:94:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5412,"nodeType":"StructuredDocumentation","src":"6603:475:43","text":"@notice Will increase observations for all existing pools for the given pair, so they start accruing information for twap calculations\n @dev Will revert if there are no pools available for the pair and period combination\n @param tokenA One of the pair's tokens\n @param tokenB The other of the pair's tokens\n @param cardinality The cardinality that will be guaranteed when quoting\n @return preparedPools The pools that were prepared"},"functionSelector":"1b2a933c","id":5424,"implemented":false,"kind":"function","modifiers":[],"name":"prepareAllAvailablePoolsWithCardinality","nameLocation":"7093:39:43","nodeType":"FunctionDefinition","parameters":{"id":5419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5414,"mutability":"mutable","name":"tokenA","nameLocation":"7151:6:43","nodeType":"VariableDeclaration","scope":5424,"src":"7143:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5413,"name":"address","nodeType":"ElementaryTypeName","src":"7143:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5416,"mutability":"mutable","name":"tokenB","nameLocation":"7176:6:43","nodeType":"VariableDeclaration","scope":5424,"src":"7168:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5415,"name":"address","nodeType":"ElementaryTypeName","src":"7168:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5418,"mutability":"mutable","name":"cardinality","nameLocation":"7200:11:43","nodeType":"VariableDeclaration","scope":5424,"src":"7193:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5417,"name":"uint16","nodeType":"ElementaryTypeName","src":"7193:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"7132:86:43"},"returnParameters":{"id":5423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5422,"mutability":"mutable","name":"preparedPools","nameLocation":"7254:13:43","nodeType":"VariableDeclaration","scope":5424,"src":"7237:30:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5420,"name":"address","nodeType":"ElementaryTypeName","src":"7237:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5421,"nodeType":"ArrayTypeName","src":"7237:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"7236:32:43"},"scope":5456,"src":"7084:185:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5425,"nodeType":"StructuredDocumentation","src":"7277:552:43","text":"@notice Will increase the pair's pools with the specified fee tiers observations, so they start accruing information for twap calculations\n @dev Will revert if the pair does not have a pool for a given fee tier\n @param tokenA One of the pair's tokens\n @param tokenB The other of the pair's tokens\n @param feeTiers The fee tiers to consider when searching for the pair's pools\n @param cardinality The cardinality that will be guaranteed when quoting\n @return preparedPools The pools that were prepared"},"functionSelector":"33e4c28e","id":5440,"implemented":false,"kind":"function","modifiers":[],"name":"prepareSpecificFeeTiersWithCardinality","nameLocation":"7844:38:43","nodeType":"FunctionDefinition","parameters":{"id":5435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5427,"mutability":"mutable","name":"tokenA","nameLocation":"7901:6:43","nodeType":"VariableDeclaration","scope":5440,"src":"7893:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5426,"name":"address","nodeType":"ElementaryTypeName","src":"7893:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5429,"mutability":"mutable","name":"tokenB","nameLocation":"7926:6:43","nodeType":"VariableDeclaration","scope":5440,"src":"7918:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5428,"name":"address","nodeType":"ElementaryTypeName","src":"7918:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5432,"mutability":"mutable","name":"feeTiers","nameLocation":"7961:8:43","nodeType":"VariableDeclaration","scope":5440,"src":"7943:26:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint24_$dyn_calldata_ptr","typeString":"uint24[]"},"typeName":{"baseType":{"id":5430,"name":"uint24","nodeType":"ElementaryTypeName","src":"7943:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"id":5431,"nodeType":"ArrayTypeName","src":"7943:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint24_$dyn_storage_ptr","typeString":"uint24[]"}},"visibility":"internal"},{"constant":false,"id":5434,"mutability":"mutable","name":"cardinality","nameLocation":"7987:11:43","nodeType":"VariableDeclaration","scope":5440,"src":"7980:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5433,"name":"uint16","nodeType":"ElementaryTypeName","src":"7980:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"7882:123:43"},"returnParameters":{"id":5439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5438,"mutability":"mutable","name":"preparedPools","nameLocation":"8041:13:43","nodeType":"VariableDeclaration","scope":5440,"src":"8024:30:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5436,"name":"address","nodeType":"ElementaryTypeName","src":"8024:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5437,"nodeType":"ArrayTypeName","src":"8024:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"8023:32:43"},"scope":5456,"src":"7835:221:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5441,"nodeType":"StructuredDocumentation","src":"8064:239:43","text":"@notice Will increase all given pools observations, so they start accruing information for twap calculations\n @param pools The pools to initialize\n @param cardinality The cardinality that will be guaranteed when quoting"},"functionSelector":"55eba792","id":5449,"implemented":false,"kind":"function","modifiers":[],"name":"prepareSpecificPoolsWithCardinality","nameLocation":"8318:35:43","nodeType":"FunctionDefinition","parameters":{"id":5447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5444,"mutability":"mutable","name":"pools","nameLocation":"8373:5:43","nodeType":"VariableDeclaration","scope":5449,"src":"8354:24:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5442,"name":"address","nodeType":"ElementaryTypeName","src":"8354:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5443,"nodeType":"ArrayTypeName","src":"8354:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5446,"mutability":"mutable","name":"cardinality","nameLocation":"8387:11:43","nodeType":"VariableDeclaration","scope":5449,"src":"8380:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5445,"name":"uint16","nodeType":"ElementaryTypeName","src":"8380:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"8353:46:43"},"returnParameters":{"id":5448,"nodeType":"ParameterList","parameters":[],"src":"8408:0:43"},"scope":5456,"src":"8309:100:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5450,"nodeType":"StructuredDocumentation","src":"8417:168:43","text":"@notice Adds support for a new fee tier\n @dev Will revert if the given tier is invalid, or already supported\n @param feeTier The new fee tier to add"},"functionSelector":"43dfc58d","id":5455,"implemented":false,"kind":"function","modifiers":[],"name":"addNewFeeTier","nameLocation":"8600:13:43","nodeType":"FunctionDefinition","parameters":{"id":5453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5452,"mutability":"mutable","name":"feeTier","nameLocation":"8621:7:43","nodeType":"VariableDeclaration","scope":5455,"src":"8614:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5451,"name":"uint24","nodeType":"ElementaryTypeName","src":"8614:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"8613:16:43"},"returnParameters":{"id":5454,"nodeType":"ParameterList","parameters":[],"src":"8638:0:43"},"scope":5456,"src":"8591:48:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5457,"src":"263:8379:43","usedErrors":[],"usedEvents":[]}],"src":"48:8596:43"},"id":43},"contracts/interfaces/IYearnVault.sol":{"ast":{"absolutePath":"contracts/interfaces/IYearnVault.sol","exportedSymbols":{"IYearnVault":[5531]},"id":5532,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5458,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:44"},{"abstract":false,"baseContracts":[],"canonicalName":"IYearnVault","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5531,"linearizedBaseContracts":[5531],"name":"IYearnVault","nameLocation":"70:11:44","nodeType":"ContractDefinition","nodes":[{"functionSelector":"38d52e0f","id":5463,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nameLocation":"98:5:44","nodeType":"FunctionDefinition","parameters":{"id":5459,"nodeType":"ParameterList","parameters":[],"src":"103:2:44"},"returnParameters":{"id":5462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5461,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5463,"src":"129:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5460,"name":"address","nodeType":"ElementaryTypeName","src":"129:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"128:9:44"},"scope":5531,"src":"89:49:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":5470,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"155:9:44","nodeType":"FunctionDefinition","parameters":{"id":5466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5465,"mutability":"mutable","name":"owner","nameLocation":"173:5:44","nodeType":"VariableDeclaration","scope":5470,"src":"165:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5464,"name":"address","nodeType":"ElementaryTypeName","src":"165:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"164:15:44"},"returnParameters":{"id":5469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5468,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5470,"src":"203:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5467,"name":"uint256","nodeType":"ElementaryTypeName","src":"203:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"202:9:44"},"scope":5531,"src":"146:66:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"402d267d","id":5477,"implemented":false,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"229:10:44","nodeType":"FunctionDefinition","parameters":{"id":5473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5472,"mutability":"mutable","name":"receiver","nameLocation":"248:8:44","nodeType":"VariableDeclaration","scope":5477,"src":"240:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5471,"name":"address","nodeType":"ElementaryTypeName","src":"240:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"239:18:44"},"returnParameters":{"id":5476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5477,"src":"281:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5474,"name":"uint256","nodeType":"ElementaryTypeName","src":"281:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"280:9:44"},"scope":5531,"src":"220:70:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ba087652","id":5488,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"307:6:44","nodeType":"FunctionDefinition","parameters":{"id":5484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5479,"mutability":"mutable","name":"shares","nameLocation":"322:6:44","nodeType":"VariableDeclaration","scope":5488,"src":"314:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5478,"name":"uint256","nodeType":"ElementaryTypeName","src":"314:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5481,"mutability":"mutable","name":"receiver","nameLocation":"338:8:44","nodeType":"VariableDeclaration","scope":5488,"src":"330:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5480,"name":"address","nodeType":"ElementaryTypeName","src":"330:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5483,"mutability":"mutable","name":"owner","nameLocation":"356:5:44","nodeType":"VariableDeclaration","scope":5488,"src":"348:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5482,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"313:49:44"},"returnParameters":{"id":5487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5488,"src":"381:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5485,"name":"uint256","nodeType":"ElementaryTypeName","src":"381:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"380:9:44"},"scope":5531,"src":"298:92:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":5497,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"407:7:44","nodeType":"FunctionDefinition","parameters":{"id":5493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5490,"mutability":"mutable","name":"assets","nameLocation":"423:6:44","nodeType":"VariableDeclaration","scope":5497,"src":"415:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5489,"name":"uint256","nodeType":"ElementaryTypeName","src":"415:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5492,"mutability":"mutable","name":"receiver","nameLocation":"439:8:44","nodeType":"VariableDeclaration","scope":5497,"src":"431:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5491,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"414:34:44"},"returnParameters":{"id":5496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5497,"src":"467:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5494,"name":"uint256","nodeType":"ElementaryTypeName","src":"467:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"466:9:44"},"scope":5531,"src":"398:78:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"01e1d114","id":5502,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"493:11:44","nodeType":"FunctionDefinition","parameters":{"id":5498,"nodeType":"ParameterList","parameters":[],"src":"504:2:44"},"returnParameters":{"id":5501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5500,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5502,"src":"530:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5499,"name":"uint256","nodeType":"ElementaryTypeName","src":"530:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"529:9:44"},"scope":5531,"src":"484:55:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"07a2d13a","id":5509,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"556:15:44","nodeType":"FunctionDefinition","parameters":{"id":5505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5504,"mutability":"mutable","name":"shares","nameLocation":"580:6:44","nodeType":"VariableDeclaration","scope":5509,"src":"572:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5503,"name":"uint256","nodeType":"ElementaryTypeName","src":"572:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"571:16:44"},"returnParameters":{"id":5508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5509,"src":"611:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5506,"name":"uint256","nodeType":"ElementaryTypeName","src":"611:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"610:9:44"},"scope":5531,"src":"547:73:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c6e6f592","id":5516,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"637:15:44","nodeType":"FunctionDefinition","parameters":{"id":5512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5511,"mutability":"mutable","name":"assets","nameLocation":"661:6:44","nodeType":"VariableDeclaration","scope":5516,"src":"653:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5510,"name":"uint256","nodeType":"ElementaryTypeName","src":"653:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"652:16:44"},"returnParameters":{"id":5515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5516,"src":"692:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5513,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"691:9:44"},"scope":5531,"src":"628:73:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0a28a477","id":5523,"implemented":false,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"718:15:44","nodeType":"FunctionDefinition","parameters":{"id":5519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5518,"mutability":"mutable","name":"assets","nameLocation":"742:6:44","nodeType":"VariableDeclaration","scope":5523,"src":"734:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5517,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:16:44"},"returnParameters":{"id":5522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5521,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5523,"src":"773:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5520,"name":"uint256","nodeType":"ElementaryTypeName","src":"773:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"772:9:44"},"scope":5531,"src":"709:73:44","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d905777e","id":5530,"implemented":false,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"799:9:44","nodeType":"FunctionDefinition","parameters":{"id":5526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5525,"mutability":"mutable","name":"owner","nameLocation":"817:5:44","nodeType":"VariableDeclaration","scope":5530,"src":"809:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5524,"name":"address","nodeType":"ElementaryTypeName","src":"809:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"808:15:44"},"returnParameters":{"id":5529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5530,"src":"847:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5527,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"846:9:44"},"scope":5531,"src":"790:66:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5532,"src":"60:799:44","usedErrors":[],"usedEvents":[]}],"src":"33:828:44"},"id":44},"contracts/libs/AddressUpgradeable.sol":{"ast":{"absolutePath":"contracts/libs/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5774]},"id":5775,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5533,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"104:23:45"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":5534,"nodeType":"StructuredDocumentation","src":"131:69:45","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":5774,"linearizedBaseContracts":[5774],"name":"AddressUpgradeable","nameLocation":"210:18:45","nodeType":"ContractDefinition","nodes":[{"body":{"id":5548,"nodeType":"Block","src":"1233:242:45","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5542,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5537,"src":"1446:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1454:4:45","memberName":"code","nodeType":"MemberAccess","src":"1446:12:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1459:6:45","memberName":"length","nodeType":"MemberAccess","src":"1446:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1468:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1446:23:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5541,"id":5547,"nodeType":"Return","src":"1439:30:45"}]},"documentation":{"id":5535,"nodeType":"StructuredDocumentation","src":"234:929:45","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":5549,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1176:10:45","nodeType":"FunctionDefinition","parameters":{"id":5538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5537,"mutability":"mutable","name":"account","nameLocation":"1195:7:45","nodeType":"VariableDeclaration","scope":5549,"src":"1187:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5536,"name":"address","nodeType":"ElementaryTypeName","src":"1187:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1186:17:45"},"returnParameters":{"id":5541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5549,"src":"1227:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5539,"name":"bool","nodeType":"ElementaryTypeName","src":"1227:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1226:6:45"},"scope":5774,"src":"1167:308:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5582,"nodeType":"Block","src":"2447:232:45","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5560,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2470:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$5774","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$5774","typeString":"library AddressUpgradeable"}],"id":5559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2462:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5558,"name":"address","nodeType":"ElementaryTypeName","src":"2462:7:45","typeDescriptions":{}}},"id":5561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2462:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2476:7:45","memberName":"balance","nodeType":"MemberAccess","src":"2462:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5563,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"2487:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2462:31:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":5565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2495:31:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":5557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2454:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2454:73:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5567,"nodeType":"ExpressionStatement","src":"2454:73:45"},{"assignments":[5569,null],"declarations":[{"constant":false,"id":5569,"mutability":"mutable","name":"success","nameLocation":"2542:7:45","nodeType":"VariableDeclaration","scope":5582,"src":"2537:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5568,"name":"bool","nodeType":"ElementaryTypeName","src":"2537:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":5576,"initialValue":{"arguments":[{"hexValue":"","id":5574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2585:2:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":5570,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"2555:9:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":5571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2565:4:45","memberName":"call","nodeType":"MemberAccess","src":"2555:14:45","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":5572,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"2577:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2555:29:45","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2555:33:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2536:52:45"},{"expression":{"arguments":[{"id":5578,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5569,"src":"2603:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":5579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2612:60:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":5577,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2595:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2595:78:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5581,"nodeType":"ExpressionStatement","src":"2595:78:45"}]},"documentation":{"id":5550,"nodeType":"StructuredDocumentation","src":"1481:891:45","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":5583,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2385:9:45","nodeType":"FunctionDefinition","parameters":{"id":5555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5552,"mutability":"mutable","name":"recipient","nameLocation":"2411:9:45","nodeType":"VariableDeclaration","scope":5583,"src":"2395:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5551,"name":"address","nodeType":"ElementaryTypeName","src":"2395:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":5554,"mutability":"mutable","name":"amount","nameLocation":"2430:6:45","nodeType":"VariableDeclaration","scope":5583,"src":"2422:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5553,"name":"uint256","nodeType":"ElementaryTypeName","src":"2422:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:43:45"},"returnParameters":{"id":5556,"nodeType":"ParameterList","parameters":[],"src":"2447:0:45"},"scope":5774,"src":"2376:303:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5599,"nodeType":"Block","src":"3492:80:45","statements":[{"expression":{"arguments":[{"id":5594,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5586,"src":"3519:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5595,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"3527:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":5596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3533:32:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":5593,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[5600,5620],"referencedDeclaration":5620,"src":"3506:12:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":5597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3506:60:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5592,"id":5598,"nodeType":"Return","src":"3499:67:45"}]},"documentation":{"id":5584,"nodeType":"StructuredDocumentation","src":"2685:714:45","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":5600,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3412:12:45","nodeType":"FunctionDefinition","parameters":{"id":5589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5586,"mutability":"mutable","name":"target","nameLocation":"3433:6:45","nodeType":"VariableDeclaration","scope":5600,"src":"3425:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5585,"name":"address","nodeType":"ElementaryTypeName","src":"3425:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5588,"mutability":"mutable","name":"data","nameLocation":"3454:4:45","nodeType":"VariableDeclaration","scope":5600,"src":"3441:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5587,"name":"bytes","nodeType":"ElementaryTypeName","src":"3441:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3424:35:45"},"returnParameters":{"id":5592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5591,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5600,"src":"3478:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5590,"name":"bytes","nodeType":"ElementaryTypeName","src":"3478:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3477:14:45"},"scope":5774,"src":"3403:169:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5619,"nodeType":"Block","src":"3905:72:45","statements":[{"expression":{"arguments":[{"id":5613,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5603,"src":"3941:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5614,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"3949:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":5615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3955:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5616,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5607,"src":"3958:12:45","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5612,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[5640,5690],"referencedDeclaration":5690,"src":"3919:21:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":5617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3919:52:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5611,"id":5618,"nodeType":"Return","src":"3912:59:45"}]},"documentation":{"id":5601,"nodeType":"StructuredDocumentation","src":"3578:206:45","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":5620,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3797:12:45","nodeType":"FunctionDefinition","parameters":{"id":5608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5603,"mutability":"mutable","name":"target","nameLocation":"3818:6:45","nodeType":"VariableDeclaration","scope":5620,"src":"3810:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5602,"name":"address","nodeType":"ElementaryTypeName","src":"3810:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5605,"mutability":"mutable","name":"data","nameLocation":"3839:4:45","nodeType":"VariableDeclaration","scope":5620,"src":"3826:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5604,"name":"bytes","nodeType":"ElementaryTypeName","src":"3826:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5607,"mutability":"mutable","name":"errorMessage","nameLocation":"3859:12:45","nodeType":"VariableDeclaration","scope":5620,"src":"3845:26:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5606,"name":"string","nodeType":"ElementaryTypeName","src":"3845:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3809:63:45"},"returnParameters":{"id":5611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5620,"src":"3891:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5609,"name":"bytes","nodeType":"ElementaryTypeName","src":"3891:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3890:14:45"},"scope":5774,"src":"3788:189:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5639,"nodeType":"Block","src":"4441:107:45","statements":[{"expression":{"arguments":[{"id":5633,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5623,"src":"4477:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5634,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5625,"src":"4485:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5635,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5627,"src":"4491:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":5636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4498:43:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":5632,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[5640,5690],"referencedDeclaration":5690,"src":"4455:21:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":5637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4455:87:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5631,"id":5638,"nodeType":"Return","src":"4448:94:45"}]},"documentation":{"id":5621,"nodeType":"StructuredDocumentation","src":"3983:341:45","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":5640,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4337:21:45","nodeType":"FunctionDefinition","parameters":{"id":5628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5623,"mutability":"mutable","name":"target","nameLocation":"4367:6:45","nodeType":"VariableDeclaration","scope":5640,"src":"4359:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5622,"name":"address","nodeType":"ElementaryTypeName","src":"4359:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5625,"mutability":"mutable","name":"data","nameLocation":"4388:4:45","nodeType":"VariableDeclaration","scope":5640,"src":"4375:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5624,"name":"bytes","nodeType":"ElementaryTypeName","src":"4375:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5627,"mutability":"mutable","name":"value","nameLocation":"4402:5:45","nodeType":"VariableDeclaration","scope":5640,"src":"4394:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5626,"name":"uint256","nodeType":"ElementaryTypeName","src":"4394:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4358:50:45"},"returnParameters":{"id":5631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5630,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5640,"src":"4427:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5629,"name":"bytes","nodeType":"ElementaryTypeName","src":"4427:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4426:14:45"},"scope":5774,"src":"4328:220:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5689,"nodeType":"Block","src":"4956:308:45","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5657,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4979:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$5774","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$5774","typeString":"library AddressUpgradeable"}],"id":5656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4971:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5655,"name":"address","nodeType":"ElementaryTypeName","src":"4971:7:45","typeDescriptions":{}}},"id":5658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4971:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4985:7:45","memberName":"balance","nodeType":"MemberAccess","src":"4971:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5647,"src":"4996:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4971:30:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":5662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5003:40:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":5654,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4963:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4963:81:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5664,"nodeType":"ExpressionStatement","src":"4963:81:45"},{"expression":{"arguments":[{"arguments":[{"id":5667,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"5070:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5666,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5549,"src":"5059:10:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5059:18:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":5669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5079:31:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":5665,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5051:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5051:60:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5671,"nodeType":"ExpressionStatement","src":"5051:60:45"},{"assignments":[5673,5675],"declarations":[{"constant":false,"id":5673,"mutability":"mutable","name":"success","nameLocation":"5126:7:45","nodeType":"VariableDeclaration","scope":5689,"src":"5121:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5672,"name":"bool","nodeType":"ElementaryTypeName","src":"5121:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5675,"mutability":"mutable","name":"returndata","nameLocation":"5148:10:45","nodeType":"VariableDeclaration","scope":5689,"src":"5135:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5674,"name":"bytes","nodeType":"ElementaryTypeName","src":"5135:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5682,"initialValue":{"arguments":[{"id":5680,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5645,"src":"5188:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5676,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"5162:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5169:4:45","memberName":"call","nodeType":"MemberAccess","src":"5162:11:45","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":5678,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5647,"src":"5181:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5162:25:45","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5162:31:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5120:73:45"},{"expression":{"arguments":[{"id":5684,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5673,"src":"5224:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5685,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"5233:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5686,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"5245:12:45","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5683,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5773,"src":"5207:16:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:51:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5653,"id":5688,"nodeType":"Return","src":"5200:58:45"}]},"documentation":{"id":5641,"nodeType":"StructuredDocumentation","src":"4554:232:45","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":5690,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4799:21:45","nodeType":"FunctionDefinition","parameters":{"id":5650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5643,"mutability":"mutable","name":"target","nameLocation":"4835:6:45","nodeType":"VariableDeclaration","scope":5690,"src":"4827:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5642,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5645,"mutability":"mutable","name":"data","nameLocation":"4861:4:45","nodeType":"VariableDeclaration","scope":5690,"src":"4848:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5644,"name":"bytes","nodeType":"ElementaryTypeName","src":"4848:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5647,"mutability":"mutable","name":"value","nameLocation":"4880:5:45","nodeType":"VariableDeclaration","scope":5690,"src":"4872:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5646,"name":"uint256","nodeType":"ElementaryTypeName","src":"4872:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5649,"mutability":"mutable","name":"errorMessage","nameLocation":"4906:12:45","nodeType":"VariableDeclaration","scope":5690,"src":"4892:26:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5648,"name":"string","nodeType":"ElementaryTypeName","src":"4892:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4820:103:45"},"returnParameters":{"id":5653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5690,"src":"4942:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5651,"name":"bytes","nodeType":"ElementaryTypeName","src":"4942:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4941:14:45"},"scope":5774,"src":"4790:474:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5706,"nodeType":"Block","src":"5535:93:45","statements":[{"expression":{"arguments":[{"id":5701,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5693,"src":"5568:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5702,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5695,"src":"5576:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":5703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5582:39:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":5700,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[5707,5742],"referencedDeclaration":5742,"src":"5549:18:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":5704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5549:73:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5699,"id":5705,"nodeType":"Return","src":"5542:80:45"}]},"documentation":{"id":5691,"nodeType":"StructuredDocumentation","src":"5270:161:45","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":5707,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5444:18:45","nodeType":"FunctionDefinition","parameters":{"id":5696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5693,"mutability":"mutable","name":"target","nameLocation":"5471:6:45","nodeType":"VariableDeclaration","scope":5707,"src":"5463:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5692,"name":"address","nodeType":"ElementaryTypeName","src":"5463:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5695,"mutability":"mutable","name":"data","nameLocation":"5492:4:45","nodeType":"VariableDeclaration","scope":5707,"src":"5479:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5694,"name":"bytes","nodeType":"ElementaryTypeName","src":"5479:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5462:35:45"},"returnParameters":{"id":5699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5707,"src":"5521:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5697,"name":"bytes","nodeType":"ElementaryTypeName","src":"5521:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5520:14:45"},"scope":5774,"src":"5435:193:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5741,"nodeType":"Block","src":"5954:219:45","statements":[{"expression":{"arguments":[{"arguments":[{"id":5721,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5710,"src":"5980:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5720,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5549,"src":"5969:10:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5969:18:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":5723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5989:38:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":5719,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5961:7:45","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5961:67:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5725,"nodeType":"ExpressionStatement","src":"5961:67:45"},{"assignments":[5727,5729],"declarations":[{"constant":false,"id":5727,"mutability":"mutable","name":"success","nameLocation":"6043:7:45","nodeType":"VariableDeclaration","scope":5741,"src":"6038:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5726,"name":"bool","nodeType":"ElementaryTypeName","src":"6038:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5729,"mutability":"mutable","name":"returndata","nameLocation":"6065:10:45","nodeType":"VariableDeclaration","scope":5741,"src":"6052:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5728,"name":"bytes","nodeType":"ElementaryTypeName","src":"6052:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5734,"initialValue":{"arguments":[{"id":5732,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5712,"src":"6097:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5730,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5710,"src":"6079:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6086:10:45","memberName":"staticcall","nodeType":"MemberAccess","src":"6079:17:45","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":5733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6079:23:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6037:65:45"},{"expression":{"arguments":[{"id":5736,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5727,"src":"6133:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5737,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5729,"src":"6142:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5738,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5714,"src":"6154:12:45","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5735,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5773,"src":"6116:16:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":5739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6116:51:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5718,"id":5740,"nodeType":"Return","src":"6109:58:45"}]},"documentation":{"id":5708,"nodeType":"StructuredDocumentation","src":"5634:168:45","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":5742,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5815:18:45","nodeType":"FunctionDefinition","parameters":{"id":5715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5710,"mutability":"mutable","name":"target","nameLocation":"5848:6:45","nodeType":"VariableDeclaration","scope":5742,"src":"5840:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5709,"name":"address","nodeType":"ElementaryTypeName","src":"5840:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5712,"mutability":"mutable","name":"data","nameLocation":"5874:4:45","nodeType":"VariableDeclaration","scope":5742,"src":"5861:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5711,"name":"bytes","nodeType":"ElementaryTypeName","src":"5861:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5714,"mutability":"mutable","name":"errorMessage","nameLocation":"5899:12:45","nodeType":"VariableDeclaration","scope":5742,"src":"5885:26:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5713,"name":"string","nodeType":"ElementaryTypeName","src":"5885:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5833:83:45"},"returnParameters":{"id":5718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5717,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5742,"src":"5940:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5716,"name":"bytes","nodeType":"ElementaryTypeName","src":"5940:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5939:14:45"},"scope":5774,"src":"5806:367:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5772,"nodeType":"Block","src":"6537:494:45","statements":[{"condition":{"id":5754,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5745,"src":"6548:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5770,"nodeType":"Block","src":"6597:429:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5758,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5747,"src":"6671:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6682:6:45","memberName":"length","nodeType":"MemberAccess","src":"6671:17:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6691:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6671:21:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5768,"nodeType":"Block","src":"6978:41:45","statements":[{"expression":{"arguments":[{"id":5765,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5749,"src":"6996:12:45","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5764,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6989:6:45","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6989:20:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5767,"nodeType":"ExpressionStatement","src":"6989:20:45"}]},"id":5769,"nodeType":"IfStatement","src":"6667:352:45","trueBody":{"id":5763,"nodeType":"Block","src":"6694:278:45","statements":[{"AST":{"nativeSrc":"6843:120:45","nodeType":"YulBlock","src":"6843:120:45","statements":[{"nativeSrc":"6856:40:45","nodeType":"YulVariableDeclaration","src":"6856:40:45","value":{"arguments":[{"name":"returndata","nativeSrc":"6885:10:45","nodeType":"YulIdentifier","src":"6885:10:45"}],"functionName":{"name":"mload","nativeSrc":"6879:5:45","nodeType":"YulIdentifier","src":"6879:5:45"},"nativeSrc":"6879:17:45","nodeType":"YulFunctionCall","src":"6879:17:45"},"variables":[{"name":"returndata_size","nativeSrc":"6860:15:45","nodeType":"YulTypedName","src":"6860:15:45","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6919:2:45","nodeType":"YulLiteral","src":"6919:2:45","type":"","value":"32"},{"name":"returndata","nativeSrc":"6923:10:45","nodeType":"YulIdentifier","src":"6923:10:45"}],"functionName":{"name":"add","nativeSrc":"6915:3:45","nodeType":"YulIdentifier","src":"6915:3:45"},"nativeSrc":"6915:19:45","nodeType":"YulFunctionCall","src":"6915:19:45"},{"name":"returndata_size","nativeSrc":"6936:15:45","nodeType":"YulIdentifier","src":"6936:15:45"}],"functionName":{"name":"revert","nativeSrc":"6908:6:45","nodeType":"YulIdentifier","src":"6908:6:45"},"nativeSrc":"6908:44:45","nodeType":"YulFunctionCall","src":"6908:44:45"},"nativeSrc":"6908:44:45","nodeType":"YulExpressionStatement","src":"6908:44:45"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":5747,"isOffset":false,"isSlot":false,"src":"6885:10:45","valueSize":1},{"declaration":5747,"isOffset":false,"isSlot":false,"src":"6923:10:45","valueSize":1}],"id":5762,"nodeType":"InlineAssembly","src":"6834:129:45"}]}}]},"id":5771,"nodeType":"IfStatement","src":"6544:482:45","trueBody":{"id":5757,"nodeType":"Block","src":"6557:34:45","statements":[{"expression":{"id":5755,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5747,"src":"6573:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5753,"id":5756,"nodeType":"Return","src":"6566:17:45"}]}}]},"documentation":{"id":5743,"nodeType":"StructuredDocumentation","src":"6179:204:45","text":" @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"},"id":5773,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"6396:16:45","nodeType":"FunctionDefinition","parameters":{"id":5750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5745,"mutability":"mutable","name":"success","nameLocation":"6424:7:45","nodeType":"VariableDeclaration","scope":5773,"src":"6419:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5744,"name":"bool","nodeType":"ElementaryTypeName","src":"6419:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5747,"mutability":"mutable","name":"returndata","nameLocation":"6451:10:45","nodeType":"VariableDeclaration","scope":5773,"src":"6438:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5746,"name":"bytes","nodeType":"ElementaryTypeName","src":"6438:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5749,"mutability":"mutable","name":"errorMessage","nameLocation":"6482:12:45","nodeType":"VariableDeclaration","scope":5773,"src":"6468:26:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5748,"name":"string","nodeType":"ElementaryTypeName","src":"6468:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6412:87:45"},"returnParameters":{"id":5753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5773,"src":"6523:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5751,"name":"bytes","nodeType":"ElementaryTypeName","src":"6523:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6522:14:45"},"scope":5774,"src":"6387:644:45","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5775,"src":"202:6832:45","usedErrors":[],"usedEvents":[]}],"src":"104:6932:45"},"id":45},"contracts/libs/ClonesUpgradeable.sol":{"ast":{"absolutePath":"contracts/libs/ClonesUpgradeable.sol","exportedSymbols":{"ClonesUpgradeable":[5854]},"id":5855,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5776,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:46"},{"abstract":false,"baseContracts":[],"canonicalName":"ClonesUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":5777,"nodeType":"StructuredDocumentation","src":"130:641:46","text":" @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"},"fullyImplemented":true,"id":5854,"linearizedBaseContracts":[5854],"name":"ClonesUpgradeable","nameLocation":"781:17:46","nodeType":"ContractDefinition","nodes":[{"body":{"id":5796,"nodeType":"Block","src":"1083:493:46","statements":[{"AST":{"nativeSrc":"1147:354:46","nodeType":"YulBlock","src":"1147:354:46","statements":[{"nativeSrc":"1162:22:46","nodeType":"YulVariableDeclaration","src":"1162:22:46","value":{"arguments":[{"kind":"number","nativeSrc":"1179:4:46","nodeType":"YulLiteral","src":"1179:4:46","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"1173:5:46","nodeType":"YulIdentifier","src":"1173:5:46"},"nativeSrc":"1173:11:46","nodeType":"YulFunctionCall","src":"1173:11:46"},"variables":[{"name":"ptr","nativeSrc":"1166:3:46","nodeType":"YulTypedName","src":"1166:3:46","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1205:3:46","nodeType":"YulIdentifier","src":"1205:3:46"},{"kind":"number","nativeSrc":"1210:66:46","nodeType":"YulLiteral","src":"1210:66:46","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"1198:6:46","nodeType":"YulIdentifier","src":"1198:6:46"},"nativeSrc":"1198:79:46","nodeType":"YulFunctionCall","src":"1198:79:46"},"nativeSrc":"1198:79:46","nodeType":"YulExpressionStatement","src":"1198:79:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"1302:3:46","nodeType":"YulIdentifier","src":"1302:3:46"},{"kind":"number","nativeSrc":"1307:4:46","nodeType":"YulLiteral","src":"1307:4:46","type":"","value":"0x14"}],"functionName":{"name":"add","nativeSrc":"1298:3:46","nodeType":"YulIdentifier","src":"1298:3:46"},"nativeSrc":"1298:14:46","nodeType":"YulFunctionCall","src":"1298:14:46"},{"arguments":[{"kind":"number","nativeSrc":"1318:4:46","nodeType":"YulLiteral","src":"1318:4:46","type":"","value":"0x60"},{"name":"implementation","nativeSrc":"1324:14:46","nodeType":"YulIdentifier","src":"1324:14:46"}],"functionName":{"name":"shl","nativeSrc":"1314:3:46","nodeType":"YulIdentifier","src":"1314:3:46"},"nativeSrc":"1314:25:46","nodeType":"YulFunctionCall","src":"1314:25:46"}],"functionName":{"name":"mstore","nativeSrc":"1291:6:46","nodeType":"YulIdentifier","src":"1291:6:46"},"nativeSrc":"1291:49:46","nodeType":"YulFunctionCall","src":"1291:49:46"},"nativeSrc":"1291:49:46","nodeType":"YulExpressionStatement","src":"1291:49:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"1365:3:46","nodeType":"YulIdentifier","src":"1365:3:46"},{"kind":"number","nativeSrc":"1370:4:46","nodeType":"YulLiteral","src":"1370:4:46","type":"","value":"0x28"}],"functionName":{"name":"add","nativeSrc":"1361:3:46","nodeType":"YulIdentifier","src":"1361:3:46"},"nativeSrc":"1361:14:46","nodeType":"YulFunctionCall","src":"1361:14:46"},{"kind":"number","nativeSrc":"1377:66:46","nodeType":"YulLiteral","src":"1377:66:46","type":"","value":"0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"1354:6:46","nodeType":"YulIdentifier","src":"1354:6:46"},"nativeSrc":"1354:90:46","nodeType":"YulFunctionCall","src":"1354:90:46"},"nativeSrc":"1354:90:46","nodeType":"YulExpressionStatement","src":"1354:90:46"},{"nativeSrc":"1458:32:46","nodeType":"YulAssignment","src":"1458:32:46","value":{"arguments":[{"kind":"number","nativeSrc":"1477:1:46","nodeType":"YulLiteral","src":"1477:1:46","type":"","value":"0"},{"name":"ptr","nativeSrc":"1480:3:46","nodeType":"YulIdentifier","src":"1480:3:46"},{"kind":"number","nativeSrc":"1485:4:46","nodeType":"YulLiteral","src":"1485:4:46","type":"","value":"0x37"}],"functionName":{"name":"create","nativeSrc":"1470:6:46","nodeType":"YulIdentifier","src":"1470:6:46"},"nativeSrc":"1470:20:46","nodeType":"YulFunctionCall","src":"1470:20:46"},"variableNames":[{"name":"instance","nativeSrc":"1458:8:46","nodeType":"YulIdentifier","src":"1458:8:46"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":5780,"isOffset":false,"isSlot":false,"src":"1324:14:46","valueSize":1},{"declaration":5783,"isOffset":false,"isSlot":false,"src":"1458:8:46","valueSize":1}],"id":5785,"nodeType":"InlineAssembly","src":"1138:363:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5787,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5783,"src":"1519:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1539:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1531:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5788,"name":"address","nodeType":"ElementaryTypeName","src":"1531:7:46","typeDescriptions":{}}},"id":5791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1519:22:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a20637265617465206661696c6564","id":5793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1543:24:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""},"value":"ERC1167: create failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""}],"id":5786,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1511:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1511:57:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5795,"nodeType":"ExpressionStatement","src":"1511:57:46"}]},"documentation":{"id":5778,"nodeType":"StructuredDocumentation","src":"806:196:46","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."},"id":5797,"implemented":true,"kind":"function","modifiers":[],"name":"clone","nameLocation":"1017:5:46","nodeType":"FunctionDefinition","parameters":{"id":5781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5780,"mutability":"mutable","name":"implementation","nameLocation":"1031:14:46","nodeType":"VariableDeclaration","scope":5797,"src":"1023:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5779,"name":"address","nodeType":"ElementaryTypeName","src":"1023:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1022:24:46"},"returnParameters":{"id":5784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5783,"mutability":"mutable","name":"instance","nameLocation":"1073:8:46","nodeType":"VariableDeclaration","scope":5797,"src":"1065:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5782,"name":"address","nodeType":"ElementaryTypeName","src":"1065:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1064:18:46"},"scope":5854,"src":"1008:568:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5818,"nodeType":"Block","src":"2062:501:46","statements":[{"AST":{"nativeSrc":"2126:361:46","nodeType":"YulBlock","src":"2126:361:46","statements":[{"nativeSrc":"2141:22:46","nodeType":"YulVariableDeclaration","src":"2141:22:46","value":{"arguments":[{"kind":"number","nativeSrc":"2158:4:46","nodeType":"YulLiteral","src":"2158:4:46","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2152:5:46","nodeType":"YulIdentifier","src":"2152:5:46"},"nativeSrc":"2152:11:46","nodeType":"YulFunctionCall","src":"2152:11:46"},"variables":[{"name":"ptr","nativeSrc":"2145:3:46","nodeType":"YulTypedName","src":"2145:3:46","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"2184:3:46","nodeType":"YulIdentifier","src":"2184:3:46"},{"kind":"number","nativeSrc":"2189:66:46","nodeType":"YulLiteral","src":"2189:66:46","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"2177:6:46","nodeType":"YulIdentifier","src":"2177:6:46"},"nativeSrc":"2177:79:46","nodeType":"YulFunctionCall","src":"2177:79:46"},"nativeSrc":"2177:79:46","nodeType":"YulExpressionStatement","src":"2177:79:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"2281:3:46","nodeType":"YulIdentifier","src":"2281:3:46"},{"kind":"number","nativeSrc":"2286:4:46","nodeType":"YulLiteral","src":"2286:4:46","type":"","value":"0x14"}],"functionName":{"name":"add","nativeSrc":"2277:3:46","nodeType":"YulIdentifier","src":"2277:3:46"},"nativeSrc":"2277:14:46","nodeType":"YulFunctionCall","src":"2277:14:46"},{"arguments":[{"kind":"number","nativeSrc":"2297:4:46","nodeType":"YulLiteral","src":"2297:4:46","type":"","value":"0x60"},{"name":"implementation","nativeSrc":"2303:14:46","nodeType":"YulIdentifier","src":"2303:14:46"}],"functionName":{"name":"shl","nativeSrc":"2293:3:46","nodeType":"YulIdentifier","src":"2293:3:46"},"nativeSrc":"2293:25:46","nodeType":"YulFunctionCall","src":"2293:25:46"}],"functionName":{"name":"mstore","nativeSrc":"2270:6:46","nodeType":"YulIdentifier","src":"2270:6:46"},"nativeSrc":"2270:49:46","nodeType":"YulFunctionCall","src":"2270:49:46"},"nativeSrc":"2270:49:46","nodeType":"YulExpressionStatement","src":"2270:49:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"2344:3:46","nodeType":"YulIdentifier","src":"2344:3:46"},{"kind":"number","nativeSrc":"2349:4:46","nodeType":"YulLiteral","src":"2349:4:46","type":"","value":"0x28"}],"functionName":{"name":"add","nativeSrc":"2340:3:46","nodeType":"YulIdentifier","src":"2340:3:46"},"nativeSrc":"2340:14:46","nodeType":"YulFunctionCall","src":"2340:14:46"},{"kind":"number","nativeSrc":"2356:66:46","nodeType":"YulLiteral","src":"2356:66:46","type":"","value":"0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"2333:6:46","nodeType":"YulIdentifier","src":"2333:6:46"},"nativeSrc":"2333:90:46","nodeType":"YulFunctionCall","src":"2333:90:46"},"nativeSrc":"2333:90:46","nodeType":"YulExpressionStatement","src":"2333:90:46"},{"nativeSrc":"2437:39:46","nodeType":"YulAssignment","src":"2437:39:46","value":{"arguments":[{"kind":"number","nativeSrc":"2457:1:46","nodeType":"YulLiteral","src":"2457:1:46","type":"","value":"0"},{"name":"ptr","nativeSrc":"2460:3:46","nodeType":"YulIdentifier","src":"2460:3:46"},{"kind":"number","nativeSrc":"2465:4:46","nodeType":"YulLiteral","src":"2465:4:46","type":"","value":"0x37"},{"name":"salt","nativeSrc":"2471:4:46","nodeType":"YulIdentifier","src":"2471:4:46"}],"functionName":{"name":"create2","nativeSrc":"2449:7:46","nodeType":"YulIdentifier","src":"2449:7:46"},"nativeSrc":"2449:27:46","nodeType":"YulFunctionCall","src":"2449:27:46"},"variableNames":[{"name":"instance","nativeSrc":"2437:8:46","nodeType":"YulIdentifier","src":"2437:8:46"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":5800,"isOffset":false,"isSlot":false,"src":"2303:14:46","valueSize":1},{"declaration":5805,"isOffset":false,"isSlot":false,"src":"2437:8:46","valueSize":1},{"declaration":5802,"isOffset":false,"isSlot":false,"src":"2471:4:46","valueSize":1}],"id":5807,"nodeType":"InlineAssembly","src":"2117:370:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5809,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5805,"src":"2505:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2525:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2517:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5810,"name":"address","nodeType":"ElementaryTypeName","src":"2517:7:46","typeDescriptions":{}}},"id":5813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2505:22:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a2063726561746532206661696c6564","id":5815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2529:25:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""},"value":"ERC1167: create2 failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""}],"id":5808,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2497:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:58:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5817,"nodeType":"ExpressionStatement","src":"2497:58:46"}]},"documentation":{"id":5798,"nodeType":"StructuredDocumentation","src":"1584:370:46","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."},"id":5819,"implemented":true,"kind":"function","modifiers":[],"name":"cloneDeterministic","nameLocation":"1969:18:46","nodeType":"FunctionDefinition","parameters":{"id":5803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5800,"mutability":"mutable","name":"implementation","nameLocation":"1996:14:46","nodeType":"VariableDeclaration","scope":5819,"src":"1988:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5799,"name":"address","nodeType":"ElementaryTypeName","src":"1988:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5802,"mutability":"mutable","name":"salt","nameLocation":"2020:4:46","nodeType":"VariableDeclaration","scope":5819,"src":"2012:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5801,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2012:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1987:38:46"},"returnParameters":{"id":5806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5805,"mutability":"mutable","name":"instance","nameLocation":"2052:8:46","nodeType":"VariableDeclaration","scope":5819,"src":"2044:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5804,"name":"address","nodeType":"ElementaryTypeName","src":"2044:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2043:18:46"},"scope":5854,"src":"1960:603:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5832,"nodeType":"Block","src":"2847:594:46","statements":[{"AST":{"nativeSrc":"2911:523:46","nodeType":"YulBlock","src":"2911:523:46","statements":[{"nativeSrc":"2926:22:46","nodeType":"YulVariableDeclaration","src":"2926:22:46","value":{"arguments":[{"kind":"number","nativeSrc":"2943:4:46","nodeType":"YulLiteral","src":"2943:4:46","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2937:5:46","nodeType":"YulIdentifier","src":"2937:5:46"},"nativeSrc":"2937:11:46","nodeType":"YulFunctionCall","src":"2937:11:46"},"variables":[{"name":"ptr","nativeSrc":"2930:3:46","nodeType":"YulTypedName","src":"2930:3:46","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"2969:3:46","nodeType":"YulIdentifier","src":"2969:3:46"},{"kind":"number","nativeSrc":"2974:66:46","nodeType":"YulLiteral","src":"2974:66:46","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"2962:6:46","nodeType":"YulIdentifier","src":"2962:6:46"},"nativeSrc":"2962:79:46","nodeType":"YulFunctionCall","src":"2962:79:46"},"nativeSrc":"2962:79:46","nodeType":"YulExpressionStatement","src":"2962:79:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"3066:3:46","nodeType":"YulIdentifier","src":"3066:3:46"},{"kind":"number","nativeSrc":"3071:4:46","nodeType":"YulLiteral","src":"3071:4:46","type":"","value":"0x14"}],"functionName":{"name":"add","nativeSrc":"3062:3:46","nodeType":"YulIdentifier","src":"3062:3:46"},"nativeSrc":"3062:14:46","nodeType":"YulFunctionCall","src":"3062:14:46"},{"arguments":[{"kind":"number","nativeSrc":"3082:4:46","nodeType":"YulLiteral","src":"3082:4:46","type":"","value":"0x60"},{"name":"implementation","nativeSrc":"3088:14:46","nodeType":"YulIdentifier","src":"3088:14:46"}],"functionName":{"name":"shl","nativeSrc":"3078:3:46","nodeType":"YulIdentifier","src":"3078:3:46"},"nativeSrc":"3078:25:46","nodeType":"YulFunctionCall","src":"3078:25:46"}],"functionName":{"name":"mstore","nativeSrc":"3055:6:46","nodeType":"YulIdentifier","src":"3055:6:46"},"nativeSrc":"3055:49:46","nodeType":"YulFunctionCall","src":"3055:49:46"},"nativeSrc":"3055:49:46","nodeType":"YulExpressionStatement","src":"3055:49:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"3129:3:46","nodeType":"YulIdentifier","src":"3129:3:46"},{"kind":"number","nativeSrc":"3134:4:46","nodeType":"YulLiteral","src":"3134:4:46","type":"","value":"0x28"}],"functionName":{"name":"add","nativeSrc":"3125:3:46","nodeType":"YulIdentifier","src":"3125:3:46"},"nativeSrc":"3125:14:46","nodeType":"YulFunctionCall","src":"3125:14:46"},{"kind":"number","nativeSrc":"3141:66:46","nodeType":"YulLiteral","src":"3141:66:46","type":"","value":"0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"3118:6:46","nodeType":"YulIdentifier","src":"3118:6:46"},"nativeSrc":"3118:90:46","nodeType":"YulFunctionCall","src":"3118:90:46"},"nativeSrc":"3118:90:46","nodeType":"YulExpressionStatement","src":"3118:90:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"3233:3:46","nodeType":"YulIdentifier","src":"3233:3:46"},{"kind":"number","nativeSrc":"3238:4:46","nodeType":"YulLiteral","src":"3238:4:46","type":"","value":"0x38"}],"functionName":{"name":"add","nativeSrc":"3229:3:46","nodeType":"YulIdentifier","src":"3229:3:46"},"nativeSrc":"3229:14:46","nodeType":"YulFunctionCall","src":"3229:14:46"},{"arguments":[{"kind":"number","nativeSrc":"3249:4:46","nodeType":"YulLiteral","src":"3249:4:46","type":"","value":"0x60"},{"name":"deployer","nativeSrc":"3255:8:46","nodeType":"YulIdentifier","src":"3255:8:46"}],"functionName":{"name":"shl","nativeSrc":"3245:3:46","nodeType":"YulIdentifier","src":"3245:3:46"},"nativeSrc":"3245:19:46","nodeType":"YulFunctionCall","src":"3245:19:46"}],"functionName":{"name":"mstore","nativeSrc":"3222:6:46","nodeType":"YulIdentifier","src":"3222:6:46"},"nativeSrc":"3222:43:46","nodeType":"YulFunctionCall","src":"3222:43:46"},"nativeSrc":"3222:43:46","nodeType":"YulExpressionStatement","src":"3222:43:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"3290:3:46","nodeType":"YulIdentifier","src":"3290:3:46"},{"kind":"number","nativeSrc":"3295:4:46","nodeType":"YulLiteral","src":"3295:4:46","type":"","value":"0x4c"}],"functionName":{"name":"add","nativeSrc":"3286:3:46","nodeType":"YulIdentifier","src":"3286:3:46"},"nativeSrc":"3286:14:46","nodeType":"YulFunctionCall","src":"3286:14:46"},{"name":"salt","nativeSrc":"3302:4:46","nodeType":"YulIdentifier","src":"3302:4:46"}],"functionName":{"name":"mstore","nativeSrc":"3279:6:46","nodeType":"YulIdentifier","src":"3279:6:46"},"nativeSrc":"3279:28:46","nodeType":"YulFunctionCall","src":"3279:28:46"},"nativeSrc":"3279:28:46","nodeType":"YulExpressionStatement","src":"3279:28:46"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"3332:3:46","nodeType":"YulIdentifier","src":"3332:3:46"},{"kind":"number","nativeSrc":"3337:4:46","nodeType":"YulLiteral","src":"3337:4:46","type":"","value":"0x6c"}],"functionName":{"name":"add","nativeSrc":"3328:3:46","nodeType":"YulIdentifier","src":"3328:3:46"},"nativeSrc":"3328:14:46","nodeType":"YulFunctionCall","src":"3328:14:46"},{"arguments":[{"name":"ptr","nativeSrc":"3354:3:46","nodeType":"YulIdentifier","src":"3354:3:46"},{"kind":"number","nativeSrc":"3359:4:46","nodeType":"YulLiteral","src":"3359:4:46","type":"","value":"0x37"}],"functionName":{"name":"keccak256","nativeSrc":"3344:9:46","nodeType":"YulIdentifier","src":"3344:9:46"},"nativeSrc":"3344:20:46","nodeType":"YulFunctionCall","src":"3344:20:46"}],"functionName":{"name":"mstore","nativeSrc":"3321:6:46","nodeType":"YulIdentifier","src":"3321:6:46"},"nativeSrc":"3321:44:46","nodeType":"YulFunctionCall","src":"3321:44:46"},"nativeSrc":"3321:44:46","nodeType":"YulExpressionStatement","src":"3321:44:46"},{"nativeSrc":"3379:44:46","nodeType":"YulAssignment","src":"3379:44:46","value":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"3406:3:46","nodeType":"YulIdentifier","src":"3406:3:46"},{"kind":"number","nativeSrc":"3411:4:46","nodeType":"YulLiteral","src":"3411:4:46","type":"","value":"0x37"}],"functionName":{"name":"add","nativeSrc":"3402:3:46","nodeType":"YulIdentifier","src":"3402:3:46"},"nativeSrc":"3402:14:46","nodeType":"YulFunctionCall","src":"3402:14:46"},{"kind":"number","nativeSrc":"3418:4:46","nodeType":"YulLiteral","src":"3418:4:46","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nativeSrc":"3392:9:46","nodeType":"YulIdentifier","src":"3392:9:46"},"nativeSrc":"3392:31:46","nodeType":"YulFunctionCall","src":"3392:31:46"},"variableNames":[{"name":"predicted","nativeSrc":"3379:9:46","nodeType":"YulIdentifier","src":"3379:9:46"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":5826,"isOffset":false,"isSlot":false,"src":"3255:8:46","valueSize":1},{"declaration":5822,"isOffset":false,"isSlot":false,"src":"3088:14:46","valueSize":1},{"declaration":5829,"isOffset":false,"isSlot":false,"src":"3379:9:46","valueSize":1},{"declaration":5824,"isOffset":false,"isSlot":false,"src":"3302:4:46","valueSize":1}],"id":5831,"nodeType":"InlineAssembly","src":"2902:532:46"}]},"documentation":{"id":5820,"nodeType":"StructuredDocumentation","src":"2571:101:46","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5833,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"2687:27:46","nodeType":"FunctionDefinition","parameters":{"id":5827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5822,"mutability":"mutable","name":"implementation","nameLocation":"2733:14:46","nodeType":"VariableDeclaration","scope":5833,"src":"2725:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5821,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5824,"mutability":"mutable","name":"salt","nameLocation":"2766:4:46","nodeType":"VariableDeclaration","scope":5833,"src":"2758:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2758:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5826,"mutability":"mutable","name":"deployer","nameLocation":"2789:8:46","nodeType":"VariableDeclaration","scope":5833,"src":"2781:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5825,"name":"address","nodeType":"ElementaryTypeName","src":"2781:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2714:90:46"},"returnParameters":{"id":5830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5829,"mutability":"mutable","name":"predicted","nameLocation":"2836:9:46","nodeType":"VariableDeclaration","scope":5833,"src":"2828:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5828,"name":"address","nodeType":"ElementaryTypeName","src":"2828:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2827:19:46"},"scope":5854,"src":"2678:763:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5852,"nodeType":"Block","src":"3705:90:46","statements":[{"expression":{"arguments":[{"id":5844,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"3751:14:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5845,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5838,"src":"3767:4:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":5848,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3781:4:46","typeDescriptions":{"typeIdentifier":"t_contract$_ClonesUpgradeable_$5854","typeString":"library ClonesUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ClonesUpgradeable_$5854","typeString":"library ClonesUpgradeable"}],"id":5847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3773:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5846,"name":"address","nodeType":"ElementaryTypeName","src":"3773:7:46","typeDescriptions":{}}},"id":5849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3773:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5843,"name":"predictDeterministicAddress","nodeType":"Identifier","overloadedDeclarations":[5833,5853],"referencedDeclaration":5833,"src":"3723:27:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) pure returns (address)"}},"id":5850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:64:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5842,"id":5851,"nodeType":"Return","src":"3716:71:46"}]},"documentation":{"id":5834,"nodeType":"StructuredDocumentation","src":"3449:101:46","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5853,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3565:27:46","nodeType":"FunctionDefinition","parameters":{"id":5839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5836,"mutability":"mutable","name":"implementation","nameLocation":"3601:14:46","nodeType":"VariableDeclaration","scope":5853,"src":"3593:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5835,"name":"address","nodeType":"ElementaryTypeName","src":"3593:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5838,"mutability":"mutable","name":"salt","nameLocation":"3625:4:46","nodeType":"VariableDeclaration","scope":5853,"src":"3617:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5837,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3617:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3592:38:46"},"returnParameters":{"id":5842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5841,"mutability":"mutable","name":"predicted","nameLocation":"3689:9:46","nodeType":"VariableDeclaration","scope":5853,"src":"3681:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5840,"name":"address","nodeType":"ElementaryTypeName","src":"3681:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3680:19:46"},"scope":5854,"src":"3556:239:46","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5855,"src":"773:3025:46","usedErrors":[],"usedEvents":[]}],"src":"103:3697:46"},"id":46},"contracts/libs/DSMath.sol":{"ast":{"absolutePath":"contracts/libs/DSMath.sol","exportedSymbols":{"DSMath":[6006]},"id":6007,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5856,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"746:23:47"},{"abstract":false,"baseContracts":[],"canonicalName":"DSMath","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":6006,"linearizedBaseContracts":[6006],"name":"DSMath","nameLocation":"781:6:47","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"6a146024","id":5861,"mutability":"constant","name":"WAD","nameLocation":"819:3:47","nodeType":"VariableDeclaration","scope":6006,"src":"795:38:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5857,"name":"uint256","nodeType":"ElementaryTypeName","src":"795:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":5860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"825:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":5859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"831:2:47","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"825:8:47","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"visibility":"public"},{"constant":true,"functionSelector":"552033c4","id":5866,"mutability":"constant","name":"RAY","nameLocation":"864:3:47","nodeType":"VariableDeclaration","scope":6006,"src":"840:38:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5862,"name":"uint256","nodeType":"ElementaryTypeName","src":"840:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"id":5865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"870:2:47","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3237","id":5864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"876:2:47","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"870:8:47","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"}},"visibility":"public"},{"body":{"id":5888,"nodeType":"Block","src":"994:53:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5875,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5868,"src":"1014:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5876,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5870,"src":"1018:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1014:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5878,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1013:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5879,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"1024:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":5880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1030:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1024:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5882,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1023:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1013:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5884,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1012:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5885,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"1036:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1012:27:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5874,"id":5887,"nodeType":"Return","src":"1005:34:47"}]},"id":5889,"implemented":true,"kind":"function","modifiers":[],"name":"wmul","nameLocation":"935:4:47","nodeType":"FunctionDefinition","parameters":{"id":5871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5868,"mutability":"mutable","name":"x","nameLocation":"948:1:47","nodeType":"VariableDeclaration","scope":5889,"src":"940:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5867,"name":"uint256","nodeType":"ElementaryTypeName","src":"940:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5870,"mutability":"mutable","name":"y","nameLocation":"959:1:47","nodeType":"VariableDeclaration","scope":5889,"src":"951:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5869,"name":"uint256","nodeType":"ElementaryTypeName","src":"951:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"939:22:47"},"returnParameters":{"id":5874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5889,"src":"985:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5872,"name":"uint256","nodeType":"ElementaryTypeName","src":"985:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"984:9:47"},"scope":6006,"src":"926:121:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5911,"nodeType":"Block","src":"1162:51:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5898,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5891,"src":"1182:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5899,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"1186:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1182:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5901,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1181:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5902,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"1194:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":5903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1194:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1193:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1181:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5907,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1180:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5908,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"1204:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1180:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5897,"id":5910,"nodeType":"Return","src":"1173:32:47"}]},"id":5912,"implemented":true,"kind":"function","modifiers":[],"name":"wdiv","nameLocation":"1103:4:47","nodeType":"FunctionDefinition","parameters":{"id":5894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5891,"mutability":"mutable","name":"x","nameLocation":"1116:1:47","nodeType":"VariableDeclaration","scope":5912,"src":"1108:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5890,"name":"uint256","nodeType":"ElementaryTypeName","src":"1108:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5893,"mutability":"mutable","name":"y","nameLocation":"1127:1:47","nodeType":"VariableDeclaration","scope":5912,"src":"1119:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5892,"name":"uint256","nodeType":"ElementaryTypeName","src":"1119:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1107:22:47"},"returnParameters":{"id":5897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5912,"src":"1153:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5895,"name":"uint256","nodeType":"ElementaryTypeName","src":"1153:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1152:9:47"},"scope":6006,"src":"1094:119:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5924,"nodeType":"Block","src":"1284:38:47","statements":[{"expression":{"arguments":[{"id":5920,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"1307:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5921,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5914,"src":"1312:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5919,"name":"wdiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"1302:4:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1302:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5918,"id":5923,"nodeType":"Return","src":"1295:19:47"}]},"id":5925,"implemented":true,"kind":"function","modifiers":[],"name":"reciprocal","nameLocation":"1230:10:47","nodeType":"FunctionDefinition","parameters":{"id":5915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5914,"mutability":"mutable","name":"x","nameLocation":"1249:1:47","nodeType":"VariableDeclaration","scope":5925,"src":"1241:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5913,"name":"uint256","nodeType":"ElementaryTypeName","src":"1241:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1240:11:47"},"returnParameters":{"id":5918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5917,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5925,"src":"1275:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5916,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:9:47"},"scope":6006,"src":"1221:101:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5979,"nodeType":"Block","src":"1972:206:47","statements":[{"expression":{"id":5943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5934,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5932,"src":"1983:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5935,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"1987:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":5936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1991:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1987:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1996:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1987:10:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":5941,"name":"RAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5866,"src":"2004:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1987:20:47","trueExpression":{"id":5940,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5927,"src":"2000:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1983:24:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5944,"nodeType":"ExpressionStatement","src":"1983:24:47"},{"body":{"id":5977,"nodeType":"Block","src":"2049:122:47","statements":[{"expression":{"id":5961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5956,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5927,"src":"2064:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5958,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5927,"src":"2073:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5959,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5927,"src":"2076:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5957,"name":"rmul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6005,"src":"2068:4:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2068:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2064:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5962,"nodeType":"ExpressionStatement","src":"2064:14:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5963,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"2099:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":5964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2103:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2099:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2108:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2099:10:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5976,"nodeType":"IfStatement","src":"2095:65:47","trueBody":{"id":5975,"nodeType":"Block","src":"2111:49:47","statements":[{"expression":{"id":5973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5968,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5932,"src":"2130:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5970,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5932,"src":"2139:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5971,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5927,"src":"2142:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5969,"name":"rmul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6005,"src":"2134:4:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2134:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2130:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5974,"nodeType":"ExpressionStatement","src":"2130:14:47"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5949,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"2033:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2038:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2033:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5978,"initializationExpression":{"expression":{"id":5947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5945,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"2025:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"32","id":5946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2030:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2025:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5948,"nodeType":"ExpressionStatement","src":"2025:6:47"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":5954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5952,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"2041:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"32","id":5953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2046:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2041:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5955,"nodeType":"ExpressionStatement","src":"2041:6:47"},"nodeType":"ForStatement","src":"2020:151:47"}]},"id":5980,"implemented":true,"kind":"function","modifiers":[],"name":"rpow","nameLocation":"1911:4:47","nodeType":"FunctionDefinition","parameters":{"id":5930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5927,"mutability":"mutable","name":"x","nameLocation":"1924:1:47","nodeType":"VariableDeclaration","scope":5980,"src":"1916:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5926,"name":"uint256","nodeType":"ElementaryTypeName","src":"1916:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5929,"mutability":"mutable","name":"n","nameLocation":"1935:1:47","nodeType":"VariableDeclaration","scope":5980,"src":"1927:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1927:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1915:22:47"},"returnParameters":{"id":5933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5932,"mutability":"mutable","name":"z","nameLocation":"1969:1:47","nodeType":"VariableDeclaration","scope":5980,"src":"1961:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1961:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1960:11:47"},"scope":6006,"src":"1902:276:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6004,"nodeType":"Block","src":"2295:50:47","statements":[{"expression":{"id":6002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5989,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"2306:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5990,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5982,"src":"2312:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5991,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5984,"src":"2316:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2312:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5993,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2311:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5994,"name":"RAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5866,"src":"2322:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":5995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2328:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2322:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5997,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2321:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2311:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5999,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2310:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6000,"name":"RAY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5866,"src":"2334:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2310:27:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2306:31:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6003,"nodeType":"ExpressionStatement","src":"2306:31:47"}]},"id":6005,"implemented":true,"kind":"function","modifiers":[],"name":"rmul","nameLocation":"2234:4:47","nodeType":"FunctionDefinition","parameters":{"id":5985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5982,"mutability":"mutable","name":"x","nameLocation":"2247:1:47","nodeType":"VariableDeclaration","scope":6005,"src":"2239:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5981,"name":"uint256","nodeType":"ElementaryTypeName","src":"2239:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5984,"mutability":"mutable","name":"y","nameLocation":"2258:1:47","nodeType":"VariableDeclaration","scope":6005,"src":"2250:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5983,"name":"uint256","nodeType":"ElementaryTypeName","src":"2250:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2238:22:47"},"returnParameters":{"id":5988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5987,"mutability":"mutable","name":"z","nameLocation":"2292:1:47","nodeType":"VariableDeclaration","scope":6005,"src":"2284:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5986,"name":"uint256","nodeType":"ElementaryTypeName","src":"2284:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2283:11:47"},"scope":6006,"src":"2225:120:47","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6007,"src":"773:1575:47","usedErrors":[],"usedEvents":[]}],"src":"746:1604:47"},"id":47},"contracts/libs/EnumerableSetUpgradeable.sol":{"ast":{"absolutePath":"contracts/libs/EnumerableSetUpgradeable.sol","exportedSymbols":{"EnumerableSetUpgradeable":[6605]},"id":6606,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6008,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:48"},{"abstract":false,"baseContracts":[],"canonicalName":"EnumerableSetUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":6009,"nodeType":"StructuredDocumentation","src":"145:1118:48","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported.\n [WARNING]\n ====\n  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n ===="},"fullyImplemented":true,"id":6605,"linearizedBaseContracts":[6605],"name":"EnumerableSetUpgradeable","nameLocation":"1273:24:48","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSetUpgradeable.Set","id":6017,"members":[{"constant":false,"id":6012,"mutability":"mutable","name":"_values","nameLocation":"1820:7:48","nodeType":"VariableDeclaration","scope":6017,"src":"1810:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6010,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1810:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6011,"nodeType":"ArrayTypeName","src":"1810:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":6016,"mutability":"mutable","name":"_indexes","nameLocation":"1991:8:48","nodeType":"VariableDeclaration","scope":6017,"src":"1963:36:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":6015,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6013,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1971:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1963:27:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6014,"name":"uint256","nodeType":"ElementaryTypeName","src":"1982:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Set","nameLocation":"1761:3:48","nodeType":"StructDefinition","scope":6605,"src":"1754:253:48","visibility":"public"},{"body":{"id":6058,"nodeType":"Block","src":"2254:345:48","statements":[{"condition":{"id":6032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2269:22:48","subExpression":{"arguments":[{"id":6029,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"2280:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},{"id":6030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"2285:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6028,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6162,"src":"2270:9:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) view returns (bool)"}},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2270:21:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6056,"nodeType":"Block","src":"2553:39:48","statements":[{"expression":{"hexValue":"66616c7365","id":6054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2575:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6027,"id":6055,"nodeType":"Return","src":"2568:12:48"}]},"id":6057,"nodeType":"IfStatement","src":"2265:327:48","trueBody":{"id":6053,"nodeType":"Block","src":"2293:254:48","statements":[{"expression":{"arguments":[{"id":6038,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"2325:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":6033,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"2308:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2312:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"2308:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2320:4:48","memberName":"push","nodeType":"MemberAccess","src":"2308:16:48","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer,bytes32)"}},"id":6039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2308:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6040,"nodeType":"ExpressionStatement","src":"2308:23:48"},{"expression":{"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6041,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"2469:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2473:8:48","memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6016,"src":"2469:12:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6045,"indexExpression":{"id":6043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"2482:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2469:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":6046,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"2491:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2495:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"2491:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2503:6:48","memberName":"length","nodeType":"MemberAccess","src":"2491:18:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2469:40:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6050,"nodeType":"ExpressionStatement","src":"2469:40:48"},{"expression":{"hexValue":"74727565","id":6051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2531:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6027,"id":6052,"nodeType":"Return","src":"2524:11:48"}]}}]},"documentation":{"id":6018,"nodeType":"StructuredDocumentation","src":"2015:164:48","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6059,"implemented":true,"kind":"function","modifiers":[],"name":"_add","nameLocation":"2194:4:48","nodeType":"FunctionDefinition","parameters":{"id":6024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6021,"mutability":"mutable","name":"set","nameLocation":"2211:3:48","nodeType":"VariableDeclaration","scope":6059,"src":"2199:15:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6020,"nodeType":"UserDefinedTypeName","pathNode":{"id":6019,"name":"Set","nameLocations":["2199:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"2199:3:48"},"referencedDeclaration":6017,"src":"2199:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"},{"constant":false,"id":6023,"mutability":"mutable","name":"value","nameLocation":"2224:5:48","nodeType":"VariableDeclaration","scope":6059,"src":"2216:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6022,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2216:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2198:32:48"},"returnParameters":{"id":6027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6026,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6059,"src":"2248:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6025,"name":"bool","nodeType":"ElementaryTypeName","src":"2248:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2247:6:48"},"scope":6605,"src":"2185:414:48","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6142,"nodeType":"Block","src":"2847:1348:48","statements":[{"assignments":[6071],"declarations":[{"constant":false,"id":6071,"mutability":"mutable","name":"valueIndex","nameLocation":"2967:10:48","nodeType":"VariableDeclaration","scope":6142,"src":"2959:18:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6070,"name":"uint256","nodeType":"ElementaryTypeName","src":"2959:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6076,"initialValue":{"baseExpression":{"expression":{"id":6072,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"2980:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2984:8:48","memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6016,"src":"2980:12:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6075,"indexExpression":{"id":6074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"2993:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2980:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2959:40:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6077,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6071,"src":"3016:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3030:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3016:15:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6140,"nodeType":"Block","src":"4149:39:48","statements":[{"expression":{"hexValue":"66616c7365","id":6138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4171:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6069,"id":6139,"nodeType":"Return","src":"4164:12:48"}]},"id":6141,"nodeType":"IfStatement","src":"3012:1176:48","trueBody":{"id":6137,"nodeType":"Block","src":"3033:1110:48","statements":[{"assignments":[6081],"declarations":[{"constant":false,"id":6081,"mutability":"mutable","name":"toDeleteIndex","nameLocation":"3399:13:48","nodeType":"VariableDeclaration","scope":6137,"src":"3391:21:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6080,"name":"uint256","nodeType":"ElementaryTypeName","src":"3391:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6085,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6082,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6071,"src":"3415:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3428:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3415:14:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3391:38:48"},{"assignments":[6087],"declarations":[{"constant":false,"id":6087,"mutability":"mutable","name":"lastIndex","nameLocation":"3452:9:48","nodeType":"VariableDeclaration","scope":6137,"src":"3444:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6086,"name":"uint256","nodeType":"ElementaryTypeName","src":"3444:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6093,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6088,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3464:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3468:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"3464:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3476:6:48","memberName":"length","nodeType":"MemberAccess","src":"3464:18:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3485:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3464:22:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3444:42:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6094,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6087,"src":"3507:9:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6095,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"3520:13:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3507:26:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6121,"nodeType":"IfStatement","src":"3503:405:48","trueBody":{"id":6120,"nodeType":"Block","src":"3535:373:48","statements":[{"assignments":[6098],"declarations":[{"constant":false,"id":6098,"mutability":"mutable","name":"lastValue","nameLocation":"3562:9:48","nodeType":"VariableDeclaration","scope":6120,"src":"3554:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6097,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3554:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6103,"initialValue":{"baseExpression":{"expression":{"id":6099,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3574:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3578:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"3574:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6102,"indexExpression":{"id":6101,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6087,"src":"3586:9:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3574:22:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3554:42:48"},{"expression":{"id":6110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6104,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3699:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3703:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"3699:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6108,"indexExpression":{"id":6106,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"3711:13:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3699:26:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6109,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6098,"src":"3728:9:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3699:38:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6111,"nodeType":"ExpressionStatement","src":"3699:38:48"},{"expression":{"id":6118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6112,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3813:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3817:8:48","memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6016,"src":"3813:12:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6116,"indexExpression":{"id":6114,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6098,"src":"3826:9:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3813:23:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6117,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6071,"src":"3839:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3813:36:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6119,"nodeType":"ExpressionStatement","src":"3813:36:48"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":6122,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3989:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3993:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"3989:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4001:3:48","memberName":"pop","nodeType":"MemberAccess","src":"3989:15:48","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer)"}},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3989:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6128,"nodeType":"ExpressionStatement","src":"3989:17:48"},{"expression":{"id":6133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4077:26:48","subExpression":{"baseExpression":{"expression":{"id":6129,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"4084:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4088:8:48","memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6016,"src":"4084:12:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6132,"indexExpression":{"id":6131,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"4097:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4084:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6134,"nodeType":"ExpressionStatement","src":"4077:26:48"},{"expression":{"hexValue":"74727565","id":6135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4127:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6069,"id":6136,"nodeType":"Return","src":"4120:11:48"}]}}]},"documentation":{"id":6060,"nodeType":"StructuredDocumentation","src":"2607:162:48","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6143,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nameLocation":"2784:7:48","nodeType":"FunctionDefinition","parameters":{"id":6066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6063,"mutability":"mutable","name":"set","nameLocation":"2804:3:48","nodeType":"VariableDeclaration","scope":6143,"src":"2792:15:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6062,"nodeType":"UserDefinedTypeName","pathNode":{"id":6061,"name":"Set","nameLocations":["2792:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"2792:3:48"},"referencedDeclaration":6017,"src":"2792:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"},{"constant":false,"id":6065,"mutability":"mutable","name":"value","nameLocation":"2817:5:48","nodeType":"VariableDeclaration","scope":6143,"src":"2809:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2809:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2791:32:48"},"returnParameters":{"id":6069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6068,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6143,"src":"2841:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6067,"name":"bool","nodeType":"ElementaryTypeName","src":"2841:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2840:6:48"},"scope":6605,"src":"2775:1420:48","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6161,"nodeType":"Block","src":"4360:50:48","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":6154,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6147,"src":"4378:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4382:8:48","memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":6016,"src":"4378:12:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6157,"indexExpression":{"id":6156,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6149,"src":"4391:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4378:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4401:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4378:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6153,"id":6160,"nodeType":"Return","src":"4371:31:48"}]},"documentation":{"id":6144,"nodeType":"StructuredDocumentation","src":"4203:72:48","text":" @dev Returns true if the value is in the set. O(1)."},"id":6162,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nameLocation":"4290:9:48","nodeType":"FunctionDefinition","parameters":{"id":6150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6147,"mutability":"mutable","name":"set","nameLocation":"4312:3:48","nodeType":"VariableDeclaration","scope":6162,"src":"4300:15:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6146,"nodeType":"UserDefinedTypeName","pathNode":{"id":6145,"name":"Set","nameLocations":["4300:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"4300:3:48"},"referencedDeclaration":6017,"src":"4300:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"},{"constant":false,"id":6149,"mutability":"mutable","name":"value","nameLocation":"4325:5:48","nodeType":"VariableDeclaration","scope":6162,"src":"4317:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6148,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4317:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4299:32:48"},"returnParameters":{"id":6153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6162,"src":"4354:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6151,"name":"bool","nodeType":"ElementaryTypeName","src":"4354:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4353:6:48"},"scope":6605,"src":"4281:129:48","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6175,"nodeType":"Block","src":"4561:44:48","statements":[{"expression":{"expression":{"expression":{"id":6171,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6166,"src":"4579:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4583:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"4579:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4591:6:48","memberName":"length","nodeType":"MemberAccess","src":"4579:18:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6170,"id":6174,"nodeType":"Return","src":"4572:25:48"}]},"documentation":{"id":6163,"nodeType":"StructuredDocumentation","src":"4418:72:48","text":" @dev Returns the number of values on the set. O(1)."},"id":6176,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nameLocation":"4505:7:48","nodeType":"FunctionDefinition","parameters":{"id":6167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6166,"mutability":"mutable","name":"set","nameLocation":"4525:3:48","nodeType":"VariableDeclaration","scope":6176,"src":"4513:15:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6165,"nodeType":"UserDefinedTypeName","pathNode":{"id":6164,"name":"Set","nameLocations":["4513:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"4513:3:48"},"referencedDeclaration":6017,"src":"4513:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"}],"src":"4512:17:48"},"returnParameters":{"id":6170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6176,"src":"4552:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6168,"name":"uint256","nodeType":"ElementaryTypeName","src":"4552:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4551:9:48"},"scope":6605,"src":"4496:109:48","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6192,"nodeType":"Block","src":"5035:44:48","statements":[{"expression":{"baseExpression":{"expression":{"id":6187,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6180,"src":"5053:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5057:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"5053:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6190,"indexExpression":{"id":6189,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6182,"src":"5065:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5053:18:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6186,"id":6191,"nodeType":"Return","src":"5046:25:48"}]},"documentation":{"id":6177,"nodeType":"StructuredDocumentation","src":"4613:340:48","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6193,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nameLocation":"4968:3:48","nodeType":"FunctionDefinition","parameters":{"id":6183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6180,"mutability":"mutable","name":"set","nameLocation":"4984:3:48","nodeType":"VariableDeclaration","scope":6193,"src":"4972:15:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6179,"nodeType":"UserDefinedTypeName","pathNode":{"id":6178,"name":"Set","nameLocations":["4972:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"4972:3:48"},"referencedDeclaration":6017,"src":"4972:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"},{"constant":false,"id":6182,"mutability":"mutable","name":"index","nameLocation":"4997:5:48","nodeType":"VariableDeclaration","scope":6193,"src":"4989:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6181,"name":"uint256","nodeType":"ElementaryTypeName","src":"4989:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4971:32:48"},"returnParameters":{"id":6186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6193,"src":"5026:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6184,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5026:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5025:9:48"},"scope":6605,"src":"4959:120:48","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6206,"nodeType":"Block","src":"5703:37:48","statements":[{"expression":{"expression":{"id":6203,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6197,"src":"5721:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set storage pointer"}},"id":6204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5725:7:48","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6012,"src":"5721:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"functionReturnParameters":6202,"id":6205,"nodeType":"Return","src":"5714:18:48"}]},"documentation":{"id":6194,"nodeType":"StructuredDocumentation","src":"5087:536:48","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":6207,"implemented":true,"kind":"function","modifiers":[],"name":"_values","nameLocation":"5638:7:48","nodeType":"FunctionDefinition","parameters":{"id":6198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6197,"mutability":"mutable","name":"set","nameLocation":"5658:3:48","nodeType":"VariableDeclaration","scope":6207,"src":"5646:15:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6196,"nodeType":"UserDefinedTypeName","pathNode":{"id":6195,"name":"Set","nameLocations":["5646:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"5646:3:48"},"referencedDeclaration":6017,"src":"5646:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"}],"src":"5645:17:48"},"returnParameters":{"id":6202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6201,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6207,"src":"5685:16:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6199,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5685:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6200,"nodeType":"ArrayTypeName","src":"5685:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"5684:18:48"},"scope":6605,"src":"5629:111:48","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableSetUpgradeable.Bytes32Set","id":6211,"members":[{"constant":false,"id":6210,"mutability":"mutable","name":"_inner","nameLocation":"5802:6:48","nodeType":"VariableDeclaration","scope":6211,"src":"5798:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6209,"nodeType":"UserDefinedTypeName","pathNode":{"id":6208,"name":"Set","nameLocations":["5798:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"5798:3:48"},"referencedDeclaration":6017,"src":"5798:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"}],"name":"Bytes32Set","nameLocation":"5776:10:48","nodeType":"StructDefinition","scope":6605,"src":"5769:47:48","visibility":"public"},{"body":{"id":6228,"nodeType":"Block","src":"6070:49:48","statements":[{"expression":{"arguments":[{"expression":{"id":6223,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6093:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set storage pointer"}},"id":6224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6097:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6210,"src":"6093:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"id":6225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"6105:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6222,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"6088:4:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) returns (bool)"}},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6088:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6221,"id":6227,"nodeType":"Return","src":"6081:30:48"}]},"documentation":{"id":6212,"nodeType":"StructuredDocumentation","src":"5824:164:48","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6229,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"6003:3:48","nodeType":"FunctionDefinition","parameters":{"id":6218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6215,"mutability":"mutable","name":"set","nameLocation":"6026:3:48","nodeType":"VariableDeclaration","scope":6229,"src":"6007:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"},"typeName":{"id":6214,"nodeType":"UserDefinedTypeName","pathNode":{"id":6213,"name":"Bytes32Set","nameLocations":["6007:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6211,"src":"6007:10:48"},"referencedDeclaration":6211,"src":"6007:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6217,"mutability":"mutable","name":"value","nameLocation":"6039:5:48","nodeType":"VariableDeclaration","scope":6229,"src":"6031:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6031:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6006:39:48"},"returnParameters":{"id":6221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6229,"src":"6064:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6219,"name":"bool","nodeType":"ElementaryTypeName","src":"6064:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6063:6:48"},"scope":6605,"src":"5994:125:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6246,"nodeType":"Block","src":"6374:52:48","statements":[{"expression":{"arguments":[{"expression":{"id":6241,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6233,"src":"6400:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set storage pointer"}},"id":6242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6404:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6210,"src":"6400:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"id":6243,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6235,"src":"6412:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6240,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"6392:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) returns (bool)"}},"id":6244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6392:26:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6239,"id":6245,"nodeType":"Return","src":"6385:33:48"}]},"documentation":{"id":6230,"nodeType":"StructuredDocumentation","src":"6127:162:48","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6247,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"6304:6:48","nodeType":"FunctionDefinition","parameters":{"id":6236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6233,"mutability":"mutable","name":"set","nameLocation":"6330:3:48","nodeType":"VariableDeclaration","scope":6247,"src":"6311:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"},"typeName":{"id":6232,"nodeType":"UserDefinedTypeName","pathNode":{"id":6231,"name":"Bytes32Set","nameLocations":["6311:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6211,"src":"6311:10:48"},"referencedDeclaration":6211,"src":"6311:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6235,"mutability":"mutable","name":"value","nameLocation":"6343:5:48","nodeType":"VariableDeclaration","scope":6247,"src":"6335:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6234,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6335:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6310:39:48"},"returnParameters":{"id":6239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6247,"src":"6368:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6237,"name":"bool","nodeType":"ElementaryTypeName","src":"6368:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6367:6:48"},"scope":6605,"src":"6295:131:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6264,"nodeType":"Block","src":"6598:54:48","statements":[{"expression":{"arguments":[{"expression":{"id":6259,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6251,"src":"6626:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set storage pointer"}},"id":6260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6630:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6210,"src":"6626:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"id":6261,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6253,"src":"6638:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6258,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6162,"src":"6616:9:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) view returns (bool)"}},"id":6262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6616:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6257,"id":6263,"nodeType":"Return","src":"6609:35:48"}]},"documentation":{"id":6248,"nodeType":"StructuredDocumentation","src":"6434:72:48","text":" @dev Returns true if the value is in the set. O(1)."},"id":6265,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"6521:8:48","nodeType":"FunctionDefinition","parameters":{"id":6254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6251,"mutability":"mutable","name":"set","nameLocation":"6549:3:48","nodeType":"VariableDeclaration","scope":6265,"src":"6530:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"},"typeName":{"id":6250,"nodeType":"UserDefinedTypeName","pathNode":{"id":6249,"name":"Bytes32Set","nameLocations":["6530:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6211,"src":"6530:10:48"},"referencedDeclaration":6211,"src":"6530:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6253,"mutability":"mutable","name":"value","nameLocation":"6562:5:48","nodeType":"VariableDeclaration","scope":6265,"src":"6554:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6252,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6554:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6529:39:48"},"returnParameters":{"id":6257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6265,"src":"6592:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6255,"name":"bool","nodeType":"ElementaryTypeName","src":"6592:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6591:6:48"},"scope":6605,"src":"6512:140:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6279,"nodeType":"Block","src":"6810:45:48","statements":[{"expression":{"arguments":[{"expression":{"id":6275,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6269,"src":"6836:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set storage pointer"}},"id":6276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6840:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6210,"src":"6836:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}],"id":6274,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"6828:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer) view returns (uint256)"}},"id":6277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6828:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6273,"id":6278,"nodeType":"Return","src":"6821:26:48"}]},"documentation":{"id":6266,"nodeType":"StructuredDocumentation","src":"6660:72:48","text":" @dev Returns the number of values in the set. O(1)."},"id":6280,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"6747:6:48","nodeType":"FunctionDefinition","parameters":{"id":6270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6269,"mutability":"mutable","name":"set","nameLocation":"6773:3:48","nodeType":"VariableDeclaration","scope":6280,"src":"6754:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"},"typeName":{"id":6268,"nodeType":"UserDefinedTypeName","pathNode":{"id":6267,"name":"Bytes32Set","nameLocations":["6754:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6211,"src":"6754:10:48"},"referencedDeclaration":6211,"src":"6754:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"}},"visibility":"internal"}],"src":"6753:24:48"},"returnParameters":{"id":6273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6280,"src":"6801:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6271,"name":"uint256","nodeType":"ElementaryTypeName","src":"6801:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6800:9:48"},"scope":6605,"src":"6738:117:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6297,"nodeType":"Block","src":"7292:48:48","statements":[{"expression":{"arguments":[{"expression":{"id":6292,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6284,"src":"7314:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set storage pointer"}},"id":6293,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7318:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6210,"src":"7314:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"id":6294,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6286,"src":"7326:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6291,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"7310:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,uint256) view returns (bytes32)"}},"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7310:22:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6290,"id":6296,"nodeType":"Return","src":"7303:29:48"}]},"documentation":{"id":6281,"nodeType":"StructuredDocumentation","src":"6863:340:48","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6298,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"7218:2:48","nodeType":"FunctionDefinition","parameters":{"id":6287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6284,"mutability":"mutable","name":"set","nameLocation":"7240:3:48","nodeType":"VariableDeclaration","scope":6298,"src":"7221:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"},"typeName":{"id":6283,"nodeType":"UserDefinedTypeName","pathNode":{"id":6282,"name":"Bytes32Set","nameLocations":["7221:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6211,"src":"7221:10:48"},"referencedDeclaration":6211,"src":"7221:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6286,"mutability":"mutable","name":"index","nameLocation":"7253:5:48","nodeType":"VariableDeclaration","scope":6298,"src":"7245:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6285,"name":"uint256","nodeType":"ElementaryTypeName","src":"7245:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7220:39:48"},"returnParameters":{"id":6290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6298,"src":"7283:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7283:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7282:9:48"},"scope":6605,"src":"7209:131:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6313,"nodeType":"Block","src":"7971:45:48","statements":[{"expression":{"arguments":[{"expression":{"id":6309,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6302,"src":"7997:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set storage pointer"}},"id":6310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8001:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6210,"src":"7997:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}],"id":6308,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6207,"src":"7989:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer) view returns (bytes32[] memory)"}},"id":6311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7989:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":6307,"id":6312,"nodeType":"Return","src":"7982:26:48"}]},"documentation":{"id":6299,"nodeType":"StructuredDocumentation","src":"7348:536:48","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":6314,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"7899:6:48","nodeType":"FunctionDefinition","parameters":{"id":6303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6302,"mutability":"mutable","name":"set","nameLocation":"7925:3:48","nodeType":"VariableDeclaration","scope":6314,"src":"7906:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"},"typeName":{"id":6301,"nodeType":"UserDefinedTypeName","pathNode":{"id":6300,"name":"Bytes32Set","nameLocations":["7906:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6211,"src":"7906:10:48"},"referencedDeclaration":6211,"src":"7906:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6211_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Bytes32Set"}},"visibility":"internal"}],"src":"7905:24:48"},"returnParameters":{"id":6307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6314,"src":"7953:16:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7953:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6305,"nodeType":"ArrayTypeName","src":"7953:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"7952:18:48"},"scope":6605,"src":"7890:126:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSetUpgradeable.AddressSet","id":6318,"members":[{"constant":false,"id":6317,"mutability":"mutable","name":"_inner","nameLocation":"8078:6:48","nodeType":"VariableDeclaration","scope":6318,"src":"8074:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6316,"nodeType":"UserDefinedTypeName","pathNode":{"id":6315,"name":"Set","nameLocations":["8074:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"8074:3:48"},"referencedDeclaration":6017,"src":"8074:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"}],"name":"AddressSet","nameLocation":"8052:10:48","nodeType":"StructDefinition","scope":6605,"src":"8045:47:48","visibility":"public"},{"body":{"id":6344,"nodeType":"Block","src":"8346:76:48","statements":[{"expression":{"arguments":[{"expression":{"id":6330,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6322,"src":"8369:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet storage pointer"}},"id":6331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8373:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6317,"src":"8369:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6338,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"8405:5:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8397:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6336,"name":"uint160","nodeType":"ElementaryTypeName","src":"8397:7:48","typeDescriptions":{}}},"id":6339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8397:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8389:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6334,"name":"uint256","nodeType":"ElementaryTypeName","src":"8389:7:48","typeDescriptions":{}}},"id":6340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8389:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8381:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8381:7:48","typeDescriptions":{}}},"id":6341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8381:32:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6329,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"8364:4:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) returns (bool)"}},"id":6342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8364:50:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6328,"id":6343,"nodeType":"Return","src":"8357:57:48"}]},"documentation":{"id":6319,"nodeType":"StructuredDocumentation","src":"8100:164:48","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6345,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"8279:3:48","nodeType":"FunctionDefinition","parameters":{"id":6325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6322,"mutability":"mutable","name":"set","nameLocation":"8302:3:48","nodeType":"VariableDeclaration","scope":6345,"src":"8283:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"},"typeName":{"id":6321,"nodeType":"UserDefinedTypeName","pathNode":{"id":6320,"name":"AddressSet","nameLocations":["8283:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6318,"src":"8283:10:48"},"referencedDeclaration":6318,"src":"8283:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6324,"mutability":"mutable","name":"value","nameLocation":"8315:5:48","nodeType":"VariableDeclaration","scope":6345,"src":"8307:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6323,"name":"address","nodeType":"ElementaryTypeName","src":"8307:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8282:39:48"},"returnParameters":{"id":6328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6345,"src":"8340:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6326,"name":"bool","nodeType":"ElementaryTypeName","src":"8340:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8339:6:48"},"scope":6605,"src":"8270:152:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6371,"nodeType":"Block","src":"8677:79:48","statements":[{"expression":{"arguments":[{"expression":{"id":6357,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6349,"src":"8703:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet storage pointer"}},"id":6358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8707:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6317,"src":"8703:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"8739:5:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8731:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6363,"name":"uint160","nodeType":"ElementaryTypeName","src":"8731:7:48","typeDescriptions":{}}},"id":6366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8731:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8723:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6361,"name":"uint256","nodeType":"ElementaryTypeName","src":"8723:7:48","typeDescriptions":{}}},"id":6367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8723:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8715:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6359,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8715:7:48","typeDescriptions":{}}},"id":6368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8715:32:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6356,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"8695:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) returns (bool)"}},"id":6369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8695:53:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6355,"id":6370,"nodeType":"Return","src":"8688:60:48"}]},"documentation":{"id":6346,"nodeType":"StructuredDocumentation","src":"8430:162:48","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6372,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"8607:6:48","nodeType":"FunctionDefinition","parameters":{"id":6352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6349,"mutability":"mutable","name":"set","nameLocation":"8633:3:48","nodeType":"VariableDeclaration","scope":6372,"src":"8614:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"},"typeName":{"id":6348,"nodeType":"UserDefinedTypeName","pathNode":{"id":6347,"name":"AddressSet","nameLocations":["8614:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6318,"src":"8614:10:48"},"referencedDeclaration":6318,"src":"8614:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6351,"mutability":"mutable","name":"value","nameLocation":"8646:5:48","nodeType":"VariableDeclaration","scope":6372,"src":"8638:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6350,"name":"address","nodeType":"ElementaryTypeName","src":"8638:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8613:39:48"},"returnParameters":{"id":6355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6372,"src":"8671:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6353,"name":"bool","nodeType":"ElementaryTypeName","src":"8671:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8670:6:48"},"scope":6605,"src":"8598:158:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6398,"nodeType":"Block","src":"8928:81:48","statements":[{"expression":{"arguments":[{"expression":{"id":6384,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6376,"src":"8956:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet storage pointer"}},"id":6385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8960:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6317,"src":"8956:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6392,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6378,"src":"8992:5:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8984:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6390,"name":"uint160","nodeType":"ElementaryTypeName","src":"8984:7:48","typeDescriptions":{}}},"id":6393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8984:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8976:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6388,"name":"uint256","nodeType":"ElementaryTypeName","src":"8976:7:48","typeDescriptions":{}}},"id":6394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8976:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8968:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6386,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8968:7:48","typeDescriptions":{}}},"id":6395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8968:32:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6383,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6162,"src":"8946:9:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) view returns (bool)"}},"id":6396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8946:55:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6382,"id":6397,"nodeType":"Return","src":"8939:62:48"}]},"documentation":{"id":6373,"nodeType":"StructuredDocumentation","src":"8764:72:48","text":" @dev Returns true if the value is in the set. O(1)."},"id":6399,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"8851:8:48","nodeType":"FunctionDefinition","parameters":{"id":6379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6376,"mutability":"mutable","name":"set","nameLocation":"8879:3:48","nodeType":"VariableDeclaration","scope":6399,"src":"8860:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"},"typeName":{"id":6375,"nodeType":"UserDefinedTypeName","pathNode":{"id":6374,"name":"AddressSet","nameLocations":["8860:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6318,"src":"8860:10:48"},"referencedDeclaration":6318,"src":"8860:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6378,"mutability":"mutable","name":"value","nameLocation":"8892:5:48","nodeType":"VariableDeclaration","scope":6399,"src":"8884:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6377,"name":"address","nodeType":"ElementaryTypeName","src":"8884:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8859:39:48"},"returnParameters":{"id":6382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6399,"src":"8922:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6380,"name":"bool","nodeType":"ElementaryTypeName","src":"8922:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8921:6:48"},"scope":6605,"src":"8842:167:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6413,"nodeType":"Block","src":"9167:45:48","statements":[{"expression":{"arguments":[{"expression":{"id":6409,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6403,"src":"9193:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet storage pointer"}},"id":6410,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9197:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6317,"src":"9193:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}],"id":6408,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"9185:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer) view returns (uint256)"}},"id":6411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9185:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6407,"id":6412,"nodeType":"Return","src":"9178:26:48"}]},"documentation":{"id":6400,"nodeType":"StructuredDocumentation","src":"9017:72:48","text":" @dev Returns the number of values in the set. O(1)."},"id":6414,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"9104:6:48","nodeType":"FunctionDefinition","parameters":{"id":6404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6403,"mutability":"mutable","name":"set","nameLocation":"9130:3:48","nodeType":"VariableDeclaration","scope":6414,"src":"9111:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"},"typeName":{"id":6402,"nodeType":"UserDefinedTypeName","pathNode":{"id":6401,"name":"AddressSet","nameLocations":["9111:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6318,"src":"9111:10:48"},"referencedDeclaration":6318,"src":"9111:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"}},"visibility":"internal"}],"src":"9110:24:48"},"returnParameters":{"id":6407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6414,"src":"9158:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6405,"name":"uint256","nodeType":"ElementaryTypeName","src":"9158:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9157:9:48"},"scope":6605,"src":"9095:117:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6440,"nodeType":"Block","src":"9649:75:48","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":6432,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"9695:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet storage pointer"}},"id":6433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9699:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6317,"src":"9695:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"id":6434,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"9707:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6431,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"9691:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,uint256) view returns (bytes32)"}},"id":6435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9691:22:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9683:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6429,"name":"uint256","nodeType":"ElementaryTypeName","src":"9683:7:48","typeDescriptions":{}}},"id":6436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9683:31:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9675:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6427,"name":"uint160","nodeType":"ElementaryTypeName","src":"9675:7:48","typeDescriptions":{}}},"id":6437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9675:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9667:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6425,"name":"address","nodeType":"ElementaryTypeName","src":"9667:7:48","typeDescriptions":{}}},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9667:49:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6424,"id":6439,"nodeType":"Return","src":"9660:56:48"}]},"documentation":{"id":6415,"nodeType":"StructuredDocumentation","src":"9220:340:48","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6441,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"9575:2:48","nodeType":"FunctionDefinition","parameters":{"id":6421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6418,"mutability":"mutable","name":"set","nameLocation":"9597:3:48","nodeType":"VariableDeclaration","scope":6441,"src":"9578:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"},"typeName":{"id":6417,"nodeType":"UserDefinedTypeName","pathNode":{"id":6416,"name":"AddressSet","nameLocations":["9578:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6318,"src":"9578:10:48"},"referencedDeclaration":6318,"src":"9578:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6420,"mutability":"mutable","name":"index","nameLocation":"9610:5:48","nodeType":"VariableDeclaration","scope":6441,"src":"9602:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6419,"name":"uint256","nodeType":"ElementaryTypeName","src":"9602:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9577:39:48"},"returnParameters":{"id":6424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6441,"src":"9640:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6422,"name":"address","nodeType":"ElementaryTypeName","src":"9640:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9639:9:48"},"scope":6605,"src":"9566:158:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6470,"nodeType":"Block","src":"10355:229:48","statements":[{"assignments":[6455],"declarations":[{"constant":false,"id":6455,"mutability":"mutable","name":"store","nameLocation":"10383:5:48","nodeType":"VariableDeclaration","scope":6470,"src":"10366:22:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6453,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10366:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6454,"nodeType":"ArrayTypeName","src":"10366:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":6460,"initialValue":{"arguments":[{"expression":{"id":6457,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6445,"src":"10399:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet storage pointer"}},"id":6458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10403:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6317,"src":"10399:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}],"id":6456,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6207,"src":"10391:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer) view returns (bytes32[] memory)"}},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10391:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10366:44:48"},{"assignments":[6465],"declarations":[{"constant":false,"id":6465,"mutability":"mutable","name":"result","nameLocation":"10438:6:48","nodeType":"VariableDeclaration","scope":6470,"src":"10421:23:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6463,"name":"address","nodeType":"ElementaryTypeName","src":"10421:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6464,"nodeType":"ArrayTypeName","src":"10421:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":6466,"nodeType":"VariableDeclarationStatement","src":"10421:23:48"},{"AST":{"nativeSrc":"10510:41:48","nodeType":"YulBlock","src":"10510:41:48","statements":[{"nativeSrc":"10525:15:48","nodeType":"YulAssignment","src":"10525:15:48","value":{"name":"store","nativeSrc":"10535:5:48","nodeType":"YulIdentifier","src":"10535:5:48"},"variableNames":[{"name":"result","nativeSrc":"10525:6:48","nodeType":"YulIdentifier","src":"10525:6:48"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":6465,"isOffset":false,"isSlot":false,"src":"10525:6:48","valueSize":1},{"declaration":6455,"isOffset":false,"isSlot":false,"src":"10535:5:48","valueSize":1}],"id":6467,"nodeType":"InlineAssembly","src":"10501:50:48"},{"expression":{"id":6468,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6465,"src":"10570:6:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":6450,"id":6469,"nodeType":"Return","src":"10563:13:48"}]},"documentation":{"id":6442,"nodeType":"StructuredDocumentation","src":"9732:536:48","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":6471,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"10283:6:48","nodeType":"FunctionDefinition","parameters":{"id":6446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6445,"mutability":"mutable","name":"set","nameLocation":"10309:3:48","nodeType":"VariableDeclaration","scope":6471,"src":"10290:22:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"},"typeName":{"id":6444,"nodeType":"UserDefinedTypeName","pathNode":{"id":6443,"name":"AddressSet","nameLocations":["10290:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":6318,"src":"10290:10:48"},"referencedDeclaration":6318,"src":"10290:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"}},"visibility":"internal"}],"src":"10289:24:48"},"returnParameters":{"id":6450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6449,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6471,"src":"10337:16:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6447,"name":"address","nodeType":"ElementaryTypeName","src":"10337:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6448,"nodeType":"ArrayTypeName","src":"10337:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"10336:18:48"},"scope":6605,"src":"10274:310:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSetUpgradeable.UintSet","id":6475,"members":[{"constant":false,"id":6474,"mutability":"mutable","name":"_inner","nameLocation":"10640:6:48","nodeType":"VariableDeclaration","scope":6475,"src":"10636:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"},"typeName":{"id":6473,"nodeType":"UserDefinedTypeName","pathNode":{"id":6472,"name":"Set","nameLocations":["10636:3:48"],"nodeType":"IdentifierPath","referencedDeclaration":6017,"src":"10636:3:48"},"referencedDeclaration":6017,"src":"10636:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage_ptr","typeString":"struct EnumerableSetUpgradeable.Set"}},"visibility":"internal"}],"name":"UintSet","nameLocation":"10617:7:48","nodeType":"StructDefinition","scope":6605,"src":"10610:44:48","visibility":"public"},{"body":{"id":6495,"nodeType":"Block","src":"10905:58:48","statements":[{"expression":{"arguments":[{"expression":{"id":6487,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6479,"src":"10928:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet storage pointer"}},"id":6488,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10932:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"10928:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"arguments":[{"id":6491,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6481,"src":"10948:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10940:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6489,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10940:7:48","typeDescriptions":{}}},"id":6492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10940:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6486,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"10923:4:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) returns (bool)"}},"id":6493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10923:32:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6485,"id":6494,"nodeType":"Return","src":"10916:39:48"}]},"documentation":{"id":6476,"nodeType":"StructuredDocumentation","src":"10662:164:48","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6496,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"10841:3:48","nodeType":"FunctionDefinition","parameters":{"id":6482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6479,"mutability":"mutable","name":"set","nameLocation":"10861:3:48","nodeType":"VariableDeclaration","scope":6496,"src":"10845:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"},"typeName":{"id":6478,"nodeType":"UserDefinedTypeName","pathNode":{"id":6477,"name":"UintSet","nameLocations":["10845:7:48"],"nodeType":"IdentifierPath","referencedDeclaration":6475,"src":"10845:7:48"},"referencedDeclaration":6475,"src":"10845:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"}},"visibility":"internal"},{"constant":false,"id":6481,"mutability":"mutable","name":"value","nameLocation":"10874:5:48","nodeType":"VariableDeclaration","scope":6496,"src":"10866:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6480,"name":"uint256","nodeType":"ElementaryTypeName","src":"10866:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10844:36:48"},"returnParameters":{"id":6485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6496,"src":"10899:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6483,"name":"bool","nodeType":"ElementaryTypeName","src":"10899:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10898:6:48"},"scope":6605,"src":"10832:131:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6516,"nodeType":"Block","src":"11215:61:48","statements":[{"expression":{"arguments":[{"expression":{"id":6508,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6500,"src":"11241:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet storage pointer"}},"id":6509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11245:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"11241:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"arguments":[{"id":6512,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6502,"src":"11261:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11253:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6510,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11253:7:48","typeDescriptions":{}}},"id":6513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11253:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6507,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"11233:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) returns (bool)"}},"id":6514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11233:35:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6506,"id":6515,"nodeType":"Return","src":"11226:42:48"}]},"documentation":{"id":6497,"nodeType":"StructuredDocumentation","src":"10971:162:48","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6517,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"11148:6:48","nodeType":"FunctionDefinition","parameters":{"id":6503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6500,"mutability":"mutable","name":"set","nameLocation":"11171:3:48","nodeType":"VariableDeclaration","scope":6517,"src":"11155:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"},"typeName":{"id":6499,"nodeType":"UserDefinedTypeName","pathNode":{"id":6498,"name":"UintSet","nameLocations":["11155:7:48"],"nodeType":"IdentifierPath","referencedDeclaration":6475,"src":"11155:7:48"},"referencedDeclaration":6475,"src":"11155:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"}},"visibility":"internal"},{"constant":false,"id":6502,"mutability":"mutable","name":"value","nameLocation":"11184:5:48","nodeType":"VariableDeclaration","scope":6517,"src":"11176:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6501,"name":"uint256","nodeType":"ElementaryTypeName","src":"11176:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11154:36:48"},"returnParameters":{"id":6506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6505,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6517,"src":"11209:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6504,"name":"bool","nodeType":"ElementaryTypeName","src":"11209:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11208:6:48"},"scope":6605,"src":"11139:137:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6537,"nodeType":"Block","src":"11445:63:48","statements":[{"expression":{"arguments":[{"expression":{"id":6529,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6521,"src":"11473:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet storage pointer"}},"id":6530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11477:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"11473:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"arguments":[{"id":6533,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6523,"src":"11493:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11485:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6531,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11485:7:48","typeDescriptions":{}}},"id":6534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11485:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6528,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6162,"src":"11463:9:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,bytes32) view returns (bool)"}},"id":6535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11463:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6527,"id":6536,"nodeType":"Return","src":"11456:44:48"}]},"documentation":{"id":6518,"nodeType":"StructuredDocumentation","src":"11284:72:48","text":" @dev Returns true if the value is in the set. O(1)."},"id":6538,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"11371:8:48","nodeType":"FunctionDefinition","parameters":{"id":6524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6521,"mutability":"mutable","name":"set","nameLocation":"11396:3:48","nodeType":"VariableDeclaration","scope":6538,"src":"11380:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"},"typeName":{"id":6520,"nodeType":"UserDefinedTypeName","pathNode":{"id":6519,"name":"UintSet","nameLocations":["11380:7:48"],"nodeType":"IdentifierPath","referencedDeclaration":6475,"src":"11380:7:48"},"referencedDeclaration":6475,"src":"11380:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"}},"visibility":"internal"},{"constant":false,"id":6523,"mutability":"mutable","name":"value","nameLocation":"11409:5:48","nodeType":"VariableDeclaration","scope":6538,"src":"11401:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6522,"name":"uint256","nodeType":"ElementaryTypeName","src":"11401:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11379:36:48"},"returnParameters":{"id":6527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6538,"src":"11439:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6525,"name":"bool","nodeType":"ElementaryTypeName","src":"11439:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11438:6:48"},"scope":6605,"src":"11362:146:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6552,"nodeType":"Block","src":"11663:45:48","statements":[{"expression":{"arguments":[{"expression":{"id":6548,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6542,"src":"11689:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet storage pointer"}},"id":6549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11693:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"11689:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}],"id":6547,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"11681:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer) view returns (uint256)"}},"id":6550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11681:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6546,"id":6551,"nodeType":"Return","src":"11674:26:48"}]},"documentation":{"id":6539,"nodeType":"StructuredDocumentation","src":"11516:72:48","text":" @dev Returns the number of values on the set. O(1)."},"id":6553,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"11603:6:48","nodeType":"FunctionDefinition","parameters":{"id":6543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6542,"mutability":"mutable","name":"set","nameLocation":"11626:3:48","nodeType":"VariableDeclaration","scope":6553,"src":"11610:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"},"typeName":{"id":6541,"nodeType":"UserDefinedTypeName","pathNode":{"id":6540,"name":"UintSet","nameLocations":["11610:7:48"],"nodeType":"IdentifierPath","referencedDeclaration":6475,"src":"11610:7:48"},"referencedDeclaration":6475,"src":"11610:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"}},"visibility":"internal"}],"src":"11609:21:48"},"returnParameters":{"id":6546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6553,"src":"11654:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6544,"name":"uint256","nodeType":"ElementaryTypeName","src":"11654:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11653:9:48"},"scope":6605,"src":"11594:114:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6573,"nodeType":"Block","src":"12142:57:48","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":6567,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"12172:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet storage pointer"}},"id":6568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12176:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"12172:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}},{"id":6569,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6559,"src":"12184:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6566,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6193,"src":"12168:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer,uint256) view returns (bytes32)"}},"id":6570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12168:22:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12160:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6564,"name":"uint256","nodeType":"ElementaryTypeName","src":"12160:7:48","typeDescriptions":{}}},"id":6571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12160:31:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6563,"id":6572,"nodeType":"Return","src":"12153:38:48"}]},"documentation":{"id":6554,"nodeType":"StructuredDocumentation","src":"11716:340:48","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6574,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"12071:2:48","nodeType":"FunctionDefinition","parameters":{"id":6560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6557,"mutability":"mutable","name":"set","nameLocation":"12090:3:48","nodeType":"VariableDeclaration","scope":6574,"src":"12074:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"},"typeName":{"id":6556,"nodeType":"UserDefinedTypeName","pathNode":{"id":6555,"name":"UintSet","nameLocations":["12074:7:48"],"nodeType":"IdentifierPath","referencedDeclaration":6475,"src":"12074:7:48"},"referencedDeclaration":6475,"src":"12074:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"}},"visibility":"internal"},{"constant":false,"id":6559,"mutability":"mutable","name":"index","nameLocation":"12103:5:48","nodeType":"VariableDeclaration","scope":6574,"src":"12095:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6558,"name":"uint256","nodeType":"ElementaryTypeName","src":"12095:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12073:36:48"},"returnParameters":{"id":6563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6574,"src":"12133:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6561,"name":"uint256","nodeType":"ElementaryTypeName","src":"12133:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12132:9:48"},"scope":6605,"src":"12062:137:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6603,"nodeType":"Block","src":"12827:229:48","statements":[{"assignments":[6588],"declarations":[{"constant":false,"id":6588,"mutability":"mutable","name":"store","nameLocation":"12855:5:48","nodeType":"VariableDeclaration","scope":6603,"src":"12838:22:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6586,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12838:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6587,"nodeType":"ArrayTypeName","src":"12838:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":6593,"initialValue":{"arguments":[{"expression":{"id":6590,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6578,"src":"12871:3:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet storage pointer"}},"id":6591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12875:6:48","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6474,"src":"12871:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6017_storage","typeString":"struct EnumerableSetUpgradeable.Set storage ref"}],"id":6589,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6207,"src":"12863:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6017_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.Set storage pointer) view returns (bytes32[] memory)"}},"id":6592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12863:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"12838:44:48"},{"assignments":[6598],"declarations":[{"constant":false,"id":6598,"mutability":"mutable","name":"result","nameLocation":"12910:6:48","nodeType":"VariableDeclaration","scope":6603,"src":"12893:23:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6596,"name":"uint256","nodeType":"ElementaryTypeName","src":"12893:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6597,"nodeType":"ArrayTypeName","src":"12893:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6599,"nodeType":"VariableDeclarationStatement","src":"12893:23:48"},{"AST":{"nativeSrc":"12982:41:48","nodeType":"YulBlock","src":"12982:41:48","statements":[{"nativeSrc":"12997:15:48","nodeType":"YulAssignment","src":"12997:15:48","value":{"name":"store","nativeSrc":"13007:5:48","nodeType":"YulIdentifier","src":"13007:5:48"},"variableNames":[{"name":"result","nativeSrc":"12997:6:48","nodeType":"YulIdentifier","src":"12997:6:48"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":6598,"isOffset":false,"isSlot":false,"src":"12997:6:48","valueSize":1},{"declaration":6588,"isOffset":false,"isSlot":false,"src":"13007:5:48","valueSize":1}],"id":6600,"nodeType":"InlineAssembly","src":"12973:50:48"},{"expression":{"id":6601,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6598,"src":"13042:6:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":6583,"id":6602,"nodeType":"Return","src":"13035:13:48"}]},"documentation":{"id":6575,"nodeType":"StructuredDocumentation","src":"12207:536:48","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":6604,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"12758:6:48","nodeType":"FunctionDefinition","parameters":{"id":6579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6578,"mutability":"mutable","name":"set","nameLocation":"12781:3:48","nodeType":"VariableDeclaration","scope":6604,"src":"12765:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"},"typeName":{"id":6577,"nodeType":"UserDefinedTypeName","pathNode":{"id":6576,"name":"UintSet","nameLocations":["12765:7:48"],"nodeType":"IdentifierPath","referencedDeclaration":6475,"src":"12765:7:48"},"referencedDeclaration":6475,"src":"12765:7:48","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6475_storage_ptr","typeString":"struct EnumerableSetUpgradeable.UintSet"}},"visibility":"internal"}],"src":"12764:21:48"},"returnParameters":{"id":6583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6604,"src":"12809:16:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6580,"name":"uint256","nodeType":"ElementaryTypeName","src":"12809:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6581,"nodeType":"ArrayTypeName","src":"12809:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12808:18:48"},"scope":6605,"src":"12749:307:48","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":6606,"src":"1265:11794:48","usedErrors":[],"usedEvents":[]}],"src":"118:12943:48"},"id":48},"contracts/managers/BaluniV1HyperPoolZap.sol":{"ast":{"absolutePath":"contracts/managers/BaluniV1HyperPoolZap.sol","exportedSymbols":{"BaluniV1HyperPoolZap":[7497],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1HyperUniProxy":[3924],"IBaluniV1Hypervisor":[6934],"IBaluniV1Registry":[4909],"IBaluniV1Swapper":[5208],"IClearingV2":[6645],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"IUniswapV3Pool":[3175],"IUniswapV3PoolActions":[3285],"IUniswapV3PoolDerivedState":[3316],"IUniswapV3PoolEvents":[3435],"IUniswapV3PoolImmutables":[3475],"IUniswapV3PoolOwnerActions":[3501],"IUniswapV3PoolState":[3609],"IWETH":[6943],"Initializable":[448],"OwnableUpgradeable":[194],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":7498,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":6607,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:49"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":6608,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":1248,"src":"67:78:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":6609,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":195,"src":"147:75:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":6610,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":1599,"src":"224:82:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":6611,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":449,"src":"308:75:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":6612,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":631,"src":"385:77:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol","file":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol","id":6613,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":3176,"src":"464:66:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":6614,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":4910,"src":"534:45:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","file":"../interfaces/IBaluniV1Swapper.sol","id":6615,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":5209,"src":"581:44:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1HyperUniProxy.sol","file":"../interfaces/IBaluniV1HyperUniProxy.sol","id":6616,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7498,"sourceUnit":3925,"src":"627:50:49","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IClearingV2","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":6645,"linearizedBaseContracts":[6645],"name":"IClearingV2","nameLocation":"691:11:49","nodeType":"ContractDefinition","nodes":[{"functionSelector":"5ccfb71d","id":6629,"implemented":false,"kind":"function","modifiers":[],"name":"getDepositAmount","nameLocation":"719:16:49","nodeType":"FunctionDefinition","parameters":{"id":6623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6618,"mutability":"mutable","name":"pos","nameLocation":"754:3:49","nodeType":"VariableDeclaration","scope":6629,"src":"746:11:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6617,"name":"address","nodeType":"ElementaryTypeName","src":"746:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6620,"mutability":"mutable","name":"token","nameLocation":"776:5:49","nodeType":"VariableDeclaration","scope":6629,"src":"768:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6619,"name":"address","nodeType":"ElementaryTypeName","src":"768:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6622,"mutability":"mutable","name":"_deposit","nameLocation":"800:8:49","nodeType":"VariableDeclaration","scope":6629,"src":"792:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6621,"name":"uint256","nodeType":"ElementaryTypeName","src":"792:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"735:80:49"},"returnParameters":{"id":6628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6625,"mutability":"mutable","name":"amountStart","nameLocation":"847:11:49","nodeType":"VariableDeclaration","scope":6629,"src":"839:19:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6624,"name":"uint256","nodeType":"ElementaryTypeName","src":"839:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6627,"mutability":"mutable","name":"amountEnd","nameLocation":"868:9:49","nodeType":"VariableDeclaration","scope":6629,"src":"860:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6626,"name":"uint256","nodeType":"ElementaryTypeName","src":"860:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"838:40:49"},"scope":6645,"src":"710:169:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"757c4e1c","id":6644,"implemented":false,"kind":"function","modifiers":[],"name":"applyRatio","nameLocation":"896:10:49","nodeType":"FunctionDefinition","parameters":{"id":6638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6631,"mutability":"mutable","name":"pos","nameLocation":"925:3:49","nodeType":"VariableDeclaration","scope":6644,"src":"917:11:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6630,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6633,"mutability":"mutable","name":"token","nameLocation":"947:5:49","nodeType":"VariableDeclaration","scope":6644,"src":"939:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6632,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6635,"mutability":"mutable","name":"total0","nameLocation":"971:6:49","nodeType":"VariableDeclaration","scope":6644,"src":"963:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6634,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6637,"mutability":"mutable","name":"total1","nameLocation":"996:6:49","nodeType":"VariableDeclaration","scope":6644,"src":"988:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6636,"name":"uint256","nodeType":"ElementaryTypeName","src":"988:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"906:103:49"},"returnParameters":{"id":6643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6640,"mutability":"mutable","name":"ratioStart","nameLocation":"1041:10:49","nodeType":"VariableDeclaration","scope":6644,"src":"1033:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6639,"name":"uint256","nodeType":"ElementaryTypeName","src":"1033:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6642,"mutability":"mutable","name":"ratioEnd","nameLocation":"1061:8:49","nodeType":"VariableDeclaration","scope":6644,"src":"1053:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1053:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1032:38:49"},"scope":6645,"src":"887:184:49","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7498,"src":"681:393:49","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Hypervisor","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":6934,"linearizedBaseContracts":[6934],"name":"IBaluniV1Hypervisor","nameLocation":"1088:19:49","nodeType":"ContractDefinition","nodes":[{"functionSelector":"8e3c92e4","id":6662,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"1124:7:49","nodeType":"FunctionDefinition","parameters":{"id":6658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6647,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6662,"src":"1132:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6646,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6662,"src":"1141:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6648,"name":"uint256","nodeType":"ElementaryTypeName","src":"1141:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6651,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6662,"src":"1150:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6650,"name":"address","nodeType":"ElementaryTypeName","src":"1150:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6653,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6662,"src":"1159:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6652,"name":"address","nodeType":"ElementaryTypeName","src":"1159:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6657,"mutability":"mutable","name":"minIn","nameLocation":"1186:5:49","nodeType":"VariableDeclaration","scope":6662,"src":"1168:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":6654,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6656,"length":{"hexValue":"34","id":6655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1176:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"1168:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"1131:61:49"},"returnParameters":{"id":6661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6662,"src":"1211:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:9:49"},"scope":6934,"src":"1115:105:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a8559872","id":6679,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"1237:8:49","nodeType":"FunctionDefinition","parameters":{"id":6673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6679,"src":"1246:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6663,"name":"uint256","nodeType":"ElementaryTypeName","src":"1246:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6679,"src":"1255:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6665,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6679,"src":"1264:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6667,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6672,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6679,"src":"1273:17:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":6669,"name":"uint256","nodeType":"ElementaryTypeName","src":"1273:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6671,"length":{"hexValue":"34","id":6670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1281:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"1273:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"1245:46:49"},"returnParameters":{"id":6678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6675,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6679,"src":"1310:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6674,"name":"uint256","nodeType":"ElementaryTypeName","src":"1310:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6677,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6679,"src":"1319:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6676,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1309:18:49"},"scope":6934,"src":"1228:100:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f69e2046","id":6690,"implemented":false,"kind":"function","modifiers":[],"name":"compound","nameLocation":"1345:8:49","nodeType":"FunctionDefinition","parameters":{"id":6680,"nodeType":"ParameterList","parameters":[],"src":"1353:2:49"},"returnParameters":{"id":6689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6682,"mutability":"mutable","name":"baseToken0Owed","nameLocation":"1400:14:49","nodeType":"VariableDeclaration","scope":6690,"src":"1392:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6681,"name":"uint128","nodeType":"ElementaryTypeName","src":"1392:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6684,"mutability":"mutable","name":"baseToken1Owed","nameLocation":"1424:14:49","nodeType":"VariableDeclaration","scope":6690,"src":"1416:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6683,"name":"uint128","nodeType":"ElementaryTypeName","src":"1416:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6686,"mutability":"mutable","name":"limitToken0Owed","nameLocation":"1448:15:49","nodeType":"VariableDeclaration","scope":6690,"src":"1440:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6685,"name":"uint128","nodeType":"ElementaryTypeName","src":"1440:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6688,"mutability":"mutable","name":"limitToken1Owed","nameLocation":"1473:15:49","nodeType":"VariableDeclaration","scope":6690,"src":"1465:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6687,"name":"uint128","nodeType":"ElementaryTypeName","src":"1465:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1391:98:49"},"scope":6934,"src":"1336:154:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"513ea884","id":6705,"implemented":false,"kind":"function","modifiers":[],"name":"compound","nameLocation":"1507:8:49","nodeType":"FunctionDefinition","parameters":{"id":6695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6694,"mutability":"mutable","name":"inMin","nameLocation":"1544:5:49","nodeType":"VariableDeclaration","scope":6705,"src":"1526:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":6691,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6693,"length":{"hexValue":"34","id":6692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1534:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"1526:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"1515:41:49"},"returnParameters":{"id":6704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6697,"mutability":"mutable","name":"baseToken0Owed","nameLocation":"1601:14:49","nodeType":"VariableDeclaration","scope":6705,"src":"1593:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6696,"name":"uint128","nodeType":"ElementaryTypeName","src":"1593:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6699,"mutability":"mutable","name":"baseToken1Owed","nameLocation":"1625:14:49","nodeType":"VariableDeclaration","scope":6705,"src":"1617:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6698,"name":"uint128","nodeType":"ElementaryTypeName","src":"1617:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6701,"mutability":"mutable","name":"limitToken0Owed","nameLocation":"1649:15:49","nodeType":"VariableDeclaration","scope":6705,"src":"1641:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6700,"name":"uint128","nodeType":"ElementaryTypeName","src":"1641:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6703,"mutability":"mutable","name":"limitToken1Owed","nameLocation":"1674:15:49","nodeType":"VariableDeclaration","scope":6705,"src":"1666:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6702,"name":"uint128","nodeType":"ElementaryTypeName","src":"1666:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1592:98:49"},"scope":6934,"src":"1498:193:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"85919c5d","id":6726,"implemented":false,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"1708:9:49","nodeType":"FunctionDefinition","parameters":{"id":6724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6707,"mutability":"mutable","name":"_baseLower","nameLocation":"1734:10:49","nodeType":"VariableDeclaration","scope":6726,"src":"1728:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6706,"name":"int24","nodeType":"ElementaryTypeName","src":"1728:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6709,"mutability":"mutable","name":"_baseUpper","nameLocation":"1761:10:49","nodeType":"VariableDeclaration","scope":6726,"src":"1755:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6708,"name":"int24","nodeType":"ElementaryTypeName","src":"1755:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6711,"mutability":"mutable","name":"_limitLower","nameLocation":"1788:11:49","nodeType":"VariableDeclaration","scope":6726,"src":"1782:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6710,"name":"int24","nodeType":"ElementaryTypeName","src":"1782:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6713,"mutability":"mutable","name":"_limitUpper","nameLocation":"1816:11:49","nodeType":"VariableDeclaration","scope":6726,"src":"1810:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6712,"name":"int24","nodeType":"ElementaryTypeName","src":"1810:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6715,"mutability":"mutable","name":"_feeRecipient","nameLocation":"1846:13:49","nodeType":"VariableDeclaration","scope":6726,"src":"1838:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6714,"name":"address","nodeType":"ElementaryTypeName","src":"1838:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6719,"mutability":"mutable","name":"minIn","nameLocation":"1888:5:49","nodeType":"VariableDeclaration","scope":6726,"src":"1870:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":6716,"name":"uint256","nodeType":"ElementaryTypeName","src":"1870:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6718,"length":{"hexValue":"34","id":6717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1878:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"1870:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"},{"constant":false,"id":6723,"mutability":"mutable","name":"outMin","nameLocation":"1922:6:49","nodeType":"VariableDeclaration","scope":6726,"src":"1904:24:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":6720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1904:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6722,"length":{"hexValue":"34","id":6721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1912:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"1904:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"1717:218:49"},"returnParameters":{"id":6725,"nodeType":"ParameterList","parameters":[],"src":"1944:0:49"},"scope":6934,"src":"1699:246:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2527aa1d","id":6737,"implemented":false,"kind":"function","modifiers":[],"name":"addBaseLiquidity","nameLocation":"1962:16:49","nodeType":"FunctionDefinition","parameters":{"id":6735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6728,"mutability":"mutable","name":"amount0","nameLocation":"1987:7:49","nodeType":"VariableDeclaration","scope":6737,"src":"1979:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6727,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6730,"mutability":"mutable","name":"amount1","nameLocation":"2004:7:49","nodeType":"VariableDeclaration","scope":6737,"src":"1996:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6729,"name":"uint256","nodeType":"ElementaryTypeName","src":"1996:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6734,"mutability":"mutable","name":"minIn","nameLocation":"2031:5:49","nodeType":"VariableDeclaration","scope":6737,"src":"2013:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":6731,"name":"uint256","nodeType":"ElementaryTypeName","src":"2013:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6733,"length":{"hexValue":"32","id":6732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2021:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"2013:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"1978:59:49"},"returnParameters":{"id":6736,"nodeType":"ParameterList","parameters":[],"src":"2046:0:49"},"scope":6934,"src":"1953:94:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"49e8f1c2","id":6748,"implemented":false,"kind":"function","modifiers":[],"name":"addLimitLiquidity","nameLocation":"2064:17:49","nodeType":"FunctionDefinition","parameters":{"id":6746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6739,"mutability":"mutable","name":"amount0","nameLocation":"2090:7:49","nodeType":"VariableDeclaration","scope":6748,"src":"2082:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6738,"name":"uint256","nodeType":"ElementaryTypeName","src":"2082:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6741,"mutability":"mutable","name":"amount1","nameLocation":"2107:7:49","nodeType":"VariableDeclaration","scope":6748,"src":"2099:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6740,"name":"uint256","nodeType":"ElementaryTypeName","src":"2099:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6745,"mutability":"mutable","name":"minIn","nameLocation":"2134:5:49","nodeType":"VariableDeclaration","scope":6748,"src":"2116:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":6742,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6744,"length":{"hexValue":"32","id":6743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2124:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"2116:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"2081:59:49"},"returnParameters":{"id":6747,"nodeType":"ParameterList","parameters":[],"src":"2149:0:49"},"scope":6934,"src":"2055:95:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"95235656","id":6765,"implemented":false,"kind":"function","modifiers":[],"name":"pullLiquidity","nameLocation":"2167:13:49","nodeType":"FunctionDefinition","parameters":{"id":6759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6750,"mutability":"mutable","name":"tickLower","nameLocation":"2197:9:49","nodeType":"VariableDeclaration","scope":6765,"src":"2191:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6749,"name":"int24","nodeType":"ElementaryTypeName","src":"2191:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6752,"mutability":"mutable","name":"tickUpper","nameLocation":"2223:9:49","nodeType":"VariableDeclaration","scope":6765,"src":"2217:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6751,"name":"int24","nodeType":"ElementaryTypeName","src":"2217:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6754,"mutability":"mutable","name":"shares","nameLocation":"2251:6:49","nodeType":"VariableDeclaration","scope":6765,"src":"2243:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":6753,"name":"uint128","nodeType":"ElementaryTypeName","src":"2243:7:49","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":6758,"mutability":"mutable","name":"amountMin","nameLocation":"2286:9:49","nodeType":"VariableDeclaration","scope":6765,"src":"2268:27:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":6755,"name":"uint256","nodeType":"ElementaryTypeName","src":"2268:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6757,"length":{"hexValue":"32","id":6756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2276:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"2268:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"2180:122:49"},"returnParameters":{"id":6764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6761,"mutability":"mutable","name":"base0","nameLocation":"2329:5:49","nodeType":"VariableDeclaration","scope":6765,"src":"2321:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6760,"name":"uint256","nodeType":"ElementaryTypeName","src":"2321:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6763,"mutability":"mutable","name":"base1","nameLocation":"2344:5:49","nodeType":"VariableDeclaration","scope":6765,"src":"2336:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6762,"name":"uint256","nodeType":"ElementaryTypeName","src":"2336:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2320:30:49"},"scope":6934,"src":"2158:193:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1bead8f3","id":6782,"implemented":false,"kind":"function","modifiers":[],"name":"pullLiquidity","nameLocation":"2368:13:49","nodeType":"FunctionDefinition","parameters":{"id":6772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6767,"mutability":"mutable","name":"shares","nameLocation":"2400:6:49","nodeType":"VariableDeclaration","scope":6782,"src":"2392:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6766,"name":"uint256","nodeType":"ElementaryTypeName","src":"2392:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6771,"mutability":"mutable","name":"minAmounts","nameLocation":"2435:10:49","nodeType":"VariableDeclaration","scope":6782,"src":"2417:28:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":6768,"name":"uint256","nodeType":"ElementaryTypeName","src":"2417:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6770,"length":{"hexValue":"34","id":6769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2425:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"2417:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"src":"2381:71:49"},"returnParameters":{"id":6781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6774,"mutability":"mutable","name":"base0","nameLocation":"2479:5:49","nodeType":"VariableDeclaration","scope":6782,"src":"2471:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6773,"name":"uint256","nodeType":"ElementaryTypeName","src":"2471:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6776,"mutability":"mutable","name":"base1","nameLocation":"2494:5:49","nodeType":"VariableDeclaration","scope":6782,"src":"2486:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6775,"name":"uint256","nodeType":"ElementaryTypeName","src":"2486:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6778,"mutability":"mutable","name":"limit0","nameLocation":"2509:6:49","nodeType":"VariableDeclaration","scope":6782,"src":"2501:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6777,"name":"uint256","nodeType":"ElementaryTypeName","src":"2501:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6780,"mutability":"mutable","name":"limit1","nameLocation":"2525:6:49","nodeType":"VariableDeclaration","scope":6782,"src":"2517:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6779,"name":"uint256","nodeType":"ElementaryTypeName","src":"2517:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2470:62:49"},"scope":6934,"src":"2359:174:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"63e96836","id":6797,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidity","nameLocation":"2550:12:49","nodeType":"FunctionDefinition","parameters":{"id":6795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6784,"mutability":"mutable","name":"tickLower","nameLocation":"2579:9:49","nodeType":"VariableDeclaration","scope":6797,"src":"2573:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6783,"name":"int24","nodeType":"ElementaryTypeName","src":"2573:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6786,"mutability":"mutable","name":"tickUpper","nameLocation":"2605:9:49","nodeType":"VariableDeclaration","scope":6797,"src":"2599:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6785,"name":"int24","nodeType":"ElementaryTypeName","src":"2599:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"},{"constant":false,"id":6788,"mutability":"mutable","name":"amount0","nameLocation":"2633:7:49","nodeType":"VariableDeclaration","scope":6797,"src":"2625:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6787,"name":"uint256","nodeType":"ElementaryTypeName","src":"2625:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6790,"mutability":"mutable","name":"amount1","nameLocation":"2659:7:49","nodeType":"VariableDeclaration","scope":6797,"src":"2651:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6789,"name":"uint256","nodeType":"ElementaryTypeName","src":"2651:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6794,"mutability":"mutable","name":"inMin","nameLocation":"2695:5:49","nodeType":"VariableDeclaration","scope":6797,"src":"2677:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":6791,"name":"uint256","nodeType":"ElementaryTypeName","src":"2677:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6793,"length":{"hexValue":"32","id":6792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2685:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"2677:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"2562:145:49"},"returnParameters":{"id":6796,"nodeType":"ParameterList","parameters":[],"src":"2716:0:49"},"scope":6934,"src":"2541:176:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"16f0115b","id":6803,"implemented":false,"kind":"function","modifiers":[],"name":"pool","nameLocation":"2734:4:49","nodeType":"FunctionDefinition","parameters":{"id":6798,"nodeType":"ParameterList","parameters":[],"src":"2738:2:49"},"returnParameters":{"id":6802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6803,"src":"2764:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Pool_$3175","typeString":"contract IUniswapV3Pool"},"typeName":{"id":6800,"nodeType":"UserDefinedTypeName","pathNode":{"id":6799,"name":"IUniswapV3Pool","nameLocations":["2764:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":3175,"src":"2764:14:49"},"referencedDeclaration":3175,"src":"2764:14:49","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Pool_$3175","typeString":"contract IUniswapV3Pool"}},"visibility":"internal"}],"src":"2763:16:49"},"scope":6934,"src":"2725:55:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"065e5360","id":6808,"implemented":false,"kind":"function","modifiers":[],"name":"currentTick","nameLocation":"2797:11:49","nodeType":"FunctionDefinition","parameters":{"id":6804,"nodeType":"ParameterList","parameters":[],"src":"2808:2:49"},"returnParameters":{"id":6807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6806,"mutability":"mutable","name":"tick","nameLocation":"2840:4:49","nodeType":"VariableDeclaration","scope":6808,"src":"2834:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6805,"name":"int24","nodeType":"ElementaryTypeName","src":"2834:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2833:12:49"},"scope":6934,"src":"2788:58:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d0c93a7c","id":6813,"implemented":false,"kind":"function","modifiers":[],"name":"tickSpacing","nameLocation":"2863:11:49","nodeType":"FunctionDefinition","parameters":{"id":6809,"nodeType":"ParameterList","parameters":[],"src":"2874:2:49"},"returnParameters":{"id":6812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6811,"mutability":"mutable","name":"spacing","nameLocation":"2906:7:49","nodeType":"VariableDeclaration","scope":6813,"src":"2900:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6810,"name":"int24","nodeType":"ElementaryTypeName","src":"2900:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2899:15:49"},"scope":6934,"src":"2854:61:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fa082743","id":6818,"implemented":false,"kind":"function","modifiers":[],"name":"baseLower","nameLocation":"2932:9:49","nodeType":"FunctionDefinition","parameters":{"id":6814,"nodeType":"ParameterList","parameters":[],"src":"2941:2:49"},"returnParameters":{"id":6817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6816,"mutability":"mutable","name":"tick","nameLocation":"2973:4:49","nodeType":"VariableDeclaration","scope":6818,"src":"2967:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6815,"name":"int24","nodeType":"ElementaryTypeName","src":"2967:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"2966:12:49"},"scope":6934,"src":"2923:56:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"888a9134","id":6823,"implemented":false,"kind":"function","modifiers":[],"name":"baseUpper","nameLocation":"2996:9:49","nodeType":"FunctionDefinition","parameters":{"id":6819,"nodeType":"ParameterList","parameters":[],"src":"3005:2:49"},"returnParameters":{"id":6822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6821,"mutability":"mutable","name":"tick","nameLocation":"3037:4:49","nodeType":"VariableDeclaration","scope":6823,"src":"3031:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6820,"name":"int24","nodeType":"ElementaryTypeName","src":"3031:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3030:12:49"},"scope":6934,"src":"2987:56:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"51e87af7","id":6828,"implemented":false,"kind":"function","modifiers":[],"name":"limitLower","nameLocation":"3060:10:49","nodeType":"FunctionDefinition","parameters":{"id":6824,"nodeType":"ParameterList","parameters":[],"src":"3070:2:49"},"returnParameters":{"id":6827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6826,"mutability":"mutable","name":"tick","nameLocation":"3102:4:49","nodeType":"VariableDeclaration","scope":6828,"src":"3096:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6825,"name":"int24","nodeType":"ElementaryTypeName","src":"3096:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3095:12:49"},"scope":6934,"src":"3051:57:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f35bcac","id":6833,"implemented":false,"kind":"function","modifiers":[],"name":"limitUpper","nameLocation":"3125:10:49","nodeType":"FunctionDefinition","parameters":{"id":6829,"nodeType":"ParameterList","parameters":[],"src":"3135:2:49"},"returnParameters":{"id":6832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6831,"mutability":"mutable","name":"tick","nameLocation":"3167:4:49","nodeType":"VariableDeclaration","scope":6833,"src":"3161:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6830,"name":"int24","nodeType":"ElementaryTypeName","src":"3161:5:49","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"3160:12:49"},"scope":6934,"src":"3116:57:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0dfe1681","id":6839,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nameLocation":"3190:6:49","nodeType":"FunctionDefinition","parameters":{"id":6834,"nodeType":"ParameterList","parameters":[],"src":"3196:2:49"},"returnParameters":{"id":6838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6837,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6839,"src":"3222:6:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":6836,"nodeType":"UserDefinedTypeName","pathNode":{"id":6835,"name":"IERC20","nameLocations":["3222:6:49"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"3222:6:49"},"referencedDeclaration":2651,"src":"3222:6:49","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3221:8:49"},"scope":6934,"src":"3181:49:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d21220a7","id":6845,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nameLocation":"3247:6:49","nodeType":"FunctionDefinition","parameters":{"id":6840,"nodeType":"ParameterList","parameters":[],"src":"3253:2:49"},"returnParameters":{"id":6844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6845,"src":"3279:6:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":6842,"nodeType":"UserDefinedTypeName","pathNode":{"id":6841,"name":"IERC20","nameLocations":["3279:6:49"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"3279:6:49"},"referencedDeclaration":2651,"src":"3279:6:49","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3278:8:49"},"scope":6934,"src":"3238:49:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"648cab85","id":6850,"implemented":false,"kind":"function","modifiers":[],"name":"deposit0Max","nameLocation":"3304:11:49","nodeType":"FunctionDefinition","parameters":{"id":6846,"nodeType":"ParameterList","parameters":[],"src":"3315:2:49"},"returnParameters":{"id":6849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6850,"src":"3341:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6847,"name":"uint256","nodeType":"ElementaryTypeName","src":"3341:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3340:9:49"},"scope":6934,"src":"3295:55:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4d461fbb","id":6855,"implemented":false,"kind":"function","modifiers":[],"name":"deposit1Max","nameLocation":"3367:11:49","nodeType":"FunctionDefinition","parameters":{"id":6851,"nodeType":"ParameterList","parameters":[],"src":"3378:2:49"},"returnParameters":{"id":6854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6855,"src":"3404:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6852,"name":"uint256","nodeType":"ElementaryTypeName","src":"3404:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3403:9:49"},"scope":6934,"src":"3358:55:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":6862,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3430:9:49","nodeType":"FunctionDefinition","parameters":{"id":6858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6862,"src":"3440:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6856,"name":"address","nodeType":"ElementaryTypeName","src":"3440:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3439:9:49"},"returnParameters":{"id":6861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6860,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6862,"src":"3472:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6859,"name":"uint256","nodeType":"ElementaryTypeName","src":"3472:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3471:9:49"},"scope":6934,"src":"3421:60:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":6871,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3498:7:49","nodeType":"FunctionDefinition","parameters":{"id":6867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6864,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6871,"src":"3506:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6863,"name":"address","nodeType":"ElementaryTypeName","src":"3506:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6866,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6871,"src":"3515:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6865,"name":"uint256","nodeType":"ElementaryTypeName","src":"3515:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3505:18:49"},"returnParameters":{"id":6870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6871,"src":"3542:4:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6868,"name":"bool","nodeType":"ElementaryTypeName","src":"3542:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3541:6:49"},"scope":6934,"src":"3489:59:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":6882,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3565:12:49","nodeType":"FunctionDefinition","parameters":{"id":6878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6882,"src":"3578:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6872,"name":"address","nodeType":"ElementaryTypeName","src":"3578:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6882,"src":"3587:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6874,"name":"address","nodeType":"ElementaryTypeName","src":"3587:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6882,"src":"3596:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6876,"name":"uint256","nodeType":"ElementaryTypeName","src":"3596:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3577:27:49"},"returnParameters":{"id":6881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6882,"src":"3623:4:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6879,"name":"bool","nodeType":"ElementaryTypeName","src":"3623:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3622:6:49"},"scope":6934,"src":"3556:73:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":6891,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3646:8:49","nodeType":"FunctionDefinition","parameters":{"id":6887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6891,"src":"3655:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6883,"name":"address","nodeType":"ElementaryTypeName","src":"3655:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6886,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6891,"src":"3664:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6885,"name":"uint256","nodeType":"ElementaryTypeName","src":"3664:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3654:18:49"},"returnParameters":{"id":6890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6891,"src":"3691:4:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6888,"name":"bool","nodeType":"ElementaryTypeName","src":"3691:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3690:6:49"},"scope":6934,"src":"3637:60:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c4a7761e","id":6898,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalAmounts","nameLocation":"3714:15:49","nodeType":"FunctionDefinition","parameters":{"id":6892,"nodeType":"ParameterList","parameters":[],"src":"3729:2:49"},"returnParameters":{"id":6897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6894,"mutability":"mutable","name":"total0","nameLocation":"3763:6:49","nodeType":"VariableDeclaration","scope":6898,"src":"3755:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6893,"name":"uint256","nodeType":"ElementaryTypeName","src":"3755:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6896,"mutability":"mutable","name":"total1","nameLocation":"3779:6:49","nodeType":"VariableDeclaration","scope":6898,"src":"3771:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6895,"name":"uint256","nodeType":"ElementaryTypeName","src":"3771:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3754:32:49"},"scope":6934,"src":"3705:82:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d2eabcfc","id":6907,"implemented":false,"kind":"function","modifiers":[],"name":"getBasePosition","nameLocation":"3804:15:49","nodeType":"FunctionDefinition","parameters":{"id":6899,"nodeType":"ParameterList","parameters":[],"src":"3819:2:49"},"returnParameters":{"id":6906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6901,"mutability":"mutable","name":"liquidity","nameLocation":"3853:9:49","nodeType":"VariableDeclaration","scope":6907,"src":"3845:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6900,"name":"uint256","nodeType":"ElementaryTypeName","src":"3845:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6903,"mutability":"mutable","name":"total0","nameLocation":"3872:6:49","nodeType":"VariableDeclaration","scope":6907,"src":"3864:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6902,"name":"uint256","nodeType":"ElementaryTypeName","src":"3864:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6905,"mutability":"mutable","name":"total1","nameLocation":"3888:6:49","nodeType":"VariableDeclaration","scope":6907,"src":"3880:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6904,"name":"uint256","nodeType":"ElementaryTypeName","src":"3880:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3844:51:49"},"scope":6934,"src":"3795:101:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":6912,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3913:11:49","nodeType":"FunctionDefinition","parameters":{"id":6908,"nodeType":"ParameterList","parameters":[],"src":"3924:2:49"},"returnParameters":{"id":6911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6912,"src":"3950:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6909,"name":"uint256","nodeType":"ElementaryTypeName","src":"3950:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3949:9:49"},"scope":6934,"src":"3904:55:49","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"854cff2f","id":6917,"implemented":false,"kind":"function","modifiers":[],"name":"setWhitelist","nameLocation":"3976:12:49","nodeType":"FunctionDefinition","parameters":{"id":6915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6914,"mutability":"mutable","name":"_address","nameLocation":"3997:8:49","nodeType":"VariableDeclaration","scope":6917,"src":"3989:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6913,"name":"address","nodeType":"ElementaryTypeName","src":"3989:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3988:18:49"},"returnParameters":{"id":6916,"nodeType":"ParameterList","parameters":[],"src":"4015:0:49"},"scope":6934,"src":"3967:49:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cb122a09","id":6922,"implemented":false,"kind":"function","modifiers":[],"name":"setFee","nameLocation":"4033:6:49","nodeType":"FunctionDefinition","parameters":{"id":6920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6919,"mutability":"mutable","name":"newFee","nameLocation":"4046:6:49","nodeType":"VariableDeclaration","scope":6922,"src":"4040:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6918,"name":"uint8","nodeType":"ElementaryTypeName","src":"4040:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4039:14:49"},"returnParameters":{"id":6921,"nodeType":"ParameterList","parameters":[],"src":"4062:0:49"},"scope":6934,"src":"4024:39:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c5241e29","id":6925,"implemented":false,"kind":"function","modifiers":[],"name":"removeWhitelisted","nameLocation":"4080:17:49","nodeType":"FunctionDefinition","parameters":{"id":6923,"nodeType":"ParameterList","parameters":[],"src":"4097:2:49"},"returnParameters":{"id":6924,"nodeType":"ParameterList","parameters":[],"src":"4108:0:49"},"scope":6934,"src":"4071:38:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f2fde38b","id":6930,"implemented":false,"kind":"function","modifiers":[],"name":"transferOwnership","nameLocation":"4126:17:49","nodeType":"FunctionDefinition","parameters":{"id":6928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6927,"mutability":"mutable","name":"newOwner","nameLocation":"4152:8:49","nodeType":"VariableDeclaration","scope":6930,"src":"4144:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6926,"name":"address","nodeType":"ElementaryTypeName","src":"4144:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4143:18:49"},"returnParameters":{"id":6929,"nodeType":"ParameterList","parameters":[],"src":"4170:0:49"},"scope":6934,"src":"4117:54:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b1a3d533","id":6933,"implemented":false,"kind":"function","modifiers":[],"name":"toggleDirectDeposit","nameLocation":"4188:19:49","nodeType":"FunctionDefinition","parameters":{"id":6931,"nodeType":"ParameterList","parameters":[],"src":"4207:2:49"},"returnParameters":{"id":6932,"nodeType":"ParameterList","parameters":[],"src":"4218:0:49"},"scope":6934,"src":"4179:40:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7498,"src":"1078:3144:49","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IWETH","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":6943,"linearizedBaseContracts":[6943],"name":"IWETH","nameLocation":"4236:5:49","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d0e30db0","id":6937,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"4258:7:49","nodeType":"FunctionDefinition","parameters":{"id":6935,"nodeType":"ParameterList","parameters":[],"src":"4265:2:49"},"returnParameters":{"id":6936,"nodeType":"ParameterList","parameters":[],"src":"4284:0:49"},"scope":6943,"src":"4249:36:49","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":6942,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"4300:8:49","nodeType":"FunctionDefinition","parameters":{"id":6940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6939,"mutability":"mutable","name":"wad","nameLocation":"4314:3:49","nodeType":"VariableDeclaration","scope":6942,"src":"4309:8:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6938,"name":"uint","nodeType":"ElementaryTypeName","src":"4309:4:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4308:10:49"},"returnParameters":{"id":6941,"nodeType":"ParameterList","parameters":[],"src":"4327:0:49"},"scope":6943,"src":"4291:37:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7498,"src":"4226:105:49","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":6944,"name":"Initializable","nameLocations":["4368:13:49"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"4368:13:49"},"id":6945,"nodeType":"InheritanceSpecifier","src":"4368:13:49"},{"baseName":{"id":6946,"name":"OwnableUpgradeable","nameLocations":["4383:18:49"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"4383:18:49"},"id":6947,"nodeType":"InheritanceSpecifier","src":"4383:18:49"},{"baseName":{"id":6948,"name":"ReentrancyGuardUpgradeable","nameLocations":["4403:26:49"],"nodeType":"IdentifierPath","referencedDeclaration":1598,"src":"4403:26:49"},"id":6949,"nodeType":"InheritanceSpecifier","src":"4403:26:49"},{"baseName":{"id":6950,"name":"UUPSUpgradeable","nameLocations":["4431:15:49"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"4431:15:49"},"id":6951,"nodeType":"InheritanceSpecifier","src":"4431:15:49"}],"canonicalName":"BaluniV1HyperPoolZap","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":7497,"linearizedBaseContracts":[7497,630,1608,1598,194,1293,448],"name":"BaluniV1HyperPoolZap","nameLocation":"4344:20:49","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"7b103999","id":6954,"mutability":"mutable","name":"registry","nameLocation":"4479:8:49","nodeType":"VariableDeclaration","scope":7497,"src":"4454:33:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":6953,"nodeType":"UserDefinedTypeName","pathNode":{"id":6952,"name":"IBaluniV1Registry","nameLocations":["4454:17:49"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"4454:17:49"},"referencedDeclaration":4909,"src":"4454:17:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"constant":false,"functionSelector":"7dfb7ea1","id":6957,"mutability":"mutable","name":"baluniSwapper","nameLocation":"4518:13:49","nodeType":"VariableDeclaration","scope":7497,"src":"4494:37:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"},"typeName":{"id":6956,"nodeType":"UserDefinedTypeName","pathNode":{"id":6955,"name":"IBaluniV1Swapper","nameLocations":["4494:16:49"],"nodeType":"IdentifierPath","referencedDeclaration":5208,"src":"4494:16:49"},"referencedDeclaration":5208,"src":"4494:16:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"visibility":"public"},{"constant":false,"functionSelector":"8af90292","id":6960,"mutability":"mutable","name":"baluniHyperUniProxy","nameLocation":"4568:19:49","nodeType":"VariableDeclaration","scope":7497,"src":"4538:49:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1HyperUniProxy_$3924","typeString":"contract IBaluniV1HyperUniProxy"},"typeName":{"id":6959,"nodeType":"UserDefinedTypeName","pathNode":{"id":6958,"name":"IBaluniV1HyperUniProxy","nameLocations":["4538:22:49"],"nodeType":"IdentifierPath","referencedDeclaration":3924,"src":"4538:22:49"},"referencedDeclaration":3924,"src":"4538:22:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1HyperUniProxy_$3924","typeString":"contract IBaluniV1HyperUniProxy"}},"visibility":"public"},{"constant":false,"functionSelector":"4aa4a4fc","id":6962,"mutability":"mutable","name":"WETH9","nameLocation":"4609:5:49","nodeType":"VariableDeclaration","scope":7497,"src":"4594:20:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6961,"name":"address","nodeType":"ElementaryTypeName","src":"4594:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":7008,"nodeType":"Block","src":"4700:345:49","statements":[{"expression":{"arguments":[{"expression":{"id":6972,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4726:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4730:6:49","memberName":"sender","nodeType":"MemberAccess","src":"4726:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6971,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"4711:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":6974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4711:26:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6975,"nodeType":"ExpressionStatement","src":"4711:26:49"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6976,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"4748:22:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4748:24:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6978,"nodeType":"ExpressionStatement","src":"4748:24:49"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6979,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"4783:22:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4783:24:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6981,"nodeType":"ExpressionStatement","src":"4783:24:49"},{"expression":{"id":6986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6982,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"4820:8:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6984,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6964,"src":"4849:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6983,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"4831:17:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":6985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4831:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"4820:39:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":6987,"nodeType":"ExpressionStatement","src":"4820:39:49"},{"expression":{"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6988,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6957,"src":"4870:13:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6990,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"4903:8:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":6991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4912:16:49","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":4803,"src":"4903:25:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":6992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4903:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6989,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"4886:16:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":6993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4886:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"src":"4870:61:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":6995,"nodeType":"ExpressionStatement","src":"4870:61:49"},{"expression":{"id":7000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6996,"name":"baluniHyperUniProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"4942:19:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1HyperUniProxy_$3924","typeString":"contract IBaluniV1HyperUniProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6998,"name":"_uniProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"4987:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6997,"name":"IBaluniV1HyperUniProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3924,"src":"4964:22:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1HyperUniProxy_$3924_$","typeString":"type(contract IBaluniV1HyperUniProxy)"}},"id":6999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4964:33:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1HyperUniProxy_$3924","typeString":"contract IBaluniV1HyperUniProxy"}},"src":"4942:55:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1HyperUniProxy_$3924","typeString":"contract IBaluniV1HyperUniProxy"}},"id":7001,"nodeType":"ExpressionStatement","src":"4942:55:49"},{"expression":{"id":7006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7002,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6962,"src":"5008:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7003,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"5016:8:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":7004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5025:10:49","memberName":"getWNATIVE","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"5016:19:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5016:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5008:29:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7007,"nodeType":"ExpressionStatement","src":"5008:29:49"}]},"functionSelector":"485cc955","id":7009,"implemented":true,"kind":"function","modifiers":[{"id":6969,"kind":"modifierInvocation","modifierName":{"id":6968,"name":"initializer","nameLocations":["4688:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"4688:11:49"},"nodeType":"ModifierInvocation","src":"4688:11:49"}],"name":"initialize","nameLocation":"4632:10:49","nodeType":"FunctionDefinition","parameters":{"id":6967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6964,"mutability":"mutable","name":"_registry","nameLocation":"4651:9:49","nodeType":"VariableDeclaration","scope":7009,"src":"4643:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6963,"name":"address","nodeType":"ElementaryTypeName","src":"4643:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6966,"mutability":"mutable","name":"_uniProxy","nameLocation":"4670:9:49","nodeType":"VariableDeclaration","scope":7009,"src":"4662:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6965,"name":"address","nodeType":"ElementaryTypeName","src":"4662:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4642:38:49"},"returnParameters":{"id":6970,"nodeType":"ParameterList","parameters":[],"src":"4700:0:49"},"scope":7497,"src":"4623:422:49","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7022,"nodeType":"Block","src":"5115:74:49","statements":[{"expression":{"id":7020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7016,"name":"baluniHyperUniProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"5126:19:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1HyperUniProxy_$3924","typeString":"contract IBaluniV1HyperUniProxy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7018,"name":"_uniProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7011,"src":"5171:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7017,"name":"IBaluniV1HyperUniProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3924,"src":"5148:22:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1HyperUniProxy_$3924_$","typeString":"type(contract IBaluniV1HyperUniProxy)"}},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5148:33:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1HyperUniProxy_$3924","typeString":"contract IBaluniV1HyperUniProxy"}},"src":"5126:55:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1HyperUniProxy_$3924","typeString":"contract IBaluniV1HyperUniProxy"}},"id":7021,"nodeType":"ExpressionStatement","src":"5126:55:49"}]},"functionSelector":"45b1cb80","id":7023,"implemented":true,"kind":"function","modifiers":[{"id":7014,"kind":"modifierInvocation","modifierName":{"id":7013,"name":"onlyOwner","nameLocations":["5105:9:49"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5105:9:49"},"nodeType":"ModifierInvocation","src":"5105:9:49"}],"name":"changeUniProxy","nameLocation":"5062:14:49","nodeType":"FunctionDefinition","parameters":{"id":7012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7011,"mutability":"mutable","name":"_uniProxy","nameLocation":"5085:9:49","nodeType":"VariableDeclaration","scope":7023,"src":"5077:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7010,"name":"address","nodeType":"ElementaryTypeName","src":"5077:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5076:19:49"},"returnParameters":{"id":7015,"nodeType":"ParameterList","parameters":[],"src":"5115:0:49"},"scope":7497,"src":"5053:136:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7036,"nodeType":"Block","src":"5257:61:49","statements":[{"expression":{"id":7034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7030,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6957,"src":"5268:13:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7032,"name":"_swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7025,"src":"5301:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7031,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"5284:16:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5284:26:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"src":"5268:42:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":7035,"nodeType":"ExpressionStatement","src":"5268:42:49"}]},"functionSelector":"3ebb287c","id":7037,"implemented":true,"kind":"function","modifiers":[{"id":7028,"kind":"modifierInvocation","modifierName":{"id":7027,"name":"onlyOwner","nameLocations":["5247:9:49"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5247:9:49"},"nodeType":"ModifierInvocation","src":"5247:9:49"}],"name":"changeSwapper","nameLocation":"5206:13:49","nodeType":"FunctionDefinition","parameters":{"id":7026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7025,"mutability":"mutable","name":"_swapper","nameLocation":"5228:8:49","nodeType":"VariableDeclaration","scope":7037,"src":"5220:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7024,"name":"address","nodeType":"ElementaryTypeName","src":"5220:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5219:18:49"},"returnParameters":{"id":7029,"nodeType":"ParameterList","parameters":[],"src":"5257:0:49"},"scope":7497,"src":"5197:121:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7050,"nodeType":"Block","src":"5388:58:49","statements":[{"expression":{"id":7048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7044,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"5399:8:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7046,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7039,"src":"5428:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7045,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"5410:17:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":7047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5410:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"5399:39:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":7049,"nodeType":"ExpressionStatement","src":"5399:39:49"}]},"functionSelector":"15554c55","id":7051,"implemented":true,"kind":"function","modifiers":[{"id":7042,"kind":"modifierInvocation","modifierName":{"id":7041,"name":"onlyOwner","nameLocations":["5378:9:49"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5378:9:49"},"nodeType":"ModifierInvocation","src":"5378:9:49"}],"name":"changeRegistry","nameLocation":"5335:14:49","nodeType":"FunctionDefinition","parameters":{"id":7040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7039,"mutability":"mutable","name":"_registry","nameLocation":"5358:9:49","nodeType":"VariableDeclaration","scope":7051,"src":"5350:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7038,"name":"address","nodeType":"ElementaryTypeName","src":"5350:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5349:19:49"},"returnParameters":{"id":7043,"nodeType":"ParameterList","parameters":[],"src":"5388:0:49"},"scope":7497,"src":"5326:120:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[584],"body":{"id":7059,"nodeType":"Block","src":"5536:2:49","statements":[]},"id":7060,"implemented":true,"kind":"function","modifiers":[{"id":7057,"kind":"modifierInvocation","modifierName":{"id":7056,"name":"onlyOwner","nameLocations":["5526:9:49"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5526:9:49"},"nodeType":"ModifierInvocation","src":"5526:9:49"}],"name":"_authorizeUpgrade","nameLocation":"5463:17:49","nodeType":"FunctionDefinition","overrides":{"id":7055,"nodeType":"OverrideSpecifier","overrides":[],"src":"5517:8:49"},"parameters":{"id":7054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7053,"mutability":"mutable","name":"newImplementation","nameLocation":"5489:17:49","nodeType":"VariableDeclaration","scope":7060,"src":"5481:25:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7052,"name":"address","nodeType":"ElementaryTypeName","src":"5481:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5480:27:49"},"returnParameters":{"id":7058,"nodeType":"ParameterList","parameters":[],"src":"5536:0:49"},"scope":7497,"src":"5454:84:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7063,"nodeType":"Block","src":"5573:2:49","statements":[]},"id":7064,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7061,"nodeType":"ParameterList","parameters":[],"src":"5553:2:49"},"returnParameters":{"id":7062,"nodeType":"ParameterList","parameters":[],"src":"5573:0:49"},"scope":7497,"src":"5546:29:49","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":7079,"nodeType":"Block","src":"5776:2822:49","statements":[]},"functionSelector":"b487c54a","id":7080,"implemented":true,"kind":"function","modifiers":[{"id":7077,"kind":"modifierInvocation","modifierName":{"id":7076,"name":"nonReentrant","nameLocations":["5763:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"5763:12:49"},"nodeType":"ModifierInvocation","src":"5763:12:49"}],"name":"zapIn","nameLocation":"5592:5:49","nodeType":"FunctionDefinition","parameters":{"id":7075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7066,"mutability":"mutable","name":"hypervisor","nameLocation":"5616:10:49","nodeType":"VariableDeclaration","scope":7080,"src":"5608:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7065,"name":"address","nodeType":"ElementaryTypeName","src":"5608:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7068,"mutability":"mutable","name":"tokenIn","nameLocation":"5645:7:49","nodeType":"VariableDeclaration","scope":7080,"src":"5637:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7067,"name":"address","nodeType":"ElementaryTypeName","src":"5637:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7070,"mutability":"mutable","name":"amountIn","nameLocation":"5671:8:49","nodeType":"VariableDeclaration","scope":7080,"src":"5663:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7069,"name":"uint256","nodeType":"ElementaryTypeName","src":"5663:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7072,"mutability":"mutable","name":"minAmountsOut","nameLocation":"5698:13:49","nodeType":"VariableDeclaration","scope":7080,"src":"5690:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7071,"name":"uint256","nodeType":"ElementaryTypeName","src":"5690:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7074,"mutability":"mutable","name":"receiver","nameLocation":"5730:8:49","nodeType":"VariableDeclaration","scope":7080,"src":"5722:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7073,"name":"address","nodeType":"ElementaryTypeName","src":"5722:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5597:148:49"},"returnParameters":{"id":7078,"nodeType":"ParameterList","parameters":[],"src":"5776:0:49"},"scope":7497,"src":"5583:3015:49","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":7418,"nodeType":"Block","src":"8789:2058:49","statements":[{"assignments":[7097],"declarations":[{"constant":false,"id":7097,"mutability":"mutable","name":"hyperPool","nameLocation":"8820:9:49","nodeType":"VariableDeclaration","scope":7418,"src":"8800:29:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Hypervisor_$6934","typeString":"contract IBaluniV1Hypervisor"},"typeName":{"id":7096,"nodeType":"UserDefinedTypeName","pathNode":{"id":7095,"name":"IBaluniV1Hypervisor","nameLocations":["8800:19:49"],"nodeType":"IdentifierPath","referencedDeclaration":6934,"src":"8800:19:49"},"referencedDeclaration":6934,"src":"8800:19:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Hypervisor_$6934","typeString":"contract IBaluniV1Hypervisor"}},"visibility":"internal"}],"id":7101,"initialValue":{"arguments":[{"id":7099,"name":"hypervisor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"8852:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7098,"name":"IBaluniV1Hypervisor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6934,"src":"8832:19:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Hypervisor_$6934_$","typeString":"type(contract IBaluniV1Hypervisor)"}},"id":7100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8832:31:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Hypervisor_$6934","typeString":"contract IBaluniV1Hypervisor"}},"nodeType":"VariableDeclarationStatement","src":"8800:63:49"},{"assignments":[7103],"declarations":[{"constant":false,"id":7103,"mutability":"mutable","name":"token0","nameLocation":"8884:6:49","nodeType":"VariableDeclaration","scope":7418,"src":"8876:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7102,"name":"address","nodeType":"ElementaryTypeName","src":"8876:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7110,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7106,"name":"hyperPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"8901:9:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Hypervisor_$6934","typeString":"contract IBaluniV1Hypervisor"}},"id":7107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8911:6:49","memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":6839,"src":"8901:16:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2651_$","typeString":"function () view external returns (contract IERC20)"}},"id":7108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8901:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}],"id":7105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8893:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7104,"name":"address","nodeType":"ElementaryTypeName","src":"8893:7:49","typeDescriptions":{}}},"id":7109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8893:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8876:44:49"},{"assignments":[7112],"declarations":[{"constant":false,"id":7112,"mutability":"mutable","name":"token1","nameLocation":"8939:6:49","nodeType":"VariableDeclaration","scope":7418,"src":"8931:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7111,"name":"address","nodeType":"ElementaryTypeName","src":"8931:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7119,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7115,"name":"hyperPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"8956:9:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Hypervisor_$6934","typeString":"contract IBaluniV1Hypervisor"}},"id":7116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8966:6:49","memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":6845,"src":"8956:16:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2651_$","typeString":"function () view external returns (contract IERC20)"}},"id":7117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8956:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}],"id":7114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8948:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7113,"name":"address","nodeType":"ElementaryTypeName","src":"8948:7:49","typeDescriptions":{}}},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8948:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8931:44:49"},{"assignments":[7124],"declarations":[{"constant":false,"id":7124,"mutability":"mutable","name":"poolAssets","nameLocation":"9005:10:49","nodeType":"VariableDeclaration","scope":7418,"src":"8988:27:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7122,"name":"address","nodeType":"ElementaryTypeName","src":"8988:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7123,"nodeType":"ArrayTypeName","src":"8988:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":7130,"initialValue":{"arguments":[{"hexValue":"32","id":7128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9032:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":7127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9018:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":7125,"name":"address","nodeType":"ElementaryTypeName","src":"9022:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7126,"nodeType":"ArrayTypeName","src":"9022:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":7129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9018:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8988:46:49"},{"expression":{"id":7135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7131,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"9045:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7133,"indexExpression":{"hexValue":"30","id":7132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9045:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7134,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7103,"src":"9061:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9045:22:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7136,"nodeType":"ExpressionStatement","src":"9045:22:49"},{"expression":{"id":7141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7137,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"9078:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7139,"indexExpression":{"hexValue":"31","id":7138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9089:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9078:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7140,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7112,"src":"9094:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9078:22:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7142,"nodeType":"ExpressionStatement","src":"9078:22:49"},{"assignments":[7147],"declarations":[{"constant":false,"id":7147,"mutability":"mutable","name":"amounts","nameLocation":"9130:7:49","nodeType":"VariableDeclaration","scope":7418,"src":"9113:24:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7145,"name":"uint256","nodeType":"ElementaryTypeName","src":"9113:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7146,"nodeType":"ArrayTypeName","src":"9113:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":7153,"initialValue":{"arguments":[{"hexValue":"32","id":7151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9154:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":7150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9140:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":7148,"name":"uint256","nodeType":"ElementaryTypeName","src":"9144:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7149,"nodeType":"ArrayTypeName","src":"9144:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":7152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9140:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9113:43:49"},{"assignments":[7158],"declarations":[{"constant":false,"id":7158,"mutability":"mutable","name":"balances","nameLocation":"9186:8:49","nodeType":"VariableDeclaration","scope":7418,"src":"9169:25:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7156,"name":"uint256","nodeType":"ElementaryTypeName","src":"9169:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7157,"nodeType":"ArrayTypeName","src":"9169:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":7165,"initialValue":{"arguments":[{"expression":{"id":7162,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"9211:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9222:6:49","memberName":"length","nodeType":"MemberAccess","src":"9211:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9197:13:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":7159,"name":"uint256","nodeType":"ElementaryTypeName","src":"9201:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7160,"nodeType":"ArrayTypeName","src":"9201:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":7164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9197:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9169:60:49"},{"body":{"id":7193,"nodeType":"Block","src":"9288:87:49","statements":[{"expression":{"id":7191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7177,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7158,"src":"9303:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7179,"indexExpression":{"id":7178,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"9312:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9303:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7188,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9357:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9349:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7186,"name":"address","nodeType":"ElementaryTypeName","src":"9349:7:49","typeDescriptions":{}}},"id":7189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9349:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":7181,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"9324:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7183,"indexExpression":{"id":7182,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"9335:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9324:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7180,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9317:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9317:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9339:9:49","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"9317:31:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9317:46:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9303:60:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7192,"nodeType":"ExpressionStatement","src":"9303:60:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7170,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"9260:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7171,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"9264:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9275:6:49","memberName":"length","nodeType":"MemberAccess","src":"9264:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9260:21:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7194,"initializationExpression":{"assignments":[7167],"declarations":[{"constant":false,"id":7167,"mutability":"mutable","name":"i","nameLocation":"9253:1:49","nodeType":"VariableDeclaration","scope":7194,"src":"9245:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7166,"name":"uint256","nodeType":"ElementaryTypeName","src":"9245:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7169,"initialValue":{"hexValue":"30","id":7168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9257:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9245:13:49"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9283:3:49","subExpression":{"id":7174,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"9283:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7176,"nodeType":"ExpressionStatement","src":"9283:3:49"},"nodeType":"ForStatement","src":"9240:135:49"},{"assignments":[7196],"declarations":[{"constant":false,"id":7196,"mutability":"mutable","name":"balanceBefore","nameLocation":"9395:13:49","nodeType":"VariableDeclaration","scope":7418,"src":"9387:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7195,"name":"uint256","nodeType":"ElementaryTypeName","src":"9387:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7206,"initialValue":{"arguments":[{"arguments":[{"id":7203,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9446:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9438:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7201,"name":"address","nodeType":"ElementaryTypeName","src":"9438:7:49","typeDescriptions":{}}},"id":7204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9438:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":7198,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7086,"src":"9418:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7197,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9411:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9411:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9428:9:49","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"9411:26:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9411:41:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9387:65:49"},{"expression":{"arguments":[{"expression":{"id":7211,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9497:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9501:6:49","memberName":"sender","nodeType":"MemberAccess","src":"9497:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7215,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9517:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9509:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7213,"name":"address","nodeType":"ElementaryTypeName","src":"9509:7:49","typeDescriptions":{}}},"id":7216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9509:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7217,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"9524:5:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7208,"name":"hypervisor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"9472:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7207,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9465:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9465:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9484:12:49","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"9465:31:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":7218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9465:65:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7219,"nodeType":"ExpressionStatement","src":"9465:65:49"},{"expression":{"arguments":[{"arguments":[{"id":7226,"name":"hypervisor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"9576:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9568:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7224,"name":"address","nodeType":"ElementaryTypeName","src":"9568:7:49","typeDescriptions":{}}},"id":7227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9568:19:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7228,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"9589:5:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7221,"name":"hypervisor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7082,"src":"9548:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7220,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9541:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9541:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9560:7:49","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"9541:26:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9541:54:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7230,"nodeType":"ExpressionStatement","src":"9541:54:49"},{"assignments":[7236],"declarations":[{"constant":false,"id":7236,"mutability":"mutable","name":"minAmounts","nameLocation":"9626:10:49","nodeType":"VariableDeclaration","scope":7418,"src":"9608:28:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4]"},"typeName":{"baseType":{"id":7234,"name":"uint256","nodeType":"ElementaryTypeName","src":"9608:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7235,"length":{"hexValue":"34","id":7233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9616:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"ArrayTypeName","src":"9608:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_storage_ptr","typeString":"uint256[4]"}},"visibility":"internal"}],"id":7237,"nodeType":"VariableDeclarationStatement","src":"9608:28:49"},{"expression":{"id":7242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7238,"name":"minAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"9649:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":7240,"indexExpression":{"hexValue":"30","id":7239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9660:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9649:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":7241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9665:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9649:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7243,"nodeType":"ExpressionStatement","src":"9649:17:49"},{"expression":{"id":7248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7244,"name":"minAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"9677:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":7246,"indexExpression":{"hexValue":"31","id":7245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9688:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9677:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":7247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9693:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9677:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7249,"nodeType":"ExpressionStatement","src":"9677:17:49"},{"expression":{"id":7254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7250,"name":"minAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"9705:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":7252,"indexExpression":{"hexValue":"32","id":7251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9716:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9705:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":7253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9721:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9705:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7255,"nodeType":"ExpressionStatement","src":"9705:17:49"},{"expression":{"id":7260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7256,"name":"minAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"9733:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}},"id":7258,"indexExpression":{"hexValue":"33","id":7257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9744:1:49","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9733:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":7259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9749:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9733:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7261,"nodeType":"ExpressionStatement","src":"9733:17:49"},{"expression":{"arguments":[{"id":7265,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"9817:5:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7268,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9832:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9824:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7266,"name":"address","nodeType":"ElementaryTypeName","src":"9824:7:49","typeDescriptions":{}}},"id":7269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9824:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7272,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9847:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9839:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7270,"name":"address","nodeType":"ElementaryTypeName","src":"9839:7:49","typeDescriptions":{}}},"id":7273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9839:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7274,"name":"minAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"9854:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$4_memory_ptr","typeString":"uint256[4] memory"}],"expression":{"id":7262,"name":"hyperPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"9798:9:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Hypervisor_$6934","typeString":"contract IBaluniV1Hypervisor"}},"id":7264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9808:8:49","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":6679,"src":"9798:18:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_array$_t_uint256_$4_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,address,address,uint256[4] memory) external returns (uint256,uint256)"}},"id":7275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9798:67:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":7276,"nodeType":"ExpressionStatement","src":"9798:67:49"},{"assignments":[7278],"declarations":[{"constant":false,"id":7278,"mutability":"mutable","name":"totalAmountOut","nameLocation":"9886:14:49","nodeType":"VariableDeclaration","scope":7418,"src":"9878:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7277,"name":"uint256","nodeType":"ElementaryTypeName","src":"9878:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7280,"initialValue":{"hexValue":"30","id":7279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9903:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9878:26:49"},{"body":{"id":7362,"nodeType":"Block","src":"9965:420:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7292,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"9984:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7294,"indexExpression":{"id":7293,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"9995:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9984:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7295,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7086,"src":"10001:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9984:25:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7360,"nodeType":"Block","src":"10172:202:49","statements":[{"expression":{"id":7342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7324,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7147,"src":"10191:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7326,"indexExpression":{"id":7325,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10199:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10191:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7335,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10244:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10236:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7333,"name":"address","nodeType":"ElementaryTypeName","src":"10236:7:49","typeDescriptions":{}}},"id":7336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10236:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":7328,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"10211:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7330,"indexExpression":{"id":7329,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10222:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10211:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7327,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10204:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10204:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10226:9:49","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"10204:31:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10204:46:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":7338,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7158,"src":"10253:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7340,"indexExpression":{"id":7339,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10262:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10253:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10204:60:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10191:73:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7343,"nodeType":"ExpressionStatement","src":"10191:73:49"},{"expression":{"id":7358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7344,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"10283:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"baseExpression":{"id":7346,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"10307:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7348,"indexExpression":{"id":7347,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10318:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10307:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7349,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7086,"src":"10322:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":7350,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7147,"src":"10332:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7352,"indexExpression":{"id":7351,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10340:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10332:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7355,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10352:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10344:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7353,"name":"address","nodeType":"ElementaryTypeName","src":"10344:7:49","typeDescriptions":{}}},"id":7356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10344:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7345,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7496,"src":"10301:5:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) returns (uint256)"}},"id":7357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10301:57:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10283:75:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7359,"nodeType":"ExpressionStatement","src":"10283:75:49"}]},"id":7361,"nodeType":"IfStatement","src":"9980:394:49","trueBody":{"id":7323,"nodeType":"Block","src":"10011:155:49","statements":[{"expression":{"id":7315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7297,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7147,"src":"10030:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7299,"indexExpression":{"id":7298,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10038:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10030:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7308,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10083:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10075:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7306,"name":"address","nodeType":"ElementaryTypeName","src":"10075:7:49","typeDescriptions":{}}},"id":7309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10075:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":7301,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"10050:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7303,"indexExpression":{"id":7302,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10061:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10050:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7300,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10043:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10043:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10065:9:49","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"10043:31:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10043:46:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":7311,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7158,"src":"10092:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7313,"indexExpression":{"id":7312,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10101:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10092:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10043:60:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10030:73:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7316,"nodeType":"ExpressionStatement","src":"10030:73:49"},{"expression":{"id":7321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7317,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"10122:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":7318,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7147,"src":"10140:7:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7320,"indexExpression":{"id":7319,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"10148:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10140:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10122:28:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7322,"nodeType":"ExpressionStatement","src":"10122:28:49"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7285,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"9937:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7286,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"9941:10:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9952:6:49","memberName":"length","nodeType":"MemberAccess","src":"9941:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:21:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7363,"initializationExpression":{"assignments":[7282],"declarations":[{"constant":false,"id":7282,"mutability":"mutable","name":"i","nameLocation":"9930:1:49","nodeType":"VariableDeclaration","scope":7363,"src":"9922:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7281,"name":"uint256","nodeType":"ElementaryTypeName","src":"9922:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7284,"initialValue":{"hexValue":"30","id":7283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9934:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9922:13:49"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9960:3:49","subExpression":{"id":7289,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"9960:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7291,"nodeType":"ExpressionStatement","src":"9960:3:49"},"nodeType":"ForStatement","src":"9917:468:49"},{"assignments":[7365],"declarations":[{"constant":false,"id":7365,"mutability":"mutable","name":"balanceAfter","nameLocation":"10405:12:49","nodeType":"VariableDeclaration","scope":7418,"src":"10397:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7364,"name":"uint256","nodeType":"ElementaryTypeName","src":"10397:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7375,"initialValue":{"arguments":[{"arguments":[{"id":7372,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10455:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1HyperPoolZap_$7497","typeString":"contract BaluniV1HyperPoolZap"}],"id":7371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10447:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7370,"name":"address","nodeType":"ElementaryTypeName","src":"10447:7:49","typeDescriptions":{}}},"id":7373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10447:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":7367,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7086,"src":"10427:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7366,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10420:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10420:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10437:9:49","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"10420:26:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10420:41:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10397:64:49"},{"expression":{"id":7380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7376,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"10472:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7377,"name":"balanceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7365,"src":"10489:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7378,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7196,"src":"10504:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10489:28:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10472:45:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7381,"nodeType":"ExpressionStatement","src":"10472:45:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7383,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"10538:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7384,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"10556:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10538:30:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e74206f757470757420616d6f756e74","id":7386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10570:28:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90","typeString":"literal_string \"Insufficient output amount\""},"value":"Insufficient output amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90","typeString":"literal_string \"Insufficient output amount\""}],"id":7382,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10530:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10530:69:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7388,"nodeType":"ExpressionStatement","src":"10530:69:49"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7389,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7086,"src":"10616:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7390,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6962,"src":"10628:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10616:17:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7416,"nodeType":"Block","src":"10762:78:49","statements":[{"expression":{"arguments":[{"id":7412,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7090,"src":"10803:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7413,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"10813:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7409,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7086,"src":"10784:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7408,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10777:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10777:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10794:8:49","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"10777:25:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10777:51:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7415,"nodeType":"ExpressionStatement","src":"10777:51:49"}]},"id":7417,"nodeType":"IfStatement","src":"10612:228:49","trueBody":{"id":7407,"nodeType":"Block","src":"10635:121:49","statements":[{"expression":{"arguments":[{"id":7396,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"10672:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7393,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6962,"src":"10656:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7392,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6943,"src":"10650:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH_$6943_$","typeString":"type(contract IWETH)"}},"id":7394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10650:12:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$6943","typeString":"contract IWETH"}},"id":7395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10663:8:49","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":6942,"src":"10650:21:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":7397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10650:37:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7398,"nodeType":"ExpressionStatement","src":"10650:37:49"},{"expression":{"arguments":[{"id":7404,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"10729:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7401,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7090,"src":"10710:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10702:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":7399,"name":"address","nodeType":"ElementaryTypeName","src":"10702:8:49","stateMutability":"payable","typeDescriptions":{}}},"id":7402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10702:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":7403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10720:8:49","memberName":"transfer","nodeType":"MemberAccess","src":"10702:26:49","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10702:42:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7406,"nodeType":"ExpressionStatement","src":"10702:42:49"}]}}]},"functionSelector":"b1aa8cd1","id":7419,"implemented":true,"kind":"function","modifiers":[{"id":7093,"kind":"modifierInvocation","modifierName":{"id":7092,"name":"nonReentrant","nameLocations":["8776:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"8776:12:49"},"nodeType":"ModifierInvocation","src":"8776:12:49"}],"name":"zapOut","nameLocation":"8615:6:49","nodeType":"FunctionDefinition","parameters":{"id":7091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7082,"mutability":"mutable","name":"hypervisor","nameLocation":"8640:10:49","nodeType":"VariableDeclaration","scope":7419,"src":"8632:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7081,"name":"address","nodeType":"ElementaryTypeName","src":"8632:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7084,"mutability":"mutable","name":"share","nameLocation":"8669:5:49","nodeType":"VariableDeclaration","scope":7419,"src":"8661:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7083,"name":"uint256","nodeType":"ElementaryTypeName","src":"8661:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7086,"mutability":"mutable","name":"tokenOut","nameLocation":"8693:8:49","nodeType":"VariableDeclaration","scope":7419,"src":"8685:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7085,"name":"address","nodeType":"ElementaryTypeName","src":"8685:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7088,"mutability":"mutable","name":"minAmountOut","nameLocation":"8720:12:49","nodeType":"VariableDeclaration","scope":7419,"src":"8712:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7087,"name":"uint256","nodeType":"ElementaryTypeName","src":"8712:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7090,"mutability":"mutable","name":"receiver","nameLocation":"8751:8:49","nodeType":"VariableDeclaration","scope":7419,"src":"8743:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7089,"name":"address","nodeType":"ElementaryTypeName","src":"8743:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8621:145:49"},"returnParameters":{"id":7094,"nodeType":"ParameterList","parameters":[],"src":"8789:0:49"},"scope":7497,"src":"8606:2241:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7495,"nodeType":"Block","src":"11021:558:49","statements":[{"assignments":[7433],"declarations":[{"constant":false,"id":7433,"mutability":"mutable","name":"WMATIC","nameLocation":"11040:6:49","nodeType":"VariableDeclaration","scope":7495,"src":"11032:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7432,"name":"address","nodeType":"ElementaryTypeName","src":"11032:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7437,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7434,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"11049:8:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":7435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11058:10:49","memberName":"getWNATIVE","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"11049:19:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11049:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11032:38:49"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7438,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7421,"src":"11087:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7439,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7423,"src":"11098:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11087:19:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7444,"nodeType":"IfStatement","src":"11083:67:49","trueBody":{"id":7443,"nodeType":"Block","src":"11108:42:49","statements":[{"expression":{"id":7441,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7425,"src":"11130:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7431,"id":7442,"nodeType":"Return","src":"11123:15:49"}]}},{"expression":{"arguments":[{"arguments":[{"id":7451,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6957,"src":"11194:13:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}],"id":7450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11186:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7449,"name":"address","nodeType":"ElementaryTypeName","src":"11186:7:49","typeDescriptions":{}}},"id":7452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11186:22:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7453,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7425,"src":"11210:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7446,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7421,"src":"11169:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7445,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"11162:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11162:15:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11178:7:49","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"11162:23:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11162:57:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7455,"nodeType":"ExpressionStatement","src":"11162:57:49"},{"clauses":[{"block":{"id":7470,"nodeType":"Block","src":"11329:49:49","statements":[{"expression":{"id":7468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7466,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"11344:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7467,"name":"_amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7464,"src":"11356:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11344:22:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7469,"nodeType":"ExpressionStatement","src":"11344:22:49"}]},"errorName":"","id":7471,"nodeType":"TryCatchClause","parameters":{"id":7465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7464,"mutability":"mutable","name":"_amountOut","nameLocation":"11317:10:49","nodeType":"VariableDeclaration","scope":7471,"src":"11309:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7463,"name":"uint256","nodeType":"ElementaryTypeName","src":"11309:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11308:20:49"},"src":"11300:78:49"},{"block":{"id":7483,"nodeType":"Block","src":"11385:112:49","statements":[{"expression":{"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7472,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"11400:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7475,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7421,"src":"11439:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7476,"name":"WMATIC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"11448:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7477,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7423,"src":"11456:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7478,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7425,"src":"11466:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7479,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7427,"src":"11476:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7473,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6957,"src":"11412:13:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":7474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11426:12:49","memberName":"multiHopSwap","nodeType":"MemberAccess","referencedDeclaration":5207,"src":"11412:26:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,address) external returns (uint256)"}},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11412:73:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11400:85:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7482,"nodeType":"ExpressionStatement","src":"11400:85:49"}]},"errorName":"","id":7484,"nodeType":"TryCatchClause","src":"11379:118:49"}],"externalCall":{"arguments":[{"id":7458,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7421,"src":"11261:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7459,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7423,"src":"11270:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7460,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7425,"src":"11280:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7461,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7427,"src":"11290:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7456,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6957,"src":"11236:13:49","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":7457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11250:10:49","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":5192,"src":"11236:24:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":7462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11236:63:49","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7485,"nodeType":"TryStatement","src":"11232:265:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7487,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"11515:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11527:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11515:13:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53776170206661696c6564","id":7490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11530:13:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69","typeString":"literal_string \"Swap failed\""},"value":"Swap failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69","typeString":"literal_string \"Swap failed\""}],"id":7486,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11507:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11507:37:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7492,"nodeType":"ExpressionStatement","src":"11507:37:49"},{"expression":{"id":7493,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7430,"src":"11562:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7431,"id":7494,"nodeType":"Return","src":"11555:16:49"}]},"id":7496,"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nameLocation":"10864:5:49","nodeType":"FunctionDefinition","parameters":{"id":7428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7421,"mutability":"mutable","name":"tokenIn","nameLocation":"10888:7:49","nodeType":"VariableDeclaration","scope":7496,"src":"10880:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7420,"name":"address","nodeType":"ElementaryTypeName","src":"10880:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7423,"mutability":"mutable","name":"tokenOut","nameLocation":"10914:8:49","nodeType":"VariableDeclaration","scope":7496,"src":"10906:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7422,"name":"address","nodeType":"ElementaryTypeName","src":"10906:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7425,"mutability":"mutable","name":"amountIn","nameLocation":"10941:8:49","nodeType":"VariableDeclaration","scope":7496,"src":"10933:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7424,"name":"uint256","nodeType":"ElementaryTypeName","src":"10933:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7427,"mutability":"mutable","name":"receiver","nameLocation":"10968:8:49","nodeType":"VariableDeclaration","scope":7496,"src":"10960:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7426,"name":"address","nodeType":"ElementaryTypeName","src":"10960:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10869:114:49"},"returnParameters":{"id":7431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7430,"mutability":"mutable","name":"amountOut","nameLocation":"11010:9:49","nodeType":"VariableDeclaration","scope":7496,"src":"11002:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7429,"name":"uint256","nodeType":"ElementaryTypeName","src":"11002:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11001:19:49"},"scope":7497,"src":"10855:724:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":7498,"src":"4335:7247:49","usedErrors":[30,35,211,214,475,480,1500,1780,1793,2690,2693],"usedEvents":[41,219,1759]}],"src":"40:11544:49"},"id":49},"contracts/managers/BaluniV1PoolZap.sol":{"ast":{"absolutePath":"contracts/managers/BaluniV1PoolZap.sol","exportedSymbols":{"BaluniV1PoolZap":[8162],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1Pool":[7542],"IBaluniV1Registry":[4909],"IBaluniV1Swapper":[5208],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"IWETH":[7551],"Initializable":[448],"OwnableUpgradeable":[194],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":8163,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":7499,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:50"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":7500,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8163,"sourceUnit":1248,"src":"67:78:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":7501,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8163,"sourceUnit":195,"src":"147:75:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":7502,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8163,"sourceUnit":1599,"src":"224:82:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":7503,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8163,"sourceUnit":449,"src":"308:75:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":7504,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8163,"sourceUnit":631,"src":"385:77:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":7505,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8163,"sourceUnit":4910,"src":"466:45:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","file":"../interfaces/IBaluniV1Swapper.sol","id":7506,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8163,"sourceUnit":5209,"src":"513:44:50","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IBaluniV1Pool","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":7542,"linearizedBaseContracts":[7542],"name":"IBaluniV1Pool","nameLocation":"571:13:50","nodeType":"ContractDefinition","nodes":[{"functionSelector":"b3bf9d32","id":7518,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"601:7:50","nodeType":"FunctionDefinition","parameters":{"id":7514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7508,"mutability":"mutable","name":"to","nameLocation":"617:2:50","nodeType":"VariableDeclaration","scope":7518,"src":"609:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7507,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7511,"mutability":"mutable","name":"amounts","nameLocation":"638:7:50","nodeType":"VariableDeclaration","scope":7518,"src":"621:24:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7509,"name":"uint256","nodeType":"ElementaryTypeName","src":"621:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7510,"nodeType":"ArrayTypeName","src":"621:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7513,"mutability":"mutable","name":"deadline","nameLocation":"655:8:50","nodeType":"VariableDeclaration","scope":7518,"src":"647:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7512,"name":"uint256","nodeType":"ElementaryTypeName","src":"647:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"608:56:50"},"returnParameters":{"id":7517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7518,"src":"683:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7515,"name":"uint256","nodeType":"ElementaryTypeName","src":"683:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"682:9:50"},"scope":7542,"src":"592:100:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e63697c8","id":7529,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"707:8:50","nodeType":"FunctionDefinition","parameters":{"id":7525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7520,"mutability":"mutable","name":"share","nameLocation":"724:5:50","nodeType":"VariableDeclaration","scope":7529,"src":"716:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7519,"name":"uint256","nodeType":"ElementaryTypeName","src":"716:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7522,"mutability":"mutable","name":"to","nameLocation":"739:2:50","nodeType":"VariableDeclaration","scope":7529,"src":"731:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7521,"name":"address","nodeType":"ElementaryTypeName","src":"731:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7524,"mutability":"mutable","name":"deadline","nameLocation":"751:8:50","nodeType":"VariableDeclaration","scope":7529,"src":"743:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7523,"name":"uint256","nodeType":"ElementaryTypeName","src":"743:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"715:45:50"},"returnParameters":{"id":7528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7527,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7529,"src":"779:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7526,"name":"uint256","nodeType":"ElementaryTypeName","src":"779:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"778:9:50"},"scope":7542,"src":"698:90:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"67e4ac2c","id":7535,"implemented":false,"kind":"function","modifiers":[],"name":"getAssets","nameLocation":"803:9:50","nodeType":"FunctionDefinition","parameters":{"id":7530,"nodeType":"ParameterList","parameters":[],"src":"812:2:50"},"returnParameters":{"id":7534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7535,"src":"838:16:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7531,"name":"address","nodeType":"ElementaryTypeName","src":"838:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7532,"nodeType":"ArrayTypeName","src":"838:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"837:18:50"},"scope":7542,"src":"794:62:50","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0902f1ac","id":7541,"implemented":false,"kind":"function","modifiers":[],"name":"getReserves","nameLocation":"871:11:50","nodeType":"FunctionDefinition","parameters":{"id":7536,"nodeType":"ParameterList","parameters":[],"src":"882:2:50"},"returnParameters":{"id":7540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7541,"src":"908:16:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7537,"name":"uint256","nodeType":"ElementaryTypeName","src":"908:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7538,"nodeType":"ArrayTypeName","src":"908:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"907:18:50"},"scope":7542,"src":"862:64:50","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8163,"src":"561:368:50","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IWETH","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":7551,"linearizedBaseContracts":[7551],"name":"IWETH","nameLocation":"943:5:50","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d0e30db0","id":7545,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"965:7:50","nodeType":"FunctionDefinition","parameters":{"id":7543,"nodeType":"ParameterList","parameters":[],"src":"972:2:50"},"returnParameters":{"id":7544,"nodeType":"ParameterList","parameters":[],"src":"991:0:50"},"scope":7551,"src":"956:36:50","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":7550,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"1007:8:50","nodeType":"FunctionDefinition","parameters":{"id":7548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7547,"mutability":"mutable","name":"wad","nameLocation":"1021:3:50","nodeType":"VariableDeclaration","scope":7550,"src":"1016:8:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7546,"name":"uint","nodeType":"ElementaryTypeName","src":"1016:4:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1015:10:50"},"returnParameters":{"id":7549,"nodeType":"ParameterList","parameters":[],"src":"1034:0:50"},"scope":7551,"src":"998:37:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8163,"src":"933:105:50","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":7552,"name":"Initializable","nameLocations":["1070:13:50"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1070:13:50"},"id":7553,"nodeType":"InheritanceSpecifier","src":"1070:13:50"},{"baseName":{"id":7554,"name":"OwnableUpgradeable","nameLocations":["1085:18:50"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"1085:18:50"},"id":7555,"nodeType":"InheritanceSpecifier","src":"1085:18:50"},{"baseName":{"id":7556,"name":"ReentrancyGuardUpgradeable","nameLocations":["1105:26:50"],"nodeType":"IdentifierPath","referencedDeclaration":1598,"src":"1105:26:50"},"id":7557,"nodeType":"InheritanceSpecifier","src":"1105:26:50"},{"baseName":{"id":7558,"name":"UUPSUpgradeable","nameLocations":["1133:15:50"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"1133:15:50"},"id":7559,"nodeType":"InheritanceSpecifier","src":"1133:15:50"}],"canonicalName":"BaluniV1PoolZap","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8162,"linearizedBaseContracts":[8162,630,1608,1598,194,1293,448],"name":"BaluniV1PoolZap","nameLocation":"1051:15:50","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"7b103999","id":7562,"mutability":"mutable","name":"registry","nameLocation":"1181:8:50","nodeType":"VariableDeclaration","scope":8162,"src":"1156:33:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":7561,"nodeType":"UserDefinedTypeName","pathNode":{"id":7560,"name":"IBaluniV1Registry","nameLocations":["1156:17:50"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"1156:17:50"},"referencedDeclaration":4909,"src":"1156:17:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"constant":false,"functionSelector":"7dfb7ea1","id":7565,"mutability":"mutable","name":"baluniSwapper","nameLocation":"1220:13:50","nodeType":"VariableDeclaration","scope":8162,"src":"1196:37:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"},"typeName":{"id":7564,"nodeType":"UserDefinedTypeName","pathNode":{"id":7563,"name":"IBaluniV1Swapper","nameLocations":["1196:16:50"],"nodeType":"IdentifierPath","referencedDeclaration":5208,"src":"1196:16:50"},"referencedDeclaration":5208,"src":"1196:16:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"visibility":"public"},{"constant":false,"functionSelector":"4aa4a4fc","id":7567,"mutability":"mutable","name":"WETH9","nameLocation":"1255:5:50","nodeType":"VariableDeclaration","scope":8162,"src":"1240:20:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7566,"name":"address","nodeType":"ElementaryTypeName","src":"1240:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":7605,"nodeType":"Block","src":"1327:279:50","statements":[{"expression":{"arguments":[{"expression":{"id":7575,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1353:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1357:6:50","memberName":"sender","nodeType":"MemberAccess","src":"1353:10:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7574,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1338:14:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1338:26:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7578,"nodeType":"ExpressionStatement","src":"1338:26:50"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7579,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"1375:22:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:24:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7581,"nodeType":"ExpressionStatement","src":"1375:24:50"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7582,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"1410:22:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1410:24:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7584,"nodeType":"ExpressionStatement","src":"1410:24:50"},{"expression":{"id":7589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7585,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"1447:8:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7587,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7569,"src":"1476:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7586,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"1458:17:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":7588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1458:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"1447:39:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":7590,"nodeType":"ExpressionStatement","src":"1447:39:50"},{"expression":{"id":7597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7591,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"1497:13:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7593,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"1530:8:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":7594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1539:16:50","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":4803,"src":"1530:25:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1530:27:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7592,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"1513:16:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":7596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1513:45:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"src":"1497:61:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":7598,"nodeType":"ExpressionStatement","src":"1497:61:50"},{"expression":{"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7599,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"1569:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7600,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"1577:8:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":7601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1586:10:50","memberName":"getWNATIVE","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"1577:19:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1577:21:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1569:29:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7604,"nodeType":"ExpressionStatement","src":"1569:29:50"}]},"functionSelector":"c4d66de8","id":7606,"implemented":true,"kind":"function","modifiers":[{"id":7572,"kind":"modifierInvocation","modifierName":{"id":7571,"name":"initializer","nameLocations":["1315:11:50"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"1315:11:50"},"nodeType":"ModifierInvocation","src":"1315:11:50"}],"name":"initialize","nameLocation":"1278:10:50","nodeType":"FunctionDefinition","parameters":{"id":7570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7569,"mutability":"mutable","name":"_registry","nameLocation":"1297:9:50","nodeType":"VariableDeclaration","scope":7606,"src":"1289:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7568,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:19:50"},"returnParameters":{"id":7573,"nodeType":"ParameterList","parameters":[],"src":"1327:0:50"},"scope":8162,"src":"1269:337:50","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":7614,"nodeType":"Block","src":"1696:2:50","statements":[]},"id":7615,"implemented":true,"kind":"function","modifiers":[{"id":7612,"kind":"modifierInvocation","modifierName":{"id":7611,"name":"onlyOwner","nameLocations":["1686:9:50"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"1686:9:50"},"nodeType":"ModifierInvocation","src":"1686:9:50"}],"name":"_authorizeUpgrade","nameLocation":"1623:17:50","nodeType":"FunctionDefinition","overrides":{"id":7610,"nodeType":"OverrideSpecifier","overrides":[],"src":"1677:8:50"},"parameters":{"id":7609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7608,"mutability":"mutable","name":"newImplementation","nameLocation":"1649:17:50","nodeType":"VariableDeclaration","scope":7615,"src":"1641:25:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7607,"name":"address","nodeType":"ElementaryTypeName","src":"1641:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1640:27:50"},"returnParameters":{"id":7613,"nodeType":"ParameterList","parameters":[],"src":"1696:0:50"},"scope":8162,"src":"1614:84:50","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7618,"nodeType":"Block","src":"1733:2:50","statements":[]},"id":7619,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7616,"nodeType":"ParameterList","parameters":[],"src":"1713:2:50"},"returnParameters":{"id":7617,"nodeType":"ParameterList","parameters":[],"src":"1733:0:50"},"scope":8162,"src":"1706:29:50","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":7805,"nodeType":"Block","src":"1937:1176:50","statements":[{"assignments":[7635],"declarations":[{"constant":false,"id":7635,"mutability":"mutable","name":"deadline","nameLocation":"1956:8:50","nodeType":"VariableDeclaration","scope":7805,"src":"1948:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7634,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7640,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7636,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1967:5:50","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1973:9:50","memberName":"timestamp","nodeType":"MemberAccess","src":"1967:15:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"333030","id":7638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1985:3:50","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"src":"1967:21:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1948:40:50"},{"assignments":[7643],"declarations":[{"constant":false,"id":7643,"mutability":"mutable","name":"baluniPool","nameLocation":"2015:10:50","nodeType":"VariableDeclaration","scope":7805,"src":"2001:24:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"},"typeName":{"id":7642,"nodeType":"UserDefinedTypeName","pathNode":{"id":7641,"name":"IBaluniV1Pool","nameLocations":["2001:13:50"],"nodeType":"IdentifierPath","referencedDeclaration":7542,"src":"2001:13:50"},"referencedDeclaration":7542,"src":"2001:13:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}},"visibility":"internal"}],"id":7647,"initialValue":{"arguments":[{"id":7645,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7621,"src":"2042:11:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7644,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"2028:13:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$7542_$","typeString":"type(contract IBaluniV1Pool)"}},"id":7646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2028:26:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}},"nodeType":"VariableDeclarationStatement","src":"2001:53:50"},{"assignments":[7652],"declarations":[{"constant":false,"id":7652,"mutability":"mutable","name":"poolAssets","nameLocation":"2084:10:50","nodeType":"VariableDeclaration","scope":7805,"src":"2067:27:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7650,"name":"address","nodeType":"ElementaryTypeName","src":"2067:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7651,"nodeType":"ArrayTypeName","src":"2067:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":7656,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7653,"name":"baluniPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7643,"src":"2097:10:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}},"id":7654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2108:9:50","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":7535,"src":"2097:20:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":7655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2097:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2067:52:50"},{"assignments":[7661],"declarations":[{"constant":false,"id":7661,"mutability":"mutable","name":"amounts","nameLocation":"2147:7:50","nodeType":"VariableDeclaration","scope":7805,"src":"2130:24:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7659,"name":"uint256","nodeType":"ElementaryTypeName","src":"2130:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7660,"nodeType":"ArrayTypeName","src":"2130:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":7668,"initialValue":{"arguments":[{"expression":{"id":7665,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2171:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2182:6:50","memberName":"length","nodeType":"MemberAccess","src":"2171:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2157:13:50","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":7662,"name":"uint256","nodeType":"ElementaryTypeName","src":"2161:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7663,"nodeType":"ArrayTypeName","src":"2161:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":7667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2157:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2130:59:50"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7669,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"2206:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2225:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2217:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7670,"name":"address","nodeType":"ElementaryTypeName","src":"2217:7:50","typeDescriptions":{}}},"id":7673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2206:21:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7709,"nodeType":"Block","src":"2400:92:50","statements":[{"expression":{"arguments":[{"expression":{"id":7700,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2444:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2448:6:50","memberName":"sender","nodeType":"MemberAccess","src":"2444:10:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7704,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2464:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":7703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2456:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7702,"name":"address","nodeType":"ElementaryTypeName","src":"2456:7:50","typeDescriptions":{}}},"id":7705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2456:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7706,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"2471:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7697,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"2422:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7696,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"2415:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2415:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2431:12:50","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"2415:28:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":7707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2415:65:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7708,"nodeType":"ExpressionStatement","src":"2415:65:50"}]},"id":7710,"nodeType":"IfStatement","src":"2202:290:50","trueBody":{"id":7695,"nodeType":"Block","src":"2229:165:50","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7676,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2252:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2256:5:50","memberName":"value","nodeType":"MemberAccess","src":"2252:9:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7678,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"2265:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2252:21:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742045544820616d6f756e74","id":7680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2275:22:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_785c530545bab4fcd14661de8c26a5985c6bacacb07565e8ecfc83e0a995b60b","typeString":"literal_string \"Incorrect ETH amount\""},"value":"Incorrect ETH amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_785c530545bab4fcd14661de8c26a5985c6bacacb07565e8ecfc83e0a995b60b","typeString":"literal_string \"Incorrect ETH amount\""}],"id":7675,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2244:7:50","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2244:54:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7682,"nodeType":"ExpressionStatement","src":"2244:54:50"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7684,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2319:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7683,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7551,"src":"2313:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH_$7551_$","typeString":"type(contract IWETH)"}},"id":7685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2313:12:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$7551","typeString":"contract IWETH"}},"id":7686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2326:7:50","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":7545,"src":"2313:20:50","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":7688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":7687,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"2341:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2313:37:50","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":7689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2313:39:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7690,"nodeType":"ExpressionStatement","src":"2313:39:50"},{"expression":{"id":7693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7691,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"2367:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7692,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"2377:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2367:15:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7694,"nodeType":"ExpressionStatement","src":"2367:15:50"}]}},{"body":{"id":7767,"nodeType":"Block","src":"2552:345:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7722,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"2571:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":7723,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2582:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7725,"indexExpression":{"id":7724,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2593:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2582:13:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2571:24:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7765,"nodeType":"Block","src":"2679:207:50","statements":[{"expression":{"id":7754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7737,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7661,"src":"2698:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7739,"indexExpression":{"id":7738,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2706:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2698:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7741,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"2717:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":7742,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2726:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7744,"indexExpression":{"id":7743,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2737:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2726:13:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7745,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"2741:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":7746,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2752:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2763:6:50","memberName":"length","nodeType":"MemberAccess","src":"2752:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2741:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7751,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2779:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":7750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2771:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7749,"name":"address","nodeType":"ElementaryTypeName","src":"2771:7:50","typeDescriptions":{}}},"id":7752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2771:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7740,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8161,"src":"2711:5:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) returns (uint256)"}},"id":7753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2711:74:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2698:87:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7755,"nodeType":"ExpressionStatement","src":"2698:87:50"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7757,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7661,"src":"2812:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7759,"indexExpression":{"id":7758,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2820:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2812:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7760,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7627,"src":"2826:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2812:27:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e74206f757470757420616d6f756e74","id":7762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2841:28:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90","typeString":"literal_string \"Insufficient output amount\""},"value":"Insufficient output amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90","typeString":"literal_string \"Insufficient output amount\""}],"id":7756,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2804:7:50","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2804:66:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7764,"nodeType":"ExpressionStatement","src":"2804:66:50"}]},"id":7766,"nodeType":"IfStatement","src":"2567:319:50","trueBody":{"id":7736,"nodeType":"Block","src":"2597:76:50","statements":[{"expression":{"id":7734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7727,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7661,"src":"2616:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7729,"indexExpression":{"id":7728,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2624:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2616:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7730,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"2629:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":7731,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2640:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2651:6:50","memberName":"length","nodeType":"MemberAccess","src":"2640:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2629:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2616:41:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7735,"nodeType":"ExpressionStatement","src":"2616:41:50"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7715,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2524:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7716,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2528:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2539:6:50","memberName":"length","nodeType":"MemberAccess","src":"2528:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2524:21:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7768,"initializationExpression":{"assignments":[7712],"declarations":[{"constant":false,"id":7712,"mutability":"mutable","name":"i","nameLocation":"2517:1:50","nodeType":"VariableDeclaration","scope":7768,"src":"2509:9:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7711,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7714,"initialValue":{"hexValue":"30","id":7713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2521:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2509:13:50"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2547:3:50","subExpression":{"id":7719,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2547:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7721,"nodeType":"ExpressionStatement","src":"2547:3:50"},"nodeType":"ForStatement","src":"2504:393:50"},{"body":{"id":7795,"nodeType":"Block","src":"2957:89:50","statements":[{"expression":{"arguments":[{"arguments":[{"id":7788,"name":"baluniPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7643,"src":"3010:10:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}],"id":7787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3002:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7786,"name":"address","nodeType":"ElementaryTypeName","src":"3002:7:50","typeDescriptions":{}}},"id":7789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3002:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":7790,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7661,"src":"3023:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7792,"indexExpression":{"id":7791,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7770,"src":"3031:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3023:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":7781,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2979:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7783,"indexExpression":{"id":7782,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7770,"src":"2990:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2979:13:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7780,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"2972:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2972:21:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2994:7:50","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"2972:29:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2972:62:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7794,"nodeType":"ExpressionStatement","src":"2972:62:50"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7773,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7770,"src":"2929:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7774,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"2933:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2944:6:50","memberName":"length","nodeType":"MemberAccess","src":"2933:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2929:21:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7796,"initializationExpression":{"assignments":[7770],"declarations":[{"constant":false,"id":7770,"mutability":"mutable","name":"i","nameLocation":"2922:1:50","nodeType":"VariableDeclaration","scope":7796,"src":"2914:9:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7769,"name":"uint256","nodeType":"ElementaryTypeName","src":"2914:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7772,"initialValue":{"hexValue":"30","id":7771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2926:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2914:13:50"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2952:3:50","subExpression":{"id":7777,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7770,"src":"2952:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7779,"nodeType":"ExpressionStatement","src":"2952:3:50"},"nodeType":"ForStatement","src":"2909:137:50"},{"expression":{"arguments":[{"id":7800,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7629,"src":"3077:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7801,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7661,"src":"3087:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":7802,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"3096:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7797,"name":"baluniPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7643,"src":"3058:10:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}},"id":7799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3069:7:50","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":7518,"src":"3058:18:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256[] memory,uint256) external returns (uint256)"}},"id":7803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:47:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7804,"nodeType":"ExpressionStatement","src":"3058:47:50"}]},"functionSelector":"b487c54a","id":7806,"implemented":true,"kind":"function","modifiers":[{"id":7632,"kind":"modifierInvocation","modifierName":{"id":7631,"name":"nonReentrant","nameLocations":["1924:12:50"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"1924:12:50"},"nodeType":"ModifierInvocation","src":"1924:12:50"}],"name":"zapIn","nameLocation":"1752:5:50","nodeType":"FunctionDefinition","parameters":{"id":7630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7621,"mutability":"mutable","name":"poolAddress","nameLocation":"1776:11:50","nodeType":"VariableDeclaration","scope":7806,"src":"1768:19:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7620,"name":"address","nodeType":"ElementaryTypeName","src":"1768:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7623,"mutability":"mutable","name":"tokenIn","nameLocation":"1806:7:50","nodeType":"VariableDeclaration","scope":7806,"src":"1798:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7622,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7625,"mutability":"mutable","name":"amountIn","nameLocation":"1832:8:50","nodeType":"VariableDeclaration","scope":7806,"src":"1824:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7624,"name":"uint256","nodeType":"ElementaryTypeName","src":"1824:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7627,"mutability":"mutable","name":"minAmountsOut","nameLocation":"1859:13:50","nodeType":"VariableDeclaration","scope":7806,"src":"1851:21:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7626,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7629,"mutability":"mutable","name":"receiver","nameLocation":"1891:8:50","nodeType":"VariableDeclaration","scope":7806,"src":"1883:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7628,"name":"address","nodeType":"ElementaryTypeName","src":"1883:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1757:149:50"},"returnParameters":{"id":7633,"nodeType":"ParameterList","parameters":[],"src":"1937:0:50"},"scope":8162,"src":"1743:1370:50","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":8083,"nodeType":"Block","src":"3305:1819:50","statements":[{"assignments":[7822],"declarations":[{"constant":false,"id":7822,"mutability":"mutable","name":"deadline","nameLocation":"3324:8:50","nodeType":"VariableDeclaration","scope":8083,"src":"3316:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7821,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7827,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7823,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3335:5:50","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3341:9:50","memberName":"timestamp","nodeType":"MemberAccess","src":"3335:15:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"333030","id":7825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3353:3:50","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"src":"3335:21:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3316:40:50"},{"assignments":[7830],"declarations":[{"constant":false,"id":7830,"mutability":"mutable","name":"baluniPool","nameLocation":"3383:10:50","nodeType":"VariableDeclaration","scope":8083,"src":"3369:24:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"},"typeName":{"id":7829,"nodeType":"UserDefinedTypeName","pathNode":{"id":7828,"name":"IBaluniV1Pool","nameLocations":["3369:13:50"],"nodeType":"IdentifierPath","referencedDeclaration":7542,"src":"3369:13:50"},"referencedDeclaration":7542,"src":"3369:13:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}},"visibility":"internal"}],"id":7834,"initialValue":{"arguments":[{"id":7832,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7808,"src":"3410:11:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7831,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"3396:13:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$7542_$","typeString":"type(contract IBaluniV1Pool)"}},"id":7833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3396:26:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}},"nodeType":"VariableDeclarationStatement","src":"3369:53:50"},{"assignments":[7839],"declarations":[{"constant":false,"id":7839,"mutability":"mutable","name":"poolAssets","nameLocation":"3452:10:50","nodeType":"VariableDeclaration","scope":8083,"src":"3435:27:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7837,"name":"address","nodeType":"ElementaryTypeName","src":"3435:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7838,"nodeType":"ArrayTypeName","src":"3435:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":7843,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7840,"name":"baluniPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7830,"src":"3465:10:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}},"id":7841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3476:9:50","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":7535,"src":"3465:20:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":7842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3465:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3435:52:50"},{"assignments":[7848],"declarations":[{"constant":false,"id":7848,"mutability":"mutable","name":"amounts","nameLocation":"3515:7:50","nodeType":"VariableDeclaration","scope":8083,"src":"3498:24:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7846,"name":"uint256","nodeType":"ElementaryTypeName","src":"3498:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7847,"nodeType":"ArrayTypeName","src":"3498:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":7855,"initialValue":{"arguments":[{"expression":{"id":7852,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"3539:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3550:6:50","memberName":"length","nodeType":"MemberAccess","src":"3539:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3525:13:50","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":7849,"name":"uint256","nodeType":"ElementaryTypeName","src":"3529:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7850,"nodeType":"ArrayTypeName","src":"3529:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":7854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3525:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3498:59:50"},{"assignments":[7860],"declarations":[{"constant":false,"id":7860,"mutability":"mutable","name":"balances","nameLocation":"3587:8:50","nodeType":"VariableDeclaration","scope":8083,"src":"3570:25:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7858,"name":"uint256","nodeType":"ElementaryTypeName","src":"3570:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7859,"nodeType":"ArrayTypeName","src":"3570:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":7867,"initialValue":{"arguments":[{"expression":{"id":7864,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"3612:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3623:6:50","memberName":"length","nodeType":"MemberAccess","src":"3612:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3598:13:50","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":7861,"name":"uint256","nodeType":"ElementaryTypeName","src":"3602:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7862,"nodeType":"ArrayTypeName","src":"3602:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":7866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3598:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3570:60:50"},{"body":{"id":7895,"nodeType":"Block","src":"3689:87:50","statements":[{"expression":{"id":7893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7879,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7860,"src":"3704:8:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7881,"indexExpression":{"id":7880,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7869,"src":"3713:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3704:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7890,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3758:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":7889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3750:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7888,"name":"address","nodeType":"ElementaryTypeName","src":"3750:7:50","typeDescriptions":{}}},"id":7891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3750:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":7883,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"3725:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7885,"indexExpression":{"id":7884,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7869,"src":"3736:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3725:13:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7882,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"3718:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3718:21:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3740:9:50","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"3718:31:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3718:46:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3704:60:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7894,"nodeType":"ExpressionStatement","src":"3704:60:50"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7872,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7869,"src":"3661:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7873,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"3665:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3676:6:50","memberName":"length","nodeType":"MemberAccess","src":"3665:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3661:21:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7896,"initializationExpression":{"assignments":[7869],"declarations":[{"constant":false,"id":7869,"mutability":"mutable","name":"i","nameLocation":"3654:1:50","nodeType":"VariableDeclaration","scope":7896,"src":"3646:9:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7868,"name":"uint256","nodeType":"ElementaryTypeName","src":"3646:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7871,"initialValue":{"hexValue":"30","id":7870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3658:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3646:13:50"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3684:3:50","subExpression":{"id":7876,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7869,"src":"3684:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7878,"nodeType":"ExpressionStatement","src":"3684:3:50"},"nodeType":"ForStatement","src":"3641:135:50"},{"assignments":[7898],"declarations":[{"constant":false,"id":7898,"mutability":"mutable","name":"balanceBefore","nameLocation":"3844:13:50","nodeType":"VariableDeclaration","scope":8083,"src":"3836:21:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7897,"name":"uint256","nodeType":"ElementaryTypeName","src":"3836:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7908,"initialValue":{"arguments":[{"arguments":[{"id":7905,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3895:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":7904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3887:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7903,"name":"address","nodeType":"ElementaryTypeName","src":"3887:7:50","typeDescriptions":{}}},"id":7906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3887:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":7900,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"3867:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7899,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"3860:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3860:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3877:9:50","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"3860:26:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3860:41:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3836:65:50"},{"expression":{"arguments":[{"expression":{"id":7913,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3947:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3951:6:50","memberName":"sender","nodeType":"MemberAccess","src":"3947:10:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7917,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3967:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":7916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3959:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7915,"name":"address","nodeType":"ElementaryTypeName","src":"3959:7:50","typeDescriptions":{}}},"id":7918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3959:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7919,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"3974:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7910,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7808,"src":"3921:11:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7909,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"3914:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3914:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3934:12:50","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"3914:32:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":7920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3914:66:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7921,"nodeType":"ExpressionStatement","src":"3914:66:50"},{"expression":{"arguments":[{"arguments":[{"id":7928,"name":"baluniPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7830,"src":"4027:10:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}],"id":7927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4019:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7926,"name":"address","nodeType":"ElementaryTypeName","src":"4019:7:50","typeDescriptions":{}}},"id":7929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4019:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7930,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"4040:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7923,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7808,"src":"3998:11:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7922,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"3991:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3991:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4011:7:50","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"3991:27:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3991:55:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7932,"nodeType":"ExpressionStatement","src":"3991:55:50"},{"expression":{"arguments":[{"id":7936,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"4114:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7939,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4129:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":7938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4121:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7937,"name":"address","nodeType":"ElementaryTypeName","src":"4121:7:50","typeDescriptions":{}}},"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4121:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7941,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7822,"src":"4136:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7933,"name":"baluniPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7830,"src":"4094:10:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$7542","typeString":"contract IBaluniV1Pool"}},"id":7935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4105:8:50","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":7529,"src":"4094:19:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,address,uint256) external returns (uint256)"}},"id":7942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4094:51:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7943,"nodeType":"ExpressionStatement","src":"4094:51:50"},{"assignments":[7945],"declarations":[{"constant":false,"id":7945,"mutability":"mutable","name":"totalAmountOut","nameLocation":"4166:14:50","nodeType":"VariableDeclaration","scope":8083,"src":"4158:22:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7944,"name":"uint256","nodeType":"ElementaryTypeName","src":"4158:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7947,"initialValue":{"hexValue":"30","id":7946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4183:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4158:26:50"},{"body":{"id":8027,"nodeType":"Block","src":"4245:417:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7959,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"4264:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7961,"indexExpression":{"id":7960,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4275:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4264:13:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7962,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"4281:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4264:25:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8025,"nodeType":"Block","src":"4452:199:50","statements":[{"expression":{"id":8009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7991,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"4471:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7993,"indexExpression":{"id":7992,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4479:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4471:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":8002,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4524:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":8001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4516:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8000,"name":"address","nodeType":"ElementaryTypeName","src":"4516:7:50","typeDescriptions":{}}},"id":8003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4516:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":7995,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"4491:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7997,"indexExpression":{"id":7996,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4502:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4491:13:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7994,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4484:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4484:21:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4506:9:50","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"4484:31:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4484:46:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":8005,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7860,"src":"4533:8:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8007,"indexExpression":{"id":8006,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4542:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4533:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4484:60:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4471:73:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8010,"nodeType":"ExpressionStatement","src":"4471:73:50"},{"expression":{"id":8023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8011,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"4563:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"baseExpression":{"id":8013,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"4587:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8015,"indexExpression":{"id":8014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4598:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4587:13:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8016,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"4602:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8017,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"4612:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8019,"indexExpression":{"id":8018,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4620:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4612:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8020,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4624:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4628:6:50","memberName":"sender","nodeType":"MemberAccess","src":"4624:10:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8012,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8161,"src":"4581:5:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) returns (uint256)"}},"id":8022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:54:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4563:72:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8024,"nodeType":"ExpressionStatement","src":"4563:72:50"}]},"id":8026,"nodeType":"IfStatement","src":"4260:391:50","trueBody":{"id":7990,"nodeType":"Block","src":"4291:155:50","statements":[{"expression":{"id":7982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7964,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"4310:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7966,"indexExpression":{"id":7965,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4318:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4310:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7975,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4363:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":7974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4355:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7973,"name":"address","nodeType":"ElementaryTypeName","src":"4355:7:50","typeDescriptions":{}}},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4355:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":7968,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"4330:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7970,"indexExpression":{"id":7969,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4341:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4330:13:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7967,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4323:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":7971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4323:21:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":7972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4345:9:50","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"4323:31:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4323:46:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":7978,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7860,"src":"4372:8:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7980,"indexExpression":{"id":7979,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4381:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4372:11:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4323:60:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4310:73:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7983,"nodeType":"ExpressionStatement","src":"4310:73:50"},{"expression":{"id":7988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7984,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"4402:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":7985,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"4420:7:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":7987,"indexExpression":{"id":7986,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4428:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4420:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4402:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7989,"nodeType":"ExpressionStatement","src":"4402:28:50"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7952,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4217:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7953,"name":"poolAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"4221:10:50","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4232:6:50","memberName":"length","nodeType":"MemberAccess","src":"4221:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4217:21:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8028,"initializationExpression":{"assignments":[7949],"declarations":[{"constant":false,"id":7949,"mutability":"mutable","name":"i","nameLocation":"4210:1:50","nodeType":"VariableDeclaration","scope":8028,"src":"4202:9:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7948,"name":"uint256","nodeType":"ElementaryTypeName","src":"4202:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7951,"initialValue":{"hexValue":"30","id":7950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4214:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4202:13:50"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4240:3:50","subExpression":{"id":7956,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4240:1:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7958,"nodeType":"ExpressionStatement","src":"4240:3:50"},"nodeType":"ForStatement","src":"4197:465:50"},{"assignments":[8030],"declarations":[{"constant":false,"id":8030,"mutability":"mutable","name":"balanceAfter","nameLocation":"4682:12:50","nodeType":"VariableDeclaration","scope":8083,"src":"4674:20:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8029,"name":"uint256","nodeType":"ElementaryTypeName","src":"4674:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8040,"initialValue":{"arguments":[{"arguments":[{"id":8037,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4732:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolZap_$8162","typeString":"contract BaluniV1PoolZap"}],"id":8036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4724:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8035,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:50","typeDescriptions":{}}},"id":8038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4724:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8032,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"4704:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8031,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4697:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4697:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4714:9:50","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"4697:26:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4697:41:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4674:64:50"},{"expression":{"id":8045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8041,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"4749:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8042,"name":"balanceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"4766:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8043,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7898,"src":"4781:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4766:28:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4749:45:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8046,"nodeType":"ExpressionStatement","src":"4749:45:50"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8048,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"4815:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8049,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7814,"src":"4833:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4815:30:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e74206f757470757420616d6f756e74","id":8051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4847:28:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90","typeString":"literal_string \"Insufficient output amount\""},"value":"Insufficient output amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90","typeString":"literal_string \"Insufficient output amount\""}],"id":8047,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4807:7:50","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4807:69:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8053,"nodeType":"ExpressionStatement","src":"4807:69:50"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8054,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"4893:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8055,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"4905:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4893:17:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8081,"nodeType":"Block","src":"5039:78:50","statements":[{"expression":{"arguments":[{"id":8077,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7816,"src":"5080:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8078,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"5090:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8074,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"5061:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8073,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5054:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5054:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5071:8:50","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"5054:25:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5054:51:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8080,"nodeType":"ExpressionStatement","src":"5054:51:50"}]},"id":8082,"nodeType":"IfStatement","src":"4889:228:50","trueBody":{"id":8072,"nodeType":"Block","src":"4912:121:50","statements":[{"expression":{"arguments":[{"id":8061,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"4949:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8058,"name":"WETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"4933:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8057,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7551,"src":"4927:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH_$7551_$","typeString":"type(contract IWETH)"}},"id":8059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4927:12:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$7551","typeString":"contract IWETH"}},"id":8060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4940:8:50","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":7550,"src":"4927:21:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":8062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4927:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8063,"nodeType":"ExpressionStatement","src":"4927:37:50"},{"expression":{"arguments":[{"id":8069,"name":"totalAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"5006:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8066,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7816,"src":"4987:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4979:8:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":8064,"name":"address","nodeType":"ElementaryTypeName","src":"4979:8:50","stateMutability":"payable","typeDescriptions":{}}},"id":8067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4979:17:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":8068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4997:8:50","memberName":"transfer","nodeType":"MemberAccess","src":"4979:26:50","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":8070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4979:42:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8071,"nodeType":"ExpressionStatement","src":"4979:42:50"}]}}]},"functionSelector":"b1aa8cd1","id":8084,"implemented":true,"kind":"function","modifiers":[{"id":7819,"kind":"modifierInvocation","modifierName":{"id":7818,"name":"nonReentrant","nameLocations":["3292:12:50"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"3292:12:50"},"nodeType":"ModifierInvocation","src":"3292:12:50"}],"name":"zapOut","nameLocation":"3130:6:50","nodeType":"FunctionDefinition","parameters":{"id":7817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7808,"mutability":"mutable","name":"poolAddress","nameLocation":"3155:11:50","nodeType":"VariableDeclaration","scope":8084,"src":"3147:19:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7807,"name":"address","nodeType":"ElementaryTypeName","src":"3147:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7810,"mutability":"mutable","name":"share","nameLocation":"3185:5:50","nodeType":"VariableDeclaration","scope":8084,"src":"3177:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7809,"name":"uint256","nodeType":"ElementaryTypeName","src":"3177:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7812,"mutability":"mutable","name":"tokenOut","nameLocation":"3209:8:50","nodeType":"VariableDeclaration","scope":8084,"src":"3201:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7811,"name":"address","nodeType":"ElementaryTypeName","src":"3201:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7814,"mutability":"mutable","name":"minAmountOut","nameLocation":"3236:12:50","nodeType":"VariableDeclaration","scope":8084,"src":"3228:20:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7813,"name":"uint256","nodeType":"ElementaryTypeName","src":"3228:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7816,"mutability":"mutable","name":"receiver","nameLocation":"3267:8:50","nodeType":"VariableDeclaration","scope":8084,"src":"3259:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7815,"name":"address","nodeType":"ElementaryTypeName","src":"3259:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3136:146:50"},"returnParameters":{"id":7820,"nodeType":"ParameterList","parameters":[],"src":"3305:0:50"},"scope":8162,"src":"3121:2003:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8160,"nodeType":"Block","src":"5298:556:50","statements":[{"assignments":[8098],"declarations":[{"constant":false,"id":8098,"mutability":"mutable","name":"WMATIC","nameLocation":"5317:6:50","nodeType":"VariableDeclaration","scope":8160,"src":"5309:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8097,"name":"address","nodeType":"ElementaryTypeName","src":"5309:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8102,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8099,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7562,"src":"5326:8:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5335:10:50","memberName":"getWNATIVE","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"5326:19:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":8101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5326:21:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5309:38:50"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8103,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"5362:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8104,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8088,"src":"5373:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5362:19:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8109,"nodeType":"IfStatement","src":"5358:67:50","trueBody":{"id":8108,"nodeType":"Block","src":"5383:42:50","statements":[{"expression":{"id":8106,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8090,"src":"5405:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8096,"id":8107,"nodeType":"Return","src":"5398:15:50"}]}},{"expression":{"arguments":[{"arguments":[{"id":8116,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"5469:13:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}],"id":8115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5461:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8114,"name":"address","nodeType":"ElementaryTypeName","src":"5461:7:50","typeDescriptions":{}}},"id":8117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5461:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8118,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8090,"src":"5485:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8111,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"5444:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8110,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5437:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5437:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5453:7:50","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"5437:23:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5437:57:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8120,"nodeType":"ExpressionStatement","src":"5437:57:50"},{"clauses":[{"block":{"id":8135,"nodeType":"Block","src":"5604:49:50","statements":[{"expression":{"id":8133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8131,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"5619:9:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8132,"name":"_amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8129,"src":"5631:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5619:22:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8134,"nodeType":"ExpressionStatement","src":"5619:22:50"}]},"errorName":"","id":8136,"nodeType":"TryCatchClause","parameters":{"id":8130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8129,"mutability":"mutable","name":"_amountOut","nameLocation":"5592:10:50","nodeType":"VariableDeclaration","scope":8136,"src":"5584:18:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8128,"name":"uint256","nodeType":"ElementaryTypeName","src":"5584:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5583:20:50"},"src":"5575:78:50"},{"block":{"id":8148,"nodeType":"Block","src":"5660:112:50","statements":[{"expression":{"id":8146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8137,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"5675:9:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8140,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"5714:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8141,"name":"WMATIC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8098,"src":"5723:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8142,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8088,"src":"5731:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8143,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8090,"src":"5741:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8144,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"5751:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8138,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"5687:13:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":8139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5701:12:50","memberName":"multiHopSwap","nodeType":"MemberAccess","referencedDeclaration":5207,"src":"5687:26:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,address) external returns (uint256)"}},"id":8145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5687:73:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5675:85:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8147,"nodeType":"ExpressionStatement","src":"5675:85:50"}]},"errorName":"","id":8149,"nodeType":"TryCatchClause","src":"5654:118:50"}],"externalCall":{"arguments":[{"id":8123,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"5536:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8124,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8088,"src":"5545:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8125,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8090,"src":"5555:8:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8126,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"5565:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8121,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"5511:13:50","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":8122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5525:10:50","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":5192,"src":"5511:24:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":8127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5511:63:50","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8150,"nodeType":"TryStatement","src":"5507:265:50"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8152,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"5790:9:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5802:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5790:13:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53776170206661696c6564","id":8155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5805:13:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69","typeString":"literal_string \"Swap failed\""},"value":"Swap failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69","typeString":"literal_string \"Swap failed\""}],"id":8151,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5782:7:50","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5782:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8157,"nodeType":"ExpressionStatement","src":"5782:37:50"},{"expression":{"id":8158,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"5837:9:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8096,"id":8159,"nodeType":"Return","src":"5830:16:50"}]},"id":8161,"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nameLocation":"5141:5:50","nodeType":"FunctionDefinition","parameters":{"id":8093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8086,"mutability":"mutable","name":"tokenIn","nameLocation":"5165:7:50","nodeType":"VariableDeclaration","scope":8161,"src":"5157:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8085,"name":"address","nodeType":"ElementaryTypeName","src":"5157:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8088,"mutability":"mutable","name":"tokenOut","nameLocation":"5191:8:50","nodeType":"VariableDeclaration","scope":8161,"src":"5183:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8087,"name":"address","nodeType":"ElementaryTypeName","src":"5183:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8090,"mutability":"mutable","name":"amountIn","nameLocation":"5218:8:50","nodeType":"VariableDeclaration","scope":8161,"src":"5210:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8089,"name":"uint256","nodeType":"ElementaryTypeName","src":"5210:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8092,"mutability":"mutable","name":"receiver","nameLocation":"5245:8:50","nodeType":"VariableDeclaration","scope":8161,"src":"5237:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8091,"name":"address","nodeType":"ElementaryTypeName","src":"5237:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5146:114:50"},"returnParameters":{"id":8096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8095,"mutability":"mutable","name":"amountOut","nameLocation":"5287:9:50","nodeType":"VariableDeclaration","scope":8161,"src":"5279:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8094,"name":"uint256","nodeType":"ElementaryTypeName","src":"5279:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5278:19:50"},"scope":8162,"src":"5132:722:50","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":8163,"src":"1042:4815:50","usedErrors":[30,35,211,214,475,480,1500,1780,1793,2690,2693],"usedEvents":[41,219,1759]}],"src":"40:5819:50"},"id":50},"contracts/managers/BaluniV1Rebalancer.sol":{"ast":{"absolutePath":"contracts/managers/BaluniV1Rebalancer.sol","exportedSymbols":{"BaluniV1Rebalancer":[9470],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"I1inchSpotAgg":[3793],"IBaluniV1Agent":[3813],"IBaluniV1Oracle":[4240],"IBaluniV1Registry":[4909],"IBaluniV1Router":[5177],"IBaluniV1Swapper":[5208],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Metadata":[2677],"ISwapRouter":[3766],"IUniswapV3Factory":[3153],"IUniswapV3SwapCallback":[3189],"Initializable":[448],"OwnableUpgradeable":[194],"UUPSUpgradeable":[630]},"id":9471,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":8164,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:51"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":8165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":449,"src":"1466:75:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":8166,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":631,"src":"1543:77:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":8167,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":3767,"src":"1622:68:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","file":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","id":8168,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":3154,"src":"1692:69:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":8169,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":195,"src":"1763:75:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Router.sol","file":"../interfaces/IBaluniV1Router.sol","id":8170,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":5178,"src":"1840:43:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","file":"../interfaces/IBaluniV1Swapper.sol","id":8171,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":5209,"src":"1885:44:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":8172,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":4910,"src":"1931:45:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","file":"../interfaces/IBaluniV1Oracle.sol","id":8173,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9471,"sourceUnit":4241,"src":"1978:43:51","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8174,"name":"Initializable","nameLocations":["2056:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"2056:13:51"},"id":8175,"nodeType":"InheritanceSpecifier","src":"2056:13:51"},{"baseName":{"id":8176,"name":"OwnableUpgradeable","nameLocations":["2071:18:51"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"2071:18:51"},"id":8177,"nodeType":"InheritanceSpecifier","src":"2071:18:51"},{"baseName":{"id":8178,"name":"UUPSUpgradeable","nameLocations":["2091:15:51"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"2091:15:51"},"id":8179,"nodeType":"InheritanceSpecifier","src":"2091:15:51"}],"canonicalName":"BaluniV1Rebalancer","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9470,"linearizedBaseContracts":[9470,630,1608,194,1293,448],"name":"BaluniV1Rebalancer","nameLocation":"2034:18:51","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"7b103999","id":8182,"mutability":"mutable","name":"registry","nameLocation":"2139:8:51","nodeType":"VariableDeclaration","scope":9470,"src":"2114:33:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":8181,"nodeType":"UserDefinedTypeName","pathNode":{"id":8180,"name":"IBaluniV1Registry","nameLocations":["2114:17:51"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"2114:17:51"},"referencedDeclaration":4909,"src":"2114:17:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"canonicalName":"BaluniV1Rebalancer.RebalanceVars","id":8215,"members":[{"constant":false,"id":8184,"mutability":"mutable","name":"length","nameLocation":"2196:6:51","nodeType":"VariableDeclaration","scope":8215,"src":"2188:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8183,"name":"uint256","nodeType":"ElementaryTypeName","src":"2188:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8186,"mutability":"mutable","name":"totalValue","nameLocation":"2221:10:51","nodeType":"VariableDeclaration","scope":8215,"src":"2213:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8185,"name":"uint256","nodeType":"ElementaryTypeName","src":"2213:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8189,"mutability":"mutable","name":"valuations","nameLocation":"2252:10:51","nodeType":"VariableDeclaration","scope":8215,"src":"2242:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8187,"name":"uint256","nodeType":"ElementaryTypeName","src":"2242:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8188,"nodeType":"ArrayTypeName","src":"2242:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8191,"mutability":"mutable","name":"finalUsdBalance","nameLocation":"2281:15:51","nodeType":"VariableDeclaration","scope":8215,"src":"2273:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8190,"name":"uint256","nodeType":"ElementaryTypeName","src":"2273:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8193,"mutability":"mutable","name":"overweightVaultsLength","nameLocation":"2315:22:51","nodeType":"VariableDeclaration","scope":8215,"src":"2307:30:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8192,"name":"uint256","nodeType":"ElementaryTypeName","src":"2307:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8195,"mutability":"mutable","name":"underweightVaultsLength","nameLocation":"2356:23:51","nodeType":"VariableDeclaration","scope":8215,"src":"2348:31:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8194,"name":"uint256","nodeType":"ElementaryTypeName","src":"2348:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8197,"mutability":"mutable","name":"totalActiveWeight","nameLocation":"2398:17:51","nodeType":"VariableDeclaration","scope":8215,"src":"2390:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8196,"name":"uint256","nodeType":"ElementaryTypeName","src":"2390:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8199,"mutability":"mutable","name":"amountOut","nameLocation":"2434:9:51","nodeType":"VariableDeclaration","scope":8215,"src":"2426:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8198,"name":"uint256","nodeType":"ElementaryTypeName","src":"2426:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8202,"mutability":"mutable","name":"overweightVaults","nameLocation":"2464:16:51","nodeType":"VariableDeclaration","scope":8215,"src":"2454:26:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8200,"name":"uint256","nodeType":"ElementaryTypeName","src":"2454:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8201,"nodeType":"ArrayTypeName","src":"2454:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8205,"mutability":"mutable","name":"overweightAmounts","nameLocation":"2501:17:51","nodeType":"VariableDeclaration","scope":8215,"src":"2491:27:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8203,"name":"uint256","nodeType":"ElementaryTypeName","src":"2491:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8204,"nodeType":"ArrayTypeName","src":"2491:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8208,"mutability":"mutable","name":"underweightVaults","nameLocation":"2539:17:51","nodeType":"VariableDeclaration","scope":8215,"src":"2529:27:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8206,"name":"uint256","nodeType":"ElementaryTypeName","src":"2529:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8207,"nodeType":"ArrayTypeName","src":"2529:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8211,"mutability":"mutable","name":"underweightAmounts","nameLocation":"2577:18:51","nodeType":"VariableDeclaration","scope":8215,"src":"2567:28:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8209,"name":"uint256","nodeType":"ElementaryTypeName","src":"2567:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8210,"nodeType":"ArrayTypeName","src":"2567:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8214,"mutability":"mutable","name":"balances","nameLocation":"2616:8:51","nodeType":"VariableDeclaration","scope":8215,"src":"2606:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8212,"name":"uint256","nodeType":"ElementaryTypeName","src":"2606:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8213,"nodeType":"ArrayTypeName","src":"2606:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"RebalanceVars","nameLocation":"2163:13:51","nodeType":"StructDefinition","scope":9470,"src":"2156:476:51","visibility":"public"},{"body":{"id":8236,"nodeType":"Block","src":"2698:130:51","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8222,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2709:22:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2709:24:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8224,"nodeType":"ExpressionStatement","src":"2709:24:51"},{"expression":{"arguments":[{"expression":{"id":8226,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2759:3:51","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2763:6:51","memberName":"sender","nodeType":"MemberAccess","src":"2759:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8225,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2744:14:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2744:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8229,"nodeType":"ExpressionStatement","src":"2744:26:51"},{"expression":{"id":8234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8230,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"2781:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8232,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8217,"src":"2810:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8231,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2792:17:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":8233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2792:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2781:39:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8235,"nodeType":"ExpressionStatement","src":"2781:39:51"}]},"functionSelector":"c4d66de8","id":8237,"implemented":true,"kind":"function","modifiers":[{"id":8220,"kind":"modifierInvocation","modifierName":{"id":8219,"name":"initializer","nameLocations":["2686:11:51"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2686:11:51"},"nodeType":"ModifierInvocation","src":"2686:11:51"}],"name":"initialize","nameLocation":"2649:10:51","nodeType":"FunctionDefinition","parameters":{"id":8218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8217,"mutability":"mutable","name":"_registry","nameLocation":"2668:9:51","nodeType":"VariableDeclaration","scope":8237,"src":"2660:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8216,"name":"address","nodeType":"ElementaryTypeName","src":"2660:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2659:19:51"},"returnParameters":{"id":8221,"nodeType":"ParameterList","parameters":[],"src":"2698:0:51"},"scope":9470,"src":"2640:188:51","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8253,"nodeType":"Block","src":"2923:58:51","statements":[{"expression":{"id":8251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8247,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"2934:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8249,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8239,"src":"2963:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8248,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2945:17:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":8250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2945:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2934:39:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8252,"nodeType":"ExpressionStatement","src":"2934:39:51"}]},"functionSelector":"8f2248bc","id":8254,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":8244,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8241,"src":"2914:7:51","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":8245,"kind":"modifierInvocation","modifierName":{"id":8243,"name":"reinitializer","nameLocations":["2900:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2900:13:51"},"nodeType":"ModifierInvocation","src":"2900:22:51"}],"name":"reinitialize","nameLocation":"2845:12:51","nodeType":"FunctionDefinition","parameters":{"id":8242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8239,"mutability":"mutable","name":"_registry","nameLocation":"2866:9:51","nodeType":"VariableDeclaration","scope":8254,"src":"2858:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8238,"name":"address","nodeType":"ElementaryTypeName","src":"2858:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8241,"mutability":"mutable","name":"version","nameLocation":"2884:7:51","nodeType":"VariableDeclaration","scope":8254,"src":"2877:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8240,"name":"uint64","nodeType":"ElementaryTypeName","src":"2877:6:51","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2857:35:51"},"returnParameters":{"id":8246,"nodeType":"ParameterList","parameters":[],"src":"2923:0:51"},"scope":9470,"src":"2836:145:51","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":8262,"nodeType":"Block","src":"3071:2:51","statements":[]},"id":8263,"implemented":true,"kind":"function","modifiers":[{"id":8260,"kind":"modifierInvocation","modifierName":{"id":8259,"name":"onlyOwner","nameLocations":["3061:9:51"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3061:9:51"},"nodeType":"ModifierInvocation","src":"3061:9:51"}],"name":"_authorizeUpgrade","nameLocation":"2998:17:51","nodeType":"FunctionDefinition","overrides":{"id":8258,"nodeType":"OverrideSpecifier","overrides":[],"src":"3052:8:51"},"parameters":{"id":8257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8256,"mutability":"mutable","name":"newImplementation","nameLocation":"3024:17:51","nodeType":"VariableDeclaration","scope":8263,"src":"3016:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8255,"name":"address","nodeType":"ElementaryTypeName","src":"3016:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3015:27:51"},"returnParameters":{"id":8261,"nodeType":"ParameterList","parameters":[],"src":"3071:0:51"},"scope":9470,"src":"2989:84:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8818,"nodeType":"Block","src":"3883:5307:51","statements":[{"assignments":[8285],"declarations":[{"constant":false,"id":8285,"mutability":"mutable","name":"WNATIVE","nameLocation":"3902:7:51","nodeType":"VariableDeclaration","scope":8818,"src":"3894:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8284,"name":"address","nodeType":"ElementaryTypeName","src":"3894:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8289,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8286,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"3912:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3921:10:51","memberName":"getWNATIVE","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"3912:19:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":8288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3912:21:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3894:39:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8291,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"3954:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3961:6:51","memberName":"length","nodeType":"MemberAccess","src":"3954:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3970:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3954:17:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f206173736574732070726f7669646564","id":8295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3973:20:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_a4318adf7f04cc498a1800af589aaef22c18cab0fcf5793a53cc1d7c1f15eddd","typeString":"literal_string \"No assets provided\""},"value":"No assets provided"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a4318adf7f04cc498a1800af589aaef22c18cab0fcf5793a53cc1d7c1f15eddd","typeString":"literal_string \"No assets provided\""}],"id":8290,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3946:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3946:48:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8297,"nodeType":"ExpressionStatement","src":"3946:48:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8299,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8267,"src":"4013:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4022:6:51","memberName":"length","nodeType":"MemberAccess","src":"4013:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8301,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"4032:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4039:6:51","memberName":"length","nodeType":"MemberAccess","src":"4032:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4013:32:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d69736d6174636865642062616c616e63657320616e6420617373657473206c656e677468","id":8304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4047:39:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_3cfb8101ffb5b45d1fee438528d7c8b153342283cee4b5e0538ea281cf95efb6","typeString":"literal_string \"Mismatched balances and assets length\""},"value":"Mismatched balances and assets length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cfb8101ffb5b45d1fee438528d7c8b153342283cee4b5e0538ea281cf95efb6","typeString":"literal_string \"Mismatched balances and assets length\""}],"id":8298,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4005:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4005:82:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8306,"nodeType":"ExpressionStatement","src":"4005:82:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8308,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8273,"src":"4106:7:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":8309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4114:6:51","memberName":"length","nodeType":"MemberAccess","src":"4106:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8310,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"4124:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4131:6:51","memberName":"length","nodeType":"MemberAccess","src":"4124:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4106:31:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d69736d617463686564207765696768747320616e6420617373657473206c656e677468","id":8313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4139:38:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_22e0bc82af7552ff09569e32b077c5e658042efbf4a0a12c0f4aa0941cd09973","typeString":"literal_string \"Mismatched weights and assets length\""},"value":"Mismatched weights and assets length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22e0bc82af7552ff09569e32b077c5e658042efbf4a0a12c0f4aa0941cd09973","typeString":"literal_string \"Mismatched weights and assets length\""}],"id":8307,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4098:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4098:80:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8315,"nodeType":"ExpressionStatement","src":"4098:80:51"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8316,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8267,"src":"4195:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4204:6:51","memberName":"length","nodeType":"MemberAccess","src":"4195:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4214:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4195:20:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8347,"nodeType":"IfStatement","src":"4191:180:51","trueBody":{"id":8346,"nodeType":"Block","src":"4217:154:51","statements":[{"body":{"id":8344,"nodeType":"Block","src":"4276:84:51","statements":[{"expression":{"id":8342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8331,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8267,"src":"4295:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8333,"indexExpression":{"id":8332,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"4304:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4295:11:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8340,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8277,"src":"4337:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":8335,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"4316:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8337,"indexExpression":{"id":8336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"4323:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4316:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8334,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4309:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4309:17:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4327:9:51","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"4309:27:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4309:35:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4295:49:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8343,"nodeType":"ExpressionStatement","src":"4295:49:51"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8324,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"4252:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8325,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"4256:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4263:6:51","memberName":"length","nodeType":"MemberAccess","src":"4256:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4252:17:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8345,"initializationExpression":{"assignments":[8321],"declarations":[{"constant":false,"id":8321,"mutability":"mutable","name":"i","nameLocation":"4245:1:51","nodeType":"VariableDeclaration","scope":8345,"src":"4237:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8320,"name":"uint256","nodeType":"ElementaryTypeName","src":"4237:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8323,"initialValue":{"hexValue":"30","id":8322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4249:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4237:13:51"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4271:3:51","subExpression":{"id":8328,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"4271:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8330,"nodeType":"ExpressionStatement","src":"4271:3:51"},"nodeType":"ForStatement","src":"4232:128:51"}]}},{"assignments":[8350],"declarations":[{"constant":false,"id":8350,"mutability":"mutable","name":"vars","nameLocation":"4404:4:51","nodeType":"VariableDeclaration","scope":8818,"src":"4383:25:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"},"typeName":{"id":8349,"nodeType":"UserDefinedTypeName","pathNode":{"id":8348,"name":"RebalanceVars","nameLocations":["4383:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":8215,"src":"4383:13:51"},"referencedDeclaration":8215,"src":"4383:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_storage_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"}},"visibility":"internal"}],"id":8358,"initialValue":{"arguments":[{"id":8352,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8267,"src":"4427:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":8353,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"4437:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":8354,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8273,"src":"4445:7:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":8355,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8275,"src":"4454:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8356,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"4461:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8351,"name":"_checkRebalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9227,"src":"4411:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_uint256_$_t_address_$returns$_t_struct$_RebalanceVars_$8215_memory_ptr_$","typeString":"function (uint256[] memory,address[] calldata,uint256[] calldata,uint256,address) view returns (struct BaluniV1Rebalancer.RebalanceVars memory)"}},"id":8357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4411:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"nodeType":"VariableDeclarationStatement","src":"4383:88:51"},{"body":{"id":8556,"nodeType":"Block","src":"4543:1904:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8371,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4562:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8372,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4567:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"4562:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8374,"indexExpression":{"id":8373,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"4585:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4562:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4590:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4562:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8555,"nodeType":"IfStatement","src":"4558:1878:51","trueBody":{"id":8554,"nodeType":"Block","src":"4593:1843:51","statements":[{"assignments":[8378],"declarations":[{"constant":false,"id":8378,"mutability":"mutable","name":"asset","nameLocation":"4620:5:51","nodeType":"VariableDeclaration","scope":8554,"src":"4612:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8377,"name":"address","nodeType":"ElementaryTypeName","src":"4612:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8385,"initialValue":{"baseExpression":{"id":8379,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"4628:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8384,"indexExpression":{"baseExpression":{"expression":{"id":8380,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4635:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4640:16:51","memberName":"overweightVaults","nodeType":"MemberAccess","referencedDeclaration":8202,"src":"4635:21:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8383,"indexExpression":{"id":8382,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"4657:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4635:24:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4628:32:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4612:48:51"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8386,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"4685:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8387,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"4694:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4685:18:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8415,"nodeType":"IfStatement","src":"4681:240:51","trueBody":{"id":8414,"nodeType":"Block","src":"4705:216:51","statements":[{"expression":{"arguments":[{"id":8393,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8277,"src":"4755:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8396,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4771:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4763:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8394,"name":"address","nodeType":"ElementaryTypeName","src":"4763:7:51","typeDescriptions":{}}},"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4763:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":8398,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4778:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4783:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"4778:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8401,"indexExpression":{"id":8400,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"4801:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4778:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8390,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"4735:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8389,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4728:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4728:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4742:12:51","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"4728:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":8402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4728:76:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8403,"nodeType":"ExpressionStatement","src":"4728:76:51"},{"expression":{"id":8411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8404,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4827:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4832:9:51","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":8199,"src":"4827:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"expression":{"id":8407,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4845:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4850:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"4845:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8410,"indexExpression":{"id":8409,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"4868:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4845:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4827:43:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8412,"nodeType":"ExpressionStatement","src":"4827:43:51"},{"id":8413,"nodeType":"Continue","src":"4893:8:51"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8417,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4971:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4976:8:51","memberName":"balances","nodeType":"MemberAccess","referencedDeclaration":8214,"src":"4971:13:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8423,"indexExpression":{"baseExpression":{"expression":{"id":8419,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4985:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4990:16:51","memberName":"overweightVaults","nodeType":"MemberAccess","referencedDeclaration":8202,"src":"4985:21:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8422,"indexExpression":{"id":8421,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"5007:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4985:24:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4971:39:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"baseExpression":{"expression":{"id":8424,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"5014:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5019:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"5014:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8427,"indexExpression":{"id":8426,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"5037:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5014:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4971:68:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631526562616c616e6365723a20556e646572204f76657277656967687420416d6f756e742121","id":8429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5062:47:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_75938c37f2a197ee5a2d1c505157a5d50819cdc8fe37defeedd9f9da093a4a4d","typeString":"literal_string \"BaluniV1Rebalancer: Under Overweight Amount!!\""},"value":"BaluniV1Rebalancer: Under Overweight Amount!!"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_75938c37f2a197ee5a2d1c505157a5d50819cdc8fe37defeedd9f9da093a4a4d","typeString":"literal_string \"BaluniV1Rebalancer: Under Overweight Amount!!\""}],"id":8416,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4941:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4941:187:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8431,"nodeType":"ExpressionStatement","src":"4941:187:51"},{"assignments":[8433],"declarations":[{"constant":false,"id":8433,"mutability":"mutable","name":"allowance","nameLocation":"5157:9:51","nodeType":"VariableDeclaration","scope":8554,"src":"5149:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8432,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8444,"initialValue":{"arguments":[{"id":8438,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8277,"src":"5193:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8441,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5209:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5201:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8439,"name":"address","nodeType":"ElementaryTypeName","src":"5201:7:51","typeDescriptions":{}}},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5201:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8435,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"5176:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8434,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5169:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5169:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5183:9:51","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"5169:23:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":8443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5169:46:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5149:66:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8446,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"5264:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"baseExpression":{"expression":{"id":8447,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"5277:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5282:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"5277:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8450,"indexExpression":{"id":8449,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"5300:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5277:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5264:38:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631526562616c616e6365723a20416c6c6f77616e636520756e646572204f76657277656967687420416d6f756e74","id":8452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5325:55:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_3df622853d9993d00e3fc5cc3d6f05263ebe97c7953035690743a7c747a7eb15","typeString":"literal_string \"BaluniV1Rebalancer: Allowance under Overweight Amount\""},"value":"BaluniV1Rebalancer: Allowance under Overweight Amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3df622853d9993d00e3fc5cc3d6f05263ebe97c7953035690743a7c747a7eb15","typeString":"literal_string \"BaluniV1Rebalancer: Allowance under Overweight Amount\""}],"id":8445,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5234:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5234:165:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8454,"nodeType":"ExpressionStatement","src":"5234:165:51"},{"expression":{"arguments":[{"id":8459,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8277,"src":"5447:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8462,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5463:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5455:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8460,"name":"address","nodeType":"ElementaryTypeName","src":"5455:7:51","typeDescriptions":{}}},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5455:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":8464,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"5470:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5475:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"5470:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8467,"indexExpression":{"id":8466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"5493:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5470:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8456,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"5427:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8455,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5420:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5420:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5434:12:51","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"5420:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5420:76:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8469,"nodeType":"ExpressionStatement","src":"5420:76:51"},{"assignments":[8471],"declarations":[{"constant":false,"id":8471,"mutability":"mutable","name":"baluniSwapper","nameLocation":"5525:13:51","nodeType":"VariableDeclaration","scope":8554,"src":"5517:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8470,"name":"address","nodeType":"ElementaryTypeName","src":"5517:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8475,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8472,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"5541:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5550:16:51","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":4803,"src":"5541:25:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":8474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5541:27:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5517:51:51"},{"expression":{"arguments":[{"id":8480,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8471,"src":"5609:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":8481,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"5624:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5629:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"5624:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8484,"indexExpression":{"id":8483,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"5647:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5624:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8477,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"5594:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8476,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5587:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5587:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5601:7:51","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"5587:21:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5587:63:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8486,"nodeType":"ExpressionStatement","src":"5587:63:51"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8487,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"5675:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":8490,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8285,"src":"5692:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5684:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8488,"name":"address","nodeType":"ElementaryTypeName","src":"5684:7:51","typeDescriptions":{}}},"id":8491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5684:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5675:25:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8552,"nodeType":"Block","src":"6042:379:51","statements":[{"expression":{"id":8550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8521,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"6065:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6070:9:51","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":8199,"src":"6065:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":8528,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"6154:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8531,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8285,"src":"6194:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6186:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8529,"name":"address","nodeType":"ElementaryTypeName","src":"6186:7:51","typeDescriptions":{}}},"id":8532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8533,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"6229:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":8534,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"6265:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6270:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"6265:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8537,"indexExpression":{"id":8536,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"6288:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6265:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8538,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"6317:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6322:17:51","memberName":"underweightVaults","nodeType":"MemberAccess","referencedDeclaration":8208,"src":"6317:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6340:6:51","memberName":"length","nodeType":"MemberAccess","src":"6317:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6350:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6317:34:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":8546,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6373:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6365:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8544,"name":"address","nodeType":"ElementaryTypeName","src":"6365:7:51","typeDescriptions":{}}},"id":8547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6365:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6317:61:51","trueExpression":{"id":8543,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8279,"src":"6354:8:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8525,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8471,"src":"6100:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8524,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"6083:16:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6083:31:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":8527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6115:12:51","memberName":"multiHopSwap","nodeType":"MemberAccess","referencedDeclaration":5207,"src":"6083:44:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,address) external returns (uint256)"}},"id":8549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6083:318:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6065:336:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8551,"nodeType":"ExpressionStatement","src":"6065:336:51"}]},"id":8553,"nodeType":"IfStatement","src":"5671:750:51","trueBody":{"id":8520,"nodeType":"Block","src":"5702:334:51","statements":[{"expression":{"id":8518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8493,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"5725:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5730:9:51","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":8199,"src":"5725:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":8500,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"5812:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8501,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"5844:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"expression":{"id":8502,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"5880:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5885:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"5880:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8505,"indexExpression":{"id":8504,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"5903:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5880:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8506,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"5932:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5937:17:51","memberName":"underweightVaults","nodeType":"MemberAccess","referencedDeclaration":8208,"src":"5932:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5955:6:51","memberName":"length","nodeType":"MemberAccess","src":"5932:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5965:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5932:34:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":8514,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5988:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5980:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8512,"name":"address","nodeType":"ElementaryTypeName","src":"5980:7:51","typeDescriptions":{}}},"id":8515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5980:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5932:61:51","trueExpression":{"id":8511,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8279,"src":"5969:8:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8497,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8471,"src":"5760:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8496,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"5743:16:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":8498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5743:31:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":8499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5775:10:51","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":5192,"src":"5743:42:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":8517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5743:273:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5725:291:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8519,"nodeType":"ExpressionStatement","src":"5725:291:51"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8363,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"4504:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":8364,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"4508:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8365,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4513:16:51","memberName":"overweightVaults","nodeType":"MemberAccess","referencedDeclaration":8202,"src":"4508:21:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4530:6:51","memberName":"length","nodeType":"MemberAccess","src":"4508:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4504:32:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8557,"initializationExpression":{"assignments":[8360],"declarations":[{"constant":false,"id":8360,"mutability":"mutable","name":"i","nameLocation":"4497:1:51","nodeType":"VariableDeclaration","scope":8557,"src":"4489:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8359,"name":"uint256","nodeType":"ElementaryTypeName","src":"4489:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8362,"initialValue":{"hexValue":"30","id":8361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4501:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4489:13:51"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4538:3:51","subExpression":{"id":8368,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"4538:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8370,"nodeType":"ExpressionStatement","src":"4538:3:51"},"nodeType":"ForStatement","src":"4484:1963:51"},{"assignments":[8559],"declarations":[{"constant":false,"id":8559,"mutability":"mutable","name":"baseAssetBalance","nameLocation":"6467:16:51","nodeType":"VariableDeclaration","scope":8818,"src":"6459:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8558,"name":"uint256","nodeType":"ElementaryTypeName","src":"6459:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8569,"initialValue":{"arguments":[{"arguments":[{"id":8566,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6522:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6514:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8564,"name":"address","nodeType":"ElementaryTypeName","src":"6514:7:51","typeDescriptions":{}}},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6514:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8561,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"6493:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8560,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6486:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6486:17:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6504:9:51","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"6486:27:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6486:42:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6459:69:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8571,"name":"baseAssetBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8559,"src":"6547:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":8572,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"6567:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6572:9:51","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":8199,"src":"6567:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6547:34:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631526562616c616e6365723a2020496e73756666696369656e7420626173652061737365742062616c616e6365","id":8575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6583:54:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_d638665e4ee5189a83a0d01e12fed339d580f1aefbc38b719d5d7db0431d7d14","typeString":"literal_string \"BaluniV1Rebalancer:  Insufficient base asset balance\""},"value":"BaluniV1Rebalancer:  Insufficient base asset balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d638665e4ee5189a83a0d01e12fed339d580f1aefbc38b719d5d7db0431d7d14","typeString":"literal_string \"BaluniV1Rebalancer:  Insufficient base asset balance\""}],"id":8570,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6539:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6539:99:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8577,"nodeType":"ExpressionStatement","src":"6539:99:51"},{"assignments":[8582],"declarations":[{"constant":false,"id":8582,"mutability":"mutable","name":"_assets","nameLocation":"6668:7:51","nodeType":"VariableDeclaration","scope":8818,"src":"6651:24:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8580,"name":"address","nodeType":"ElementaryTypeName","src":"6651:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8581,"nodeType":"ArrayTypeName","src":"6651:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":8584,"initialValue":{"id":8583,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"6678:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"nodeType":"VariableDeclarationStatement","src":"6651:33:51"},{"assignments":[8586],"declarations":[{"constant":false,"id":8586,"mutability":"mutable","name":"BPS_BASE","nameLocation":"6703:8:51","nodeType":"VariableDeclaration","scope":8818,"src":"6695:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8585,"name":"uint256","nodeType":"ElementaryTypeName","src":"6695:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8590,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8587,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"6714:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6723:11:51","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"6714:20:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6714:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6695:41:51"},{"body":{"id":8816,"nodeType":"Block","src":"6809:2374:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8603,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"6828:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8604,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6833:18:51","memberName":"underweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8211,"src":"6828:23:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8606,"indexExpression":{"id":8605,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8592,"src":"6852:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6828:26:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6857:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6828:30:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8815,"nodeType":"IfStatement","src":"6824:2348:51","trueBody":{"id":8814,"nodeType":"Block","src":"6860:2312:51","statements":[{"assignments":[8610],"declarations":[{"constant":false,"id":8610,"mutability":"mutable","name":"asset","nameLocation":"6887:5:51","nodeType":"VariableDeclaration","scope":8814,"src":"6879:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8609,"name":"address","nodeType":"ElementaryTypeName","src":"6879:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8617,"initialValue":{"baseExpression":{"id":8611,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8582,"src":"6895:7:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8616,"indexExpression":{"baseExpression":{"expression":{"id":8612,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"6903:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8613,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6908:17:51","memberName":"underweightVaults","nodeType":"MemberAccess","referencedDeclaration":8208,"src":"6903:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8615,"indexExpression":{"id":8614,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8592,"src":"6926:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6903:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6895:34:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6879:50:51"},{"assignments":[8619],"declarations":[{"constant":false,"id":8619,"mutability":"mutable","name":"rebaseActiveWgt","nameLocation":"6958:15:51","nodeType":"VariableDeclaration","scope":8814,"src":"6950:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8618,"name":"uint256","nodeType":"ElementaryTypeName","src":"6950:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8630,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8620,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"6977:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6982:18:51","memberName":"underweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8211,"src":"6977:23:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8623,"indexExpression":{"id":8622,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8592,"src":"7001:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6977:26:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8624,"name":"BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8586,"src":"7006:8:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6977:37:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8626,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6976:39:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":8627,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"7018:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7023:17:51","memberName":"totalActiveWeight","nodeType":"MemberAccess","referencedDeclaration":8197,"src":"7018:22:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6976:64:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6950:90:51"},{"assignments":[8632],"declarations":[{"constant":false,"id":8632,"mutability":"mutable","name":"rebBuyQty","nameLocation":"7067:9:51","nodeType":"VariableDeclaration","scope":8814,"src":"7059:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8631,"name":"uint256","nodeType":"ElementaryTypeName","src":"7059:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8640,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8633,"name":"rebaseActiveWgt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8619,"src":"7080:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":8634,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"7098:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7103:9:51","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":8199,"src":"7098:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7080:32:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8637,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7079:34:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8638,"name":"BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8586,"src":"7116:8:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7079:45:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7059:65:51"},{"assignments":[8642],"declarations":[{"constant":false,"id":8642,"mutability":"mutable","name":"_receiver","nameLocation":"7151:9:51","nodeType":"VariableDeclaration","scope":8814,"src":"7143:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8641,"name":"address","nodeType":"ElementaryTypeName","src":"7143:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8644,"initialValue":{"id":8643,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8279,"src":"7163:8:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7143:28:51"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8645,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"7196:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8646,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"7205:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7196:18:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8658,"nodeType":"IfStatement","src":"7192:146:51","trueBody":{"id":8657,"nodeType":"Block","src":"7216:122:51","statements":[{"expression":{"arguments":[{"id":8652,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8642,"src":"7266:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8653,"name":"rebBuyQty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"7277:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8649,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"7246:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8648,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"7239:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7239:17:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7257:8:51","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"7239:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7239:48:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8655,"nodeType":"ExpressionStatement","src":"7239:48:51"},{"id":8656,"nodeType":"Continue","src":"7310:8:51"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8660,"name":"rebBuyQty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"7366:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7378:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7366:13:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631526562616c616e6365723a20526562616c616e636520627579207175616e74697479206973207a65726f","id":8663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7381:52:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa3ff9055d43007e19f71d67cbd181cc9389823de020de302cf03a989eafc123","typeString":"literal_string \"BaluniV1Rebalancer: Rebalance buy quantity is zero\""},"value":"BaluniV1Rebalancer: Rebalance buy quantity is zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fa3ff9055d43007e19f71d67cbd181cc9389823de020de302cf03a989eafc123","typeString":"literal_string \"BaluniV1Rebalancer: Rebalance buy quantity is zero\""}],"id":8659,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7358:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7358:76:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8665,"nodeType":"ExpressionStatement","src":"7358:76:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8667,"name":"rebBuyQty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"7485:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8668,"name":"baseAssetBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8559,"src":"7498:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7485:29:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631526562616c616e6365723a20526562616c616e636520627579207175616e74697479206578636565647320626173652061737365742062616c616e6365","id":8670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7537:71:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_bdc4d1b5a34635db1950964d6ea0da8459119701fc9f5c687727f465a93a3cc8","typeString":"literal_string \"BaluniV1Rebalancer: Rebalance buy quantity exceeds base asset balance\""},"value":"BaluniV1Rebalancer: Rebalance buy quantity exceeds base asset balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bdc4d1b5a34635db1950964d6ea0da8459119701fc9f5c687727f465a93a3cc8","typeString":"literal_string \"BaluniV1Rebalancer: Rebalance buy quantity exceeds base asset balance\""}],"id":8666,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7455:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7455:172:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8672,"nodeType":"ExpressionStatement","src":"7455:172:51"},{"assignments":[8674],"declarations":[{"constant":false,"id":8674,"mutability":"mutable","name":"baluniSwapper","nameLocation":"7656:13:51","nodeType":"VariableDeclaration","scope":8814,"src":"7648:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8673,"name":"address","nodeType":"ElementaryTypeName","src":"7648:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8678,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8675,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"7672:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7681:16:51","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":4803,"src":"7672:25:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":8677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7672:27:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7648:51:51"},{"expression":{"arguments":[{"id":8683,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"7744:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8684,"name":"rebBuyQty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"7759:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8680,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"7725:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8679,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"7718:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7718:17:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7736:7:51","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"7718:25:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7718:51:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8686,"nodeType":"ExpressionStatement","src":"7718:51:51"},{"assignments":[8688],"declarations":[{"constant":false,"id":8688,"mutability":"mutable","name":"amountOut","nameLocation":"7798:9:51","nodeType":"VariableDeclaration","scope":8814,"src":"7790:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8687,"name":"uint256","nodeType":"ElementaryTypeName","src":"7790:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8689,"nodeType":"VariableDeclarationStatement","src":"7790:17:51"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8690,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"7830:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":8693,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8285,"src":"7847:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7839:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8691,"name":"address","nodeType":"ElementaryTypeName","src":"7839:7:51","typeDescriptions":{}}},"id":8694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7839:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7830:25:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8731,"nodeType":"Block","src":"8004:309:51","statements":[{"expression":{"id":8729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8712,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8688,"src":"8027:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8717,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"8110:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8720,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8285,"src":"8154:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8146:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8718,"name":"address","nodeType":"ElementaryTypeName","src":"8146:7:51","typeDescriptions":{}}},"id":8721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8146:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8722,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"8189:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8723,"name":"rebBuyQty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"8221:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":8726,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8265:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8257:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8724,"name":"address","nodeType":"ElementaryTypeName","src":"8257:7:51","typeDescriptions":{}}},"id":8727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8714,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"8056:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8713,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"8039:16:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":8715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8039:31:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":8716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8071:12:51","memberName":"multiHopSwap","nodeType":"MemberAccess","referencedDeclaration":5207,"src":"8039:44:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,address) external returns (uint256)"}},"id":8728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8039:254:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:266:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8730,"nodeType":"ExpressionStatement","src":"8027:266:51"}]},"id":8732,"nodeType":"IfStatement","src":"7826:487:51","trueBody":{"id":8711,"nodeType":"Block","src":"7857:141:51","statements":[{"expression":{"id":8709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8696,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8688,"src":"7880:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8701,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"7935:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8702,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"7946:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8703,"name":"rebBuyQty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"7953:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":8706,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7972:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7964:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8704,"name":"address","nodeType":"ElementaryTypeName","src":"7964:7:51","typeDescriptions":{}}},"id":8707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7964:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8698,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"7909:13:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8697,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"7892:16:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":8699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7892:31:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":8700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7924:10:51","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":5192,"src":"7892:42:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":8708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7892:86:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7880:98:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8710,"nodeType":"ExpressionStatement","src":"7880:98:51"}]}},{"expression":{"id":8737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8733,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"8333:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8338:9:51","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":8199,"src":"8333:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8736,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8688,"src":"8350:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8333:26:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8738,"nodeType":"ExpressionStatement","src":"8333:26:51"},{"assignments":[8740],"declarations":[{"constant":false,"id":8740,"mutability":"mutable","name":"amountToReceiver","nameLocation":"8386:16:51","nodeType":"VariableDeclaration","scope":8814,"src":"8378:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8739,"name":"uint256","nodeType":"ElementaryTypeName","src":"8378:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8744,"initialValue":{"arguments":[{"id":8742,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8688,"src":"8432:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8741,"name":"calculateNetAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9308,"src":"8405:26:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8405:37:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8378:64:51"},{"assignments":[8746],"declarations":[{"constant":false,"id":8746,"mutability":"mutable","name":"remainingToReceiver","nameLocation":"8469:19:51","nodeType":"VariableDeclaration","scope":8814,"src":"8461:27:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8745,"name":"uint256","nodeType":"ElementaryTypeName","src":"8461:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8750,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8747,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8688,"src":"8491:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8748,"name":"amountToReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8740,"src":"8503:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8491:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8461:58:51"},{"assignments":[8752],"declarations":[{"constant":false,"id":8752,"mutability":"mutable","name":"amountToRouter","nameLocation":"8546:14:51","nodeType":"VariableDeclaration","scope":8814,"src":"8538:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8751,"name":"uint256","nodeType":"ElementaryTypeName","src":"8538:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8756,"initialValue":{"arguments":[{"id":8754,"name":"remainingToReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"8590:19:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8753,"name":"calculateNetAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9308,"src":"8563:26:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8563:47:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8538:72:51"},{"assignments":[8758],"declarations":[{"constant":false,"id":8758,"mutability":"mutable","name":"amountToTreasury","nameLocation":"8637:16:51","nodeType":"VariableDeclaration","scope":8814,"src":"8629:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8757,"name":"uint256","nodeType":"ElementaryTypeName","src":"8629:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8762,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8759,"name":"remainingToReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"8656:19:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8760,"name":"amountToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8752,"src":"8678:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8656:36:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8629:63:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":8770,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8753:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Rebalancer_$9470","typeString":"contract BaluniV1Rebalancer"}],"id":8769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8745:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8768,"name":"address","nodeType":"ElementaryTypeName","src":"8745:7:51","typeDescriptions":{}}},"id":8771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8745:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":8765,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"8728:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8764,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8721:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8721:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8735:9:51","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"8721:23:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8721:38:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8773,"name":"amountToReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8740,"src":"8763:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8721:58:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c616e636520756e64657220616d6f756e7420746f207472616e73666572","id":8775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8781:34:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_ed0717930e92357ad775d5bd33d822fac3af124d34d31006ec65eb453f0b8735","typeString":"literal_string \"Balance under amount to transfer\""},"value":"Balance under amount to transfer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ed0717930e92357ad775d5bd33d822fac3af124d34d31006ec65eb453f0b8735","typeString":"literal_string \"Balance under amount to transfer\""}],"id":8763,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8713:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8713:103:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8777,"nodeType":"ExpressionStatement","src":"8713:103:51"},{"assignments":[8779],"declarations":[{"constant":false,"id":8779,"mutability":"mutable","name":"baluniRouter","nameLocation":"8843:12:51","nodeType":"VariableDeclaration","scope":8814,"src":"8835:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8778,"name":"address","nodeType":"ElementaryTypeName","src":"8835:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8783,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8780,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"8858:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8867:15:51","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":4838,"src":"8858:24:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":8782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8858:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8835:49:51"},{"assignments":[8785],"declarations":[{"constant":false,"id":8785,"mutability":"mutable","name":"treasury","nameLocation":"8911:8:51","nodeType":"VariableDeclaration","scope":8814,"src":"8903:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8784,"name":"address","nodeType":"ElementaryTypeName","src":"8903:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8789,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8786,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"8922:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":8787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8931:11:51","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"8922:20:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":8788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8922:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8903:41:51"},{"expression":{"arguments":[{"id":8794,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8642,"src":"8988:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8795,"name":"amountToReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8740,"src":"8999:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8791,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"8972:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8790,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8965:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8965:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8979:8:51","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"8965:22:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8965:51:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8797,"nodeType":"ExpressionStatement","src":"8965:51:51"},{"expression":{"arguments":[{"id":8802,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8779,"src":"9058:12:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8803,"name":"amountToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8752,"src":"9072:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8799,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"9042:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8798,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9035:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9035:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9049:8:51","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"9035:22:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9035:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8805,"nodeType":"ExpressionStatement","src":"9035:52:51"},{"expression":{"arguments":[{"id":8810,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8785,"src":"9129:8:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8811,"name":"amountToTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8758,"src":"9139:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8807,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8610,"src":"9113:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8806,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9106:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9106:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9120:8:51","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"9106:22:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9106:50:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8813,"nodeType":"ExpressionStatement","src":"9106:50:51"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8595,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8592,"src":"6769:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":8596,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"6773:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":8597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6778:17:51","memberName":"underweightVaults","nodeType":"MemberAccess","referencedDeclaration":8208,"src":"6773:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6796:6:51","memberName":"length","nodeType":"MemberAccess","src":"6773:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6769:33:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8817,"initializationExpression":{"assignments":[8592],"declarations":[{"constant":false,"id":8592,"mutability":"mutable","name":"i","nameLocation":"6762:1:51","nodeType":"VariableDeclaration","scope":8817,"src":"6754:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8591,"name":"uint256","nodeType":"ElementaryTypeName","src":"6754:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8594,"initialValue":{"hexValue":"30","id":8593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6766:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6754:13:51"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6804:3:51","subExpression":{"id":8600,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8592,"src":"6804:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8602,"nodeType":"ExpressionStatement","src":"6804:3:51"},"nodeType":"ForStatement","src":"6749:2434:51"}]},"documentation":{"id":8264,"nodeType":"StructuredDocumentation","src":"3081:548:51","text":" @dev Rebalances the portfolio by buying and selling assets based on their weights.\n @param balances An array of current asset balances.\n @param assets An array of asset addresses.\n @param weights An array of asset weights.\n @param limit The maximum amount of assets to be rebalanced.\n @param sender The address from which the assets will be transferred.\n @param receiver The address to which the assets will be transferred.\n @param baseAsset The base asset used for rebalancing."},"functionSelector":"f0bf7714","id":8819,"implemented":true,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"3644:9:51","nodeType":"FunctionDefinition","parameters":{"id":8282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8267,"mutability":"mutable","name":"balances","nameLocation":"3681:8:51","nodeType":"VariableDeclaration","scope":8819,"src":"3664:25:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8265,"name":"uint256","nodeType":"ElementaryTypeName","src":"3664:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8266,"nodeType":"ArrayTypeName","src":"3664:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8270,"mutability":"mutable","name":"assets","nameLocation":"3719:6:51","nodeType":"VariableDeclaration","scope":8819,"src":"3700:25:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8268,"name":"address","nodeType":"ElementaryTypeName","src":"3700:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8269,"nodeType":"ArrayTypeName","src":"3700:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":8273,"mutability":"mutable","name":"weights","nameLocation":"3755:7:51","nodeType":"VariableDeclaration","scope":8819,"src":"3736:26:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8271,"name":"uint256","nodeType":"ElementaryTypeName","src":"3736:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8272,"nodeType":"ArrayTypeName","src":"3736:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8275,"mutability":"mutable","name":"limit","nameLocation":"3781:5:51","nodeType":"VariableDeclaration","scope":8819,"src":"3773:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8274,"name":"uint256","nodeType":"ElementaryTypeName","src":"3773:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8277,"mutability":"mutable","name":"sender","nameLocation":"3805:6:51","nodeType":"VariableDeclaration","scope":8819,"src":"3797:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8276,"name":"address","nodeType":"ElementaryTypeName","src":"3797:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8279,"mutability":"mutable","name":"receiver","nameLocation":"3830:8:51","nodeType":"VariableDeclaration","scope":8819,"src":"3822:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8278,"name":"address","nodeType":"ElementaryTypeName","src":"3822:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8281,"mutability":"mutable","name":"baseAsset","nameLocation":"3857:9:51","nodeType":"VariableDeclaration","scope":8819,"src":"3849:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8280,"name":"address","nodeType":"ElementaryTypeName","src":"3849:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3653:220:51"},"returnParameters":{"id":8283,"nodeType":"ParameterList","parameters":[],"src":"3883:0:51"},"scope":9470,"src":"3635:5555:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8898,"nodeType":"Block","src":"9963:403:51","statements":[{"assignments":[8845],"declarations":[{"constant":false,"id":8845,"mutability":"mutable","name":"_balances","nameLocation":"9991:9:51","nodeType":"VariableDeclaration","scope":8898,"src":"9974:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8843,"name":"uint256","nodeType":"ElementaryTypeName","src":"9974:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8844,"nodeType":"ArrayTypeName","src":"9974:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":8852,"initialValue":{"arguments":[{"expression":{"id":8849,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"10017:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10024:6:51","memberName":"length","nodeType":"MemberAccess","src":"10017:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"10003:13:51","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":8846,"name":"uint256","nodeType":"ElementaryTypeName","src":"10007:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8847,"nodeType":"ArrayTypeName","src":"10007:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":8851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10003:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9974:57:51"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8853,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8823,"src":"10048:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10057:6:51","memberName":"length","nodeType":"MemberAccess","src":"10048:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10067:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10048:20:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8888,"nodeType":"Block","src":"10231:47:51","statements":[{"expression":{"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8884,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8845,"src":"10246:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8885,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8823,"src":"10258:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"10246:20:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8887,"nodeType":"ExpressionStatement","src":"10246:20:51"}]},"id":8889,"nodeType":"IfStatement","src":"10044:234:51","trueBody":{"id":8883,"nodeType":"Block","src":"10070:155:51","statements":[{"body":{"id":8881,"nodeType":"Block","src":"10129:85:51","statements":[{"expression":{"id":8879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8868,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8845,"src":"10148:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":8870,"indexExpression":{"id":8869,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"10158:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10148:12:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8877,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8833,"src":"10191:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":8872,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"10170:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8874,"indexExpression":{"id":8873,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"10177:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10170:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8871,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10163:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":8875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10163:17:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":8876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10181:9:51","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"10163:27:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10163:35:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10148:50:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8880,"nodeType":"ExpressionStatement","src":"10148:50:51"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8861,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"10105:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8862,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"10109:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10116:6:51","memberName":"length","nodeType":"MemberAccess","src":"10109:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10105:17:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8882,"initializationExpression":{"assignments":[8858],"declarations":[{"constant":false,"id":8858,"mutability":"mutable","name":"i","nameLocation":"10098:1:51","nodeType":"VariableDeclaration","scope":8882,"src":"10090:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8857,"name":"uint256","nodeType":"ElementaryTypeName","src":"10090:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8860,"initialValue":{"hexValue":"30","id":8859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10102:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10090:13:51"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10124:3:51","subExpression":{"id":8865,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"10124:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8867,"nodeType":"ExpressionStatement","src":"10124:3:51"},"nodeType":"ForStatement","src":"10085:129:51"}]}},{"expression":{"arguments":[{"id":8891,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8845,"src":"10313:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":8892,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"10324:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":8893,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8829,"src":"10332:7:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":8894,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8831,"src":"10341:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8895,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8835,"src":"10348:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8890,"name":"_checkRebalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9227,"src":"10297:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_uint256_$_t_address_$returns$_t_struct$_RebalanceVars_$8215_memory_ptr_$","typeString":"function (uint256[] memory,address[] calldata,uint256[] calldata,uint256,address) view returns (struct BaluniV1Rebalancer.RebalanceVars memory)"}},"id":8896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10297:61:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"functionReturnParameters":8840,"id":8897,"nodeType":"Return","src":"10290:68:51"}]},"documentation":{"id":8820,"nodeType":"StructuredDocumentation","src":"9198:499:51","text":" @dev Checks if a rebalance is needed based on the given parameters.\n @param balances An array of token balances.\n @param assets An array of token addresses.\n @param weights An array of token weights.\n @param limit The maximum allowed difference between the current and target weights.\n @param sender The address of the caller.\n @param baseAsset The address of the base asset.\n @return A struct containing the rebalance variables."},"functionSelector":"997146f5","id":8899,"implemented":true,"kind":"function","modifiers":[],"name":"checkRebalance","nameLocation":"9712:14:51","nodeType":"FunctionDefinition","parameters":{"id":8836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8823,"mutability":"mutable","name":"balances","nameLocation":"9754:8:51","nodeType":"VariableDeclaration","scope":8899,"src":"9737:25:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8821,"name":"uint256","nodeType":"ElementaryTypeName","src":"9737:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8822,"nodeType":"ArrayTypeName","src":"9737:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8826,"mutability":"mutable","name":"assets","nameLocation":"9792:6:51","nodeType":"VariableDeclaration","scope":8899,"src":"9773:25:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8824,"name":"address","nodeType":"ElementaryTypeName","src":"9773:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8825,"nodeType":"ArrayTypeName","src":"9773:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":8829,"mutability":"mutable","name":"weights","nameLocation":"9828:7:51","nodeType":"VariableDeclaration","scope":8899,"src":"9809:26:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8827,"name":"uint256","nodeType":"ElementaryTypeName","src":"9809:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8828,"nodeType":"ArrayTypeName","src":"9809:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8831,"mutability":"mutable","name":"limit","nameLocation":"9854:5:51","nodeType":"VariableDeclaration","scope":8899,"src":"9846:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8830,"name":"uint256","nodeType":"ElementaryTypeName","src":"9846:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8833,"mutability":"mutable","name":"sender","nameLocation":"9878:6:51","nodeType":"VariableDeclaration","scope":8899,"src":"9870:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8832,"name":"address","nodeType":"ElementaryTypeName","src":"9870:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8835,"mutability":"mutable","name":"baseAsset","nameLocation":"9903:9:51","nodeType":"VariableDeclaration","scope":8899,"src":"9895:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8834,"name":"address","nodeType":"ElementaryTypeName","src":"9895:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9726:193:51"},"returnParameters":{"id":8840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8899,"src":"9941:20:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"},"typeName":{"id":8838,"nodeType":"UserDefinedTypeName","pathNode":{"id":8837,"name":"RebalanceVars","nameLocations":["9941:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":8215,"src":"9941:13:51"},"referencedDeclaration":8215,"src":"9941:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_storage_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"}},"visibility":"internal"}],"src":"9940:22:51"},"scope":9470,"src":"9703:663:51","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":9226,"nodeType":"Block","src":"11099:2970:51","statements":[{"assignments":[8920,8923],"declarations":[{"constant":false,"id":8920,"mutability":"mutable","name":"totalValue","nameLocation":"11119:10:51","nodeType":"VariableDeclaration","scope":9226,"src":"11111:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8919,"name":"uint256","nodeType":"ElementaryTypeName","src":"11111:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8923,"mutability":"mutable","name":"valuations","nameLocation":"11148:10:51","nodeType":"VariableDeclaration","scope":9226,"src":"11131:27:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8921,"name":"uint256","nodeType":"ElementaryTypeName","src":"11131:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8922,"nodeType":"ArrayTypeName","src":"11131:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":8929,"initialValue":{"arguments":[{"id":8925,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8903,"src":"11188:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":8926,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"11198:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":8927,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"11206:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8924,"name":"calculateTotalValueScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9427,"src":"11162:25:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,address[] memory,address) view returns (uint256,uint256[] memory)"}},"id":8928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11162:54:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"11110:106:51"},{"assignments":[8932],"declarations":[{"constant":false,"id":8932,"mutability":"mutable","name":"vars","nameLocation":"11248:4:51","nodeType":"VariableDeclaration","scope":9226,"src":"11227:25:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"},"typeName":{"id":8931,"nodeType":"UserDefinedTypeName","pathNode":{"id":8930,"name":"RebalanceVars","nameLocations":["11227:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":8215,"src":"11227:13:51"},"referencedDeclaration":8215,"src":"11227:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_storage_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"}},"visibility":"internal"}],"id":8977,"initialValue":{"arguments":[{"expression":{"id":8934,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"11283:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11290:6:51","memberName":"length","nodeType":"MemberAccess","src":"11283:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8936,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8920,"src":"11311:10:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8937,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"11336:10:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"30","id":8938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11361:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":8939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11377:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":8940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11393:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":8941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11409:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":8942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11425:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8946,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"11455:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11462:6:51","memberName":"length","nodeType":"MemberAccess","src":"11455:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":8948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11471:1:51","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11455:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8945,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11441:13:51","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":8943,"name":"uint256","nodeType":"ElementaryTypeName","src":"11445:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8944,"nodeType":"ArrayTypeName","src":"11445:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":8950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11441:32:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8954,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"11502:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11509:6:51","memberName":"length","nodeType":"MemberAccess","src":"11502:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":8956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11518:1:51","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11502:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11488:13:51","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":8951,"name":"uint256","nodeType":"ElementaryTypeName","src":"11492:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8952,"nodeType":"ArrayTypeName","src":"11492:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":8958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11488:32:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8962,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"11549:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11556:6:51","memberName":"length","nodeType":"MemberAccess","src":"11549:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":8964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11565:1:51","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11549:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11535:13:51","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":8959,"name":"uint256","nodeType":"ElementaryTypeName","src":"11539:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8960,"nodeType":"ArrayTypeName","src":"11539:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":8966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11535:32:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8970,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"11596:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11603:6:51","memberName":"length","nodeType":"MemberAccess","src":"11596:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":8972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11612:1:51","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11596:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11582:13:51","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":8967,"name":"uint256","nodeType":"ElementaryTypeName","src":"11586:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8968,"nodeType":"ArrayTypeName","src":"11586:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11582:32:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":8975,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8903,"src":"11629:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":8933,"name":"RebalanceVars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8215,"src":"11255:13:51","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RebalanceVars_$8215_storage_ptr_$","typeString":"type(struct BaluniV1Rebalancer.RebalanceVars storage pointer)"}},"id":8976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11255:393:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"nodeType":"VariableDeclarationStatement","src":"11227:421:51"},{"assignments":[8979],"declarations":[{"constant":false,"id":8979,"mutability":"mutable","name":"_limit","nameLocation":"11669:6:51","nodeType":"VariableDeclaration","scope":9226,"src":"11661:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8978,"name":"uint256","nodeType":"ElementaryTypeName","src":"11661:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8981,"initialValue":{"id":8980,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8911,"src":"11678:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11661:22:51"},{"assignments":[8983],"declarations":[{"constant":false,"id":8983,"mutability":"mutable","name":"_totalVal","nameLocation":"11702:9:51","nodeType":"VariableDeclaration","scope":9226,"src":"11694:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8982,"name":"uint256","nodeType":"ElementaryTypeName","src":"11694:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8985,"initialValue":{"id":8984,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8920,"src":"11714:10:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11694:30:51"},{"assignments":[8988],"declarations":[{"constant":false,"id":8988,"mutability":"mutable","name":"_vars","nameLocation":"11758:5:51","nodeType":"VariableDeclaration","scope":9226,"src":"11737:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"},"typeName":{"id":8987,"nodeType":"UserDefinedTypeName","pathNode":{"id":8986,"name":"RebalanceVars","nameLocations":["11737:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":8215,"src":"11737:13:51"},"referencedDeclaration":8215,"src":"11737:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_storage_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"}},"visibility":"internal"}],"id":8990,"initialValue":{"id":8989,"name":"vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8932,"src":"11766:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"nodeType":"VariableDeclarationStatement","src":"11737:33:51"},{"body":{"id":9178,"nodeType":"Block","src":"11827:1810:51","statements":[{"assignments":[9004],"declarations":[{"constant":false,"id":9004,"mutability":"mutable","name":"baluniOracle","nameLocation":"11858:12:51","nodeType":"VariableDeclaration","scope":9178,"src":"11842:28:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"},"typeName":{"id":9003,"nodeType":"UserDefinedTypeName","pathNode":{"id":9002,"name":"IBaluniV1Oracle","nameLocations":["11842:15:51"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"11842:15:51"},"referencedDeclaration":4240,"src":"11842:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"visibility":"internal"}],"id":9010,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9006,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"11889:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11898:15:51","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"11889:24:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11889:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9005,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"11873:15:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$4240_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":9009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11873:43:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"nodeType":"VariableDeclarationStatement","src":"11842:74:51"},{"assignments":[9012],"declarations":[{"constant":false,"id":9012,"mutability":"mutable","name":"asset","nameLocation":"11939:5:51","nodeType":"VariableDeclaration","scope":9178,"src":"11931:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9011,"name":"address","nodeType":"ElementaryTypeName","src":"11931:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9016,"initialValue":{"baseExpression":{"id":9013,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"11947:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":9015,"indexExpression":{"id":9014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8992,"src":"11954:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11947:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11931:25:51"},{"assignments":[9018],"declarations":[{"constant":false,"id":9018,"mutability":"mutable","name":"_baseAsset","nameLocation":"11979:10:51","nodeType":"VariableDeclaration","scope":9178,"src":"11971:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9017,"name":"address","nodeType":"ElementaryTypeName","src":"11971:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9020,"initialValue":{"id":9019,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8913,"src":"11992:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11971:30:51"},{"assignments":[9022],"declarations":[{"constant":false,"id":9022,"mutability":"mutable","name":"targetWeight","nameLocation":"12024:12:51","nodeType":"VariableDeclaration","scope":9178,"src":"12016:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9021,"name":"uint256","nodeType":"ElementaryTypeName","src":"12016:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9026,"initialValue":{"baseExpression":{"id":9023,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8909,"src":"12039:7:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":9025,"indexExpression":{"id":9024,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8992,"src":"12047:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12039:10:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12016:33:51"},{"assignments":[9028],"declarations":[{"constant":false,"id":9028,"mutability":"mutable","name":"currentWeight","nameLocation":"12072:13:51","nodeType":"VariableDeclaration","scope":9178,"src":"12064:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9027,"name":"uint256","nodeType":"ElementaryTypeName","src":"12064:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9039,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9029,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"12089:10:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9031,"indexExpression":{"id":9030,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8992,"src":"12100:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12089:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9032,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"12105:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12114:11:51","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"12105:20:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12105:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12089:38:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9036,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12088:40:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9037,"name":"_totalVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8983,"src":"12131:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12088:52:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12064:76:51"},{"assignments":[9041],"declarations":[{"constant":false,"id":9041,"mutability":"mutable","name":"overweight","nameLocation":"12160:10:51","nodeType":"VariableDeclaration","scope":9178,"src":"12155:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9040,"name":"bool","nodeType":"ElementaryTypeName","src":"12155:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":9045,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9042,"name":"currentWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9028,"src":"12173:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9043,"name":"targetWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"12189:12:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12173:28:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12155:46:51"},{"assignments":[9047],"declarations":[{"constant":false,"id":9047,"mutability":"mutable","name":"overweightPercent","nameLocation":"12224:17:51","nodeType":"VariableDeclaration","scope":9178,"src":"12216:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9046,"name":"uint256","nodeType":"ElementaryTypeName","src":"12216:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9056,"initialValue":{"condition":{"id":9048,"name":"overweight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9041,"src":"12244:10:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9052,"name":"targetWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"12288:12:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9053,"name":"currentWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9028,"src":"12303:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12288:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12244:72:51","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9049,"name":"currentWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9028,"src":"12257:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9050,"name":"targetWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"12273:12:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12257:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12216:100:51"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9057,"name":"overweight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9041,"src":"12337:10:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9058,"name":"overweightPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"12351:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9059,"name":"_limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"12371:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12351:26:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12337:40:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13283:11:51","subExpression":{"id":9140,"name":"overweight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9041,"src":"13284:10:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9142,"name":"overweightPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"13298:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9143,"name":"_limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"13318:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13298:26:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13283:41:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9176,"nodeType":"IfStatement","src":"13279:347:51","trueBody":{"id":9175,"nodeType":"Block","src":"13326:300:51","statements":[{"expression":{"id":9150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9146,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13345:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13351:17:51","memberName":"totalActiveWeight","nodeType":"MemberAccess","referencedDeclaration":8197,"src":"13345:23:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":9149,"name":"overweightPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"13372:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13345:44:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9151,"nodeType":"ExpressionStatement","src":"13345:44:51"},{"expression":{"id":9159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":9152,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13408:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13414:17:51","memberName":"underweightVaults","nodeType":"MemberAccess","referencedDeclaration":8208,"src":"13408:23:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9157,"indexExpression":{"expression":{"id":9154,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13432:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13438:23:51","memberName":"underweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8195,"src":"13432:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13408:54:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9158,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8992,"src":"13465:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13408:58:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9160,"nodeType":"ExpressionStatement","src":"13408:58:51"},{"expression":{"id":9168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":9161,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13485:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13491:18:51","memberName":"underweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8211,"src":"13485:24:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9166,"indexExpression":{"expression":{"id":9163,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13510:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13516:23:51","memberName":"underweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8195,"src":"13510:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13485:55:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9167,"name":"overweightPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"13543:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13485:75:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9169,"nodeType":"ExpressionStatement","src":"13485:75:51"},{"expression":{"id":9173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13579:31:51","subExpression":{"expression":{"id":9170,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13579:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13585:23:51","memberName":"underweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8195,"src":"13579:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9174,"nodeType":"ExpressionStatement","src":"13579:31:51"}]}},"id":9177,"nodeType":"IfStatement","src":"12333:1293:51","trueBody":{"id":9139,"nodeType":"Block","src":"12379:894:51","statements":[{"assignments":[9063],"declarations":[{"constant":false,"id":9063,"mutability":"mutable","name":"overweightAmount","nameLocation":"12406:16:51","nodeType":"VariableDeclaration","scope":9139,"src":"12398:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9062,"name":"uint256","nodeType":"ElementaryTypeName","src":"12398:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9072,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9064,"name":"overweightPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"12426:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9065,"name":"_totalVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8983,"src":"12446:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12426:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9067,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12425:31:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9068,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"12459:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12468:11:51","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"12459:20:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12459:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12425:56:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12398:83:51"},{"expression":{"id":9077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9073,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"12500:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12506:15:51","memberName":"finalUsdBalance","nodeType":"MemberAccess","referencedDeclaration":8191,"src":"12500:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":9076,"name":"overweightAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"12525:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12500:41:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9078,"nodeType":"ExpressionStatement","src":"12500:41:51"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9079,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9012,"src":"12566:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9080,"name":"_baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9018,"src":"12575:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12566:19:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9114,"nodeType":"Block","src":"12774:267:51","statements":[{"expression":{"id":9112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9098,"name":"overweightAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"12797:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9101,"name":"_baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9018,"src":"12863:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9102,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9012,"src":"12900:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9104,"name":"overweightAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"12942:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":9106,"name":"_baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9018,"src":"12975:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9105,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"12960:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":9107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12960:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":9108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12987:8:51","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"12960:35:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":9109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12960:37:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9103,"name":"scaleDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9469,"src":"12932:9:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12932:66:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9099,"name":"baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9004,"src":"12816:12:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":9100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12829:7:51","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":4228,"src":"12816:20:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":9111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12816:205:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12797:224:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9113,"nodeType":"ExpressionStatement","src":"12797:224:51"}]},"id":9115,"nodeType":"IfStatement","src":"12562:479:51","trueBody":{"id":9097,"nodeType":"Block","src":"12587:181:51","statements":[{"expression":{"id":9084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9082,"name":"overweightAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"12610:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9083,"name":"overweightAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"12629:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12610:35:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9085,"nodeType":"ExpressionStatement","src":"12610:35:51"},{"expression":{"id":9095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9086,"name":"overweightAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"12668:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9088,"name":"overweightAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"12697:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":9090,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9012,"src":"12730:5:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9089,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"12715:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":9091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12715:21:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":9092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12737:8:51","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"12715:30:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":9093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12715:32:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9087,"name":"scaleDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9469,"src":"12687:9:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12687:61:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12668:80:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9096,"nodeType":"ExpressionStatement","src":"12668:80:51"}]}},{"expression":{"id":9123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":9116,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13061:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13067:16:51","memberName":"overweightVaults","nodeType":"MemberAccess","referencedDeclaration":8202,"src":"13061:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9121,"indexExpression":{"expression":{"id":9118,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13084:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13090:22:51","memberName":"overweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8193,"src":"13084:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13061:52:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9122,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8992,"src":"13116:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13061:56:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9124,"nodeType":"ExpressionStatement","src":"13061:56:51"},{"expression":{"id":9132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":9125,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13136:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13142:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"13136:23:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9130,"indexExpression":{"expression":{"id":9127,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13160:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13166:22:51","memberName":"overweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8193,"src":"13160:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13136:53:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9131,"name":"overweightAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"13192:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13136:72:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9133,"nodeType":"ExpressionStatement","src":"13136:72:51"},{"expression":{"id":9137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13227:30:51","subExpression":{"expression":{"id":9134,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13227:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13233:22:51","memberName":"overweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8193,"src":"13227:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9138,"nodeType":"ExpressionStatement","src":"13227:30:51"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8995,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8992,"src":"11803:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8996,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"11807:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":8997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11814:6:51","memberName":"length","nodeType":"MemberAccess","src":"11807:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11803:17:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9179,"initializationExpression":{"assignments":[8992],"declarations":[{"constant":false,"id":8992,"mutability":"mutable","name":"i","nameLocation":"11796:1:51","nodeType":"VariableDeclaration","scope":9179,"src":"11788:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8991,"name":"uint256","nodeType":"ElementaryTypeName","src":"11788:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8994,"initialValue":{"hexValue":"30","id":8993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11800:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11788:13:51"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11822:3:51","subExpression":{"id":8999,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8992,"src":"11822:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9001,"nodeType":"ExpressionStatement","src":"11822:3:51"},"nodeType":"ForStatement","src":"11783:1854:51"},{"expression":{"id":9189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9180,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13649:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13655:16:51","memberName":"overweightVaults","nodeType":"MemberAccess","referencedDeclaration":8202,"src":"13649:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9184,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13682:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9185,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13688:16:51","memberName":"overweightVaults","nodeType":"MemberAccess","referencedDeclaration":8202,"src":"13682:22:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":9186,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13706:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13712:22:51","memberName":"overweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8193,"src":"13706:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9183,"name":"_resize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"13674:7:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256) pure returns (uint256[] memory)"}},"id":9188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13674:61:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13649:86:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9190,"nodeType":"ExpressionStatement","src":"13649:86:51"},{"expression":{"id":9200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9191,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13746:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13752:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"13746:23:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9195,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13780:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13786:17:51","memberName":"overweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8205,"src":"13780:23:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":9197,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13805:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13811:22:51","memberName":"overweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8193,"src":"13805:28:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9194,"name":"_resize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"13772:7:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256) pure returns (uint256[] memory)"}},"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13772:62:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13746:88:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9201,"nodeType":"ExpressionStatement","src":"13746:88:51"},{"expression":{"id":9211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9202,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13845:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13851:17:51","memberName":"underweightVaults","nodeType":"MemberAccess","referencedDeclaration":8208,"src":"13845:23:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9206,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13879:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13885:17:51","memberName":"underweightVaults","nodeType":"MemberAccess","referencedDeclaration":8208,"src":"13879:23:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":9208,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13904:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13910:23:51","memberName":"underweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8195,"src":"13904:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9205,"name":"_resize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"13871:7:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256) pure returns (uint256[] memory)"}},"id":9210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13871:63:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13845:89:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9212,"nodeType":"ExpressionStatement","src":"13845:89:51"},{"expression":{"id":9222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9213,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13945:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13951:18:51","memberName":"underweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8211,"src":"13945:24:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9217,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"13980:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13986:18:51","memberName":"underweightAmounts","nodeType":"MemberAccess","referencedDeclaration":8211,"src":"13980:24:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":9219,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"14006:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"id":9220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14012:23:51","memberName":"underweightVaultsLength","nodeType":"MemberAccess","referencedDeclaration":8195,"src":"14006:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9216,"name":"_resize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"13972:7:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256) pure returns (uint256[] memory)"}},"id":9221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13972:64:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13945:91:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9223,"nodeType":"ExpressionStatement","src":"13945:91:51"},{"expression":{"id":9224,"name":"_vars","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8988,"src":"14056:5:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars memory"}},"functionReturnParameters":8918,"id":9225,"nodeType":"Return","src":"14049:12:51"}]},"documentation":{"id":8900,"nodeType":"StructuredDocumentation","src":"10374:481:51","text":" @dev Internal function to check if rebalancing is required based on the given parameters.\n @param balances An array of token balances.\n @param assets An array of token addresses.\n @param weights An array of target weights for each token.\n @param limit The maximum allowed deviation from the target weight.\n @param baseAsset The address of the base asset.\n @return rebalanceVars A struct containing rebalance variables."},"id":9227,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRebalance","nameLocation":"10870:15:51","nodeType":"FunctionDefinition","parameters":{"id":8914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8903,"mutability":"mutable","name":"balances","nameLocation":"10913:8:51","nodeType":"VariableDeclaration","scope":9227,"src":"10896:25:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8901,"name":"uint256","nodeType":"ElementaryTypeName","src":"10896:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8902,"nodeType":"ArrayTypeName","src":"10896:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8906,"mutability":"mutable","name":"assets","nameLocation":"10951:6:51","nodeType":"VariableDeclaration","scope":9227,"src":"10932:25:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8904,"name":"address","nodeType":"ElementaryTypeName","src":"10932:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8905,"nodeType":"ArrayTypeName","src":"10932:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":8909,"mutability":"mutable","name":"weights","nameLocation":"10987:7:51","nodeType":"VariableDeclaration","scope":9227,"src":"10968:26:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8907,"name":"uint256","nodeType":"ElementaryTypeName","src":"10968:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8908,"nodeType":"ArrayTypeName","src":"10968:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8911,"mutability":"mutable","name":"limit","nameLocation":"11013:5:51","nodeType":"VariableDeclaration","scope":9227,"src":"11005:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8910,"name":"uint256","nodeType":"ElementaryTypeName","src":"11005:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8913,"mutability":"mutable","name":"baseAsset","nameLocation":"11037:9:51","nodeType":"VariableDeclaration","scope":9227,"src":"11029:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8912,"name":"address","nodeType":"ElementaryTypeName","src":"11029:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10885:168:51"},"returnParameters":{"id":8918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8917,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9227,"src":"11077:20:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_memory_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"},"typeName":{"id":8916,"nodeType":"UserDefinedTypeName","pathNode":{"id":8915,"name":"RebalanceVars","nameLocations":["11077:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":8215,"src":"11077:13:51"},"referencedDeclaration":8215,"src":"11077:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_RebalanceVars_$8215_storage_ptr","typeString":"struct BaluniV1Rebalancer.RebalanceVars"}},"visibility":"internal"}],"src":"11076:22:51"},"scope":9470,"src":"10861:3208:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9271,"nodeType":"Block","src":"14380:165:51","statements":[{"assignments":[9243],"declarations":[{"constant":false,"id":9243,"mutability":"mutable","name":"ret","nameLocation":"14408:3:51","nodeType":"VariableDeclaration","scope":9271,"src":"14391:20:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9241,"name":"uint256","nodeType":"ElementaryTypeName","src":"14391:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9242,"nodeType":"ArrayTypeName","src":"14391:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":9249,"initialValue":{"arguments":[{"id":9247,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9233,"src":"14428:4:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14414:13:51","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":9244,"name":"uint256","nodeType":"ElementaryTypeName","src":"14418:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9245,"nodeType":"ArrayTypeName","src":"14418:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":9248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14414:19:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"14391:42:51"},{"body":{"id":9267,"nodeType":"Block","src":"14475:42:51","statements":[{"expression":{"id":9265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9259,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9243,"src":"14490:3:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9261,"indexExpression":{"id":9260,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"14494:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14490:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":9262,"name":"arr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9231,"src":"14499:3:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9264,"indexExpression":{"id":9263,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"14503:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14499:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14490:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9266,"nodeType":"ExpressionStatement","src":"14490:15:51"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9253,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"14460:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9254,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9233,"src":"14464:4:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14460:8:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9268,"initializationExpression":{"assignments":[9251],"declarations":[{"constant":false,"id":9251,"mutability":"mutable","name":"i","nameLocation":"14457:1:51","nodeType":"VariableDeclaration","scope":9268,"src":"14449:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9250,"name":"uint256","nodeType":"ElementaryTypeName","src":"14449:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9252,"nodeType":"VariableDeclarationStatement","src":"14449:9:51"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14470:3:51","subExpression":{"id":9256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"14470:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9258,"nodeType":"ExpressionStatement","src":"14470:3:51"},"nodeType":"ForStatement","src":"14444:73:51"},{"expression":{"id":9269,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9243,"src":"14534:3:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":9238,"id":9270,"nodeType":"Return","src":"14527:10:51"}]},"documentation":{"id":9228,"nodeType":"StructuredDocumentation","src":"14077:203:51","text":" @dev Resizes an array to a specified size.\n @param arr The original array to be resized.\n @param size The new size for the array.\n @return ret The resized array."},"id":9272,"implemented":true,"kind":"function","modifiers":[],"name":"_resize","nameLocation":"14295:7:51","nodeType":"FunctionDefinition","parameters":{"id":9234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9231,"mutability":"mutable","name":"arr","nameLocation":"14320:3:51","nodeType":"VariableDeclaration","scope":9272,"src":"14303:20:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9229,"name":"uint256","nodeType":"ElementaryTypeName","src":"14303:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9230,"nodeType":"ArrayTypeName","src":"14303:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9233,"mutability":"mutable","name":"size","nameLocation":"14333:4:51","nodeType":"VariableDeclaration","scope":9272,"src":"14325:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9232,"name":"uint256","nodeType":"ElementaryTypeName","src":"14325:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14302:36:51"},"returnParameters":{"id":9238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9237,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9272,"src":"14362:16:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9235,"name":"uint256","nodeType":"ElementaryTypeName","src":"14362:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9236,"nodeType":"ArrayTypeName","src":"14362:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14361:18:51"},"scope":9470,"src":"14286:259:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9307,"nodeType":"Block","src":"15280:230:51","statements":[{"assignments":[9281],"declarations":[{"constant":false,"id":9281,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"15299:9:51","nodeType":"VariableDeclaration","scope":9307,"src":"15291:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9280,"name":"uint256","nodeType":"ElementaryTypeName","src":"15291:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9285,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9282,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"15311:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15320:11:51","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"15311:20:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15311:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15291:42:51"},{"assignments":[9287],"declarations":[{"constant":false,"id":9287,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"15352:8:51","nodeType":"VariableDeclaration","scope":9307,"src":"15344:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9286,"name":"uint256","nodeType":"ElementaryTypeName","src":"15344:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9291,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9288,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"15363:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15372:10:51","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":4863,"src":"15363:19:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15363:21:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15344:40:51"},{"assignments":[9293],"declarations":[{"constant":false,"id":9293,"mutability":"mutable","name":"amountInWithFee","nameLocation":"15403:15:51","nodeType":"VariableDeclaration","scope":9307,"src":"15395:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9292,"name":"uint256","nodeType":"ElementaryTypeName","src":"15395:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9304,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9294,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9275,"src":"15422:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9295,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9281,"src":"15433:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"id":9296,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9287,"src":"15446:8:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9297,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15445:10:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15433:22:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15432:24:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15422:34:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9301,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15421:36:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9302,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9281,"src":"15460:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15421:48:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15395:74:51"},{"expression":{"id":9305,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9293,"src":"15487:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9279,"id":9306,"nodeType":"Return","src":"15480:22:51"}]},"documentation":{"id":9273,"nodeType":"StructuredDocumentation","src":"14553:636:51","text":" @dev Calculates the net amount after applying a fee.\n @param _amount The initial amount before the fee is applied.\n @return The net amount after the fee has been applied.\n The function uses the Basis Point (BPS) system for fee calculation.\n 1 BPS is 1/100 of a percent or 0.01% hence the BPS base is 10000.\n The function retrieves the BPS fee from the baluniRouter and calculates the net amount.\n The fee is subtracted from the BPS base and the result is multiplied with the initial amount.\n The product is then divided by the BPS base to get the net amount."},"id":9308,"implemented":true,"kind":"function","modifiers":[],"name":"calculateNetAmountAfterFee","nameLocation":"15204:26:51","nodeType":"FunctionDefinition","parameters":{"id":9276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9275,"mutability":"mutable","name":"_amount","nameLocation":"15239:7:51","nodeType":"VariableDeclaration","scope":9308,"src":"15231:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9274,"name":"uint256","nodeType":"ElementaryTypeName","src":"15231:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15230:17:51"},"returnParameters":{"id":9279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9308,"src":"15271:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9277,"name":"uint256","nodeType":"ElementaryTypeName","src":"15271:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15270:9:51"},"scope":9470,"src":"15195:315:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9426,"nodeType":"Block","src":"15916:758:51","statements":[{"assignments":[9326],"declarations":[{"constant":false,"id":9326,"mutability":"mutable","name":"baseDecimal","nameLocation":"15933:11:51","nodeType":"VariableDeclaration","scope":9426,"src":"15927:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9325,"name":"uint8","nodeType":"ElementaryTypeName","src":"15927:5:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":9332,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":9328,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"15962:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9327,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"15947:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":9329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15947:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":9330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15973:8:51","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"15947:34:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":9331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15947:36:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"15927:56:51"},{"assignments":[9334],"declarations":[{"constant":false,"id":9334,"mutability":"mutable","name":"totVal","nameLocation":"16002:6:51","nodeType":"VariableDeclaration","scope":9426,"src":"15994:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9333,"name":"uint256","nodeType":"ElementaryTypeName","src":"15994:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9336,"initialValue":{"hexValue":"30","id":9335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16011:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15994:18:51"},{"assignments":[9339],"declarations":[{"constant":false,"id":9339,"mutability":"mutable","name":"baluniOracle","nameLocation":"16039:12:51","nodeType":"VariableDeclaration","scope":9426,"src":"16023:28:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"},"typeName":{"id":9338,"nodeType":"UserDefinedTypeName","pathNode":{"id":9337,"name":"IBaluniV1Oracle","nameLocations":["16023:15:51"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"16023:15:51"},"referencedDeclaration":4240,"src":"16023:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"visibility":"internal"}],"id":9345,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9341,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"16070:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16079:15:51","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"16070:24:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16070:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9340,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"16054:15:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$4240_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":9344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:43:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"nodeType":"VariableDeclarationStatement","src":"16023:74:51"},{"assignments":[9350],"declarations":[{"constant":false,"id":9350,"mutability":"mutable","name":"valuations","nameLocation":"16125:10:51","nodeType":"VariableDeclaration","scope":9426,"src":"16108:27:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9348,"name":"uint256","nodeType":"ElementaryTypeName","src":"16108:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9349,"nodeType":"ArrayTypeName","src":"16108:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":9357,"initialValue":{"arguments":[{"expression":{"id":9354,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"16152:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16159:6:51","memberName":"length","nodeType":"MemberAccess","src":"16152:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16138:13:51","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":9351,"name":"uint256","nodeType":"ElementaryTypeName","src":"16142:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9352,"nodeType":"ArrayTypeName","src":"16142:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":9356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16138:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16108:58:51"},{"body":{"id":9420,"nodeType":"Block","src":"16223:404:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9369,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"16242:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9371,"indexExpression":{"id":9370,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16249:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16242:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9372,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"16255:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16242:22:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9418,"nodeType":"Block","src":"16418:198:51","statements":[{"assignments":[9396],"declarations":[{"constant":false,"id":9396,"mutability":"mutable","name":"valuation","nameLocation":"16445:9:51","nodeType":"VariableDeclaration","scope":9418,"src":"16437:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9395,"name":"uint256","nodeType":"ElementaryTypeName","src":"16437:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9407,"initialValue":{"arguments":[{"baseExpression":{"id":9399,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"16484:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9401,"indexExpression":{"id":9400,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16491:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16484:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9402,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"16495:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":9403,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"16506:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9405,"indexExpression":{"id":9404,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16515:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16506:11:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9397,"name":"baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9339,"src":"16457:12:51","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":9398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16470:13:51","memberName":"convertScaled","nodeType":"MemberAccess","referencedDeclaration":4239,"src":"16457:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":9406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16457:61:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16437:81:51"},{"expression":{"id":9410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9408,"name":"totVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9334,"src":"16537:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":9409,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9396,"src":"16547:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16537:19:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9411,"nodeType":"ExpressionStatement","src":"16537:19:51"},{"expression":{"id":9416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9412,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"16575:10:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9414,"indexExpression":{"id":9413,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16586:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16575:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9415,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9396,"src":"16591:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16575:25:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9417,"nodeType":"ExpressionStatement","src":"16575:25:51"}]},"id":9419,"nodeType":"IfStatement","src":"16238:378:51","trueBody":{"id":9394,"nodeType":"Block","src":"16266:146:51","statements":[{"expression":{"id":9381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9374,"name":"totVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9334,"src":"16285:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"baseExpression":{"id":9376,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"16303:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9378,"indexExpression":{"id":9377,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16312:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16303:11:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9379,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9326,"src":"16316:11:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9375,"name":"scaleUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9448,"src":"16295:7:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16295:33:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16285:43:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9382,"nodeType":"ExpressionStatement","src":"16285:43:51"},{"expression":{"id":9392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9383,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"16347:10:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9385,"indexExpression":{"id":9384,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16358:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16347:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":9387,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"16371:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9389,"indexExpression":{"id":9388,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16380:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16371:11:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9390,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9326,"src":"16384:11:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9386,"name":"scaleUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9448,"src":"16363:7:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16363:33:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16347:49:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9393,"nodeType":"ExpressionStatement","src":"16347:49:51"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9362,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16199:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9363,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"16203:6:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16210:6:51","memberName":"length","nodeType":"MemberAccess","src":"16203:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16199:17:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9421,"initializationExpression":{"assignments":[9359],"declarations":[{"constant":false,"id":9359,"mutability":"mutable","name":"i","nameLocation":"16192:1:51","nodeType":"VariableDeclaration","scope":9421,"src":"16184:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9358,"name":"uint256","nodeType":"ElementaryTypeName","src":"16184:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9361,"initialValue":{"hexValue":"30","id":9360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16196:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16184:13:51"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16218:3:51","subExpression":{"id":9366,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"16218:1:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9368,"nodeType":"ExpressionStatement","src":"16218:3:51"},"nodeType":"ForStatement","src":"16179:448:51"},{"expression":{"components":[{"id":9422,"name":"totVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9334,"src":"16647:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9423,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"16655:10:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":9424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16646:20:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"functionReturnParameters":9324,"id":9425,"nodeType":"Return","src":"16639:27:51"}]},"documentation":{"id":9309,"nodeType":"StructuredDocumentation","src":"15518:203:51","text":" @dev Calculates the total value of the assets held by the caller.\n @param assets An array of asset addresses.\n @return The total value of the assets held by the caller."},"id":9427,"implemented":true,"kind":"function","modifiers":[],"name":"calculateTotalValueScaled","nameLocation":"15736:25:51","nodeType":"FunctionDefinition","parameters":{"id":9318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9312,"mutability":"mutable","name":"balances","nameLocation":"15789:8:51","nodeType":"VariableDeclaration","scope":9427,"src":"15772:25:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9310,"name":"uint256","nodeType":"ElementaryTypeName","src":"15772:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9311,"nodeType":"ArrayTypeName","src":"15772:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9315,"mutability":"mutable","name":"assets","nameLocation":"15825:6:51","nodeType":"VariableDeclaration","scope":9427,"src":"15808:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9313,"name":"address","nodeType":"ElementaryTypeName","src":"15808:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9314,"nodeType":"ArrayTypeName","src":"15808:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":9317,"mutability":"mutable","name":"baseAsset","nameLocation":"15850:9:51","nodeType":"VariableDeclaration","scope":9427,"src":"15842:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9316,"name":"address","nodeType":"ElementaryTypeName","src":"15842:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15761:105:51"},"returnParameters":{"id":9324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9427,"src":"15889:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9319,"name":"uint256","nodeType":"ElementaryTypeName","src":"15889:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9427,"src":"15898:16:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9321,"name":"uint256","nodeType":"ElementaryTypeName","src":"15898:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9322,"nodeType":"ArrayTypeName","src":"15898:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"15888:27:51"},"scope":9470,"src":"15727:947:51","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":9447,"nodeType":"Block","src":"17005:58:51","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9437,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9430,"src":"17023:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17033:2:51","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":9439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17040:2:51","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9440,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"17045:8:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17040:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9442,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17039:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17033:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9444,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17032:23:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17023:32:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9436,"id":9446,"nodeType":"Return","src":"17016:39:51"}]},"documentation":{"id":9428,"nodeType":"StructuredDocumentation","src":"16682:234:51","text":" @dev Scales up the given amount by subtracting the decimals.\n @param amount The amount to be scaled up.\n @param decimals The number of decimals to be subtracted.\n @return The scaled up amount."},"id":9448,"implemented":true,"kind":"function","modifiers":[],"name":"scaleUp","nameLocation":"16931:7:51","nodeType":"FunctionDefinition","parameters":{"id":9433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9430,"mutability":"mutable","name":"amount","nameLocation":"16947:6:51","nodeType":"VariableDeclaration","scope":9448,"src":"16939:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9429,"name":"uint256","nodeType":"ElementaryTypeName","src":"16939:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9432,"mutability":"mutable","name":"decimals","nameLocation":"16963:8:51","nodeType":"VariableDeclaration","scope":9448,"src":"16955:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9431,"name":"uint256","nodeType":"ElementaryTypeName","src":"16955:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16938:34:51"},"returnParameters":{"id":9436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9448,"src":"16996:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9434,"name":"uint256","nodeType":"ElementaryTypeName","src":"16996:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16995:9:51"},"scope":9470,"src":"16922:141:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9468,"nodeType":"Block","src":"17438:58:51","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9458,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9451,"src":"17456:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17466:2:51","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":9460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17473:2:51","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9461,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9453,"src":"17478:8:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17473:13:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9463,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17472:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17466:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9465,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17465:23:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17456:32:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9457,"id":9467,"nodeType":"Return","src":"17449:39:51"}]},"documentation":{"id":9449,"nodeType":"StructuredDocumentation","src":"17071:276:51","text":" @dev Scales down the given amount by dividing it by the difference between 10^18 and the decimals.\n @param amount The amount to be scaled down.\n @param decimals The number of decimals to be subtracted.\n @return The scaled down amount."},"id":9469,"implemented":true,"kind":"function","modifiers":[],"name":"scaleDown","nameLocation":"17362:9:51","nodeType":"FunctionDefinition","parameters":{"id":9454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9451,"mutability":"mutable","name":"amount","nameLocation":"17380:6:51","nodeType":"VariableDeclaration","scope":9469,"src":"17372:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9450,"name":"uint256","nodeType":"ElementaryTypeName","src":"17372:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9453,"mutability":"mutable","name":"decimals","nameLocation":"17396:8:51","nodeType":"VariableDeclaration","scope":9469,"src":"17388:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9452,"name":"uint256","nodeType":"ElementaryTypeName","src":"17388:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17371:34:51"},"returnParameters":{"id":9457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9469,"src":"17429:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9455,"name":"uint256","nodeType":"ElementaryTypeName","src":"17429:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17428:9:51"},"scope":9470,"src":"17353:143:51","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9471,"src":"2025:15474:51","usedErrors":[30,35,211,214,475,480,1780,1793,2690,2693],"usedEvents":[41,219,1759]}],"src":"40:17461:51"},"id":51},"contracts/managers/BaluniV1Swapper.sol":{"ast":{"absolutePath":"contracts/managers/BaluniV1Swapper.sol","exportedSymbols":{"BaluniV1Swapper":[10056],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1PoolPeriphery":[4557],"IBaluniV1PoolRegistry":[4590],"IBaluniV1Registry":[4909],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"IQuoter":[3666],"ISwapRouter":[3766],"IUniswapV3Factory":[3153],"IUniswapV3SwapCallback":[3189],"Initializable":[448],"OwnableUpgradeable":[194],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":10057,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":9472,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:52"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":9473,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":1248,"src":"1468:78:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":9474,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":195,"src":"1548:75:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":9475,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":1599,"src":"1625:82:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":9476,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":631,"src":"1709:77:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":9477,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":3767,"src":"1788:68:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","file":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","id":9478,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":3154,"src":"1858:69:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol","id":9479,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":3667,"src":"1929:64:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":9480,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":449,"src":"1995:75:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1PoolPeriphery.sol","file":"../interfaces/IBaluniV1PoolPeriphery.sol","id":9481,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":4558,"src":"2074:50:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1PoolRegistry.sol","file":"../interfaces/IBaluniV1PoolRegistry.sol","id":9482,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":4591,"src":"2126:49:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":9483,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10057,"sourceUnit":4910,"src":"2177:45:52","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9484,"name":"Initializable","nameLocations":["2254:13:52"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"2254:13:52"},"id":9485,"nodeType":"InheritanceSpecifier","src":"2254:13:52"},{"baseName":{"id":9486,"name":"OwnableUpgradeable","nameLocations":["2269:18:52"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"2269:18:52"},"id":9487,"nodeType":"InheritanceSpecifier","src":"2269:18:52"},{"baseName":{"id":9488,"name":"UUPSUpgradeable","nameLocations":["2289:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"2289:15:52"},"id":9489,"nodeType":"InheritanceSpecifier","src":"2289:15:52"}],"canonicalName":"BaluniV1Swapper","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10056,"linearizedBaseContracts":[10056,630,1608,194,1293,448],"name":"BaluniV1Swapper","nameLocation":"2235:15:52","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"7b103999","id":9492,"mutability":"mutable","name":"registry","nameLocation":"2337:8:52","nodeType":"VariableDeclaration","scope":10056,"src":"2312:33:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":9491,"nodeType":"UserDefinedTypeName","pathNode":{"id":9490,"name":"IBaluniV1Registry","nameLocations":["2312:17:52"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"2312:17:52"},"referencedDeclaration":4909,"src":"2312:17:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"body":{"id":9513,"nodeType":"Block","src":"2412:130:52","statements":[{"expression":{"arguments":[{"expression":{"id":9500,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2438:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2442:6:52","memberName":"sender","nodeType":"MemberAccess","src":"2438:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9499,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2423:14:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2423:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9503,"nodeType":"ExpressionStatement","src":"2423:26:52"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9504,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2460:22:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2460:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9506,"nodeType":"ExpressionStatement","src":"2460:24:52"},{"expression":{"id":9511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9507,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"2495:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9509,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9494,"src":"2524:9:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9508,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2506:17:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":9510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2506:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2495:39:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9512,"nodeType":"ExpressionStatement","src":"2495:39:52"}]},"functionSelector":"c4d66de8","id":9514,"implemented":true,"kind":"function","modifiers":[{"id":9497,"kind":"modifierInvocation","modifierName":{"id":9496,"name":"initializer","nameLocations":["2400:11:52"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2400:11:52"},"nodeType":"ModifierInvocation","src":"2400:11:52"}],"name":"initialize","nameLocation":"2363:10:52","nodeType":"FunctionDefinition","parameters":{"id":9495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9494,"mutability":"mutable","name":"_registry","nameLocation":"2382:9:52","nodeType":"VariableDeclaration","scope":9514,"src":"2374:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9493,"name":"address","nodeType":"ElementaryTypeName","src":"2374:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2373:19:52"},"returnParameters":{"id":9498,"nodeType":"ParameterList","parameters":[],"src":"2412:0:52"},"scope":10056,"src":"2354:188:52","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9538,"nodeType":"Block","src":"2637:130:52","statements":[{"expression":{"arguments":[{"expression":{"id":9525,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2663:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2667:6:52","memberName":"sender","nodeType":"MemberAccess","src":"2663:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9524,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2648:14:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2648:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9528,"nodeType":"ExpressionStatement","src":"2648:26:52"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9529,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2685:22:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2685:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9531,"nodeType":"ExpressionStatement","src":"2685:24:52"},{"expression":{"id":9536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9532,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"2720:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9534,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9516,"src":"2749:9:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9533,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2731:17:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":9535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2731:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2720:39:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9537,"nodeType":"ExpressionStatement","src":"2720:39:52"}]},"functionSelector":"8f2248bc","id":9539,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9521,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9518,"src":"2628:7:52","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":9522,"kind":"modifierInvocation","modifierName":{"id":9520,"name":"reinitializer","nameLocations":["2614:13:52"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2614:13:52"},"nodeType":"ModifierInvocation","src":"2614:22:52"}],"name":"reinitialize","nameLocation":"2559:12:52","nodeType":"FunctionDefinition","parameters":{"id":9519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9516,"mutability":"mutable","name":"_registry","nameLocation":"2580:9:52","nodeType":"VariableDeclaration","scope":9539,"src":"2572:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9515,"name":"address","nodeType":"ElementaryTypeName","src":"2572:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9518,"mutability":"mutable","name":"version","nameLocation":"2598:7:52","nodeType":"VariableDeclaration","scope":9539,"src":"2591:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":9517,"name":"uint64","nodeType":"ElementaryTypeName","src":"2591:6:52","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2571:35:52"},"returnParameters":{"id":9523,"nodeType":"ParameterList","parameters":[],"src":"2637:0:52"},"scope":10056,"src":"2550:217:52","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":9547,"nodeType":"Block","src":"2857:2:52","statements":[]},"id":9548,"implemented":true,"kind":"function","modifiers":[{"id":9545,"kind":"modifierInvocation","modifierName":{"id":9544,"name":"onlyOwner","nameLocations":["2847:9:52"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2847:9:52"},"nodeType":"ModifierInvocation","src":"2847:9:52"}],"name":"_authorizeUpgrade","nameLocation":"2784:17:52","nodeType":"FunctionDefinition","overrides":{"id":9543,"nodeType":"OverrideSpecifier","overrides":[],"src":"2838:8:52"},"parameters":{"id":9542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9541,"mutability":"mutable","name":"newImplementation","nameLocation":"2810:17:52","nodeType":"VariableDeclaration","scope":9548,"src":"2802:25:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9540,"name":"address","nodeType":"ElementaryTypeName","src":"2802:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2801:27:52"},"returnParameters":{"id":9546,"nodeType":"ParameterList","parameters":[],"src":"2857:0:52"},"scope":10056,"src":"2775:84:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9634,"nodeType":"Block","src":"3955:504:52","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9563,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3974:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3978:6:52","memberName":"sender","nodeType":"MemberAccess","src":"3974:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":9567,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3996:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}],"id":9566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3988:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9565,"name":"address","nodeType":"ElementaryTypeName","src":"3988:7:52","typeDescriptions":{}}},"id":9568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3988:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3974:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57726f6e672073656e646572","id":9570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4003:14:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_a1c5b09ace4f934886aa0d095bd2558e481071e5ba1b5ae5575a30022a93dc30","typeString":"literal_string \"Wrong sender\""},"value":"Wrong sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a1c5b09ace4f934886aa0d095bd2558e481071e5ba1b5ae5575a30022a93dc30","typeString":"literal_string \"Wrong sender\""}],"id":9562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3966:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3966:52:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9572,"nodeType":"ExpressionStatement","src":"3966:52:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9574,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"4037:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4046:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4037:10:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e742069732030","id":9577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4049:13:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_bd1df39dd36f1e6eb64f323d42a553c2ee107dd1993af0ddd848a4eaeb8b679f","typeString":"literal_string \"Amount is 0\""},"value":"Amount is 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bd1df39dd36f1e6eb64f323d42a553c2ee107dd1993af0ddd848a4eaeb8b679f","typeString":"literal_string \"Amount is 0\""}],"id":9573,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4029:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:34:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9579,"nodeType":"ExpressionStatement","src":"4029:34:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9585,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4107:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4111:6:52","memberName":"sender","nodeType":"MemberAccess","src":"4107:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9582,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"4089:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9581,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4082:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":9583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4082:14:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":9584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4097:9:52","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"4082:24:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4082:36:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9588,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"4122:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4082:46:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742042616c616e6365","id":9590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4130:22:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82","typeString":"literal_string \"Insufficient Balance\""},"value":"Insufficient Balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82","typeString":"literal_string \"Insufficient Balance\""}],"id":9580,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4074:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4074:79:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9592,"nodeType":"ExpressionStatement","src":"4074:79:52"},{"assignments":[9594],"declarations":[{"constant":false,"id":9594,"mutability":"mutable","name":"allowance","nameLocation":"4172:9:52","nodeType":"VariableDeclaration","scope":9634,"src":"4164:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9593,"name":"uint256","nodeType":"ElementaryTypeName","src":"4164:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9606,"initialValue":{"arguments":[{"expression":{"id":9599,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4209:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4213:6:52","memberName":"sender","nodeType":"MemberAccess","src":"4209:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9603,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4229:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}],"id":9602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4221:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9601,"name":"address","nodeType":"ElementaryTypeName","src":"4221:7:52","typeDescriptions":{}}},"id":9604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4221:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9596,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"4191:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9595,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4184:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":9597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4184:14:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":9598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4199:9:52","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"4184:24:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4184:51:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4164:71:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9608,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9594,"src":"4254:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9609,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"4267:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4254:19:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e69537761707065723a20496e73756666696369656e7420416c6c6f77616e6365","id":9611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4275:39:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e759cc98968ace3978596fc8205d76d2e0dcb1069b8ed202b03d188eb59c779","typeString":"literal_string \"BaluniSwapper: Insufficient Allowance\""},"value":"BaluniSwapper: Insufficient Allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3e759cc98968ace3978596fc8205d76d2e0dcb1069b8ed202b03d188eb59c779","typeString":"literal_string \"BaluniSwapper: Insufficient Allowance\""}],"id":9607,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4246:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4246:69:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9613,"nodeType":"ExpressionStatement","src":"4246:69:52"},{"expression":{"arguments":[{"expression":{"id":9618,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4354:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4358:6:52","memberName":"sender","nodeType":"MemberAccess","src":"4354:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9622,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4374:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}],"id":9621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4366:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9620,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:52","typeDescriptions":{}}},"id":9623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4366:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9624,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"4381:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":9615,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"4333:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9614,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4326:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":9616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4326:14:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":9617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4341:12:52","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"4326:27:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":9625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4326:62:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9626,"nodeType":"ExpressionStatement","src":"4326:62:52"},{"expression":{"arguments":[{"id":9628,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"4418:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9629,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9553,"src":"4426:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9630,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"4434:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9631,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9557,"src":"4442:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9627,"name":"_singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9831,"src":"4406:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) returns (uint256)"}},"id":9632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4406:45:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9561,"id":9633,"nodeType":"Return","src":"4399:52:52"}]},"documentation":{"id":9549,"nodeType":"StructuredDocumentation","src":"2867:916:52","text":" @dev Executes a single swap between two tokens using Uniswap.\n @param token0 The address of the token to be swapped.\n @param token1 The address of the token to be received.\n @param amount The amount of token0 to be swapped.\n @param receiver The address that will receive the swapped tokens.\n @return amountOut The amount of token1 received from the swap.\n The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0.\n Also, the caller must have approved this contract to spend the amount of token0.\n The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap.\n The swapped tokens are sent to the receiver's address.\n The function returns the amount of token1 received from the swap."},"functionSelector":"2d6bc8ea","id":9635,"implemented":true,"kind":"function","modifiers":[],"name":"singleSwap","nameLocation":"3798:10:52","nodeType":"FunctionDefinition","parameters":{"id":9558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9551,"mutability":"mutable","name":"token0","nameLocation":"3827:6:52","nodeType":"VariableDeclaration","scope":9635,"src":"3819:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9550,"name":"address","nodeType":"ElementaryTypeName","src":"3819:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9553,"mutability":"mutable","name":"token1","nameLocation":"3852:6:52","nodeType":"VariableDeclaration","scope":9635,"src":"3844:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9552,"name":"address","nodeType":"ElementaryTypeName","src":"3844:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9555,"mutability":"mutable","name":"amount","nameLocation":"3877:6:52","nodeType":"VariableDeclaration","scope":9635,"src":"3869:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9554,"name":"uint256","nodeType":"ElementaryTypeName","src":"3869:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9557,"mutability":"mutable","name":"receiver","nameLocation":"3902:8:52","nodeType":"VariableDeclaration","scope":9635,"src":"3894:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9556,"name":"address","nodeType":"ElementaryTypeName","src":"3894:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3808:109:52"},"returnParameters":{"id":9561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9560,"mutability":"mutable","name":"amountOut","nameLocation":"3944:9:52","nodeType":"VariableDeclaration","scope":9635,"src":"3936:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9559,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3935:19:52"},"scope":10056,"src":"3789:670:52","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9724,"nodeType":"Block","src":"5678:514:52","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9652,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5697:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5701:6:52","memberName":"sender","nodeType":"MemberAccess","src":"5697:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":9656,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5719:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}],"id":9655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5711:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9654,"name":"address","nodeType":"ElementaryTypeName","src":"5711:7:52","typeDescriptions":{}}},"id":9657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5711:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5697:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57726f6e672073656e646572","id":9659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5726:14:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_a1c5b09ace4f934886aa0d095bd2558e481071e5ba1b5ae5575a30022a93dc30","typeString":"literal_string \"Wrong sender\""},"value":"Wrong sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a1c5b09ace4f934886aa0d095bd2558e481071e5ba1b5ae5575a30022a93dc30","typeString":"literal_string \"Wrong sender\""}],"id":9651,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5689:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5689:52:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9661,"nodeType":"ExpressionStatement","src":"5689:52:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9663,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9644,"src":"5760:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5769:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5760:10:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e742069732030","id":9666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5772:13:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_bd1df39dd36f1e6eb64f323d42a553c2ee107dd1993af0ddd848a4eaeb8b679f","typeString":"literal_string \"Amount is 0\""},"value":"Amount is 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bd1df39dd36f1e6eb64f323d42a553c2ee107dd1993af0ddd848a4eaeb8b679f","typeString":"literal_string \"Amount is 0\""}],"id":9662,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5752:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5752:34:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9668,"nodeType":"ExpressionStatement","src":"5752:34:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9674,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5830:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5834:6:52","memberName":"sender","nodeType":"MemberAccess","src":"5830:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9671,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9638,"src":"5812:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9670,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5805:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":9672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5805:14:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":9673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5820:9:52","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"5805:24:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5805:36:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9677,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9644,"src":"5845:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5805:46:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742042616c616e6365","id":9679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5853:22:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82","typeString":"literal_string \"Insufficient Balance\""},"value":"Insufficient Balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82","typeString":"literal_string \"Insufficient Balance\""}],"id":9669,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5797:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5797:79:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9681,"nodeType":"ExpressionStatement","src":"5797:79:52"},{"assignments":[9683],"declarations":[{"constant":false,"id":9683,"mutability":"mutable","name":"allowance","nameLocation":"5895:9:52","nodeType":"VariableDeclaration","scope":9724,"src":"5887:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9682,"name":"uint256","nodeType":"ElementaryTypeName","src":"5887:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9695,"initialValue":{"arguments":[{"expression":{"id":9688,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5932:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5936:6:52","memberName":"sender","nodeType":"MemberAccess","src":"5932:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9692,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5952:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}],"id":9691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5944:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9690,"name":"address","nodeType":"ElementaryTypeName","src":"5944:7:52","typeDescriptions":{}}},"id":9693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5944:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9685,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9638,"src":"5914:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9684,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5907:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":9686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5907:14:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":9687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5922:9:52","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"5907:24:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":9694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5907:51:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5887:71:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9697,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9683,"src":"5977:9:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9698,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9644,"src":"5990:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5977:19:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e69537761707065723a20496e73756666696369656e7420416c6c6f77616e6365","id":9700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5998:39:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e759cc98968ace3978596fc8205d76d2e0dcb1069b8ed202b03d188eb59c779","typeString":"literal_string \"BaluniSwapper: Insufficient Allowance\""},"value":"BaluniSwapper: Insufficient Allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3e759cc98968ace3978596fc8205d76d2e0dcb1069b8ed202b03d188eb59c779","typeString":"literal_string \"BaluniSwapper: Insufficient Allowance\""}],"id":9696,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5969:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5969:69:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9702,"nodeType":"ExpressionStatement","src":"5969:69:52"},{"expression":{"arguments":[{"expression":{"id":9707,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6077:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6081:6:52","memberName":"sender","nodeType":"MemberAccess","src":"6077:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9711,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6097:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}],"id":9710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6089:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9709,"name":"address","nodeType":"ElementaryTypeName","src":"6089:7:52","typeDescriptions":{}}},"id":9712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6089:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9713,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9644,"src":"6104:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":9704,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9638,"src":"6056:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9703,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6049:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":9705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6049:14:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":9706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6064:12:52","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"6049:27:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":9714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6049:62:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9715,"nodeType":"ExpressionStatement","src":"6049:62:52"},{"expression":{"arguments":[{"id":9717,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9638,"src":"6143:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9718,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9640,"src":"6151:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9719,"name":"token2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"6159:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9720,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9644,"src":"6167:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9721,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9646,"src":"6175:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9716,"name":"_multiHopSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9868,"src":"6129:13:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,address) returns (uint256)"}},"id":9722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6129:55:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9650,"id":9723,"nodeType":"Return","src":"6122:62:52"}]},"documentation":{"id":9636,"nodeType":"StructuredDocumentation","src":"4467:1012:52","text":" @dev Executes a multi-hop swap between three tokens using Uniswap.\n @param token0 The address of the token to be swapped.\n @param token1 The address of the intermediate token to be used for the swap.\n @param token2 The address of the final token to be received.\n @param amount The amount of token0 to be swapped.\n @param receiver The address that will receive the swapped tokens.\n @return amountOut The amount of token2 received from the swap.\n The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0.\n Also, the caller must have approved this contract to spend the amount of token0.\n The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap.\n The swapped tokens are sent to the receiver's address.\n The function returns the amount of token2 received from the swap."},"functionSelector":"5efaaebb","id":9725,"implemented":true,"kind":"function","modifiers":[],"name":"multiHopSwap","nameLocation":"5494:12:52","nodeType":"FunctionDefinition","parameters":{"id":9647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9638,"mutability":"mutable","name":"token0","nameLocation":"5525:6:52","nodeType":"VariableDeclaration","scope":9725,"src":"5517:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9637,"name":"address","nodeType":"ElementaryTypeName","src":"5517:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9640,"mutability":"mutable","name":"token1","nameLocation":"5550:6:52","nodeType":"VariableDeclaration","scope":9725,"src":"5542:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9639,"name":"address","nodeType":"ElementaryTypeName","src":"5542:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9642,"mutability":"mutable","name":"token2","nameLocation":"5575:6:52","nodeType":"VariableDeclaration","scope":9725,"src":"5567:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9641,"name":"address","nodeType":"ElementaryTypeName","src":"5567:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9644,"mutability":"mutable","name":"amount","nameLocation":"5600:6:52","nodeType":"VariableDeclaration","scope":9725,"src":"5592:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9643,"name":"uint256","nodeType":"ElementaryTypeName","src":"5592:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9646,"mutability":"mutable","name":"receiver","nameLocation":"5625:8:52","nodeType":"VariableDeclaration","scope":9725,"src":"5617:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9645,"name":"address","nodeType":"ElementaryTypeName","src":"5617:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5506:134:52"},"returnParameters":{"id":9650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9649,"mutability":"mutable","name":"amountOut","nameLocation":"5667:9:52","nodeType":"VariableDeclaration","scope":9725,"src":"5659:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9648,"name":"uint256","nodeType":"ElementaryTypeName","src":"5659:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5658:19:52"},"scope":10056,"src":"5485:707:52","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9830,"nodeType":"Block","src":"6743:1032:52","statements":[{"assignments":[9740],"declarations":[{"constant":false,"id":9740,"mutability":"mutable","name":"uniswapRouter","nameLocation":"6762:13:52","nodeType":"VariableDeclaration","scope":9830,"src":"6754:21:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9739,"name":"address","nodeType":"ElementaryTypeName","src":"6754:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9744,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9741,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"6778:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6787:16:52","memberName":"getUniswapRouter","nodeType":"MemberAccess","referencedDeclaration":4798,"src":"6778:25:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6778:27:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6754:51:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9746,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9740,"src":"6824:13:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6849:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6841:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9747,"name":"address","nodeType":"ElementaryTypeName","src":"6841:7:52","typeDescriptions":{}}},"id":9750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6841:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6824:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e69537761707065723a2041646472657373206e6f7420736574","id":9752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6853:32:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_366ad2f8ce1116696b9a39a6ccd9666bbb3d9b0dcfcd28cb08ca11287b5c6cf0","typeString":"literal_string \"BaluniSwapper: Address not set\""},"value":"BaluniSwapper: Address not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_366ad2f8ce1116696b9a39a6ccd9666bbb3d9b0dcfcd28cb08ca11287b5c6cf0","typeString":"literal_string \"BaluniSwapper: Address not set\""}],"id":9745,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6816:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6816:70:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9754,"nodeType":"ExpressionStatement","src":"6816:70:52"},{"expression":{"arguments":[{"id":9756,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"6913:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9757,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9740,"src":"6921:13:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9758,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9732,"src":"6936:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9755,"name":"_secureApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"6897:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6897:46:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9760,"nodeType":"ExpressionStatement","src":"6897:46:52"},{"assignments":[9762],"declarations":[{"constant":false,"id":9762,"mutability":"mutable","name":"quoter","nameLocation":"6964:6:52","nodeType":"VariableDeclaration","scope":9830,"src":"6956:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9761,"name":"address","nodeType":"ElementaryTypeName","src":"6956:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9766,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9763,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"6973:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6982:16:52","memberName":"getUniswapQuoter","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"6973:25:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6973:27:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6956:44:52"},{"assignments":[9768],"declarations":[{"constant":false,"id":9768,"mutability":"mutable","name":"amountOutMin","nameLocation":"7019:12:52","nodeType":"VariableDeclaration","scope":9830,"src":"7011:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9767,"name":"uint256","nodeType":"ElementaryTypeName","src":"7011:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9779,"initialValue":{"arguments":[{"id":9773,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"7072:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9774,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"7080:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"33303030","id":9775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7088:4:52","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"},{"id":9776,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9732,"src":"7094:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7102:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":9770,"name":"quoter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9762,"src":"7042:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9769,"name":"IQuoter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"7034:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IQuoter_$3666_$","typeString":"type(contract IQuoter)"}},"id":9771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7034:15:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IQuoter_$3666","typeString":"contract IQuoter"}},"id":9772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7050:21:52","memberName":"quoteExactInputSingle","nodeType":"MemberAccess","referencedDeclaration":3639,"src":"7034:37:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint24_$_t_uint256_$_t_uint160_$returns$_t_uint256_$","typeString":"function (address,address,uint24,uint256,uint160) external returns (uint256)"}},"id":9778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7034:70:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7011:93:52"},{"expression":{"id":9789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9780,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"7115:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9781,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"7130:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9782,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"7146:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9783,"name":"slippagePct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"7161:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7146:26:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9785,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7145:28:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":9786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7176:5:52","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"7145:36:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7130:51:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:66:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9790,"nodeType":"ExpressionStatement","src":"7115:66:52"},{"assignments":[9795],"declarations":[{"constant":false,"id":9795,"mutability":"mutable","name":"params","nameLocation":"7236:6:52","nodeType":"VariableDeclaration","scope":9830,"src":"7194:48:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$3690_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":9794,"nodeType":"UserDefinedTypeName","pathNode":{"id":9793,"name":"ISwapRouter.ExactInputSingleParams","nameLocations":["7194:11:52","7206:22:52"],"nodeType":"IdentifierPath","referencedDeclaration":3690,"src":"7194:34:52"},"referencedDeclaration":3690,"src":"7194:34:52","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$3690_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"id":9811,"initialValue":{"arguments":[{"id":9798,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"7304:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9799,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"7335:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"33303030","id":9800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7361:4:52","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"},{"arguments":[{"id":9803,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"7399:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7391:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9801,"name":"address","nodeType":"ElementaryTypeName","src":"7391:7:52","typeDescriptions":{}}},"id":9804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7391:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9805,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7433:5:52","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7439:9:52","memberName":"timestamp","nodeType":"MemberAccess","src":"7433:15:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9807,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9732,"src":"7473:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9808,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"7512:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7558:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":9796,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"7245:11:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$3766_$","typeString":"type(contract ISwapRouter)"}},"id":9797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7257:22:52","memberName":"ExactInputSingleParams","nodeType":"MemberAccess","referencedDeclaration":3690,"src":"7245:34:52","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactInputSingleParams_$3690_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactInputSingleParams storage pointer)"}},"id":9810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7295:7:52","7325:8:52","7356:3:52","7380:9:52","7423:8:52","7463:8:52","7494:16:52","7539:17:52"],"names":["tokenIn","tokenOut","fee","recipient","deadline","amountIn","amountOutMinimum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"7245:326:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$3690_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}},"nodeType":"VariableDeclarationStatement","src":"7194:377:52"},{"assignments":[9813],"declarations":[{"constant":false,"id":9813,"mutability":"mutable","name":"amountReceived","nameLocation":"7590:14:52","nodeType":"VariableDeclaration","scope":9830,"src":"7582:22:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9812,"name":"uint256","nodeType":"ElementaryTypeName","src":"7582:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9820,"initialValue":{"arguments":[{"id":9818,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9795,"src":"7651:6:52","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$3690_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactInputSingleParams_$3690_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}],"expression":{"arguments":[{"id":9815,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9740,"src":"7619:13:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9814,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"7607:11:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$3766_$","typeString":"type(contract ISwapRouter)"}},"id":9816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7607:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$3766","typeString":"contract ISwapRouter"}},"id":9817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7634:16:52","memberName":"exactInputSingle","nodeType":"MemberAccess","referencedDeclaration":3699,"src":"7607:43:52","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactInputSingleParams_$3690_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)"}},"id":9819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7607:51:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7582:76:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9822,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9813,"src":"7677:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7694:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7677:18:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e69537761707065723a20416d6f756e742052656365697665642069732030","id":9825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7697:37:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_2601c1289f85cc52da697c8044dc03da4e3dc6d60e9ab8691ebe3fb6f68c0d70","typeString":"literal_string \"BaluniSwapper: Amount Received is 0\""},"value":"BaluniSwapper: Amount Received is 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2601c1289f85cc52da697c8044dc03da4e3dc6d60e9ab8691ebe3fb6f68c0d70","typeString":"literal_string \"BaluniSwapper: Amount Received is 0\""}],"id":9821,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7669:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7669:66:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9827,"nodeType":"ExpressionStatement","src":"7669:66:52"},{"expression":{"id":9828,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9813,"src":"7753:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9738,"id":9829,"nodeType":"Return","src":"7746:21:52"}]},"documentation":{"id":9726,"nodeType":"StructuredDocumentation","src":"6200:370:52","text":" @dev Executes a single swap on Uniswap.\n @param token0 The address of the input token.\n @param token1 The address of the output token.\n @param amount The amount of input token to be swapped.\n @param receiver The address that will receive the swapped tokens.\n @return amountOut The amount of output tokens received."},"id":9831,"implemented":true,"kind":"function","modifiers":[],"name":"_singleSwap","nameLocation":"6585:11:52","nodeType":"FunctionDefinition","parameters":{"id":9735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9728,"mutability":"mutable","name":"token0","nameLocation":"6615:6:52","nodeType":"VariableDeclaration","scope":9831,"src":"6607:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9727,"name":"address","nodeType":"ElementaryTypeName","src":"6607:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9730,"mutability":"mutable","name":"token1","nameLocation":"6640:6:52","nodeType":"VariableDeclaration","scope":9831,"src":"6632:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9729,"name":"address","nodeType":"ElementaryTypeName","src":"6632:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9732,"mutability":"mutable","name":"amount","nameLocation":"6665:6:52","nodeType":"VariableDeclaration","scope":9831,"src":"6657:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9731,"name":"uint256","nodeType":"ElementaryTypeName","src":"6657:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9734,"mutability":"mutable","name":"receiver","nameLocation":"6690:8:52","nodeType":"VariableDeclaration","scope":9831,"src":"6682:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9733,"name":"address","nodeType":"ElementaryTypeName","src":"6682:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6596:109:52"},"returnParameters":{"id":9738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9737,"mutability":"mutable","name":"amountOut","nameLocation":"6732:9:52","nodeType":"VariableDeclaration","scope":9831,"src":"6724:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9736,"name":"uint256","nodeType":"ElementaryTypeName","src":"6724:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6723:19:52"},"scope":10056,"src":"6576:1199:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9867,"nodeType":"Block","src":"8490:224:52","statements":[{"assignments":[9848],"declarations":[{"constant":false,"id":9848,"mutability":"mutable","name":"uniswapRouter","nameLocation":"8509:13:52","nodeType":"VariableDeclaration","scope":9867,"src":"8501:21:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9847,"name":"address","nodeType":"ElementaryTypeName","src":"8501:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9852,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9849,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"8525:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8534:16:52","memberName":"getUniswapRouter","nodeType":"MemberAccess","referencedDeclaration":4798,"src":"8525:25:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8525:27:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8501:51:52"},{"expression":{"arguments":[{"id":9854,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9834,"src":"8581:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9855,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9848,"src":"8589:13:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9856,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9840,"src":"8604:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9853,"name":"_secureApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"8565:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8565:52:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9858,"nodeType":"ExpressionStatement","src":"8565:52:52"},{"expression":{"arguments":[{"id":9860,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9834,"src":"8659:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9861,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"8667:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9862,"name":"token2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9838,"src":"8675:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9863,"name":"tokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9840,"src":"8683:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9864,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9842,"src":"8697:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9859,"name":"_multiHopSwapFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9989,"src":"8637:21:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,address) returns (uint256)"}},"id":9865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8637:69:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9846,"id":9866,"nodeType":"Return","src":"8630:76:52"}]},"documentation":{"id":9832,"nodeType":"StructuredDocumentation","src":"7783:501:52","text":" @dev Executes a multi-hop swap using the Uniswap router.\n @param token0 The address of the first token in the swap path.\n @param token1 The address of the second token in the swap path.\n @param token2 The address of the third token in the swap path.\n @param tokenBalance The amount of tokens to be swapped.\n @param receiver The address that will receive the swapped tokens.\n @return amountOut The amount of tokens received after the swap."},"id":9868,"implemented":true,"kind":"function","modifiers":[],"name":"_multiHopSwap","nameLocation":"8299:13:52","nodeType":"FunctionDefinition","parameters":{"id":9843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9834,"mutability":"mutable","name":"token0","nameLocation":"8331:6:52","nodeType":"VariableDeclaration","scope":9868,"src":"8323:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9833,"name":"address","nodeType":"ElementaryTypeName","src":"8323:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9836,"mutability":"mutable","name":"token1","nameLocation":"8356:6:52","nodeType":"VariableDeclaration","scope":9868,"src":"8348:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9835,"name":"address","nodeType":"ElementaryTypeName","src":"8348:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9838,"mutability":"mutable","name":"token2","nameLocation":"8381:6:52","nodeType":"VariableDeclaration","scope":9868,"src":"8373:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9837,"name":"address","nodeType":"ElementaryTypeName","src":"8373:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9840,"mutability":"mutable","name":"tokenBalance","nameLocation":"8406:12:52","nodeType":"VariableDeclaration","scope":9868,"src":"8398:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9839,"name":"uint256","nodeType":"ElementaryTypeName","src":"8398:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9842,"mutability":"mutable","name":"receiver","nameLocation":"8437:8:52","nodeType":"VariableDeclaration","scope":9868,"src":"8429:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9841,"name":"address","nodeType":"ElementaryTypeName","src":"8429:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8312:140:52"},"returnParameters":{"id":9846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9845,"mutability":"mutable","name":"amountOut","nameLocation":"8479:9:52","nodeType":"VariableDeclaration","scope":9868,"src":"8471:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9844,"name":"uint256","nodeType":"ElementaryTypeName","src":"8471:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8470:19:52"},"scope":10056,"src":"8290:424:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9988,"nodeType":"Block","src":"8924:978:52","statements":[{"assignments":[9884],"declarations":[{"constant":false,"id":9884,"mutability":"mutable","name":"uniswapRouter","nameLocation":"8943:13:52","nodeType":"VariableDeclaration","scope":9988,"src":"8935:21:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9883,"name":"address","nodeType":"ElementaryTypeName","src":"8935:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9888,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9885,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"8959:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8968:16:52","memberName":"getUniswapRouter","nodeType":"MemberAccess","referencedDeclaration":4798,"src":"8959:25:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8959:27:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8935:51:52"},{"expression":{"arguments":[{"id":9890,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9870,"src":"9013:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9891,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9884,"src":"9021:13:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9892,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9876,"src":"9036:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9889,"name":"_secureApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"8997:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8997:46:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9894,"nodeType":"ExpressionStatement","src":"8997:46:52"},{"assignments":[9896],"declarations":[{"constant":false,"id":9896,"mutability":"mutable","name":"quoter","nameLocation":"9064:6:52","nodeType":"VariableDeclaration","scope":9988,"src":"9056:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9895,"name":"address","nodeType":"ElementaryTypeName","src":"9056:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9900,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9897,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"9073:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":9898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9082:16:52","memberName":"getUniswapQuoter","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"9073:25:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":9899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9073:27:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9056:44:52"},{"assignments":[9902],"declarations":[{"constant":false,"id":9902,"mutability":"mutable","name":"path","nameLocation":"9124:4:52","nodeType":"VariableDeclaration","scope":9988,"src":"9111:17:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9901,"name":"bytes","nodeType":"ElementaryTypeName","src":"9111:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9917,"initialValue":{"arguments":[{"id":9905,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9870,"src":"9148:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"33303030","id":9908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9163:4:52","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"}],"id":9907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9156:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":9906,"name":"uint24","nodeType":"ElementaryTypeName","src":"9156:6:52","typeDescriptions":{}}},"id":9909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9156:12:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":9910,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9872,"src":"9170:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"33303030","id":9913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9185:4:52","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"}],"id":9912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9178:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":9911,"name":"uint24","nodeType":"ElementaryTypeName","src":"9178:6:52","typeDescriptions":{}}},"id":9914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9178:12:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":9915,"name":"token2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9874,"src":"9192:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9903,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9131:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9135:12:52","memberName":"encodePacked","nodeType":"MemberAccess","src":"9131:16:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9131:68:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"9111:88:52"},{"assignments":[9919],"declarations":[{"constant":false,"id":9919,"mutability":"mutable","name":"amountOutMin","nameLocation":"9220:12:52","nodeType":"VariableDeclaration","scope":9988,"src":"9212:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9918,"name":"uint256","nodeType":"ElementaryTypeName","src":"9212:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9927,"initialValue":{"arguments":[{"id":9924,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"9267:4:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9925,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9876,"src":"9273:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":9921,"name":"quoter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9896,"src":"9243:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9920,"name":"IQuoter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"9235:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IQuoter_$3666_$","typeString":"type(contract IQuoter)"}},"id":9922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9235:15:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IQuoter_$3666","typeString":"contract IQuoter"}},"id":9923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9251:15:52","memberName":"quoteExactInput","nodeType":"MemberAccess","referencedDeclaration":3623,"src":"9235:31:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes memory,uint256) external returns (uint256)"}},"id":9926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9235:45:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9212:68:52"},{"expression":{"id":9937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9928,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"9291:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9929,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"9306:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9930,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"9322:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9931,"name":"slippagePct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"9337:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9322:26:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9933,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9321:28:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":9934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9352:5:52","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"9321:36:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9306:51:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9291:66:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9938,"nodeType":"ExpressionStatement","src":"9291:66:52"},{"assignments":[9943],"declarations":[{"constant":false,"id":9943,"mutability":"mutable","name":"params","nameLocation":"9406:6:52","nodeType":"VariableDeclaration","scope":9988,"src":"9370:42:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$3710_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":9942,"nodeType":"UserDefinedTypeName","pathNode":{"id":9941,"name":"ISwapRouter.ExactInputParams","nameLocations":["9370:11:52","9382:16:52"],"nodeType":"IdentifierPath","referencedDeclaration":3710,"src":"9370:28:52"},"referencedDeclaration":3710,"src":"9370:28:52","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$3710_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"id":9969,"initialValue":{"arguments":[{"arguments":[{"id":9948,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9870,"src":"9482:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"33303030","id":9951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9497:4:52","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"}],"id":9950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9490:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":9949,"name":"uint24","nodeType":"ElementaryTypeName","src":"9490:6:52","typeDescriptions":{}}},"id":9952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9490:12:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":9953,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9872,"src":"9504:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"33303030","id":9956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9519:4:52","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"}],"id":9955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9512:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":9954,"name":"uint24","nodeType":"ElementaryTypeName","src":"9512:6:52","typeDescriptions":{}}},"id":9957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9512:12:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"id":9958,"name":"token2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9874,"src":"9526:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9946,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9465:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9469:12:52","memberName":"encodePacked","nodeType":"MemberAccess","src":"9465:16:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9465:68:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":9962,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"9567:8:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9559:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9960,"name":"address","nodeType":"ElementaryTypeName","src":"9559:7:52","typeDescriptions":{}}},"id":9963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9559:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9964,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9601:5:52","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9607:9:52","memberName":"timestamp","nodeType":"MemberAccess","src":"9601:15:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9966,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9876,"src":"9641:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9967,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"9680:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9944,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"9415:11:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$3766_$","typeString":"type(contract ISwapRouter)"}},"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9427:16:52","memberName":"ExactInputParams","nodeType":"MemberAccess","referencedDeclaration":3710,"src":"9415:28:52","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactInputParams_$3710_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactInputParams storage pointer)"}},"id":9968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9459:4:52","9548:9:52","9591:8:52","9631:8:52","9662:16:52"],"names":["path","recipient","deadline","amountIn","amountOutMinimum"],"nodeType":"FunctionCall","src":"9415:289:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$3710_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}},"nodeType":"VariableDeclarationStatement","src":"9370:334:52"},{"assignments":[9971],"declarations":[{"constant":false,"id":9971,"mutability":"mutable","name":"amountReceived","nameLocation":"9723:14:52","nodeType":"VariableDeclaration","scope":9988,"src":"9715:22:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9970,"name":"uint256","nodeType":"ElementaryTypeName","src":"9715:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9978,"initialValue":{"arguments":[{"id":9976,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9943,"src":"9778:6:52","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$3710_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactInputParams_$3710_memory_ptr","typeString":"struct ISwapRouter.ExactInputParams memory"}],"expression":{"arguments":[{"id":9973,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9884,"src":"9752:13:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9972,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"9740:11:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$3766_$","typeString":"type(contract ISwapRouter)"}},"id":9974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9740:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$3766","typeString":"contract ISwapRouter"}},"id":9975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9767:10:52","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":3719,"src":"9740:37:52","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactInputParams_$3710_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactInputParams memory) payable external returns (uint256)"}},"id":9977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9740:45:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9715:70:52"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9980,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9971,"src":"9804:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9821:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9804:18:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e69537761707065723a20416d6f756e742052656365697665642069732030","id":9983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9824:37:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_2601c1289f85cc52da697c8044dc03da4e3dc6d60e9ab8691ebe3fb6f68c0d70","typeString":"literal_string \"BaluniSwapper: Amount Received is 0\""},"value":"BaluniSwapper: Amount Received is 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2601c1289f85cc52da697c8044dc03da4e3dc6d60e9ab8691ebe3fb6f68c0d70","typeString":"literal_string \"BaluniSwapper: Amount Received is 0\""}],"id":9979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9796:7:52","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9796:66:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9985,"nodeType":"ExpressionStatement","src":"9796:66:52"},{"expression":{"id":9986,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9971,"src":"9880:14:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9882,"id":9987,"nodeType":"Return","src":"9873:21:52"}]},"id":9989,"implemented":true,"kind":"function","modifiers":[],"name":"_multiHopSwapFallback","nameLocation":"8731:21:52","nodeType":"FunctionDefinition","parameters":{"id":9879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9870,"mutability":"mutable","name":"token0","nameLocation":"8771:6:52","nodeType":"VariableDeclaration","scope":9989,"src":"8763:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9869,"name":"address","nodeType":"ElementaryTypeName","src":"8763:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9872,"mutability":"mutable","name":"token1","nameLocation":"8796:6:52","nodeType":"VariableDeclaration","scope":9989,"src":"8788:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9871,"name":"address","nodeType":"ElementaryTypeName","src":"8788:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9874,"mutability":"mutable","name":"token2","nameLocation":"8821:6:52","nodeType":"VariableDeclaration","scope":9989,"src":"8813:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9873,"name":"address","nodeType":"ElementaryTypeName","src":"8813:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9876,"mutability":"mutable","name":"amount","nameLocation":"8846:6:52","nodeType":"VariableDeclaration","scope":9989,"src":"8838:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9875,"name":"uint256","nodeType":"ElementaryTypeName","src":"8838:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9878,"mutability":"mutable","name":"receiver","nameLocation":"8871:8:52","nodeType":"VariableDeclaration","scope":9989,"src":"8863:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9877,"name":"address","nodeType":"ElementaryTypeName","src":"8863:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8752:134:52"},"returnParameters":{"id":9882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9881,"mutability":"mutable","name":"amountOut","nameLocation":"8913:9:52","nodeType":"VariableDeclaration","scope":9989,"src":"8905:17:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9880,"name":"uint256","nodeType":"ElementaryTypeName","src":"8905:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8904:19:52"},"scope":10056,"src":"8722:1180:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10032,"nodeType":"Block","src":"10463:253:52","statements":[{"assignments":[10001],"declarations":[{"constant":false,"id":10001,"mutability":"mutable","name":"_token","nameLocation":"10481:6:52","nodeType":"VariableDeclaration","scope":10032,"src":"10474:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":10000,"nodeType":"UserDefinedTypeName","pathNode":{"id":9999,"name":"IERC20","nameLocations":["10474:6:52"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"10474:6:52"},"referencedDeclaration":2651,"src":"10474:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"}],"id":10005,"initialValue":{"arguments":[{"id":10003,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9992,"src":"10497:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10002,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10490:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":10004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10490:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"10474:29:52"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":10010,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10584:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Swapper_$10056","typeString":"contract BaluniV1Swapper"}],"id":10009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10576:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10008,"name":"address","nodeType":"ElementaryTypeName","src":"10576:7:52","typeDescriptions":{}}},"id":10011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10576:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10012,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9994,"src":"10591:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10006,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"10559:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":10007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10566:9:52","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"10559:16:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":10013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10559:40:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10014,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9996,"src":"10602:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10559:49:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10031,"nodeType":"IfStatement","src":"10555:154:52","trueBody":{"id":10030,"nodeType":"Block","src":"10610:99:52","statements":[{"expression":{"arguments":[{"id":10019,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9994,"src":"10640:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":10020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10649:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":10016,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"10625:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":10018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10632:7:52","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"10625:14:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10625:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10022,"nodeType":"ExpressionStatement","src":"10625:26:52"},{"expression":{"arguments":[{"id":10026,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9994,"src":"10681:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10027,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9996,"src":"10690:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10023,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"10666:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":10025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10673:7:52","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"10666:14:52","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10666:31:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10029,"nodeType":"ExpressionStatement","src":"10666:31:52"}]}}]},"documentation":{"id":9990,"nodeType":"StructuredDocumentation","src":"9910:465:52","text":" @dev Ensures that the contract has the necessary approval for a token to be spent by a spender.\n If the current allowance is not equal to the desired amount, it updates the allowance accordingly.\n @param token The address of the token to be approved.\n @param spender The address of the spender.\n @param amount The desired allowance amount.\n @notice This function is internal and should not be called directly."},"id":10033,"implemented":true,"kind":"function","modifiers":[],"name":"_secureApproval","nameLocation":"10390:15:52","nodeType":"FunctionDefinition","parameters":{"id":9997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9992,"mutability":"mutable","name":"token","nameLocation":"10414:5:52","nodeType":"VariableDeclaration","scope":10033,"src":"10406:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9991,"name":"address","nodeType":"ElementaryTypeName","src":"10406:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9994,"mutability":"mutable","name":"spender","nameLocation":"10429:7:52","nodeType":"VariableDeclaration","scope":10033,"src":"10421:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9993,"name":"address","nodeType":"ElementaryTypeName","src":"10421:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9996,"mutability":"mutable","name":"amount","nameLocation":"10446:6:52","nodeType":"VariableDeclaration","scope":10033,"src":"10438:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9995,"name":"uint256","nodeType":"ElementaryTypeName","src":"10438:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10405:48:52"},"returnParameters":{"id":9998,"nodeType":"ParameterList","parameters":[],"src":"10463:0:52"},"scope":10056,"src":"10381:335:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":false,"id":10035,"mutability":"mutable","name":"slippagePct","nameLocation":"10732:11:52","nodeType":"VariableDeclaration","scope":10056,"src":"10724:19:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10034,"name":"uint256","nodeType":"ElementaryTypeName","src":"10724:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"body":{"id":10046,"nodeType":"Block","src":"10829:52:52","statements":[{"expression":{"id":10044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10042,"name":"slippagePct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"10840:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10043,"name":"_slippagePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10037,"src":"10854:19:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10840:33:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10045,"nodeType":"ExpressionStatement","src":"10840:33:52"}]},"functionSelector":"03baf066","id":10047,"implemented":true,"kind":"function","modifiers":[{"id":10040,"kind":"modifierInvocation","modifierName":{"id":10039,"name":"onlyOwner","nameLocations":["10819:9:52"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"10819:9:52"},"nodeType":"ModifierInvocation","src":"10819:9:52"}],"name":"setSlippagePercentage","nameLocation":"10759:21:52","nodeType":"FunctionDefinition","parameters":{"id":10038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10037,"mutability":"mutable","name":"_slippagePercentage","nameLocation":"10789:19:52","nodeType":"VariableDeclaration","scope":10047,"src":"10781:27:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10036,"name":"uint256","nodeType":"ElementaryTypeName","src":"10781:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10780:29:52"},"returnParameters":{"id":10041,"nodeType":"ParameterList","parameters":[],"src":"10829:0:52"},"scope":10056,"src":"10750:131:52","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10054,"nodeType":"Block","src":"10954:37:52","statements":[{"expression":{"id":10052,"name":"slippagePct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"10972:11:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10051,"id":10053,"nodeType":"Return","src":"10965:18:52"}]},"functionSelector":"25635dbe","id":10055,"implemented":true,"kind":"function","modifiers":[],"name":"getSlippagePercentage","nameLocation":"10898:21:52","nodeType":"FunctionDefinition","parameters":{"id":10048,"nodeType":"ParameterList","parameters":[],"src":"10919:2:52"},"returnParameters":{"id":10051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10055,"src":"10945:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10049,"name":"uint256","nodeType":"ElementaryTypeName","src":"10945:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10944:9:52"},"scope":10056,"src":"10889:102:52","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10057,"src":"2226:8768:52","usedErrors":[30,35,211,214,475,480,1780,1793,2690,2693],"usedEvents":[41,219,1759]}],"src":"40:10956:52"},"id":52},"contracts/mock/MockOracle.sol":{"ast":{"absolutePath":"contracts/mock/MockOracle.sol","exportedSymbols":{"IBaluniV1Oracle":[4240],"IERC20":[2651],"IERC20Metadata":[2677],"MockOracle":[10591]},"id":10592,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":10058,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:53"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":10059,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10592,"sourceUnit":2652,"src":"67:56:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":10060,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10592,"sourceUnit":2678,"src":"125:75:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","file":"../interfaces/IBaluniV1Oracle.sol","id":10061,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10592,"sourceUnit":4241,"src":"202:43:53","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10062,"name":"IBaluniV1Oracle","nameLocations":["272:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"272:15:53"},"id":10063,"nodeType":"InheritanceSpecifier","src":"272:15:53"}],"canonicalName":"MockOracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10591,"linearizedBaseContracts":[10591,4240],"name":"MockOracle","nameLocation":"258:10:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"7b0cf44d","id":10069,"mutability":"mutable","name":"rates","nameLocation":"350:5:53","nodeType":"VariableDeclaration","scope":10591,"src":"295:60:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":10068,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10064,"name":"address","nodeType":"ElementaryTypeName","src":"303:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"295:47:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10067,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10065,"name":"address","nodeType":"ElementaryTypeName","src":"322:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"314:27:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10066,"name":"uint256","nodeType":"ElementaryTypeName","src":"333:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"constant":true,"functionSelector":"e2338e72","id":10072,"mutability":"constant","name":"USDC_TO_WETH_RATE","nameLocation":"412:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"388:71:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10070,"name":"uint256","nodeType":"ElementaryTypeName","src":"388:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323536383937313835373335383535313039343131353037313138","id":10071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"432:27:53","typeDescriptions":{"typeIdentifier":"t_rational_256897185735855109411507118_by_1","typeString":"int_const 256897185735855109411507118"},"value":"256897185735855109411507118"},"visibility":"public"},{"constant":true,"functionSelector":"b537d24b","id":10075,"mutability":"constant","name":"USDC_TO_USDT_RATE","nameLocation":"490:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"466:63:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10073,"name":"uint256","nodeType":"ElementaryTypeName","src":"466:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303030393833393839383338393235363430","id":10074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"510:19:53","typeDescriptions":{"typeIdentifier":"t_rational_1000983989838925640_by_1","typeString":"int_const 1000983989838925640"},"value":"1000983989838925640"},"visibility":"public"},{"constant":true,"functionSelector":"02098719","id":10078,"mutability":"constant","name":"USDC_TO_WBTC_RATE","nameLocation":"560:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"536:60:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10076,"name":"uint256","nodeType":"ElementaryTypeName","src":"536:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31343633363537343638393437373631","id":10077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"580:16:53","typeDescriptions":{"typeIdentifier":"t_rational_1463657468947761_by_1","typeString":"int_const 1463657468947761"},"value":"1463657468947761"},"visibility":"public"},{"constant":true,"functionSelector":"5107e94e","id":10081,"mutability":"constant","name":"USDC_TO_WMATIC_RATE","nameLocation":"627:19:53","nodeType":"VariableDeclaration","scope":10591,"src":"603:77:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10079,"name":"uint256","nodeType":"ElementaryTypeName","src":"603:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31333531313438323439303935363531333635333430393134303938363136","id":10080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"649:31:53","typeDescriptions":{"typeIdentifier":"t_rational_1351148249095651365340914098616_by_1","typeString":"int_const 1351148249095651365340914098616"},"value":"1351148249095651365340914098616"},"visibility":"public"},{"constant":true,"functionSelector":"0e091762","id":10084,"mutability":"constant","name":"WMATIC_TO_USDT_RATE","nameLocation":"713:19:53","nodeType":"VariableDeclaration","scope":10591,"src":"689:52:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10082,"name":"uint256","nodeType":"ElementaryTypeName","src":"689:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"373437373637","id":10083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"735:6:53","typeDescriptions":{"typeIdentifier":"t_rational_747767_by_1","typeString":"int_const 747767"},"value":"747767"},"visibility":"public"},{"constant":true,"functionSelector":"c0184983","id":10087,"mutability":"constant","name":"WMATIC_TO_USDC_RATE","nameLocation":"772:19:53","nodeType":"VariableDeclaration","scope":10591,"src":"748:52:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10085,"name":"uint256","nodeType":"ElementaryTypeName","src":"748:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"373333393035","id":10086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"794:6:53","typeDescriptions":{"typeIdentifier":"t_rational_733905_by_1","typeString":"int_const 733905"},"value":"733905"},"visibility":"public"},{"constant":true,"functionSelector":"187029b8","id":10090,"mutability":"constant","name":"WMATIC_TO_WBTC_RATE","nameLocation":"831:19:53","nodeType":"VariableDeclaration","scope":10591,"src":"807:50:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10088,"name":"uint256","nodeType":"ElementaryTypeName","src":"807:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303830","id":10089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"853:4:53","typeDescriptions":{"typeIdentifier":"t_rational_1080_by_1","typeString":"int_const 1080"},"value":"1080"},"visibility":"public"},{"constant":true,"functionSelector":"ae3bcc96","id":10093,"mutability":"constant","name":"WMATIC_TO_WETH_RATE","nameLocation":"888:19:53","nodeType":"VariableDeclaration","scope":10591,"src":"864:61:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10091,"name":"uint256","nodeType":"ElementaryTypeName","src":"864:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313839363235353832363634313030","id":10092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"910:15:53","typeDescriptions":{"typeIdentifier":"t_rational_189625582664100_by_1","typeString":"int_const 189625582664100"},"value":"189625582664100"},"visibility":"public"},{"constant":true,"functionSelector":"8e5139ed","id":10096,"mutability":"constant","name":"WBTC_TO_WMATIC_RATE","nameLocation":"958:19:53","nodeType":"VariableDeclaration","scope":10591,"src":"934:79:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10094,"name":"uint256","nodeType":"ElementaryTypeName","src":"934:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393234373738303333353338383131383436303338373632393733353739373339","id":10095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"980:33:53","typeDescriptions":{"typeIdentifier":"t_rational_924778033538811846038762973579739_by_1","typeString":"int_const 9247...(25 digits omitted)...9739"},"value":"924778033538811846038762973579739"},"visibility":"public"},{"constant":true,"functionSelector":"d135e3be","id":10099,"mutability":"constant","name":"WBTC_TO_USDT_RATE","nameLocation":"1044:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1020:65:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10097,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363831333630323333323433343834303039313338","id":10098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1064:21:53","typeDescriptions":{"typeIdentifier":"t_rational_681360233243484009138_by_1","typeString":"int_const 681360233243484009138"},"value":"681360233243484009138"},"visibility":"public"},{"constant":true,"functionSelector":"b9e93810","id":10102,"mutability":"constant","name":"WBTC_TO_WETH_RATE","nameLocation":"1116:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1092:74:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10100,"name":"uint256","nodeType":"ElementaryTypeName","src":"1092:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313735343736343730393339343933353333353536313038353933353938","id":10101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1136:30:53","typeDescriptions":{"typeIdentifier":"t_rational_175476470939493533556108593598_by_1","typeString":"int_const 175476470939493533556108593598"},"value":"175476470939493533556108593598"},"visibility":"public"},{"constant":true,"functionSelector":"53ff493e","id":10105,"mutability":"constant","name":"WBTC_TO_USDC_RATE","nameLocation":"1197:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1173:65:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10103,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363833303033333734353534353132303239393930","id":10104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1217:21:53","typeDescriptions":{"typeIdentifier":"t_rational_683003374554512029990_by_1","typeString":"int_const 683003374554512029990"},"value":"683003374554512029990"},"visibility":"public"},{"constant":true,"functionSelector":"97db8e02","id":10108,"mutability":"constant","name":"USDT_TO_WBTC_RATE","nameLocation":"1271:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1247:60:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1247:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31343537383434383431343532393433","id":10107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1291:16:53","typeDescriptions":{"typeIdentifier":"t_rational_1457844841452943_by_1","typeString":"int_const 1457844841452943"},"value":"1457844841452943"},"visibility":"public"},{"constant":true,"functionSelector":"a58a7f8a","id":10111,"mutability":"constant","name":"USDT_TO_USDC_RATE","nameLocation":"1338:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1314:62:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10109,"name":"uint256","nodeType":"ElementaryTypeName","src":"1314:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393938383430393737363030313839323333","id":10110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1358:18:53","typeDescriptions":{"typeIdentifier":"t_rational_998840977600189233_by_1","typeString":"int_const 998840977600189233"},"value":"998840977600189233"},"visibility":"public"},{"constant":true,"functionSelector":"443dc789","id":10114,"mutability":"constant","name":"USDT_TO_WETH_RATE","nameLocation":"1407:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1383:71:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10112,"name":"uint256","nodeType":"ElementaryTypeName","src":"1383:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323536383834343834333438363730313932393733313132313335","id":10113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:27:53","typeDescriptions":{"typeIdentifier":"t_rational_256884484348670192973112135_by_1","typeString":"int_const 256884484348670192973112135"},"value":"256884484348670192973112135"},"visibility":"public"},{"constant":true,"functionSelector":"1a1e4a1f","id":10117,"mutability":"constant","name":"USDT_TO_WMATIC_RATE","nameLocation":"1485:19:53","nodeType":"VariableDeclaration","scope":10591,"src":"1461:77:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10115,"name":"uint256","nodeType":"ElementaryTypeName","src":"1461:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31333531353432343738373338343832373835353233383836363538303833","id":10116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1507:31:53","typeDescriptions":{"typeIdentifier":"t_rational_1351542478738482785523886658083_by_1","typeString":"int_const 1351542478738482785523886658083"},"value":"1351542478738482785523886658083"},"visibility":"public"},{"constant":true,"functionSelector":"e30f6892","id":10120,"mutability":"constant","name":"WETH_TO_WMATIC_RATE","nameLocation":"1571:19:53","nodeType":"VariableDeclaration","scope":10591,"src":"1547:68:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35323733353736343130363835303732373832373533","id":10119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1593:22:53","typeDescriptions":{"typeIdentifier":"t_rational_5273576410685072782753_by_1","typeString":"int_const 5273576410685072782753"},"value":"5273576410685072782753"},"visibility":"public"},{"constant":true,"functionSelector":"4039e687","id":10123,"mutability":"constant","name":"WETH_TO_USDC_RATE","nameLocation":"1646:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1622:54:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10121,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33373831333832313534","id":10122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1666:10:53","typeDescriptions":{"typeIdentifier":"t_rational_3781382154_by_1","typeString":"int_const 3781382154"},"value":"3781382154"},"visibility":"public"},{"constant":true,"functionSelector":"5fc8cd69","id":10126,"mutability":"constant","name":"WETH_TO_USDT_RATE","nameLocation":"1707:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1683:54:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10124,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33373439313633383837","id":10125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1727:10:53","typeDescriptions":{"typeIdentifier":"t_rational_3749163887_by_1","typeString":"int_const 3749163887"},"value":"3749163887"},"visibility":"public"},{"constant":true,"functionSelector":"43146399","id":10129,"mutability":"constant","name":"WETH_TO_WBTC_RATE","nameLocation":"1768:17:53","nodeType":"VariableDeclaration","scope":10591,"src":"1744:51:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10127,"name":"uint256","nodeType":"ElementaryTypeName","src":"1744:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35353631383231","id":10128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:7:53","typeDescriptions":{"typeIdentifier":"t_rational_5561821_by_1","typeString":"int_const 5561821"},"value":"5561821"},"visibility":"public"},{"constant":false,"functionSelector":"89a30271","id":10131,"mutability":"mutable","name":"USDC","nameLocation":"1819:4:53","nodeType":"VariableDeclaration","scope":10591,"src":"1804:19:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10130,"name":"address","nodeType":"ElementaryTypeName","src":"1804:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"b381cf40","id":10133,"mutability":"mutable","name":"WNATIVE","nameLocation":"1845:7:53","nodeType":"VariableDeclaration","scope":10591,"src":"1830:22:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10132,"name":"address","nodeType":"ElementaryTypeName","src":"1830:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"61d027b3","id":10135,"mutability":"mutable","name":"treasury","nameLocation":"1876:8:53","nodeType":"VariableDeclaration","scope":10591,"src":"1861:23:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10134,"name":"address","nodeType":"ElementaryTypeName","src":"1861:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":10321,"nodeType":"Block","src":"1979:1101:53","statements":[{"expression":{"id":10150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10148,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"1990:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10149,"name":"_wmatic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10141,"src":"2000:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1990:17:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10151,"nodeType":"ExpressionStatement","src":"1990:17:53"},{"expression":{"id":10154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10152,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2018:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10153,"name":"_usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10139,"src":"2025:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2018:12:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10155,"nodeType":"ExpressionStatement","src":"2018:12:53"},{"expression":{"id":10159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10156,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10135,"src":"2041:8:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10157,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2052:3:53","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2056:6:53","memberName":"sender","nodeType":"MemberAccess","src":"2052:10:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2041:21:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10160,"nodeType":"ExpressionStatement","src":"2041:21:53"},{"expression":{"id":10167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10161,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2075:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10164,"indexExpression":{"id":10162,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10137,"src":"2081:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2075:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10165,"indexExpression":{"id":10163,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2087:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2075:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10166,"name":"USDT_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10111,"src":"2095:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2075:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10168,"nodeType":"ExpressionStatement","src":"2075:37:53"},{"expression":{"id":10175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10169,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2123:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10172,"indexExpression":{"id":10170,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10137,"src":"2129:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2123:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10173,"indexExpression":{"id":10171,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"2135:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2123:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10174,"name":"USDT_TO_WMATIC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10117,"src":"2146:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2123:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10176,"nodeType":"ExpressionStatement","src":"2123:42:53"},{"expression":{"id":10183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10177,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2176:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10180,"indexExpression":{"id":10178,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10137,"src":"2182:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2176:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10181,"indexExpression":{"id":10179,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10145,"src":"2188:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2176:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10182,"name":"USDT_TO_WBTC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10108,"src":"2196:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2176:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10184,"nodeType":"ExpressionStatement","src":"2176:37:53"},{"expression":{"id":10191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10185,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2224:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10188,"indexExpression":{"id":10186,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10137,"src":"2230:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2224:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10189,"indexExpression":{"id":10187,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"2236:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2224:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10190,"name":"USDT_TO_WETH_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10114,"src":"2244:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2224:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10192,"nodeType":"ExpressionStatement","src":"2224:37:53"},{"expression":{"id":10199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10193,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2274:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10196,"indexExpression":{"id":10194,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10145,"src":"2280:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2274:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10197,"indexExpression":{"id":10195,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10137,"src":"2286:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2274:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10198,"name":"WBTC_TO_USDT_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10099,"src":"2294:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2274:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10200,"nodeType":"ExpressionStatement","src":"2274:37:53"},{"expression":{"id":10207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10201,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2322:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10204,"indexExpression":{"id":10202,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10145,"src":"2328:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2322:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10205,"indexExpression":{"id":10203,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"2334:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2322:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10206,"name":"WBTC_TO_WMATIC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10096,"src":"2345:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2322:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10208,"nodeType":"ExpressionStatement","src":"2322:42:53"},{"expression":{"id":10215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10209,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2375:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10212,"indexExpression":{"id":10210,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10145,"src":"2381:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2375:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10213,"indexExpression":{"id":10211,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2387:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2375:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10214,"name":"WBTC_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10105,"src":"2395:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2375:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10216,"nodeType":"ExpressionStatement","src":"2375:37:53"},{"expression":{"id":10223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10217,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2423:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10220,"indexExpression":{"id":10218,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10145,"src":"2429:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2423:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10221,"indexExpression":{"id":10219,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"2435:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2423:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10222,"name":"WBTC_TO_WETH_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10102,"src":"2443:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2423:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10224,"nodeType":"ExpressionStatement","src":"2423:37:53"},{"expression":{"id":10231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10225,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2473:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10228,"indexExpression":{"id":10226,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2479:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2473:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10229,"indexExpression":{"id":10227,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10137,"src":"2485:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2473:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10230,"name":"USDC_TO_USDT_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10075,"src":"2493:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2473:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10232,"nodeType":"ExpressionStatement","src":"2473:37:53"},{"expression":{"id":10239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10233,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2521:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10236,"indexExpression":{"id":10234,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2527:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2521:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10237,"indexExpression":{"id":10235,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10145,"src":"2533:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2521:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10238,"name":"USDC_TO_WBTC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10078,"src":"2541:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2521:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10240,"nodeType":"ExpressionStatement","src":"2521:37:53"},{"expression":{"id":10247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10241,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2569:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10244,"indexExpression":{"id":10242,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2575:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2569:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10245,"indexExpression":{"id":10243,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"2581:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2569:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10246,"name":"USDC_TO_WMATIC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10081,"src":"2592:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2569:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10248,"nodeType":"ExpressionStatement","src":"2569:42:53"},{"expression":{"id":10255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10249,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2622:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10252,"indexExpression":{"id":10250,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2628:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2622:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10253,"indexExpression":{"id":10251,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"2634:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2622:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10254,"name":"USDC_TO_WETH_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10072,"src":"2642:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2622:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10256,"nodeType":"ExpressionStatement","src":"2622:37:53"},{"expression":{"id":10263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10257,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2672:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10260,"indexExpression":{"id":10258,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"2678:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2672:14:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10261,"indexExpression":{"id":10259,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10145,"src":"2687:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2672:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10262,"name":"WMATIC_TO_WBTC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10090,"src":"2695:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2672:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10264,"nodeType":"ExpressionStatement","src":"2672:42:53"},{"expression":{"id":10271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10265,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2725:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10268,"indexExpression":{"id":10266,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"2731:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2725:14:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10269,"indexExpression":{"id":10267,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"2740:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2725:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10270,"name":"WMATIC_TO_WETH_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"2748:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2725:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10272,"nodeType":"ExpressionStatement","src":"2725:42:53"},{"expression":{"id":10279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10273,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2778:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10276,"indexExpression":{"id":10274,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"2784:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2778:14:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10277,"indexExpression":{"id":10275,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2793:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2778:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10278,"name":"WMATIC_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"2801:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2778:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10280,"nodeType":"ExpressionStatement","src":"2778:42:53"},{"expression":{"id":10287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10281,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2831:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10284,"indexExpression":{"id":10282,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"2837:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2831:14:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10285,"indexExpression":{"id":10283,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10137,"src":"2846:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2831:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10286,"name":"WMATIC_TO_USDT_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10084,"src":"2854:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2831:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10288,"nodeType":"ExpressionStatement","src":"2831:42:53"},{"expression":{"id":10295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10289,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2886:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10292,"indexExpression":{"id":10290,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"2892:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2886:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10293,"indexExpression":{"id":10291,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"2898:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2886:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10294,"name":"WETH_TO_WMATIC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10120,"src":"2909:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2886:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10296,"nodeType":"ExpressionStatement","src":"2886:42:53"},{"expression":{"id":10303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10297,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2939:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10300,"indexExpression":{"id":10298,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"2945:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2939:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10301,"indexExpression":{"id":10299,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"2951:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2939:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10302,"name":"WETH_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10123,"src":"2959:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2939:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10304,"nodeType":"ExpressionStatement","src":"2939:37:53"},{"expression":{"id":10311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10305,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"2987:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10308,"indexExpression":{"id":10306,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"2993:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2987:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10309,"indexExpression":{"id":10307,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10137,"src":"2999:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2987:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10310,"name":"WETH_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10123,"src":"3007:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2987:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10312,"nodeType":"ExpressionStatement","src":"2987:37:53"},{"expression":{"id":10319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10313,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"3035:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10316,"indexExpression":{"id":10314,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10143,"src":"3041:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3035:11:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10317,"indexExpression":{"id":10315,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10145,"src":"3047:4:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3035:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10318,"name":"WETH_TO_WBTC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10129,"src":"3055:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3035:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10320,"nodeType":"ExpressionStatement","src":"3035:37:53"}]},"id":10322,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10137,"mutability":"mutable","name":"usdt","nameLocation":"1913:4:53","nodeType":"VariableDeclaration","scope":10322,"src":"1905:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10136,"name":"address","nodeType":"ElementaryTypeName","src":"1905:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10139,"mutability":"mutable","name":"_usdc","nameLocation":"1927:5:53","nodeType":"VariableDeclaration","scope":10322,"src":"1919:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10138,"name":"address","nodeType":"ElementaryTypeName","src":"1919:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10141,"mutability":"mutable","name":"_wmatic","nameLocation":"1942:7:53","nodeType":"VariableDeclaration","scope":10322,"src":"1934:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10140,"name":"address","nodeType":"ElementaryTypeName","src":"1934:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10143,"mutability":"mutable","name":"weth","nameLocation":"1959:4:53","nodeType":"VariableDeclaration","scope":10322,"src":"1951:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10142,"name":"address","nodeType":"ElementaryTypeName","src":"1951:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10145,"mutability":"mutable","name":"wbtc","nameLocation":"1973:4:53","nodeType":"VariableDeclaration","scope":10322,"src":"1965:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10144,"name":"address","nodeType":"ElementaryTypeName","src":"1965:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1904:74:53"},"returnParameters":{"id":10147,"nodeType":"ParameterList","parameters":[],"src":"1979:0:53"},"scope":10591,"src":"1893:1187:53","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4228],"body":{"id":10436,"nodeType":"Block","src":"3605:648:53","statements":[{"assignments":[10336],"declarations":[{"constant":false,"id":10336,"mutability":"mutable","name":"rate","nameLocation":"3624:4:53","nodeType":"VariableDeclaration","scope":10436,"src":"3616:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10335,"name":"uint256","nodeType":"ElementaryTypeName","src":"3616:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10337,"nodeType":"VariableDeclarationStatement","src":"3616:12:53"},{"assignments":[10339],"declarations":[{"constant":false,"id":10339,"mutability":"mutable","name":"fromDecimal","nameLocation":"3647:11:53","nodeType":"VariableDeclaration","scope":10436,"src":"3641:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10338,"name":"uint8","nodeType":"ElementaryTypeName","src":"3641:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":10345,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10341,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10325,"src":"3676:9:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10340,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3661:14:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":10342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3661:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":10343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3687:8:53","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"3661:34:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":10344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3661:36:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3641:56:53"},{"assignments":[10347],"declarations":[{"constant":false,"id":10347,"mutability":"mutable","name":"toDecimal","nameLocation":"3714:9:53","nodeType":"VariableDeclaration","scope":10436,"src":"3708:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10346,"name":"uint8","nodeType":"ElementaryTypeName","src":"3708:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":10353,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10349,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10327,"src":"3741:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10348,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3726:14:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":10350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3726:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":10351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3750:8:53","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"3726:32:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":10352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3726:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3708:52:53"},{"expression":{"id":10366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10354,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10336,"src":"3773:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"id":10355,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"3780:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10360,"indexExpression":{"arguments":[{"id":10358,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10325,"src":"3794:9:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3786:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10356,"name":"address","nodeType":"ElementaryTypeName","src":"3786:7:53","typeDescriptions":{}}},"id":10359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3786:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3780:25:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10365,"indexExpression":{"arguments":[{"id":10363,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10327,"src":"3814:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3806:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10361,"name":"address","nodeType":"ElementaryTypeName","src":"3806:7:53","typeDescriptions":{}}},"id":10364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3806:16:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3780:43:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3773:50:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10367,"nodeType":"ExpressionStatement","src":"3773:50:53"},{"expression":{"id":10381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10368,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10336,"src":"3834:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10369,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10336,"src":"3842:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3850:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":10371,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10339,"src":"3856:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3850:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10373,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3849:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3842:26:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10375,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3841:28:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3873:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":10377,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"3879:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3873:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10379,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3872:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3841:48:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3834:55:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10382,"nodeType":"ExpressionStatement","src":"3834:55:53"},{"assignments":[10384],"declarations":[{"constant":false,"id":10384,"mutability":"mutable","name":"factor","nameLocation":"3910:6:53","nodeType":"VariableDeclaration","scope":10436,"src":"3902:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10383,"name":"uint256","nodeType":"ElementaryTypeName","src":"3902:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10385,"nodeType":"VariableDeclarationStatement","src":"3902:14:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10386,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10339,"src":"3931:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10387,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"3946:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3931:24:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10432,"nodeType":"Block","src":"4090:127:53","statements":[{"expression":{"id":10418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10411,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10384,"src":"4105:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4114:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10413,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"4121:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10414,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10339,"src":"4133:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4121:23:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10416,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4120:25:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4114:31:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4105:40:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10419,"nodeType":"ExpressionStatement","src":"4105:40:53"},{"expression":{"id":10430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10420,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10333,"src":"4160:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10421,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"4174:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10422,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10384,"src":"4183:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4174:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4173:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10425,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10336,"src":"4193:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4173:24:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10427,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4172:26:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":10428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4201:4:53","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"4172:33:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4160:45:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10431,"nodeType":"ExpressionStatement","src":"4160:45:53"}]},"id":10433,"nodeType":"IfStatement","src":"3927:290:53","trueBody":{"id":10410,"nodeType":"Block","src":"3957:127:53","statements":[{"expression":{"id":10396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10389,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10384,"src":"3972:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3981:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10391,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10339,"src":"3988:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10392,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"4002:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3988:23:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10394,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3987:25:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3981:31:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3972:40:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10397,"nodeType":"ExpressionStatement","src":"3972:40:53"},{"expression":{"id":10408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10398,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10333,"src":"4027:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10399,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"4041:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10400,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10384,"src":"4050:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4041:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10402,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4040:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10403,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10336,"src":"4060:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4040:24:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10405,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4039:26:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":10406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4068:4:53","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"4039:33:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4027:45:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10409,"nodeType":"ExpressionStatement","src":"4027:45:53"}]}},{"expression":{"id":10434,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10333,"src":"4236:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10334,"id":10435,"nodeType":"Return","src":"4229:16:53"}]},"documentation":{"id":10323,"nodeType":"StructuredDocumentation","src":"3086:359:53","text":" @dev Converts an amount of tokens from one token to another based on the current exchange rate.\n @param fromToken The address of the token to convert from.\n @param toToken The address of the token to convert to.\n @param amount The amount of tokens to convert.\n @return valuation The converted amount of tokens."},"functionSelector":"248391ff","id":10437,"implemented":true,"kind":"function","modifiers":[],"name":"convert","nameLocation":"3460:7:53","nodeType":"FunctionDefinition","overrides":{"id":10331,"nodeType":"OverrideSpecifier","overrides":[],"src":"3568:8:53"},"parameters":{"id":10330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10325,"mutability":"mutable","name":"fromToken","nameLocation":"3486:9:53","nodeType":"VariableDeclaration","scope":10437,"src":"3478:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10324,"name":"address","nodeType":"ElementaryTypeName","src":"3478:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10327,"mutability":"mutable","name":"toToken","nameLocation":"3514:7:53","nodeType":"VariableDeclaration","scope":10437,"src":"3506:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10326,"name":"address","nodeType":"ElementaryTypeName","src":"3506:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10329,"mutability":"mutable","name":"amount","nameLocation":"3540:6:53","nodeType":"VariableDeclaration","scope":10437,"src":"3532:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10328,"name":"uint256","nodeType":"ElementaryTypeName","src":"3532:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3467:86:53"},"returnParameters":{"id":10334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10333,"mutability":"mutable","name":"valuation","nameLocation":"3594:9:53","nodeType":"VariableDeclaration","scope":10437,"src":"3586:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10332,"name":"uint256","nodeType":"ElementaryTypeName","src":"3586:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3585:19:53"},"scope":10591,"src":"3451:802:53","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4239],"body":{"id":10589,"nodeType":"Block","src":"4788:1006:53","statements":[{"assignments":[10451],"declarations":[{"constant":false,"id":10451,"mutability":"mutable","name":"rate","nameLocation":"4807:4:53","nodeType":"VariableDeclaration","scope":10589,"src":"4799:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10450,"name":"uint256","nodeType":"ElementaryTypeName","src":"4799:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10452,"nodeType":"VariableDeclarationStatement","src":"4799:12:53"},{"assignments":[10454],"declarations":[{"constant":false,"id":10454,"mutability":"mutable","name":"fromDecimal","nameLocation":"4830:11:53","nodeType":"VariableDeclaration","scope":10589,"src":"4824:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10453,"name":"uint8","nodeType":"ElementaryTypeName","src":"4824:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":10460,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10456,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"4859:9:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10455,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"4844:14:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":10457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":10458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4870:8:53","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"4844:34:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":10459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:36:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4824:56:53"},{"assignments":[10462],"declarations":[{"constant":false,"id":10462,"mutability":"mutable","name":"toDecimal","nameLocation":"4897:9:53","nodeType":"VariableDeclaration","scope":10589,"src":"4891:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10461,"name":"uint8","nodeType":"ElementaryTypeName","src":"4891:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":10468,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10464,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10442,"src":"4924:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10463,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"4909:14:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":10465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4909:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":10466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4933:8:53","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"4909:32:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":10467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4909:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4891:52:53"},{"expression":{"id":10481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10469,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"4956:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"id":10470,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10069,"src":"4963:5:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10475,"indexExpression":{"arguments":[{"id":10473,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10440,"src":"4977:9:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4969:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10471,"name":"address","nodeType":"ElementaryTypeName","src":"4969:7:53","typeDescriptions":{}}},"id":10474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4969:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4963:25:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10480,"indexExpression":{"arguments":[{"id":10478,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10442,"src":"4997:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4989:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10476,"name":"address","nodeType":"ElementaryTypeName","src":"4989:7:53","typeDescriptions":{}}},"id":10479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4989:16:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4963:43:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4956:50:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10482,"nodeType":"ExpressionStatement","src":"4956:50:53"},{"expression":{"id":10496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10483,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"5019:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10484,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"5027:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5035:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":10486,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10454,"src":"5041:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5035:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10488,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5034:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5027:26:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10490,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5026:28:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5058:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":10492,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10462,"src":"5064:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5058:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10494,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5057:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5026:48:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5019:55:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10497,"nodeType":"ExpressionStatement","src":"5019:55:53"},{"assignments":[10499],"declarations":[{"constant":false,"id":10499,"mutability":"mutable","name":"scalingFactor","nameLocation":"5095:13:53","nodeType":"VariableDeclaration","scope":10589,"src":"5087:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10498,"name":"uint256","nodeType":"ElementaryTypeName","src":"5087:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10500,"nodeType":"VariableDeclarationStatement","src":"5087:21:53"},{"assignments":[10502],"declarations":[{"constant":false,"id":10502,"mutability":"mutable","name":"tokenAmount","nameLocation":"5127:11:53","nodeType":"VariableDeclaration","scope":10589,"src":"5119:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10501,"name":"uint256","nodeType":"ElementaryTypeName","src":"5119:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10503,"nodeType":"VariableDeclarationStatement","src":"5119:19:53"},{"assignments":[10505],"declarations":[{"constant":false,"id":10505,"mutability":"mutable","name":"finalScalingFactor","nameLocation":"5157:18:53","nodeType":"VariableDeclaration","scope":10589,"src":"5149:26:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10504,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10512,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5178:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":10507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5185:2:53","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10508,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10462,"src":"5190:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5185:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10510,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5184:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5178:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5149:51:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10513,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10454,"src":"5217:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10514,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10462,"src":"5232:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5217:24:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10526,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10454,"src":"5314:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":10527,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10462,"src":"5328:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5314:23:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10578,"nodeType":"Block","src":"5524:179:53","statements":[{"expression":{"id":10561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10554,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"5539:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5555:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10556,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10462,"src":"5562:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10557,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10454,"src":"5574:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5562:23:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10559,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5561:25:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5555:31:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5539:47:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10562,"nodeType":"ExpressionStatement","src":"5539:47:53"},{"expression":{"id":10567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10563,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"5601:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10564,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10444,"src":"5615:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10565,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"5624:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5615:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5601:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10568,"nodeType":"ExpressionStatement","src":"5601:36:53"},{"expression":{"id":10576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10569,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10448,"src":"5652:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10570,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"5665:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10571,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"5679:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5665:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10573,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5664:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":10574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5687:4:53","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"5664:27:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5652:39:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10577,"nodeType":"ExpressionStatement","src":"5652:39:53"}]},"id":10579,"nodeType":"IfStatement","src":"5310:393:53","trueBody":{"id":10553,"nodeType":"Block","src":"5339:179:53","statements":[{"expression":{"id":10536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10529,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"5354:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5370:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10531,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10454,"src":"5377:11:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10532,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10462,"src":"5391:9:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5377:23:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10534,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5376:25:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5370:31:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5354:47:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10537,"nodeType":"ExpressionStatement","src":"5354:47:53"},{"expression":{"id":10542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10538,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"5416:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10539,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10444,"src":"5430:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10540,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"5439:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5430:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5416:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10543,"nodeType":"ExpressionStatement","src":"5416:36:53"},{"expression":{"id":10551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10544,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10448,"src":"5467:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10545,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"5480:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10546,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"5494:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5480:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10548,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5479:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":10549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5502:4:53","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"5479:27:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5467:39:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10552,"nodeType":"ExpressionStatement","src":"5467:39:53"}]}},"id":10580,"nodeType":"IfStatement","src":"5213:490:53","trueBody":{"id":10525,"nodeType":"Block","src":"5243:61:53","statements":[{"expression":{"id":10523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10516,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10448,"src":"5258:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10517,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10444,"src":"5271:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10518,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10451,"src":"5280:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10520,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5270:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":10521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5288:4:53","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"5270:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5258:34:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10524,"nodeType":"ExpressionStatement","src":"5258:34:53"}]}},{"expression":{"id":10585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10581,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10448,"src":"5715:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10582,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10448,"src":"5727:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10583,"name":"finalScalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10505,"src":"5739:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5727:30:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5715:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10586,"nodeType":"ExpressionStatement","src":"5715:42:53"},{"expression":{"id":10587,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10448,"src":"5777:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10449,"id":10588,"nodeType":"Return","src":"5770:16:53"}]},"documentation":{"id":10438,"nodeType":"StructuredDocumentation","src":"4261:361:53","text":" @dev Converts the given amount of tokens from one token to another using the 1inch exchange rate.\n @param fromToken The address of the token to convert from.\n @param toToken The address of the token to convert to.\n @param amount The amount of tokens to convert.\n @return valuation The converted amount of tokens."},"functionSelector":"b27b5e75","id":10590,"implemented":true,"kind":"function","modifiers":[],"name":"convertScaled","nameLocation":"4637:13:53","nodeType":"FunctionDefinition","overrides":{"id":10446,"nodeType":"OverrideSpecifier","overrides":[],"src":"4751:8:53"},"parameters":{"id":10445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10440,"mutability":"mutable","name":"fromToken","nameLocation":"4669:9:53","nodeType":"VariableDeclaration","scope":10590,"src":"4661:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10439,"name":"address","nodeType":"ElementaryTypeName","src":"4661:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10442,"mutability":"mutable","name":"toToken","nameLocation":"4697:7:53","nodeType":"VariableDeclaration","scope":10590,"src":"4689:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10441,"name":"address","nodeType":"ElementaryTypeName","src":"4689:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10444,"mutability":"mutable","name":"amount","nameLocation":"4723:6:53","nodeType":"VariableDeclaration","scope":10590,"src":"4715:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10443,"name":"uint256","nodeType":"ElementaryTypeName","src":"4715:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4650:86:53"},"returnParameters":{"id":10449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10448,"mutability":"mutable","name":"valuation","nameLocation":"4777:9:53","nodeType":"VariableDeclaration","scope":10590,"src":"4769:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10447,"name":"uint256","nodeType":"ElementaryTypeName","src":"4769:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4768:19:53"},"scope":10591,"src":"4628:1166:53","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10592,"src":"249:5548:53","usedErrors":[],"usedEvents":[]}],"src":"40:5759:53"},"id":53},"contracts/mock/MockRebalancer.sol":{"ast":{"absolutePath":"contracts/mock/MockRebalancer.sol","exportedSymbols":{"IBaluniV1Rebalancer":[4675],"IERC20":[2651],"IERC20Metadata":[2677],"MockRebalancer":[10982]},"id":10983,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":10593,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:54"},{"absolutePath":"contracts/interfaces/IBaluniV1Rebalancer.sol","file":"../interfaces/IBaluniV1Rebalancer.sol","id":10594,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10983,"sourceUnit":4676,"src":"67:47:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":10595,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10983,"sourceUnit":2652,"src":"116:56:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":10596,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10983,"sourceUnit":2678,"src":"174:75:54","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"MockRebalancer","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10982,"linearizedBaseContracts":[10982],"name":"MockRebalancer","nameLocation":"262:14:54","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"7b0cf44d","id":10602,"mutability":"mutable","name":"rates","nameLocation":"339:5:54","nodeType":"VariableDeclaration","scope":10982,"src":"284:60:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":10601,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10597,"name":"address","nodeType":"ElementaryTypeName","src":"292:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"284:47:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10600,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10598,"name":"address","nodeType":"ElementaryTypeName","src":"311:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"303:27:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10599,"name":"uint256","nodeType":"ElementaryTypeName","src":"322:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"constant":true,"functionSelector":"e2338e72","id":10605,"mutability":"constant","name":"USDC_TO_WETH_RATE","nameLocation":"401:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"377:71:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10603,"name":"uint256","nodeType":"ElementaryTypeName","src":"377:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323536383937313835373335383535313039343131353037313138","id":10604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"421:27:54","typeDescriptions":{"typeIdentifier":"t_rational_256897185735855109411507118_by_1","typeString":"int_const 256897185735855109411507118"},"value":"256897185735855109411507118"},"visibility":"public"},{"constant":true,"functionSelector":"b537d24b","id":10608,"mutability":"constant","name":"USDC_TO_USDT_RATE","nameLocation":"479:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"455:63:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10606,"name":"uint256","nodeType":"ElementaryTypeName","src":"455:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303030393833393839383338393235363430","id":10607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"499:19:54","typeDescriptions":{"typeIdentifier":"t_rational_1000983989838925640_by_1","typeString":"int_const 1000983989838925640"},"value":"1000983989838925640"},"visibility":"public"},{"constant":true,"functionSelector":"02098719","id":10611,"mutability":"constant","name":"USDC_TO_WBTC_RATE","nameLocation":"549:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"525:60:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10609,"name":"uint256","nodeType":"ElementaryTypeName","src":"525:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31343633363537343638393437373631","id":10610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"569:16:54","typeDescriptions":{"typeIdentifier":"t_rational_1463657468947761_by_1","typeString":"int_const 1463657468947761"},"value":"1463657468947761"},"visibility":"public"},{"constant":true,"functionSelector":"5107e94e","id":10614,"mutability":"constant","name":"USDC_TO_WMATIC_RATE","nameLocation":"616:19:54","nodeType":"VariableDeclaration","scope":10982,"src":"592:77:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10612,"name":"uint256","nodeType":"ElementaryTypeName","src":"592:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31333531313438323439303935363531333635333430393134303938363136","id":10613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"638:31:54","typeDescriptions":{"typeIdentifier":"t_rational_1351148249095651365340914098616_by_1","typeString":"int_const 1351148249095651365340914098616"},"value":"1351148249095651365340914098616"},"visibility":"public"},{"constant":true,"functionSelector":"0e091762","id":10617,"mutability":"constant","name":"WMATIC_TO_USDT_RATE","nameLocation":"702:19:54","nodeType":"VariableDeclaration","scope":10982,"src":"678:52:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10615,"name":"uint256","nodeType":"ElementaryTypeName","src":"678:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"373437373637","id":10616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"724:6:54","typeDescriptions":{"typeIdentifier":"t_rational_747767_by_1","typeString":"int_const 747767"},"value":"747767"},"visibility":"public"},{"constant":true,"functionSelector":"c0184983","id":10620,"mutability":"constant","name":"WMATIC_TO_USDC_RATE","nameLocation":"761:19:54","nodeType":"VariableDeclaration","scope":10982,"src":"737:52:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10618,"name":"uint256","nodeType":"ElementaryTypeName","src":"737:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"373333393035","id":10619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"783:6:54","typeDescriptions":{"typeIdentifier":"t_rational_733905_by_1","typeString":"int_const 733905"},"value":"733905"},"visibility":"public"},{"constant":true,"functionSelector":"187029b8","id":10623,"mutability":"constant","name":"WMATIC_TO_WBTC_RATE","nameLocation":"820:19:54","nodeType":"VariableDeclaration","scope":10982,"src":"796:50:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10621,"name":"uint256","nodeType":"ElementaryTypeName","src":"796:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303830","id":10622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"842:4:54","typeDescriptions":{"typeIdentifier":"t_rational_1080_by_1","typeString":"int_const 1080"},"value":"1080"},"visibility":"public"},{"constant":true,"functionSelector":"ae3bcc96","id":10626,"mutability":"constant","name":"WMATIC_TO_WETH_RATE","nameLocation":"877:19:54","nodeType":"VariableDeclaration","scope":10982,"src":"853:61:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10624,"name":"uint256","nodeType":"ElementaryTypeName","src":"853:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313839363235353832363634313030","id":10625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"899:15:54","typeDescriptions":{"typeIdentifier":"t_rational_189625582664100_by_1","typeString":"int_const 189625582664100"},"value":"189625582664100"},"visibility":"public"},{"constant":true,"functionSelector":"8e5139ed","id":10629,"mutability":"constant","name":"WBTC_TO_WMATIC_RATE","nameLocation":"947:19:54","nodeType":"VariableDeclaration","scope":10982,"src":"923:79:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10627,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393234373738303333353338383131383436303338373632393733353739373339","id":10628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"969:33:54","typeDescriptions":{"typeIdentifier":"t_rational_924778033538811846038762973579739_by_1","typeString":"int_const 9247...(25 digits omitted)...9739"},"value":"924778033538811846038762973579739"},"visibility":"public"},{"constant":true,"functionSelector":"d135e3be","id":10632,"mutability":"constant","name":"WBTC_TO_USDT_RATE","nameLocation":"1033:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1009:65:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10630,"name":"uint256","nodeType":"ElementaryTypeName","src":"1009:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363831333630323333323433343834303039313338","id":10631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1053:21:54","typeDescriptions":{"typeIdentifier":"t_rational_681360233243484009138_by_1","typeString":"int_const 681360233243484009138"},"value":"681360233243484009138"},"visibility":"public"},{"constant":true,"functionSelector":"b9e93810","id":10635,"mutability":"constant","name":"WBTC_TO_WETH_RATE","nameLocation":"1105:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1081:74:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10633,"name":"uint256","nodeType":"ElementaryTypeName","src":"1081:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313735343736343730393339343933353333353536313038353933353938","id":10634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1125:30:54","typeDescriptions":{"typeIdentifier":"t_rational_175476470939493533556108593598_by_1","typeString":"int_const 175476470939493533556108593598"},"value":"175476470939493533556108593598"},"visibility":"public"},{"constant":true,"functionSelector":"53ff493e","id":10638,"mutability":"constant","name":"WBTC_TO_USDC_RATE","nameLocation":"1186:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1162:65:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1162:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363833303033333734353534353132303239393930","id":10637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1206:21:54","typeDescriptions":{"typeIdentifier":"t_rational_683003374554512029990_by_1","typeString":"int_const 683003374554512029990"},"value":"683003374554512029990"},"visibility":"public"},{"constant":true,"functionSelector":"97db8e02","id":10641,"mutability":"constant","name":"USDT_TO_WBTC_RATE","nameLocation":"1260:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1236:60:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10639,"name":"uint256","nodeType":"ElementaryTypeName","src":"1236:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31343537383434383431343532393433","id":10640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1280:16:54","typeDescriptions":{"typeIdentifier":"t_rational_1457844841452943_by_1","typeString":"int_const 1457844841452943"},"value":"1457844841452943"},"visibility":"public"},{"constant":true,"functionSelector":"a58a7f8a","id":10644,"mutability":"constant","name":"USDT_TO_USDC_RATE","nameLocation":"1327:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1303:62:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10642,"name":"uint256","nodeType":"ElementaryTypeName","src":"1303:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393938383430393737363030313839323333","id":10643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1347:18:54","typeDescriptions":{"typeIdentifier":"t_rational_998840977600189233_by_1","typeString":"int_const 998840977600189233"},"value":"998840977600189233"},"visibility":"public"},{"constant":true,"functionSelector":"443dc789","id":10647,"mutability":"constant","name":"USDT_TO_WETH_RATE","nameLocation":"1396:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1372:71:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10645,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323536383834343834333438363730313932393733313132313335","id":10646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1416:27:54","typeDescriptions":{"typeIdentifier":"t_rational_256884484348670192973112135_by_1","typeString":"int_const 256884484348670192973112135"},"value":"256884484348670192973112135"},"visibility":"public"},{"constant":true,"functionSelector":"1a1e4a1f","id":10650,"mutability":"constant","name":"USDT_TO_WMATIC_RATE","nameLocation":"1474:19:54","nodeType":"VariableDeclaration","scope":10982,"src":"1450:77:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10648,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31333531353432343738373338343832373835353233383836363538303833","id":10649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1496:31:54","typeDescriptions":{"typeIdentifier":"t_rational_1351542478738482785523886658083_by_1","typeString":"int_const 1351542478738482785523886658083"},"value":"1351542478738482785523886658083"},"visibility":"public"},{"constant":true,"functionSelector":"e30f6892","id":10653,"mutability":"constant","name":"WETH_TO_WMATIC_RATE","nameLocation":"1560:19:54","nodeType":"VariableDeclaration","scope":10982,"src":"1536:68:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10651,"name":"uint256","nodeType":"ElementaryTypeName","src":"1536:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35323733353736343130363835303732373832373533","id":10652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1582:22:54","typeDescriptions":{"typeIdentifier":"t_rational_5273576410685072782753_by_1","typeString":"int_const 5273576410685072782753"},"value":"5273576410685072782753"},"visibility":"public"},{"constant":true,"functionSelector":"4039e687","id":10656,"mutability":"constant","name":"WETH_TO_USDC_RATE","nameLocation":"1635:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1611:54:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10654,"name":"uint256","nodeType":"ElementaryTypeName","src":"1611:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33373831333832313534","id":10655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1655:10:54","typeDescriptions":{"typeIdentifier":"t_rational_3781382154_by_1","typeString":"int_const 3781382154"},"value":"3781382154"},"visibility":"public"},{"constant":true,"functionSelector":"5fc8cd69","id":10659,"mutability":"constant","name":"WETH_TO_USDT_RATE","nameLocation":"1696:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1672:54:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10657,"name":"uint256","nodeType":"ElementaryTypeName","src":"1672:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33373439313633383837","id":10658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1716:10:54","typeDescriptions":{"typeIdentifier":"t_rational_3749163887_by_1","typeString":"int_const 3749163887"},"value":"3749163887"},"visibility":"public"},{"constant":true,"functionSelector":"43146399","id":10662,"mutability":"constant","name":"WETH_TO_WBTC_RATE","nameLocation":"1757:17:54","nodeType":"VariableDeclaration","scope":10982,"src":"1733:51:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10660,"name":"uint256","nodeType":"ElementaryTypeName","src":"1733:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35353631383231","id":10661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1777:7:54","typeDescriptions":{"typeIdentifier":"t_rational_5561821_by_1","typeString":"int_const 5561821"},"value":"5561821"},"visibility":"public"},{"constant":false,"functionSelector":"89a30271","id":10664,"mutability":"mutable","name":"USDC","nameLocation":"1808:4:54","nodeType":"VariableDeclaration","scope":10982,"src":"1793:19:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10663,"name":"address","nodeType":"ElementaryTypeName","src":"1793:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"b381cf40","id":10666,"mutability":"mutable","name":"WNATIVE","nameLocation":"1834:7:54","nodeType":"VariableDeclaration","scope":10982,"src":"1819:22:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10665,"name":"address","nodeType":"ElementaryTypeName","src":"1819:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"61d027b3","id":10668,"mutability":"mutable","name":"treasury","nameLocation":"1865:8:54","nodeType":"VariableDeclaration","scope":10982,"src":"1850:23:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10667,"name":"address","nodeType":"ElementaryTypeName","src":"1850:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":10854,"nodeType":"Block","src":"1968:1101:54","statements":[{"expression":{"id":10683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10681,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"1979:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10682,"name":"_wmatic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10674,"src":"1989:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1979:17:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10684,"nodeType":"ExpressionStatement","src":"1979:17:54"},{"expression":{"id":10687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10685,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2007:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10686,"name":"_usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10672,"src":"2014:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2007:12:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10688,"nodeType":"ExpressionStatement","src":"2007:12:54"},{"expression":{"id":10692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10689,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10668,"src":"2030:8:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10690,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2041:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2045:6:54","memberName":"sender","nodeType":"MemberAccess","src":"2041:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2030:21:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10693,"nodeType":"ExpressionStatement","src":"2030:21:54"},{"expression":{"id":10700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10694,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2064:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10697,"indexExpression":{"id":10695,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"2070:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2064:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10698,"indexExpression":{"id":10696,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2076:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2064:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10699,"name":"USDT_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10644,"src":"2084:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2064:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10701,"nodeType":"ExpressionStatement","src":"2064:37:54"},{"expression":{"id":10708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10702,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2112:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10705,"indexExpression":{"id":10703,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"2118:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2112:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10706,"indexExpression":{"id":10704,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"2124:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2112:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10707,"name":"USDT_TO_WMATIC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10650,"src":"2135:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2112:42:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10709,"nodeType":"ExpressionStatement","src":"2112:42:54"},{"expression":{"id":10716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10710,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2165:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10713,"indexExpression":{"id":10711,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"2171:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2165:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10714,"indexExpression":{"id":10712,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"2177:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2165:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10715,"name":"USDT_TO_WBTC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10641,"src":"2185:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2165:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10717,"nodeType":"ExpressionStatement","src":"2165:37:54"},{"expression":{"id":10724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10718,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2213:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10721,"indexExpression":{"id":10719,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"2219:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2213:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10722,"indexExpression":{"id":10720,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10676,"src":"2225:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2213:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10723,"name":"USDT_TO_WETH_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10647,"src":"2233:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2213:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10725,"nodeType":"ExpressionStatement","src":"2213:37:54"},{"expression":{"id":10732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10726,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2263:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10729,"indexExpression":{"id":10727,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"2269:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2263:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10730,"indexExpression":{"id":10728,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"2275:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2263:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10731,"name":"WBTC_TO_USDT_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10632,"src":"2283:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2263:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10733,"nodeType":"ExpressionStatement","src":"2263:37:54"},{"expression":{"id":10740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10734,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2311:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10737,"indexExpression":{"id":10735,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"2317:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2311:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10738,"indexExpression":{"id":10736,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"2323:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2311:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10739,"name":"WBTC_TO_WMATIC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10629,"src":"2334:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2311:42:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10741,"nodeType":"ExpressionStatement","src":"2311:42:54"},{"expression":{"id":10748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10742,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2364:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10745,"indexExpression":{"id":10743,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"2370:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2364:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10746,"indexExpression":{"id":10744,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2376:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2364:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10747,"name":"WBTC_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10638,"src":"2384:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2364:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10749,"nodeType":"ExpressionStatement","src":"2364:37:54"},{"expression":{"id":10756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10750,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2412:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10753,"indexExpression":{"id":10751,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"2418:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2412:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10754,"indexExpression":{"id":10752,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10676,"src":"2424:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2412:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10755,"name":"WBTC_TO_WETH_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10635,"src":"2432:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2412:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10757,"nodeType":"ExpressionStatement","src":"2412:37:54"},{"expression":{"id":10764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10758,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2462:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10761,"indexExpression":{"id":10759,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2468:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2462:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10762,"indexExpression":{"id":10760,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"2474:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2462:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10763,"name":"USDC_TO_USDT_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10608,"src":"2482:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2462:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10765,"nodeType":"ExpressionStatement","src":"2462:37:54"},{"expression":{"id":10772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10766,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2510:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10769,"indexExpression":{"id":10767,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2516:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2510:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10770,"indexExpression":{"id":10768,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"2522:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2510:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10771,"name":"USDC_TO_WBTC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10611,"src":"2530:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2510:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10773,"nodeType":"ExpressionStatement","src":"2510:37:54"},{"expression":{"id":10780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10774,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2558:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10777,"indexExpression":{"id":10775,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2564:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2558:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10778,"indexExpression":{"id":10776,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"2570:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2558:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10779,"name":"USDC_TO_WMATIC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10614,"src":"2581:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2558:42:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10781,"nodeType":"ExpressionStatement","src":"2558:42:54"},{"expression":{"id":10788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10782,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2611:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10785,"indexExpression":{"id":10783,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2617:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2611:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10786,"indexExpression":{"id":10784,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10676,"src":"2623:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2611:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10787,"name":"USDC_TO_WETH_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"2631:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2611:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10789,"nodeType":"ExpressionStatement","src":"2611:37:54"},{"expression":{"id":10796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10790,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2661:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10793,"indexExpression":{"id":10791,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"2667:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2661:14:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10794,"indexExpression":{"id":10792,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"2676:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2661:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10795,"name":"WMATIC_TO_WBTC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"2684:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2661:42:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10797,"nodeType":"ExpressionStatement","src":"2661:42:54"},{"expression":{"id":10804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10798,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2714:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10801,"indexExpression":{"id":10799,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"2720:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2714:14:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10802,"indexExpression":{"id":10800,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10676,"src":"2729:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2714:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10803,"name":"WMATIC_TO_WETH_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10626,"src":"2737:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2714:42:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10805,"nodeType":"ExpressionStatement","src":"2714:42:54"},{"expression":{"id":10812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10806,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2767:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10809,"indexExpression":{"id":10807,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"2773:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2767:14:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10810,"indexExpression":{"id":10808,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2782:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2767:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10811,"name":"WMATIC_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10620,"src":"2790:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2767:42:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10813,"nodeType":"ExpressionStatement","src":"2767:42:54"},{"expression":{"id":10820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10814,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2820:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10817,"indexExpression":{"id":10815,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"2826:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2820:14:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10818,"indexExpression":{"id":10816,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"2835:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2820:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10819,"name":"WMATIC_TO_USDT_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10617,"src":"2843:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2820:42:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10821,"nodeType":"ExpressionStatement","src":"2820:42:54"},{"expression":{"id":10828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10822,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2875:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10825,"indexExpression":{"id":10823,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10676,"src":"2881:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2875:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10826,"indexExpression":{"id":10824,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"2887:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2875:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10827,"name":"WETH_TO_WMATIC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10653,"src":"2898:19:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2875:42:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10829,"nodeType":"ExpressionStatement","src":"2875:42:54"},{"expression":{"id":10836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10830,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2928:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10833,"indexExpression":{"id":10831,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10676,"src":"2934:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2928:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10834,"indexExpression":{"id":10832,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10664,"src":"2940:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2928:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10835,"name":"WETH_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10656,"src":"2948:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2928:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10837,"nodeType":"ExpressionStatement","src":"2928:37:54"},{"expression":{"id":10844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10838,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"2976:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10841,"indexExpression":{"id":10839,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10676,"src":"2982:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2976:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10842,"indexExpression":{"id":10840,"name":"usdt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"2988:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2976:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10843,"name":"WETH_TO_USDC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10656,"src":"2996:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2976:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10845,"nodeType":"ExpressionStatement","src":"2976:37:54"},{"expression":{"id":10852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10846,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"3024:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10849,"indexExpression":{"id":10847,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10676,"src":"3030:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3024:11:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10850,"indexExpression":{"id":10848,"name":"wbtc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"3036:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3024:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10851,"name":"WETH_TO_WBTC_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10662,"src":"3044:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3024:37:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10853,"nodeType":"ExpressionStatement","src":"3024:37:54"}]},"id":10855,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10670,"mutability":"mutable","name":"usdt","nameLocation":"1902:4:54","nodeType":"VariableDeclaration","scope":10855,"src":"1894:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10669,"name":"address","nodeType":"ElementaryTypeName","src":"1894:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10672,"mutability":"mutable","name":"_usdc","nameLocation":"1916:5:54","nodeType":"VariableDeclaration","scope":10855,"src":"1908:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10671,"name":"address","nodeType":"ElementaryTypeName","src":"1908:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10674,"mutability":"mutable","name":"_wmatic","nameLocation":"1931:7:54","nodeType":"VariableDeclaration","scope":10855,"src":"1923:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10673,"name":"address","nodeType":"ElementaryTypeName","src":"1923:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10676,"mutability":"mutable","name":"weth","nameLocation":"1948:4:54","nodeType":"VariableDeclaration","scope":10855,"src":"1940:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10675,"name":"address","nodeType":"ElementaryTypeName","src":"1940:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10678,"mutability":"mutable","name":"wbtc","nameLocation":"1962:4:54","nodeType":"VariableDeclaration","scope":10855,"src":"1954:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10677,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1893:74:54"},"returnParameters":{"id":10680,"nodeType":"ParameterList","parameters":[],"src":"1968:0:54"},"scope":10982,"src":"1882:1187:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10872,"nodeType":"Block","src":"3153:51:54","statements":[{"expression":{"id":10870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":10864,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"3164:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10867,"indexExpression":{"id":10865,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10857,"src":"3170:9:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3164:16:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10868,"indexExpression":{"id":10866,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10859,"src":"3181:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3164:25:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10869,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10861,"src":"3192:4:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3164:32:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10871,"nodeType":"ExpressionStatement","src":"3164:32:54"}]},"functionSelector":"5911fb9a","id":10873,"implemented":true,"kind":"function","modifiers":[],"name":"setRate","nameLocation":"3086:7:54","nodeType":"FunctionDefinition","parameters":{"id":10862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10857,"mutability":"mutable","name":"fromToken","nameLocation":"3102:9:54","nodeType":"VariableDeclaration","scope":10873,"src":"3094:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10856,"name":"address","nodeType":"ElementaryTypeName","src":"3094:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10859,"mutability":"mutable","name":"toToken","nameLocation":"3121:7:54","nodeType":"VariableDeclaration","scope":10873,"src":"3113:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10858,"name":"address","nodeType":"ElementaryTypeName","src":"3113:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10861,"mutability":"mutable","name":"rate","nameLocation":"3138:4:54","nodeType":"VariableDeclaration","scope":10873,"src":"3130:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10860,"name":"uint256","nodeType":"ElementaryTypeName","src":"3130:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3093:50:54"},"returnParameters":{"id":10863,"nodeType":"ParameterList","parameters":[],"src":"3153:0:54"},"scope":10982,"src":"3077:127:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10898,"nodeType":"Block","src":"3314:69:54","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":10886,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"3332:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10891,"indexExpression":{"arguments":[{"id":10889,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10876,"src":"3346:9:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}],"id":10888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3338:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10887,"name":"address","nodeType":"ElementaryTypeName","src":"3338:7:54","typeDescriptions":{}}},"id":10890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:18:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3332:25:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10896,"indexExpression":{"arguments":[{"id":10894,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10879,"src":"3366:7:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}],"id":10893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3358:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10892,"name":"address","nodeType":"ElementaryTypeName","src":"3358:7:54","typeDescriptions":{}}},"id":10895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3358:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3332:43:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10885,"id":10897,"nodeType":"Return","src":"3325:50:54"}]},"functionSelector":"802431fb","id":10899,"implemented":true,"kind":"function","modifiers":[],"name":"getRate","nameLocation":"3221:7:54","nodeType":"FunctionDefinition","parameters":{"id":10882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10876,"mutability":"mutable","name":"fromToken","nameLocation":"3236:9:54","nodeType":"VariableDeclaration","scope":10899,"src":"3229:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":10875,"nodeType":"UserDefinedTypeName","pathNode":{"id":10874,"name":"IERC20","nameLocations":["3229:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"3229:6:54"},"referencedDeclaration":2651,"src":"3229:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10879,"mutability":"mutable","name":"toToken","nameLocation":"3254:7:54","nodeType":"VariableDeclaration","scope":10899,"src":"3247:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":10878,"nodeType":"UserDefinedTypeName","pathNode":{"id":10877,"name":"IERC20","nameLocations":["3247:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"3247:6:54"},"referencedDeclaration":2651,"src":"3247:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10899,"src":"3263:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10880,"name":"bool","nodeType":"ElementaryTypeName","src":"3263:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3228:53:54"},"returnParameters":{"id":10885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10899,"src":"3305:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10883,"name":"uint256","nodeType":"ElementaryTypeName","src":"3305:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3304:9:54"},"scope":10982,"src":"3212:171:54","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10918,"nodeType":"Block","src":"3482:60:54","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":10909,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10602,"src":"3500:5:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10914,"indexExpression":{"arguments":[{"id":10912,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10902,"src":"3514:9:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}],"id":10911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3506:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10910,"name":"address","nodeType":"ElementaryTypeName","src":"3506:7:54","typeDescriptions":{}}},"id":10913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3506:18:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3500:25:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10916,"indexExpression":{"id":10915,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10666,"src":"3526:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3500:34:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10908,"id":10917,"nodeType":"Return","src":"3493:41:54"}]},"functionSelector":"7de4fd10","id":10919,"implemented":true,"kind":"function","modifiers":[],"name":"getRateToEth","nameLocation":"3400:12:54","nodeType":"FunctionDefinition","parameters":{"id":10905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10902,"mutability":"mutable","name":"fromToken","nameLocation":"3420:9:54","nodeType":"VariableDeclaration","scope":10919,"src":"3413:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":10901,"nodeType":"UserDefinedTypeName","pathNode":{"id":10900,"name":"IERC20","nameLocations":["3413:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"3413:6:54"},"referencedDeclaration":2651,"src":"3413:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10919,"src":"3431:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10903,"name":"bool","nodeType":"ElementaryTypeName","src":"3431:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3412:37:54"},"returnParameters":{"id":10908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10919,"src":"3473:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10906,"name":"uint256","nodeType":"ElementaryTypeName","src":"3473:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3472:9:54"},"scope":10982,"src":"3391:151:54","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10934,"nodeType":"Block","src":"3766:2:54","statements":[]},"functionSelector":"84db1dfb","id":10935,"implemented":true,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"3559:9:54","nodeType":"FunctionDefinition","parameters":{"id":10932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10935,"src":"3579:18:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10920,"name":"address","nodeType":"ElementaryTypeName","src":"3579:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10921,"nodeType":"ArrayTypeName","src":"3579:9:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":10925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10935,"src":"3621:18:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10923,"name":"uint256","nodeType":"ElementaryTypeName","src":"3621:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10924,"nodeType":"ArrayTypeName","src":"3621:9:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10935,"src":"3664:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10926,"name":"address","nodeType":"ElementaryTypeName","src":"3664:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10935,"src":"3695:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10928,"name":"address","nodeType":"ElementaryTypeName","src":"3695:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10935,"src":"3728:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10930,"name":"uint256","nodeType":"ElementaryTypeName","src":"3728:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3568:188:54"},"returnParameters":{"id":10933,"nodeType":"ParameterList","parameters":[],"src":"3766:0:54"},"scope":10982,"src":"3550:218:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10951,"nodeType":"Block","src":"3964:30:54","statements":[{"expression":{"hexValue":"74727565","id":10949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3982:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10948,"id":10950,"nodeType":"Return","src":"3975:11:54"}]},"functionSelector":"18cdc49a","id":10952,"implemented":true,"kind":"function","modifiers":[],"name":"checkRebalance","nameLocation":"3785:14:54","nodeType":"FunctionDefinition","parameters":{"id":10945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10938,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10952,"src":"3810:18:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10936,"name":"address","nodeType":"ElementaryTypeName","src":"3810:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10937,"nodeType":"ArrayTypeName","src":"3810:9:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":10941,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10952,"src":"3852:18:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10939,"name":"uint256","nodeType":"ElementaryTypeName","src":"3852:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10940,"nodeType":"ArrayTypeName","src":"3852:9:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10952,"src":"3895:18:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10942,"name":"uint256","nodeType":"ElementaryTypeName","src":"3895:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10943,"nodeType":"ArrayTypeName","src":"3895:9:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3799:135:54"},"returnParameters":{"id":10948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10952,"src":"3958:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10946,"name":"bool","nodeType":"ElementaryTypeName","src":"3958:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3957:6:54"},"scope":10982,"src":"3776:218:54","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10962,"nodeType":"Block","src":"4061:36:54","statements":[{"expression":{"arguments":[{"hexValue":"30","id":10959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4087:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4079:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10957,"name":"address","nodeType":"ElementaryTypeName","src":"4079:7:54","typeDescriptions":{}}},"id":10960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4079:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10956,"id":10961,"nodeType":"Return","src":"4072:17:54"}]},"functionSelector":"04cc7325","id":10963,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniRouter","nameLocation":"4011:15:54","nodeType":"FunctionDefinition","parameters":{"id":10953,"nodeType":"ParameterList","parameters":[],"src":"4026:2:54"},"returnParameters":{"id":10956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10963,"src":"4052:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10954,"name":"address","nodeType":"ElementaryTypeName","src":"4052:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4051:9:54"},"scope":10982,"src":"4002:95:54","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10970,"nodeType":"Block","src":"4160:34:54","statements":[{"expression":{"id":10968,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10668,"src":"4178:8:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10967,"id":10969,"nodeType":"Return","src":"4171:15:54"}]},"functionSelector":"3b19e84a","id":10971,"implemented":true,"kind":"function","modifiers":[],"name":"getTreasury","nameLocation":"4114:11:54","nodeType":"FunctionDefinition","parameters":{"id":10964,"nodeType":"ParameterList","parameters":[],"src":"4125:2:54"},"returnParameters":{"id":10967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10971,"src":"4151:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10965,"name":"address","nodeType":"ElementaryTypeName","src":"4151:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4150:9:54"},"scope":10982,"src":"4105:89:54","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10980,"nodeType":"Block","src":"4251:39:54","statements":[{"expression":{"id":10978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10976,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10668,"src":"4262:8:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10977,"name":"_treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10973,"src":"4273:9:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4262:20:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10979,"nodeType":"ExpressionStatement","src":"4262:20:54"}]},"functionSelector":"f0f44260","id":10981,"implemented":true,"kind":"function","modifiers":[],"name":"setTreasury","nameLocation":"4211:11:54","nodeType":"FunctionDefinition","parameters":{"id":10974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10973,"mutability":"mutable","name":"_treasury","nameLocation":"4231:9:54","nodeType":"VariableDeclaration","scope":10981,"src":"4223:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10972,"name":"address","nodeType":"ElementaryTypeName","src":"4223:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4222:19:54"},"returnParameters":{"id":10975,"nodeType":"ParameterList","parameters":[],"src":"4251:0:54"},"scope":10982,"src":"4202:88:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10983,"src":"253:4040:54","usedErrors":[],"usedEvents":[]}],"src":"40:4255:54"},"id":54},"contracts/mock/MockSwapRouter.sol":{"ast":{"absolutePath":"contracts/mock/MockSwapRouter.sol","exportedSymbols":{"IERC20":[2651],"MockSwapRouter":[11039]},"id":11040,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10984,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"33:23:55"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":10985,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11040,"sourceUnit":2652,"src":"60:56:55","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"MockSwapRouter","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":11039,"linearizedBaseContracts":[11039],"name":"MockSwapRouter","nameLocation":"129:14:55","nodeType":"ContractDefinition","nodes":[{"canonicalName":"MockSwapRouter.ExactInputSingleParams","id":11002,"members":[{"constant":false,"id":10987,"mutability":"mutable","name":"tokenIn","nameLocation":"200:7:55","nodeType":"VariableDeclaration","scope":11002,"src":"192:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10986,"name":"address","nodeType":"ElementaryTypeName","src":"192:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10989,"mutability":"mutable","name":"tokenOut","nameLocation":"226:8:55","nodeType":"VariableDeclaration","scope":11002,"src":"218:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10988,"name":"address","nodeType":"ElementaryTypeName","src":"218:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10991,"mutability":"mutable","name":"fee","nameLocation":"252:3:55","nodeType":"VariableDeclaration","scope":11002,"src":"245:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":10990,"name":"uint24","nodeType":"ElementaryTypeName","src":"245:6:55","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":10993,"mutability":"mutable","name":"recipient","nameLocation":"274:9:55","nodeType":"VariableDeclaration","scope":11002,"src":"266:17:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10992,"name":"address","nodeType":"ElementaryTypeName","src":"266:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10995,"mutability":"mutable","name":"deadline","nameLocation":"302:8:55","nodeType":"VariableDeclaration","scope":11002,"src":"294:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10994,"name":"uint256","nodeType":"ElementaryTypeName","src":"294:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10997,"mutability":"mutable","name":"amountIn","nameLocation":"329:8:55","nodeType":"VariableDeclaration","scope":11002,"src":"321:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10996,"name":"uint256","nodeType":"ElementaryTypeName","src":"321:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10999,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"356:16:55","nodeType":"VariableDeclaration","scope":11002,"src":"348:24:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10998,"name":"uint256","nodeType":"ElementaryTypeName","src":"348:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11001,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"391:17:55","nodeType":"VariableDeclaration","scope":11002,"src":"383:25:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11000,"name":"uint160","nodeType":"ElementaryTypeName","src":"383:7:55","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactInputSingleParams","nameLocation":"158:22:55","nodeType":"StructDefinition","scope":11039,"src":"151:265:55","visibility":"public"},{"canonicalName":"MockSwapRouter.ExactInputParams","id":11014,"members":[{"constant":false,"id":11005,"mutability":"mutable","name":"path","nameLocation":"469:4:55","nodeType":"VariableDeclaration","scope":11014,"src":"459:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11003,"name":"address","nodeType":"ElementaryTypeName","src":"459:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11004,"nodeType":"ArrayTypeName","src":"459:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":11007,"mutability":"mutable","name":"recipient","nameLocation":"492:9:55","nodeType":"VariableDeclaration","scope":11014,"src":"484:17:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11006,"name":"address","nodeType":"ElementaryTypeName","src":"484:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11009,"mutability":"mutable","name":"deadline","nameLocation":"520:8:55","nodeType":"VariableDeclaration","scope":11014,"src":"512:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11008,"name":"uint256","nodeType":"ElementaryTypeName","src":"512:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11011,"mutability":"mutable","name":"amountIn","nameLocation":"547:8:55","nodeType":"VariableDeclaration","scope":11014,"src":"539:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11010,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11013,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"574:16:55","nodeType":"VariableDeclaration","scope":11014,"src":"566:24:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11012,"name":"uint256","nodeType":"ElementaryTypeName","src":"566:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactInputParams","nameLocation":"431:16:55","nodeType":"StructDefinition","scope":11039,"src":"424:174:55","visibility":"public"},{"body":{"id":11025,"nodeType":"Block","src":"717:120:55","statements":[{"expression":{"expression":{"id":11022,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11017,"src":"814:6:55","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$11002_calldata_ptr","typeString":"struct MockSwapRouter.ExactInputSingleParams calldata"}},"id":11023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"821:8:55","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":10997,"src":"814:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11021,"id":11024,"nodeType":"Return","src":"807:22:55"}]},"functionSelector":"414bf389","id":11026,"implemented":true,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"615:16:55","nodeType":"FunctionDefinition","parameters":{"id":11018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11017,"mutability":"mutable","name":"params","nameLocation":"664:6:55","nodeType":"VariableDeclaration","scope":11026,"src":"632:38:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$11002_calldata_ptr","typeString":"struct MockSwapRouter.ExactInputSingleParams"},"typeName":{"id":11016,"nodeType":"UserDefinedTypeName","pathNode":{"id":11015,"name":"ExactInputSingleParams","nameLocations":["632:22:55"],"nodeType":"IdentifierPath","referencedDeclaration":11002,"src":"632:22:55"},"referencedDeclaration":11002,"src":"632:22:55","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$11002_storage_ptr","typeString":"struct MockSwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"631:40:55"},"returnParameters":{"id":11021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11020,"mutability":"mutable","name":"amountOut","nameLocation":"706:9:55","nodeType":"VariableDeclaration","scope":11026,"src":"698:17:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11019,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"697:19:55"},"scope":11039,"src":"606:231:55","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11037,"nodeType":"Block","src":"944:120:55","statements":[{"expression":{"expression":{"id":11034,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11029,"src":"1041:6:55","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$11014_calldata_ptr","typeString":"struct MockSwapRouter.ExactInputParams calldata"}},"id":11035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1048:8:55","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":11011,"src":"1041:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11033,"id":11036,"nodeType":"Return","src":"1034:22:55"}]},"functionSelector":"c96b921f","id":11038,"implemented":true,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"854:10:55","nodeType":"FunctionDefinition","parameters":{"id":11030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11029,"mutability":"mutable","name":"params","nameLocation":"891:6:55","nodeType":"VariableDeclaration","scope":11038,"src":"865:32:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$11014_calldata_ptr","typeString":"struct MockSwapRouter.ExactInputParams"},"typeName":{"id":11028,"nodeType":"UserDefinedTypeName","pathNode":{"id":11027,"name":"ExactInputParams","nameLocations":["865:16:55"],"nodeType":"IdentifierPath","referencedDeclaration":11014,"src":"865:16:55"},"referencedDeclaration":11014,"src":"865:16:55","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$11014_storage_ptr","typeString":"struct MockSwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"864:34:55"},"returnParameters":{"id":11033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11032,"mutability":"mutable","name":"amountOut","nameLocation":"933:9:55","nodeType":"VariableDeclaration","scope":11038,"src":"925:17:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11031,"name":"uint256","nodeType":"ElementaryTypeName","src":"925:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:19:55"},"scope":11039,"src":"845:219:55","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":11040,"src":"120:947:55","usedErrors":[],"usedEvents":[]}],"src":"33:1036:55"},"id":55},"contracts/mock/MockToken.sol":{"ast":{"absolutePath":"contracts/mock/MockToken.sol","exportedSymbols":{"Context":[2960],"ERC20":[2573],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"MockToken":[11087]},"id":11088,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11041,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"33:23:56"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":11042,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11088,"sourceUnit":2574,"src":"60:55:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11043,"name":"ERC20","nameLocations":["141:5:56"],"nodeType":"IdentifierPath","referencedDeclaration":2573,"src":"141:5:56"},"id":11044,"nodeType":"InheritanceSpecifier","src":"141:5:56"}],"canonicalName":"MockToken","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":11087,"linearizedBaseContracts":[11087,2573,1650,2677,2651,2960],"name":"MockToken","nameLocation":"128:9:56","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":11046,"mutability":"mutable","name":"_decimals","nameLocation":"168:9:56","nodeType":"VariableDeclaration","scope":11087,"src":"154:23:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11045,"name":"uint8","nodeType":"ElementaryTypeName","src":"154:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"body":{"id":11063,"nodeType":"Block","src":"277:40:56","statements":[{"expression":{"id":11061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11059,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11046,"src":"288:9:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11060,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11052,"src":"300:9:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"288:21:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":11062,"nodeType":"ExpressionStatement","src":"288:21:56"}]},"id":11064,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11055,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11048,"src":"263:4:56","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":11056,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"269:6:56","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":11057,"kind":"baseConstructorSpecifier","modifierName":{"id":11054,"name":"ERC20","nameLocations":["257:5:56"],"nodeType":"IdentifierPath","referencedDeclaration":2573,"src":"257:5:56"},"nodeType":"ModifierInvocation","src":"257:19:56"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11048,"mutability":"mutable","name":"name","nameLocation":"212:4:56","nodeType":"VariableDeclaration","scope":11064,"src":"198:18:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11047,"name":"string","nodeType":"ElementaryTypeName","src":"198:6:56","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":11050,"mutability":"mutable","name":"symbol","nameLocation":"232:6:56","nodeType":"VariableDeclaration","scope":11064,"src":"218:20:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11049,"name":"string","nodeType":"ElementaryTypeName","src":"218:6:56","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":11052,"mutability":"mutable","name":"decimals_","nameLocation":"246:9:56","nodeType":"VariableDeclaration","scope":11064,"src":"240:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11051,"name":"uint8","nodeType":"ElementaryTypeName","src":"240:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"197:59:56"},"returnParameters":{"id":11058,"nodeType":"ParameterList","parameters":[],"src":"277:0:56"},"scope":11087,"src":"186:131:56","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2137],"body":{"id":11072,"nodeType":"Block","src":"382:35:56","statements":[{"expression":{"id":11070,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11046,"src":"400:9:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":11069,"id":11071,"nodeType":"Return","src":"393:16:56"}]},"functionSelector":"313ce567","id":11073,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"334:8:56","nodeType":"FunctionDefinition","overrides":{"id":11066,"nodeType":"OverrideSpecifier","overrides":[],"src":"357:8:56"},"parameters":{"id":11065,"nodeType":"ParameterList","parameters":[],"src":"342:2:56"},"returnParameters":{"id":11069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11068,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11073,"src":"375:5:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11067,"name":"uint8","nodeType":"ElementaryTypeName","src":"375:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"374:7:56"},"scope":11087,"src":"325:92:56","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11085,"nodeType":"Block","src":"474:36:56","statements":[{"expression":{"arguments":[{"id":11081,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11075,"src":"491:2:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11082,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11077,"src":"495:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11080,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2413,"src":"485:5:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":11083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"485:17:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11084,"nodeType":"ExpressionStatement","src":"485:17:56"}]},"functionSelector":"40c10f19","id":11086,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"434:4:56","nodeType":"FunctionDefinition","parameters":{"id":11078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11075,"mutability":"mutable","name":"to","nameLocation":"447:2:56","nodeType":"VariableDeclaration","scope":11086,"src":"439:10:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11074,"name":"address","nodeType":"ElementaryTypeName","src":"439:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11077,"mutability":"mutable","name":"amount","nameLocation":"459:6:56","nodeType":"VariableDeclaration","scope":11086,"src":"451:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11076,"name":"uint256","nodeType":"ElementaryTypeName","src":"451:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"438:28:56"},"returnParameters":{"id":11079,"nodeType":"ParameterList","parameters":[],"src":"474:0:56"},"scope":11087,"src":"425:85:56","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":11088,"src":"119:394:56","usedErrors":[1620,1625,1630,1639,1644,1649],"usedEvents":[2585,2594]}],"src":"33:482:56"},"id":56},"contracts/oracles/BaluniV1Oracle.sol":{"ast":{"absolutePath":"contracts/oracles/BaluniV1Oracle.sol","exportedSymbols":{"BaluniV1Oracle":[11632],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"I1inchSpotAgg":[3793],"IBaluniV1Oracle":[4240],"IBaluniV1Registry":[4909],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"IStaticOracle":[5456],"IUniswapV3Factory":[3153],"Initializable":[448],"OwnableUpgradeable":[194],"UUPSUpgradeable":[630]},"id":11633,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":11089,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:57"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":11090,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11633,"sourceUnit":195,"src":"1470:75:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":11091,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11633,"sourceUnit":449,"src":"1547:75:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":11092,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11633,"sourceUnit":631,"src":"1624:77:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":11093,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11633,"sourceUnit":1248,"src":"1703:78:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/I1inchSpotAgg.sol","file":"../interfaces/I1inchSpotAgg.sol","id":11094,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11633,"sourceUnit":3794,"src":"1783:41:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":11095,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11633,"sourceUnit":4910,"src":"1826:45:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","file":"../interfaces/IBaluniV1Oracle.sol","id":11096,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11633,"sourceUnit":4241,"src":"1873:43:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IStaticOracle.sol","file":"../interfaces/IStaticOracle.sol","id":11097,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11633,"sourceUnit":5457,"src":"1918:41:57","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11098,"name":"Initializable","nameLocations":["1990:13:57"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1990:13:57"},"id":11099,"nodeType":"InheritanceSpecifier","src":"1990:13:57"},{"baseName":{"id":11100,"name":"OwnableUpgradeable","nameLocations":["2005:18:57"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"2005:18:57"},"id":11101,"nodeType":"InheritanceSpecifier","src":"2005:18:57"},{"baseName":{"id":11102,"name":"UUPSUpgradeable","nameLocations":["2025:15:57"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"2025:15:57"},"id":11103,"nodeType":"InheritanceSpecifier","src":"2025:15:57"},{"baseName":{"id":11104,"name":"IBaluniV1Oracle","nameLocations":["2042:15:57"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"2042:15:57"},"id":11105,"nodeType":"InheritanceSpecifier","src":"2042:15:57"}],"canonicalName":"BaluniV1Oracle","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":11632,"linearizedBaseContracts":[11632,4240,630,1608,194,1293,448],"name":"BaluniV1Oracle","nameLocation":"1972:14:57","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"7b103999","id":11108,"mutability":"mutable","name":"registry","nameLocation":"2090:8:57","nodeType":"VariableDeclaration","scope":11632,"src":"2065:33:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":11107,"nodeType":"UserDefinedTypeName","pathNode":{"id":11106,"name":"IBaluniV1Registry","nameLocations":["2065:17:57"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"2065:17:57"},"referencedDeclaration":4909,"src":"2065:17:57","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"body":{"id":11129,"nodeType":"Block","src":"2165:130:57","statements":[{"expression":{"arguments":[{"expression":{"id":11116,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2191:3:57","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2195:6:57","memberName":"sender","nodeType":"MemberAccess","src":"2191:10:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11115,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2176:14:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11119,"nodeType":"ExpressionStatement","src":"2176:26:57"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11120,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2213:22:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2213:24:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11122,"nodeType":"ExpressionStatement","src":"2213:24:57"},{"expression":{"id":11127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11123,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11108,"src":"2248:8:57","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11125,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11110,"src":"2277:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11124,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2259:17:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":11126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2259:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2248:39:57","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11128,"nodeType":"ExpressionStatement","src":"2248:39:57"}]},"functionSelector":"c4d66de8","id":11130,"implemented":true,"kind":"function","modifiers":[{"id":11113,"kind":"modifierInvocation","modifierName":{"id":11112,"name":"initializer","nameLocations":["2153:11:57"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2153:11:57"},"nodeType":"ModifierInvocation","src":"2153:11:57"}],"name":"initialize","nameLocation":"2116:10:57","nodeType":"FunctionDefinition","parameters":{"id":11111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11110,"mutability":"mutable","name":"_registry","nameLocation":"2135:9:57","nodeType":"VariableDeclaration","scope":11130,"src":"2127:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11109,"name":"address","nodeType":"ElementaryTypeName","src":"2127:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2126:19:57"},"returnParameters":{"id":11114,"nodeType":"ParameterList","parameters":[],"src":"2165:0:57"},"scope":11632,"src":"2107:188:57","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11154,"nodeType":"Block","src":"2390:130:57","statements":[{"expression":{"arguments":[{"expression":{"id":11141,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2416:3:57","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2420:6:57","memberName":"sender","nodeType":"MemberAccess","src":"2416:10:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11140,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2401:14:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2401:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11144,"nodeType":"ExpressionStatement","src":"2401:26:57"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11145,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2438:22:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2438:24:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11147,"nodeType":"ExpressionStatement","src":"2438:24:57"},{"expression":{"id":11152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11148,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11108,"src":"2473:8:57","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11150,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11132,"src":"2502:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11149,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2484:17:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":11151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2484:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2473:39:57","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11153,"nodeType":"ExpressionStatement","src":"2473:39:57"}]},"functionSelector":"8f2248bc","id":11155,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11137,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11134,"src":"2381:7:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":11138,"kind":"modifierInvocation","modifierName":{"id":11136,"name":"reinitializer","nameLocations":["2367:13:57"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2367:13:57"},"nodeType":"ModifierInvocation","src":"2367:22:57"}],"name":"reinitialize","nameLocation":"2312:12:57","nodeType":"FunctionDefinition","parameters":{"id":11135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11132,"mutability":"mutable","name":"_registry","nameLocation":"2333:9:57","nodeType":"VariableDeclaration","scope":11155,"src":"2325:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11131,"name":"address","nodeType":"ElementaryTypeName","src":"2325:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11134,"mutability":"mutable","name":"version","nameLocation":"2351:7:57","nodeType":"VariableDeclaration","scope":11155,"src":"2344:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":11133,"name":"uint64","nodeType":"ElementaryTypeName","src":"2344:6:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2324:35:57"},"returnParameters":{"id":11139,"nodeType":"ParameterList","parameters":[],"src":"2390:0:57"},"scope":11632,"src":"2303:217:57","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4228],"body":{"id":11175,"nodeType":"Block","src":"3159:82:57","statements":[{"expression":{"arguments":[{"id":11170,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11158,"src":"3206:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11171,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11160,"src":"3217:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11172,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11162,"src":"3226:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11168,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3177:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Oracle_$11632","typeString":"contract BaluniV1Oracle"}},"id":11169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3182:23:57","memberName":"convertWithStaticOracle","nodeType":"MemberAccess","referencedDeclaration":11545,"src":"3177:28:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":11173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3177:56:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11167,"id":11174,"nodeType":"Return","src":"3170:63:57"}]},"documentation":{"id":11156,"nodeType":"StructuredDocumentation","src":"2528:473:57","text":" @dev Converts the specified amount of `fromToken` to `toToken` using the available oracle.\n If the conversion fails with the static oracle, it falls back to the aggregator oracle.\n @param fromToken The address of the token to convert from.\n @param toToken The address of the token to convert to.\n @param amount The amount of `fromToken` to convert.\n @return valuation The converted valuation of `amount` in `toToken`."},"functionSelector":"248391ff","id":11176,"implemented":true,"kind":"function","modifiers":[],"name":"convert","nameLocation":"3016:7:57","nodeType":"FunctionDefinition","overrides":{"id":11164,"nodeType":"OverrideSpecifier","overrides":[],"src":"3122:8:57"},"parameters":{"id":11163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11158,"mutability":"mutable","name":"fromToken","nameLocation":"3042:9:57","nodeType":"VariableDeclaration","scope":11176,"src":"3034:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11157,"name":"address","nodeType":"ElementaryTypeName","src":"3034:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11160,"mutability":"mutable","name":"toToken","nameLocation":"3070:7:57","nodeType":"VariableDeclaration","scope":11176,"src":"3062:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11159,"name":"address","nodeType":"ElementaryTypeName","src":"3062:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11162,"mutability":"mutable","name":"amount","nameLocation":"3096:6:57","nodeType":"VariableDeclaration","scope":11176,"src":"3088:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11161,"name":"uint256","nodeType":"ElementaryTypeName","src":"3088:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3023:86:57"},"returnParameters":{"id":11167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11166,"mutability":"mutable","name":"valuation","nameLocation":"3148:9:57","nodeType":"VariableDeclaration","scope":11176,"src":"3140:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11165,"name":"uint256","nodeType":"ElementaryTypeName","src":"3140:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3139:19:57"},"scope":11632,"src":"3007:234:57","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4239],"body":{"id":11196,"nodeType":"Block","src":"3934:88:57","statements":[{"expression":{"arguments":[{"id":11191,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11179,"src":"3987:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11192,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11181,"src":"3998:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11193,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11183,"src":"4007:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11189,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3952:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Oracle_$11632","typeString":"contract BaluniV1Oracle"}},"id":11190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3957:29:57","memberName":"convertScaledWithStaticOracle","nodeType":"MemberAccess","referencedDeclaration":11580,"src":"3952:34:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":11194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3952:62:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11188,"id":11195,"nodeType":"Return","src":"3945:69:57"}]},"documentation":{"id":11177,"nodeType":"StructuredDocumentation","src":"3249:519:57","text":" @dev Converts the specified amount of `fromToken` to `toToken` using the available oracle.\n If the conversion fails with the static oracle, it falls back to the aggregator oracle.\n This function is externally callable.\n @param fromToken The address of the token to convert from.\n @param toToken The address of the token to convert to.\n @param amount The amount of `fromToken` to convert.\n @return valuation The converted valuation of `amount` in `toToken`."},"functionSelector":"b27b5e75","id":11197,"implemented":true,"kind":"function","modifiers":[],"name":"convertScaled","nameLocation":"3783:13:57","nodeType":"FunctionDefinition","overrides":{"id":11185,"nodeType":"OverrideSpecifier","overrides":[],"src":"3897:8:57"},"parameters":{"id":11184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11179,"mutability":"mutable","name":"fromToken","nameLocation":"3815:9:57","nodeType":"VariableDeclaration","scope":11197,"src":"3807:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11178,"name":"address","nodeType":"ElementaryTypeName","src":"3807:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11181,"mutability":"mutable","name":"toToken","nameLocation":"3843:7:57","nodeType":"VariableDeclaration","scope":11197,"src":"3835:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11180,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11183,"mutability":"mutable","name":"amount","nameLocation":"3869:6:57","nodeType":"VariableDeclaration","scope":11197,"src":"3861:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11182,"name":"uint256","nodeType":"ElementaryTypeName","src":"3861:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3796:86:57"},"returnParameters":{"id":11188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11187,"mutability":"mutable","name":"valuation","nameLocation":"3923:9:57","nodeType":"VariableDeclaration","scope":11197,"src":"3915:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11186,"name":"uint256","nodeType":"ElementaryTypeName","src":"3915:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3914:19:57"},"scope":11632,"src":"3774:248:57","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11320,"nodeType":"Block","src":"4565:772:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11209,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11200,"src":"4580:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11210,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11202,"src":"4593:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4580:20:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11214,"nodeType":"IfStatement","src":"4576:39:57","trueBody":{"expression":{"id":11212,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11204,"src":"4609:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11208,"id":11213,"nodeType":"Return","src":"4602:13:57"}},{"assignments":[11216],"declarations":[{"constant":false,"id":11216,"mutability":"mutable","name":"_1InchSpotAgg","nameLocation":"4634:13:57","nodeType":"VariableDeclaration","scope":11320,"src":"4626:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11215,"name":"address","nodeType":"ElementaryTypeName","src":"4626:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11220,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11217,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11108,"src":"4650:8:57","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4659:15:57","memberName":"get1inchSpotAgg","nodeType":"MemberAccess","referencedDeclaration":4858,"src":"4650:24:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4650:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4626:50:57"},{"assignments":[11222],"declarations":[{"constant":false,"id":11222,"mutability":"mutable","name":"fromDecimal","nameLocation":"4693:11:57","nodeType":"VariableDeclaration","scope":11320,"src":"4687:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11221,"name":"uint8","nodeType":"ElementaryTypeName","src":"4687:5:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":11228,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11224,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11200,"src":"4722:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11223,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"4707:14:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4707:25:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4733:8:57","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"4707:34:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":11227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4707:36:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4687:56:57"},{"assignments":[11230],"declarations":[{"constant":false,"id":11230,"mutability":"mutable","name":"toDecimal","nameLocation":"4760:9:57","nodeType":"VariableDeclaration","scope":11320,"src":"4754:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11229,"name":"uint8","nodeType":"ElementaryTypeName","src":"4754:5:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":11236,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11232,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11202,"src":"4787:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11231,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"4772:14:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4772:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4796:8:57","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"4772:32:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":11235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4772:34:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4754:52:57"},{"assignments":[11238],"declarations":[{"constant":false,"id":11238,"mutability":"mutable","name":"rate","nameLocation":"4825:4:57","nodeType":"VariableDeclaration","scope":11320,"src":"4817:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11237,"name":"uint256","nodeType":"ElementaryTypeName","src":"4817:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11251,"initialValue":{"arguments":[{"arguments":[{"id":11244,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11200,"src":"4876:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11243,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4869:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":11245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4869:17:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},{"arguments":[{"id":11247,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11202,"src":"4895:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11246,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4888:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":11248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4888:15:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":11249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4905:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"id":11240,"name":"_1InchSpotAgg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"4846:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11239,"name":"I1inchSpotAgg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"4832:13:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_I1inchSpotAgg_$3793_$","typeString":"type(contract I1inchSpotAgg)"}},"id":11241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4832:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_I1inchSpotAgg_$3793","typeString":"contract I1inchSpotAgg"}},"id":11242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4861:7:57","memberName":"getRate","nodeType":"MemberAccess","referencedDeclaration":3782,"src":"4832:36:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC20_$2651_$_t_contract$_IERC20_$2651_$_t_bool_$returns$_t_uint256_$","typeString":"function (contract IERC20,contract IERC20,bool) view external returns (uint256)"}},"id":11250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4832:79:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4817:94:57"},{"expression":{"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11252,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11238,"src":"4922:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11253,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11238,"src":"4930:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4938:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":11255,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"4944:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4938:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11257,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4937:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4930:26:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11259,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4929:28:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4961:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":11261,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11230,"src":"4967:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4961:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11263,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4960:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4929:48:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4922:55:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11266,"nodeType":"ExpressionStatement","src":"4922:55:57"},{"assignments":[11268],"declarations":[{"constant":false,"id":11268,"mutability":"mutable","name":"factor","nameLocation":"4996:6:57","nodeType":"VariableDeclaration","scope":11320,"src":"4988:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11267,"name":"uint256","nodeType":"ElementaryTypeName","src":"4988:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11269,"nodeType":"VariableDeclarationStatement","src":"4988:14:57"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11270,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"5017:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11271,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11230,"src":"5032:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5017:24:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11316,"nodeType":"Block","src":"5176:127:57","statements":[{"expression":{"id":11302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11295,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11268,"src":"5191:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5200:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11297,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11230,"src":"5207:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11298,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"5219:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5207:23:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":11300,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5206:25:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5200:31:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5191:40:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11303,"nodeType":"ExpressionStatement","src":"5191:40:57"},{"expression":{"id":11314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11304,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11207,"src":"5246:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11305,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11204,"src":"5260:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11306,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11268,"src":"5269:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5260:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11308,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5259:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11309,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11238,"src":"5279:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5259:24:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11311,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5258:26:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":11312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5287:4:57","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"5258:33:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5246:45:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11315,"nodeType":"ExpressionStatement","src":"5246:45:57"}]},"id":11317,"nodeType":"IfStatement","src":"5013:290:57","trueBody":{"id":11294,"nodeType":"Block","src":"5043:127:57","statements":[{"expression":{"id":11280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11273,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11268,"src":"5058:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5067:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11275,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"5074:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11276,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11230,"src":"5088:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5074:23:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":11278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5073:25:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5067:31:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5058:40:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11281,"nodeType":"ExpressionStatement","src":"5058:40:57"},{"expression":{"id":11292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11282,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11207,"src":"5113:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11283,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11204,"src":"5127:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11284,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11268,"src":"5136:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5127:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11286,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5126:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11287,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11238,"src":"5146:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5126:24:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11289,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5125:26:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":11290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5154:4:57","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"5125:33:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5113:45:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11293,"nodeType":"ExpressionStatement","src":"5113:45:57"}]}},{"expression":{"id":11318,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11207,"src":"5320:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11208,"id":11319,"nodeType":"Return","src":"5313:16:57"}]},"documentation":{"id":11198,"nodeType":"StructuredDocumentation","src":"4030:377:57","text":" @dev Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator.\n @param fromToken The address of the token to convert from.\n @param toToken The address of the token to convert to.\n @param amount The amount of `fromToken` to convert.\n @return valuation The converted valuation of `amount` in `toToken`."},"functionSelector":"1f0e3cd2","id":11321,"implemented":true,"kind":"function","modifiers":[],"name":"convertWithAgg","nameLocation":"4422:14:57","nodeType":"FunctionDefinition","parameters":{"id":11205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11200,"mutability":"mutable","name":"fromToken","nameLocation":"4455:9:57","nodeType":"VariableDeclaration","scope":11321,"src":"4447:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11199,"name":"address","nodeType":"ElementaryTypeName","src":"4447:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11202,"mutability":"mutable","name":"toToken","nameLocation":"4483:7:57","nodeType":"VariableDeclaration","scope":11321,"src":"4475:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11201,"name":"address","nodeType":"ElementaryTypeName","src":"4475:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11204,"mutability":"mutable","name":"amount","nameLocation":"4509:6:57","nodeType":"VariableDeclaration","scope":11321,"src":"4501:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11203,"name":"uint256","nodeType":"ElementaryTypeName","src":"4501:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4436:86:57"},"returnParameters":{"id":11208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11207,"mutability":"mutable","name":"valuation","nameLocation":"4554:9:57","nodeType":"VariableDeclaration","scope":11321,"src":"4546:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11206,"name":"uint256","nodeType":"ElementaryTypeName","src":"4546:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4545:19:57"},"scope":11632,"src":"4413:924:57","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11493,"nodeType":"Block","src":"5916:1174:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11333,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11324,"src":"5931:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11334,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11326,"src":"5944:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5931:20:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11349,"nodeType":"IfStatement","src":"5927:89:57","trueBody":{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11336,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11328,"src":"5960:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":11338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5976:2:57","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11340,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11326,"src":"5996:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11339,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"5981:14:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5981:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6005:8:57","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"5981:32:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":11343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5981:34:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5976:39:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":11345,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5975:41:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5969:47:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5960:56:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11332,"id":11348,"nodeType":"Return","src":"5953:63:57"}},{"assignments":[11351],"declarations":[{"constant":false,"id":11351,"mutability":"mutable","name":"_1InchSpotAgg","nameLocation":"6035:13:57","nodeType":"VariableDeclaration","scope":11493,"src":"6027:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11350,"name":"address","nodeType":"ElementaryTypeName","src":"6027:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11355,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11352,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11108,"src":"6051:8:57","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6060:15:57","memberName":"get1inchSpotAgg","nodeType":"MemberAccess","referencedDeclaration":4858,"src":"6051:24:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6051:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6027:50:57"},{"assignments":[11357],"declarations":[{"constant":false,"id":11357,"mutability":"mutable","name":"fromDecimal","nameLocation":"6094:11:57","nodeType":"VariableDeclaration","scope":11493,"src":"6088:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11356,"name":"uint8","nodeType":"ElementaryTypeName","src":"6088:5:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":11363,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11359,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11324,"src":"6123:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11358,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"6108:14:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:25:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6134:8:57","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"6108:34:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":11362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:36:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"6088:56:57"},{"assignments":[11365],"declarations":[{"constant":false,"id":11365,"mutability":"mutable","name":"toDecimal","nameLocation":"6161:9:57","nodeType":"VariableDeclaration","scope":11493,"src":"6155:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11364,"name":"uint8","nodeType":"ElementaryTypeName","src":"6155:5:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":11371,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11367,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11326,"src":"6188:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11366,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"6173:14:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6173:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6197:8:57","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"6173:32:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":11370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6173:34:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"6155:52:57"},{"assignments":[11373],"declarations":[{"constant":false,"id":11373,"mutability":"mutable","name":"rate","nameLocation":"6226:4:57","nodeType":"VariableDeclaration","scope":11493,"src":"6218:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11372,"name":"uint256","nodeType":"ElementaryTypeName","src":"6218:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11386,"initialValue":{"arguments":[{"arguments":[{"id":11379,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11324,"src":"6277:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11378,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6270:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":11380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6270:17:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},{"arguments":[{"id":11382,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11326,"src":"6296:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11381,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6289:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":11383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6289:15:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":11384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6306:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"id":11375,"name":"_1InchSpotAgg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11351,"src":"6247:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11374,"name":"I1inchSpotAgg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"6233:13:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_I1inchSpotAgg_$3793_$","typeString":"type(contract I1inchSpotAgg)"}},"id":11376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6233:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_I1inchSpotAgg_$3793","typeString":"contract I1inchSpotAgg"}},"id":11377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6262:7:57","memberName":"getRate","nodeType":"MemberAccess","referencedDeclaration":3782,"src":"6233:36:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC20_$2651_$_t_contract$_IERC20_$2651_$_t_bool_$returns$_t_uint256_$","typeString":"function (contract IERC20,contract IERC20,bool) view external returns (uint256)"}},"id":11385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6233:79:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6218:94:57"},{"expression":{"id":11400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11387,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"6323:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11388,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"6331:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6339:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":11390,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11357,"src":"6345:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6339:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11392,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6338:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6331:26:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11394,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6330:28:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6362:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":11396,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"6368:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6362:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11398,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6361:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6330:48:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6323:55:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11401,"nodeType":"ExpressionStatement","src":"6323:55:57"},{"assignments":[11403],"declarations":[{"constant":false,"id":11403,"mutability":"mutable","name":"scalingFactor","nameLocation":"6397:13:57","nodeType":"VariableDeclaration","scope":11493,"src":"6389:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11402,"name":"uint256","nodeType":"ElementaryTypeName","src":"6389:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11404,"nodeType":"VariableDeclarationStatement","src":"6389:21:57"},{"assignments":[11406],"declarations":[{"constant":false,"id":11406,"mutability":"mutable","name":"tokenAmount","nameLocation":"6429:11:57","nodeType":"VariableDeclaration","scope":11493,"src":"6421:19:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11405,"name":"uint256","nodeType":"ElementaryTypeName","src":"6421:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11407,"nodeType":"VariableDeclarationStatement","src":"6421:19:57"},{"assignments":[11409],"declarations":[{"constant":false,"id":11409,"mutability":"mutable","name":"finalScalingFactor","nameLocation":"6459:18:57","nodeType":"VariableDeclaration","scope":11493,"src":"6451:26:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11408,"name":"uint256","nodeType":"ElementaryTypeName","src":"6451:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11416,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6480:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":11411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6487:2:57","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11412,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"6492:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6487:14:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":11414,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6486:16:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6480:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6451:51:57"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11417,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11357,"src":"6517:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11418,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"6532:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6517:24:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11430,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11357,"src":"6614:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11431,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"6628:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6614:23:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11482,"nodeType":"Block","src":"6824:179:57","statements":[{"expression":{"id":11465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11458,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"6839:13:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6855:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11460,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"6862:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11461,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11357,"src":"6874:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6862:23:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":11463,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6861:25:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6855:31:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6839:47:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11466,"nodeType":"ExpressionStatement","src":"6839:47:57"},{"expression":{"id":11471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11467,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"6901:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11468,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11328,"src":"6915:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11469,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"6924:13:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6915:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6901:36:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11472,"nodeType":"ExpressionStatement","src":"6901:36:57"},{"expression":{"id":11480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11473,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"6952:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11474,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"6965:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11475,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"6979:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6965:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6964:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":11478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6987:4:57","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"6964:27:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6952:39:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11481,"nodeType":"ExpressionStatement","src":"6952:39:57"}]},"id":11483,"nodeType":"IfStatement","src":"6610:393:57","trueBody":{"id":11457,"nodeType":"Block","src":"6639:179:57","statements":[{"expression":{"id":11440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11433,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"6654:13:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6670:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11435,"name":"fromDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11357,"src":"6677:11:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11436,"name":"toDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"6691:9:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6677:23:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":11438,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6676:25:57","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6670:31:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6654:47:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11441,"nodeType":"ExpressionStatement","src":"6654:47:57"},{"expression":{"id":11446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11442,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"6716:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11443,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11328,"src":"6730:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11444,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"6739:13:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6730:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6716:36:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11447,"nodeType":"ExpressionStatement","src":"6716:36:57"},{"expression":{"id":11455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11448,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"6767:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11449,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"6780:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11450,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"6794:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6780:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11452,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6779:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":11453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6802:4:57","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"6779:27:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6767:39:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11456,"nodeType":"ExpressionStatement","src":"6767:39:57"}]}},"id":11484,"nodeType":"IfStatement","src":"6513:490:57","trueBody":{"id":11429,"nodeType":"Block","src":"6543:61:57","statements":[{"expression":{"id":11427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11420,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"6558:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11421,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11328,"src":"6571:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11422,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11373,"src":"6580:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6571:13:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6570:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":11425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6588:4:57","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"6570:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6558:34:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11428,"nodeType":"ExpressionStatement","src":"6558:34:57"}]}},{"expression":{"id":11489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11485,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"7013:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11486,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"7025:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11487,"name":"finalScalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"7037:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7025:30:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7013:42:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11490,"nodeType":"ExpressionStatement","src":"7013:42:57"},{"expression":{"id":11491,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"7073:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11332,"id":11492,"nodeType":"Return","src":"7066:16:57"}]},"documentation":{"id":11322,"nodeType":"StructuredDocumentation","src":"5345:407:57","text":" @dev Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator and scales the result.\n @param fromToken The address of the token to convert from.\n @param toToken The address of the token to convert to.\n @param amount The amount of `fromToken` to convert.\n @return valuation  The scaled converted valuation of `amount` in `toToken`."},"functionSelector":"8c41a354","id":11494,"implemented":true,"kind":"function","modifiers":[],"name":"convertScaledWithAgg","nameLocation":"5767:20:57","nodeType":"FunctionDefinition","parameters":{"id":11329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11324,"mutability":"mutable","name":"fromToken","nameLocation":"5806:9:57","nodeType":"VariableDeclaration","scope":11494,"src":"5798:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11323,"name":"address","nodeType":"ElementaryTypeName","src":"5798:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11326,"mutability":"mutable","name":"toToken","nameLocation":"5834:7:57","nodeType":"VariableDeclaration","scope":11494,"src":"5826:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11325,"name":"address","nodeType":"ElementaryTypeName","src":"5826:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11328,"mutability":"mutable","name":"amount","nameLocation":"5860:6:57","nodeType":"VariableDeclaration","scope":11494,"src":"5852:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11327,"name":"uint256","nodeType":"ElementaryTypeName","src":"5852:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5787:86:57"},"returnParameters":{"id":11332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11331,"mutability":"mutable","name":"valuation","nameLocation":"5905:9:57","nodeType":"VariableDeclaration","scope":11494,"src":"5897:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11330,"name":"uint256","nodeType":"ElementaryTypeName","src":"5897:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5896:19:57"},"scope":11632,"src":"5758:1332:57","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11544,"nodeType":"Block","src":"7615:312:57","statements":[{"assignments":[11508],"declarations":[{"constant":false,"id":11508,"mutability":"mutable","name":"staticOracle","nameLocation":"7640:12:57","nodeType":"VariableDeclaration","scope":11544,"src":"7626:26:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticOracle_$5456","typeString":"contract IStaticOracle"},"typeName":{"id":11507,"nodeType":"UserDefinedTypeName","pathNode":{"id":11506,"name":"IStaticOracle","nameLocations":["7626:13:57"],"nodeType":"IdentifierPath","referencedDeclaration":5456,"src":"7626:13:57"},"referencedDeclaration":5456,"src":"7626:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticOracle_$5456","typeString":"contract IStaticOracle"}},"visibility":"internal"}],"id":11514,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11510,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11108,"src":"7669:8:57","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7678:15:57","memberName":"getStaticOracle","nodeType":"MemberAccess","referencedDeclaration":4893,"src":"7669:24:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7669:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11509,"name":"IStaticOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5456,"src":"7655:13:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IStaticOracle_$5456_$","typeString":"type(contract IStaticOracle)"}},"id":11513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7655:41:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IStaticOracle_$5456","typeString":"contract IStaticOracle"}},"nodeType":"VariableDeclarationStatement","src":"7626:70:57"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11518,"name":"staticOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11508,"src":"7723:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticOracle_$5456","typeString":"contract IStaticOracle"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStaticOracle_$5456","typeString":"contract IStaticOracle"}],"id":11517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7715:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11516,"name":"address","nodeType":"ElementaryTypeName","src":"7715:7:57","typeDescriptions":{}}},"id":11519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7715:21:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":11522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7748:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7740:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11520,"name":"address","nodeType":"ElementaryTypeName","src":"7740:7:57","typeDescriptions":{}}},"id":11523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7740:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7715:35:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374617469634f7261636c65206e6f7420736574","id":11525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7752:22:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_0bf731e51c3bdddc9de437c8fbd8fb76f6af6aa4bb4b0f5a60fe643d06ce9ff8","typeString":"literal_string \"StaticOracle not set\""},"value":"StaticOracle not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0bf731e51c3bdddc9de437c8fbd8fb76f6af6aa4bb4b0f5a60fe643d06ce9ff8","typeString":"literal_string \"StaticOracle not set\""}],"id":11515,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7707:7:57","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7707:68:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11527,"nodeType":"ExpressionStatement","src":"7707:68:57"},{"expression":{"id":11540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11528,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11504,"src":"7787:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":11529,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7786:13:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$__$","typeString":"tuple(uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":11534,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11501,"src":"7860:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7852:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":11532,"name":"uint128","nodeType":"ElementaryTypeName","src":"7852:7:57","typeDescriptions":{}}},"id":11535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7852:15:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":11536,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11497,"src":"7869:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11537,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"7880:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"3630","id":11538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7889:2:57","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"}],"expression":{"id":11530,"name":"staticOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11508,"src":"7802:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticOracle_$5456","typeString":"contract IStaticOracle"}},"id":11531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7815:36:57","memberName":"quoteAllAvailablePoolsWithTimePeriod","nodeType":"MemberAccess","referencedDeclaration":5336,"src":"7802:49:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint128_$_t_address_$_t_address_$_t_uint32_$returns$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint128,address,address,uint32) view external returns (uint256,address[] memory)"}},"id":11539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7802:90:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"tuple(uint256,address[] memory)"}},"src":"7786:106:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11541,"nodeType":"ExpressionStatement","src":"7786:106:57"},{"expression":{"id":11542,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11504,"src":"7910:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11505,"id":11543,"nodeType":"Return","src":"7903:16:57"}]},"documentation":{"id":11495,"nodeType":"StructuredDocumentation","src":"7098:350:57","text":" @dev Converts the specified amount of `fromToken` to `toToken` using the static oracle.\n @param fromToken The address of the token to convert from.\n @param toToken The address of the token to convert to.\n @param amount The amount of `fromToken` to convert.\n @return  valuation of the converted amount."},"functionSelector":"fac0ba74","id":11545,"implemented":true,"kind":"function","modifiers":[],"name":"convertWithStaticOracle","nameLocation":"7463:23:57","nodeType":"FunctionDefinition","parameters":{"id":11502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11497,"mutability":"mutable","name":"fromToken","nameLocation":"7505:9:57","nodeType":"VariableDeclaration","scope":11545,"src":"7497:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11496,"name":"address","nodeType":"ElementaryTypeName","src":"7497:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11499,"mutability":"mutable","name":"toToken","nameLocation":"7533:7:57","nodeType":"VariableDeclaration","scope":11545,"src":"7525:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11498,"name":"address","nodeType":"ElementaryTypeName","src":"7525:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11501,"mutability":"mutable","name":"amount","nameLocation":"7559:6:57","nodeType":"VariableDeclaration","scope":11545,"src":"7551:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11500,"name":"uint256","nodeType":"ElementaryTypeName","src":"7551:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7486:86:57"},"returnParameters":{"id":11505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11504,"mutability":"mutable","name":"valuation","nameLocation":"7604:9:57","nodeType":"VariableDeclaration","scope":11545,"src":"7596:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11503,"name":"uint256","nodeType":"ElementaryTypeName","src":"7596:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7595:19:57"},"scope":11632,"src":"7454:473:57","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11579,"nodeType":"Block","src":"8455:201:57","statements":[{"assignments":[11558],"declarations":[{"constant":false,"id":11558,"mutability":"mutable","name":"_valuation","nameLocation":"8474:10:57","nodeType":"VariableDeclaration","scope":11579,"src":"8466:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11557,"name":"uint256","nodeType":"ElementaryTypeName","src":"8466:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11565,"initialValue":{"arguments":[{"id":11561,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11548,"src":"8516:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11562,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11550,"src":"8527:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11563,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11552,"src":"8536:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11559,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8487:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Oracle_$11632","typeString":"contract BaluniV1Oracle"}},"id":11560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8492:23:57","memberName":"convertWithStaticOracle","nodeType":"MemberAccess","referencedDeclaration":11545,"src":"8487:28:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":11564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8487:56:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8466:77:57"},{"expression":{"id":11575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11566,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11555,"src":"8554:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11568,"name":"_valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11558,"src":"8574:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11570,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11550,"src":"8601:7:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11569,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"8586:14:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8586:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8610:8:57","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"8586:32:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":11573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8586:34:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":11567,"name":"scaleUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11601,"src":"8566:7:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8566:55:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8554:67:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11576,"nodeType":"ExpressionStatement","src":"8554:67:57"},{"expression":{"id":11577,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11555,"src":"8639:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11556,"id":11578,"nodeType":"Return","src":"8632:16:57"}]},"documentation":{"id":11546,"nodeType":"StructuredDocumentation","src":"7935:347:57","text":" @dev Converts the given amount of tokens from one token to another using a static oracle.\n @param fromToken The address of the token to convert from.\n @param toToken The address of the token to convert to.\n @param amount The amount of tokens to convert.\n @return  valuation of the converted tokens."},"functionSelector":"ca66d9a8","id":11580,"implemented":true,"kind":"function","modifiers":[],"name":"convertScaledWithStaticOracle","nameLocation":"8297:29:57","nodeType":"FunctionDefinition","parameters":{"id":11553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11548,"mutability":"mutable","name":"fromToken","nameLocation":"8345:9:57","nodeType":"VariableDeclaration","scope":11580,"src":"8337:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11547,"name":"address","nodeType":"ElementaryTypeName","src":"8337:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11550,"mutability":"mutable","name":"toToken","nameLocation":"8373:7:57","nodeType":"VariableDeclaration","scope":11580,"src":"8365:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11549,"name":"address","nodeType":"ElementaryTypeName","src":"8365:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11552,"mutability":"mutable","name":"amount","nameLocation":"8399:6:57","nodeType":"VariableDeclaration","scope":11580,"src":"8391:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11551,"name":"uint256","nodeType":"ElementaryTypeName","src":"8391:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8326:86:57"},"returnParameters":{"id":11556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11555,"mutability":"mutable","name":"valuation","nameLocation":"8444:9:57","nodeType":"VariableDeclaration","scope":11580,"src":"8436:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11554,"name":"uint256","nodeType":"ElementaryTypeName","src":"8436:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8435:19:57"},"scope":11632,"src":"8288:368:57","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":11600,"nodeType":"Block","src":"8987:58:57","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11590,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11583,"src":"9005:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9015:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":11592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9022:2:57","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11593,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"9027:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9022:13:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11595,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9021:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9015:21:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11597,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9014:23:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9005:32:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11589,"id":11599,"nodeType":"Return","src":"8998:39:57"}]},"documentation":{"id":11581,"nodeType":"StructuredDocumentation","src":"8664:234:57","text":" @dev Scales up the given amount by subtracting the decimals.\n @param amount The amount to be scaled up.\n @param decimals The number of decimals to be subtracted.\n @return The scaled up amount."},"id":11601,"implemented":true,"kind":"function","modifiers":[],"name":"scaleUp","nameLocation":"8913:7:57","nodeType":"FunctionDefinition","parameters":{"id":11586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11583,"mutability":"mutable","name":"amount","nameLocation":"8929:6:57","nodeType":"VariableDeclaration","scope":11601,"src":"8921:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11582,"name":"uint256","nodeType":"ElementaryTypeName","src":"8921:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11585,"mutability":"mutable","name":"decimals","nameLocation":"8945:8:57","nodeType":"VariableDeclaration","scope":11601,"src":"8937:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11584,"name":"uint256","nodeType":"ElementaryTypeName","src":"8937:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8920:34:57"},"returnParameters":{"id":11589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11601,"src":"8978:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11587,"name":"uint256","nodeType":"ElementaryTypeName","src":"8978:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8977:9:57"},"scope":11632,"src":"8904:141:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11621,"nodeType":"Block","src":"9420:58:57","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11611,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11604,"src":"9438:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9448:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":11613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9455:2:57","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11614,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11606,"src":"9460:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9455:13:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11616,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9454:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9448:21:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11618,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9447:23:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9438:32:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11610,"id":11620,"nodeType":"Return","src":"9431:39:57"}]},"documentation":{"id":11602,"nodeType":"StructuredDocumentation","src":"9053:276:57","text":" @dev Scales down the given amount by dividing it by the difference between 10^18 and the decimals.\n @param amount The amount to be scaled down.\n @param decimals The number of decimals to be subtracted.\n @return The scaled down amount."},"id":11622,"implemented":true,"kind":"function","modifiers":[],"name":"scaleDown","nameLocation":"9344:9:57","nodeType":"FunctionDefinition","parameters":{"id":11607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11604,"mutability":"mutable","name":"amount","nameLocation":"9362:6:57","nodeType":"VariableDeclaration","scope":11622,"src":"9354:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11603,"name":"uint256","nodeType":"ElementaryTypeName","src":"9354:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11606,"mutability":"mutable","name":"decimals","nameLocation":"9378:8:57","nodeType":"VariableDeclaration","scope":11622,"src":"9370:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11605,"name":"uint256","nodeType":"ElementaryTypeName","src":"9370:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9353:34:57"},"returnParameters":{"id":11610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11622,"src":"9411:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11608,"name":"uint256","nodeType":"ElementaryTypeName","src":"9411:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9410:9:57"},"scope":11632,"src":"9335:143:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"baseFunctions":[584],"body":{"id":11630,"nodeType":"Block","src":"9568:2:57","statements":[]},"id":11631,"implemented":true,"kind":"function","modifiers":[{"id":11628,"kind":"modifierInvocation","modifierName":{"id":11627,"name":"onlyOwner","nameLocations":["9558:9:57"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"9558:9:57"},"nodeType":"ModifierInvocation","src":"9558:9:57"}],"name":"_authorizeUpgrade","nameLocation":"9495:17:57","nodeType":"FunctionDefinition","overrides":{"id":11626,"nodeType":"OverrideSpecifier","overrides":[],"src":"9549:8:57"},"parameters":{"id":11625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11624,"mutability":"mutable","name":"newImplementation","nameLocation":"9521:17:57","nodeType":"VariableDeclaration","scope":11631,"src":"9513:25:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11623,"name":"address","nodeType":"ElementaryTypeName","src":"9513:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9512:27:57"},"returnParameters":{"id":11629,"nodeType":"ParameterList","parameters":[],"src":"9568:0:57"},"scope":11632,"src":"9486:84:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":11633,"src":"1963:7610:57","usedErrors":[30,35,211,214,475,480,1780,1793,2690,2693],"usedEvents":[41,219,1759]}],"src":"40:9535:57"},"id":57},"contracts/orchestators/BaluniV1Agent.sol":{"ast":{"absolutePath":"contracts/orchestators/BaluniV1Agent.sol","exportedSymbols":{"AddressUpgradeable":[5774],"BaluniV1Agent":[11997],"ContextUpgradeable":[1293],"ERC20Upgradeable":[1247],"IBaluniV1AgentFactory":[3835],"IBaluniV1Registry":[4909],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"Initializable":[448]},"id":11998,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":11634,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:58"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":11635,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11998,"sourceUnit":1248,"src":"1470:78:58","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libs/AddressUpgradeable.sol","file":"../libs/AddressUpgradeable.sol","id":11636,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11998,"sourceUnit":5775,"src":"1550:40:58","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":11637,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11998,"sourceUnit":4910,"src":"1592:45:58","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1AgentFactory.sol","file":"../interfaces/IBaluniV1AgentFactory.sol","id":11638,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11998,"sourceUnit":3836,"src":"1639:49:58","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"BaluniV1Agent","contractDependencies":[],"contractKind":"contract","documentation":{"id":11639,"nodeType":"StructuredDocumentation","src":"1692:95:58","text":" @title BaluniV1Agent\n @dev This contract represents the BaluniV1Agent contract."},"fullyImplemented":true,"id":11997,"linearizedBaseContracts":[11997],"name":"BaluniV1Agent","nameLocation":"1798:13:58","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11642,"libraryName":{"id":11640,"name":"AddressUpgradeable","nameLocations":["1825:18:58"],"nodeType":"IdentifierPath","referencedDeclaration":5774,"src":"1825:18:58"},"nodeType":"UsingForDirective","src":"1819:45:58","typeName":{"id":11641,"name":"address","nodeType":"ElementaryTypeName","src":"1848:15:58","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"constant":false,"functionSelector":"8da5cb5b","id":11644,"mutability":"mutable","name":"owner","nameLocation":"1887:5:58","nodeType":"VariableDeclaration","scope":11997,"src":"1872:20:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11643,"name":"address","nodeType":"ElementaryTypeName","src":"1872:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":11646,"mutability":"mutable","name":"factory","nameLocation":"1915:7:58","nodeType":"VariableDeclaration","scope":11997,"src":"1899:23:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11645,"name":"address","nodeType":"ElementaryTypeName","src":"1899:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"id":11649,"mutability":"constant","name":"_NATIVE","nameLocation":"1955:7:58","nodeType":"VariableDeclaration","scope":11997,"src":"1929:78:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11647,"name":"address","nodeType":"ElementaryTypeName","src":"1929:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307845656565654565656545654565654565456545656545454565656565456565656565656545456545","id":11648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1965:42:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},"visibility":"internal"},{"constant":true,"id":11652,"mutability":"constant","name":"_DUST","nameLocation":"2040:5:58","nodeType":"VariableDeclaration","scope":11997,"src":"2014:36:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11650,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130","id":11651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:2:58","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"internal"},{"canonicalName":"BaluniV1Agent.Call","id":11659,"members":[{"constant":false,"id":11654,"mutability":"mutable","name":"to","nameLocation":"2090:2:58","nodeType":"VariableDeclaration","scope":11659,"src":"2082:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11653,"name":"address","nodeType":"ElementaryTypeName","src":"2082:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11656,"mutability":"mutable","name":"value","nameLocation":"2111:5:58","nodeType":"VariableDeclaration","scope":11659,"src":"2103:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11655,"name":"uint256","nodeType":"ElementaryTypeName","src":"2103:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11658,"mutability":"mutable","name":"data","nameLocation":"2133:4:58","nodeType":"VariableDeclaration","scope":11659,"src":"2127:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":11657,"name":"bytes","nodeType":"ElementaryTypeName","src":"2127:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Call","nameLocation":"2066:4:58","nodeType":"StructDefinition","scope":11997,"src":"2059:86:58","visibility":"public"},{"body":{"id":11668,"nodeType":"Block","src":"2183:37:58","statements":[{"expression":{"id":11666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11664,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11646,"src":"2194:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11665,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11661,"src":"2204:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2194:18:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11667,"nodeType":"ExpressionStatement","src":"2194:18:58"}]},"id":11669,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11661,"mutability":"mutable","name":"_factory","nameLocation":"2173:8:58","nodeType":"VariableDeclaration","scope":11669,"src":"2165:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11660,"name":"address","nodeType":"ElementaryTypeName","src":"2165:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2164:18:58"},"returnParameters":{"id":11663,"nodeType":"ParameterList","parameters":[],"src":"2183:0:58"},"scope":11997,"src":"2153:67:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11694,"nodeType":"Block","src":"2433:126:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11676,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"2452:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2469:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2461:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11677,"name":"address","nodeType":"ElementaryTypeName","src":"2461:7:58","typeDescriptions":{}}},"id":11680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2461:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2452:19:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920696e697469616c697a6564","id":11682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2473:21:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""},"value":"Already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""}],"id":11675,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2444:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2444:51:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11684,"nodeType":"ExpressionStatement","src":"2444:51:58"},{"expression":{"id":11687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11685,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"2506:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11686,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11672,"src":"2514:6:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2506:14:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11688,"nodeType":"ExpressionStatement","src":"2506:14:58"},{"expression":{"id":11692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11689,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11646,"src":"2531:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11690,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2541:3:58","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2545:6:58","memberName":"sender","nodeType":"MemberAccess","src":"2541:10:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2531:20:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11693,"nodeType":"ExpressionStatement","src":"2531:20:58"}]},"documentation":{"id":11670,"nodeType":"StructuredDocumentation","src":"2228:154:58","text":" @dev Initializes the contract with the specified owner and router addresses.\n @param _owner The address of the contract owner."},"functionSelector":"c4d66de8","id":11695,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"2397:10:58","nodeType":"FunctionDefinition","parameters":{"id":11673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11672,"mutability":"mutable","name":"_owner","nameLocation":"2416:6:58","nodeType":"VariableDeclaration","scope":11695,"src":"2408:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11671,"name":"address","nodeType":"ElementaryTypeName","src":"2408:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2407:16:58"},"returnParameters":{"id":11674,"nodeType":"ParameterList","parameters":[],"src":"2433:0:58"},"scope":11997,"src":"2388:171:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11708,"nodeType":"Block","src":"2840:96:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11699,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2859:3:58","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2863:6:58","memberName":"sender","nodeType":"MemberAccess","src":"2859:10:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11701,"name":"getRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11784,"src":"2873:9:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2873:11:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2859:25:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616c6c61626c65206f6e6c792062792074686520726f75746572","id":11704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2886:29:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_f288cef4bb462eac7507b059e37e08390ab98484d1c030cf9363145ee84c382c","typeString":"literal_string \"Callable only by the router\""},"value":"Callable only by the router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f288cef4bb462eac7507b059e37e08390ab98484d1c030cf9363145ee84c382c","typeString":"literal_string \"Callable only by the router\""}],"id":11698,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2851:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2851:65:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11706,"nodeType":"ExpressionStatement","src":"2851:65:58"},{"id":11707,"nodeType":"PlaceholderStatement","src":"2927:1:58"}]},"documentation":{"id":11696,"nodeType":"StructuredDocumentation","src":"2567:245:58","text":" @dev Modifier that allows a function to be called only by the router.\n @notice This modifier checks if the caller is the router contract.\n @notice If the caller is not the router, the function call will revert."},"id":11709,"name":"onlyRouter","nameLocation":"2827:10:58","nodeType":"ModifierDefinition","parameters":{"id":11697,"nodeType":"ParameterList","parameters":[],"src":"2837:2:58"},"src":"2818:118:58","virtual":false,"visibility":"internal"},{"body":{"id":11766,"nodeType":"Block","src":"3372:284:58","statements":[{"body":{"id":11756,"nodeType":"Block","src":"3423:152:58","statements":[{"assignments":[11734,null],"declarations":[{"constant":false,"id":11734,"mutability":"mutable","name":"success","nameLocation":"3444:7:58","nodeType":"VariableDeclaration","scope":11756,"src":"3439:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11733,"name":"bool","nodeType":"ElementaryTypeName","src":"3439:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":11750,"initialValue":{"arguments":[{"expression":{"baseExpression":{"id":11745,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11714,"src":"3497:5:58","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$11659_memory_ptr_$dyn_memory_ptr","typeString":"struct BaluniV1Agent.Call memory[] memory"}},"id":11747,"indexExpression":{"id":11746,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11723,"src":"3503:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3497:8:58","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$11659_memory_ptr","typeString":"struct BaluniV1Agent.Call memory"}},"id":11748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3506:4:58","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":11658,"src":"3497:13:58","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"expression":{"baseExpression":{"id":11735,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11714,"src":"3457:5:58","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$11659_memory_ptr_$dyn_memory_ptr","typeString":"struct BaluniV1Agent.Call memory[] memory"}},"id":11737,"indexExpression":{"id":11736,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11723,"src":"3463:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3457:8:58","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$11659_memory_ptr","typeString":"struct BaluniV1Agent.Call memory"}},"id":11738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3466:2:58","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":11654,"src":"3457:11:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3469:4:58","memberName":"call","nodeType":"MemberAccess","src":"3457:16:58","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":11744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"baseExpression":{"id":11740,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11714,"src":"3481:5:58","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$11659_memory_ptr_$dyn_memory_ptr","typeString":"struct BaluniV1Agent.Call memory[] memory"}},"id":11742,"indexExpression":{"id":11741,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11723,"src":"3487:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3481:8:58","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$11659_memory_ptr","typeString":"struct BaluniV1Agent.Call memory"}},"id":11743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3490:5:58","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":11656,"src":"3481:14:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3457:39:58","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":11749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3457:54:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3438:73:58"},{"expression":{"arguments":[{"id":11752,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11734,"src":"3534:7:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42617463682063616c6c206661696c6564","id":11753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3543:19:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_c09e899dfcc1fcf0d7dd9e543f8a91b17a7de5379720d80ee73296e900d7ae60","typeString":"literal_string \"Batch call failed\""},"value":"Batch call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c09e899dfcc1fcf0d7dd9e543f8a91b17a7de5379720d80ee73296e900d7ae60","typeString":"literal_string \"Batch call failed\""}],"id":11751,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3526:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3526:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11755,"nodeType":"ExpressionStatement","src":"3526:37:58"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11726,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11723,"src":"3400:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11727,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11714,"src":"3404:5:58","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$11659_memory_ptr_$dyn_memory_ptr","typeString":"struct BaluniV1Agent.Call memory[] memory"}},"id":11728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3410:6:58","memberName":"length","nodeType":"MemberAccess","src":"3404:12:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3400:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11757,"initializationExpression":{"assignments":[11723],"declarations":[{"constant":false,"id":11723,"mutability":"mutable","name":"i","nameLocation":"3393:1:58","nodeType":"VariableDeclaration","scope":11757,"src":"3388:6:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11722,"name":"uint","nodeType":"ElementaryTypeName","src":"3388:4:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11725,"initialValue":{"hexValue":"30","id":11724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3397:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3388:10:58"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3418:3:58","subExpression":{"id":11730,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11723,"src":"3418:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11732,"nodeType":"ExpressionStatement","src":"3418:3:58"},"nodeType":"ForStatement","src":"3383:192:58"},{"expression":{"arguments":[{"id":11759,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11717,"src":"3597:12:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":11758,"name":"_chargeFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11908,"src":"3585:11:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":11760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3585:25:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11761,"nodeType":"ExpressionStatement","src":"3585:25:58"},{"expression":{"arguments":[{"id":11763,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11717,"src":"3635:12:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":11762,"name":"_returnTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11996,"src":"3621:13:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":11764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3621:27:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11765,"nodeType":"ExpressionStatement","src":"3621:27:58"}]},"documentation":{"id":11710,"nodeType":"StructuredDocumentation","src":"2944:333:58","text":" @dev Executes a batch of calls and performs token operations.\n @param calls An array of Call structs representing the calls to be executed.\n @param tokensReturn An array of token addresses to return after the batch call.\n @notice Only the router contract is allowed to execute this function."},"functionSelector":"eedc3c50","id":11767,"implemented":true,"kind":"function","modifiers":[{"id":11720,"kind":"modifierInvocation","modifierName":{"id":11719,"name":"onlyRouter","nameLocations":["3361:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":11709,"src":"3361:10:58"},"nodeType":"ModifierInvocation","src":"3361:10:58"}],"name":"execute","nameLocation":"3292:7:58","nodeType":"FunctionDefinition","parameters":{"id":11718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11714,"mutability":"mutable","name":"calls","nameLocation":"3314:5:58","nodeType":"VariableDeclaration","scope":11767,"src":"3300:19:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$11659_memory_ptr_$dyn_memory_ptr","typeString":"struct BaluniV1Agent.Call[]"},"typeName":{"baseType":{"id":11712,"nodeType":"UserDefinedTypeName","pathNode":{"id":11711,"name":"Call","nameLocations":["3300:4:58"],"nodeType":"IdentifierPath","referencedDeclaration":11659,"src":"3300:4:58"},"referencedDeclaration":11659,"src":"3300:4:58","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$11659_storage_ptr","typeString":"struct BaluniV1Agent.Call"}},"id":11713,"nodeType":"ArrayTypeName","src":"3300:6:58","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$11659_storage_$dyn_storage_ptr","typeString":"struct BaluniV1Agent.Call[]"}},"visibility":"internal"},{"constant":false,"id":11717,"mutability":"mutable","name":"tokensReturn","nameLocation":"3338:12:58","nodeType":"VariableDeclaration","scope":11767,"src":"3321:29:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11715,"name":"address","nodeType":"ElementaryTypeName","src":"3321:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11716,"nodeType":"ArrayTypeName","src":"3321:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3299:52:58"},"returnParameters":{"id":11721,"nodeType":"ParameterList","parameters":[],"src":"3372:0:58"},"scope":11997,"src":"3283:373:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11783,"nodeType":"Block","src":"3842:107:58","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11775,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11646,"src":"3900:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11774,"name":"IBaluniV1AgentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"3878:21:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1AgentFactory_$3835_$","typeString":"type(contract IBaluniV1AgentFactory)"}},"id":11776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3878:30:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1AgentFactory_$3835","typeString":"contract IBaluniV1AgentFactory"}},"id":11777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3909:11:58","memberName":"getRegistry","nodeType":"MemberAccess","referencedDeclaration":3834,"src":"3878:42:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3878:44:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11773,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"3860:17:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":11779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3860:63:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3924:15:58","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":4838,"src":"3860:79:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3860:81:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11772,"id":11782,"nodeType":"Return","src":"3853:88:58"}]},"documentation":{"id":11768,"nodeType":"StructuredDocumentation","src":"3664:121:58","text":" @dev Returns the address of the router contract.\n @return The address of the router contract."},"functionSelector":"b0f479a1","id":11784,"implemented":true,"kind":"function","modifiers":[],"name":"getRouter","nameLocation":"3800:9:58","nodeType":"FunctionDefinition","parameters":{"id":11769,"nodeType":"ParameterList","parameters":[],"src":"3809:2:58"},"returnParameters":{"id":11772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11784,"src":"3833:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11770,"name":"address","nodeType":"ElementaryTypeName","src":"3833:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3832:9:58"},"scope":11997,"src":"3791:158:58","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11792,"nodeType":"Block","src":"4138:33:58","statements":[{"expression":{"id":11790,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11646,"src":"4156:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11789,"id":11791,"nodeType":"Return","src":"4149:14:58"}]},"documentation":{"id":11785,"nodeType":"StructuredDocumentation","src":"3957:123:58","text":" @dev Returns the address of the factory contract.\n @return The address of the factory contract."},"functionSelector":"88cc58e4","id":11793,"implemented":true,"kind":"function","modifiers":[],"name":"getFactory","nameLocation":"4095:10:58","nodeType":"FunctionDefinition","parameters":{"id":11786,"nodeType":"ParameterList","parameters":[],"src":"4105:2:58"},"returnParameters":{"id":11789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11788,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11793,"src":"4129:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11787,"name":"address","nodeType":"ElementaryTypeName","src":"4129:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4128:9:58"},"scope":11997,"src":"4086:85:58","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11907,"nodeType":"Block","src":"4397:808:58","statements":[{"assignments":[11802],"declarations":[{"constant":false,"id":11802,"mutability":"mutable","name":"registry","nameLocation":"4426:8:58","nodeType":"VariableDeclaration","scope":11907,"src":"4408:26:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":11801,"nodeType":"UserDefinedTypeName","pathNode":{"id":11800,"name":"IBaluniV1Registry","nameLocations":["4408:17:58"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"4408:17:58"},"referencedDeclaration":4909,"src":"4408:17:58","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"internal"}],"id":11810,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11805,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11646,"src":"4477:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11804,"name":"IBaluniV1AgentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"4455:21:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1AgentFactory_$3835_$","typeString":"type(contract IBaluniV1AgentFactory)"}},"id":11806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4455:30:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1AgentFactory_$3835","typeString":"contract IBaluniV1AgentFactory"}},"id":11807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4486:11:58","memberName":"getRegistry","nodeType":"MemberAccess","referencedDeclaration":3834,"src":"4455:42:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4455:44:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11803,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"4437:17:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":11809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4437:63:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"VariableDeclarationStatement","src":"4408:92:58"},{"assignments":[11812],"declarations":[{"constant":false,"id":11812,"mutability":"mutable","name":"router","nameLocation":"4519:6:58","nodeType":"VariableDeclaration","scope":11907,"src":"4511:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11811,"name":"address","nodeType":"ElementaryTypeName","src":"4511:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11816,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11813,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"4528:8:58","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4537:15:58","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":4838,"src":"4528:24:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4528:26:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4511:43:58"},{"assignments":[11818],"declarations":[{"constant":false,"id":11818,"mutability":"mutable","name":"amount","nameLocation":"4573:6:58","nodeType":"VariableDeclaration","scope":11907,"src":"4565:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11817,"name":"uint256","nodeType":"ElementaryTypeName","src":"4565:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11819,"nodeType":"VariableDeclarationStatement","src":"4565:14:58"},{"assignments":[11821],"declarations":[{"constant":false,"id":11821,"mutability":"mutable","name":"bpsFee","nameLocation":"4598:6:58","nodeType":"VariableDeclaration","scope":11907,"src":"4590:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11820,"name":"uint256","nodeType":"ElementaryTypeName","src":"4590:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11825,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11822,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"4607:8:58","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4616:10:58","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":4863,"src":"4607:19:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4590:38:58"},{"assignments":[11827],"declarations":[{"constant":false,"id":11827,"mutability":"mutable","name":"bpsBase","nameLocation":"4647:7:58","nodeType":"VariableDeclaration","scope":11907,"src":"4639:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11826,"name":"uint256","nodeType":"ElementaryTypeName","src":"4639:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11831,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11828,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"4657:8:58","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":11829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4666:11:58","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"4657:20:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4657:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4639:40:58"},{"body":{"id":11905,"nodeType":"Block","src":"4740:458:58","statements":[{"assignments":[11844],"declarations":[{"constant":false,"id":11844,"mutability":"mutable","name":"token","nameLocation":"4763:5:58","nodeType":"VariableDeclaration","scope":11905,"src":"4755:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11843,"name":"address","nodeType":"ElementaryTypeName","src":"4755:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11848,"initialValue":{"baseExpression":{"id":11845,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"4771:12:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11847,"indexExpression":{"id":11846,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11833,"src":"4784:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4771:15:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4755:31:58"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11849,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"4805:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11850,"name":"_NATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11649,"src":"4814:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4805:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11903,"nodeType":"Block","src":"4967:220:58","statements":[{"assignments":[11875],"declarations":[{"constant":false,"id":11875,"mutability":"mutable","name":"balance","nameLocation":"4994:7:58","nodeType":"VariableDeclaration","scope":11903,"src":"4986:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11874,"name":"uint256","nodeType":"ElementaryTypeName","src":"4986:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11885,"initialValue":{"arguments":[{"arguments":[{"id":11882,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5044:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":11881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5036:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11880,"name":"address","nodeType":"ElementaryTypeName","src":"5036:7:58","typeDescriptions":{}}},"id":11883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5036:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":11877,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"5019:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11876,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"5004:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5004:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5026:9:58","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"5004:31:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5004:46:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4986:64:58"},{"expression":{"id":11893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11886,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11818,"src":"5069:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11887,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"5079:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11888,"name":"bpsFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11821,"src":"5089:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5079:16:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11890,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5078:18:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11891,"name":"bpsBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11827,"src":"5099:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5078:28:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5069:37:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11894,"nodeType":"ExpressionStatement","src":"5069:37:58"},{"expression":{"arguments":[{"id":11899,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11812,"src":"5156:6:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11900,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11818,"src":"5164:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11896,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"5140:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11895,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"5125:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5125:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5147:8:58","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"5125:30:58","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5125:46:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11902,"nodeType":"ExpressionStatement","src":"5125:46:58"}]},"id":11904,"nodeType":"IfStatement","src":"4801:386:58","trueBody":{"id":11873,"nodeType":"Block","src":"4823:138:58","statements":[{"expression":{"id":11863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11852,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11818,"src":"4842:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":11855,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4860:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":11854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4852:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11853,"name":"address","nodeType":"ElementaryTypeName","src":"4852:7:58","typeDescriptions":{}}},"id":11856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4852:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4866:7:58","memberName":"balance","nodeType":"MemberAccess","src":"4852:21:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11858,"name":"bpsFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11821,"src":"4876:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4852:30:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11860,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4851:32:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11861,"name":"bpsBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11827,"src":"4886:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4851:42:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4842:51:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11864,"nodeType":"ExpressionStatement","src":"4842:51:58"},{"expression":{"arguments":[{"id":11870,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11818,"src":"4938:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11867,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11812,"src":"4920:6:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4912:8:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":11865,"name":"address","nodeType":"ElementaryTypeName","src":"4912:8:58","stateMutability":"payable","typeDescriptions":{}}},"id":11868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4912:15:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":11869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4928:9:58","memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":5583,"src":"4912:25:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":11871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4912:33:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11872,"nodeType":"ExpressionStatement","src":"4912:33:58"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11836,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11833,"src":"4710:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11837,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"4714:12:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4727:6:58","memberName":"length","nodeType":"MemberAccess","src":"4714:19:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4710:23:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11906,"initializationExpression":{"assignments":[11833],"declarations":[{"constant":false,"id":11833,"mutability":"mutable","name":"i","nameLocation":"4703:1:58","nodeType":"VariableDeclaration","scope":11906,"src":"4695:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11832,"name":"uint256","nodeType":"ElementaryTypeName","src":"4695:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11835,"initialValue":{"hexValue":"30","id":11834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4707:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4695:13:58"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4735:3:58","subExpression":{"id":11840,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11833,"src":"4735:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11842,"nodeType":"ExpressionStatement","src":"4735:3:58"},"nodeType":"ForStatement","src":"4690:508:58"}]},"documentation":{"id":11794,"nodeType":"StructuredDocumentation","src":"4179:151:58","text":" @dev Internal function to charge fees for the tokens returned.\n @param tokensReturn The array of tokens to charge fees for."},"id":11908,"implemented":true,"kind":"function","modifiers":[],"name":"_chargeFees","nameLocation":"4345:11:58","nodeType":"FunctionDefinition","parameters":{"id":11798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11797,"mutability":"mutable","name":"tokensReturn","nameLocation":"4374:12:58","nodeType":"VariableDeclaration","scope":11908,"src":"4357:29:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11795,"name":"address","nodeType":"ElementaryTypeName","src":"4357:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11796,"nodeType":"ArrayTypeName","src":"4357:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4356:31:58"},"returnParameters":{"id":11799,"nodeType":"ParameterList","parameters":[],"src":"4397:0:58"},"scope":11997,"src":"4336:869:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11995,"nodeType":"Block","src":"5415:779:58","statements":[{"assignments":[11916],"declarations":[{"constant":false,"id":11916,"mutability":"mutable","name":"tokensReturnLength","nameLocation":"5434:18:58","nodeType":"VariableDeclaration","scope":11995,"src":"5426:26:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11915,"name":"uint256","nodeType":"ElementaryTypeName","src":"5426:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11919,"initialValue":{"expression":{"id":11917,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11912,"src":"5455:12:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5468:6:58","memberName":"length","nodeType":"MemberAccess","src":"5455:19:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5426:48:58"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11920,"name":"tokensReturnLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11916,"src":"5489:18:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5510:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5489:22:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11994,"nodeType":"IfStatement","src":"5485:702:58","trueBody":{"id":11993,"nodeType":"Block","src":"5513:674:58","statements":[{"body":{"id":11991,"nodeType":"Block","src":"5570:606:58","statements":[{"assignments":[11930],"declarations":[{"constant":false,"id":11930,"mutability":"mutable","name":"token","nameLocation":"5597:5:58","nodeType":"VariableDeclaration","scope":11991,"src":"5589:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11929,"name":"address","nodeType":"ElementaryTypeName","src":"5589:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11934,"initialValue":{"baseExpression":{"id":11931,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11912,"src":"5605:12:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11933,"indexExpression":{"id":11932,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11924,"src":"5618:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5605:15:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5589:31:58"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11935,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11930,"src":"5643:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11936,"name":"_NATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11649,"src":"5652:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5643:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11985,"nodeType":"Block","src":"5838:247:58","statements":[{"assignments":[11961],"declarations":[{"constant":false,"id":11961,"mutability":"mutable","name":"balance","nameLocation":"5869:7:58","nodeType":"VariableDeclaration","scope":11985,"src":"5861:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11960,"name":"uint256","nodeType":"ElementaryTypeName","src":"5861:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11971,"initialValue":{"arguments":[{"arguments":[{"id":11968,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5919:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":11967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5911:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11966,"name":"address","nodeType":"ElementaryTypeName","src":"5911:7:58","typeDescriptions":{}}},"id":11969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5911:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":11963,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11930,"src":"5894:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11962,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"5879:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5879:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5901:9:58","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"5879:31:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":11970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5879:46:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5861:64:58"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11972,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11961,"src":"5952:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11973,"name":"_DUST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11652,"src":"5962:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5952:15:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11984,"nodeType":"IfStatement","src":"5948:118:58","trueBody":{"id":11983,"nodeType":"Block","src":"5969:97:58","statements":[{"expression":{"arguments":[{"id":11979,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"6027:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11980,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11961,"src":"6034:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11976,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11930,"src":"6011:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11975,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"5996:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":11977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5996:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":11978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6018:8:58","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"5996:30:58","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5996:46:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11982,"nodeType":"ExpressionStatement","src":"5996:46:58"}]}}]},"id":11986,"nodeType":"IfStatement","src":"5639:446:58","trueBody":{"id":11959,"nodeType":"Block","src":"5661:171:58","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":11940,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5696:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":11939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5688:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11938,"name":"address","nodeType":"ElementaryTypeName","src":"5688:7:58","typeDescriptions":{}}},"id":11941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5688:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5702:7:58","memberName":"balance","nodeType":"MemberAccess","src":"5688:21:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5712:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5688:25:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11958,"nodeType":"IfStatement","src":"5684:129:58","trueBody":{"id":11957,"nodeType":"Block","src":"5715:98:58","statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"id":11952,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5775:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":11951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5767:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11950,"name":"address","nodeType":"ElementaryTypeName","src":"5767:7:58","typeDescriptions":{}}},"id":11953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5767:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5781:7:58","memberName":"balance","nodeType":"MemberAccess","src":"5767:21:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11947,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"5750:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5742:8:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":11945,"name":"address","nodeType":"ElementaryTypeName","src":"5742:8:58","stateMutability":"payable","typeDescriptions":{}}},"id":11948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5742:14:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":11949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5757:9:58","memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":5583,"src":"5742:24:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":11955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5742:47:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11956,"nodeType":"ExpressionStatement","src":"5742:47:58"}]}}]}},{"id":11990,"nodeType":"UncheckedBlock","src":"6105:56:58","statements":[{"expression":{"id":11988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6138:3:58","subExpression":{"id":11987,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11924,"src":"6140:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11989,"nodeType":"ExpressionStatement","src":"6138:3:58"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11926,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11924,"src":"5544:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11927,"name":"tokensReturnLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11916,"src":"5548:18:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5544:22:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11992,"initializationExpression":{"assignments":[11924],"declarations":[{"constant":false,"id":11924,"mutability":"mutable","name":"i","nameLocation":"5541:1:58","nodeType":"VariableDeclaration","scope":11992,"src":"5533:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11923,"name":"uint256","nodeType":"ElementaryTypeName","src":"5533:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11925,"nodeType":"VariableDeclarationStatement","src":"5533:9:58"},"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"5528:648:58"}]}}]},"documentation":{"id":11909,"nodeType":"StructuredDocumentation","src":"5213:133:58","text":" @dev Internal function to return tokens to the owner.\n @param tokensReturn The array of tokens to return."},"id":11996,"implemented":true,"kind":"function","modifiers":[],"name":"_returnTokens","nameLocation":"5361:13:58","nodeType":"FunctionDefinition","parameters":{"id":11913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11912,"mutability":"mutable","name":"tokensReturn","nameLocation":"5392:12:58","nodeType":"VariableDeclaration","scope":11996,"src":"5375:29:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11910,"name":"address","nodeType":"ElementaryTypeName","src":"5375:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11911,"nodeType":"ArrayTypeName","src":"5375:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5374:31:58"},"returnParameters":{"id":11914,"nodeType":"ParameterList","parameters":[],"src":"5415:0:58"},"scope":11997,"src":"5352:842:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":11998,"src":"1789:4408:58","usedErrors":[],"usedEvents":[]}],"src":"40:6159:58"},"id":58},"contracts/orchestators/BaluniV1AgentFactory.sol":{"ast":{"absolutePath":"contracts/orchestators/BaluniV1AgentFactory.sol","exportedSymbols":{"AddressUpgradeable":[5774],"BaluniV1Agent":[11997],"BaluniV1AgentFactory":[12360],"ClonesUpgradeable":[5854],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1AgentFactory":[3835],"IBaluniV1Registry":[4909],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"Initializable":[448],"OwnableUpgradeable":[194],"UUPSUpgradeable":[630]},"id":12361,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":11999,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:59"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":12000,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12361,"sourceUnit":195,"src":"1468:75:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":12001,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12361,"sourceUnit":631,"src":"1545:77:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":12002,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12361,"sourceUnit":449,"src":"1624:75:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/orchestators/BaluniV1Agent.sol","file":"./BaluniV1Agent.sol","id":12003,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12361,"sourceUnit":11998,"src":"1701:29:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":12004,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12361,"sourceUnit":4910,"src":"1732:45:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libs/ClonesUpgradeable.sol","file":"../libs/ClonesUpgradeable.sol","id":12005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12361,"sourceUnit":5855,"src":"1779:39:59","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12006,"name":"Initializable","nameLocations":["1855:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1855:13:59"},"id":12007,"nodeType":"InheritanceSpecifier","src":"1855:13:59"},{"baseName":{"id":12008,"name":"OwnableUpgradeable","nameLocations":["1870:18:59"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"1870:18:59"},"id":12009,"nodeType":"InheritanceSpecifier","src":"1870:18:59"},{"baseName":{"id":12010,"name":"UUPSUpgradeable","nameLocations":["1890:15:59"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"1890:15:59"},"id":12011,"nodeType":"InheritanceSpecifier","src":"1890:15:59"}],"canonicalName":"BaluniV1AgentFactory","contractDependencies":[11997],"contractKind":"contract","fullyImplemented":true,"id":12360,"linearizedBaseContracts":[12360,630,1608,194,1293,448],"name":"BaluniV1AgentFactory","nameLocation":"1831:20:59","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":12013,"mutability":"mutable","name":"implementation","nameLocation":"2024:14:59","nodeType":"VariableDeclaration","scope":12360,"src":"2008:30:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12012,"name":"address","nodeType":"ElementaryTypeName","src":"2008:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"functionSelector":"7811a785","id":12018,"mutability":"mutable","name":"userAgents","nameLocation":"2088:10:59","nodeType":"VariableDeclaration","scope":12360,"src":"2047:51:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_BaluniV1Agent_$11997_$","typeString":"mapping(address => contract BaluniV1Agent)"},"typeName":{"id":12017,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12014,"name":"address","nodeType":"ElementaryTypeName","src":"2055:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2047:33:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_BaluniV1Agent_$11997_$","typeString":"mapping(address => contract BaluniV1Agent)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12016,"nodeType":"UserDefinedTypeName","pathNode":{"id":12015,"name":"BaluniV1Agent","nameLocations":["2066:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"2066:13:59"},"referencedDeclaration":11997,"src":"2066:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}},"visibility":"public"},{"constant":false,"functionSelector":"7b103999","id":12021,"mutability":"mutable","name":"registry","nameLocation":"2132:8:59","nodeType":"VariableDeclaration","scope":12360,"src":"2107:33:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":12020,"nodeType":"UserDefinedTypeName","pathNode":{"id":12019,"name":"IBaluniV1Registry","nameLocations":["2107:17:59"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"2107:17:59"},"referencedDeclaration":4909,"src":"2107:17:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"anonymous":false,"eventSelector":"8c6e353968e7ffd60dba22ff7d2a4354af301f9d41858a35668e7292ec1301b6","id":12027,"name":"AgentCreated","nameLocation":"2155:12:59","nodeType":"EventDefinition","parameters":{"id":12026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12023,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"2176:4:59","nodeType":"VariableDeclaration","scope":12027,"src":"2168:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12022,"name":"address","nodeType":"ElementaryTypeName","src":"2168:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12025,"indexed":false,"mutability":"mutable","name":"agent","nameLocation":"2190:5:59","nodeType":"VariableDeclaration","scope":12027,"src":"2182:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12024,"name":"address","nodeType":"ElementaryTypeName","src":"2182:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2167:29:59"},"src":"2149:48:59"},{"body":{"id":12052,"nodeType":"Block","src":"2489:121:59","statements":[{"assignments":[12035],"declarations":[{"constant":false,"id":12035,"mutability":"mutable","name":"newAgent","nameLocation":"2514:8:59","nodeType":"VariableDeclaration","scope":12052,"src":"2500:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"},"typeName":{"id":12034,"nodeType":"UserDefinedTypeName","pathNode":{"id":12033,"name":"BaluniV1Agent","nameLocations":["2500:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"2500:13:59"},"referencedDeclaration":11997,"src":"2500:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"visibility":"internal"}],"id":12044,"initialValue":{"arguments":[{"arguments":[{"id":12041,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2551:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1AgentFactory_$12360","typeString":"contract BaluniV1AgentFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1AgentFactory_$12360","typeString":"contract BaluniV1AgentFactory"}],"id":12040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2543:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12039,"name":"address","nodeType":"ElementaryTypeName","src":"2543:7:59","typeDescriptions":{}}},"id":12042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2543:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2525:17:59","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_BaluniV1Agent_$11997_$","typeString":"function (address) returns (contract BaluniV1Agent)"},"typeName":{"id":12037,"nodeType":"UserDefinedTypeName","pathNode":{"id":12036,"name":"BaluniV1Agent","nameLocations":["2529:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"2529:13:59"},"referencedDeclaration":11997,"src":"2529:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}},"id":12043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2525:32:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"nodeType":"VariableDeclarationStatement","src":"2500:57:59"},{"expression":{"id":12050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12045,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12013,"src":"2568:14:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12048,"name":"newAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12035,"src":"2593:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2585:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12046,"name":"address","nodeType":"ElementaryTypeName","src":"2585:7:59","typeDescriptions":{}}},"id":12049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2585:17:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2568:34:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12051,"nodeType":"ExpressionStatement","src":"2568:34:59"}]},"documentation":{"id":12028,"nodeType":"StructuredDocumentation","src":"2205:227:59","text":" @dev Changes the implementation of the BaluniV1Agent contract.\n Only the contract owner can call this function.\n Creates a new instance of BaluniV1Agent and updates the implementation address."},"functionSelector":"6c6be5f3","id":12053,"implemented":true,"kind":"function","modifiers":[{"id":12031,"kind":"modifierInvocation","modifierName":{"id":12030,"name":"onlyOwner","nameLocations":["2479:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2479:9:59"},"nodeType":"ModifierInvocation","src":"2479:9:59"}],"name":"changeImplementation","nameLocation":"2447:20:59","nodeType":"FunctionDefinition","parameters":{"id":12029,"nodeType":"ParameterList","parameters":[],"src":"2467:2:59"},"returnParameters":{"id":12032,"nodeType":"ParameterList","parameters":[],"src":"2489:0:59"},"scope":12360,"src":"2438:172:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12094,"nodeType":"Block","src":"2785:336:59","statements":[{"expression":{"arguments":[{"expression":{"id":12062,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2811:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2815:6:59","memberName":"sender","nodeType":"MemberAccess","src":"2811:10:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12061,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2796:14:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2796:26:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12065,"nodeType":"ExpressionStatement","src":"2796:26:59"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12066,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2833:22:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2833:24:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12068,"nodeType":"ExpressionStatement","src":"2833:24:59"},{"expression":{"id":12073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12069,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"2870:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12071,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12056,"src":"2899:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12070,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2881:17:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":12072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2881:28:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2870:39:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12074,"nodeType":"ExpressionStatement","src":"2870:39:59"},{"assignments":[12077],"declarations":[{"constant":false,"id":12077,"mutability":"mutable","name":"newAgent","nameLocation":"3025:8:59","nodeType":"VariableDeclaration","scope":12094,"src":"3011:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"},"typeName":{"id":12076,"nodeType":"UserDefinedTypeName","pathNode":{"id":12075,"name":"BaluniV1Agent","nameLocations":["3011:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"3011:13:59"},"referencedDeclaration":11997,"src":"3011:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"visibility":"internal"}],"id":12086,"initialValue":{"arguments":[{"arguments":[{"id":12083,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3062:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1AgentFactory_$12360","typeString":"contract BaluniV1AgentFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1AgentFactory_$12360","typeString":"contract BaluniV1AgentFactory"}],"id":12082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3054:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12081,"name":"address","nodeType":"ElementaryTypeName","src":"3054:7:59","typeDescriptions":{}}},"id":12084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3054:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"3036:17:59","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_BaluniV1Agent_$11997_$","typeString":"function (address) returns (contract BaluniV1Agent)"},"typeName":{"id":12079,"nodeType":"UserDefinedTypeName","pathNode":{"id":12078,"name":"BaluniV1Agent","nameLocations":["3040:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"3040:13:59"},"referencedDeclaration":11997,"src":"3040:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}},"id":12085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3036:32:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"nodeType":"VariableDeclarationStatement","src":"3011:57:59"},{"expression":{"id":12092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12087,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12013,"src":"3079:14:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12090,"name":"newAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12077,"src":"3104:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3096:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12088,"name":"address","nodeType":"ElementaryTypeName","src":"3096:7:59","typeDescriptions":{}}},"id":12091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3096:17:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3079:34:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12093,"nodeType":"ExpressionStatement","src":"3079:34:59"}]},"documentation":{"id":12054,"nodeType":"StructuredDocumentation","src":"2618:103:59","text":" @dev Initializes the contract by calling the initializers of the parent contracts."},"functionSelector":"c4d66de8","id":12095,"implemented":true,"kind":"function","modifiers":[{"id":12059,"kind":"modifierInvocation","modifierName":{"id":12058,"name":"initializer","nameLocations":["2773:11:59"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2773:11:59"},"nodeType":"ModifierInvocation","src":"2773:11:59"}],"name":"initialize","nameLocation":"2736:10:59","nodeType":"FunctionDefinition","parameters":{"id":12057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12056,"mutability":"mutable","name":"_registry","nameLocation":"2755:9:59","nodeType":"VariableDeclaration","scope":12095,"src":"2747:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12055,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2746:19:59"},"returnParameters":{"id":12060,"nodeType":"ParameterList","parameters":[],"src":"2785:0:59"},"scope":12360,"src":"2727:394:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12138,"nodeType":"Block","src":"3216:247:59","statements":[{"expression":{"arguments":[{"expression":{"id":12106,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3242:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3246:6:59","memberName":"sender","nodeType":"MemberAccess","src":"3242:10:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12105,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"3227:14:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3227:26:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12109,"nodeType":"ExpressionStatement","src":"3227:26:59"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12110,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"3264:22:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3264:24:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12112,"nodeType":"ExpressionStatement","src":"3264:24:59"},{"expression":{"id":12117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12113,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"3301:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12115,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12097,"src":"3330:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12114,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"3312:17:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":12116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3312:28:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"3301:39:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12118,"nodeType":"ExpressionStatement","src":"3301:39:59"},{"assignments":[12121],"declarations":[{"constant":false,"id":12121,"mutability":"mutable","name":"newAgent","nameLocation":"3367:8:59","nodeType":"VariableDeclaration","scope":12138,"src":"3353:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"},"typeName":{"id":12120,"nodeType":"UserDefinedTypeName","pathNode":{"id":12119,"name":"BaluniV1Agent","nameLocations":["3353:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"3353:13:59"},"referencedDeclaration":11997,"src":"3353:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"visibility":"internal"}],"id":12130,"initialValue":{"arguments":[{"arguments":[{"id":12127,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3404:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1AgentFactory_$12360","typeString":"contract BaluniV1AgentFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1AgentFactory_$12360","typeString":"contract BaluniV1AgentFactory"}],"id":12126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3396:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12125,"name":"address","nodeType":"ElementaryTypeName","src":"3396:7:59","typeDescriptions":{}}},"id":12128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3396:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"3378:17:59","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_BaluniV1Agent_$11997_$","typeString":"function (address) returns (contract BaluniV1Agent)"},"typeName":{"id":12123,"nodeType":"UserDefinedTypeName","pathNode":{"id":12122,"name":"BaluniV1Agent","nameLocations":["3382:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"3382:13:59"},"referencedDeclaration":11997,"src":"3382:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}},"id":12129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3378:32:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"nodeType":"VariableDeclarationStatement","src":"3353:57:59"},{"expression":{"id":12136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12131,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12013,"src":"3421:14:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12134,"name":"newAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12121,"src":"3446:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3438:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12132,"name":"address","nodeType":"ElementaryTypeName","src":"3438:7:59","typeDescriptions":{}}},"id":12135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3438:17:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3421:34:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12137,"nodeType":"ExpressionStatement","src":"3421:34:59"}]},"functionSelector":"8f2248bc","id":12139,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12102,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3207:7:59","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":12103,"kind":"modifierInvocation","modifierName":{"id":12101,"name":"reinitializer","nameLocations":["3193:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"3193:13:59"},"nodeType":"ModifierInvocation","src":"3193:22:59"}],"name":"reinitialize","nameLocation":"3138:12:59","nodeType":"FunctionDefinition","parameters":{"id":12100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12097,"mutability":"mutable","name":"_registry","nameLocation":"3159:9:59","nodeType":"VariableDeclaration","scope":12139,"src":"3151:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12096,"name":"address","nodeType":"ElementaryTypeName","src":"3151:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12099,"mutability":"mutable","name":"version","nameLocation":"3177:7:59","nodeType":"VariableDeclaration","scope":12139,"src":"3170:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12098,"name":"uint64","nodeType":"ElementaryTypeName","src":"3170:6:59","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3150:35:59"},"returnParameters":{"id":12104,"nodeType":"ParameterList","parameters":[],"src":"3216:0:59"},"scope":12360,"src":"3129:334:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":12148,"nodeType":"Block","src":"3741:2:59","statements":[]},"documentation":{"id":12140,"nodeType":"StructuredDocumentation","src":"3471:182:59","text":" @dev Internal function to authorize an upgrade to a new implementation contract.\n @param newImplementation The address of the new implementation contract."},"id":12149,"implemented":true,"kind":"function","modifiers":[{"id":12146,"kind":"modifierInvocation","modifierName":{"id":12145,"name":"onlyOwner","nameLocations":["3731:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3731:9:59"},"nodeType":"ModifierInvocation","src":"3731:9:59"}],"name":"_authorizeUpgrade","nameLocation":"3668:17:59","nodeType":"FunctionDefinition","overrides":{"id":12144,"nodeType":"OverrideSpecifier","overrides":[],"src":"3722:8:59"},"parameters":{"id":12143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12142,"mutability":"mutable","name":"newImplementation","nameLocation":"3694:17:59","nodeType":"VariableDeclaration","scope":12149,"src":"3686:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12141,"name":"address","nodeType":"ElementaryTypeName","src":"3686:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3685:27:59"},"returnParameters":{"id":12147,"nodeType":"ParameterList","parameters":[],"src":"3741:0:59"},"scope":12360,"src":"3659:84:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12192,"nodeType":"Block","src":"4162:250:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12163,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"4189:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}],"id":12162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4181:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12161,"name":"address","nodeType":"ElementaryTypeName","src":"4181:7:59","typeDescriptions":{}}},"id":12164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4181:17:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4210:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4202:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12165,"name":"address","nodeType":"ElementaryTypeName","src":"4202:7:59","typeDescriptions":{}}},"id":12168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4202:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4181:31:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7265676973747279206e6f7420736574","id":12170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4214:18:59","typeDescriptions":{"typeIdentifier":"t_stringliteral_4deb429080cdc72dfa69065ca954584fabbfd87f9e50d29b6d9d8fd8a6d56106","typeString":"literal_string \"registry not set\""},"value":"registry not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4deb429080cdc72dfa69065ca954584fabbfd87f9e50d29b6d9d8fd8a6d56106","typeString":"literal_string \"registry not set\""}],"id":12160,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4173:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4173:60:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12172,"nodeType":"ExpressionStatement","src":"4173:60:59"},{"assignments":[12174],"declarations":[{"constant":false,"id":12174,"mutability":"mutable","name":"clone","nameLocation":"4252:5:59","nodeType":"VariableDeclaration","scope":12192,"src":"4244:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12173,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12180,"initialValue":{"arguments":[{"id":12177,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12013,"src":"4297:14:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12178,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12152,"src":"4313:4:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12175,"name":"ClonesUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5854,"src":"4260:17:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ClonesUpgradeable_$5854_$","typeString":"type(library ClonesUpgradeable)"}},"id":12176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4278:18:59","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":5819,"src":"4260:36:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":12179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4260:58:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4244:74:59"},{"expression":{"arguments":[{"id":12185,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12154,"src":"4361:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":12182,"name":"clone","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"4343:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12181,"name":"BaluniV1Agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11997,"src":"4329:13:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaluniV1Agent_$11997_$","typeString":"type(contract BaluniV1Agent)"}},"id":12183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4329:20:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"id":12184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4350:10:59","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11695,"src":"4329:31:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":12186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4329:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12187,"nodeType":"ExpressionStatement","src":"4329:37:59"},{"expression":{"arguments":[{"id":12189,"name":"clone","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"4398:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12188,"name":"BaluniV1Agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11997,"src":"4384:13:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaluniV1Agent_$11997_$","typeString":"type(contract BaluniV1Agent)"}},"id":12190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4384:20:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"functionReturnParameters":12159,"id":12191,"nodeType":"Return","src":"4377:27:59"}]},"documentation":{"id":12150,"nodeType":"StructuredDocumentation","src":"3751:322:59","text":" @dev Internal function to create a new BaluniV1Agent contract instance.\n @param salt The salt value used for deterministic cloning.\n @param user The address of the user for whom the agent is being created.\n @return The address of the newly created BaluniV1Agent contract instance."},"id":12193,"implemented":true,"kind":"function","modifiers":[],"name":"_createAgent","nameLocation":"4088:12:59","nodeType":"FunctionDefinition","parameters":{"id":12155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12152,"mutability":"mutable","name":"salt","nameLocation":"4109:4:59","nodeType":"VariableDeclaration","scope":12193,"src":"4101:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12151,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4101:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12154,"mutability":"mutable","name":"user","nameLocation":"4123:4:59","nodeType":"VariableDeclaration","scope":12193,"src":"4115:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12153,"name":"address","nodeType":"ElementaryTypeName","src":"4115:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4100:28:59"},"returnParameters":{"id":12159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12193,"src":"4147:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"},"typeName":{"id":12157,"nodeType":"UserDefinedTypeName","pathNode":{"id":12156,"name":"BaluniV1Agent","nameLocations":["4147:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"4147:13:59"},"referencedDeclaration":11997,"src":"4147:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"visibility":"internal"}],"src":"4146:15:59"},"scope":12360,"src":"4079:333:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12208,"nodeType":"Block","src":"4725:51:59","statements":[{"expression":{"arguments":[{"baseExpression":{"id":12203,"name":"userAgents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12018,"src":"4751:10:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_BaluniV1Agent_$11997_$","typeString":"mapping(address => contract BaluniV1Agent)"}},"id":12205,"indexExpression":{"id":12204,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12196,"src":"4762:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4751:16:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4743:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12201,"name":"address","nodeType":"ElementaryTypeName","src":"4743:7:59","typeDescriptions":{}}},"id":12206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4743:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12200,"id":12207,"nodeType":"Return","src":"4736:32:59"}]},"documentation":{"id":12194,"nodeType":"StructuredDocumentation","src":"4420:230:59","text":" @dev Retrieves the address of the BaluniV1Agent contract associated with a user.\n @param user The address of the user.\n @return The address of the BaluniV1Agent contract associated with the user."},"functionSelector":"27d54a92","id":12209,"implemented":true,"kind":"function","modifiers":[],"name":"getAgentAddress","nameLocation":"4665:15:59","nodeType":"FunctionDefinition","parameters":{"id":12197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12196,"mutability":"mutable","name":"user","nameLocation":"4689:4:59","nodeType":"VariableDeclaration","scope":12209,"src":"4681:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12195,"name":"address","nodeType":"ElementaryTypeName","src":"4681:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4680:14:59"},"returnParameters":{"id":12200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12199,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12209,"src":"4716:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12198,"name":"address","nodeType":"ElementaryTypeName","src":"4716:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4715:9:59"},"scope":12360,"src":"4656:120:59","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12302,"nodeType":"Block","src":"5075:544:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12220,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5102:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1AgentFactory_$12360","typeString":"contract BaluniV1AgentFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1AgentFactory_$12360","typeString":"contract BaluniV1AgentFactory"}],"id":12219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5094:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12218,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:59","typeDescriptions":{}}},"id":12221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5119:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5111:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12222,"name":"address","nodeType":"ElementaryTypeName","src":"5111:7:59","typeDescriptions":{}}},"id":12225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5111:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5094:27:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4167656e7420666163746f7279206e6f7420736574","id":12227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5123:23:59","typeDescriptions":{"typeIdentifier":"t_stringliteral_c0699f179d2a1b62cb97d8e7fffb6f849ca18ed4e697b2f010f29e743716b888","typeString":"literal_string \"Agent factory not set\""},"value":"Agent factory not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0699f179d2a1b62cb97d8e7fffb6f849ca18ed4e697b2f010f29e743716b888","typeString":"literal_string \"Agent factory not set\""}],"id":12217,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5086:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5086:61:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12229,"nodeType":"ExpressionStatement","src":"5086:61:59"},{"assignments":[12231],"declarations":[{"constant":false,"id":12231,"mutability":"mutable","name":"salt","nameLocation":"5166:4:59","nodeType":"VariableDeclaration","scope":12302,"src":"5158:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12230,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5158:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12238,"initialValue":{"arguments":[{"arguments":[{"id":12235,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5200:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12233,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5183:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5187:12:59","memberName":"encodePacked","nodeType":"MemberAccess","src":"5183:16:59","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5183:22:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12232,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5173:9:59","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5173:33:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5158:48:59"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":12241,"name":"userAgents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12018,"src":"5229:10:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_BaluniV1Agent_$11997_$","typeString":"mapping(address => contract BaluniV1Agent)"}},"id":12243,"indexExpression":{"id":12242,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5240:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5229:16:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5221:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12239,"name":"address","nodeType":"ElementaryTypeName","src":"5221:7:59","typeDescriptions":{}}},"id":12244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5221:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":12247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5258:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5250:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12245,"name":"address","nodeType":"ElementaryTypeName","src":"5250:7:59","typeDescriptions":{}}},"id":12248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5250:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5221:39:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"baseExpression":{"id":12253,"name":"userAgents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12018,"src":"5283:10:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_BaluniV1Agent_$11997_$","typeString":"mapping(address => contract BaluniV1Agent)"}},"id":12255,"indexExpression":{"id":12254,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5294:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5283:16:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5275:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12251,"name":"address","nodeType":"ElementaryTypeName","src":"5275:7:59","typeDescriptions":{}}},"id":12256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5275:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12250,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12320,"src":"5264:10:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":12257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5264:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":12258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5305:5:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5264:46:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5221:89:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12294,"nodeType":"IfStatement","src":"5217:352:59","trueBody":{"id":12293,"nodeType":"Block","src":"5312:257:59","statements":[{"assignments":[12263],"declarations":[{"constant":false,"id":12263,"mutability":"mutable","name":"agent","nameLocation":"5341:5:59","nodeType":"VariableDeclaration","scope":12293,"src":"5327:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"},"typeName":{"id":12262,"nodeType":"UserDefinedTypeName","pathNode":{"id":12261,"name":"BaluniV1Agent","nameLocations":["5327:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":11997,"src":"5327:13:59"},"referencedDeclaration":11997,"src":"5327:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"visibility":"internal"}],"id":12268,"initialValue":{"arguments":[{"id":12265,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12231,"src":"5362:4:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12266,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5368:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12264,"name":"_createAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12193,"src":"5349:12:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_contract$_BaluniV1Agent_$11997_$","typeString":"function (bytes32,address) returns (contract BaluniV1Agent)"}},"id":12267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5349:24:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"nodeType":"VariableDeclarationStatement","src":"5327:46:59"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":12273,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12263,"src":"5415:5:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5407:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12271,"name":"address","nodeType":"ElementaryTypeName","src":"5407:7:59","typeDescriptions":{}}},"id":12274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:14:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12270,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12320,"src":"5396:10:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":12275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5396:26:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4167656e74206372656174696f6e206661696c65642c206e6f74206120636f6e7472616374","id":12276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5424:39:59","typeDescriptions":{"typeIdentifier":"t_stringliteral_ac0fb0826e30aa98458c6cf9bc90efc135a5469e91a5eaca89259410b213a0ed","typeString":"literal_string \"Agent creation failed, not a contract\""},"value":"Agent creation failed, not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ac0fb0826e30aa98458c6cf9bc90efc135a5469e91a5eaca89259410b213a0ed","typeString":"literal_string \"Agent creation failed, not a contract\""}],"id":12269,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5388:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:76:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12278,"nodeType":"ExpressionStatement","src":"5388:76:59"},{"expression":{"id":12283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12279,"name":"userAgents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12018,"src":"5479:10:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_BaluniV1Agent_$11997_$","typeString":"mapping(address => contract BaluniV1Agent)"}},"id":12281,"indexExpression":{"id":12280,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5490:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5479:16:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12282,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12263,"src":"5498:5:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"src":"5479:24:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}},"id":12284,"nodeType":"ExpressionStatement","src":"5479:24:59"},{"eventCall":{"arguments":[{"id":12286,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5536:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12289,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12263,"src":"5550:5:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5542:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12287,"name":"address","nodeType":"ElementaryTypeName","src":"5542:7:59","typeDescriptions":{}}},"id":12290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5542:14:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12285,"name":"AgentCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12027,"src":"5523:12:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":12291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5523:34:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12292,"nodeType":"EmitStatement","src":"5518:39:59"}]}},{"expression":{"arguments":[{"baseExpression":{"id":12297,"name":"userAgents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12018,"src":"5594:10:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_BaluniV1Agent_$11997_$","typeString":"mapping(address => contract BaluniV1Agent)"}},"id":12299,"indexExpression":{"id":12298,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"5605:4:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5594:16:59","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Agent_$11997","typeString":"contract BaluniV1Agent"}],"id":12296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5586:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12295,"name":"address","nodeType":"ElementaryTypeName","src":"5586:7:59","typeDescriptions":{}}},"id":12300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5586:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12216,"id":12301,"nodeType":"Return","src":"5579:32:59"}]},"documentation":{"id":12210,"nodeType":"StructuredDocumentation","src":"4784:218:59","text":" @dev Returns the address of an existing agent for the given user, or creates a new agent if one doesn't exist.\n @param user The address of the user.\n @return The address of the agent."},"functionSelector":"9b76a5cd","id":12303,"implemented":true,"kind":"function","modifiers":[],"name":"getOrCreateAgent","nameLocation":"5017:16:59","nodeType":"FunctionDefinition","parameters":{"id":12213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12212,"mutability":"mutable","name":"user","nameLocation":"5042:4:59","nodeType":"VariableDeclaration","scope":12303,"src":"5034:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12211,"name":"address","nodeType":"ElementaryTypeName","src":"5034:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5033:14:59"},"returnParameters":{"id":12216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12215,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12303,"src":"5066:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12214,"name":"address","nodeType":"ElementaryTypeName","src":"5066:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5065:9:59"},"scope":12360,"src":"5008:611:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12319,"nodeType":"Block","src":"5886:127:59","statements":[{"assignments":[12312],"declarations":[{"constant":false,"id":12312,"mutability":"mutable","name":"size","nameLocation":"5904:4:59","nodeType":"VariableDeclaration","scope":12319,"src":"5897:11:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":12311,"name":"uint32","nodeType":"ElementaryTypeName","src":"5897:6:59","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":12313,"nodeType":"VariableDeclarationStatement","src":"5897:11:59"},{"AST":{"nativeSrc":"5928:52:59","nodeType":"YulBlock","src":"5928:52:59","statements":[{"nativeSrc":"5943:26:59","nodeType":"YulAssignment","src":"5943:26:59","value":{"arguments":[{"name":"_addr","nativeSrc":"5963:5:59","nodeType":"YulIdentifier","src":"5963:5:59"}],"functionName":{"name":"extcodesize","nativeSrc":"5951:11:59","nodeType":"YulIdentifier","src":"5951:11:59"},"nativeSrc":"5951:18:59","nodeType":"YulFunctionCall","src":"5951:18:59"},"variableNames":[{"name":"size","nativeSrc":"5943:4:59","nodeType":"YulIdentifier","src":"5943:4:59"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":12306,"isOffset":false,"isSlot":false,"src":"5963:5:59","valueSize":1},{"declaration":12312,"isOffset":false,"isSlot":false,"src":"5943:4:59","valueSize":1}],"id":12314,"nodeType":"InlineAssembly","src":"5919:61:59"},{"expression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":12317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12315,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12312,"src":"5997:4:59","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6004:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5997:8:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12310,"id":12318,"nodeType":"Return","src":"5990:15:59"}]},"documentation":{"id":12304,"nodeType":"StructuredDocumentation","src":"5627:190:59","text":" @dev Checks if the given address is a contract.\n @param _addr The address to check.\n @return A boolean indicating whether the address is a contract or not."},"id":12320,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"5832:10:59","nodeType":"FunctionDefinition","parameters":{"id":12307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12306,"mutability":"mutable","name":"_addr","nameLocation":"5851:5:59","nodeType":"VariableDeclaration","scope":12320,"src":"5843:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12305,"name":"address","nodeType":"ElementaryTypeName","src":"5843:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5842:15:59"},"returnParameters":{"id":12310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12320,"src":"5880:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12308,"name":"bool","nodeType":"ElementaryTypeName","src":"5880:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5879:6:59"},"scope":12360,"src":"5823:190:59","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":12333,"nodeType":"Block","src":"6086:61:59","statements":[{"expression":{"id":12331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12327,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"6097:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12329,"name":"_newRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12322,"src":"6126:12:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12328,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"6108:17:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":12330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:31:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"6097:42:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12332,"nodeType":"ExpressionStatement","src":"6097:42:59"}]},"functionSelector":"15554c55","id":12334,"implemented":true,"kind":"function","modifiers":[{"id":12325,"kind":"modifierInvocation","modifierName":{"id":12324,"name":"onlyOwner","nameLocations":["6076:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"6076:9:59"},"nodeType":"ModifierInvocation","src":"6076:9:59"}],"name":"changeRegistry","nameLocation":"6030:14:59","nodeType":"FunctionDefinition","parameters":{"id":12323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12322,"mutability":"mutable","name":"_newRegistry","nameLocation":"6053:12:59","nodeType":"VariableDeclaration","scope":12334,"src":"6045:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12321,"name":"address","nodeType":"ElementaryTypeName","src":"6045:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6044:22:59"},"returnParameters":{"id":12326,"nodeType":"ParameterList","parameters":[],"src":"6086:0:59"},"scope":12360,"src":"6021:126:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12344,"nodeType":"Block","src":"6210:43:59","statements":[{"expression":{"arguments":[{"id":12341,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"6236:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}],"id":12340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6228:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12339,"name":"address","nodeType":"ElementaryTypeName","src":"6228:7:59","typeDescriptions":{}}},"id":12342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6228:17:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12338,"id":12343,"nodeType":"Return","src":"6221:24:59"}]},"functionSelector":"5ab1bd53","id":12345,"implemented":true,"kind":"function","modifiers":[],"name":"getRegistry","nameLocation":"6164:11:59","nodeType":"FunctionDefinition","parameters":{"id":12335,"nodeType":"ParameterList","parameters":[],"src":"6175:2:59"},"returnParameters":{"id":12338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12345,"src":"6201:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12336,"name":"address","nodeType":"ElementaryTypeName","src":"6201:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6200:9:59"},"scope":12360,"src":"6155:98:59","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":12358,"nodeType":"Block","src":"6332:60:59","statements":[{"expression":{"id":12356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12352,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"6343:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12354,"name":"_newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"6372:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12353,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"6354:17:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":12355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6354:30:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"6343:41:59","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12357,"nodeType":"ExpressionStatement","src":"6343:41:59"}]},"functionSelector":"0889e14c","id":12359,"implemented":true,"kind":"function","modifiers":[{"id":12350,"kind":"modifierInvocation","modifierName":{"id":12349,"name":"onlyOwner","nameLocations":["6322:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"6322:9:59"},"nodeType":"ModifierInvocation","src":"6322:9:59"}],"name":"changeRegistryAddress","nameLocation":"6270:21:59","nodeType":"FunctionDefinition","parameters":{"id":12348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12347,"mutability":"mutable","name":"_newAddress","nameLocation":"6300:11:59","nodeType":"VariableDeclaration","scope":12359,"src":"6292:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12346,"name":"address","nodeType":"ElementaryTypeName","src":"6292:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6291:21:59"},"returnParameters":{"id":12351,"nodeType":"ParameterList","parameters":[],"src":"6332:0:59"},"scope":12360,"src":"6261:131:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12361,"src":"1822:4573:59","usedErrors":[30,35,211,214,475,480,1780,1793,2690,2693],"usedEvents":[41,219,1759,12027]}],"src":"40:6357:59"},"id":59},"contracts/orchestators/BaluniV1Router.sol":{"ast":{"absolutePath":"contracts/orchestators/BaluniV1Router.sol","exportedSymbols":{"BaluniV1Router":[14139],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"EnumerableSetUpgradeable":[6605],"I1inchSpotAgg":[3793],"IBaluniV1Agent":[3813],"IBaluniV1AgentFactory":[3835],"IBaluniV1Oracle":[4240],"IBaluniV1Rebalancer":[4675],"IBaluniV1Registry":[4909],"IBaluniV1Swapper":[5208],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"ISwapRouter":[3766],"IUniswapV3Factory":[3153],"IUniswapV3SwapCallback":[3189],"Initializable":[448],"OwnableUpgradeable":[194],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":14140,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":12362,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:60"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":12363,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":1248,"src":"1468:78:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":12364,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":195,"src":"1548:75:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":12365,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":1599,"src":"1625:82:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":12366,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":631,"src":"1709:77:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":12367,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":3767,"src":"1788:68:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","file":"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol","id":12368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":3154,"src":"1858:69:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":12369,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":449,"src":"1929:75:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Agent.sol","file":"../interfaces/IBaluniV1Agent.sol","id":12370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":3814,"src":"2008:42:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1AgentFactory.sol","file":"../interfaces/IBaluniV1AgentFactory.sol","id":12371,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":3836,"src":"2052:49:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Rebalancer.sol","file":"../interfaces/IBaluniV1Rebalancer.sol","id":12372,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":4676,"src":"2103:47:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/I1inchSpotAgg.sol","file":"../interfaces/I1inchSpotAgg.sol","id":12373,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":3794,"src":"2152:41:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","file":"../interfaces/IBaluniV1Oracle.sol","id":12374,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":4241,"src":"2195:43:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libs/EnumerableSetUpgradeable.sol","file":"../libs/EnumerableSetUpgradeable.sol","id":12375,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":6606,"src":"2240:46:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","file":"../interfaces/IBaluniV1Swapper.sol","id":12376,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":5209,"src":"2288:44:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":12377,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14140,"sourceUnit":4910,"src":"2334:45:60","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12378,"name":"Initializable","nameLocations":["2415:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"2415:13:60"},"id":12379,"nodeType":"InheritanceSpecifier","src":"2415:13:60"},{"baseName":{"id":12380,"name":"ERC20Upgradeable","nameLocations":["2435:16:60"],"nodeType":"IdentifierPath","referencedDeclaration":1247,"src":"2435:16:60"},"id":12381,"nodeType":"InheritanceSpecifier","src":"2435:16:60"},{"baseName":{"id":12382,"name":"OwnableUpgradeable","nameLocations":["2458:18:60"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"2458:18:60"},"id":12383,"nodeType":"InheritanceSpecifier","src":"2458:18:60"},{"baseName":{"id":12384,"name":"ReentrancyGuardUpgradeable","nameLocations":["2483:26:60"],"nodeType":"IdentifierPath","referencedDeclaration":1598,"src":"2483:26:60"},"id":12385,"nodeType":"InheritanceSpecifier","src":"2483:26:60"},{"baseName":{"id":12386,"name":"UUPSUpgradeable","nameLocations":["2516:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"2516:15:60"},"id":12387,"nodeType":"InheritanceSpecifier","src":"2516:15:60"}],"canonicalName":"BaluniV1Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":14139,"linearizedBaseContracts":[14139,630,1608,1598,194,1247,1650,2677,2651,1293,448],"name":"BaluniV1Router","nameLocation":"2392:14:60","nodeType":"ContractDefinition","nodes":[{"canonicalName":"BaluniV1Router.Call","id":12394,"members":[{"constant":false,"id":12389,"mutability":"mutable","name":"to","nameLocation":"2571:2:60","nodeType":"VariableDeclaration","scope":12394,"src":"2563:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12388,"name":"address","nodeType":"ElementaryTypeName","src":"2563:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12391,"mutability":"mutable","name":"value","nameLocation":"2592:5:60","nodeType":"VariableDeclaration","scope":12394,"src":"2584:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12390,"name":"uint256","nodeType":"ElementaryTypeName","src":"2584:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12393,"mutability":"mutable","name":"data","nameLocation":"2614:4:60","nodeType":"VariableDeclaration","scope":12394,"src":"2608:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":12392,"name":"bytes","nodeType":"ElementaryTypeName","src":"2608:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Call","nameLocation":"2547:4:60","nodeType":"StructDefinition","scope":14139,"src":"2540:86:60","visibility":"public"},{"constant":false,"id":12397,"mutability":"mutable","name":"tokens","nameLocation":"2678:6:60","nodeType":"VariableDeclaration","scope":14139,"src":"2634:50:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet"},"typeName":{"id":12396,"nodeType":"UserDefinedTypeName","pathNode":{"id":12395,"name":"EnumerableSetUpgradeable.AddressSet","nameLocations":["2634:24:60","2659:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":6318,"src":"2634:35:60"},"referencedDeclaration":6318,"src":"2634:35:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"}},"visibility":"private"},{"constant":false,"functionSelector":"7b103999","id":12400,"mutability":"mutable","name":"registry","nameLocation":"2718:8:60","nodeType":"VariableDeclaration","scope":14139,"src":"2693:33:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":12399,"nodeType":"UserDefinedTypeName","pathNode":{"id":12398,"name":"IBaluniV1Registry","nameLocations":["2693:17:60"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"2693:17:60"},"referencedDeclaration":4909,"src":"2693:17:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"global":false,"id":12404,"libraryName":{"id":12401,"name":"EnumerableSetUpgradeable","nameLocations":["2741:24:60"],"nodeType":"IdentifierPath","referencedDeclaration":6605,"src":"2741:24:60"},"nodeType":"UsingForDirective","src":"2735:71:60","typeName":{"id":12403,"nodeType":"UserDefinedTypeName","pathNode":{"id":12402,"name":"EnumerableSetUpgradeable.AddressSet","nameLocations":["2770:24:60","2795:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":6318,"src":"2770:35:60"},"referencedDeclaration":6318,"src":"2770:35:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage_ptr","typeString":"struct EnumerableSetUpgradeable.AddressSet"}}},{"constant":false,"functionSelector":"cdf456e1","id":12406,"mutability":"mutable","name":"baseAsset","nameLocation":"2829:9:60","nodeType":"VariableDeclaration","scope":14139,"src":"2814:24:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12405,"name":"address","nodeType":"ElementaryTypeName","src":"2814:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"eventSelector":"959525f9273812bc5ed0bd375df7492e36027567ab13116ec62673c8d46870c8","id":12417,"name":"Execute","nameLocation":"2853:7:60","nodeType":"EventDefinition","parameters":{"id":12416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12408,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"2869:4:60","nodeType":"VariableDeclaration","scope":12417,"src":"2861:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12407,"name":"address","nodeType":"ElementaryTypeName","src":"2861:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12412,"indexed":false,"mutability":"mutable","name":"calls","nameLocation":"2897:5:60","nodeType":"VariableDeclaration","scope":12417,"src":"2875:27:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_memory_ptr_$dyn_memory_ptr","typeString":"struct IBaluniV1Agent.Call[]"},"typeName":{"baseType":{"id":12410,"nodeType":"UserDefinedTypeName","pathNode":{"id":12409,"name":"IBaluniV1Agent.Call","nameLocations":["2875:14:60","2890:4:60"],"nodeType":"IdentifierPath","referencedDeclaration":3802,"src":"2875:19:60"},"referencedDeclaration":3802,"src":"2875:19:60","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$3802_storage_ptr","typeString":"struct IBaluniV1Agent.Call"}},"id":12411,"nodeType":"ArrayTypeName","src":"2875:21:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_storage_$dyn_storage_ptr","typeString":"struct IBaluniV1Agent.Call[]"}},"visibility":"internal"},{"constant":false,"id":12415,"indexed":false,"mutability":"mutable","name":"tokensReturn","nameLocation":"2914:12:60","nodeType":"VariableDeclaration","scope":12417,"src":"2904:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12413,"name":"address","nodeType":"ElementaryTypeName","src":"2904:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12414,"nodeType":"ArrayTypeName","src":"2904:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2860:67:60"},"src":"2847:81:60"},{"anonymous":false,"eventSelector":"cc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5","id":12423,"name":"Burn","nameLocation":"2940:4:60","nodeType":"EventDefinition","parameters":{"id":12422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12419,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"2953:4:60","nodeType":"VariableDeclaration","scope":12423,"src":"2945:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12418,"name":"address","nodeType":"ElementaryTypeName","src":"2945:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12421,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"2967:5:60","nodeType":"VariableDeclaration","scope":12423,"src":"2959:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12420,"name":"uint256","nodeType":"ElementaryTypeName","src":"2959:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2944:29:60"},"src":"2934:40:60"},{"anonymous":false,"eventSelector":"0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885","id":12429,"name":"Mint","nameLocation":"2986:4:60","nodeType":"EventDefinition","parameters":{"id":12428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12425,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"2999:4:60","nodeType":"VariableDeclaration","scope":12429,"src":"2991:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12424,"name":"address","nodeType":"ElementaryTypeName","src":"2991:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12427,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"3013:5:60","nodeType":"VariableDeclaration","scope":12429,"src":"3005:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12426,"name":"uint256","nodeType":"ElementaryTypeName","src":"3005:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2990:29:60"},"src":"2980:40:60"},{"anonymous":false,"eventSelector":"dd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b5","id":12435,"name":"Log","nameLocation":"3032:3:60","nodeType":"EventDefinition","parameters":{"id":12434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12431,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"3043:7:60","nodeType":"VariableDeclaration","scope":12435,"src":"3036:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12430,"name":"string","nodeType":"ElementaryTypeName","src":"3036:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12433,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"3060:5:60","nodeType":"VariableDeclaration","scope":12435,"src":"3052:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12432,"name":"uint256","nodeType":"ElementaryTypeName","src":"3052:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:31:60"},"src":"3026:41:60"},{"body":{"id":12479,"nodeType":"Block","src":"3511:291:60","statements":[{"expression":{"arguments":[{"hexValue":"42616c756e69","id":12444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3535:8:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_d434daf865c4172431fe963e09dfffee59bf02a039f2a16ac1512baa0b52f5ad","typeString":"literal_string \"Baluni\""},"value":"Baluni"},{"hexValue":"42414c554e49","id":12445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3545:8:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_7dbbcf8e986894bb951b03a039da22e5dd38b473b6e36e83d09344a88817b0fb","typeString":"literal_string \"BALUNI\""},"value":"BALUNI"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d434daf865c4172431fe963e09dfffee59bf02a039f2a16ac1512baa0b52f5ad","typeString":"literal_string \"Baluni\""},{"typeIdentifier":"t_stringliteral_7dbbcf8e986894bb951b03a039da22e5dd38b473b6e36e83d09344a88817b0fb","typeString":"literal_string \"BALUNI\""}],"id":12443,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"3522:12:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":12446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3522:32:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12447,"nodeType":"ExpressionStatement","src":"3522:32:60"},{"expression":{"arguments":[{"expression":{"id":12449,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3580:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3584:6:60","memberName":"sender","nodeType":"MemberAccess","src":"3580:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12448,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"3565:14:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3565:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12452,"nodeType":"ExpressionStatement","src":"3565:26:60"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12453,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"3602:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3602:24:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12455,"nodeType":"ExpressionStatement","src":"3602:24:60"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12456,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"3637:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3637:24:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12458,"nodeType":"ExpressionStatement","src":"3637:24:60"},{"expression":{"arguments":[{"arguments":[{"id":12462,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3686:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":12461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3678:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12460,"name":"address","nodeType":"ElementaryTypeName","src":"3678:7:60","typeDescriptions":{}}},"id":12463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3678:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"31","id":12464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3693:7:60","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":12459,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"3672:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3672:29:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12466,"nodeType":"ExpressionStatement","src":"3672:29:60"},{"expression":{"id":12471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12467,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"3714:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12469,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12438,"src":"3743:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12468,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"3725:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":12470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3725:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"3714:39:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12472,"nodeType":"ExpressionStatement","src":"3714:39:60"},{"expression":{"id":12477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12473,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"3764:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12474,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"3776:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3785:7:60","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"3776:16:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3776:18:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3764:30:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12478,"nodeType":"ExpressionStatement","src":"3764:30:60"}]},"documentation":{"id":12436,"nodeType":"StructuredDocumentation","src":"3075:372:60","text":" @dev Initializes the BaluniV1Router contract.\n It sets the initial values for various variables and mints 1 ether to the contract's address.\n It also sets the USDC token address, WNATIVE token address, oracle address, Uniswap router address, and Uniswap factory address.\n Finally, it adds the USDC token address to the tokens set."},"functionSelector":"c4d66de8","id":12480,"implemented":true,"kind":"function","modifiers":[{"id":12441,"kind":"modifierInvocation","modifierName":{"id":12440,"name":"initializer","nameLocations":["3499:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"3499:11:60"},"nodeType":"ModifierInvocation","src":"3499:11:60"}],"name":"initialize","nameLocation":"3462:10:60","nodeType":"FunctionDefinition","parameters":{"id":12439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12438,"mutability":"mutable","name":"_registry","nameLocation":"3481:9:60","nodeType":"VariableDeclaration","scope":12480,"src":"3473:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12437,"name":"address","nodeType":"ElementaryTypeName","src":"3473:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3472:19:60"},"returnParameters":{"id":12442,"nodeType":"ParameterList","parameters":[],"src":"3511:0:60"},"scope":14139,"src":"3453:349:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12496,"nodeType":"Block","src":"3897:136:60","statements":[{"expression":{"id":12494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12490,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"3986:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12492,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12482,"src":"4015:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12491,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"3997:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":12493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3997:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"3986:39:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12495,"nodeType":"ExpressionStatement","src":"3986:39:60"}]},"functionSelector":"8f2248bc","id":12497,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12487,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12484,"src":"3888:7:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":12488,"kind":"modifierInvocation","modifierName":{"id":12486,"name":"reinitializer","nameLocations":["3874:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"3874:13:60"},"nodeType":"ModifierInvocation","src":"3874:22:60"}],"name":"reinitialize","nameLocation":"3819:12:60","nodeType":"FunctionDefinition","parameters":{"id":12485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12482,"mutability":"mutable","name":"_registry","nameLocation":"3840:9:60","nodeType":"VariableDeclaration","scope":12497,"src":"3832:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12481,"name":"address","nodeType":"ElementaryTypeName","src":"3832:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12484,"mutability":"mutable","name":"version","nameLocation":"3858:7:60","nodeType":"VariableDeclaration","scope":12497,"src":"3851:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12483,"name":"uint64","nodeType":"ElementaryTypeName","src":"3851:6:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3831:35:60"},"returnParameters":{"id":12489,"nodeType":"ParameterList","parameters":[],"src":"3897:0:60"},"scope":14139,"src":"3810:223:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12510,"nodeType":"Block","src":"4100:58:60","statements":[{"expression":{"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12504,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"4111:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12506,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12499,"src":"4140:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12505,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"4122:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":12507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4122:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"4111:39:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12509,"nodeType":"ExpressionStatement","src":"4111:39:60"}]},"functionSelector":"e67ad759","id":12511,"implemented":true,"kind":"function","modifiers":[{"id":12502,"kind":"modifierInvocation","modifierName":{"id":12501,"name":"onlyOwner","nameLocations":["4090:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4090:9:60"},"nodeType":"ModifierInvocation","src":"4090:9:60"}],"name":"resetContract","nameLocation":"4050:13:60","nodeType":"FunctionDefinition","parameters":{"id":12500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12499,"mutability":"mutable","name":"_registry","nameLocation":"4072:9:60","nodeType":"VariableDeclaration","scope":12511,"src":"4064:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12498,"name":"address","nodeType":"ElementaryTypeName","src":"4064:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4063:19:60"},"returnParameters":{"id":12503,"nodeType":"ParameterList","parameters":[],"src":"4100:0:60"},"scope":14139,"src":"4041:117:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":12520,"nodeType":"Block","src":"4508:2:60","statements":[]},"documentation":{"id":12512,"nodeType":"StructuredDocumentation","src":"4166:254:60","text":" @dev Internal function to authorize an upgrade to a new implementation contract.\n @param newImplementation The address of the new implementation contract.\n @notice This function can only be called by the contract owner."},"id":12521,"implemented":true,"kind":"function","modifiers":[{"id":12518,"kind":"modifierInvocation","modifierName":{"id":12517,"name":"onlyOwner","nameLocations":["4498:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4498:9:60"},"nodeType":"ModifierInvocation","src":"4498:9:60"}],"name":"_authorizeUpgrade","nameLocation":"4435:17:60","nodeType":"FunctionDefinition","overrides":{"id":12516,"nodeType":"OverrideSpecifier","overrides":[],"src":"4489:8:60"},"parameters":{"id":12515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12514,"mutability":"mutable","name":"newImplementation","nameLocation":"4461:17:60","nodeType":"VariableDeclaration","scope":12521,"src":"4453:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12513,"name":"address","nodeType":"ElementaryTypeName","src":"4453:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4452:27:60"},"returnParameters":{"id":12519,"nodeType":"ParameterList","parameters":[],"src":"4508:0:60"},"scope":14139,"src":"4426:84:60","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12531,"nodeType":"Block","src":"4698:54:60","statements":[{"expression":{"arguments":[{"hexValue":"31653138","id":12528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4739:4:60","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":12527,"name":"_calculateBaluniToUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13875,"src":"4716:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":12529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4716:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12526,"id":12530,"nodeType":"Return","src":"4709:35:60"}]},"documentation":{"id":12522,"nodeType":"StructuredDocumentation","src":"4518:123:60","text":" @dev Returns the unit price of the token in USDC.\n @return The unit price of the token in USDC."},"functionSelector":"e73faa2d","id":12532,"implemented":true,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"4656:9:60","nodeType":"FunctionDefinition","parameters":{"id":12523,"nodeType":"ParameterList","parameters":[],"src":"4665:2:60"},"returnParameters":{"id":12526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12532,"src":"4689:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12524,"name":"uint256","nodeType":"ElementaryTypeName","src":"4689:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4688:9:60"},"scope":14139,"src":"4647:105:60","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12861,"nodeType":"Block","src":"5487:2385:60","statements":[{"assignments":[12546],"declarations":[{"constant":false,"id":12546,"mutability":"mutable","name":"agentFactory","nameLocation":"5506:12:60","nodeType":"VariableDeclaration","scope":12861,"src":"5498:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12545,"name":"address","nodeType":"ElementaryTypeName","src":"5498:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12550,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12547,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"5521:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5530:21:60","memberName":"getBaluniAgentFactory","nodeType":"MemberAccess","referencedDeclaration":4813,"src":"5521:30:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5521:32:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5498:55:60"},{"assignments":[12552],"declarations":[{"constant":false,"id":12552,"mutability":"mutable","name":"uniswapFactory","nameLocation":"5572:14:60","nodeType":"VariableDeclaration","scope":12861,"src":"5564:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12551,"name":"address","nodeType":"ElementaryTypeName","src":"5564:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12556,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12553,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"5589:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5598:17:60","memberName":"getUniswapFactory","nodeType":"MemberAccess","referencedDeclaration":4793,"src":"5589:26:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5589:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5564:53:60"},{"assignments":[12558],"declarations":[{"constant":false,"id":12558,"mutability":"mutable","name":"WNATIVE","nameLocation":"5636:7:60","nodeType":"VariableDeclaration","scope":12861,"src":"5628:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12557,"name":"address","nodeType":"ElementaryTypeName","src":"5628:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12562,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12559,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"5646:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5655:10:60","memberName":"getWNATIVE","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"5646:19:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5646:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5628:39:60"},{"assignments":[12564],"declarations":[{"constant":false,"id":12564,"mutability":"mutable","name":"USDC","nameLocation":"5686:4:60","nodeType":"VariableDeclaration","scope":12861,"src":"5678:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12563,"name":"address","nodeType":"ElementaryTypeName","src":"5678:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12568,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12565,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"5693:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5702:7:60","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"5693:16:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5693:18:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5678:33:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12572,"name":"agentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"5740:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5732:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12570,"name":"address","nodeType":"ElementaryTypeName","src":"5732:7:60","typeDescriptions":{}}},"id":12573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5732:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5765:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5757:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12574,"name":"address","nodeType":"ElementaryTypeName","src":"5757:7:60","typeDescriptions":{}}},"id":12577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5757:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5732:35:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4167656e7420666163746f7279206e6f7420736574","id":12579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5769:23:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_c0699f179d2a1b62cb97d8e7fffb6f849ca18ed4e697b2f010f29e743716b888","typeString":"literal_string \"Agent factory not set\""},"value":"Agent factory not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0699f179d2a1b62cb97d8e7fffb6f849ca18ed4e697b2f010f29e743716b888","typeString":"literal_string \"Agent factory not set\""}],"id":12569,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5724:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5724:69:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12581,"nodeType":"ExpressionStatement","src":"5724:69:60"},{"assignments":[12583],"declarations":[{"constant":false,"id":12583,"mutability":"mutable","name":"agent","nameLocation":"5812:5:60","nodeType":"VariableDeclaration","scope":12861,"src":"5804:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12582,"name":"address","nodeType":"ElementaryTypeName","src":"5804:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12591,"initialValue":{"arguments":[{"expression":{"id":12588,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5873:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5877:6:60","memberName":"sender","nodeType":"MemberAccess","src":"5873:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":12585,"name":"agentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12546,"src":"5842:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12584,"name":"IBaluniV1AgentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"5820:21:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1AgentFactory_$3835_$","typeString":"type(contract IBaluniV1AgentFactory)"}},"id":12586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5820:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1AgentFactory_$3835","typeString":"contract IBaluniV1AgentFactory"}},"id":12587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5856:16:60","memberName":"getOrCreateAgent","nodeType":"MemberAccess","referencedDeclaration":3829,"src":"5820:52:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_address_$","typeString":"function (address) external returns (address)"}},"id":12590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5820:64:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5804:80:60"},{"assignments":[12596],"declarations":[{"constant":false,"id":12596,"mutability":"mutable","name":"isTokenNew","nameLocation":"5909:10:60","nodeType":"VariableDeclaration","scope":12861,"src":"5895:24:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":12594,"name":"bool","nodeType":"ElementaryTypeName","src":"5895:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12595,"nodeType":"ArrayTypeName","src":"5895:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":12603,"initialValue":{"arguments":[{"expression":{"id":12600,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"5933:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5946:6:60","memberName":"length","nodeType":"MemberAccess","src":"5933:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5922:10:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":12597,"name":"bool","nodeType":"ElementaryTypeName","src":"5926:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12598,"nodeType":"ArrayTypeName","src":"5926:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":12602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5922:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5895:58:60"},{"assignments":[12608],"declarations":[{"constant":false,"id":12608,"mutability":"mutable","name":"tokenBalances","nameLocation":"5981:13:60","nodeType":"VariableDeclaration","scope":12861,"src":"5964:30:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12606,"name":"uint256","nodeType":"ElementaryTypeName","src":"5964:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12607,"nodeType":"ArrayTypeName","src":"5964:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":12615,"initialValue":{"arguments":[{"expression":{"id":12612,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"6011:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6024:6:60","memberName":"length","nodeType":"MemberAccess","src":"6011:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5997:13:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12609,"name":"uint256","nodeType":"ElementaryTypeName","src":"6001:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12610,"nodeType":"ArrayTypeName","src":"6001:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5997:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5964:67:60"},{"body":{"id":12656,"nodeType":"Block","src":"6094:184:60","statements":[{"expression":{"id":12638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12627,"name":"isTokenNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12596,"src":"6109:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":12629,"indexExpression":{"id":12628,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12617,"src":"6120:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6109:13:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6125:59:60","subExpression":{"arguments":[{"id":12632,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"6160:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},{"baseExpression":{"id":12633,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"6168:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12635,"indexExpression":{"id":12634,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12617,"src":"6181:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6168:15:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12630,"name":"EnumerableSetUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"6126:24:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EnumerableSetUpgradeable_$6605_$","typeString":"type(library EnumerableSetUpgradeable)"}},"id":12631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6151:8:60","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":6399,"src":"6126:33:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) view returns (bool)"}},"id":12636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6126:58:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6109:75:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12639,"nodeType":"ExpressionStatement","src":"6109:75:60"},{"expression":{"id":12654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12640,"name":"tokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12608,"src":"6199:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12642,"indexExpression":{"id":12641,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12617,"src":"6213:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6199:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":12651,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6260:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":12650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6252:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12649,"name":"address","nodeType":"ElementaryTypeName","src":"6252:7:60","typeDescriptions":{}}},"id":12652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6252:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":12644,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"6225:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12646,"indexExpression":{"id":12645,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12617,"src":"6238:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6225:15:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12643,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6218:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":12647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6218:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":12648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6242:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"6218:33:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6218:48:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6199:67:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12655,"nodeType":"ExpressionStatement","src":"6199:67:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12620,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12617,"src":"6064:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12621,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"6068:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6081:6:60","memberName":"length","nodeType":"MemberAccess","src":"6068:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6064:23:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12657,"initializationExpression":{"assignments":[12617],"declarations":[{"constant":false,"id":12617,"mutability":"mutable","name":"i","nameLocation":"6057:1:60","nodeType":"VariableDeclaration","scope":12657,"src":"6049:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12616,"name":"uint256","nodeType":"ElementaryTypeName","src":"6049:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12619,"initialValue":{"hexValue":"30","id":12618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6061:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6049:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6089:3:60","subExpression":{"id":12624,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12617,"src":"6089:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12626,"nodeType":"ExpressionStatement","src":"6089:3:60"},"nodeType":"ForStatement","src":"6044:234:60"},{"expression":{"arguments":[{"id":12662,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12537,"src":"6320:5:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_memory_ptr_$dyn_memory_ptr","typeString":"struct IBaluniV1Agent.Call memory[] memory"}},{"id":12663,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"6327:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Call_$3802_memory_ptr_$dyn_memory_ptr","typeString":"struct IBaluniV1Agent.Call memory[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"arguments":[{"id":12659,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12583,"src":"6305:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12658,"name":"IBaluniV1Agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"6290:14:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Agent_$3813_$","typeString":"type(contract IBaluniV1Agent)"}},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Agent_$3813","typeString":"contract IBaluniV1Agent"}},"id":12661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6312:7:60","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":3812,"src":"6290:29:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_struct$_Call_$3802_memory_ptr_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IBaluniV1Agent.Call memory[] memory,address[] memory) external"}},"id":12664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:50:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12665,"nodeType":"ExpressionStatement","src":"6290:50:60"},{"body":{"id":12859,"nodeType":"Block","src":"6403:1462:60","statements":[{"assignments":[12678],"declarations":[{"constant":false,"id":12678,"mutability":"mutable","name":"token","nameLocation":"6426:5:60","nodeType":"VariableDeclaration","scope":12859,"src":"6418:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12677,"name":"address","nodeType":"ElementaryTypeName","src":"6418:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12682,"initialValue":{"baseExpression":{"id":12679,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"6434:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12681,"indexExpression":{"id":12680,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"6447:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6434:15:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6418:31:60"},{"assignments":[12684],"declarations":[{"constant":false,"id":12684,"mutability":"mutable","name":"balance","nameLocation":"6472:7:60","nodeType":"VariableDeclaration","scope":12859,"src":"6464:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12683,"name":"uint256","nodeType":"ElementaryTypeName","src":"6464:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12694,"initialValue":{"arguments":[{"arguments":[{"id":12691,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6514:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":12690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6506:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12689,"name":"address","nodeType":"ElementaryTypeName","src":"6506:7:60","typeDescriptions":{}}},"id":12692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6506:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":12686,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12678,"src":"6489:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12685,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6482:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":12687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6482:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":12688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6496:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"6482:23:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6482:38:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6464:56:60"},{"assignments":[12696],"declarations":[{"constant":false,"id":12696,"mutability":"mutable","name":"poolNative3000","nameLocation":"6543:14:60","nodeType":"VariableDeclaration","scope":12859,"src":"6535:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12695,"name":"address","nodeType":"ElementaryTypeName","src":"6535:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12708,"initialValue":{"arguments":[{"id":12701,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12678,"src":"6602:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12704,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12558,"src":"6617:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6609:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12702,"name":"address","nodeType":"ElementaryTypeName","src":"6609:7:60","typeDescriptions":{}}},"id":12705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6609:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"33303030","id":12706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6627:4:60","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"}],"expression":{"arguments":[{"id":12698,"name":"uniswapFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12552,"src":"6578:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12697,"name":"IUniswapV3Factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3153,"src":"6560:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUniswapV3Factory_$3153_$","typeString":"type(contract IUniswapV3Factory)"}},"id":12699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6560:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Factory_$3153","typeString":"contract IUniswapV3Factory"}},"id":12700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6594:7:60","memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3126,"src":"6560:41:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) view external returns (address)"}},"id":12707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6560:72:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6535:97:60"},{"assignments":[12710],"declarations":[{"constant":false,"id":12710,"mutability":"mutable","name":"poolNative500","nameLocation":"6655:13:60","nodeType":"VariableDeclaration","scope":12859,"src":"6647:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12709,"name":"address","nodeType":"ElementaryTypeName","src":"6647:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12722,"initialValue":{"arguments":[{"id":12715,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12678,"src":"6713:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12718,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12558,"src":"6728:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6720:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12716,"name":"address","nodeType":"ElementaryTypeName","src":"6720:7:60","typeDescriptions":{}}},"id":12719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6720:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"353030","id":12720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6738:3:60","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"}],"expression":{"arguments":[{"id":12712,"name":"uniswapFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12552,"src":"6689:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12711,"name":"IUniswapV3Factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3153,"src":"6671:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUniswapV3Factory_$3153_$","typeString":"type(contract IUniswapV3Factory)"}},"id":12713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6671:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Factory_$3153","typeString":"contract IUniswapV3Factory"}},"id":12714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6705:7:60","memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3126,"src":"6671:41:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) view external returns (address)"}},"id":12721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6671:71:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6647:95:60"},{"assignments":[12724],"declarations":[{"constant":false,"id":12724,"mutability":"mutable","name":"poolUSDC500","nameLocation":"6765:11:60","nodeType":"VariableDeclaration","scope":12859,"src":"6757:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12723,"name":"address","nodeType":"ElementaryTypeName","src":"6757:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12736,"initialValue":{"arguments":[{"id":12729,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12678,"src":"6821:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12732,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12564,"src":"6836:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6828:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12730,"name":"address","nodeType":"ElementaryTypeName","src":"6828:7:60","typeDescriptions":{}}},"id":12733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6828:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"353030","id":12734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6843:3:60","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"}],"expression":{"arguments":[{"id":12726,"name":"uniswapFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12552,"src":"6797:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12725,"name":"IUniswapV3Factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3153,"src":"6779:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUniswapV3Factory_$3153_$","typeString":"type(contract IUniswapV3Factory)"}},"id":12727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6779:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Factory_$3153","typeString":"contract IUniswapV3Factory"}},"id":12728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6813:7:60","memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3126,"src":"6779:41:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) view external returns (address)"}},"id":12735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6779:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6757:90:60"},{"assignments":[12738],"declarations":[{"constant":false,"id":12738,"mutability":"mutable","name":"poolUSDC3000","nameLocation":"6870:12:60","nodeType":"VariableDeclaration","scope":12859,"src":"6862:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12737,"name":"address","nodeType":"ElementaryTypeName","src":"6862:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12750,"initialValue":{"arguments":[{"id":12743,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12678,"src":"6927:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12746,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12564,"src":"6942:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6934:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12744,"name":"address","nodeType":"ElementaryTypeName","src":"6934:7:60","typeDescriptions":{}}},"id":12747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6934:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"33303030","id":12748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6949:4:60","typeDescriptions":{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"},"value":"3000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_3000_by_1","typeString":"int_const 3000"}],"expression":{"arguments":[{"id":12740,"name":"uniswapFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12552,"src":"6903:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12739,"name":"IUniswapV3Factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3153,"src":"6885:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUniswapV3Factory_$3153_$","typeString":"type(contract IUniswapV3Factory)"}},"id":12741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6885:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV3Factory_$3153","typeString":"contract IUniswapV3Factory"}},"id":12742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6919:7:60","memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3126,"src":"6885:41:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$","typeString":"function (address,address,uint24) view external returns (address)"}},"id":12749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6885:69:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6862:92:60"},{"assignments":[12752],"declarations":[{"constant":false,"id":12752,"mutability":"mutable","name":"poolExist","nameLocation":"6974:9:60","nodeType":"VariableDeclaration","scope":12859,"src":"6969:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12751,"name":"bool","nodeType":"ElementaryTypeName","src":"6969:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":12780,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12753,"name":"poolNative3000","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12696,"src":"6986:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7012:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7004:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12754,"name":"address","nodeType":"ElementaryTypeName","src":"7004:7:60","typeDescriptions":{}}},"id":12757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7004:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6986:28:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12759,"name":"poolNative500","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12710,"src":"7035:13:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7060:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7052:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12760,"name":"address","nodeType":"ElementaryTypeName","src":"7052:7:60","typeDescriptions":{}}},"id":12763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7052:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7035:27:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6986:76:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12766,"name":"poolUSDC3000","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12738,"src":"7083:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7107:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7099:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12767,"name":"address","nodeType":"ElementaryTypeName","src":"7099:7:60","typeDescriptions":{}}},"id":12770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7099:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7083:26:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6986:123:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12773,"name":"poolUSDC500","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12724,"src":"7130:11:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7153:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7145:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12774,"name":"address","nodeType":"ElementaryTypeName","src":"7145:7:60","typeDescriptions":{}}},"id":12777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7145:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7130:25:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6986:169:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"6969:186:60"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":12781,"name":"isTokenNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12596,"src":"7176:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":12783,"indexExpression":{"id":12782,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"7187:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7176:13:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":12784,"name":"poolExist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12752,"src":"7193:9:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7176:26:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12794,"nodeType":"IfStatement","src":"7172:110:60","trueBody":{"id":12793,"nodeType":"Block","src":"7204:78:60","statements":[{"expression":{"arguments":[{"id":12789,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"7252:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},{"id":12790,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12678,"src":"7260:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12786,"name":"EnumerableSetUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"7223:24:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EnumerableSetUpgradeable_$6605_$","typeString":"type(library EnumerableSetUpgradeable)"}},"id":12788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7248:3:60","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6345,"src":"7223:28:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6318_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) returns (bool)"}},"id":12791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7223:43:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12792,"nodeType":"ExpressionStatement","src":"7223:43:60"}]}},{"assignments":[12796],"declarations":[{"constant":false,"id":12796,"mutability":"mutable","name":"amountReceived","nameLocation":"7306:14:60","nodeType":"VariableDeclaration","scope":12859,"src":"7298:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12795,"name":"uint256","nodeType":"ElementaryTypeName","src":"7298:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12802,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12797,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12684,"src":"7323:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":12798,"name":"tokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12608,"src":"7333:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12800,"indexExpression":{"id":12799,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"7347:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7333:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7323:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7298:51:60"},{"condition":{"id":12804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7370:10:60","subExpression":{"id":12803,"name":"poolExist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12752,"src":"7371:9:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12816,"nodeType":"IfStatement","src":"7366:126:60","trueBody":{"id":12815,"nodeType":"Block","src":"7382:110:60","statements":[{"expression":{"arguments":[{"expression":{"id":12809,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7424:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7428:6:60","memberName":"sender","nodeType":"MemberAccess","src":"7424:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12811,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12796,"src":"7436:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12806,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12678,"src":"7408:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12805,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"7401:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":12807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7401:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":12808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7415:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"7401:22:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":12812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7401:50:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12813,"nodeType":"ExpressionStatement","src":"7401:50:60"},{"functionReturnParameters":12544,"id":12814,"nodeType":"Return","src":"7470:7:60"}]}},{"assignments":[12818],"declarations":[{"constant":false,"id":12818,"mutability":"mutable","name":"treasury","nameLocation":"7516:8:60","nodeType":"VariableDeclaration","scope":12859,"src":"7508:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12817,"name":"address","nodeType":"ElementaryTypeName","src":"7508:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12822,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12819,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"7527:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7536:11:60","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"7527:20:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7527:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7508:41:60"},{"assignments":[12824],"declarations":[{"constant":false,"id":12824,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"7572:8:60","nodeType":"VariableDeclaration","scope":12859,"src":"7564:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12823,"name":"uint256","nodeType":"ElementaryTypeName","src":"7564:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12828,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12825,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"7583:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7592:10:60","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":4863,"src":"7583:19:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":12827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7583:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7564:40:60"},{"assignments":[12830],"declarations":[{"constant":false,"id":12830,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"7627:9:60","nodeType":"VariableDeclaration","scope":12859,"src":"7619:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12829,"name":"uint256","nodeType":"ElementaryTypeName","src":"7619:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12834,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12831,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"7639:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7648:11:60","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"7639:20:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":12833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7639:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7619:42:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12835,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12684,"src":"7682:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":12836,"name":"tokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12608,"src":"7692:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12838,"indexExpression":{"id":12837,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"7706:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7692:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7682:26:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12858,"nodeType":"IfStatement","src":"7678:176:60","trueBody":{"id":12857,"nodeType":"Block","src":"7710:144:60","statements":[{"assignments":[12841],"declarations":[{"constant":false,"id":12841,"mutability":"mutable","name":"fee","nameLocation":"7737:3:60","nodeType":"VariableDeclaration","scope":12857,"src":"7729:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12840,"name":"uint256","nodeType":"ElementaryTypeName","src":"7729:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12848,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12842,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12796,"src":"7744:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":12843,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12824,"src":"7761:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7744:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7743:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12846,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12830,"src":"7773:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7743:39:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7729:53:60"},{"expression":{"arguments":[{"id":12853,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12818,"src":"7824:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12854,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12841,"src":"7834:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12850,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12678,"src":"7808:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12849,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"7801:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":12851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7801:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":12852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7815:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"7801:22:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":12855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7801:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12856,"nodeType":"ExpressionStatement","src":"7801:37:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12670,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"6373:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12671,"name":"tokensReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12540,"src":"6377:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6390:6:60","memberName":"length","nodeType":"MemberAccess","src":"6377:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6373:23:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12860,"initializationExpression":{"assignments":[12667],"declarations":[{"constant":false,"id":12667,"mutability":"mutable","name":"i","nameLocation":"6366:1:60","nodeType":"VariableDeclaration","scope":12860,"src":"6358:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12666,"name":"uint256","nodeType":"ElementaryTypeName","src":"6358:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12669,"initialValue":{"hexValue":"30","id":12668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6370:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6358:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6398:3:60","subExpression":{"id":12674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"6398:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12676,"nodeType":"ExpressionStatement","src":"6398:3:60"},"nodeType":"ForStatement","src":"6353:1512:60"}]},"documentation":{"id":12533,"nodeType":"StructuredDocumentation","src":"4760:615:60","text":" @dev Executes a series of calls to a BaluniV1Agent contract and handles token returns.\n @param calls An array of IBaluniV1Agent.Call structs representing the calls to be executed.\n @param tokensReturn An array of addresses representing the tokens to be returned.\n @notice This function requires the agentFactory to be set and creates a new agent if necessary.\n @notice If a token is new and a Uniswap pool exists for it, the token is added to the tokens set.\n @notice If no Uniswap pool exists for a token, the token balance is transferred back to the caller."},"functionSelector":"eedc3c50","id":12862,"implemented":true,"kind":"function","modifiers":[{"id":12543,"kind":"modifierInvocation","modifierName":{"id":12542,"name":"nonReentrant","nameLocations":["5474:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"5474:12:60"},"nodeType":"ModifierInvocation","src":"5474:12:60"}],"name":"execute","nameLocation":"5390:7:60","nodeType":"FunctionDefinition","parameters":{"id":12541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12537,"mutability":"mutable","name":"calls","nameLocation":"5427:5:60","nodeType":"VariableDeclaration","scope":12862,"src":"5398:34:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_memory_ptr_$dyn_memory_ptr","typeString":"struct IBaluniV1Agent.Call[]"},"typeName":{"baseType":{"id":12535,"nodeType":"UserDefinedTypeName","pathNode":{"id":12534,"name":"IBaluniV1Agent.Call","nameLocations":["5398:14:60","5413:4:60"],"nodeType":"IdentifierPath","referencedDeclaration":3802,"src":"5398:19:60"},"referencedDeclaration":3802,"src":"5398:19:60","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$3802_storage_ptr","typeString":"struct IBaluniV1Agent.Call"}},"id":12536,"nodeType":"ArrayTypeName","src":"5398:21:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$3802_storage_$dyn_storage_ptr","typeString":"struct IBaluniV1Agent.Call[]"}},"visibility":"internal"},{"constant":false,"id":12540,"mutability":"mutable","name":"tokensReturn","nameLocation":"5451:12:60","nodeType":"VariableDeclaration","scope":12862,"src":"5434:29:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12538,"name":"address","nodeType":"ElementaryTypeName","src":"5434:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12539,"nodeType":"ArrayTypeName","src":"5434:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5397:67:60"},"returnParameters":{"id":12544,"nodeType":"ParameterList","parameters":[],"src":"5487:0:60"},"scope":14139,"src":"5381:2491:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12955,"nodeType":"Block","src":"8448:879:60","statements":[{"assignments":[12869],"declarations":[{"constant":false,"id":12869,"mutability":"mutable","name":"WNATIVE","nameLocation":"8467:7:60","nodeType":"VariableDeclaration","scope":12955,"src":"8459:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12868,"name":"address","nodeType":"ElementaryTypeName","src":"8459:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12873,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12870,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"8477:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8486:10:60","memberName":"getWNATIVE","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"8477:19:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8477:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8459:39:60"},{"assignments":[12875],"declarations":[{"constant":false,"id":12875,"mutability":"mutable","name":"baluniSwapper","nameLocation":"8517:13:60","nodeType":"VariableDeclaration","scope":12955,"src":"8509:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12874,"name":"address","nodeType":"ElementaryTypeName","src":"8509:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12879,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12876,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"8533:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":12877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8542:16:60","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":4803,"src":"8533:25:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8533:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8509:51:60"},{"assignments":[12881],"declarations":[{"constant":false,"id":12881,"mutability":"mutable","name":"totalERC20Balance","nameLocation":"8581:17:60","nodeType":"VariableDeclaration","scope":12955,"src":"8573:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12880,"name":"uint256","nodeType":"ElementaryTypeName","src":"8573:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12891,"initialValue":{"arguments":[{"arguments":[{"id":12888,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8633:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":12887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8625:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12886,"name":"address","nodeType":"ElementaryTypeName","src":"8625:7:60","typeDescriptions":{}}},"id":12889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8625:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":12883,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12865,"src":"8608:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12882,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8601:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":12884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8601:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":12885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8615:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"8601:23:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8601:38:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8573:66:60"},{"assignments":[12893],"declarations":[{"constant":false,"id":12893,"mutability":"mutable","name":"haveBalance","nameLocation":"8655:11:60","nodeType":"VariableDeclaration","scope":12955,"src":"8650:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12892,"name":"bool","nodeType":"ElementaryTypeName","src":"8650:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":12897,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12894,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12881,"src":"8669:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8689:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8669:21:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"8650:40:60"},{"expression":{"arguments":[{"id":12902,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12875,"src":"8723:13:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12903,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12881,"src":"8738:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12899,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12865,"src":"8708:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12898,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8701:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":12900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8701:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":12901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8715:7:60","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"8701:21:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":12904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8701:55:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12905,"nodeType":"ExpressionStatement","src":"8701:55:60"},{"condition":{"id":12907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8773:12:60","subExpression":{"id":12906,"name":"haveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12893,"src":"8774:11:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12909,"nodeType":"IfStatement","src":"8769:25:60","trueBody":{"functionReturnParameters":12867,"id":12908,"nodeType":"Return","src":"8787:7:60"}},{"clauses":[{"block":{"id":12923,"nodeType":"Block","src":"8905:33:60","statements":[{"functionReturnParameters":12867,"id":12922,"nodeType":"Return","src":"8920:7:60"}]},"errorName":"","id":12924,"nodeType":"TryCatchClause","src":"8905:33:60"},{"block":{"id":12952,"nodeType":"Block","src":"8945:375:60","statements":[{"assignments":[12926],"declarations":[{"constant":false,"id":12926,"mutability":"mutable","name":"multiHopSwapResult","nameLocation":"8968:18:60","nodeType":"VariableDeclaration","scope":12952,"src":"8960:26:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12925,"name":"uint256","nodeType":"ElementaryTypeName","src":"8960:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12943,"initialValue":{"arguments":[{"id":12931,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12865,"src":"9052:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12934,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12869,"src":"9084:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9076:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12932,"name":"address","nodeType":"ElementaryTypeName","src":"9076:7:60","typeDescriptions":{}}},"id":12935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9076:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12936,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"9111:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12937,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12881,"src":"9139:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":12940,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9183:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":12939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9175:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12938,"name":"address","nodeType":"ElementaryTypeName","src":"9175:7:60","typeDescriptions":{}}},"id":12941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9175:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":12928,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12875,"src":"9006:13:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12927,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"8989:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":12929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8989:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":12930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9021:12:60","memberName":"multiHopSwap","nodeType":"MemberAccess","referencedDeclaration":5207,"src":"8989:44:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,address) external returns (uint256)"}},"id":12942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8989:214:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8960:243:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12945,"name":"multiHopSwapResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12926,"src":"9228:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9249:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9228:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75746920486f702053776170204661696c65642c20547279204275726e2829","id":12948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9252:34:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_3bfb1910864572988af91047c2a74bf6c8bc662651e6ced4da8e59a423cae87d","typeString":"literal_string \"Muti Hop Swap Failed, Try Burn()\""},"value":"Muti Hop Swap Failed, Try Burn()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3bfb1910864572988af91047c2a74bf6c8bc662651e6ced4da8e59a423cae87d","typeString":"literal_string \"Muti Hop Swap Failed, Try Burn()\""}],"id":12944,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9220:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9220:67:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12950,"nodeType":"ExpressionStatement","src":"9220:67:60"},{"functionReturnParameters":12867,"id":12951,"nodeType":"Return","src":"9302:7:60"}]},"errorName":"","id":12953,"nodeType":"TryCatchClause","src":"8939:381:60"}],"externalCall":{"arguments":[{"id":12914,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12865,"src":"8853:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12915,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"8860:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12916,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12881,"src":"8871:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":12919,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8898:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":12918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8890:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12917,"name":"address","nodeType":"ElementaryTypeName","src":"8890:7:60","typeDescriptions":{}}},"id":12920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8890:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":12911,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12875,"src":"8827:13:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12910,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"8810:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":12912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8810:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":12913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8842:10:60","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":5192,"src":"8810:42:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":12921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8810:94:60","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12954,"nodeType":"TryStatement","src":"8806:514:60"}]},"documentation":{"id":12863,"nodeType":"StructuredDocumentation","src":"7880:521:60","text":" @dev Liquidates the specified token by swapping it for USDC.\n @param token The address of the token to be liquidated.\n @notice The contract must have sufficient approval to spend the specified token.\n @notice If a pool exists for the token and USDC on Uniswap, a direct swap is performed.\n @notice If no pool exists, a multi-hop swap is performed through the WNATIVE token.\n @notice If the swap fails, the `burn` function should be called to handle the failed swap."},"functionSelector":"2f865568","id":12956,"implemented":true,"kind":"function","modifiers":[],"name":"liquidate","nameLocation":"8416:9:60","nodeType":"FunctionDefinition","parameters":{"id":12866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12865,"mutability":"mutable","name":"token","nameLocation":"8434:5:60","nodeType":"VariableDeclaration","scope":12956,"src":"8426:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12864,"name":"address","nodeType":"ElementaryTypeName","src":"8426:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8425:15:60"},"returnParameters":{"id":12867,"nodeType":"ParameterList","parameters":[],"src":"8448:0:60"},"scope":14139,"src":"8407:920:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12996,"nodeType":"Block","src":"9620:231:60","statements":[{"assignments":[12963],"declarations":[{"constant":false,"id":12963,"mutability":"mutable","name":"length","nameLocation":"9639:6:60","nodeType":"VariableDeclaration","scope":12996,"src":"9631:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12962,"name":"uint256","nodeType":"ElementaryTypeName","src":"9631:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12967,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12964,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"9648:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":12965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9655:6:60","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6414,"src":"9648:13:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"}},"id":12966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9648:15:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9631:32:60"},{"body":{"id":12994,"nodeType":"Block","src":"9711:133:60","statements":[{"assignments":[12979],"declarations":[{"constant":false,"id":12979,"mutability":"mutable","name":"token","nameLocation":"9734:5:60","nodeType":"VariableDeclaration","scope":12994,"src":"9726:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12978,"name":"address","nodeType":"ElementaryTypeName","src":"9726:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12984,"initialValue":{"arguments":[{"id":12982,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12969,"src":"9752:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12980,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"9742:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":12981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9749:2:60","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6441,"src":"9742:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"}},"id":12983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9742:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9726:28:60"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12985,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"9773:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12986,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"9782:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9773:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12989,"nodeType":"IfStatement","src":"9769:32:60","trueBody":{"id":12988,"nodeType":"Continue","src":"9793:8:60"}},{"expression":{"arguments":[{"id":12991,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12979,"src":"9826:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12990,"name":"liquidate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"9816:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9816:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12993,"nodeType":"ExpressionStatement","src":"9816:16:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12972,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12969,"src":"9694:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12973,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12963,"src":"9698:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9694:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12995,"initializationExpression":{"assignments":[12969],"declarations":[{"constant":false,"id":12969,"mutability":"mutable","name":"i","nameLocation":"9687:1:60","nodeType":"VariableDeclaration","scope":12995,"src":"9679:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12968,"name":"uint256","nodeType":"ElementaryTypeName","src":"9679:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12971,"initialValue":{"hexValue":"30","id":12970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9691:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9679:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9706:3:60","subExpression":{"id":12975,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12969,"src":"9706:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12977,"nodeType":"ExpressionStatement","src":"9706:3:60"},"nodeType":"ForStatement","src":"9674:170:60"}]},"documentation":{"id":12957,"nodeType":"StructuredDocumentation","src":"9335:235:60","text":" @dev Liquidates all tokens in the contract.\n This function iterates through all the tokens in the contract and calls the `liquidate` function for each token.\n Can only be called by the contract owner."},"functionSelector":"3c2066a9","id":12997,"implemented":true,"kind":"function","modifiers":[{"id":12960,"kind":"modifierInvocation","modifierName":{"id":12959,"name":"nonReentrant","nameLocations":["9607:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"9607:12:60"},"nodeType":"ModifierInvocation","src":"9607:12:60"}],"name":"liquidateAll","nameLocation":"9585:12:60","nodeType":"FunctionDefinition","parameters":{"id":12958,"nodeType":"ParameterList","parameters":[],"src":"9597:2:60"},"returnParameters":{"id":12961,"nodeType":"ParameterList","parameters":[],"src":"9620:0:60"},"scope":14139,"src":"9576:275:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13169,"nodeType":"Block","src":"10679:1344:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13006,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"10698:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10711:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10698:14:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4275726e20616d6f756e74206d7573742062652067726561746572207468616e2030","id":13009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10714:36:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_05dde7ba458fa57c690848c203ec960214f35b18f13e857028bd34ad518b5575","typeString":"literal_string \"Burn amount must be greater than 0\""},"value":"Burn amount must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_05dde7ba458fa57c690848c203ec960214f35b18f13e857028bd34ad518b5575","typeString":"literal_string \"Burn amount must be greater than 0\""}],"id":13005,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10690:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10690:61:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13011,"nodeType":"ExpressionStatement","src":"10690:61:60"},{"assignments":[13013],"declarations":[{"constant":false,"id":13013,"mutability":"mutable","name":"treasury","nameLocation":"10770:8:60","nodeType":"VariableDeclaration","scope":13169,"src":"10762:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13012,"name":"address","nodeType":"ElementaryTypeName","src":"10762:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13017,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13014,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"10781:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10790:11:60","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"10781:20:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10781:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10762:41:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13019,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13013,"src":"10822:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":13022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10842:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10834:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13020,"name":"address","nodeType":"ElementaryTypeName","src":"10834:7:60","typeDescriptions":{}}},"id":13023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10834:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10822:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472656173757279206e6f7420736574","id":13025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10846:18:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_19ae815948d188a4017d21662744b2e39ca52dd9e0c04ca7540cb50ca889bf62","typeString":"literal_string \"Treasury not set\""},"value":"Treasury not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_19ae815948d188a4017d21662744b2e39ca52dd9e0c04ca7540cb50ca889bf62","typeString":"literal_string \"Treasury not set\""}],"id":13018,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10814:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10814:51:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13027,"nodeType":"ExpressionStatement","src":"10814:51:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13030,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10894:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10898:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10894:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13029,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"10884:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":13032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10884:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13033,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"10909:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10884:35:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742042414c","id":13035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10921:18:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_3802b739a1b061f89edd5fd7a12d8792298aa749cedf62bac9eac44415882c7f","typeString":"literal_string \"Insufficient BAL\""},"value":"Insufficient BAL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3802b739a1b061f89edd5fd7a12d8792298aa749cedf62bac9eac44415882c7f","typeString":"literal_string \"Insufficient BAL\""}],"id":13028,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10876:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10876:64:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13037,"nodeType":"ExpressionStatement","src":"10876:64:60"},{"assignments":[13039],"declarations":[{"constant":false,"id":13039,"mutability":"mutable","name":"burnAmountAfterFee","nameLocation":"10959:18:60","nodeType":"VariableDeclaration","scope":13169,"src":"10951:26:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13038,"name":"uint256","nodeType":"ElementaryTypeName","src":"10951:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13043,"initialValue":{"arguments":[{"id":13041,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"11008:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13040,"name":"_calculateNetAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14084,"src":"10980:27:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10980:39:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10951:68:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13045,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"11038:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13046,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"11060:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11038:32:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4665652063616c63756c6174696f6e206572726f72","id":13048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11072:23:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_2d5dedc64e58ec2dfd9d57a4a8363c0fd7692430e9d02e08dba505855fefef17","typeString":"literal_string \"Fee calculation error\""},"value":"Fee calculation error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2d5dedc64e58ec2dfd9d57a4a8363c0fd7692430e9d02e08dba505855fefef17","typeString":"literal_string \"Fee calculation error\""}],"id":13044,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11030:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11030:66:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13050,"nodeType":"ExpressionStatement","src":"11030:66:60"},{"expression":{"arguments":[{"id":13052,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13013,"src":"11116:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13053,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13000,"src":"11126:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13054,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"11139:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11126:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13051,"name":"transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"11107:8:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":13056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11107:51:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13057,"nodeType":"ExpressionStatement","src":"11107:51:60"},{"body":{"id":13155,"nodeType":"Block","src":"11213:703:60","statements":[{"assignments":[13070],"declarations":[{"constant":false,"id":13070,"mutability":"mutable","name":"token","nameLocation":"11236:5:60","nodeType":"VariableDeclaration","scope":13155,"src":"11228:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13069,"name":"address","nodeType":"ElementaryTypeName","src":"11228:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13075,"initialValue":{"arguments":[{"id":13073,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"11254:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13071,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"11244:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":13072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11251:2:60","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6441,"src":"11244:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"}},"id":13074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11244:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11228:28:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13077,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"11279:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":13080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11296:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11288:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13078,"name":"address","nodeType":"ElementaryTypeName","src":"11288:7:60","typeDescriptions":{}}},"id":13081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11288:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11279:19:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420746f6b656e2061646472657373","id":13083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11300:23:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743","typeString":"literal_string \"Invalid token address\""},"value":"Invalid token address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743","typeString":"literal_string \"Invalid token address\""}],"id":13076,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11271:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11271:53:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13085,"nodeType":"ExpressionStatement","src":"11271:53:60"},{"assignments":[13087],"declarations":[{"constant":false,"id":13087,"mutability":"mutable","name":"totalBaluni","nameLocation":"11347:11:60","nodeType":"VariableDeclaration","scope":13155,"src":"11339:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13086,"name":"uint256","nodeType":"ElementaryTypeName","src":"11339:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13090,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13088,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"11361:11:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11361:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11339:35:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13092,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13087,"src":"11397:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11397:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f74616c20737570706c792069732030","id":13095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11414:19:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_e16f85873456a830f1ff99f4c2c493d8a3c64696cfa808146bb8fc6bce2e7570","typeString":"literal_string \"Total supply is 0\""},"value":"Total supply is 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e16f85873456a830f1ff99f4c2c493d8a3c64696cfa808146bb8fc6bce2e7570","typeString":"literal_string \"Total supply is 0\""}],"id":13091,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11389:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11389:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13097,"nodeType":"ExpressionStatement","src":"11389:45:60"},{"assignments":[13099],"declarations":[{"constant":false,"id":13099,"mutability":"mutable","name":"totalERC20Balance","nameLocation":"11457:17:60","nodeType":"VariableDeclaration","scope":13155,"src":"11449:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13098,"name":"uint256","nodeType":"ElementaryTypeName","src":"11449:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13109,"initialValue":{"arguments":[{"arguments":[{"id":13106,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11509:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":13105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11501:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13104,"name":"address","nodeType":"ElementaryTypeName","src":"11501:7:60","typeDescriptions":{}}},"id":13107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11501:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13101,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"11484:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13100,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"11477:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11477:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11491:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"11477:23:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11477:38:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11449:66:60"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13110,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13099,"src":"11534:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11555:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11534:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13113,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"11560:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":13116,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11577:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":13115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11569:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13114,"name":"address","nodeType":"ElementaryTypeName","src":"11569:7:60","typeDescriptions":{}}},"id":13117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11569:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11560:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11534:48:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13121,"nodeType":"IfStatement","src":"11530:62:60","trueBody":{"id":13120,"nodeType":"Continue","src":"11584:8:60"}},{"assignments":[13123],"declarations":[{"constant":false,"id":13123,"mutability":"mutable","name":"decimals","nameLocation":"11615:8:60","nodeType":"VariableDeclaration","scope":13155,"src":"11607:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13122,"name":"uint256","nodeType":"ElementaryTypeName","src":"11607:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13129,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13125,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"11641:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13124,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"11626:14:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":13126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11626:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":13127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11648:8:60","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"11626:30:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":13128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11626:32:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"11607:51:60"},{"assignments":[13131],"declarations":[{"constant":false,"id":13131,"mutability":"mutable","name":"share","nameLocation":"11681:5:60","nodeType":"VariableDeclaration","scope":13155,"src":"11673:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13130,"name":"uint256","nodeType":"ElementaryTypeName","src":"11673:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13138,"initialValue":{"arguments":[{"id":13133,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13087,"src":"11710:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13134,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13099,"src":"11723:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13135,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"11742:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13136,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"11762:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13132,"name":"_calculateERC20Share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13957,"src":"11689:20:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":13137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11689:82:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11673:98:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13140,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"11794:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13141,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13099,"src":"11803:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11794:26:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53686172652063616c63756c6174696f6e206572726f72","id":13143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11822:25:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_87d7498470f76c7b536e2b3ec9816474a9844e531fdac32c215159c083e5c40c","typeString":"literal_string \"Share calculation error\""},"value":"Share calculation error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87d7498470f76c7b536e2b3ec9816474a9844e531fdac32c215159c083e5c40c","typeString":"literal_string \"Share calculation error\""}],"id":13139,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11786:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11786:62:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13145,"nodeType":"ExpressionStatement","src":"11786:62:60"},{"expression":{"arguments":[{"expression":{"id":13150,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11886:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11890:6:60","memberName":"sender","nodeType":"MemberAccess","src":"11886:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13152,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"11898:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13147,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"11870:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13146,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"11863:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11863:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11877:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"11863:22:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":13153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11863:41:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13154,"nodeType":"ExpressionStatement","src":"11863:41:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13061,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"11187:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13062,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"11191:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":13063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11198:6:60","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6414,"src":"11191:13:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"}},"id":13064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11191:15:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11187:19:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13156,"initializationExpression":{"assignments":[13059],"declarations":[{"constant":false,"id":13059,"mutability":"mutable","name":"i","nameLocation":"11184:1:60","nodeType":"VariableDeclaration","scope":13156,"src":"11176:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13058,"name":"uint256","nodeType":"ElementaryTypeName","src":"11176:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13060,"nodeType":"VariableDeclarationStatement","src":"11176:9:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":13067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11208:3:60","subExpression":{"id":13066,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"11208:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13068,"nodeType":"ExpressionStatement","src":"11208:3:60"},"nodeType":"ForStatement","src":"11171:745:60"},{"expression":{"arguments":[{"expression":{"id":13158,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11932:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11936:6:60","memberName":"sender","nodeType":"MemberAccess","src":"11932:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13160,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"11944:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13157,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"11926:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11926:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13162,"nodeType":"ExpressionStatement","src":"11926:37:60"},{"eventCall":{"arguments":[{"expression":{"id":13164,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11984:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11988:6:60","memberName":"sender","nodeType":"MemberAccess","src":"11984:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13166,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13039,"src":"11996:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13163,"name":"Burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12423,"src":"11979:4:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11979:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13168,"nodeType":"EmitStatement","src":"11974:41:60"}]},"documentation":{"id":12998,"nodeType":"StructuredDocumentation","src":"9859:753:60","text":" @dev Burns a specified amount of BALUNI tokens from the caller's balance.\n @param burnAmount The amount of BALUNI tokens to burn.\n @notice This function requires the caller to have a balance of at least `burnAmount` BAL tokens.\n @notice The function also checks the USDC balance before burning the tokens.\n @notice After burning the tokens, the function transfers a proportional share of each ERC20 token held by the contract to the caller.\n @notice The share is calculated based on the total supply of BAL tokens, the balance of each ERC20 token, and the decimals of each token.\n @notice Finally, the function emits a `Burn` event with the caller's address and the amount of tokens burned."},"functionSelector":"1a168da2","id":13170,"implemented":true,"kind":"function","modifiers":[{"id":13003,"kind":"modifierInvocation","modifierName":{"id":13002,"name":"nonReentrant","nameLocations":["10666:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"10666:12:60"},"nodeType":"ModifierInvocation","src":"10666:12:60"}],"name":"burnERC20","nameLocation":"10627:9:60","nodeType":"FunctionDefinition","parameters":{"id":13001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13000,"mutability":"mutable","name":"burnAmount","nameLocation":"10645:10:60","nodeType":"VariableDeclaration","scope":13170,"src":"10637:18:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12999,"name":"uint256","nodeType":"ElementaryTypeName","src":"10637:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10636:20:60"},"returnParameters":{"id":13004,"nodeType":"ParameterList","parameters":[],"src":"10679:0:60"},"scope":14139,"src":"10618:1405:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13465,"nodeType":"Block","src":"12264:2752:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13179,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13173,"src":"12283:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12296:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12283:14:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4275726e20616d6f756e74206d7573742062652067726561746572207468616e2030","id":13182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12299:36:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_05dde7ba458fa57c690848c203ec960214f35b18f13e857028bd34ad518b5575","typeString":"literal_string \"Burn amount must be greater than 0\""},"value":"Burn amount must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_05dde7ba458fa57c690848c203ec960214f35b18f13e857028bd34ad518b5575","typeString":"literal_string \"Burn amount must be greater than 0\""}],"id":13178,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12275:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12275:61:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13184,"nodeType":"ExpressionStatement","src":"12275:61:60"},{"assignments":[13186],"declarations":[{"constant":false,"id":13186,"mutability":"mutable","name":"uniswapFactory","nameLocation":"12355:14:60","nodeType":"VariableDeclaration","scope":13465,"src":"12347:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13185,"name":"address","nodeType":"ElementaryTypeName","src":"12347:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13190,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13187,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"12372:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12381:17:60","memberName":"getUniswapFactory","nodeType":"MemberAccess","referencedDeclaration":4793,"src":"12372:26:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12372:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12347:53:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13192,"name":"uniswapFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13186,"src":"12419:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":13195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12445:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12437:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13193,"name":"address","nodeType":"ElementaryTypeName","src":"12437:7:60","typeDescriptions":{}}},"id":13196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12437:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12419:28:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e6973776170466163746f7279206e6f7420736574","id":13198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12449:24:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_40edaaaeefde7a606ab22e3c37f33984fb3b1e0058b05ccc31b572de63cd1497","typeString":"literal_string \"UniswapFactory not set\""},"value":"UniswapFactory not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_40edaaaeefde7a606ab22e3c37f33984fb3b1e0058b05ccc31b572de63cd1497","typeString":"literal_string \"UniswapFactory not set\""}],"id":13191,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12411:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12411:63:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13200,"nodeType":"ExpressionStatement","src":"12411:63:60"},{"assignments":[13202],"declarations":[{"constant":false,"id":13202,"mutability":"mutable","name":"treasury","nameLocation":"12493:8:60","nodeType":"VariableDeclaration","scope":13465,"src":"12485:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13201,"name":"address","nodeType":"ElementaryTypeName","src":"12485:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13206,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13203,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"12504:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12513:11:60","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"12504:20:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12504:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12485:41:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13208,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13202,"src":"12545:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":13211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12565:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12557:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13209,"name":"address","nodeType":"ElementaryTypeName","src":"12557:7:60","typeDescriptions":{}}},"id":13212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12557:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12545:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472656173757279206e6f7420736574","id":13214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12569:18:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_19ae815948d188a4017d21662744b2e39ca52dd9e0c04ca7540cb50ca889bf62","typeString":"literal_string \"Treasury not set\""},"value":"Treasury not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_19ae815948d188a4017d21662744b2e39ca52dd9e0c04ca7540cb50ca889bf62","typeString":"literal_string \"Treasury not set\""}],"id":13207,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12537:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12537:51:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13216,"nodeType":"ExpressionStatement","src":"12537:51:60"},{"assignments":[13218],"declarations":[{"constant":false,"id":13218,"mutability":"mutable","name":"WNATIVE","nameLocation":"12607:7:60","nodeType":"VariableDeclaration","scope":13465,"src":"12599:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13217,"name":"address","nodeType":"ElementaryTypeName","src":"12599:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13222,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13219,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"12617:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12626:10:60","memberName":"getWNATIVE","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"12617:19:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12617:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12599:39:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13224,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13218,"src":"12657:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":13227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12676:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12668:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13225,"name":"address","nodeType":"ElementaryTypeName","src":"12668:7:60","typeDescriptions":{}}},"id":13228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12668:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12657:21:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"574e4154495645206e6f7420736574","id":13230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12680:17:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_277b788f6bc7cefc93f8369ac2f11d44c3d87b9ef59c2dd3a42e3f629340b86f","typeString":"literal_string \"WNATIVE not set\""},"value":"WNATIVE not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277b788f6bc7cefc93f8369ac2f11d44c3d87b9ef59c2dd3a42e3f629340b86f","typeString":"literal_string \"WNATIVE not set\""}],"id":13223,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12649:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12649:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13232,"nodeType":"ExpressionStatement","src":"12649:49:60"},{"assignments":[13234],"declarations":[{"constant":false,"id":13234,"mutability":"mutable","name":"burnAmountAfterFee","nameLocation":"12719:18:60","nodeType":"VariableDeclaration","scope":13465,"src":"12711:26:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13233,"name":"uint256","nodeType":"ElementaryTypeName","src":"12711:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13238,"initialValue":{"arguments":[{"id":13236,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13173,"src":"12768:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13235,"name":"_calculateNetAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14084,"src":"12740:27:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12740:39:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12711:68:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13240,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13234,"src":"12798:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13241,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13173,"src":"12820:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12798:32:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4665652063616c63756c6174696f6e206572726f72","id":13243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12832:23:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_2d5dedc64e58ec2dfd9d57a4a8363c0fd7692430e9d02e08dba505855fefef17","typeString":"literal_string \"Fee calculation error\""},"value":"Fee calculation error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2d5dedc64e58ec2dfd9d57a4a8363c0fd7692430e9d02e08dba505855fefef17","typeString":"literal_string \"Fee calculation error\""}],"id":13239,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12790:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12790:66:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13245,"nodeType":"ExpressionStatement","src":"12790:66:60"},{"assignments":[13247],"declarations":[{"constant":false,"id":13247,"mutability":"mutable","name":"burnAmountToSend","nameLocation":"12874:16:60","nodeType":"VariableDeclaration","scope":13465,"src":"12869:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13246,"name":"uint","nodeType":"ElementaryTypeName","src":"12869:4:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13251,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13248,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13173,"src":"12893:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13249,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13234,"src":"12906:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12893:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12869:55:60"},{"expression":{"arguments":[{"id":13253,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13202,"src":"12946:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13254,"name":"burnAmountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13247,"src":"12956:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13252,"name":"transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"12937:8:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":13255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12937:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13256,"nodeType":"ExpressionStatement","src":"12937:36:60"},{"body":{"id":13451,"nodeType":"Block","src":"13028:1879:60","statements":[{"assignments":[13269],"declarations":[{"constant":false,"id":13269,"mutability":"mutable","name":"token","nameLocation":"13051:5:60","nodeType":"VariableDeclaration","scope":13451,"src":"13043:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13268,"name":"address","nodeType":"ElementaryTypeName","src":"13043:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13274,"initialValue":{"arguments":[{"id":13272,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13258,"src":"13069:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13270,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"13059:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":13271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13066:2:60","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6441,"src":"13059:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"}},"id":13273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13059:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13043:28:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13276,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"13094:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":13279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13111:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13103:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13277,"name":"address","nodeType":"ElementaryTypeName","src":"13103:7:60","typeDescriptions":{}}},"id":13280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13103:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13094:19:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420746f6b656e2061646472657373","id":13282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13115:23:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743","typeString":"literal_string \"Invalid token address\""},"value":"Invalid token address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743","typeString":"literal_string \"Invalid token address\""}],"id":13275,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13086:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13086:53:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13284,"nodeType":"ExpressionStatement","src":"13086:53:60"},{"assignments":[13286],"declarations":[{"constant":false,"id":13286,"mutability":"mutable","name":"totalBaluni","nameLocation":"13164:11:60","nodeType":"VariableDeclaration","scope":13451,"src":"13156:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13285,"name":"uint256","nodeType":"ElementaryTypeName","src":"13156:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13289,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13287,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"13178:11:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13178:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13156:35:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13291,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13286,"src":"13214:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13228:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13214:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f74616c20737570706c792069732030","id":13294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13231:19:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_e16f85873456a830f1ff99f4c2c493d8a3c64696cfa808146bb8fc6bce2e7570","typeString":"literal_string \"Total supply is 0\""},"value":"Total supply is 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e16f85873456a830f1ff99f4c2c493d8a3c64696cfa808146bb8fc6bce2e7570","typeString":"literal_string \"Total supply is 0\""}],"id":13290,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13206:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13206:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13296,"nodeType":"ExpressionStatement","src":"13206:45:60"},{"assignments":[13298],"declarations":[{"constant":false,"id":13298,"mutability":"mutable","name":"totalERC20Balance","nameLocation":"13276:17:60","nodeType":"VariableDeclaration","scope":13451,"src":"13268:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13297,"name":"uint256","nodeType":"ElementaryTypeName","src":"13268:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13308,"initialValue":{"arguments":[{"arguments":[{"id":13305,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13328:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":13304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13320:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13303,"name":"address","nodeType":"ElementaryTypeName","src":"13320:7:60","typeDescriptions":{}}},"id":13306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13320:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13300,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"13303:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13299,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"13296:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13296:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13310:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"13296:23:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13296:38:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13268:66:60"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13309,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13298,"src":"13355:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13376:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13355:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13312,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"13381:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":13315,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13398:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":13314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13390:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13313,"name":"address","nodeType":"ElementaryTypeName","src":"13390:7:60","typeDescriptions":{}}},"id":13316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13390:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13381:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13355:48:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13320,"nodeType":"IfStatement","src":"13351:62:60","trueBody":{"id":13319,"nodeType":"Continue","src":"13405:8:60"}},{"assignments":[13322],"declarations":[{"constant":false,"id":13322,"mutability":"mutable","name":"decimals","nameLocation":"13438:8:60","nodeType":"VariableDeclaration","scope":13451,"src":"13430:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13321,"name":"uint256","nodeType":"ElementaryTypeName","src":"13430:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13328,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13324,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"13464:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13323,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"13449:14:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":13325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13449:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":13326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13471:8:60","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"13449:30:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":13327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13449:32:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13430:51:60"},{"assignments":[13330],"declarations":[{"constant":false,"id":13330,"mutability":"mutable","name":"burnAmountToken","nameLocation":"13506:15:60","nodeType":"VariableDeclaration","scope":13451,"src":"13498:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13329,"name":"uint256","nodeType":"ElementaryTypeName","src":"13498:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13337,"initialValue":{"arguments":[{"id":13332,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13286,"src":"13563:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13333,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13298,"src":"13593:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13334,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13234,"src":"13629:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13335,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"13666:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13331,"name":"_calculateERC20Share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13957,"src":"13524:20:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":13336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13524:165:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13498:191:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13339,"name":"burnAmountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"13714:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13340,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13298,"src":"13733:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13714:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53686172652063616c63756c6174696f6e206572726f72","id":13342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13752:25:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_87d7498470f76c7b536e2b3ec9816474a9844e531fdac32c215159c083e5c40c","typeString":"literal_string \"Share calculation error\""},"value":"Share calculation error"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87d7498470f76c7b536e2b3ec9816474a9844e531fdac32c215159c083e5c40c","typeString":"literal_string \"Share calculation error\""}],"id":13338,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13706:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13706:72:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13344,"nodeType":"ExpressionStatement","src":"13706:72:60"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13345,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"13799:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13346,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"13808:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13799:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13359,"nodeType":"IfStatement","src":"13795:141:60","trueBody":{"id":13358,"nodeType":"Block","src":"13819:117:60","statements":[{"expression":{"arguments":[{"expression":{"id":13352,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13865:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13869:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13865:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13354,"name":"burnAmountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"13877:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13349,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"13845:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13348,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"13838:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13838:17:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13856:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"13838:26:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":13355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13838:55:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13356,"nodeType":"ExpressionStatement","src":"13838:55:60"},{"id":13357,"nodeType":"Continue","src":"13912:8:60"}]}},{"assignments":[13361],"declarations":[{"constant":false,"id":13361,"mutability":"mutable","name":"baluniSwapper","nameLocation":"13960:13:60","nodeType":"VariableDeclaration","scope":13451,"src":"13952:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13360,"name":"address","nodeType":"ElementaryTypeName","src":"13952:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13365,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13362,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"13976:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13985:16:60","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":4803,"src":"13976:25:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13976:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13952:51:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13367,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13361,"src":"14026:13:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":13370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14051:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14043:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13368,"name":"address","nodeType":"ElementaryTypeName","src":"14043:7:60","typeDescriptions":{}}},"id":13371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14043:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14026:27:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e6953776170706572206e6f7420736574","id":13373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14055:23:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8a54059e31ba8035a6fc0cc512134c3fd2ca3508fc8500195d25c2966df732b","typeString":"literal_string \"BaluniSwapper not set\""},"value":"BaluniSwapper not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f8a54059e31ba8035a6fc0cc512134c3fd2ca3508fc8500195d25c2966df732b","typeString":"literal_string \"BaluniSwapper not set\""}],"id":13366,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14018:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14018:61:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13375,"nodeType":"ExpressionStatement","src":"14018:61:60"},{"expression":{"arguments":[{"id":13380,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13361,"src":"14118:13:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13381,"name":"burnAmountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"14133:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13377,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"14103:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13376,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"14096:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14096:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14110:7:60","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"14096:21:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":13382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14096:53:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13383,"nodeType":"ExpressionStatement","src":"14096:53:60"},{"clauses":[{"block":{"id":13413,"nodeType":"Block","src":"14320:140:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13398,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13395,"src":"14347:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14359:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14347:13:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53776170204661696c6564","id":13401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14362:13:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_c26370c748e399efe4c5a302d20f1fe22da5300fc60bdab39924790733506945","typeString":"literal_string \"Swap Failed\""},"value":"Swap Failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c26370c748e399efe4c5a302d20f1fe22da5300fc60bdab39924790733506945","typeString":"literal_string \"Swap Failed\""}],"id":13397,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14339:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14339:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13403,"nodeType":"ExpressionStatement","src":"14339:37:60"},{"expression":{"arguments":[{"expression":{"id":13408,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14422:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14426:6:60","memberName":"sender","nodeType":"MemberAccess","src":"14422:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13410,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13395,"src":"14434:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13405,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"14402:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13404,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"14395:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14395:17:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14413:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"14395:26:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":13411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14395:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13412,"nodeType":"ExpressionStatement","src":"14395:49:60"}]},"errorName":"","id":13414,"nodeType":"TryCatchClause","parameters":{"id":13396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13395,"mutability":"mutable","name":"amountOut","nameLocation":"14295:9:60","nodeType":"VariableDeclaration","scope":13414,"src":"14287:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13394,"name":"uint256","nodeType":"ElementaryTypeName","src":"14287:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14268:51:60"},"src":"14260:200:60"},{"block":{"id":13448,"nodeType":"Block","src":"14467:429:60","statements":[{"assignments":[13416],"declarations":[{"constant":false,"id":13416,"mutability":"mutable","name":"amountOutHop","nameLocation":"14494:12:60","nodeType":"VariableDeclaration","scope":13448,"src":"14486:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13415,"name":"uint256","nodeType":"ElementaryTypeName","src":"14486:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13431,"initialValue":{"arguments":[{"id":13421,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"14576:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13424,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13218,"src":"14612:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14604:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13422,"name":"address","nodeType":"ElementaryTypeName","src":"14604:7:60","typeDescriptions":{}}},"id":13425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14604:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13426,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"14643:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13427,"name":"burnAmountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"14675:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13428,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14713:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14717:6:60","memberName":"sender","nodeType":"MemberAccess","src":"14713:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13418,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13361,"src":"14526:13:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13417,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"14509:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":13419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14509:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":13420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14541:12:60","memberName":"multiHopSwap","nodeType":"MemberAccess","referencedDeclaration":5207,"src":"14509:44:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,address) external returns (uint256)"}},"id":13430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14509:233:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14486:256:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13433,"name":"amountOutHop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13416,"src":"14769:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14784:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14769:16:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d756c7469486f7053776170204661696c6564","id":13436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14787:21:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_69c3c275e229957bd624940053bb5e224e915c9b003c39a1899996718abe87b0","typeString":"literal_string \"MultiHopSwap Failed\""},"value":"MultiHopSwap Failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_69c3c275e229957bd624940053bb5e224e915c9b003c39a1899996718abe87b0","typeString":"literal_string \"MultiHopSwap Failed\""}],"id":13432,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14761:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14761:48:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13438,"nodeType":"ExpressionStatement","src":"14761:48:60"},{"expression":{"arguments":[{"expression":{"id":13443,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14855:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14859:6:60","memberName":"sender","nodeType":"MemberAccess","src":"14855:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13445,"name":"amountOutHop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13416,"src":"14867:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13440,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"14835:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13439,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"14828:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14828:17:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14846:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"14828:26:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":13446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14828:52:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13447,"nodeType":"ExpressionStatement","src":"14828:52:60"}]},"errorName":"","id":13449,"nodeType":"TryCatchClause","src":"14461:435:60"}],"externalCall":{"arguments":[{"id":13388,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"14213:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13389,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"14220:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13390,"name":"burnAmountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"14231:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13391,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14248:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14252:6:60","memberName":"sender","nodeType":"MemberAccess","src":"14248:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13385,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13361,"src":"14187:13:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13384,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"14170:16:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":13386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14170:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":13387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14202:10:60","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":5192,"src":"14170:42:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":13393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14170:89:60","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13450,"nodeType":"TryStatement","src":"14166:730:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13260,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13258,"src":"13002:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13261,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"13006:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":13262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13013:6:60","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6414,"src":"13006:13:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"}},"id":13263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13006:15:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13002:19:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13452,"initializationExpression":{"assignments":[13258],"declarations":[{"constant":false,"id":13258,"mutability":"mutable","name":"i","nameLocation":"12999:1:60","nodeType":"VariableDeclaration","scope":13452,"src":"12991:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13257,"name":"uint256","nodeType":"ElementaryTypeName","src":"12991:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13259,"nodeType":"VariableDeclarationStatement","src":"12991:9:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":13266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13023:3:60","subExpression":{"id":13265,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13258,"src":"13023:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13267,"nodeType":"ExpressionStatement","src":"13023:3:60"},"nodeType":"ForStatement","src":"12986:1921:60"},{"expression":{"arguments":[{"expression":{"id":13454,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14925:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14929:6:60","memberName":"sender","nodeType":"MemberAccess","src":"14925:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13456,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13234,"src":"14937:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13453,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"14919:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14919:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13458,"nodeType":"ExpressionStatement","src":"14919:37:60"},{"eventCall":{"arguments":[{"expression":{"id":13460,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14977:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14981:6:60","memberName":"sender","nodeType":"MemberAccess","src":"14977:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13462,"name":"burnAmountAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13234,"src":"14989:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13459,"name":"Burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12423,"src":"14972:4:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14972:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13464,"nodeType":"EmitStatement","src":"14967:41:60"}]},"documentation":{"id":13171,"nodeType":"StructuredDocumentation","src":"12031:169:60","text":" @dev Burns a specified amount of BAL tokens and performs token swaps on multiple tokens.\n @param burnAmount The amount of BAL tokens to burn."},"functionSelector":"fe0a4dd1","id":13466,"implemented":true,"kind":"function","modifiers":[{"id":13176,"kind":"modifierInvocation","modifierName":{"id":13175,"name":"nonReentrant","nameLocations":["12251:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"12251:12:60"},"nodeType":"ModifierInvocation","src":"12251:12:60"}],"name":"burnUSDC","nameLocation":"12215:8:60","nodeType":"FunctionDefinition","parameters":{"id":13174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13173,"mutability":"mutable","name":"burnAmount","nameLocation":"12232:10:60","nodeType":"VariableDeclaration","scope":13466,"src":"12224:18:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13172,"name":"uint256","nodeType":"ElementaryTypeName","src":"12224:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12223:20:60"},"returnParameters":{"id":13177,"nodeType":"ParameterList","parameters":[],"src":"12264:0:60"},"scope":14139,"src":"12206:2810:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13487,"nodeType":"Block","src":"15255:150:60","statements":[{"assignments":[13475],"declarations":[{"constant":false,"id":13475,"mutability":"mutable","name":"agentFactory","nameLocation":"15274:12:60","nodeType":"VariableDeclaration","scope":13487,"src":"15266:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13474,"name":"address","nodeType":"ElementaryTypeName","src":"15266:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13479,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13476,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"15289:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15298:21:60","memberName":"getBaluniAgentFactory","nodeType":"MemberAccess","referencedDeclaration":4813,"src":"15289:30:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15289:32:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15266:55:60"},{"expression":{"arguments":[{"id":13484,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13469,"src":"15391:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13481,"name":"agentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13475,"src":"15361:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13480,"name":"IBaluniV1AgentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"15339:21:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1AgentFactory_$3835_$","typeString":"type(contract IBaluniV1AgentFactory)"}},"id":13482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15339:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1AgentFactory_$3835","typeString":"contract IBaluniV1AgentFactory"}},"id":13483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15375:15:60","memberName":"getAgentAddress","nodeType":"MemberAccess","referencedDeclaration":3822,"src":"15339:51:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":13485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15339:58:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13473,"id":13486,"nodeType":"Return","src":"15332:65:60"}]},"documentation":{"id":13467,"nodeType":"StructuredDocumentation","src":"15024:153:60","text":" @dev Retrieves the agent address associated with a user.\n @param _user The user's address.\n @return The agent address."},"functionSelector":"27d54a92","id":13488,"implemented":true,"kind":"function","modifiers":[],"name":"getAgentAddress","nameLocation":"15192:15:60","nodeType":"FunctionDefinition","parameters":{"id":13470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13469,"mutability":"mutable","name":"_user","nameLocation":"15216:5:60","nodeType":"VariableDeclaration","scope":13488,"src":"15208:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13468,"name":"address","nodeType":"ElementaryTypeName","src":"15208:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15207:15:60"},"returnParameters":{"id":13473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13472,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13488,"src":"15246:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13471,"name":"address","nodeType":"ElementaryTypeName","src":"15246:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15245:9:60"},"scope":14139,"src":"15183:222:60","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":13638,"nodeType":"Block","src":"15643:1096:60","statements":[{"assignments":[13497],"declarations":[{"constant":false,"id":13497,"mutability":"mutable","name":"treasury","nameLocation":"15662:8:60","nodeType":"VariableDeclaration","scope":13638,"src":"15654:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13496,"name":"address","nodeType":"ElementaryTypeName","src":"15654:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13501,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13498,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"15673:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15682:11:60","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"15673:20:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15673:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15654:41:60"},{"assignments":[13503],"declarations":[{"constant":false,"id":13503,"mutability":"mutable","name":"USDC","nameLocation":"15714:4:60","nodeType":"VariableDeclaration","scope":13638,"src":"15706:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13502,"name":"address","nodeType":"ElementaryTypeName","src":"15706:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13507,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13504,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"15721:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15730:7:60","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"15721:16:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15721:18:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15706:33:60"},{"assignments":[13509],"declarations":[{"constant":false,"id":13509,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"15758:8:60","nodeType":"VariableDeclaration","scope":13638,"src":"15750:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13508,"name":"uint256","nodeType":"ElementaryTypeName","src":"15750:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13513,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13510,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"15769:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15778:10:60","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":4863,"src":"15769:19:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":13512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15769:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15750:40:60"},{"assignments":[13515],"declarations":[{"constant":false,"id":13515,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"15809:9:60","nodeType":"VariableDeclaration","scope":13638,"src":"15801:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13514,"name":"uint256","nodeType":"ElementaryTypeName","src":"15801:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13519,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13516,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"15821:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15830:11:60","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"15821:20:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":13518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15821:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15801:42:60"},{"assignments":[13521],"declarations":[{"constant":false,"id":13521,"mutability":"mutable","name":"totalUSDValuation","nameLocation":"15862:17:60","nodeType":"VariableDeclaration","scope":13638,"src":"15854:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13520,"name":"uint256","nodeType":"ElementaryTypeName","src":"15854:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13524,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13522,"name":"_totalValuationScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14048,"src":"15882:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15854:51:60"},{"assignments":[13526],"declarations":[{"constant":false,"id":13526,"mutability":"mutable","name":"totalBalSupply","nameLocation":"15924:14:60","nodeType":"VariableDeclaration","scope":13638,"src":"15916:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13525,"name":"uint256","nodeType":"ElementaryTypeName","src":"15916:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13529,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13527,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"15941:11:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15941:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15916:38:60"},{"assignments":[13531],"declarations":[{"constant":false,"id":13531,"mutability":"mutable","name":"usdcRequired","nameLocation":"15973:12:60","nodeType":"VariableDeclaration","scope":13638,"src":"15965:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13530,"name":"uint256","nodeType":"ElementaryTypeName","src":"15965:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13538,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13532,"name":"balAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13491,"src":"15989:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13533,"name":"totalUSDValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13521,"src":"16007:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15989:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15988:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13536,"name":"totalBalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13526,"src":"16028:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15988:54:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15965:77:60"},{"expression":{"arguments":[{"expression":{"id":13543,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16079:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16083:6:60","memberName":"sender","nodeType":"MemberAccess","src":"16079:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13547,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"16099:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":13546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16091:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13545,"name":"address","nodeType":"ElementaryTypeName","src":"16091:7:60","typeDescriptions":{}}},"id":13548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16091:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13549,"name":"usdcRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13531,"src":"16106:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653132","id":13550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16121:4:60","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"},"value":"1e12"},"src":"16106:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13540,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13503,"src":"16060:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13539,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"16053:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16053:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16066:12:60","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"16053:25:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":13552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16053:73:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13553,"nodeType":"ExpressionStatement","src":"16053:73:60"},{"assignments":[13555],"declarations":[{"constant":false,"id":13555,"mutability":"mutable","name":"balance","nameLocation":"16145:7:60","nodeType":"VariableDeclaration","scope":13638,"src":"16137:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13554,"name":"uint256","nodeType":"ElementaryTypeName","src":"16137:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13563,"initialValue":{"arguments":[{"expression":{"id":13560,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16178:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16182:6:60","memberName":"sender","nodeType":"MemberAccess","src":"16178:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13557,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13503,"src":"16162:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13556,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"16155:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16155:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16168:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"16155:22:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16155:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16137:52:60"},{"assignments":[13565],"declarations":[{"constant":false,"id":13565,"mutability":"mutable","name":"allowed","nameLocation":"16208:7:60","nodeType":"VariableDeclaration","scope":13638,"src":"16200:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13564,"name":"uint256","nodeType":"ElementaryTypeName","src":"16200:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13577,"initialValue":{"arguments":[{"expression":{"id":13570,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16241:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16245:6:60","memberName":"sender","nodeType":"MemberAccess","src":"16241:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13574,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"16261:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":13573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16253:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13572,"name":"address","nodeType":"ElementaryTypeName","src":"16253:7:60","typeDescriptions":{}}},"id":13575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16253:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13567,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13503,"src":"16225:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13566,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"16218:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16218:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16231:9:60","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"16218:22:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":13576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16218:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16200:67:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13579,"name":"totalBalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13526,"src":"16288:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16305:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16288:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f74616c2042414c554e4920737570706c792063616e6e6f74206265207a65726f","id":13582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16308:36:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ddcc9d8f2a6704234c103a6ef7b2e41a8659f7661115b0460a24c8abe542fd0","typeString":"literal_string \"Total BALUNI supply cannot be zero\""},"value":"Total BALUNI supply cannot be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ddcc9d8f2a6704234c103a6ef7b2e41a8659f7661115b0460a24c8abe542fd0","typeString":"literal_string \"Total BALUNI supply cannot be zero\""}],"id":13578,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16280:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16280:65:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13584,"nodeType":"ExpressionStatement","src":"16280:65:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13586,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13555,"src":"16364:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13587,"name":"usdcRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13531,"src":"16375:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653132","id":13588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16390:4:60","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"},"value":"1e12"},"src":"16375:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16364:30:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"555344432062616c616e636520697320696e73756666696369656e74","id":13591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16396:30:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_bad2ba4e17745a4d4fd221dac6ffa18dd2cdb7d74e252bb930552ebc273a413c","typeString":"literal_string \"USDC balance is insufficient\""},"value":"USDC balance is insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bad2ba4e17745a4d4fd221dac6ffa18dd2cdb7d74e252bb930552ebc273a413c","typeString":"literal_string \"USDC balance is insufficient\""}],"id":13585,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16356:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16356:71:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13593,"nodeType":"ExpressionStatement","src":"16356:71:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13595,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13565,"src":"16446:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13596,"name":"usdcRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13531,"src":"16457:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653132","id":13597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16472:4:60","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"},"value":"1e12"},"src":"16457:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16446:30:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b2074686520746f6b656e20616c6c6f77616e6365","id":13600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16478:27:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_727fc1e09070e074c1e4faeaff9f905dd58d37cba7b8f174a2a35f24c4fc6650","typeString":"literal_string \"Check the token allowance\""},"value":"Check the token allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_727fc1e09070e074c1e4faeaff9f905dd58d37cba7b8f174a2a35f24c4fc6650","typeString":"literal_string \"Check the token allowance\""}],"id":13594,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16438:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16438:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13602,"nodeType":"ExpressionStatement","src":"16438:68:60"},{"expression":{"arguments":[{"expression":{"id":13604,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16525:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16529:6:60","memberName":"sender","nodeType":"MemberAccess","src":"16525:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13606,"name":"balAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13491,"src":"16537:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13603,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"16519:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16519:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13608,"nodeType":"ExpressionStatement","src":"16519:34:60"},{"eventCall":{"arguments":[{"expression":{"id":13610,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16574:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16578:6:60","memberName":"sender","nodeType":"MemberAccess","src":"16574:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13612,"name":"balAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13491,"src":"16586:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13609,"name":"Mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12429,"src":"16569:4:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16569:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13614,"nodeType":"EmitStatement","src":"16564:38:60"},{"assignments":[13616],"declarations":[{"constant":false,"id":13616,"mutability":"mutable","name":"fee","nameLocation":"16623:3:60","nodeType":"VariableDeclaration","scope":13638,"src":"16615:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13615,"name":"uint256","nodeType":"ElementaryTypeName","src":"16615:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13626,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13617,"name":"usdcRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13531,"src":"16631:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653132","id":13618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16646:4:60","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"},"value":"1e12"},"src":"16631:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13620,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16630:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13621,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"16654:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16630:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13623,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16629:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13624,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13515,"src":"16666:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16629:46:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16615:60:60"},{"expression":{"arguments":[{"id":13634,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13497,"src":"16717:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13635,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13616,"src":"16727:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":13630,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13503,"src":"16701:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16693:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13628,"name":"address","nodeType":"ElementaryTypeName","src":"16693:7:60","typeDescriptions":{}}},"id":13631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16693:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13627,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"16686:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16686:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16708:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"16686:30:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":13636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16686:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13637,"nodeType":"ExpressionStatement","src":"16686:45:60"}]},"documentation":{"id":13489,"nodeType":"StructuredDocumentation","src":"15413:157:60","text":" @dev Mints a specified amount of BALUNI tokens in exchange for USDC.\n @param balAmountToMint The amount of BALUNI tokens to mint."},"functionSelector":"0cfc7386","id":13639,"implemented":true,"kind":"function","modifiers":[{"id":13494,"kind":"modifierInvocation","modifierName":{"id":13493,"name":"nonReentrant","nameLocations":["15630:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"15630:12:60"},"nodeType":"ModifierInvocation","src":"15630:12:60"}],"name":"mintWithUSDC","nameLocation":"15585:12:60","nodeType":"FunctionDefinition","parameters":{"id":13492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13491,"mutability":"mutable","name":"balAmountToMint","nameLocation":"15606:15:60","nodeType":"VariableDeclaration","scope":13639,"src":"15598:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13490,"name":"uint256","nodeType":"ElementaryTypeName","src":"15598:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15597:25:60"},"returnParameters":{"id":13495,"nodeType":"ParameterList","parameters":[],"src":"15643:0:60"},"scope":14139,"src":"15576:1163:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13693,"nodeType":"Block","src":"17399:279:60","statements":[{"assignments":[13658],"declarations":[{"constant":false,"id":13658,"mutability":"mutable","name":"USDC","nameLocation":"17418:4:60","nodeType":"VariableDeclaration","scope":13693,"src":"17410:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13657,"name":"address","nodeType":"ElementaryTypeName","src":"17410:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13662,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13659,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"17425:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17434:7:60","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"17425:16:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17425:18:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17410:33:60"},{"assignments":[13664],"declarations":[{"constant":false,"id":13664,"mutability":"mutable","name":"rebalancer","nameLocation":"17462:10:60","nodeType":"VariableDeclaration","scope":13693,"src":"17454:18:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13663,"name":"address","nodeType":"ElementaryTypeName","src":"17454:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13668,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13665,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"17475:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17484:19:60","memberName":"getBaluniRebalancer","nodeType":"MemberAccess","referencedDeclaration":4833,"src":"17475:28:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17475:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17454:51:60"},{"assignments":[13673],"declarations":[{"constant":false,"id":13673,"mutability":"mutable","name":"balances","nameLocation":"17533:8:60","nodeType":"VariableDeclaration","scope":13693,"src":"17516:25:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13671,"name":"uint256","nodeType":"ElementaryTypeName","src":"17516:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13672,"nodeType":"ArrayTypeName","src":"17516:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":13679,"initialValue":{"arguments":[{"hexValue":"30","id":13677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17558:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17544:13:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":13674,"name":"uint256","nodeType":"ElementaryTypeName","src":"17548:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13675,"nodeType":"ArrayTypeName","src":"17548:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":13678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17544:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17516:44:60"},{"expression":{"arguments":[{"id":13684,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13673,"src":"17613:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":13685,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13643,"src":"17623:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":13686,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"17631:7:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":13687,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13652,"src":"17640:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13688,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13648,"src":"17647:6:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13689,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"17655:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13690,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"17665:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13681,"name":"rebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"17591:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13680,"name":"IBaluniV1Rebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4675,"src":"17571:19:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Rebalancer_$4675_$","typeString":"type(contract IBaluniV1Rebalancer)"}},"id":13682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17571:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Rebalancer_$4675","typeString":"contract IBaluniV1Rebalancer"}},"id":13683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17603:9:60","memberName":"rebalance","nodeType":"MemberAccess","referencedDeclaration":4642,"src":"17571:41:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,uint256[] memory,uint256,address,address,address) external"}},"id":13691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17571:99:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13692,"nodeType":"ExpressionStatement","src":"17571:99:60"}]},"documentation":{"id":13640,"nodeType":"StructuredDocumentation","src":"16747:424:60","text":" @dev Calls the `rebalance` function of the `rebalancer` contract.\n @param assets An array of addresses representing the assets to rebalance.\n @param weights An array of uint256 values representing the weights of the assets.\n @param sender The address of the sender.\n @param receiver The address of the receiver.\n @param limit The maximum number of assets to rebalance."},"functionSelector":"599f69f7","id":13694,"implemented":true,"kind":"function","modifiers":[],"name":"callRebalance","nameLocation":"17186:13:60","nodeType":"FunctionDefinition","parameters":{"id":13655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13643,"mutability":"mutable","name":"assets","nameLocation":"17229:6:60","nodeType":"VariableDeclaration","scope":13694,"src":"17210:25:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13641,"name":"address","nodeType":"ElementaryTypeName","src":"17210:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13642,"nodeType":"ArrayTypeName","src":"17210:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":13646,"mutability":"mutable","name":"weights","nameLocation":"17265:7:60","nodeType":"VariableDeclaration","scope":13694,"src":"17246:26:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13644,"name":"uint256","nodeType":"ElementaryTypeName","src":"17246:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13645,"nodeType":"ArrayTypeName","src":"17246:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13648,"mutability":"mutable","name":"sender","nameLocation":"17291:6:60","nodeType":"VariableDeclaration","scope":13694,"src":"17283:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13647,"name":"address","nodeType":"ElementaryTypeName","src":"17283:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13650,"mutability":"mutable","name":"receiver","nameLocation":"17316:8:60","nodeType":"VariableDeclaration","scope":13694,"src":"17308:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13649,"name":"address","nodeType":"ElementaryTypeName","src":"17308:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13652,"mutability":"mutable","name":"limit","nameLocation":"17343:5:60","nodeType":"VariableDeclaration","scope":13694,"src":"17335:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13651,"name":"uint256","nodeType":"ElementaryTypeName","src":"17335:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13694,"src":"17359:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13653,"name":"address","nodeType":"ElementaryTypeName","src":"17359:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17199:190:60"},"returnParameters":{"id":13656,"nodeType":"ParameterList","parameters":[],"src":"17399:0:60"},"scope":14139,"src":"17177:501:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13725,"nodeType":"Block","src":"18035:244:60","statements":[{"assignments":[13703],"declarations":[{"constant":false,"id":13703,"mutability":"mutable","name":"totalUSDValuation","nameLocation":"18054:17:60","nodeType":"VariableDeclaration","scope":13725,"src":"18046:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13702,"name":"uint256","nodeType":"ElementaryTypeName","src":"18046:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13706,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13704,"name":"_totalValuationScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14048,"src":"18074:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18074:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18046:51:60"},{"assignments":[13708],"declarations":[{"constant":false,"id":13708,"mutability":"mutable","name":"totalBalSupply","nameLocation":"18116:14:60","nodeType":"VariableDeclaration","scope":13725,"src":"18108:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13707,"name":"uint256","nodeType":"ElementaryTypeName","src":"18108:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13711,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13709,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"18133:11:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18133:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18108:38:60"},{"assignments":[13713],"declarations":[{"constant":false,"id":13713,"mutability":"mutable","name":"usdcRequired","nameLocation":"18165:12:60","nodeType":"VariableDeclaration","scope":13725,"src":"18157:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13712,"name":"uint256","nodeType":"ElementaryTypeName","src":"18157:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13720,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13714,"name":"balAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13697,"src":"18181:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13715,"name":"totalUSDValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13703,"src":"18199:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18181:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13717,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18180:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13718,"name":"totalBalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13708,"src":"18220:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18180:54:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18157:77:60"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13721,"name":"usdcRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13713,"src":"18252:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653132","id":13722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18267:4:60","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"},"value":"1e12"},"src":"18252:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13701,"id":13724,"nodeType":"Return","src":"18245:26:60"}]},"documentation":{"id":13695,"nodeType":"StructuredDocumentation","src":"17686:260:60","text":" @dev Calculates the amount of USDC required to mint a given amount of BAL tokens.\n @param balAmountToMint The amount of BAL tokens to be minted.\n @return The amount of USDC required to mint the specified amount of BAL tokens."},"functionSelector":"aa95d893","id":13726,"implemented":true,"kind":"function","modifiers":[],"name":"requiredUSDCtoMint","nameLocation":"17961:18:60","nodeType":"FunctionDefinition","parameters":{"id":13698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13697,"mutability":"mutable","name":"balAmountToMint","nameLocation":"17988:15:60","nodeType":"VariableDeclaration","scope":13726,"src":"17980:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13696,"name":"uint256","nodeType":"ElementaryTypeName","src":"17980:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17979:25:60"},"returnParameters":{"id":13701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13700,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13726,"src":"18026:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13699,"name":"uint256","nodeType":"ElementaryTypeName","src":"18026:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18025:9:60"},"scope":14139,"src":"17952:327:60","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":13747,"nodeType":"Block","src":"18939:107:60","statements":[{"expression":{"arguments":[{"id":13741,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"18978:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13742,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13731,"src":"18991:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13743,"name":"baluniAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13733,"src":"19010:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13744,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"19024:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13740,"name":"_calculateERC20Share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13957,"src":"18957:20:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":13745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18957:81:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13739,"id":13746,"nodeType":"Return","src":"18950:88:60"}]},"documentation":{"id":13727,"nodeType":"StructuredDocumentation","src":"18287:449:60","text":" @dev Calculates the token share based on the total Baluni supply, total ERC20 balance, Baluni amount, and token decimals.\n @param totalBaluni The total supply of Baluni tokens.\n @param totalERC20Balance The total balance of the ERC20 token.\n @param baluniAmount The amount of Baluni tokens.\n @param tokenDecimals The number of decimals for the ERC20 token.\n @return The calculated token share."},"functionSelector":"fe330a51","id":13748,"implemented":true,"kind":"function","modifiers":[],"name":"calculateTokenShare","nameLocation":"18751:19:60","nodeType":"FunctionDefinition","parameters":{"id":13736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13729,"mutability":"mutable","name":"totalBaluni","nameLocation":"18789:11:60","nodeType":"VariableDeclaration","scope":13748,"src":"18781:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13728,"name":"uint256","nodeType":"ElementaryTypeName","src":"18781:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13731,"mutability":"mutable","name":"totalERC20Balance","nameLocation":"18819:17:60","nodeType":"VariableDeclaration","scope":13748,"src":"18811:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13730,"name":"uint256","nodeType":"ElementaryTypeName","src":"18811:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13733,"mutability":"mutable","name":"baluniAmount","nameLocation":"18855:12:60","nodeType":"VariableDeclaration","scope":13748,"src":"18847:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13732,"name":"uint256","nodeType":"ElementaryTypeName","src":"18847:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13735,"mutability":"mutable","name":"tokenDecimals","nameLocation":"18886:13:60","nodeType":"VariableDeclaration","scope":13748,"src":"18878:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13734,"name":"uint256","nodeType":"ElementaryTypeName","src":"18878:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18770:136:60"},"returnParameters":{"id":13739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13738,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13748,"src":"18930:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13737,"name":"uint256","nodeType":"ElementaryTypeName","src":"18930:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18929:9:60"},"scope":14139,"src":"18742:304:60","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":13773,"nodeType":"Block","src":"19409:155:60","statements":[{"assignments":[13759],"declarations":[{"constant":false,"id":13759,"mutability":"mutable","name":"baluniOracle","nameLocation":"19428:12:60","nodeType":"VariableDeclaration","scope":13773,"src":"19420:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13758,"name":"address","nodeType":"ElementaryTypeName","src":"19420:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13763,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13760,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"19443:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19452:15:60","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"19443:24:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19443:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"19420:49:60"},{"expression":{"arguments":[{"id":13768,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13753,"src":"19531:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13769,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"19538:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13770,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13751,"src":"19549:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13765,"name":"baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13759,"src":"19503:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13764,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"19487:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$4240_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":13766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19487:29:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":13767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19517:13:60","memberName":"convertScaled","nodeType":"MemberAccess","referencedDeclaration":4239,"src":"19487:43:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":13771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19487:69:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13757,"id":13772,"nodeType":"Return","src":"19480:76:60"}]},"documentation":{"id":13749,"nodeType":"StructuredDocumentation","src":"19054:262:60","text":" @dev Calculates the valuation of a given amount of a specific ERC20 token.\n @param amount The amount of the ERC20 token.\n @param token The address of the ERC20 token.\n @return The calculated valuation of the ERC20 token."},"functionSelector":"2bdd955a","id":13774,"implemented":true,"kind":"function","modifiers":[],"name":"tokenValuation","nameLocation":"19331:14:60","nodeType":"FunctionDefinition","parameters":{"id":13754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13751,"mutability":"mutable","name":"amount","nameLocation":"19354:6:60","nodeType":"VariableDeclaration","scope":13774,"src":"19346:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13750,"name":"uint256","nodeType":"ElementaryTypeName","src":"19346:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13753,"mutability":"mutable","name":"token","nameLocation":"19370:5:60","nodeType":"VariableDeclaration","scope":13774,"src":"19362:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13752,"name":"address","nodeType":"ElementaryTypeName","src":"19362:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19345:31:60"},"returnParameters":{"id":13757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13774,"src":"19400:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13755,"name":"uint256","nodeType":"ElementaryTypeName","src":"19400:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19399:9:60"},"scope":14139,"src":"19322:242:60","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":13783,"nodeType":"Block","src":"19775:49:60","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13780,"name":"_totalValuationScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14048,"src":"19793:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19793:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13779,"id":13782,"nodeType":"Return","src":"19786:30:60"}]},"documentation":{"id":13775,"nodeType":"StructuredDocumentation","src":"19572:139:60","text":" @dev Returns the total valuation of the Baluni ecosystem.\n @return The total valuation of the Baluni ecosystem."},"functionSelector":"295b9300","id":13784,"implemented":true,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"19726:14:60","nodeType":"FunctionDefinition","parameters":{"id":13776,"nodeType":"ParameterList","parameters":[],"src":"19740:2:60"},"returnParameters":{"id":13779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13784,"src":"19766:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13777,"name":"uint256","nodeType":"ElementaryTypeName","src":"19766:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19765:9:60"},"scope":14139,"src":"19717:107:60","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":13796,"nodeType":"Block","src":"20121:56:60","statements":[{"expression":{"arguments":[{"id":13793,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13787,"src":"20162:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13792,"name":"_calculateBaluniToUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13875,"src":"20139:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20139:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13791,"id":13795,"nodeType":"Return","src":"20132:37:60"}]},"documentation":{"id":13785,"nodeType":"StructuredDocumentation","src":"19832:208:60","text":" @dev Calculates the value of a given amount of Baluni tokens in USDC.\n @param amount The amount of Baluni tokens.\n @return The calculated value of the Baluni tokens in USDC."},"functionSelector":"71ddcfb8","id":13797,"implemented":true,"kind":"function","modifiers":[],"name":"getUSDCShareValue","nameLocation":"20055:17:60","nodeType":"FunctionDefinition","parameters":{"id":13788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13787,"mutability":"mutable","name":"amount","nameLocation":"20081:6:60","nodeType":"VariableDeclaration","scope":13797,"src":"20073:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13786,"name":"uint256","nodeType":"ElementaryTypeName","src":"20073:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20072:16:60"},"returnParameters":{"id":13791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13797,"src":"20112:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13789,"name":"uint256","nodeType":"ElementaryTypeName","src":"20112:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20111:9:60"},"scope":14139,"src":"20046:131:60","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":13822,"nodeType":"Block","src":"20559:155:60","statements":[{"assignments":[13808],"declarations":[{"constant":false,"id":13808,"mutability":"mutable","name":"baluniOracle","nameLocation":"20578:12:60","nodeType":"VariableDeclaration","scope":13822,"src":"20570:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13807,"name":"address","nodeType":"ElementaryTypeName","src":"20570:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13812,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13809,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"20593:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":13810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20602:15:60","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"20593:24:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20593:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"20570:49:60"},{"expression":{"arguments":[{"id":13817,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13802,"src":"20681:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13818,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"20688:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13819,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13800,"src":"20699:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13814,"name":"baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13808,"src":"20653:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13813,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"20637:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$4240_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":13815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20637:29:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":13816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20667:13:60","memberName":"convertScaled","nodeType":"MemberAccess","referencedDeclaration":4239,"src":"20637:43:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":13820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20637:69:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13806,"id":13821,"nodeType":"Return","src":"20630:76:60"}]},"documentation":{"id":13798,"nodeType":"StructuredDocumentation","src":"20185:255:60","text":" @dev Calculates the valuation of an ERC20 token based on the amount and token address.\n @param amount The amount of the token.\n @param token The address of the token.\n @return valuation The valuation of the token."},"id":13823,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateERC20ValuationScaled","nameLocation":"20455:30:60","nodeType":"FunctionDefinition","parameters":{"id":13803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13800,"mutability":"mutable","name":"amount","nameLocation":"20494:6:60","nodeType":"VariableDeclaration","scope":13823,"src":"20486:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13799,"name":"uint256","nodeType":"ElementaryTypeName","src":"20486:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13802,"mutability":"mutable","name":"token","nameLocation":"20510:5:60","nodeType":"VariableDeclaration","scope":13823,"src":"20502:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13801,"name":"address","nodeType":"ElementaryTypeName","src":"20502:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20485:31:60"},"returnParameters":{"id":13806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13805,"mutability":"mutable","name":"valuation","nameLocation":"20548:9:60","nodeType":"VariableDeclaration","scope":13823,"src":"20540:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13804,"name":"uint256","nodeType":"ElementaryTypeName","src":"20540:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20539:19:60"},"scope":14139,"src":"20446:268:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13874,"nodeType":"Block","src":"21155:348:60","statements":[{"assignments":[13832],"declarations":[{"constant":false,"id":13832,"mutability":"mutable","name":"baseDecimal","nameLocation":"21174:11:60","nodeType":"VariableDeclaration","scope":13874,"src":"21166:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13831,"name":"uint256","nodeType":"ElementaryTypeName","src":"21166:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13838,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13834,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"21203:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13833,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"21188:14:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":13835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21188:25:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":13836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21214:8:60","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"21188:34:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":13837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21188:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"21166:58:60"},{"assignments":[13840],"declarations":[{"constant":false,"id":13840,"mutability":"mutable","name":"totalBaluni","nameLocation":"21243:11:60","nodeType":"VariableDeclaration","scope":13874,"src":"21235:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13839,"name":"uint256","nodeType":"ElementaryTypeName","src":"21235:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13843,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13841,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"21257:11:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21257:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21235:35:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13845,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13840,"src":"21289:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21303:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21289:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f74616c20737570706c792063616e6e6f74206265207a65726f","id":13848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21306:29:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b","typeString":"literal_string \"Total supply cannot be zero\""},"value":"Total supply cannot be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b","typeString":"literal_string \"Total supply cannot be zero\""}],"id":13844,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"21281:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21281:55:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13850,"nodeType":"ExpressionStatement","src":"21281:55:60"},{"assignments":[13852],"declarations":[{"constant":false,"id":13852,"mutability":"mutable","name":"totalUSDC","nameLocation":"21355:9:60","nodeType":"VariableDeclaration","scope":13874,"src":"21347:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13851,"name":"uint256","nodeType":"ElementaryTypeName","src":"21347:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13855,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13853,"name":"_totalValuationScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14048,"src":"21367:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21367:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21347:43:60"},{"expression":{"id":13863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13856,"name":"shareUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13829,"src":"21401:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13857,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13826,"src":"21414:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13858,"name":"totalUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13852,"src":"21423:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21414:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13860,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21413:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13861,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13840,"src":"21436:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21413:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21401:46:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13864,"nodeType":"ExpressionStatement","src":"21401:46:60"},{"expression":{"id":13872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13865,"name":"shareUSDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13829,"src":"21458:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":13866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21471:2:60","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":13867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21478:2:60","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13868,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"21483:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21478:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13870,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21477:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21471:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21458:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13873,"nodeType":"ExpressionStatement","src":"21458:37:60"}]},"documentation":{"id":13824,"nodeType":"StructuredDocumentation","src":"20722:337:60","text":" @dev Calculates the equivalent amount of USDC tokens for a given amount of Baluni tokens.\n @param amount The amount of Baluni tokens to convert.\n @return shareUSDC The equivalent amount of USDC tokens.\n Requirements:\n - The total supply of Baluni tokens must be greater than zero."},"id":13875,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateBaluniToUSDC","nameLocation":"21074:22:60","nodeType":"FunctionDefinition","parameters":{"id":13827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13826,"mutability":"mutable","name":"amount","nameLocation":"21105:6:60","nodeType":"VariableDeclaration","scope":13875,"src":"21097:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13825,"name":"uint256","nodeType":"ElementaryTypeName","src":"21097:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21096:16:60"},"returnParameters":{"id":13830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13829,"mutability":"mutable","name":"shareUSDC","nameLocation":"21144:9:60","nodeType":"VariableDeclaration","scope":13875,"src":"21136:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13828,"name":"uint256","nodeType":"ElementaryTypeName","src":"21136:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21135:19:60"},"scope":14139,"src":"21065:438:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13956,"nodeType":"Block","src":"22172:636:60","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13890,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13878,"src":"22191:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22205:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22191:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f74616c20737570706c792063616e6e6f74206265207a65726f","id":13893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22208:29:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b","typeString":"literal_string \"Total supply cannot be zero\""},"value":"Total supply cannot be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b","typeString":"literal_string \"Total supply cannot be zero\""}],"id":13889,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22183:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22183:55:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13895,"nodeType":"ExpressionStatement","src":"22183:55:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13897,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"22257:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3138","id":13898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22274:2:60","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"22257:19:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e20646563696d616c732073686f756c64206265203c3d203138","id":13900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22278:32:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe7cb95a2dc7ec969883b54c3194e315832305fa1026cbcfb27ede2b2283804","typeString":"literal_string \"Token decimals should be <= 18\""},"value":"Token decimals should be <= 18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebe7cb95a2dc7ec969883b54c3194e315832305fa1026cbcfb27ede2b2283804","typeString":"literal_string \"Token decimals should be <= 18\""}],"id":13896,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22249:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22249:62:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13902,"nodeType":"ExpressionStatement","src":"22249:62:60"},{"assignments":[13904],"declarations":[{"constant":false,"id":13904,"mutability":"mutable","name":"baluniAdjusted","nameLocation":"22330:14:60","nodeType":"VariableDeclaration","scope":13956,"src":"22322:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13903,"name":"uint256","nodeType":"ElementaryTypeName","src":"22322:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13905,"nodeType":"VariableDeclarationStatement","src":"22322:22:60"},{"assignments":[13907],"declarations":[{"constant":false,"id":13907,"mutability":"mutable","name":"amountAdjusted","nameLocation":"22363:14:60","nodeType":"VariableDeclaration","scope":13956,"src":"22355:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13906,"name":"uint256","nodeType":"ElementaryTypeName","src":"22355:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13908,"nodeType":"VariableDeclarationStatement","src":"22355:22:60"},{"assignments":[13910],"declarations":[{"constant":false,"id":13910,"mutability":"mutable","name":"factor","nameLocation":"22396:6:60","nodeType":"VariableDeclaration","scope":13956,"src":"22388:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13909,"name":"uint256","nodeType":"ElementaryTypeName","src":"22388:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13918,"initialValue":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":13911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22406:2:60","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":13912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22413:2:60","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13913,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"22418:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22413:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22412:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22406:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13917,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22405:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22388:45:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13919,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"22450:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3138","id":13920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22466:2:60","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"22450:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13943,"nodeType":"Block","src":"22593:99:60","statements":[{"expression":{"id":13937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13935,"name":"baluniAdjusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13904,"src":"22608:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13936,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13878,"src":"22625:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22608:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13938,"nodeType":"ExpressionStatement","src":"22608:28:60"},{"expression":{"id":13941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13939,"name":"amountAdjusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13907,"src":"22651:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13940,"name":"baluniAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13882,"src":"22668:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22651:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13942,"nodeType":"ExpressionStatement","src":"22651:29:60"}]},"id":13944,"nodeType":"IfStatement","src":"22446:246:60","trueBody":{"id":13934,"nodeType":"Block","src":"22470:117:60","statements":[{"expression":{"id":13926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13922,"name":"baluniAdjusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13904,"src":"22485:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13923,"name":"totalBaluni","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13878,"src":"22502:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13924,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"22516:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22502:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22485:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13927,"nodeType":"ExpressionStatement","src":"22485:37:60"},{"expression":{"id":13932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13928,"name":"amountAdjusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13907,"src":"22537:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13929,"name":"baluniAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13882,"src":"22554:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13930,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"22569:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22554:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22537:38:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13933,"nodeType":"ExpressionStatement","src":"22537:38:60"}]}},{"assignments":[13946],"declarations":[{"constant":false,"id":13946,"mutability":"mutable","name":"result","nameLocation":"22712:6:60","nodeType":"VariableDeclaration","scope":13956,"src":"22704:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13945,"name":"uint256","nodeType":"ElementaryTypeName","src":"22704:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13953,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13947,"name":"amountAdjusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13907,"src":"22722:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13948,"name":"totalERC20Balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13880,"src":"22739:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22722:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13950,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22721:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":13951,"name":"baluniAdjusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13904,"src":"22760:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22721:53:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22704:70:60"},{"expression":{"id":13954,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13946,"src":"22794:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13888,"id":13955,"nodeType":"Return","src":"22787:13:60"}]},"documentation":{"id":13876,"nodeType":"StructuredDocumentation","src":"21511:457:60","text":" @dev Calculates the ERC20 share based on the total Baluni supply, total ERC20 balance,\n Baluni amount, and token decimals.\n @param totalBaluni The total supply of Baluni tokens.\n @param totalERC20Balance The total balance of the ERC20 token.\n @param baluniAmount The amount of Baluni tokens.\n @param tokenDecimals The number of decimals for the ERC20 token.\n @return The calculated ERC20 share."},"id":13957,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateERC20Share","nameLocation":"21983:20:60","nodeType":"FunctionDefinition","parameters":{"id":13885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13878,"mutability":"mutable","name":"totalBaluni","nameLocation":"22022:11:60","nodeType":"VariableDeclaration","scope":13957,"src":"22014:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13877,"name":"uint256","nodeType":"ElementaryTypeName","src":"22014:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13880,"mutability":"mutable","name":"totalERC20Balance","nameLocation":"22052:17:60","nodeType":"VariableDeclaration","scope":13957,"src":"22044:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13879,"name":"uint256","nodeType":"ElementaryTypeName","src":"22044:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13882,"mutability":"mutable","name":"baluniAmount","nameLocation":"22088:12:60","nodeType":"VariableDeclaration","scope":13957,"src":"22080:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13881,"name":"uint256","nodeType":"ElementaryTypeName","src":"22080:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13884,"mutability":"mutable","name":"tokenDecimals","nameLocation":"22119:13:60","nodeType":"VariableDeclaration","scope":13957,"src":"22111:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13883,"name":"uint256","nodeType":"ElementaryTypeName","src":"22111:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22003:136:60"},"returnParameters":{"id":13888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13957,"src":"22163:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13886,"name":"uint256","nodeType":"ElementaryTypeName","src":"22163:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22162:9:60"},"scope":14139,"src":"21974:834:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14047,"nodeType":"Block","src":"23060:723:60","statements":[{"assignments":[13964],"declarations":[{"constant":false,"id":13964,"mutability":"mutable","name":"_totalV","nameLocation":"23079:7:60","nodeType":"VariableDeclaration","scope":14047,"src":"23071:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13963,"name":"uint256","nodeType":"ElementaryTypeName","src":"23071:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13966,"initialValue":{"hexValue":"30","id":13965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23089:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23071:19:60"},{"body":{"id":14043,"nodeType":"Block","src":"23149:602:60","statements":[{"assignments":[13980],"declarations":[{"constant":false,"id":13980,"mutability":"mutable","name":"token","nameLocation":"23172:5:60","nodeType":"VariableDeclaration","scope":14043,"src":"23164:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13979,"name":"address","nodeType":"ElementaryTypeName","src":"23164:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13985,"initialValue":{"arguments":[{"id":13983,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13968,"src":"23190:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13981,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"23180:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":13982,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23187:2:60","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":6441,"src":"23180:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"}},"id":13984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23180:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"23164:28:60"},{"assignments":[13987],"declarations":[{"constant":false,"id":13987,"mutability":"mutable","name":"balance","nameLocation":"23215:7:60","nodeType":"VariableDeclaration","scope":14043,"src":"23207:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13986,"name":"uint256","nodeType":"ElementaryTypeName","src":"23207:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13997,"initialValue":{"arguments":[{"arguments":[{"id":13994,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"23257:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Router_$14139","typeString":"contract BaluniV1Router"}],"id":13993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23249:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13992,"name":"address","nodeType":"ElementaryTypeName","src":"23249:7:60","typeDescriptions":{}}},"id":13995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23249:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13989,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13980,"src":"23232:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13988,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"23225:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":13990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23225:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":13991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23239:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"23225:23:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23225:38:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23207:56:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13998,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13987,"src":"23284:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23295:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23284:12:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14002,"nodeType":"IfStatement","src":"23280:26:60","trueBody":{"id":14001,"nodeType":"Continue","src":"23298:8:60"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14003,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13980,"src":"23327:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14004,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"23336:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23327:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14014,"nodeType":"IfStatement","src":"23323:111:60","trueBody":{"id":14013,"nodeType":"Block","src":"23347:87:60","statements":[{"expression":{"id":14010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14006,"name":"_totalV","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13964,"src":"23366:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14007,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13987,"src":"23377:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653132","id":14008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23387:4:60","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"},"value":"1e12"},"src":"23377:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23366:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14011,"nodeType":"ExpressionStatement","src":"23366:25:60"},{"id":14012,"nodeType":"Continue","src":"23410:8:60"}]}},{"assignments":[14016],"declarations":[{"constant":false,"id":14016,"mutability":"mutable","name":"baluniOracle","nameLocation":"23458:12:60","nodeType":"VariableDeclaration","scope":14043,"src":"23450:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14015,"name":"address","nodeType":"ElementaryTypeName","src":"23450:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14020,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14017,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"23473:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23482:15:60","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"23473:24:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23473:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"23450:49:60"},{"assignments":[14022],"declarations":[{"constant":false,"id":14022,"mutability":"mutable","name":"tokenBalanceValuation","nameLocation":"23522:21:60","nodeType":"VariableDeclaration","scope":14043,"src":"23514:29:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14021,"name":"uint256","nodeType":"ElementaryTypeName","src":"23514:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14031,"initialValue":{"arguments":[{"id":14027,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13980,"src":"23590:5:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14028,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"23597:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14029,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13987,"src":"23608:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":14024,"name":"baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14016,"src":"23562:12:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14023,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"23546:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$4240_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":14025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23546:29:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":14026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23576:13:60","memberName":"convertScaled","nodeType":"MemberAccess","referencedDeclaration":4239,"src":"23546:43:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":14030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23546:70:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23514:102:60"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14033,"name":"tokenBalanceValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14022,"src":"23639:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23663:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23639:25:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e2076616c756174696f6e206973207a65726f","id":14036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23666:25:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_295121eae2e38ce539c65fbd804cefee3e5836ff4e56c455d35a6afed6773125","typeString":"literal_string \"Token valuation is zero\""},"value":"Token valuation is zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295121eae2e38ce539c65fbd804cefee3e5836ff4e56c455d35a6afed6773125","typeString":"literal_string \"Token valuation is zero\""}],"id":14032,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23631:7:60","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23631:61:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14038,"nodeType":"ExpressionStatement","src":"23631:61:60"},{"expression":{"id":14041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14039,"name":"_totalV","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13964,"src":"23707:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":14040,"name":"tokenBalanceValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14022,"src":"23718:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23707:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14042,"nodeType":"ExpressionStatement","src":"23707:32:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13971,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13968,"src":"23123:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13972,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"23127:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":13973,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23134:6:60","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":6414,"src":"23127:13:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"}},"id":13974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23127:15:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23123:19:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14044,"initializationExpression":{"assignments":[13968],"declarations":[{"constant":false,"id":13968,"mutability":"mutable","name":"i","nameLocation":"23116:1:60","nodeType":"VariableDeclaration","scope":14044,"src":"23108:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13967,"name":"uint256","nodeType":"ElementaryTypeName","src":"23108:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13970,"initialValue":{"hexValue":"30","id":13969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23120:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23108:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":13977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"23144:3:60","subExpression":{"id":13976,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13968,"src":"23144:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13978,"nodeType":"ExpressionStatement","src":"23144:3:60"},"nodeType":"ForStatement","src":"23103:648:60"},{"expression":{"id":14045,"name":"_totalV","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13964,"src":"23768:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13962,"id":14046,"nodeType":"Return","src":"23761:14:60"}]},"documentation":{"id":13958,"nodeType":"StructuredDocumentation","src":"22816:173:60","text":" @dev Calculates the total valuation of the contract by summing up the valuation of each token held.\n @return The total valuation of the contract."},"id":14048,"implemented":true,"kind":"function","modifiers":[],"name":"_totalValuationScaled","nameLocation":"23004:21:60","nodeType":"FunctionDefinition","parameters":{"id":13959,"nodeType":"ParameterList","parameters":[],"src":"23025:2:60"},"returnParameters":{"id":13962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14048,"src":"23051:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13960,"name":"uint256","nodeType":"ElementaryTypeName","src":"23051:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23050:9:60"},"scope":14139,"src":"22995:788:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14083,"nodeType":"Block","src":"24056:230:60","statements":[{"assignments":[14057],"declarations":[{"constant":false,"id":14057,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"24075:8:60","nodeType":"VariableDeclaration","scope":14083,"src":"24067:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14056,"name":"uint256","nodeType":"ElementaryTypeName","src":"24067:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14061,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14058,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"24086:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24095:10:60","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":4863,"src":"24086:19:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24086:21:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24067:40:60"},{"assignments":[14063],"declarations":[{"constant":false,"id":14063,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"24126:9:60","nodeType":"VariableDeclaration","scope":14083,"src":"24118:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14062,"name":"uint256","nodeType":"ElementaryTypeName","src":"24118:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14067,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14064,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"24138:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24147:11:60","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"24138:20:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":14066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24138:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24118:42:60"},{"assignments":[14069],"declarations":[{"constant":false,"id":14069,"mutability":"mutable","name":"amountInWithFee","nameLocation":"24179:15:60","nodeType":"VariableDeclaration","scope":14083,"src":"24171:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14068,"name":"uint256","nodeType":"ElementaryTypeName","src":"24171:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14080,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14070,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14051,"src":"24198:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14071,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14063,"src":"24209:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"id":14072,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14057,"src":"24222:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24221:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24209:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14075,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24208:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24198:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14077,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24197:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":14078,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14063,"src":"24236:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24197:48:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24171:74:60"},{"expression":{"id":14081,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14069,"src":"24263:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14055,"id":14082,"nodeType":"Return","src":"24256:22:60"}]},"documentation":{"id":14049,"nodeType":"StructuredDocumentation","src":"23791:173:60","text":" @dev Calculates the net amount after deducting the fee.\n @param _amount The input amount.\n @return The net amount after deducting the fee."},"id":14084,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateNetAmountAfterFee","nameLocation":"23979:27:60","nodeType":"FunctionDefinition","parameters":{"id":14052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14051,"mutability":"mutable","name":"_amount","nameLocation":"24015:7:60","nodeType":"VariableDeclaration","scope":14084,"src":"24007:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14050,"name":"uint256","nodeType":"ElementaryTypeName","src":"24007:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24006:17:60"},"returnParameters":{"id":14055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14054,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14084,"src":"24047:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14053,"name":"uint256","nodeType":"ElementaryTypeName","src":"24047:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24046:9:60"},"scope":14139,"src":"23970:316:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14093,"nodeType":"Block","src":"24451:50:60","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14090,"name":"_getInitializedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"24469:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint64_$","typeString":"function () view returns (uint64)"}},"id":14091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24469:24:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":14089,"id":14092,"nodeType":"Return","src":"24462:31:60"}]},"documentation":{"id":14085,"nodeType":"StructuredDocumentation","src":"24294:98:60","text":" @dev Returns the version of the contract.\n @return The version string."},"functionSelector":"0d8e6e2c","id":14094,"implemented":true,"kind":"function","modifiers":[],"name":"getVersion","nameLocation":"24407:10:60","nodeType":"FunctionDefinition","parameters":{"id":14086,"nodeType":"ParameterList","parameters":[],"src":"24417:2:60"},"returnParameters":{"id":14089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14094,"src":"24443:6:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":14087,"name":"uint64","nodeType":"ElementaryTypeName","src":"24443:6:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"24442:8:60"},"scope":14139,"src":"24398:103:60","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14105,"nodeType":"Block","src":"24720:41:60","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14101,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"24738:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},"id":14102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24745:6:60","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":6471,"src":"24738:13:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$6318_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$6318_storage_ptr_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (address[] memory)"}},"id":14103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24738:15:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":14100,"id":14104,"nodeType":"Return","src":"24731:22:60"}]},"documentation":{"id":14095,"nodeType":"StructuredDocumentation","src":"24509:143:60","text":" @dev Returns an array of addresses representing the tokens.\n @return An array of addresses representing the tokens."},"functionSelector":"aa6ca808","id":14106,"implemented":true,"kind":"function","modifiers":[],"name":"getTokens","nameLocation":"24667:9:60","nodeType":"FunctionDefinition","parameters":{"id":14096,"nodeType":"ParameterList","parameters":[],"src":"24676:2:60"},"returnParameters":{"id":14100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14106,"src":"24702:16:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14097,"name":"address","nodeType":"ElementaryTypeName","src":"24702:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14098,"nodeType":"ArrayTypeName","src":"24702:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"24701:18:60"},"scope":14139,"src":"24658:103:60","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14121,"nodeType":"Block","src":"24997:63:60","statements":[{"expression":{"arguments":[{"id":14117,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"25037:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},{"id":14118,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14109,"src":"25045:6:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14114,"name":"EnumerableSetUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"25008:24:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EnumerableSetUpgradeable_$6605_$","typeString":"type(library EnumerableSetUpgradeable)"}},"id":14116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25033:3:60","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":6345,"src":"25008:28:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6318_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) returns (bool)"}},"id":14119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25008:44:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14120,"nodeType":"ExpressionStatement","src":"25008:44:60"}]},"documentation":{"id":14107,"nodeType":"StructuredDocumentation","src":"24769:169:60","text":" @dev Adds a token to the `tokens` set.\n Can only be called by the contract owner.\n @param _token The address of the token to be added."},"functionSelector":"d48bfca7","id":14122,"implemented":true,"kind":"function","modifiers":[{"id":14112,"kind":"modifierInvocation","modifierName":{"id":14111,"name":"onlyOwner","nameLocations":["24987:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"24987:9:60"},"nodeType":"ModifierInvocation","src":"24987:9:60"}],"name":"addToken","nameLocation":"24953:8:60","nodeType":"FunctionDefinition","parameters":{"id":14110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14109,"mutability":"mutable","name":"_token","nameLocation":"24970:6:60","nodeType":"VariableDeclaration","scope":14122,"src":"24962:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14108,"name":"address","nodeType":"ElementaryTypeName","src":"24962:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24961:16:60"},"returnParameters":{"id":14113,"nodeType":"ParameterList","parameters":[],"src":"24997:0:60"},"scope":14139,"src":"24944:116:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14137,"nodeType":"Block","src":"25306:66:60","statements":[{"expression":{"arguments":[{"id":14133,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"25349:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"}},{"id":14134,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14125,"src":"25357:6:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$6318_storage","typeString":"struct EnumerableSetUpgradeable.AddressSet storage ref"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14130,"name":"EnumerableSetUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"25317:24:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EnumerableSetUpgradeable_$6605_$","typeString":"type(library EnumerableSetUpgradeable)"}},"id":14132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25342:6:60","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":6372,"src":"25317:31:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$6318_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) returns (bool)"}},"id":14135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25317:47:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14136,"nodeType":"ExpressionStatement","src":"25317:47:60"}]},"documentation":{"id":14123,"nodeType":"StructuredDocumentation","src":"25068:176:60","text":" @dev Removes a token from the `tokens` set.\n Can only be called by the contract owner.\n @param _token The address of the token to be removed."},"functionSelector":"5fa7b584","id":14138,"implemented":true,"kind":"function","modifiers":[{"id":14128,"kind":"modifierInvocation","modifierName":{"id":14127,"name":"onlyOwner","nameLocations":["25296:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"25296:9:60"},"nodeType":"ModifierInvocation","src":"25296:9:60"}],"name":"removeToken","nameLocation":"25259:11:60","nodeType":"FunctionDefinition","parameters":{"id":14126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14125,"mutability":"mutable","name":"_token","nameLocation":"25279:6:60","nodeType":"VariableDeclaration","scope":14138,"src":"25271:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14124,"name":"address","nodeType":"ElementaryTypeName","src":"25271:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25270:16:60"},"returnParameters":{"id":14129,"nodeType":"ParameterList","parameters":[],"src":"25306:0:60"},"scope":14139,"src":"25250:122:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14140,"src":"2383:22992:60","usedErrors":[30,35,211,214,475,480,1500,1620,1625,1630,1639,1644,1649,1780,1793,2690,2693],"usedEvents":[41,219,1759,2585,2594,12417,12423,12429,12435]}],"src":"40:25337:60"},"id":60},"contracts/pools/BaluniV1Pool.sol":{"ast":{"absolutePath":"contracts/pools/BaluniV1Pool.sol","exportedSymbols":{"BaluniV1Pool":[16885],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1Oracle":[4240],"IBaluniV1Pool":[4457],"IBaluniV1PoolPeriphery":[4557],"IBaluniV1Rebalancer":[4675],"IBaluniV1Registry":[4909],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"Initializable":[448],"OwnableUpgradeable":[194],"PausableUpgradeable":[1469],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":16886,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":14141,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:61"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":14142,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":1248,"src":"1468:78:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":14143,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":195,"src":"1548:75:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":14144,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":1599,"src":"1625:82:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":14145,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":449,"src":"1709:75:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":14146,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":631,"src":"1786:77:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","id":14147,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":1470,"src":"1865:75:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1PoolPeriphery.sol","file":"../interfaces/IBaluniV1PoolPeriphery.sol","id":14148,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":4558,"src":"1944:50:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":14149,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":4910,"src":"1996:45:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Rebalancer.sol","file":"../interfaces/IBaluniV1Rebalancer.sol","id":14150,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":4676,"src":"2043:47:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","file":"../interfaces/IBaluniV1Oracle.sol","id":14151,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":4241,"src":"2092:43:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Pool.sol","file":"../interfaces/IBaluniV1Pool.sol","id":14152,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16886,"sourceUnit":4458,"src":"2137:41:61","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14153,"name":"Initializable","nameLocations":["2212:13:61"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"2212:13:61"},"id":14154,"nodeType":"InheritanceSpecifier","src":"2212:13:61"},{"baseName":{"id":14155,"name":"UUPSUpgradeable","nameLocations":["2232:15:61"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"2232:15:61"},"id":14156,"nodeType":"InheritanceSpecifier","src":"2232:15:61"},{"baseName":{"id":14157,"name":"OwnableUpgradeable","nameLocations":["2254:18:61"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"2254:18:61"},"id":14158,"nodeType":"InheritanceSpecifier","src":"2254:18:61"},{"baseName":{"id":14159,"name":"ERC20Upgradeable","nameLocations":["2279:16:61"],"nodeType":"IdentifierPath","referencedDeclaration":1247,"src":"2279:16:61"},"id":14160,"nodeType":"InheritanceSpecifier","src":"2279:16:61"},{"baseName":{"id":14161,"name":"ReentrancyGuardUpgradeable","nameLocations":["2302:26:61"],"nodeType":"IdentifierPath","referencedDeclaration":1598,"src":"2302:26:61"},"id":14162,"nodeType":"InheritanceSpecifier","src":"2302:26:61"},{"baseName":{"id":14163,"name":"PausableUpgradeable","nameLocations":["2335:19:61"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"2335:19:61"},"id":14164,"nodeType":"InheritanceSpecifier","src":"2335:19:61"},{"baseName":{"id":14165,"name":"IBaluniV1Pool","nameLocations":["2361:13:61"],"nodeType":"IdentifierPath","referencedDeclaration":4457,"src":"2361:13:61"},"id":14166,"nodeType":"InheritanceSpecifier","src":"2361:13:61"}],"canonicalName":"BaluniV1Pool","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16885,"linearizedBaseContracts":[16885,4457,1469,1598,1247,1650,2677,2651,194,1293,630,1608,448],"name":"BaluniV1Pool","nameLocation":"2191:12:61","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d14ef46d","id":14170,"mutability":"mutable","name":"assetInfos","nameLocation":"2475:10:61","nodeType":"VariableDeclaration","scope":16885,"src":"2456:29:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo[]"},"typeName":{"baseType":{"id":14168,"nodeType":"UserDefinedTypeName","pathNode":{"id":14167,"name":"AssetInfo","nameLocations":["2456:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":4252,"src":"2456:9:61"},"referencedDeclaration":4252,"src":"2456:9:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage_ptr","typeString":"struct IBaluniV1Pool.AssetInfo"}},"id":14169,"nodeType":"ArrayTypeName","src":"2456:11:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage_ptr","typeString":"struct IBaluniV1Pool.AssetInfo[]"}},"visibility":"public"},{"constant":false,"functionSelector":"c2ee3a08","id":14172,"mutability":"mutable","name":"ONE","nameLocation":"2549:3:61","nodeType":"VariableDeclaration","scope":16885,"src":"2534:18:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14171,"name":"uint256","nodeType":"ElementaryTypeName","src":"2534:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"cdf456e1","id":14174,"mutability":"mutable","name":"baseAsset","nameLocation":"2626:9:61","nodeType":"VariableDeclaration","scope":16885,"src":"2611:24:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14173,"name":"address","nodeType":"ElementaryTypeName","src":"2611:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":14176,"mutability":"mutable","name":"scalingFactor","nameLocation":"2706:13:61","nodeType":"VariableDeclaration","scope":16885,"src":"2690:29:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14175,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"functionSelector":"7b103999","id":14179,"mutability":"mutable","name":"registry","nameLocation":"2811:8:61","nodeType":"VariableDeclaration","scope":16885,"src":"2786:33:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":14178,"nodeType":"UserDefinedTypeName","pathNode":{"id":14177,"name":"IBaluniV1Registry","nameLocations":["2786:17:61"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"2786:17:61"},"referencedDeclaration":4909,"src":"2786:17:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"constant":false,"documentation":{"id":14180,"nodeType":"StructuredDocumentation","src":"2828:78:61","text":" @dev A mapping that stores the reserves for each address."},"functionSelector":"d66bd524","id":14184,"mutability":"mutable","name":"reserves","nameLocation":"2947:8:61","nodeType":"VariableDeclaration","scope":16885,"src":"2912:43:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":14183,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14181,"name":"address","nodeType":"ElementaryTypeName","src":"2920:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2912:27:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14182,"name":"uint256","nodeType":"ElementaryTypeName","src":"2931:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"body":{"id":14198,"nodeType":"Block","src":"3241:78:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14190,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14187,"src":"3260:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":14191,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3272:5:61","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":14192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3278:9:61","memberName":"timestamp","nodeType":"MemberAccess","src":"3272:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3260:27:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45585049524544","id":14194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3289:9:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a","typeString":"literal_string \"EXPIRED\""},"value":"EXPIRED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a","typeString":"literal_string \"EXPIRED\""}],"id":14189,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3252:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3252:47:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14196,"nodeType":"ExpressionStatement","src":"3252:47:61"},{"id":14197,"nodeType":"PlaceholderStatement","src":"3310:1:61"}]},"documentation":{"id":14185,"nodeType":"StructuredDocumentation","src":"2964:237:61","text":" @dev Modifier to ensure that the provided deadline is not expired.\n @param deadline The deadline timestamp to check against the current block timestamp.\n @dev Throws an error if the deadline is expired."},"id":14199,"name":"ensure","nameLocation":"3216:6:61","nodeType":"ModifierDefinition","parameters":{"id":14188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14187,"mutability":"mutable","name":"deadline","nameLocation":"3231:8:61","nodeType":"VariableDeclaration","scope":14199,"src":"3223:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14186,"name":"uint256","nodeType":"ElementaryTypeName","src":"3223:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3222:18:61"},"src":"3207:112:61","virtual":false,"visibility":"internal"},{"body":{"id":14309,"nodeType":"Block","src":"3782:700:61","statements":[{"expression":{"arguments":[{"expression":{"id":14218,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3808:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3812:6:61","memberName":"sender","nodeType":"MemberAccess","src":"3808:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14217,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"3793:14:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":14220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14221,"nodeType":"ExpressionStatement","src":"3793:26:61"},{"expression":{"arguments":[{"id":14223,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14202,"src":"3843:5:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14224,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14204,"src":"3850:7:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14222,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"3830:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":14225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3830:28:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14226,"nodeType":"ExpressionStatement","src":"3830:28:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14227,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"3869:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3869:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14229,"nodeType":"ExpressionStatement","src":"3869:24:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14230,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"3904:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3904:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14232,"nodeType":"ExpressionStatement","src":"3904:24:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14233,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"3939:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3939:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14235,"nodeType":"ExpressionStatement","src":"3939:17:61"},{"expression":{"id":14240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14236,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"3969:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14238,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14212,"src":"3998:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14237,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"3980:17:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":14239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3980:28:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"3969:39:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14241,"nodeType":"ExpressionStatement","src":"3969:39:61"},{"expression":{"id":14244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14242,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14172,"src":"4019:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31653138","id":14243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4025:4:61","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"4019:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14245,"nodeType":"ExpressionStatement","src":"4019:10:61"},{"expression":{"id":14250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14246,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"4040:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14247,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"4052:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4061:7:61","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"4052:16:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4052:18:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4040:30:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14251,"nodeType":"ExpressionStatement","src":"4040:30:61"},{"expression":{"id":14259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14252,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14176,"src":"4081:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"},"id":14258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4097:2:61","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"id":14256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":14254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4104:2:61","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"36","id":14255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4109:1:61","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"4104:6:61","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"}}],"id":14257,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4103:8:61","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"}},"src":"4097:14:61","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"}},"src":"4081:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14260,"nodeType":"ExpressionStatement","src":"4081:30:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14262,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"4132:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4153:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4145:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14263,"name":"address","nodeType":"ElementaryTypeName","src":"4145:7:61","typeDescriptions":{}}},"id":14266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4145:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4132:23:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420626173652061737365742061646472657373","id":14268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4157:28:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_391a75680d8ec99739af126cde56833526e4b720a416f24f1d7ee98c294a45b1","typeString":"literal_string \"Invalid base asset address\""},"value":"Invalid base asset address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_391a75680d8ec99739af126cde56833526e4b720a416f24f1d7ee98c294a45b1","typeString":"literal_string \"Invalid base asset address\""}],"id":14261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4124:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4124:62:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14270,"nodeType":"ExpressionStatement","src":"4124:62:61"},{"expression":{"arguments":[{"arguments":[{"id":14273,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14207,"src":"4222:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":14274,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"4231:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14272,"name":"initializeAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14565,"src":"4205:16:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (address[] memory,uint256[] memory) returns (bool)"}},"id":14275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4205:35:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a6174696f6e206661696c6564","id":14276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4242:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4","typeString":"literal_string \"Initialization failed\""},"value":"Initialization failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4","typeString":"literal_string \"Initialization failed\""}],"id":14271,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4197:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4197:69:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14278,"nodeType":"ExpressionStatement","src":"4197:69:61"},{"assignments":[14280],"declarations":[{"constant":false,"id":14280,"mutability":"mutable","name":"totalWeight","nameLocation":"4287:11:61","nodeType":"VariableDeclaration","scope":14309,"src":"4279:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14279,"name":"uint256","nodeType":"ElementaryTypeName","src":"4279:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14282,"initialValue":{"hexValue":"30","id":14281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4301:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4279:23:61"},{"body":{"id":14300,"nodeType":"Block","src":"4361:53:61","statements":[{"expression":{"id":14298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14294,"name":"totalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14280,"src":"4376:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":14295,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"4391:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14297,"indexExpression":{"id":14296,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14284,"src":"4400:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4391:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4376:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14299,"nodeType":"ExpressionStatement","src":"4376:26:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14287,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14284,"src":"4335:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14288,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"4339:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4348:6:61","memberName":"length","nodeType":"MemberAccess","src":"4339:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4335:19:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14301,"initializationExpression":{"assignments":[14284],"declarations":[{"constant":false,"id":14284,"mutability":"mutable","name":"i","nameLocation":"4328:1:61","nodeType":"VariableDeclaration","scope":14301,"src":"4320:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14283,"name":"uint256","nodeType":"ElementaryTypeName","src":"4320:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14286,"initialValue":{"hexValue":"30","id":14285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4332:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4320:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":14292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4356:3:61","subExpression":{"id":14291,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14284,"src":"4356:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14293,"nodeType":"ExpressionStatement","src":"4356:3:61"},"nodeType":"ForStatement","src":"4315:99:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14303,"name":"totalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14280,"src":"4434:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3130303030","id":14304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4449:5:61","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"4434:20:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642077656967687473","id":14306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4456:17:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_5cbb8d647918028d0523fccac550113bbbb71d463bbb8b573c02c32bc5cf2b89","typeString":"literal_string \"Invalid weights\""},"value":"Invalid weights"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5cbb8d647918028d0523fccac550113bbbb71d463bbb8b573c02c32bc5cf2b89","typeString":"literal_string \"Invalid weights\""}],"id":14302,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4426:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4426:48:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14308,"nodeType":"ExpressionStatement","src":"4426:48:61"}]},"documentation":{"id":14200,"nodeType":"StructuredDocumentation","src":"3327:240:61","text":" @dev Initializes the BaluniV1Pool contract.\n @param _assets The array of asset addresses.\n @param _weights The array of asset weights.\n @param _registry The address of the BaluniV1Registry contract."},"functionSelector":"34de9b8d","id":14310,"implemented":true,"kind":"function","modifiers":[{"id":14215,"kind":"modifierInvocation","modifierName":{"id":14214,"name":"initializer","nameLocations":["3770:11:61"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"3770:11:61"},"nodeType":"ModifierInvocation","src":"3770:11:61"}],"name":"initialize","nameLocation":"3582:10:61","nodeType":"FunctionDefinition","parameters":{"id":14213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14202,"mutability":"mutable","name":"_name","nameLocation":"3617:5:61","nodeType":"VariableDeclaration","scope":14310,"src":"3603:19:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14201,"name":"string","nodeType":"ElementaryTypeName","src":"3603:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14204,"mutability":"mutable","name":"_symbol","nameLocation":"3647:7:61","nodeType":"VariableDeclaration","scope":14310,"src":"3633:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14203,"name":"string","nodeType":"ElementaryTypeName","src":"3633:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14207,"mutability":"mutable","name":"_assets","nameLocation":"3682:7:61","nodeType":"VariableDeclaration","scope":14310,"src":"3665:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14205,"name":"address","nodeType":"ElementaryTypeName","src":"3665:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14206,"nodeType":"ArrayTypeName","src":"3665:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14210,"mutability":"mutable","name":"_weights","nameLocation":"3717:8:61","nodeType":"VariableDeclaration","scope":14310,"src":"3700:25:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14208,"name":"uint256","nodeType":"ElementaryTypeName","src":"3700:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14209,"nodeType":"ArrayTypeName","src":"3700:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14212,"mutability":"mutable","name":"_registry","nameLocation":"3744:9:61","nodeType":"VariableDeclaration","scope":14310,"src":"3736:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14211,"name":"address","nodeType":"ElementaryTypeName","src":"3736:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3592:168:61"},"returnParameters":{"id":14216,"nodeType":"ParameterList","parameters":[],"src":"3782:0:61"},"scope":16885,"src":"3573:909:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14422,"nodeType":"Block","src":"4739:731:61","statements":[{"expression":{"arguments":[{"expression":{"id":14331,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4765:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4769:6:61","memberName":"sender","nodeType":"MemberAccess","src":"4765:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14330,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"4750:14:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":14333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4750:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14334,"nodeType":"ExpressionStatement","src":"4750:26:61"},{"expression":{"arguments":[{"id":14336,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14312,"src":"4800:5:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14337,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14314,"src":"4807:7:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14335,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"4787:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":14338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4787:28:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14339,"nodeType":"ExpressionStatement","src":"4787:28:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14340,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"4826:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4826:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14342,"nodeType":"ExpressionStatement","src":"4826:24:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14343,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"4861:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4861:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14345,"nodeType":"ExpressionStatement","src":"4861:24:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14346,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"4896:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4896:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14348,"nodeType":"ExpressionStatement","src":"4896:17:61"},{"expression":{"id":14353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14349,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"4926:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14351,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"4955:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14350,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"4937:17:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":14352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4937:28:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"4926:39:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14354,"nodeType":"ExpressionStatement","src":"4926:39:61"},{"expression":{"id":14357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14355,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14172,"src":"4976:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31653138","id":14356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4982:4:61","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"4976:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14358,"nodeType":"ExpressionStatement","src":"4976:10:61"},{"expression":{"id":14363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14359,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"4997:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14360,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"5009:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5018:7:61","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"5009:16:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5009:18:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4997:30:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14364,"nodeType":"ExpressionStatement","src":"4997:30:61"},{"expression":{"id":14372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14365,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14176,"src":"5038:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"},"id":14371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5054:2:61","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"id":14369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":14367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5061:2:61","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"36","id":14368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:61","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"5061:6:61","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"}}],"id":14370,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5060:8:61","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"}},"src":"5054:14:61","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000_by_1","typeString":"int_const 1000000000000"}},"src":"5038:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14373,"nodeType":"ExpressionStatement","src":"5038:30:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14375,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"5120:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5141:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5133:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14376,"name":"address","nodeType":"ElementaryTypeName","src":"5133:7:61","typeDescriptions":{}}},"id":14379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5133:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5120:23:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420626173652061737365742061646472657373","id":14381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5145:28:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_391a75680d8ec99739af126cde56833526e4b720a416f24f1d7ee98c294a45b1","typeString":"literal_string \"Invalid base asset address\""},"value":"Invalid base asset address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_391a75680d8ec99739af126cde56833526e4b720a416f24f1d7ee98c294a45b1","typeString":"literal_string \"Invalid base asset address\""}],"id":14374,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5112:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:62:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14383,"nodeType":"ExpressionStatement","src":"5112:62:61"},{"expression":{"arguments":[{"arguments":[{"id":14386,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14317,"src":"5210:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":14387,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14320,"src":"5219:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14385,"name":"initializeAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14565,"src":"5193:16:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (address[] memory,uint256[] memory) returns (bool)"}},"id":14388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5193:35:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a6174696f6e206661696c6564","id":14389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5230:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4","typeString":"literal_string \"Initialization failed\""},"value":"Initialization failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4","typeString":"literal_string \"Initialization failed\""}],"id":14384,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5185:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5185:69:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14391,"nodeType":"ExpressionStatement","src":"5185:69:61"},{"assignments":[14393],"declarations":[{"constant":false,"id":14393,"mutability":"mutable","name":"totalWeight","nameLocation":"5275:11:61","nodeType":"VariableDeclaration","scope":14422,"src":"5267:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14392,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14395,"initialValue":{"hexValue":"30","id":14394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5289:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5267:23:61"},{"body":{"id":14413,"nodeType":"Block","src":"5349:53:61","statements":[{"expression":{"id":14411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14407,"name":"totalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"5364:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":14408,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14320,"src":"5379:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14410,"indexExpression":{"id":14409,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"5388:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5379:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5364:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14412,"nodeType":"ExpressionStatement","src":"5364:26:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14400,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"5323:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14401,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14320,"src":"5327:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5336:6:61","memberName":"length","nodeType":"MemberAccess","src":"5327:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5323:19:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14414,"initializationExpression":{"assignments":[14397],"declarations":[{"constant":false,"id":14397,"mutability":"mutable","name":"i","nameLocation":"5316:1:61","nodeType":"VariableDeclaration","scope":14414,"src":"5308:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14396,"name":"uint256","nodeType":"ElementaryTypeName","src":"5308:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14399,"initialValue":{"hexValue":"30","id":14398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5320:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5308:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":14405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5344:3:61","subExpression":{"id":14404,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"5344:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14406,"nodeType":"ExpressionStatement","src":"5344:3:61"},"nodeType":"ForStatement","src":"5303:99:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14416,"name":"totalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14393,"src":"5422:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3130303030","id":14417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5437:5:61","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"5422:20:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642077656967687473","id":14419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5444:17:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_5cbb8d647918028d0523fccac550113bbbb71d463bbb8b573c02c32bc5cf2b89","typeString":"literal_string \"Invalid weights\""},"value":"Invalid weights"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5cbb8d647918028d0523fccac550113bbbb71d463bbb8b573c02c32bc5cf2b89","typeString":"literal_string \"Invalid weights\""}],"id":14415,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5414:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5414:48:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14421,"nodeType":"ExpressionStatement","src":"5414:48:61"}]},"functionSelector":"fb33a6c0","id":14423,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":14327,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14324,"src":"4729:8:61","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":14328,"kind":"modifierInvocation","modifierName":{"id":14326,"name":"reinitializer","nameLocations":["4715:13:61"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"4715:13:61"},"nodeType":"ModifierInvocation","src":"4715:23:61"}],"name":"reinitialize","nameLocation":"4499:12:61","nodeType":"FunctionDefinition","parameters":{"id":14325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14312,"mutability":"mutable","name":"_name","nameLocation":"4536:5:61","nodeType":"VariableDeclaration","scope":14423,"src":"4522:19:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14311,"name":"string","nodeType":"ElementaryTypeName","src":"4522:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14314,"mutability":"mutable","name":"_symbol","nameLocation":"4566:7:61","nodeType":"VariableDeclaration","scope":14423,"src":"4552:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14313,"name":"string","nodeType":"ElementaryTypeName","src":"4552:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14317,"mutability":"mutable","name":"_assets","nameLocation":"4601:7:61","nodeType":"VariableDeclaration","scope":14423,"src":"4584:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14315,"name":"address","nodeType":"ElementaryTypeName","src":"4584:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14316,"nodeType":"ArrayTypeName","src":"4584:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14320,"mutability":"mutable","name":"_weights","nameLocation":"4636:8:61","nodeType":"VariableDeclaration","scope":14423,"src":"4619:25:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14318,"name":"uint256","nodeType":"ElementaryTypeName","src":"4619:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14319,"nodeType":"ArrayTypeName","src":"4619:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14322,"mutability":"mutable","name":"_registry","nameLocation":"4663:9:61","nodeType":"VariableDeclaration","scope":14423,"src":"4655:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14321,"name":"address","nodeType":"ElementaryTypeName","src":"4655:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14324,"mutability":"mutable","name":"_version","nameLocation":"4690:8:61","nodeType":"VariableDeclaration","scope":14423,"src":"4683:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":14323,"name":"uint64","nodeType":"ElementaryTypeName","src":"4683:6:61","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4511:194:61"},"returnParameters":{"id":14329,"nodeType":"ParameterList","parameters":[],"src":"4739:0:61"},"scope":16885,"src":"4490:980:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[584],"body":{"id":14432,"nodeType":"Block","src":"5820:2:61","statements":[]},"documentation":{"id":14424,"nodeType":"StructuredDocumentation","src":"5478:254:61","text":" @dev Internal function to authorize an upgrade to a new implementation contract.\n @param newImplementation The address of the new implementation contract.\n @notice This function can only be called by the contract owner."},"id":14433,"implemented":true,"kind":"function","modifiers":[{"id":14430,"kind":"modifierInvocation","modifierName":{"id":14429,"name":"onlyOwner","nameLocations":["5810:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5810:9:61"},"nodeType":"ModifierInvocation","src":"5810:9:61"}],"name":"_authorizeUpgrade","nameLocation":"5747:17:61","nodeType":"FunctionDefinition","overrides":{"id":14428,"nodeType":"OverrideSpecifier","overrides":[],"src":"5801:8:61"},"parameters":{"id":14427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14426,"mutability":"mutable","name":"newImplementation","nameLocation":"5773:17:61","nodeType":"VariableDeclaration","scope":14433,"src":"5765:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14425,"name":"address","nodeType":"ElementaryTypeName","src":"5765:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5764:27:61"},"returnParameters":{"id":14431,"nodeType":"ParameterList","parameters":[],"src":"5820:0:61"},"scope":16885,"src":"5738:84:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14564,"nodeType":"Block","src":"6146:1029:61","statements":[{"assignments":[14446],"declarations":[{"constant":false,"id":14446,"mutability":"mutable","name":"rebalancer","nameLocation":"6165:10:61","nodeType":"VariableDeclaration","scope":14564,"src":"6157:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14445,"name":"address","nodeType":"ElementaryTypeName","src":"6157:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14450,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14447,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"6178:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6187:19:61","memberName":"getBaluniRebalancer","nodeType":"MemberAccess","referencedDeclaration":4833,"src":"6178:28:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6178:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6157:51:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14452,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"6229:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":14453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6238:19:61","memberName":"getBaluniRebalancer","nodeType":"MemberAccess","referencedDeclaration":4833,"src":"6229:28:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6229:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6271:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6263:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14455,"name":"address","nodeType":"ElementaryTypeName","src":"6263:7:61","typeDescriptions":{}}},"id":14458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6263:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6229:44:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420726562616c616e6365722061646472657373","id":14460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6275:28:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3262886d4e83856703b764357b6a852eb26ef34a7982063b49217460e097ddc","typeString":"literal_string \"Invalid rebalancer address\""},"value":"Invalid rebalancer address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3262886d4e83856703b764357b6a852eb26ef34a7982063b49217460e097ddc","typeString":"literal_string \"Invalid rebalancer address\""}],"id":14451,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6221:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6221:83:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14462,"nodeType":"ExpressionStatement","src":"6221:83:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14464,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14437,"src":"6323:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":14465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6331:6:61","memberName":"length","nodeType":"MemberAccess","src":"6323:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14466,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14440,"src":"6341:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6350:6:61","memberName":"length","nodeType":"MemberAccess","src":"6341:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6323:33:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41737365747320616e642077656967687473206c656e677468206d69736d61746368","id":14469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6358:36:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebb567ad160cf2ebbf5e53ab40a3ffae6f6492169d006ee3f8bad6794e36f372","typeString":"literal_string \"Assets and weights length mismatch\""},"value":"Assets and weights length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebb567ad160cf2ebbf5e53ab40a3ffae6f6492169d006ee3f8bad6794e36f372","typeString":"literal_string \"Assets and weights length mismatch\""}],"id":14463,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6315:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6315:80:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14471,"nodeType":"ExpressionStatement","src":"6315:80:61"},{"expression":{"id":14473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6436:17:61","subExpression":{"id":14472,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"6443:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14474,"nodeType":"ExpressionStatement","src":"6436:17:61"},{"body":{"id":14560,"nodeType":"Block","src":"6511:635:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14487,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14437,"src":"6534:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":14489,"indexExpression":{"id":14488,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14476,"src":"6542:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6534:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6556:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6548:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14490,"name":"address","nodeType":"ElementaryTypeName","src":"6548:7:61","typeDescriptions":{}}},"id":14493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6548:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6534:24:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642061737365742061646472657373","id":14495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6560:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_795f8eca8a22be2e70f1d9bdebdbf85a1dc43e172c3964e13eac586b45ff2b92","typeString":"literal_string \"Invalid asset address\""},"value":"Invalid asset address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_795f8eca8a22be2e70f1d9bdebdbf85a1dc43e172c3964e13eac586b45ff2b92","typeString":"literal_string \"Invalid asset address\""}],"id":14486,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6526:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6526:58:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14497,"nodeType":"ExpressionStatement","src":"6526:58:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14499,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14440,"src":"6607:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14501,"indexExpression":{"id":14500,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14476,"src":"6616:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6607:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6621:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6607:15:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420776569676874","id":14504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6624:16:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_ff1ef73e4333da4da038aba1312a1df349427c8859c23d4b6d4a7df22bfc1a19","typeString":"literal_string \"Invalid weight\""},"value":"Invalid weight"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ff1ef73e4333da4da038aba1312a1df349427c8859c23d4b6d4a7df22bfc1a19","typeString":"literal_string \"Invalid weight\""}],"id":14498,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6599:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6599:42:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14506,"nodeType":"ExpressionStatement","src":"6599:42:61"},{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":14511,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14437,"src":"6732:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":14513,"indexExpression":{"id":14512,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14476,"src":"6740:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6732:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":14514,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14440,"src":"6773:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14516,"indexExpression":{"id":14515,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14476,"src":"6782:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6773:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":14517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6817:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":14518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6884:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14510,"name":"AssetInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4252,"src":"6692:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AssetInfo_$4252_storage_ptr_$","typeString":"type(struct IBaluniV1Pool.AssetInfo storage pointer)"}},"id":14519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["6725:5:61","6765:6:61","6807:8:61","6875:7:61"],"names":["asset","weight","slippage","reserve"],"nodeType":"FunctionCall","src":"6692:213:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_memory_ptr","typeString":"struct IBaluniV1Pool.AssetInfo memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AssetInfo_$4252_memory_ptr","typeString":"struct IBaluniV1Pool.AssetInfo memory"}],"expression":{"id":14507,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"6658:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":14509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6669:4:61","memberName":"push","nodeType":"MemberAccess","src":"6658:15:61","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage_ptr_$_t_struct$_AssetInfo_$4252_storage_$returns$__$attached_to$_t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage_ptr_$","typeString":"function (struct IBaluniV1Pool.AssetInfo storage ref[] storage pointer,struct IBaluniV1Pool.AssetInfo storage ref)"}},"id":14520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6658:262:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14521,"nodeType":"ExpressionStatement","src":"6658:262:61"},{"assignments":[14524],"declarations":[{"constant":false,"id":14524,"mutability":"mutable","name":"asset","nameLocation":"6944:5:61","nodeType":"VariableDeclaration","scope":14560,"src":"6937:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"},"typeName":{"id":14523,"nodeType":"UserDefinedTypeName","pathNode":{"id":14522,"name":"IERC20","nameLocations":["6937:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":2651,"src":"6937:6:61"},"referencedDeclaration":2651,"src":"6937:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14530,"initialValue":{"arguments":[{"baseExpression":{"id":14526,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14437,"src":"6959:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":14528,"indexExpression":{"id":14527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14476,"src":"6967:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6959:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14525,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6952:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":14529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6952:18:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6937:33:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":14535,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7013:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":14534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7005:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14533,"name":"address","nodeType":"ElementaryTypeName","src":"7005:7:61","typeDescriptions":{}}},"id":14536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7005:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14539,"name":"rebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14446,"src":"7028:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7020:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14537,"name":"address","nodeType":"ElementaryTypeName","src":"7020:7:61","typeDescriptions":{}}},"id":14540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7020:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14531,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14524,"src":"6989:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":14532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6995:9:61","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"6989:15:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":14541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6989:51:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7044:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6989:56:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14559,"nodeType":"IfStatement","src":"6985:150:61","trueBody":{"id":14558,"nodeType":"Block","src":"7047:88:61","statements":[{"expression":{"arguments":[{"arguments":[{"id":14549,"name":"rebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14446,"src":"7088:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7080:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14547,"name":"address","nodeType":"ElementaryTypeName","src":"7080:7:61","typeDescriptions":{}}},"id":14550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7080:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":14553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7106:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14552,"name":"uint256","nodeType":"ElementaryTypeName","src":"7106:7:61","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14551,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7101:4:61","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7101:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7115:3:61","memberName":"max","nodeType":"MemberAccess","src":"7101:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14544,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14524,"src":"7066:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":14546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7072:7:61","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"7066:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":14556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7066:53:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14557,"nodeType":"ExpressionStatement","src":"7066:53:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14479,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14476,"src":"6486:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14480,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14437,"src":"6490:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":14481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6498:6:61","memberName":"length","nodeType":"MemberAccess","src":"6490:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6486:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14561,"initializationExpression":{"assignments":[14476],"declarations":[{"constant":false,"id":14476,"mutability":"mutable","name":"i","nameLocation":"6479:1:61","nodeType":"VariableDeclaration","scope":14561,"src":"6471:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14475,"name":"uint256","nodeType":"ElementaryTypeName","src":"6471:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14478,"initialValue":{"hexValue":"30","id":14477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6483:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6471:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":14484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6506:3:61","subExpression":{"id":14483,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14476,"src":"6506:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14485,"nodeType":"ExpressionStatement","src":"6506:3:61"},"nodeType":"ForStatement","src":"6466:680:61"},{"expression":{"hexValue":"74727565","id":14562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7163:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14444,"id":14563,"nodeType":"Return","src":"7156:11:61"}]},"documentation":{"id":14434,"nodeType":"StructuredDocumentation","src":"5830:207:61","text":" @dev Initializes the assets and their weights for the pool.\n @param _assets The array of asset addresses.\n @param _weights The array of weights corresponding to each asset."},"id":14565,"implemented":true,"kind":"function","modifiers":[],"name":"initializeAssets","nameLocation":"6052:16:61","nodeType":"FunctionDefinition","parameters":{"id":14441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14437,"mutability":"mutable","name":"_assets","nameLocation":"6086:7:61","nodeType":"VariableDeclaration","scope":14565,"src":"6069:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14435,"name":"address","nodeType":"ElementaryTypeName","src":"6069:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14436,"nodeType":"ArrayTypeName","src":"6069:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14440,"mutability":"mutable","name":"_weights","nameLocation":"6112:8:61","nodeType":"VariableDeclaration","scope":14565,"src":"6095:25:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14438,"name":"uint256","nodeType":"ElementaryTypeName","src":"6095:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14439,"nodeType":"ArrayTypeName","src":"6095:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6068:53:61"},"returnParameters":{"id":14444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14443,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14565,"src":"6140:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14442,"name":"bool","nodeType":"ElementaryTypeName","src":"6140:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6139:6:61"},"scope":16885,"src":"6043:1132:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4298],"body":{"id":14689,"nodeType":"Block","src":"7666:930:61","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":14576,"name":"isRebalanceNeeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16350,"src":"7685:17:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":14577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7685:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526562616c616e6365206e6f74206e6565646564","id":14578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7706:22:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4fcae9c0286e861087281117e0a3185ced905823104b290e1fe3ba826d8d280","typeString":"literal_string \"Rebalance not needed\""},"value":"Rebalance not needed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e4fcae9c0286e861087281117e0a3185ced905823104b290e1fe3ba826d8d280","typeString":"literal_string \"Rebalance not needed\""}],"id":14575,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7677:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7677:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14580,"nodeType":"ExpressionStatement","src":"7677:52:61"},{"assignments":[14582,14585],"declarations":[{"constant":false,"id":14582,"mutability":"mutable","name":"tVal","nameLocation":"7749:4:61","nodeType":"VariableDeclaration","scope":14689,"src":"7741:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14581,"name":"uint256","nodeType":"ElementaryTypeName","src":"7741:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14585,"mutability":"mutable","name":"valuations","nameLocation":"7772:10:61","nodeType":"VariableDeclaration","scope":14689,"src":"7755:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14583,"name":"uint256","nodeType":"ElementaryTypeName","src":"7755:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14584,"nodeType":"ArrayTypeName","src":"7755:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":14588,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":14586,"name":"_computeTotalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16448,"src":"7786:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256,uint256[] memory)"}},"id":14587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7786:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"7740:70:61"},{"assignments":[14593],"declarations":[{"constant":false,"id":14593,"mutability":"mutable","name":"amountsToAdd","nameLocation":"7840:12:61","nodeType":"VariableDeclaration","scope":14689,"src":"7823:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14591,"name":"uint256","nodeType":"ElementaryTypeName","src":"7823:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14592,"nodeType":"ArrayTypeName","src":"7823:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":14598,"initialValue":{"arguments":[{"id":14595,"name":"tVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14582,"src":"7878:4:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14596,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14585,"src":"7884:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14594,"name":"_calculateAmountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16670,"src":"7855:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,uint256[] memory) view returns (uint256[] memory)"}},"id":14597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7855:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7823:72:61"},{"assignments":[14603],"declarations":[{"constant":false,"id":14603,"mutability":"mutable","name":"amounts","nameLocation":"7923:7:61","nodeType":"VariableDeclaration","scope":14689,"src":"7906:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14601,"name":"uint256","nodeType":"ElementaryTypeName","src":"7906:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14602,"nodeType":"ArrayTypeName","src":"7906:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":14610,"initialValue":{"arguments":[{"expression":{"id":14607,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"7947:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":14608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7958:6:61","memberName":"length","nodeType":"MemberAccess","src":"7947:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7933:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":14604,"name":"uint256","nodeType":"ElementaryTypeName","src":"7937:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14605,"nodeType":"ArrayTypeName","src":"7937:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":14609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7933:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7906:59:61"},{"assignments":[14612],"declarations":[{"constant":false,"id":14612,"mutability":"mutable","name":"totalAddedLiquidity","nameLocation":"7984:19:61","nodeType":"VariableDeclaration","scope":14689,"src":"7976:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14611,"name":"uint256","nodeType":"ElementaryTypeName","src":"7976:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14616,"initialValue":{"arguments":[{"id":14614,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"8036:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14613,"name":"_calculateTotalAddedLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16604,"src":"8006:29:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory) view returns (uint256)"}},"id":14615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8006:43:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7976:73:61"},{"expression":{"id":14619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14617,"name":"totalAddedLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14612,"src":"8062:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"id":14618,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14176,"src":"8085:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8062:36:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14620,"nodeType":"ExpressionStatement","src":"8062:36:61"},{"body":{"id":14668,"nodeType":"Block","src":"8161:241:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14632,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"8180:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14634,"indexExpression":{"id":14633,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"8193:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8180:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8198:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8180:19:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14667,"nodeType":"IfStatement","src":"8176:215:61","trueBody":{"id":14666,"nodeType":"Block","src":"8201:190:61","statements":[{"expression":{"id":14646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14637,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14603,"src":"8220:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14639,"indexExpression":{"id":14638,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"8228:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8220:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14641,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"8253:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":14642,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"8256:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14644,"indexExpression":{"id":14643,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"8269:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8256:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14640,"name":"_calculateLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16709,"src":"8233:19:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":14645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8233:39:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8220:52:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14647,"nodeType":"ExpressionStatement","src":"8220:52:61"},{"expression":{"arguments":[{"expression":{"id":14655,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8332:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8336:6:61","memberName":"sender","nodeType":"MemberAccess","src":"8332:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14659,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8352:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":14658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8344:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14657,"name":"address","nodeType":"ElementaryTypeName","src":"8344:7:61","typeDescriptions":{}}},"id":14660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8344:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":14661,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"8359:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14663,"indexExpression":{"id":14662,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"8372:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8359:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":14649,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"8298:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":14651,"indexExpression":{"id":14650,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"8309:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8298:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":14652,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8312:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"8298:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14648,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8291:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":14653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8291:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":14654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8319:12:61","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"8291:40:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":14664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8291:84:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14665,"nodeType":"ExpressionStatement","src":"8291:84:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14625,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"8131:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14626,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"8135:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8148:6:61","memberName":"length","nodeType":"MemberAccess","src":"8135:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8131:23:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14669,"initializationExpression":{"assignments":[14622],"declarations":[{"constant":false,"id":14622,"mutability":"mutable","name":"i","nameLocation":"8124:1:61","nodeType":"VariableDeclaration","scope":14669,"src":"8116:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14621,"name":"uint256","nodeType":"ElementaryTypeName","src":"8116:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14624,"initialValue":{"hexValue":"30","id":14623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8128:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8116:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":14630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8156:3:61","subExpression":{"id":14629,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"8156:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14631,"nodeType":"ExpressionStatement","src":"8156:3:61"},"nodeType":"ForStatement","src":"8111:291:61"},{"expression":{"arguments":[{"id":14671,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14568,"src":"8420:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14672,"name":"totalAddedLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14612,"src":"8430:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14670,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"8414:5:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":14673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8414:36:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14674,"nodeType":"ExpressionStatement","src":"8414:36:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14675,"name":"_updateSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"8463:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8463:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14677,"nodeType":"ExpressionStatement","src":"8463:17:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14678,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[16884,1046],"referencedDeclaration":16884,"src":"8491:7:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8491:9:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14680,"nodeType":"ExpressionStatement","src":"8491:9:61"},{"eventCall":{"arguments":[{"expression":{"id":14682,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8536:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8540:6:61","memberName":"sender","nodeType":"MemberAccess","src":"8536:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14684,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"8548:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14681,"name":"WeightsRebalanced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4259,"src":"8518:17:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory)"}},"id":14685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8518:43:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14686,"nodeType":"EmitStatement","src":"8513:48:61"},{"expression":{"id":14687,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14603,"src":"8581:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":14574,"id":14688,"nodeType":"Return","src":"8574:14:61"}]},"documentation":{"id":14566,"nodeType":"StructuredDocumentation","src":"7183:385:61","text":" @dev Rebalances the weights of the pool by calculating the amounts to add for each token,\n transferring the calculated amounts from the user to the pool, minting the total added liquidity,\n updating the reserves, and emitting an event to indicate the rebalancing of weights.\n @param receiver The address to receive the minted liquidity tokens."},"functionSelector":"8de30f30","id":14690,"implemented":true,"kind":"function","modifiers":[],"name":"rebalanceAndDeposit","nameLocation":"7583:19:61","nodeType":"FunctionDefinition","overrides":{"id":14570,"nodeType":"OverrideSpecifier","overrides":[],"src":"7630:8:61"},"parameters":{"id":14569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14568,"mutability":"mutable","name":"receiver","nameLocation":"7611:8:61","nodeType":"VariableDeclaration","scope":14690,"src":"7603:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14567,"name":"address","nodeType":"ElementaryTypeName","src":"7603:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7602:18:61"},"returnParameters":{"id":14574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14690,"src":"7648:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14571,"name":"uint256","nodeType":"ElementaryTypeName","src":"7648:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14572,"nodeType":"ArrayTypeName","src":"7648:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7647:18:61"},"scope":16885,"src":"7574:1022:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4317],"body":{"id":14853,"nodeType":"Block","src":"9666:1196:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14717,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14693,"src":"9685:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9706:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9698:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14718,"name":"address","nodeType":"ElementaryTypeName","src":"9698:7:61","typeDescriptions":{}}},"id":14721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9698:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9685:23:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14723,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14695,"src":"9712:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9731:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9723:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14724,"name":"address","nodeType":"ElementaryTypeName","src":"9723:7:61","typeDescriptions":{}}},"id":14727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9723:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9712:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9685:48:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420746f6b656e2061646472657373","id":14730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9735:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743","typeString":"literal_string \"Invalid token address\""},"value":"Invalid token address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743","typeString":"literal_string \"Invalid token address\""}],"id":14716,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9677:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9677:82:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14732,"nodeType":"ExpressionStatement","src":"9677:82:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14734,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14693,"src":"9778:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":14735,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14695,"src":"9791:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9778:20:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742073776170207468652073616d6520746f6b656e","id":14737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9800:28:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_6f3b6914a8f4e42f0dc4d6fcf60d1470463793693c123b4b0782b9cd43668c23","typeString":"literal_string \"Cannot swap the same token\""},"value":"Cannot swap the same token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6f3b6914a8f4e42f0dc4d6fcf60d1470463793693c123b4b0782b9cd43668c23","typeString":"literal_string \"Cannot swap the same token\""}],"id":14733,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9770:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9770:59:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14739,"nodeType":"ExpressionStatement","src":"9770:59:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14741,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14697,"src":"9848:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9857:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9848:10:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e74206d7573742062652067726561746572207468616e207a65726f","id":14744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9860:34:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""},"value":"Amount must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""}],"id":14740,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9840:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9840:55:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14746,"nodeType":"ExpressionStatement","src":"9840:55:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14748,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14701,"src":"9914:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9934:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9926:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14749,"name":"address","nodeType":"ElementaryTypeName","src":"9926:7:61","typeDescriptions":{}}},"id":14752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9926:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9914:22:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642072656365697665722061646472657373","id":14754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9938:26:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_5cbb24ca678c0bc148b6d1d734942e230f1d3686258ae74c758d5ae27e1715ef","typeString":"literal_string \"Invalid receiver address\""},"value":"Invalid receiver address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5cbb24ca678c0bc148b6d1d734942e230f1d3686258ae74c758d5ae27e1715ef","typeString":"literal_string \"Invalid receiver address\""}],"id":14747,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9906:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9906:59:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14756,"nodeType":"ExpressionStatement","src":"9906:59:61"},{"assignments":[14758],"declarations":[{"constant":false,"id":14758,"mutability":"mutable","name":"transferInSuccess","nameLocation":"9983:17:61","nodeType":"VariableDeclaration","scope":14853,"src":"9978:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14757,"name":"bool","nodeType":"ElementaryTypeName","src":"9978:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":14771,"initialValue":{"arguments":[{"expression":{"id":14763,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10034:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10038:6:61","memberName":"sender","nodeType":"MemberAccess","src":"10034:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14767,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10054:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":14766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10046:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14765,"name":"address","nodeType":"ElementaryTypeName","src":"10046:7:61","typeDescriptions":{}}},"id":14768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10046:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14769,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14697,"src":"10061:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":14760,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14693,"src":"10010:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14759,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10003:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":14761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10003:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":14762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10021:12:61","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"10003:30:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":14770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10003:65:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9978:90:61"},{"expression":{"arguments":[{"id":14773,"name":"transferInSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14758,"src":"10087:17:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e207472616e73666572206661696c6564","id":14774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10106:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_74c7d57a908ebeca4ca501d4682067d5006fafb2a418959e98aa45be0419cba4","typeString":"literal_string \"Token transfer failed\""},"value":"Token transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_74c7d57a908ebeca4ca501d4682067d5006fafb2a418959e98aa45be0419cba4","typeString":"literal_string \"Token transfer failed\""}],"id":14772,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10079:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10079:51:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14776,"nodeType":"ExpressionStatement","src":"10079:51:61"},{"assignments":[14778],"declarations":[{"constant":false,"id":14778,"mutability":"mutable","name":"receivedAmount","nameLocation":"10151:14:61","nodeType":"VariableDeclaration","scope":14853,"src":"10143:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14777,"name":"uint256","nodeType":"ElementaryTypeName","src":"10143:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14784,"initialValue":{"arguments":[{"id":14780,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14693,"src":"10187:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14781,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14695,"src":"10198:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14782,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14697,"src":"10207:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14779,"name":"quotePotentialSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14961,"src":"10168:18:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":14783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10168:46:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10143:71:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14787,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14695,"src":"10249:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14786,"name":"getAssetReserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16208,"src":"10233:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10233:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":14789,"name":"receivedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"10261:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10233:42:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e74204c6971756964697479","id":14791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10277:24:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_85d32796faf4bbe37cfdb7e983d4048fee52ebcfc8d2f22a939ce47e85d98ae8","typeString":"literal_string \"Insufficient Liquidity\""},"value":"Insufficient Liquidity"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85d32796faf4bbe37cfdb7e983d4048fee52ebcfc8d2f22a939ce47e85d98ae8","typeString":"literal_string \"Insufficient Liquidity\""}],"id":14785,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10225:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10225:77:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14793,"nodeType":"ExpressionStatement","src":"10225:77:61"},{"expression":{"id":14798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14794,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14714,"src":"10315:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14796,"name":"receivedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"10330:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14795,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"10321:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":14797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10321:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10315:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14799,"nodeType":"ExpressionStatement","src":"10315:30:61"},{"expression":{"id":14804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14800,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14712,"src":"10356:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14801,"name":"receivedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"10368:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14802,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14714,"src":"10385:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10368:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10356:32:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14805,"nodeType":"ExpressionStatement","src":"10356:32:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14807,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14712,"src":"10407:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10419:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10407:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e7420746f2073656e64206d7573742062652067726561746572207468616e2030","id":14810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10422:39:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_293eab1376cea4527a492c75c5b4d240032b8920c86961428e65758e4fd3daec","typeString":"literal_string \"Amount to send must be greater than 0\""},"value":"Amount to send must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_293eab1376cea4527a492c75c5b4d240032b8920c86961428e65758e4fd3daec","typeString":"literal_string \"Amount to send must be greater than 0\""}],"id":14806,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10399:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10399:63:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14812,"nodeType":"ExpressionStatement","src":"10399:63:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14814,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14712,"src":"10481:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":14815,"name":"minAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14699,"src":"10494:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10481:22:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e74206f7574206d7573742062652067726561746572207468616e206d696e20616d6f756e74","id":14817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10505:44:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_5590d0c003582064788189be9385d3fd358617fb2f790bf579ac35c799d59517","typeString":"literal_string \"Amount out must be greater than min amount\""},"value":"Amount out must be greater than min amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5590d0c003582064788189be9385d3fd358617fb2f790bf579ac35c799d59517","typeString":"literal_string \"Amount out must be greater than min amount\""}],"id":14813,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10473:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10473:77:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14819,"nodeType":"ExpressionStatement","src":"10473:77:61"},{"assignments":[14821],"declarations":[{"constant":false,"id":14821,"mutability":"mutable","name":"transferOutSuccess","nameLocation":"10568:18:61","nodeType":"VariableDeclaration","scope":14853,"src":"10563:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14820,"name":"bool","nodeType":"ElementaryTypeName","src":"10563:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":14829,"initialValue":{"arguments":[{"id":14826,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14701,"src":"10614:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14827,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14712,"src":"10624:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":14823,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14695,"src":"10596:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14822,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10589:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":14824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10589:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":14825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10605:8:61","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"10589:24:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":14828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10589:45:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10563:71:61"},{"expression":{"arguments":[{"id":14831,"name":"transferOutSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"10653:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e207472616e73666572206661696c6564","id":14832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10673:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_74c7d57a908ebeca4ca501d4682067d5006fafb2a418959e98aa45be0419cba4","typeString":"literal_string \"Token transfer failed\""},"value":"Token transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_74c7d57a908ebeca4ca501d4682067d5006fafb2a418959e98aa45be0419cba4","typeString":"literal_string \"Token transfer failed\""}],"id":14830,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10645:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10645:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14834,"nodeType":"ExpressionStatement","src":"10645:52:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14835,"name":"_updateSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"10710:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10710:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14837,"nodeType":"ExpressionStatement","src":"10710:17:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14838,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[16884,1046],"referencedDeclaration":16884,"src":"10738:7:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10738:9:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14840,"nodeType":"ExpressionStatement","src":"10738:9:61"},{"eventCall":{"arguments":[{"id":14842,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14701,"src":"10770:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14843,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14693,"src":"10780:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14844,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14695,"src":"10791:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14845,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14697,"src":"10800:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14846,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14712,"src":"10808:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14841,"name":"Swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4271,"src":"10765:4:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":14847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10765:53:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14848,"nodeType":"EmitStatement","src":"10760:58:61"},{"expression":{"components":[{"id":14849,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14712,"src":"10839:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14850,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14714,"src":"10850:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10838:16:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":14715,"id":14852,"nodeType":"Return","src":"10831:23:61"}]},"documentation":{"id":14691,"nodeType":"StructuredDocumentation","src":"8604:785:61","text":" @dev Swaps `amount` of `fromToken` to `toToken` and transfers the received amount to `receiver`.\n Requirements:\n - `fromToken` and `toToken` must be different tokens.\n - `amount` must be greater than zero.\n - Sufficient liquidity of `toToken` must be available in the contract.\n Emits a `Swap` event with the details of the swap.\n Updates the reserves after the swap.\n @param fromToken The address of the token to swap from.\n @param toToken The address of the token to swap to.\n @param amount The amount of `fromToken` to swap.\n @param receiver The address to receive the swapped tokens.\n @return amountOut The amount of `toToken` received after the swap."},"functionSelector":"9908fc8b","id":14854,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":14707,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14703,"src":"9602:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14708,"kind":"modifierInvocation","modifierName":{"id":14706,"name":"ensure","nameLocations":["9595:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":14199,"src":"9595:6:61"},"nodeType":"ModifierInvocation","src":"9595:16:61"},{"id":14710,"kind":"modifierInvocation","modifierName":{"id":14709,"name":"nonReentrant","nameLocations":["9612:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"9612:12:61"},"nodeType":"ModifierInvocation","src":"9612:12:61"}],"name":"swap","nameLocation":"9404:4:61","nodeType":"FunctionDefinition","overrides":{"id":14705,"nodeType":"OverrideSpecifier","overrides":[],"src":"9586:8:61"},"parameters":{"id":14704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14693,"mutability":"mutable","name":"fromToken","nameLocation":"9427:9:61","nodeType":"VariableDeclaration","scope":14854,"src":"9419:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14692,"name":"address","nodeType":"ElementaryTypeName","src":"9419:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14695,"mutability":"mutable","name":"toToken","nameLocation":"9455:7:61","nodeType":"VariableDeclaration","scope":14854,"src":"9447:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14694,"name":"address","nodeType":"ElementaryTypeName","src":"9447:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14697,"mutability":"mutable","name":"amount","nameLocation":"9481:6:61","nodeType":"VariableDeclaration","scope":14854,"src":"9473:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14696,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14699,"mutability":"mutable","name":"minAmount","nameLocation":"9506:9:61","nodeType":"VariableDeclaration","scope":14854,"src":"9498:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14698,"name":"uint256","nodeType":"ElementaryTypeName","src":"9498:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14701,"mutability":"mutable","name":"receiver","nameLocation":"9534:8:61","nodeType":"VariableDeclaration","scope":14854,"src":"9526:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14700,"name":"address","nodeType":"ElementaryTypeName","src":"9526:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14703,"mutability":"mutable","name":"deadline","nameLocation":"9561:8:61","nodeType":"VariableDeclaration","scope":14854,"src":"9553:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14702,"name":"uint256","nodeType":"ElementaryTypeName","src":"9553:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9408:168:61"},"returnParameters":{"id":14715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14712,"mutability":"mutable","name":"amountOut","nameLocation":"9642:9:61","nodeType":"VariableDeclaration","scope":14854,"src":"9634:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14711,"name":"uint256","nodeType":"ElementaryTypeName","src":"9634:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14714,"mutability":"mutable","name":"fee","nameLocation":"9661:3:61","nodeType":"VariableDeclaration","scope":14854,"src":"9653:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14713,"name":"uint256","nodeType":"ElementaryTypeName","src":"9653:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9633:32:61"},"scope":16885,"src":"9395:1467:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4328],"body":{"id":14960,"nodeType":"Block","src":"11551:902:61","statements":[{"assignments":[14868],"declarations":[{"constant":false,"id":14868,"mutability":"mutable","name":"amountOut","nameLocation":"11570:9:61","nodeType":"VariableDeclaration","scope":14960,"src":"11562:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14867,"name":"uint256","nodeType":"ElementaryTypeName","src":"11562:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14874,"initialValue":{"arguments":[{"id":14870,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14857,"src":"11595:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14871,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14859,"src":"11606:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14872,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14861,"src":"11615:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14869,"name":"getAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15858,"src":"11582:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":14873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11582:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11562:60:61"},{"assignments":[14876],"declarations":[{"constant":false,"id":14876,"mutability":"mutable","name":"slippageFrom","nameLocation":"11643:12:61","nodeType":"VariableDeclaration","scope":14960,"src":"11635:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14875,"name":"uint256","nodeType":"ElementaryTypeName","src":"11635:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14880,"initialValue":{"arguments":[{"id":14878,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14857,"src":"11670:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14877,"name":"getSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14999,"src":"11658:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11658:22:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11635:45:61"},{"assignments":[14882],"declarations":[{"constant":false,"id":14882,"mutability":"mutable","name":"slippageTo","nameLocation":"11699:10:61","nodeType":"VariableDeclaration","scope":14960,"src":"11691:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14881,"name":"uint256","nodeType":"ElementaryTypeName","src":"11691:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14886,"initialValue":{"arguments":[{"id":14884,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14859,"src":"11724:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14883,"name":"getSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14999,"src":"11712:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11712:20:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11691:41:61"},{"assignments":[14888],"declarations":[{"constant":false,"id":14888,"mutability":"mutable","name":"fromTokenWeight","nameLocation":"11753:15:61","nodeType":"VariableDeclaration","scope":14960,"src":"11745:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14887,"name":"uint256","nodeType":"ElementaryTypeName","src":"11745:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14892,"initialValue":{"arguments":[{"id":14890,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14857,"src":"11786:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14889,"name":"getTokenWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15183,"src":"11771:14:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11771:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11745:51:61"},{"assignments":[14894],"declarations":[{"constant":false,"id":14894,"mutability":"mutable","name":"toTokenWeight","nameLocation":"11815:13:61","nodeType":"VariableDeclaration","scope":14960,"src":"11807:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14893,"name":"uint256","nodeType":"ElementaryTypeName","src":"11807:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14898,"initialValue":{"arguments":[{"id":14896,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14859,"src":"11846:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14895,"name":"getTokenWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15183,"src":"11831:14:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11831:23:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11807:47:61"},{"assignments":[14900],"declarations":[{"constant":false,"id":14900,"mutability":"mutable","name":"slippageFromAmount","nameLocation":"11875:18:61","nodeType":"VariableDeclaration","scope":14960,"src":"11867:26:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14899,"name":"uint256","nodeType":"ElementaryTypeName","src":"11867:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14908,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14901,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"11898:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14902,"name":"slippageFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14876,"src":"11910:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11898:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11897:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11896:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":14906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11927:5:61","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"11896:36:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11867:65:61"},{"assignments":[14910],"declarations":[{"constant":false,"id":14910,"mutability":"mutable","name":"slippageToAmount","nameLocation":"11951:16:61","nodeType":"VariableDeclaration","scope":14960,"src":"11943:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14909,"name":"uint256","nodeType":"ElementaryTypeName","src":"11943:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14917,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14911,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"11971:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14912,"name":"slippageTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14882,"src":"11983:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11971:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14914,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11970:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":14915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11997:5:61","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"11970:32:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11943:59:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14918,"name":"fromTokenWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14888,"src":"12019:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":14920,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14857,"src":"12058:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14919,"name":"getDeviationForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15228,"src":"12037:20:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12037:31:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12019:49:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14936,"nodeType":"Block","src":"12145:69:61","statements":[{"expression":{"id":14934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14930,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12160:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14931,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12172:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14932,"name":"slippageFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14900,"src":"12184:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12172:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12160:42:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14935,"nodeType":"ExpressionStatement","src":"12160:42:61"}]},"id":14937,"nodeType":"IfStatement","src":"12015:199:61","trueBody":{"id":14929,"nodeType":"Block","src":"12070:69:61","statements":[{"expression":{"id":14927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14923,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12085:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14924,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12097:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14925,"name":"slippageFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14900,"src":"12109:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12097:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12085:42:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14928,"nodeType":"ExpressionStatement","src":"12085:42:61"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14938,"name":"toTokenWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14894,"src":"12230:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":14940,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14859,"src":"12267:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14939,"name":"getDeviationForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15228,"src":"12246:20:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12246:29:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12230:45:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14956,"nodeType":"Block","src":"12350:67:61","statements":[{"expression":{"id":14954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14950,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12365:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14951,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12377:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14952,"name":"slippageToAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14910,"src":"12389:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12377:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12365:40:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14955,"nodeType":"ExpressionStatement","src":"12365:40:61"}]},"id":14957,"nodeType":"IfStatement","src":"12226:191:61","trueBody":{"id":14949,"nodeType":"Block","src":"12277:67:61","statements":[{"expression":{"id":14947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14943,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12292:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14944,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12304:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14945,"name":"slippageToAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14910,"src":"12316:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12304:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12292:40:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14948,"nodeType":"ExpressionStatement","src":"12292:40:61"}]}},{"expression":{"id":14958,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"12436:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14866,"id":14959,"nodeType":"Return","src":"12429:16:61"}]},"documentation":{"id":14855,"nodeType":"StructuredDocumentation","src":"10870:522:61","text":" @dev Calculates the potential amount of `toToken` that can be obtained by swapping `amount` of `fromToken`.\n This function takes into account the slippage and token weights to provide an accurate estimation.\n @param fromToken The address of the token being swapped from.\n @param toToken The address of the token being swapped to.\n @param amount The amount of `fromToken` being swapped.\n @return The potential amount of `toToken` that can be obtained."},"functionSelector":"43c2e2f5","id":14961,"implemented":true,"kind":"function","modifiers":[],"name":"quotePotentialSwap","nameLocation":"11407:18:61","nodeType":"FunctionDefinition","overrides":{"id":14863,"nodeType":"OverrideSpecifier","overrides":[],"src":"11524:8:61"},"parameters":{"id":14862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14857,"mutability":"mutable","name":"fromToken","nameLocation":"11444:9:61","nodeType":"VariableDeclaration","scope":14961,"src":"11436:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14856,"name":"address","nodeType":"ElementaryTypeName","src":"11436:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14859,"mutability":"mutable","name":"toToken","nameLocation":"11472:7:61","nodeType":"VariableDeclaration","scope":14961,"src":"11464:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14858,"name":"address","nodeType":"ElementaryTypeName","src":"11464:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14861,"mutability":"mutable","name":"amount","nameLocation":"11498:6:61","nodeType":"VariableDeclaration","scope":14961,"src":"11490:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14860,"name":"uint256","nodeType":"ElementaryTypeName","src":"11490:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11425:86:61"},"returnParameters":{"id":14866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14961,"src":"11542:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14864,"name":"uint256","nodeType":"ElementaryTypeName","src":"11542:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11541:9:61"},"scope":16885,"src":"11398:1055:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4335],"body":{"id":14998,"nodeType":"Block","src":"12715:244:61","statements":[{"body":{"id":14994,"nodeType":"Block","src":"12774:124:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":14981,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"12793:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":14983,"indexExpression":{"id":14982,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14971,"src":"12804:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12793:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":14984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12807:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"12793:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14985,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14964,"src":"12816:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12793:28:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14993,"nodeType":"IfStatement","src":"12789:98:61","trueBody":{"id":14992,"nodeType":"Block","src":"12823:64:61","statements":[{"expression":{"expression":{"baseExpression":{"id":14987,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"12849:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":14989,"indexExpression":{"id":14988,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14971,"src":"12860:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12849:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":14990,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12863:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"12849:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14969,"id":14991,"nodeType":"Return","src":"12842:29:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14974,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14971,"src":"12746:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14975,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"12750:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":14976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12761:6:61","memberName":"length","nodeType":"MemberAccess","src":"12750:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12746:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14995,"initializationExpression":{"assignments":[14971],"declarations":[{"constant":false,"id":14971,"mutability":"mutable","name":"i","nameLocation":"12739:1:61","nodeType":"VariableDeclaration","scope":14995,"src":"12731:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14970,"name":"uint256","nodeType":"ElementaryTypeName","src":"12731:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14973,"initialValue":{"hexValue":"30","id":14972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12743:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12731:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":14979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12769:3:61","subExpression":{"id":14978,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14971,"src":"12769:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14980,"nodeType":"ExpressionStatement","src":"12769:3:61"},"nodeType":"ForStatement","src":"12726:172:61"},{"expression":{"hexValue":"30","id":14996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12915:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":14969,"id":14997,"nodeType":"Return","src":"12908:8:61"}]},"documentation":{"id":14962,"nodeType":"StructuredDocumentation","src":"12461:173:61","text":" @dev Restituisce lo slippage attuale per un dato token.\n @param token The address of the token.\n @return Lo slippage attuale per il token."},"functionSelector":"12899068","id":14999,"implemented":true,"kind":"function","modifiers":[],"name":"getSlippage","nameLocation":"12649:11:61","nodeType":"FunctionDefinition","overrides":{"id":14966,"nodeType":"OverrideSpecifier","overrides":[],"src":"12688:8:61"},"parameters":{"id":14965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14964,"mutability":"mutable","name":"token","nameLocation":"12669:5:61","nodeType":"VariableDeclaration","scope":14999,"src":"12661:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14963,"name":"address","nodeType":"ElementaryTypeName","src":"12661:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12660:15:61"},"returnParameters":{"id":14969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14968,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14999,"src":"12706:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14967,"name":"uint256","nodeType":"ElementaryTypeName","src":"12706:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12705:9:61"},"scope":16885,"src":"12640:319:61","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":15144,"nodeType":"Block","src":"13196:1227:61","statements":[{"assignments":[15007,15010],"declarations":[{"constant":false,"id":15007,"mutability":"mutable","name":"directions","nameLocation":"13222:10:61","nodeType":"VariableDeclaration","scope":15144,"src":"13208:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":15005,"name":"bool","nodeType":"ElementaryTypeName","src":"13208:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15006,"nodeType":"ArrayTypeName","src":"13208:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"},{"constant":false,"id":15010,"mutability":"mutable","name":"deviations","nameLocation":"13251:10:61","nodeType":"VariableDeclaration","scope":15144,"src":"13234:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15008,"name":"uint256","nodeType":"ElementaryTypeName","src":"13234:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15009,"nodeType":"ArrayTypeName","src":"13234:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":15013,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15011,"name":"getDeviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15982,"src":"13265:13:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (bool[] memory,uint256[] memory)"}},"id":15012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13265:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"13207:73:61"},{"assignments":[15015],"declarations":[{"constant":false,"id":15015,"mutability":"mutable","name":"sdf","nameLocation":"13301:3:61","nodeType":"VariableDeclaration","scope":15144,"src":"13293:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15014,"name":"uint256","nodeType":"ElementaryTypeName","src":"13293:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15017,"initialValue":{"hexValue":"313030","id":15016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13307:3:61","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"VariableDeclarationStatement","src":"13293:17:61"},{"assignments":[15019],"declarations":[{"constant":false,"id":15019,"mutability":"mutable","name":"slippageLimit","nameLocation":"13329:13:61","nodeType":"VariableDeclaration","scope":15144,"src":"13321:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15018,"name":"uint256","nodeType":"ElementaryTypeName","src":"13321:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15021,"initialValue":{"hexValue":"3130","id":15020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13345:2:61","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"VariableDeclarationStatement","src":"13321:26:61"},{"body":{"id":15142,"nodeType":"Block","src":"13408:1008:61","statements":[{"assignments":[15034],"declarations":[{"constant":false,"id":15034,"mutability":"mutable","name":"previousSlippage","nameLocation":"13431:16:61","nodeType":"VariableDeclaration","scope":15142,"src":"13423:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15033,"name":"uint256","nodeType":"ElementaryTypeName","src":"13423:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15039,"initialValue":{"expression":{"baseExpression":{"id":15035,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"13450:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15037,"indexExpression":{"id":15036,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13461:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13450:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13464:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"13450:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13423:49:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15040,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15010,"src":"13493:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15042,"indexExpression":{"id":15041,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13504:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13493:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":15043,"name":"sdf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15015,"src":"13510:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13493:20:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15054,"nodeType":"IfStatement","src":"13489:126:61","trueBody":{"id":15053,"nodeType":"Block","src":"13515:100:61","statements":[{"expression":{"id":15050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":15045,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"13534:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15047,"indexExpression":{"id":15046,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13545:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13534:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13548:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"13534:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15049,"name":"slippageLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15019,"src":"13559:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13534:38:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15051,"nodeType":"ExpressionStatement","src":"13534:38:61"},{"id":15052,"nodeType":"Continue","src":"13591:8:61"}]}},{"condition":{"baseExpression":{"id":15055,"name":"directions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15007,"src":"13635:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":15057,"indexExpression":{"id":15056,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13646:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13635:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15125,"nodeType":"Block","src":"13840:375:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":15080,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"13863:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15082,"indexExpression":{"id":15081,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13874:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13863:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13877:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"13863:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15084,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15010,"src":"13888:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15086,"indexExpression":{"id":15085,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13899:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13888:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15087,"name":"sdf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15015,"src":"13904:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13888:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13863:44:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15123,"nodeType":"Block","src":"14112:88:61","statements":[{"expression":{"id":15121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":15112,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"14135:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15114,"indexExpression":{"id":15113,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"14146:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14135:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14149:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"14135:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15116,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15010,"src":"14161:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15118,"indexExpression":{"id":15117,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"14172:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14161:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15119,"name":"sdf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15015,"src":"14177:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14161:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14135:45:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15122,"nodeType":"ExpressionStatement","src":"14135:45:61"}]},"id":15124,"nodeType":"IfStatement","src":"13859:341:61","trueBody":{"id":15111,"nodeType":"Block","src":"13909:197:61","statements":[{"expression":{"id":15099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":15090,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"13932:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15092,"indexExpression":{"id":15091,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13943:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13932:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13946:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"13932:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15094,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15010,"src":"13958:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15096,"indexExpression":{"id":15095,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13969:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13958:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15097,"name":"sdf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15015,"src":"13974:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13958:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13932:45:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15100,"nodeType":"ExpressionStatement","src":"13932:45:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":15102,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"14008:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15104,"indexExpression":{"id":15103,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"14019:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14008:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14022:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"14008:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":15106,"name":"previousSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15034,"src":"14034:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14008:42:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e646572666c6f772064656372656d656e74696e6720736c697070616765","id":15108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14052:33:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_7fe042c7e90969a67f580740cd6d07f084ba832097aca9eaaa282ad95462461f","typeString":"literal_string \"Underflow decrementing slippage\""},"value":"Underflow decrementing slippage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7fe042c7e90969a67f580740cd6d07f084ba832097aca9eaaa282ad95462461f","typeString":"literal_string \"Underflow decrementing slippage\""}],"id":15101,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14000:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14000:86:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15110,"nodeType":"ExpressionStatement","src":"14000:86:61"}]}}]},"id":15126,"nodeType":"IfStatement","src":"13631:584:61","trueBody":{"id":15079,"nodeType":"Block","src":"13650:184:61","statements":[{"expression":{"id":15067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":15058,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"13669:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15060,"indexExpression":{"id":15059,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13680:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13669:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13683:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"13669:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15062,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15010,"src":"13695:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15064,"indexExpression":{"id":15063,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13706:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13695:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15065,"name":"sdf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15015,"src":"13711:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13695:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13669:45:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15068,"nodeType":"ExpressionStatement","src":"13669:45:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":15070,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"13741:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15072,"indexExpression":{"id":15071,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13752:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13741:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13755:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"13741:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15074,"name":"previousSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15034,"src":"13767:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13741:42:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f766572666c6f7720696e6372656d656e74696e6720736c697070616765","id":15076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13785:32:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_9500bef01f061c69a5831abd395429bc0d4bf975a9340af0622098e5d0422cc6","typeString":"literal_string \"Overflow incrementing slippage\""},"value":"Overflow incrementing slippage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9500bef01f061c69a5831abd395429bc0d4bf975a9340af0622098e5d0422cc6","typeString":"literal_string \"Overflow incrementing slippage\""}],"id":15069,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13733:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13733:85:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15078,"nodeType":"ExpressionStatement","src":"13733:85:61"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":15127,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"14292:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15129,"indexExpression":{"id":15128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"14303:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14292:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14306:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"14292:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":15131,"name":"slippageLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15019,"src":"14317:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14292:38:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15141,"nodeType":"IfStatement","src":"14288:117:61","trueBody":{"id":15140,"nodeType":"Block","src":"14332:73:61","statements":[{"expression":{"id":15138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":15133,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"14351:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15135,"indexExpression":{"id":15134,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"14362:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14351:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14365:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"14351:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15137,"name":"slippageLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15019,"src":"14376:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14351:38:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15139,"nodeType":"ExpressionStatement","src":"14351:38:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15026,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13380:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15027,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"13384:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13395:6:61","memberName":"length","nodeType":"MemberAccess","src":"13384:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13380:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15143,"initializationExpression":{"assignments":[15023],"declarations":[{"constant":false,"id":15023,"mutability":"mutable","name":"i","nameLocation":"13373:1:61","nodeType":"VariableDeclaration","scope":15143,"src":"13365:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15022,"name":"uint256","nodeType":"ElementaryTypeName","src":"13365:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15025,"initialValue":{"hexValue":"30","id":15024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13377:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13365:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13403:3:61","subExpression":{"id":15030,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15023,"src":"13403:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15032,"nodeType":"ExpressionStatement","src":"13403:3:61"},"nodeType":"ForStatement","src":"13360:1056:61"}]},"documentation":{"id":15000,"nodeType":"StructuredDocumentation","src":"12967:187:61","text":" @dev Updates the slippage for each asset in the pool based on the deviations.\n @notice This function is internal and should only be called within the contract."},"id":15145,"implemented":true,"kind":"function","modifiers":[],"name":"_updateSlippage","nameLocation":"13169:15:61","nodeType":"FunctionDefinition","parameters":{"id":15001,"nodeType":"ParameterList","parameters":[],"src":"13184:2:61"},"returnParameters":{"id":15002,"nodeType":"ParameterList","parameters":[],"src":"13196:0:61"},"scope":16885,"src":"13160:1263:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4342],"body":{"id":15182,"nodeType":"Block","src":"14671:238:61","statements":[{"body":{"id":15178,"nodeType":"Block","src":"14730:122:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":15165,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"14749:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15167,"indexExpression":{"id":15166,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15155,"src":"14760:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14749:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14763:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"14749:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":15169,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15148,"src":"14772:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14749:28:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15177,"nodeType":"IfStatement","src":"14745:96:61","trueBody":{"id":15176,"nodeType":"Block","src":"14779:62:61","statements":[{"expression":{"expression":{"baseExpression":{"id":15171,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"14805:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15173,"indexExpression":{"id":15172,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15155,"src":"14816:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14805:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14819:6:61","memberName":"weight","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"14805:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15153,"id":15175,"nodeType":"Return","src":"14798:27:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15158,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15155,"src":"14702:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15159,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"14706:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14717:6:61","memberName":"length","nodeType":"MemberAccess","src":"14706:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14702:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15179,"initializationExpression":{"assignments":[15155],"declarations":[{"constant":false,"id":15155,"mutability":"mutable","name":"i","nameLocation":"14695:1:61","nodeType":"VariableDeclaration","scope":15179,"src":"14687:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15154,"name":"uint256","nodeType":"ElementaryTypeName","src":"14687:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15157,"initialValue":{"hexValue":"30","id":15156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14699:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14687:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14725:3:61","subExpression":{"id":15162,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15155,"src":"14725:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15164,"nodeType":"ExpressionStatement","src":"14725:3:61"},"nodeType":"ForStatement","src":"14682:170:61"},{"expression":{"hexValue":"30","id":15180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14869:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15153,"id":15181,"nodeType":"Return","src":"14862:8:61"}]},"documentation":{"id":15146,"nodeType":"StructuredDocumentation","src":"14431:156:61","text":" @dev Returns the weight of a token in the pool.\n @param token The address of the token.\n @return The weight of the token."},"functionSelector":"250aa683","id":15183,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenWeight","nameLocation":"14602:14:61","nodeType":"FunctionDefinition","overrides":{"id":15150,"nodeType":"OverrideSpecifier","overrides":[],"src":"14644:8:61"},"parameters":{"id":15149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15148,"mutability":"mutable","name":"token","nameLocation":"14625:5:61","nodeType":"VariableDeclaration","scope":15183,"src":"14617:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15147,"name":"address","nodeType":"ElementaryTypeName","src":"14617:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14616:15:61"},"returnParameters":{"id":15153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15183,"src":"14662:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15151,"name":"uint256","nodeType":"ElementaryTypeName","src":"14662:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14661:9:61"},"scope":16885,"src":"14593:316:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4349],"body":{"id":15227,"nodeType":"Block","src":"15171:260:61","statements":[{"assignments":[null,15196],"declarations":[null,{"constant":false,"id":15196,"mutability":"mutable","name":"deviations","nameLocation":"15202:10:61","nodeType":"VariableDeclaration","scope":15227,"src":"15185:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15194,"name":"uint256","nodeType":"ElementaryTypeName","src":"15185:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15195,"nodeType":"ArrayTypeName","src":"15185:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":15199,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15197,"name":"getDeviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15982,"src":"15216:13:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (bool[] memory,uint256[] memory)"}},"id":15198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15216:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"15182:49:61"},{"body":{"id":15223,"nodeType":"Block","src":"15290:115:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":15211,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"15309:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15213,"indexExpression":{"id":15212,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15201,"src":"15320:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15309:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15323:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"15309:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":15215,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15186,"src":"15332:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15309:28:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15222,"nodeType":"IfStatement","src":"15305:89:61","trueBody":{"id":15221,"nodeType":"Block","src":"15339:55:61","statements":[{"expression":{"baseExpression":{"id":15217,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15196,"src":"15365:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15219,"indexExpression":{"id":15218,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15201,"src":"15376:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15365:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15191,"id":15220,"nodeType":"Return","src":"15358:20:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15204,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15201,"src":"15262:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15205,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"15266:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15277:6:61","memberName":"length","nodeType":"MemberAccess","src":"15266:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15262:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15224,"initializationExpression":{"assignments":[15201],"declarations":[{"constant":false,"id":15201,"mutability":"mutable","name":"i","nameLocation":"15255:1:61","nodeType":"VariableDeclaration","scope":15224,"src":"15247:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15200,"name":"uint256","nodeType":"ElementaryTypeName","src":"15247:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15203,"initialValue":{"hexValue":"30","id":15202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15259:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15247:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15285:3:61","subExpression":{"id":15208,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15201,"src":"15285:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15210,"nodeType":"ExpressionStatement","src":"15285:3:61"},"nodeType":"ForStatement","src":"15242:163:61"},{"expression":{"hexValue":"30","id":15225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15422:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15191,"id":15226,"nodeType":"Return","src":"15415:8:61"}]},"documentation":{"id":15184,"nodeType":"StructuredDocumentation","src":"14917:164:61","text":" @dev Returns the deviation for a token in the pool.\n @param token The address of the token.\n @return The deviation for the token."},"functionSelector":"89b3179b","id":15228,"implemented":true,"kind":"function","modifiers":[],"name":"getDeviationForToken","nameLocation":"15096:20:61","nodeType":"FunctionDefinition","overrides":{"id":15188,"nodeType":"OverrideSpecifier","overrides":[],"src":"15144:8:61"},"parameters":{"id":15187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15186,"mutability":"mutable","name":"token","nameLocation":"15125:5:61","nodeType":"VariableDeclaration","scope":15228,"src":"15117:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15185,"name":"address","nodeType":"ElementaryTypeName","src":"15117:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15116:15:61"},"returnParameters":{"id":15191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15190,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15228,"src":"15162:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15189,"name":"uint256","nodeType":"ElementaryTypeName","src":"15162:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15161:9:61"},"scope":16885,"src":"15087:344:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4355],"body":{"id":15272,"nodeType":"Block","src":"15666:229:61","statements":[{"assignments":[15240],"declarations":[{"constant":false,"id":15240,"mutability":"mutable","name":"slippages","nameLocation":"15694:9:61","nodeType":"VariableDeclaration","scope":15272,"src":"15677:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15238,"name":"uint256","nodeType":"ElementaryTypeName","src":"15677:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15239,"nodeType":"ArrayTypeName","src":"15677:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":15247,"initialValue":{"arguments":[{"expression":{"id":15244,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"15720:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15731:6:61","memberName":"length","nodeType":"MemberAccess","src":"15720:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15706:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":15241,"name":"uint256","nodeType":"ElementaryTypeName","src":"15710:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15242,"nodeType":"ArrayTypeName","src":"15710:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":15246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15706:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"15677:61:61"},{"body":{"id":15268,"nodeType":"Block","src":"15797:64:61","statements":[{"expression":{"id":15266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15259,"name":"slippages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15240,"src":"15812:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15261,"indexExpression":{"id":15260,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"15822:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15812:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":15262,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"15827:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15264,"indexExpression":{"id":15263,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"15838:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15827:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15841:8:61","memberName":"slippage","nodeType":"MemberAccess","referencedDeclaration":4249,"src":"15827:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15812:37:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15267,"nodeType":"ExpressionStatement","src":"15812:37:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15252,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"15769:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15253,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"15773:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15784:6:61","memberName":"length","nodeType":"MemberAccess","src":"15773:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15769:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15269,"initializationExpression":{"assignments":[15249],"declarations":[{"constant":false,"id":15249,"mutability":"mutable","name":"i","nameLocation":"15762:1:61","nodeType":"VariableDeclaration","scope":15269,"src":"15754:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15248,"name":"uint256","nodeType":"ElementaryTypeName","src":"15754:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15251,"initialValue":{"hexValue":"30","id":15250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15766:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15754:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15792:3:61","subExpression":{"id":15256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"15792:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15258,"nodeType":"ExpressionStatement","src":"15792:3:61"},"nodeType":"ForStatement","src":"15749:112:61"},{"expression":{"id":15270,"name":"slippages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15240,"src":"15878:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":15235,"id":15271,"nodeType":"Return","src":"15871:16:61"}]},"documentation":{"id":15229,"nodeType":"StructuredDocumentation","src":"15439:142:61","text":" @dev Returns an array of slippage parameters for each token in the pool.\n @return An array of slippage parameters."},"functionSelector":"7ff1c179","id":15273,"implemented":true,"kind":"function","modifiers":[],"name":"getSlippageParams","nameLocation":"15596:17:61","nodeType":"FunctionDefinition","overrides":{"id":15231,"nodeType":"OverrideSpecifier","overrides":[],"src":"15630:8:61"},"parameters":{"id":15230,"nodeType":"ParameterList","parameters":[],"src":"15613:2:61"},"returnParameters":{"id":15235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15273,"src":"15648:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15232,"name":"uint256","nodeType":"ElementaryTypeName","src":"15648:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15233,"nodeType":"ArrayTypeName","src":"15648:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"15647:18:61"},"scope":16885,"src":"15587:308:61","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4367],"body":{"id":15476,"nodeType":"Block","src":"16293:1532:61","statements":[{"assignments":[15295],"declarations":[{"constant":false,"id":15295,"mutability":"mutable","name":"totalSupply","nameLocation":"16312:11:61","nodeType":"VariableDeclaration","scope":15476,"src":"16304:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15294,"name":"uint256","nodeType":"ElementaryTypeName","src":"16304:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15298,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15296,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"16326:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16326:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16304:35:61"},{"assignments":[15300],"declarations":[{"constant":false,"id":15300,"mutability":"mutable","name":"totalValue","nameLocation":"16358:10:61","nodeType":"VariableDeclaration","scope":15476,"src":"16350:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15299,"name":"uint256","nodeType":"ElementaryTypeName","src":"16350:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15302,"initialValue":{"hexValue":"30","id":15301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16371:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16350:22:61"},{"assignments":[15307],"declarations":[{"constant":false,"id":15307,"mutability":"mutable","name":"_reserves","nameLocation":"16400:9:61","nodeType":"VariableDeclaration","scope":15476,"src":"16383:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15305,"name":"uint256","nodeType":"ElementaryTypeName","src":"16383:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15306,"nodeType":"ArrayTypeName","src":"16383:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":15310,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15308,"name":"getReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16168,"src":"16412:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256[] memory)"}},"id":15309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16412:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16383:42:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15312,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"16444:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16455:6:61","memberName":"length","nodeType":"MemberAccess","src":"16444:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15314,"name":"_reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"16465:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16475:6:61","memberName":"length","nodeType":"MemberAccess","src":"16465:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16444:37:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964207265736572766573206c656e677468","id":15317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16483:25:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_788ce755d61da147edad70af92467c8a383af859573990e9defde5b6e0bdf24d","typeString":"literal_string \"Invalid reserves length\""},"value":"Invalid reserves length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_788ce755d61da147edad70af92467c8a383af859573990e9defde5b6e0bdf24d","typeString":"literal_string \"Invalid reserves length\""}],"id":15311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16436:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16436:73:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15319,"nodeType":"ExpressionStatement","src":"16436:73:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15321,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"16528:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16539:6:61","memberName":"length","nodeType":"MemberAccess","src":"16528:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16548:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16528:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20617373657473","id":15325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16551:11:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_195739df032cb3c07c5ed70a4cae73c5d077df4296263c6db3d1f3b4671efbd0","typeString":"literal_string \"No assets\""},"value":"No assets"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_195739df032cb3c07c5ed70a4cae73c5d077df4296263c6db3d1f3b4671efbd0","typeString":"literal_string \"No assets\""}],"id":15320,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16520:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16520:43:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15327,"nodeType":"ExpressionStatement","src":"16520:43:61"},{"body":{"id":15400,"nodeType":"Block","src":"16624:531:61","statements":[{"assignments":[15340],"declarations":[{"constant":false,"id":15340,"mutability":"mutable","name":"asset","nameLocation":"16647:5:61","nodeType":"VariableDeclaration","scope":15400,"src":"16639:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15339,"name":"address","nodeType":"ElementaryTypeName","src":"16639:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15345,"initialValue":{"expression":{"baseExpression":{"id":15341,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"16655:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15343,"indexExpression":{"id":15342,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15329,"src":"16666:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16655:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16669:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"16655:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16639:35:61"},{"assignments":[15347],"declarations":[{"constant":false,"id":15347,"mutability":"mutable","name":"success","nameLocation":"16694:7:61","nodeType":"VariableDeclaration","scope":15400,"src":"16689:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15346,"name":"bool","nodeType":"ElementaryTypeName","src":"16689:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":15362,"initialValue":{"arguments":[{"expression":{"id":15352,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16731:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16735:6:61","memberName":"sender","nodeType":"MemberAccess","src":"16731:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15356,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"16751:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16743:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15354,"name":"address","nodeType":"ElementaryTypeName","src":"16743:7:61","typeDescriptions":{}}},"id":15357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16743:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":15358,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15279,"src":"16758:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15360,"indexExpression":{"id":15359,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15329,"src":"16766:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16758:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":15349,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15340,"src":"16711:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15348,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"16704:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":15350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16704:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":15351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16718:12:61","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"16704:26:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":15361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16704:65:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"16689:80:61"},{"expression":{"arguments":[{"id":15364,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15347,"src":"16792:7:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631506f6f6c3a205472616e736665722066726f6d206661696c6564","id":15365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16801:36:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_ecd1f43c49e42563d3d1cb2a475a1c07f80ae9004e2e7b217754177af01e7482","typeString":"literal_string \"BaluniV1Pool: Transfer from failed\""},"value":"BaluniV1Pool: Transfer from failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ecd1f43c49e42563d3d1cb2a475a1c07f80ae9004e2e7b217754177af01e7482","typeString":"literal_string \"BaluniV1Pool: Transfer from failed\""}],"id":15363,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16784:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16784:54:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15367,"nodeType":"ExpressionStatement","src":"16784:54:61"},{"assignments":[15369],"declarations":[{"constant":false,"id":15369,"mutability":"mutable","name":"valuation","nameLocation":"16863:9:61","nodeType":"VariableDeclaration","scope":15400,"src":"16855:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15368,"name":"uint256","nodeType":"ElementaryTypeName","src":"16855:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15370,"nodeType":"VariableDeclarationStatement","src":"16855:17:61"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15371,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15340,"src":"16893:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":15372,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"16902:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16893:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15386,"nodeType":"IfStatement","src":"16889:150:61","trueBody":{"id":15385,"nodeType":"Block","src":"16913:126:61","statements":[{"expression":{"id":15378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15374,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15369,"src":"16932:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":15375,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15279,"src":"16944:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15377,"indexExpression":{"id":15376,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15329,"src":"16952:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16944:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16932:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15379,"nodeType":"ExpressionStatement","src":"16932:22:61"},{"expression":{"id":15382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15380,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"16973:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":15381,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15369,"src":"16987:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16973:23:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15383,"nodeType":"ExpressionStatement","src":"16973:23:61"},{"id":15384,"nodeType":"Continue","src":"17015:8:61"}]}},{"expression":{"id":15394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15387,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15369,"src":"17055:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15389,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15340,"src":"17087:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":15390,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15279,"src":"17094:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15392,"indexExpression":{"id":15391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15329,"src":"17102:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17094:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15388,"name":"_convertTokenToBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16743,"src":"17067:19:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":15393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17067:38:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17055:50:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15395,"nodeType":"ExpressionStatement","src":"17055:50:61"},{"expression":{"id":15398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15396,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"17120:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":15397,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15369,"src":"17134:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17120:23:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15399,"nodeType":"ExpressionStatement","src":"17120:23:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15332,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15329,"src":"16596:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15333,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"16600:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16611:6:61","memberName":"length","nodeType":"MemberAccess","src":"16600:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16596:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15401,"initializationExpression":{"assignments":[15329],"declarations":[{"constant":false,"id":15329,"mutability":"mutable","name":"i","nameLocation":"16589:1:61","nodeType":"VariableDeclaration","scope":15401,"src":"16581:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15328,"name":"uint256","nodeType":"ElementaryTypeName","src":"16581:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15331,"initialValue":{"hexValue":"30","id":15330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16593:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16581:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16619:3:61","subExpression":{"id":15336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15329,"src":"16619:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15338,"nodeType":"ExpressionStatement","src":"16619:3:61"},"nodeType":"ForStatement","src":"16576:579:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15403,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"17175:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17188:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17175:14:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f74616c2076616c7565206d7573742062652067726561746572207468616e2030","id":15406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17191:36:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_e8ec4a06d76118e3b24afbc30b183e086aa6aaa6e137c81160fc8d59e1a33e3f","typeString":"literal_string \"Total value must be greater than 0\""},"value":"Total value must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e8ec4a06d76118e3b24afbc30b183e086aa6aaa6e137c81160fc8d59e1a33e3f","typeString":"literal_string \"Total value must be greater than 0\""}],"id":15402,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17167:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17167:61:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15408,"nodeType":"ExpressionStatement","src":"17167:61:61"},{"assignments":[15410],"declarations":[{"constant":false,"id":15410,"mutability":"mutable","name":"toMint","nameLocation":"17249:6:61","nodeType":"VariableDeclaration","scope":15476,"src":"17241:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15409,"name":"uint256","nodeType":"ElementaryTypeName","src":"17241:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15411,"nodeType":"VariableDeclarationStatement","src":"17241:14:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15412,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15295,"src":"17272:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17287:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17272:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15449,"nodeType":"Block","src":"17358:267:61","statements":[{"assignments":[15423,null],"declarations":[{"constant":false,"id":15423,"mutability":"mutable","name":"totalLiquidity","nameLocation":"17382:14:61","nodeType":"VariableDeclaration","scope":15449,"src":"17374:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15422,"name":"uint256","nodeType":"ElementaryTypeName","src":"17374:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":15426,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15424,"name":"_computeTotalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16448,"src":"17402:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256,uint256[] memory)"}},"id":15425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17402:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"17373:53:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15428,"name":"totalLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15423,"src":"17449:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17466:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17449:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f74616c206c6971756964697479206d7573742062652067726561746572207468616e2030","id":15431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17469:40:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_a245c00c976af272c663e732300fe860097516364a0d92887494f54e860fa54c","typeString":"literal_string \"Total liquidity must be greater than 0\""},"value":"Total liquidity must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a245c00c976af272c663e732300fe860097516364a0d92887494f54e860fa54c","typeString":"literal_string \"Total liquidity must be greater than 0\""}],"id":15427,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17441:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17441:69:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15433,"nodeType":"ExpressionStatement","src":"17441:69:61"},{"expression":{"id":15447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15434,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"17525:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15435,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"17536:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":15436,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14176,"src":"17549:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17536:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15438,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17535:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":15439,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15295,"src":"17566:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17535:42:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15441,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17534:44:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15442,"name":"totalLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15423,"src":"17582:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":15443,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14176,"src":"17599:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17582:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15445,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17581:32:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17534:79:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17525:88:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15448,"nodeType":"ExpressionStatement","src":"17525:88:61"}]},"id":15450,"nodeType":"IfStatement","src":"17268:357:61","trueBody":{"id":15421,"nodeType":"Block","src":"17290:62:61","statements":[{"expression":{"id":15419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15415,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"17305:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15416,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15300,"src":"17314:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":15417,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14176,"src":"17327:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17314:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17305:35:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15420,"nodeType":"ExpressionStatement","src":"17305:35:61"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15452,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"17645:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":15453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17655:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17645:11:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d696e74207174792069732030","id":15455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17658:15:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_50327403b25acc6e0d15796c676b8320f8d9ffcece005326d31f4226e4f741bb","typeString":"literal_string \"Mint qty is 0\""},"value":"Mint qty is 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50327403b25acc6e0d15796c676b8320f8d9ffcece005326d31f4226e4f741bb","typeString":"literal_string \"Mint qty is 0\""}],"id":15451,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17637:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17637:37:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15457,"nodeType":"ExpressionStatement","src":"17637:37:61"},{"expression":{"arguments":[{"id":15459,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"17693:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15460,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"17697:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15458,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"17687:5:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17687:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15462,"nodeType":"ExpressionStatement","src":"17687:17:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15463,"name":"_updateSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"17717:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17717:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15465,"nodeType":"ExpressionStatement","src":"17717:17:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15466,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[16884,1046],"referencedDeclaration":16884,"src":"17745:7:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17745:9:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15468,"nodeType":"ExpressionStatement","src":"17745:9:61"},{"eventCall":{"arguments":[{"id":15470,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15276,"src":"17780:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15471,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"17784:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15469,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4283,"src":"17772:7:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17772:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15473,"nodeType":"EmitStatement","src":"17767:24:61"},{"expression":{"id":15474,"name":"toMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15410,"src":"17811:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15293,"id":15475,"nodeType":"Return","src":"17804:13:61"}]},"documentation":{"id":15274,"nodeType":"StructuredDocumentation","src":"15903:197:61","text":" @dev Mints new tokens and adds them to the specified address.\n @param to The address to which the new tokens will be minted.\n @return The amount of tokens minted."},"functionSelector":"b3bf9d32","id":15477,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15285,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15281,"src":"16238:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15286,"kind":"modifierInvocation","modifierName":{"id":15284,"name":"ensure","nameLocations":["16231:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":14199,"src":"16231:6:61"},"nodeType":"ModifierInvocation","src":"16231:16:61"},{"id":15288,"kind":"modifierInvocation","modifierName":{"id":15287,"name":"nonReentrant","nameLocations":["16248:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"16248:12:61"},"nodeType":"ModifierInvocation","src":"16248:12:61"},{"id":15290,"kind":"modifierInvocation","modifierName":{"id":15289,"name":"whenNotPaused","nameLocations":["16261:13:61"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"16261:13:61"},"nodeType":"ModifierInvocation","src":"16261:13:61"}],"name":"deposit","nameLocation":"16115:7:61","nodeType":"FunctionDefinition","overrides":{"id":15283,"nodeType":"OverrideSpecifier","overrides":[],"src":"16222:8:61"},"parameters":{"id":15282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15276,"mutability":"mutable","name":"to","nameLocation":"16141:2:61","nodeType":"VariableDeclaration","scope":15477,"src":"16133:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15275,"name":"address","nodeType":"ElementaryTypeName","src":"16133:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15279,"mutability":"mutable","name":"amounts","nameLocation":"16171:7:61","nodeType":"VariableDeclaration","scope":15477,"src":"16154:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15277,"name":"uint256","nodeType":"ElementaryTypeName","src":"16154:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15278,"nodeType":"ArrayTypeName","src":"16154:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":15281,"mutability":"mutable","name":"deadline","nameLocation":"16197:8:61","nodeType":"VariableDeclaration","scope":15477,"src":"16189:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15280,"name":"uint256","nodeType":"ElementaryTypeName","src":"16189:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16122:90:61"},"returnParameters":{"id":15293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15477,"src":"16284:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15291,"name":"uint256","nodeType":"ElementaryTypeName","src":"16284:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16283:9:61"},"scope":16885,"src":"16106:1719:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4378],"body":{"id":15707,"nodeType":"Block","src":"19023:1667:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15498,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15482,"src":"19042:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":15501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19056:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19048:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15499,"name":"address","nodeType":"ElementaryTypeName","src":"19048:7:61","typeDescriptions":{}}},"id":15502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19048:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19042:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642061646472657373","id":15504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19060:17:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226","typeString":"literal_string \"Invalid address\""},"value":"Invalid address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226","typeString":"literal_string \"Invalid address\""}],"id":15497,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19034:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19034:44:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15506,"nodeType":"ExpressionStatement","src":"19034:44:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15508,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"19097:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19105:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19097:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5368617265206d7573742062652067726561746572207468616e2030","id":15511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19108:30:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_37b2136db8906a0fa9dcfb36fa22f3e5724d70ae1dfd30e29853723b16bc684b","typeString":"literal_string \"Share must be greater than 0\""},"value":"Share must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37b2136db8906a0fa9dcfb36fa22f3e5724d70ae1dfd30e29853723b16bc684b","typeString":"literal_string \"Share must be greater than 0\""}],"id":15507,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19089:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19089:50:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15513,"nodeType":"ExpressionStatement","src":"19089:50:61"},{"assignments":[15515],"declarations":[{"constant":false,"id":15515,"mutability":"mutable","name":"allowance","nameLocation":"19160:9:61","nodeType":"VariableDeclaration","scope":15707,"src":"19152:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15514,"name":"uint256","nodeType":"ElementaryTypeName","src":"19152:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15530,"initialValue":{"arguments":[{"expression":{"id":15523,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19204:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19208:6:61","memberName":"sender","nodeType":"MemberAccess","src":"19204:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15527,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"19224:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19216:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15525,"name":"address","nodeType":"ElementaryTypeName","src":"19216:7:61","typeDescriptions":{}}},"id":15528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19216:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":15519,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"19187:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19179:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15517,"name":"address","nodeType":"ElementaryTypeName","src":"19179:7:61","typeDescriptions":{}}},"id":15520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19179:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15516,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"19172:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":15521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19172:21:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":15522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19194:9:61","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"19172:31:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":15529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19172:58:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19152:78:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15532,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15515,"src":"19249:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15533,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"19262:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19249:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631506f6f6c3a20496e73756666696369656e7420416c6c6f77616e6365","id":15535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19269:38:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_b6d2d6ed3de7b13511d7f92187f8e921546e64c2ccd493001d0ee9932e446fff","typeString":"literal_string \"BaluniV1Pool: Insufficient Allowance\""},"value":"BaluniV1Pool: Insufficient Allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b6d2d6ed3de7b13511d7f92187f8e921546e64c2ccd493001d0ee9932e446fff","typeString":"literal_string \"BaluniV1Pool: Insufficient Allowance\""}],"id":15531,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19241:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19241:67:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15537,"nodeType":"ExpressionStatement","src":"19241:67:61"},{"assignments":[15539],"declarations":[{"constant":false,"id":15539,"mutability":"mutable","name":"transferResult","nameLocation":"19326:14:61","nodeType":"VariableDeclaration","scope":15707,"src":"19321:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15538,"name":"bool","nodeType":"ElementaryTypeName","src":"19321:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":15555,"initialValue":{"arguments":[{"expression":{"id":15547,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19378:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19382:6:61","memberName":"sender","nodeType":"MemberAccess","src":"19378:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15551,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"19398:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19390:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15549,"name":"address","nodeType":"ElementaryTypeName","src":"19390:7:61","typeDescriptions":{}}},"id":15552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19390:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15553,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"19405:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":15543,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"19358:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19350:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15541,"name":"address","nodeType":"ElementaryTypeName","src":"19350:7:61","typeDescriptions":{}}},"id":15544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19350:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15540,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"19343:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":15545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19343:21:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":15546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19365:12:61","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"19343:34:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":15554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19343:68:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"19321:90:61"},{"expression":{"arguments":[{"id":15557,"name":"transferResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15539,"src":"19430:14:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e736665722046726f6d204661696c6564","id":15558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19446:22:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_b15dc5b153b2c449b92f843a705e400d626f4dd8b96994ac655c7b213dc2911a","typeString":"literal_string \"Transfer From Failed\""},"value":"Transfer From Failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b15dc5b153b2c449b92f843a705e400d626f4dd8b96994ac655c7b213dc2911a","typeString":"literal_string \"Transfer From Failed\""}],"id":15556,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19422:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19422:47:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15560,"nodeType":"ExpressionStatement","src":"19422:47:61"},{"assignments":[15562],"declarations":[{"constant":false,"id":15562,"mutability":"mutable","name":"totalSupply","nameLocation":"19490:11:61","nodeType":"VariableDeclaration","scope":15707,"src":"19482:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15561,"name":"uint256","nodeType":"ElementaryTypeName","src":"19482:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15565,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15563,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"19504:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19504:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19482:35:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15567,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15562,"src":"19536:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19550:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19536:15:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f206c6971756964697479","id":15570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19553:14:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_379a432f00aa43993bfbf4e01492a8eab5138dcd2e395864ede728644390fc31","typeString":"literal_string \"No liquidity\""},"value":"No liquidity"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_379a432f00aa43993bfbf4e01492a8eab5138dcd2e395864ede728644390fc31","typeString":"literal_string \"No liquidity\""}],"id":15566,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19528:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19528:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15572,"nodeType":"ExpressionStatement","src":"19528:40:61"},{"assignments":[15574],"declarations":[{"constant":false,"id":15574,"mutability":"mutable","name":"treasury","nameLocation":"19589:8:61","nodeType":"VariableDeclaration","scope":15707,"src":"19581:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15573,"name":"address","nodeType":"ElementaryTypeName","src":"19581:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15578,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15575,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"19600:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":15576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19609:11:61","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"19600:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19600:22:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"19581:41:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15580,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15574,"src":"19641:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":15583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19661:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19653:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15581,"name":"address","nodeType":"ElementaryTypeName","src":"19653:7:61","typeDescriptions":{}}},"id":15584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19653:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19641:22:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642074726561737572792061646472657373","id":15586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19665:26:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad62b1c0bd29081661072d57b01cc0cf06650cc62be9f64a16c6eeb674febe7f","typeString":"literal_string \"Invalid treasury address\""},"value":"Invalid treasury address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ad62b1c0bd29081661072d57b01cc0cf06650cc62be9f64a16c6eeb674febe7f","typeString":"literal_string \"Invalid treasury address\""}],"id":15579,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19633:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19633:59:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15588,"nodeType":"ExpressionStatement","src":"19633:59:61"},{"body":{"id":15672,"nodeType":"Block","src":"19753:690:61","statements":[{"assignments":[15601],"declarations":[{"constant":false,"id":15601,"mutability":"mutable","name":"amountToSend","nameLocation":"19776:12:61","nodeType":"VariableDeclaration","scope":15672,"src":"19768:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15600,"name":"uint256","nodeType":"ElementaryTypeName","src":"19768:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15607,"initialValue":{"baseExpression":{"arguments":[{"id":15603,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"19811:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15602,"name":"calculateAssetShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15784,"src":"19791:19:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) view returns (uint256[] memory)"}},"id":15604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19791:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15606,"indexExpression":{"id":15605,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15590,"src":"19818:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19791:29:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19768:52:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":15618,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"19907:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19899:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15616,"name":"address","nodeType":"ElementaryTypeName","src":"19899:7:61","typeDescriptions":{}}},"id":15619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19899:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":15610,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"19868:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15612,"indexExpression":{"id":15611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15590,"src":"19879:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19868:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15613,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19882:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"19868:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15609,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"19861:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":15614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19861:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":15615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19889:9:61","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"19861:37:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19861:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15621,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15601,"src":"19917:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19861:68:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631506f6f6c3a20496e73756666696369656e742041737365742042616c616e6365","id":15623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19948:42:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_fd987e4cb46a85ad4b37f517550f430c97a96691c59a0e0f199442627bc51361","typeString":"literal_string \"BaluniV1Pool: Insufficient Asset Balance\""},"value":"BaluniV1Pool: Insufficient Asset Balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fd987e4cb46a85ad4b37f517550f430c97a96691c59a0e0f199442627bc51361","typeString":"literal_string \"BaluniV1Pool: Insufficient Asset Balance\""}],"id":15608,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19835:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19835:170:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15625,"nodeType":"ExpressionStatement","src":"19835:170:61"},{"assignments":[15627],"declarations":[{"constant":false,"id":15627,"mutability":"mutable","name":"fee","nameLocation":"20030:3:61","nodeType":"VariableDeclaration","scope":15672,"src":"20022:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15626,"name":"uint256","nodeType":"ElementaryTypeName","src":"20022:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15631,"initialValue":{"arguments":[{"id":15629,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15601,"src":"20045:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15628,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"20036:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20036:22:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20022:36:61"},{"expression":{"id":15634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15632,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15601,"src":"20073:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":15633,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15627,"src":"20089:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20073:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15635,"nodeType":"ExpressionStatement","src":"20073:19:61"},{"assignments":[15637],"declarations":[{"constant":false,"id":15637,"mutability":"mutable","name":"transferProtocolSuccess","nameLocation":"20112:23:61","nodeType":"VariableDeclaration","scope":15672,"src":"20107:28:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15636,"name":"bool","nodeType":"ElementaryTypeName","src":"20107:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":15648,"initialValue":{"arguments":[{"id":15645,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15574,"src":"20175:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15646,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15627,"src":"20185:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":15639,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"20145:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15641,"indexExpression":{"id":15640,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15590,"src":"20156:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20145:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20159:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"20145:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15638,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"20138:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":15643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20138:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":15644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20166:8:61","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"20138:36:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":15647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20138:51:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"20107:82:61"},{"expression":{"arguments":[{"id":15650,"name":"transferProtocolSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15637,"src":"20212:23:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631506f6f6c3a20466565205472616e73666572204661696c6564","id":15651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20237:35:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b2c7f7f6207be48a0d3cd2cc9fdd002faa3beed1d5d8e029fc4651619e97737","typeString":"literal_string \"BaluniV1Pool: Fee Transfer Failed\""},"value":"BaluniV1Pool: Fee Transfer Failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2b2c7f7f6207be48a0d3cd2cc9fdd002faa3beed1d5d8e029fc4651619e97737","typeString":"literal_string \"BaluniV1Pool: Fee Transfer Failed\""}],"id":15649,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20204:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20204:69:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15653,"nodeType":"ExpressionStatement","src":"20204:69:61"},{"assignments":[15655],"declarations":[{"constant":false,"id":15655,"mutability":"mutable","name":"transferSuccess","nameLocation":"20295:15:61","nodeType":"VariableDeclaration","scope":15672,"src":"20290:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15654,"name":"bool","nodeType":"ElementaryTypeName","src":"20290:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":15666,"initialValue":{"arguments":[{"id":15663,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15482,"src":"20350:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15664,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15601,"src":"20354:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":15657,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"20320:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15659,"indexExpression":{"id":15658,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15590,"src":"20331:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20320:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15660,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20334:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"20320:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15656,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"20313:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":15661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20313:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":15662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20341:8:61","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"20313:36:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":15665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20313:54:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"20290:77:61"},{"expression":{"arguments":[{"id":15668,"name":"transferSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15655,"src":"20390:15:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4173736574207472616e73666572206661696c6564","id":15669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20407:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_7c814c07c32441cfc9da2a21de4a11134ec9451c699d8fbc5bbba1c5f5bc0385","typeString":"literal_string \"Asset transfer failed\""},"value":"Asset transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7c814c07c32441cfc9da2a21de4a11134ec9451c699d8fbc5bbba1c5f5bc0385","typeString":"literal_string \"Asset transfer failed\""}],"id":15667,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20382:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20382:49:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15671,"nodeType":"ExpressionStatement","src":"20382:49:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15593,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15590,"src":"19725:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15594,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"19729:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19740:6:61","memberName":"length","nodeType":"MemberAccess","src":"19729:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19725:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15673,"initializationExpression":{"assignments":[15590],"declarations":[{"constant":false,"id":15590,"mutability":"mutable","name":"i","nameLocation":"19718:1:61","nodeType":"VariableDeclaration","scope":15673,"src":"19710:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15589,"name":"uint256","nodeType":"ElementaryTypeName","src":"19710:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15592,"initialValue":{"hexValue":"30","id":15591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19722:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19710:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19748:3:61","subExpression":{"id":15597,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15590,"src":"19748:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15599,"nodeType":"ExpressionStatement","src":"19748:3:61"},"nodeType":"ForStatement","src":"19705:738:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":15678,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"20481:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20473:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15676,"name":"address","nodeType":"ElementaryTypeName","src":"20473:7:61","typeDescriptions":{}}},"id":15679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20473:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15675,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"20463:9:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":15680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20463:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15681,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"20491:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20463:33:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742042414c554e49206c6971756964697479","id":15683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20498:31:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc2f8692ca59eb8838d740ab96a08e7dab54c967cc56eb0a9b640ce78eb1103e","typeString":"literal_string \"Insufficient BALUNI liquidity\""},"value":"Insufficient BALUNI liquidity"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc2f8692ca59eb8838d740ab96a08e7dab54c967cc56eb0a9b640ce78eb1103e","typeString":"literal_string \"Insufficient BALUNI liquidity\""}],"id":15674,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20455:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20455:75:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15685,"nodeType":"ExpressionStatement","src":"20455:75:61"},{"expression":{"arguments":[{"arguments":[{"id":15689,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"20557:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20549:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15687,"name":"address","nodeType":"ElementaryTypeName","src":"20549:7:61","typeDescriptions":{}}},"id":15690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20549:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15691,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"20564:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15686,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"20543:5:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20543:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15693,"nodeType":"ExpressionStatement","src":"20543:27:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15694,"name":"_updateSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"20583:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20583:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15696,"nodeType":"ExpressionStatement","src":"20583:17:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15697,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[16884,1046],"referencedDeclaration":16884,"src":"20611:7:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20611:9:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15699,"nodeType":"ExpressionStatement","src":"20611:9:61"},{"eventCall":{"arguments":[{"id":15701,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15482,"src":"20647:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15702,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"20651:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15700,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4277,"src":"20638:8:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20638:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15704,"nodeType":"EmitStatement","src":"20633:24:61"},{"expression":{"id":15705,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"20677:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15496,"id":15706,"nodeType":"Return","src":"20670:12:61"}]},"documentation":{"id":15478,"nodeType":"StructuredDocumentation","src":"17833:1007:61","text":" @dev Burns the pool tokens and transfers the underlying assets to the specified address.\n @param to The address to transfer the underlying assets to.\n @notice This function can only be called by the periphery contract.\n @notice The pool tokens must have a balance greater than 0.\n @notice The total supply of pool tokens must be greater than 0.\n @notice The function calculates the amounts of each underlying asset to transfer based on the share of pool tokens being burned.\n @notice A fee is deducted from the share of pool tokens being burned and transferred to the treasury address.\n @notice The function checks if the pool has sufficient liquidity before performing any transfers.\n @notice If any transfer fails, the function reverts the entire operation.\n @notice After the transfers, the function updates the reserves of the pool.\n @notice Emits a `Burn` event with the address and share of pool tokens burned."},"functionSelector":"e63697c8","id":15708,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15488,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"18968:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15489,"kind":"modifierInvocation","modifierName":{"id":15487,"name":"ensure","nameLocations":["18961:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":14199,"src":"18961:6:61"},"nodeType":"ModifierInvocation","src":"18961:16:61"},{"id":15491,"kind":"modifierInvocation","modifierName":{"id":15490,"name":"nonReentrant","nameLocations":["18978:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"18978:12:61"},"nodeType":"ModifierInvocation","src":"18978:12:61"},{"id":15493,"kind":"modifierInvocation","modifierName":{"id":15492,"name":"whenNotPaused","nameLocations":["18991:13:61"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"18991:13:61"},"nodeType":"ModifierInvocation","src":"18991:13:61"}],"name":"withdraw","nameLocation":"18855:8:61","nodeType":"FunctionDefinition","overrides":{"id":15486,"nodeType":"OverrideSpecifier","overrides":[],"src":"18952:8:61"},"parameters":{"id":15485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15480,"mutability":"mutable","name":"share","nameLocation":"18882:5:61","nodeType":"VariableDeclaration","scope":15708,"src":"18874:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15479,"name":"uint256","nodeType":"ElementaryTypeName","src":"18874:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15482,"mutability":"mutable","name":"to","nameLocation":"18906:2:61","nodeType":"VariableDeclaration","scope":15708,"src":"18898:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15481,"name":"address","nodeType":"ElementaryTypeName","src":"18898:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15484,"mutability":"mutable","name":"deadline","nameLocation":"18927:8:61","nodeType":"VariableDeclaration","scope":15708,"src":"18919:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15483,"name":"uint256","nodeType":"ElementaryTypeName","src":"18919:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18863:79:61"},"returnParameters":{"id":15496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15708,"src":"19014:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15494,"name":"uint256","nodeType":"ElementaryTypeName","src":"19014:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19013:9:61"},"scope":16885,"src":"18846:1844:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15783,"nodeType":"Block","src":"21031:435:61","statements":[{"assignments":[15718],"declarations":[{"constant":false,"id":15718,"mutability":"mutable","name":"fee","nameLocation":"21050:3:61","nodeType":"VariableDeclaration","scope":15783,"src":"21042:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15717,"name":"uint256","nodeType":"ElementaryTypeName","src":"21042:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15722,"initialValue":{"arguments":[{"id":15720,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15711,"src":"21065:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15719,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"21056:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21056:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21042:29:61"},{"assignments":[15724],"declarations":[{"constant":false,"id":15724,"mutability":"mutable","name":"shareAfterFee","nameLocation":"21090:13:61","nodeType":"VariableDeclaration","scope":15783,"src":"21082:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15723,"name":"uint256","nodeType":"ElementaryTypeName","src":"21082:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15728,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15725,"name":"share","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15711,"src":"21106:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15726,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15718,"src":"21114:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21106:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21082:35:61"},{"assignments":[15733],"declarations":[{"constant":false,"id":15733,"mutability":"mutable","name":"assetShares","nameLocation":"21145:11:61","nodeType":"VariableDeclaration","scope":15783,"src":"21128:28:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15731,"name":"uint256","nodeType":"ElementaryTypeName","src":"21128:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15732,"nodeType":"ArrayTypeName","src":"21128:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":15740,"initialValue":{"arguments":[{"expression":{"id":15737,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"21173:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21184:6:61","memberName":"length","nodeType":"MemberAccess","src":"21173:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"21159:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":15734,"name":"uint256","nodeType":"ElementaryTypeName","src":"21163:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15735,"nodeType":"ArrayTypeName","src":"21163:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":15739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21159:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"21128:63:61"},{"body":{"id":15779,"nodeType":"Block","src":"21250:180:61","statements":[{"assignments":[15753],"declarations":[{"constant":false,"id":15753,"mutability":"mutable","name":"assetBalance","nameLocation":"21273:12:61","nodeType":"VariableDeclaration","scope":15779,"src":"21265:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15752,"name":"uint256","nodeType":"ElementaryTypeName","src":"21265:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15766,"initialValue":{"arguments":[{"arguments":[{"id":15763,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"21334:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":15762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21326:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15761,"name":"address","nodeType":"ElementaryTypeName","src":"21326:7:61","typeDescriptions":{}}},"id":15764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21326:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":15755,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"21295:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15757,"indexExpression":{"id":15756,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15742,"src":"21306:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21295:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21309:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"21295:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15754,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"21288:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":15759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21288:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":15760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21316:9:61","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"21288:37:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21288:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21265:75:61"},{"expression":{"id":15777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15767,"name":"assetShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15733,"src":"21355:11:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15769,"indexExpression":{"id":15768,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15742,"src":"21367:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21355:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15770,"name":"assetBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15753,"src":"21373:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":15771,"name":"shareAfterFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15724,"src":"21388:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21373:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15773,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21372:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":15774,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"21405:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":15775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21405:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21372:46:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21355:63:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15778,"nodeType":"ExpressionStatement","src":"21355:63:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15745,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15742,"src":"21222:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15746,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"21226:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21237:6:61","memberName":"length","nodeType":"MemberAccess","src":"21226:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21222:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15780,"initializationExpression":{"assignments":[15742],"declarations":[{"constant":false,"id":15742,"mutability":"mutable","name":"i","nameLocation":"21215:1:61","nodeType":"VariableDeclaration","scope":15780,"src":"21207:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15741,"name":"uint256","nodeType":"ElementaryTypeName","src":"21207:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15744,"initialValue":{"hexValue":"30","id":15743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21219:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21207:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"21245:3:61","subExpression":{"id":15749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15742,"src":"21245:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15751,"nodeType":"ExpressionStatement","src":"21245:3:61"},"nodeType":"ForStatement","src":"21202:228:61"},{"expression":{"id":15781,"name":"assetShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15733,"src":"21447:11:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":15716,"id":15782,"nodeType":"Return","src":"21440:18:61"}]},"documentation":{"id":15709,"nodeType":"StructuredDocumentation","src":"20698:244:61","text":" @dev Calculates the asset shares based on the provided share amount.\n @param share The share amount to calculate the asset shares for.\n @return An array of asset shares corresponding to each asset in the pool."},"functionSelector":"e64ebdd2","id":15784,"implemented":true,"kind":"function","modifiers":[],"name":"calculateAssetShare","nameLocation":"20957:19:61","nodeType":"FunctionDefinition","parameters":{"id":15712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15711,"mutability":"mutable","name":"share","nameLocation":"20985:5:61","nodeType":"VariableDeclaration","scope":15784,"src":"20977:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15710,"name":"uint256","nodeType":"ElementaryTypeName","src":"20977:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20976:15:61"},"returnParameters":{"id":15716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15784,"src":"21013:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15713,"name":"uint256","nodeType":"ElementaryTypeName","src":"21013:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15714,"nodeType":"ArrayTypeName","src":"21013:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"21012:18:61"},"scope":16885,"src":"20948:518:61","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":15811,"nodeType":"Block","src":"21744:161:61","statements":[{"assignments":[15793],"declarations":[{"constant":false,"id":15793,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"21763:8:61","nodeType":"VariableDeclaration","scope":15811,"src":"21755:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15792,"name":"uint256","nodeType":"ElementaryTypeName","src":"21755:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15797,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15794,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"21774:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":15795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21783:10:61","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":4863,"src":"21774:19:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":15796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21774:21:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21755:40:61"},{"assignments":[15799],"declarations":[{"constant":false,"id":15799,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"21814:9:61","nodeType":"VariableDeclaration","scope":15811,"src":"21806:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15798,"name":"uint256","nodeType":"ElementaryTypeName","src":"21806:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15803,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15800,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"21826:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":15801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21835:11:61","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"21826:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":15802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21826:22:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21806:42:61"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15804,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15787,"src":"21867:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":15805,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15793,"src":"21876:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21867:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15807,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21866:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15808,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"21888:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21866:31:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15791,"id":15810,"nodeType":"Return","src":"21859:38:61"}]},"documentation":{"id":15785,"nodeType":"StructuredDocumentation","src":"21474:198:61","text":" @dev Calculates the fee amount based on the provided amount using the haircut formula.\n @param amount The amount to calculate the fee for.\n @return The fee amount."},"id":15812,"implemented":true,"kind":"function","modifiers":[],"name":"_haircut","nameLocation":"21687:8:61","nodeType":"FunctionDefinition","parameters":{"id":15788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15787,"mutability":"mutable","name":"amount","nameLocation":"21704:6:61","nodeType":"VariableDeclaration","scope":15812,"src":"21696:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15786,"name":"uint256","nodeType":"ElementaryTypeName","src":"21696:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21695:16:61"},"returnParameters":{"id":15791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15812,"src":"21735:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15789,"name":"uint256","nodeType":"ElementaryTypeName","src":"21735:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21734:9:61"},"scope":16885,"src":"21678:227:61","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4389],"body":{"id":15857,"nodeType":"Block","src":"22417:285:61","statements":[{"assignments":[15827],"declarations":[{"constant":false,"id":15827,"mutability":"mutable","name":"baluniOracle","nameLocation":"22444:12:61","nodeType":"VariableDeclaration","scope":15857,"src":"22428:28:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"},"typeName":{"id":15826,"nodeType":"UserDefinedTypeName","pathNode":{"id":15825,"name":"IBaluniV1Oracle","nameLocations":["22428:15:61"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"22428:15:61"},"referencedDeclaration":4240,"src":"22428:15:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"visibility":"internal"}],"id":15833,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15829,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"22475:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":15830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22484:15:61","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"22475:24:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22475:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15828,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"22459:15:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$4240_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":15832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22459:43:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"nodeType":"VariableDeclarationStatement","src":"22428:74:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15835,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"22521:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":15836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22530:15:61","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"22521:24:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22521:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":15840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22559:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22551:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15838,"name":"address","nodeType":"ElementaryTypeName","src":"22551:7:61","typeDescriptions":{}}},"id":15841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22551:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22521:40:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206f7261636c652061646472657373","id":15843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22563:24:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5c25d5c4ca6addfa23ca815554bb7bee3a9885ce01501a275168a62aa7cded3","typeString":"literal_string \"Invalid oracle address\""},"value":"Invalid oracle address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5c25d5c4ca6addfa23ca815554bb7bee3a9885ce01501a275168a62aa7cded3","typeString":"literal_string \"Invalid oracle address\""}],"id":15834,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22513:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22513:75:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15845,"nodeType":"ExpressionStatement","src":"22513:75:61"},{"assignments":[15847],"declarations":[{"constant":false,"id":15847,"mutability":"mutable","name":"amountOut","nameLocation":"22607:9:61","nodeType":"VariableDeclaration","scope":15857,"src":"22599:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15846,"name":"uint256","nodeType":"ElementaryTypeName","src":"22599:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15854,"initialValue":{"arguments":[{"id":15850,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15815,"src":"22640:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15851,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15817,"src":"22651:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15852,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15819,"src":"22660:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15848,"name":"baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15827,"src":"22619:12:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":15849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22632:7:61","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":4228,"src":"22619:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":15853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22619:48:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22599:68:61"},{"expression":{"id":15855,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15847,"src":"22685:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15824,"id":15856,"nodeType":"Return","src":"22678:16:61"}]},"documentation":{"id":15813,"nodeType":"StructuredDocumentation","src":"21913:385:61","text":" @dev Calculates the amount of `toToken` that will be received when swapping `fromToken` for `toToken`.\n @param fromToken The address of the token being swapped from.\n @param toToken The address of the token being swapped to.\n @param amount The amount of `fromToken` being swapped.\n @return The amount of `toToken` that will be received."},"functionSelector":"4aa06652","id":15858,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountOut","nameLocation":"22313:12:61","nodeType":"FunctionDefinition","overrides":{"id":15821,"nodeType":"OverrideSpecifier","overrides":[],"src":"22390:8:61"},"parameters":{"id":15820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15815,"mutability":"mutable","name":"fromToken","nameLocation":"22334:9:61","nodeType":"VariableDeclaration","scope":15858,"src":"22326:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15814,"name":"address","nodeType":"ElementaryTypeName","src":"22326:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15817,"mutability":"mutable","name":"toToken","nameLocation":"22353:7:61","nodeType":"VariableDeclaration","scope":15858,"src":"22345:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15816,"name":"address","nodeType":"ElementaryTypeName","src":"22345:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15819,"mutability":"mutable","name":"amount","nameLocation":"22370:6:61","nodeType":"VariableDeclaration","scope":15858,"src":"22362:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15818,"name":"uint256","nodeType":"ElementaryTypeName","src":"22362:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22325:52:61"},"returnParameters":{"id":15824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15858,"src":"22408:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15822,"name":"uint256","nodeType":"ElementaryTypeName","src":"22408:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22407:9:61"},"scope":16885,"src":"22304:398:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4392],"body":{"id":15872,"nodeType":"Block","src":"22799:116:61","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":15864,"name":"isRebalanceNeeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16350,"src":"22818:17:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":15865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22818:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"526562616c616e6365206e6f74206e6565646564","id":15866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22839:22:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4fcae9c0286e861087281117e0a3185ced905823104b290e1fe3ba826d8d280","typeString":"literal_string \"Rebalance not needed\""},"value":"Rebalance not needed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e4fcae9c0286e861087281117e0a3185ced905823104b290e1fe3ba826d8d280","typeString":"literal_string \"Rebalance not needed\""}],"id":15863,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22810:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22810:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15868,"nodeType":"ExpressionStatement","src":"22810:52:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15869,"name":"_performRebalanceIfNeeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16573,"src":"22880:25:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22880:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":15862,"id":15871,"nodeType":"Return","src":"22873:34:61"}]},"documentation":{"id":15859,"nodeType":"StructuredDocumentation","src":"22710:44:61","text":" @dev Performs rebalance"},"functionSelector":"7d7c2a1c","id":15873,"implemented":true,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"22769:9:61","nodeType":"FunctionDefinition","overrides":{"id":15861,"nodeType":"OverrideSpecifier","overrides":[],"src":"22790:8:61"},"parameters":{"id":15860,"nodeType":"ParameterList","parameters":[],"src":"22778:2:61"},"returnParameters":{"id":15862,"nodeType":"ParameterList","parameters":[],"src":"22799:0:61"},"scope":16885,"src":"22760:155:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4401],"body":{"id":15981,"nodeType":"Block","src":"23310:764:61","statements":[{"assignments":[15885,15888],"declarations":[{"constant":false,"id":15885,"mutability":"mutable","name":"totVal","nameLocation":"23330:6:61","nodeType":"VariableDeclaration","scope":15981,"src":"23322:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15884,"name":"uint256","nodeType":"ElementaryTypeName","src":"23322:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15888,"mutability":"mutable","name":"valuations","nameLocation":"23355:10:61","nodeType":"VariableDeclaration","scope":15981,"src":"23338:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15886,"name":"uint256","nodeType":"ElementaryTypeName","src":"23338:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15887,"nodeType":"ArrayTypeName","src":"23338:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":15891,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15889,"name":"_computeTotalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16448,"src":"23369:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256,uint256[] memory)"}},"id":15890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23369:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"23321:72:61"},{"assignments":[15893],"declarations":[{"constant":false,"id":15893,"mutability":"mutable","name":"numAssets","nameLocation":"23412:9:61","nodeType":"VariableDeclaration","scope":15981,"src":"23404:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15892,"name":"uint256","nodeType":"ElementaryTypeName","src":"23404:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15896,"initialValue":{"expression":{"id":15894,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"23424:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23435:6:61","memberName":"length","nodeType":"MemberAccess","src":"23424:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23404:37:61"},{"expression":{"id":15903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15897,"name":"directions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15879,"src":"23454:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15901,"name":"numAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15893,"src":"23478:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23467:10:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":15898,"name":"bool","nodeType":"ElementaryTypeName","src":"23471:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15899,"nodeType":"ArrayTypeName","src":"23471:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":15902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23467:21:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"src":"23454:34:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":15904,"nodeType":"ExpressionStatement","src":"23454:34:61"},{"expression":{"id":15911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15905,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15882,"src":"23499:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15909,"name":"numAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15893,"src":"23526:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23512:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":15906,"name":"uint256","nodeType":"ElementaryTypeName","src":"23516:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15907,"nodeType":"ArrayTypeName","src":"23516:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":15910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23512:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"23499:37:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15912,"nodeType":"ExpressionStatement","src":"23499:37:61"},{"body":{"id":15975,"nodeType":"Block","src":"23589:434:61","statements":[{"assignments":[15924],"declarations":[{"constant":false,"id":15924,"mutability":"mutable","name":"currentWeight","nameLocation":"23612:13:61","nodeType":"VariableDeclaration","scope":15975,"src":"23604:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15923,"name":"uint256","nodeType":"ElementaryTypeName","src":"23604:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15933,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15925,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15888,"src":"23629:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15927,"indexExpression":{"id":15926,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15914,"src":"23640:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23629:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130303030","id":15928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23645:5:61","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"23629:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15930,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23628:23:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15931,"name":"totVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15885,"src":"23654:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23628:32:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23604:56:61"},{"assignments":[15935],"declarations":[{"constant":false,"id":15935,"mutability":"mutable","name":"targetWeight","nameLocation":"23683:12:61","nodeType":"VariableDeclaration","scope":15975,"src":"23675:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15934,"name":"uint256","nodeType":"ElementaryTypeName","src":"23675:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15940,"initialValue":{"expression":{"baseExpression":{"id":15936,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"23698:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":15938,"indexExpression":{"id":15937,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15914,"src":"23709:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23698:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":15939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23712:6:61","memberName":"weight","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"23698:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23675:43:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15941,"name":"currentWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15924,"src":"23739:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":15942,"name":"targetWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15935,"src":"23755:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23739:28:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15973,"nodeType":"Block","src":"23893:119:61","statements":[{"expression":{"id":15965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15959,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15882,"src":"23912:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15961,"indexExpression":{"id":15960,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15914,"src":"23923:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23912:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15962,"name":"targetWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15935,"src":"23928:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15963,"name":"currentWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15924,"src":"23943:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23928:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23912:44:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15966,"nodeType":"ExpressionStatement","src":"23912:44:61"},{"expression":{"id":15971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15967,"name":"directions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15879,"src":"23975:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":15969,"indexExpression":{"id":15968,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15914,"src":"23986:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23975:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":15970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23991:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"23975:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15972,"nodeType":"ExpressionStatement","src":"23975:21:61"}]},"id":15974,"nodeType":"IfStatement","src":"23735:277:61","trueBody":{"id":15958,"nodeType":"Block","src":"23769:118:61","statements":[{"expression":{"id":15950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15944,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15882,"src":"23788:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":15946,"indexExpression":{"id":15945,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15914,"src":"23799:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23788:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15947,"name":"currentWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15924,"src":"23804:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":15948,"name":"targetWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15935,"src":"23820:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23804:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23788:44:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15951,"nodeType":"ExpressionStatement","src":"23788:44:61"},{"expression":{"id":15956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15952,"name":"directions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15879,"src":"23851:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":15954,"indexExpression":{"id":15953,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15914,"src":"23862:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23851:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23867:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"23851:20:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15957,"nodeType":"ExpressionStatement","src":"23851:20:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15917,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15914,"src":"23569:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15918,"name":"numAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15893,"src":"23573:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23569:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15976,"initializationExpression":{"assignments":[15914],"declarations":[{"constant":false,"id":15914,"mutability":"mutable","name":"i","nameLocation":"23562:1:61","nodeType":"VariableDeclaration","scope":15976,"src":"23554:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15913,"name":"uint256","nodeType":"ElementaryTypeName","src":"23554:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15916,"initialValue":{"hexValue":"30","id":15915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23566:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23554:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"23584:3:61","subExpression":{"id":15920,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15914,"src":"23584:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15922,"nodeType":"ExpressionStatement","src":"23584:3:61"},"nodeType":"ForStatement","src":"23549:474:61"},{"expression":{"components":[{"id":15977,"name":"directions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15879,"src":"24043:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},{"id":15978,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15882,"src":"24055:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":15979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24042:24:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool[] memory,uint256[] memory)"}},"functionReturnParameters":15883,"id":15980,"nodeType":"Return","src":"24035:31:61"}]},"documentation":{"id":15874,"nodeType":"StructuredDocumentation","src":"22923:271:61","text":" @dev Returns the deviation between the current weights and target weights of the assets in the pool.\n @return directions An array of boolean values indicating whether the current weight is higher (true) or lower (false) than the target weight."},"functionSelector":"b7110e13","id":15982,"implemented":true,"kind":"function","modifiers":[],"name":"getDeviations","nameLocation":"23209:13:61","nodeType":"FunctionDefinition","overrides":{"id":15876,"nodeType":"OverrideSpecifier","overrides":[],"src":"23237:8:61"},"parameters":{"id":15875,"nodeType":"ParameterList","parameters":[],"src":"23222:2:61"},"returnParameters":{"id":15883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15879,"mutability":"mutable","name":"directions","nameLocation":"23269:10:61","nodeType":"VariableDeclaration","scope":15982,"src":"23255:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":15877,"name":"bool","nodeType":"ElementaryTypeName","src":"23255:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15878,"nodeType":"ArrayTypeName","src":"23255:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"},{"constant":false,"id":15882,"mutability":"mutable","name":"deviations","nameLocation":"23298:10:61","nodeType":"VariableDeclaration","scope":15982,"src":"23281:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15880,"name":"uint256","nodeType":"ElementaryTypeName","src":"23281:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15881,"nodeType":"ArrayTypeName","src":"23281:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"23254:55:61"},"scope":16885,"src":"23200:874:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4408],"body":{"id":16011,"nodeType":"Block","src":"24347:199:61","statements":[{"assignments":[null,15995],"declarations":[null,{"constant":false,"id":15995,"mutability":"mutable","name":"usdValuations","nameLocation":"24378:13:61","nodeType":"VariableDeclaration","scope":16011,"src":"24361:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15993,"name":"uint256","nodeType":"ElementaryTypeName","src":"24361:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15994,"nodeType":"ArrayTypeName","src":"24361:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":15998,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15996,"name":"_computeTotalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16448,"src":"24395:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256,uint256[] memory)"}},"id":15997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24395:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"24358:61:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16000,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15985,"src":"24438:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16001,"name":"usdValuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15995,"src":"24451:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24465:6:61","memberName":"length","nodeType":"MemberAccess","src":"24451:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24438:33:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420617373657420696e646578","id":16004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24473:21:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b105b0b4a7ff5c11f41135d6d4600fd47da6168663f6cb1810745b08d83918","typeString":"literal_string \"Invalid asset index\""},"value":"Invalid asset index"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f8b105b0b4a7ff5c11f41135d6d4600fd47da6168663f6cb1810745b08d83918","typeString":"literal_string \"Invalid asset index\""}],"id":15999,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"24430:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24430:65:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16006,"nodeType":"ExpressionStatement","src":"24430:65:61"},{"expression":{"baseExpression":{"id":16007,"name":"usdValuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15995,"src":"24513:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16009,"indexExpression":{"id":16008,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15985,"src":"24527:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24513:25:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15990,"id":16010,"nodeType":"Return","src":"24506:32:61"}]},"documentation":{"id":15983,"nodeType":"StructuredDocumentation","src":"24082:174:61","text":" @dev Returns the liquidity of a specific asset in the pool.\n @param assetIndex The index of the asset.\n @return The liquidity of the asset."},"functionSelector":"cf8fa764","id":16012,"implemented":true,"kind":"function","modifiers":[],"name":"assetLiquidity","nameLocation":"24271:14:61","nodeType":"FunctionDefinition","overrides":{"id":15987,"nodeType":"OverrideSpecifier","overrides":[],"src":"24320:8:61"},"parameters":{"id":15986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15985,"mutability":"mutable","name":"assetIndex","nameLocation":"24294:10:61","nodeType":"VariableDeclaration","scope":16012,"src":"24286:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15984,"name":"uint256","nodeType":"ElementaryTypeName","src":"24286:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24285:20:61"},"returnParameters":{"id":15990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16012,"src":"24338:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15988,"name":"uint256","nodeType":"ElementaryTypeName","src":"24338:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24337:9:61"},"scope":16885,"src":"24262:284:61","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4416],"body":{"id":16033,"nodeType":"Block","src":"24922:108:61","statements":[{"expression":{"id":16027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16022,"name":"totalVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16017,"src":"24934:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16023,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16020,"src":"24944:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":16024,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"24933:22:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":16025,"name":"_computeTotalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16448,"src":"24958:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256,uint256[] memory)"}},"id":16026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24958:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"24933:49:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16028,"nodeType":"ExpressionStatement","src":"24933:49:61"},{"expression":{"components":[{"id":16029,"name":"totalVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16017,"src":"25001:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16030,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16020,"src":"25011:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":16031,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25000:22:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"functionReturnParameters":16021,"id":16032,"nodeType":"Return","src":"24993:29:61"}]},"documentation":{"id":16013,"nodeType":"StructuredDocumentation","src":"24554:257:61","text":" @dev Computes the total valuation of the pool and returns the total valuation and an array of individual valuations.\n @return totalVal The total valuation of the pool.\n @return valuations An array of individual valuations."},"functionSelector":"295b9300","id":16034,"implemented":true,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"24826:14:61","nodeType":"FunctionDefinition","overrides":{"id":16015,"nodeType":"OverrideSpecifier","overrides":[],"src":"24857:8:61"},"parameters":{"id":16014,"nodeType":"ParameterList","parameters":[],"src":"24840:2:61"},"returnParameters":{"id":16021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16017,"mutability":"mutable","name":"totalVal","nameLocation":"24883:8:61","nodeType":"VariableDeclaration","scope":16034,"src":"24875:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16016,"name":"uint256","nodeType":"ElementaryTypeName","src":"24875:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16020,"mutability":"mutable","name":"valuations","nameLocation":"24910:10:61","nodeType":"VariableDeclaration","scope":16034,"src":"24893:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16018,"name":"uint256","nodeType":"ElementaryTypeName","src":"24893:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16019,"nodeType":"ArrayTypeName","src":"24893:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"24874:47:61"},"scope":16885,"src":"24817:213:61","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4421],"body":{"id":16048,"nodeType":"Block","src":"25221:92:61","statements":[{"assignments":[16042,null],"declarations":[{"constant":false,"id":16042,"mutability":"mutable","name":"totalVal","nameLocation":"25241:8:61","nodeType":"VariableDeclaration","scope":16048,"src":"25233:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16041,"name":"uint256","nodeType":"ElementaryTypeName","src":"25233:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":16045,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16043,"name":"_computeTotalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16448,"src":"25255:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256,uint256[] memory)"}},"id":16044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25255:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"25232:47:61"},{"expression":{"id":16046,"name":"totalVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16042,"src":"25297:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16040,"id":16047,"nodeType":"Return","src":"25290:15:61"}]},"documentation":{"id":16035,"nodeType":"StructuredDocumentation","src":"25038:115:61","text":" @dev Returns the total liquidity of the pool.\n @return The total liquidity of the pool."},"functionSelector":"1a686502","id":16049,"implemented":true,"kind":"function","modifiers":[],"name":"liquidity","nameLocation":"25168:9:61","nodeType":"FunctionDefinition","overrides":{"id":16037,"nodeType":"OverrideSpecifier","overrides":[],"src":"25194:8:61"},"parameters":{"id":16036,"nodeType":"ParameterList","parameters":[],"src":"25177:2:61"},"returnParameters":{"id":16040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16049,"src":"25212:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16038,"name":"uint256","nodeType":"ElementaryTypeName","src":"25212:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25211:9:61"},"scope":16885,"src":"25159:154:61","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4426],"body":{"id":16114,"nodeType":"Block","src":"25494:582:61","statements":[{"assignments":[16057],"declarations":[{"constant":false,"id":16057,"mutability":"mutable","name":"baseDecimal","nameLocation":"25513:11:61","nodeType":"VariableDeclaration","scope":16114,"src":"25505:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16056,"name":"uint256","nodeType":"ElementaryTypeName","src":"25505:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16063,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":16059,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"25542:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16058,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"25527:14:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":16060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25527:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":16061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25553:8:61","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"25527:34:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":16062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25527:36:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"25505:58:61"},{"assignments":[16065],"declarations":[{"constant":false,"id":16065,"mutability":"mutable","name":"factor","nameLocation":"25582:6:61","nodeType":"VariableDeclaration","scope":16114,"src":"25574:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16064,"name":"uint256","nodeType":"ElementaryTypeName","src":"25574:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16072,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":16066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25591:2:61","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":16067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25598:2:61","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":16068,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16057,"src":"25603:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25598:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16070,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25597:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25591:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25574:41:61"},{"assignments":[16074],"declarations":[{"constant":false,"id":16074,"mutability":"mutable","name":"supply","nameLocation":"25634:6:61","nodeType":"VariableDeclaration","scope":16114,"src":"25626:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16073,"name":"uint256","nodeType":"ElementaryTypeName","src":"25626:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16077,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16075,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"25643:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25643:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25626:30:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16078,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16074,"src":"25673:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25683:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25673:11:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16084,"nodeType":"IfStatement","src":"25669:52:61","trueBody":{"id":16083,"nodeType":"Block","src":"25686:35:61","statements":[{"expression":{"hexValue":"30","id":16081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25708:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":16055,"id":16082,"nodeType":"Return","src":"25701:8:61"}]}},{"assignments":[16086,null],"declarations":[{"constant":false,"id":16086,"mutability":"mutable","name":"tVal","nameLocation":"25742:4:61","nodeType":"VariableDeclaration","scope":16114,"src":"25734:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16085,"name":"uint256","nodeType":"ElementaryTypeName","src":"25734:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":16089,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16087,"name":"_computeTotalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16448,"src":"25752:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256,uint256[] memory)"}},"id":16088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25752:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"25733:43:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16090,"name":"tVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16086,"src":"25793:4:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25801:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25793:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16096,"nodeType":"IfStatement","src":"25789:50:61","trueBody":{"id":16095,"nodeType":"Block","src":"25804:35:61","statements":[{"expression":{"hexValue":"30","id":16093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25826:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":16055,"id":16094,"nodeType":"Return","src":"25819:8:61"}]}},{"assignments":[16098],"declarations":[{"constant":false,"id":16098,"mutability":"mutable","name":"scaledTotalVal","nameLocation":"25927:14:61","nodeType":"VariableDeclaration","scope":16114,"src":"25919:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16097,"name":"uint256","nodeType":"ElementaryTypeName","src":"25919:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16102,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16099,"name":"tVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16086,"src":"25944:4:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":16100,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16065,"src":"25951:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25944:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25919:38:61"},{"assignments":[16104],"declarations":[{"constant":false,"id":16104,"mutability":"mutable","name":"unitPriceScaledDown","nameLocation":"25976:19:61","nodeType":"VariableDeclaration","scope":16114,"src":"25968:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16103,"name":"uint256","nodeType":"ElementaryTypeName","src":"25968:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16111,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16105,"name":"scaledTotalVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16098,"src":"25999:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":16106,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14172,"src":"26016:3:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25999:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16108,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25998:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":16109,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16074,"src":"26023:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25998:31:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25968:61:61"},{"expression":{"id":16112,"name":"unitPriceScaledDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16104,"src":"26049:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16055,"id":16113,"nodeType":"Return","src":"26042:26:61"}]},"documentation":{"id":16050,"nodeType":"StructuredDocumentation","src":"25321:105:61","text":" @dev Returns the unit price of the pool.\n @return The unit price of the pool."},"functionSelector":"e73faa2d","id":16115,"implemented":true,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"25441:9:61","nodeType":"FunctionDefinition","overrides":{"id":16052,"nodeType":"OverrideSpecifier","overrides":[],"src":"25467:8:61"},"parameters":{"id":16051,"nodeType":"ParameterList","parameters":[],"src":"25450:2:61"},"returnParameters":{"id":16055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16054,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16115,"src":"25485:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16053,"name":"uint256","nodeType":"ElementaryTypeName","src":"25485:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25484:9:61"},"scope":16885,"src":"25432:644:61","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4432],"body":{"id":16167,"nodeType":"Block","src":"26281:263:61","statements":[{"assignments":[16127],"declarations":[{"constant":false,"id":16127,"mutability":"mutable","name":"_reserves","nameLocation":"26309:9:61","nodeType":"VariableDeclaration","scope":16167,"src":"26292:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16125,"name":"uint256","nodeType":"ElementaryTypeName","src":"26292:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16126,"nodeType":"ArrayTypeName","src":"26292:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":16134,"initialValue":{"arguments":[{"expression":{"id":16131,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"26335:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26346:6:61","memberName":"length","nodeType":"MemberAccess","src":"26335:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"26321:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":16128,"name":"uint256","nodeType":"ElementaryTypeName","src":"26325:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16129,"nodeType":"ArrayTypeName","src":"26325:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":16133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26321:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"26292:61:61"},{"body":{"id":16163,"nodeType":"Block","src":"26414:94:61","statements":[{"expression":{"id":16161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16146,"name":"_reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16127,"src":"26429:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16148,"indexExpression":{"id":16147,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16136,"src":"26439:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26429:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":16158,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26490:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":16157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26482:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16156,"name":"address","nodeType":"ElementaryTypeName","src":"26482:7:61","typeDescriptions":{}}},"id":16159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26482:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":16150,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"26451:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16152,"indexExpression":{"id":16151,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16136,"src":"26462:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26451:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26465:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"26451:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16149,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"26444:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":16154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26444:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":16155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26472:9:61","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"26444:37:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26444:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26429:67:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16162,"nodeType":"ExpressionStatement","src":"26429:67:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16139,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16136,"src":"26386:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16140,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"26390:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26401:6:61","memberName":"length","nodeType":"MemberAccess","src":"26390:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26386:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16164,"initializationExpression":{"assignments":[16136],"declarations":[{"constant":false,"id":16136,"mutability":"mutable","name":"i","nameLocation":"26379:1:61","nodeType":"VariableDeclaration","scope":16164,"src":"26371:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16135,"name":"uint256","nodeType":"ElementaryTypeName","src":"26371:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16138,"initialValue":{"hexValue":"30","id":16137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26383:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26371:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26409:3:61","subExpression":{"id":16143,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16136,"src":"26409:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16145,"nodeType":"ExpressionStatement","src":"26409:3:61"},"nodeType":"ForStatement","src":"26366:142:61"},{"expression":{"id":16165,"name":"_reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16127,"src":"26527:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":16122,"id":16166,"nodeType":"Return","src":"26520:16:61"}]},"documentation":{"id":16116,"nodeType":"StructuredDocumentation","src":"26084:120:61","text":" @dev Returns an array of reserves for each asset in the pool.\n @return An array of reserves."},"functionSelector":"0902f1ac","id":16168,"implemented":true,"kind":"function","modifiers":[],"name":"getReserves","nameLocation":"26219:11:61","nodeType":"FunctionDefinition","overrides":{"id":16118,"nodeType":"OverrideSpecifier","overrides":[],"src":"26245:8:61"},"parameters":{"id":16117,"nodeType":"ParameterList","parameters":[],"src":"26230:2:61"},"returnParameters":{"id":16122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16168,"src":"26263:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16119,"name":"uint256","nodeType":"ElementaryTypeName","src":"26263:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16120,"nodeType":"ArrayTypeName","src":"26263:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"26262:18:61"},"scope":16885,"src":"26210:334:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4439],"body":{"id":16207,"nodeType":"Block","src":"26809:172:61","statements":[{"body":{"id":16205,"nodeType":"Block","src":"26868:106:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16188,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16171,"src":"26887:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"baseExpression":{"id":16189,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"26896:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16191,"indexExpression":{"id":16190,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16178,"src":"26907:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26896:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26910:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"26896:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"26887:28:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16204,"nodeType":"IfStatement","src":"26883:79:61","trueBody":{"expression":{"arguments":[{"arguments":[{"id":16200,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26956:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":16199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26948:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16198,"name":"address","nodeType":"ElementaryTypeName","src":"26948:7:61","typeDescriptions":{}}},"id":16201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26948:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":16195,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16171,"src":"26931:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16194,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"26924:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":16196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26924:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":16197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26938:9:61","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"26924:23:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26924:38:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16176,"id":16203,"nodeType":"Return","src":"26917:45:61"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16181,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16178,"src":"26840:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16182,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"26844:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26855:6:61","memberName":"length","nodeType":"MemberAccess","src":"26844:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26840:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16206,"initializationExpression":{"assignments":[16178],"declarations":[{"constant":false,"id":16178,"mutability":"mutable","name":"i","nameLocation":"26833:1:61","nodeType":"VariableDeclaration","scope":16206,"src":"26825:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16177,"name":"uint256","nodeType":"ElementaryTypeName","src":"26825:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16180,"initialValue":{"hexValue":"30","id":16179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26837:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26825:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26863:3:61","subExpression":{"id":16185,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16178,"src":"26863:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16187,"nodeType":"ExpressionStatement","src":"26863:3:61"},"nodeType":"ForStatement","src":"26820:154:61"}]},"documentation":{"id":16169,"nodeType":"StructuredDocumentation","src":"26552:172:61","text":" @dev Returns the reserve amount of the specified asset.\n @param asset The address of the asset.\n @return The reserve amount of the asset."},"functionSelector":"b2b55d70","id":16208,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetReserve","nameLocation":"26739:15:61","nodeType":"FunctionDefinition","overrides":{"id":16173,"nodeType":"OverrideSpecifier","overrides":[],"src":"26782:8:61"},"parameters":{"id":16172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16171,"mutability":"mutable","name":"asset","nameLocation":"26763:5:61","nodeType":"VariableDeclaration","scope":16208,"src":"26755:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16170,"name":"address","nodeType":"ElementaryTypeName","src":"26755:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26754:15:61"},"returnParameters":{"id":16176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16175,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16208,"src":"26800:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16174,"name":"uint256","nodeType":"ElementaryTypeName","src":"26800:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26799:9:61"},"scope":16885,"src":"26730:251:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4445],"body":{"id":16252,"nodeType":"Block","src":"27194:217:61","statements":[{"assignments":[16220],"declarations":[{"constant":false,"id":16220,"mutability":"mutable","name":"assets","nameLocation":"27222:6:61","nodeType":"VariableDeclaration","scope":16252,"src":"27205:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16218,"name":"address","nodeType":"ElementaryTypeName","src":"27205:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16219,"nodeType":"ArrayTypeName","src":"27205:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":16227,"initialValue":{"arguments":[{"expression":{"id":16224,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"27245:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27256:6:61","memberName":"length","nodeType":"MemberAccess","src":"27245:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"27231:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":16221,"name":"address","nodeType":"ElementaryTypeName","src":"27235:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16222,"nodeType":"ArrayTypeName","src":"27235:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":16226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27231:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"27205:58:61"},{"body":{"id":16248,"nodeType":"Block","src":"27322:58:61","statements":[{"expression":{"id":16246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16239,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16220,"src":"27337:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16241,"indexExpression":{"id":16240,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"27344:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27337:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":16242,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"27349:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16244,"indexExpression":{"id":16243,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"27360:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27349:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27363:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"27349:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27337:31:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16247,"nodeType":"ExpressionStatement","src":"27337:31:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16232,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"27294:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16233,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"27298:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27309:6:61","memberName":"length","nodeType":"MemberAccess","src":"27298:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27294:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16249,"initializationExpression":{"assignments":[16229],"declarations":[{"constant":false,"id":16229,"mutability":"mutable","name":"i","nameLocation":"27287:1:61","nodeType":"VariableDeclaration","scope":16249,"src":"27279:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16228,"name":"uint256","nodeType":"ElementaryTypeName","src":"27279:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16231,"initialValue":{"hexValue":"30","id":16230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27291:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27279:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"27317:3:61","subExpression":{"id":16236,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"27317:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16238,"nodeType":"ExpressionStatement","src":"27317:3:61"},"nodeType":"ForStatement","src":"27274:106:61"},{"expression":{"id":16250,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16220,"src":"27397:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":16215,"id":16251,"nodeType":"Return","src":"27390:13:61"}]},"documentation":{"id":16209,"nodeType":"StructuredDocumentation","src":"26989:130:61","text":" @dev Retrieves the list of assets in the pool.\n @return An array of addresses representing the assets."},"functionSelector":"67e4ac2c","id":16253,"implemented":true,"kind":"function","modifiers":[],"name":"getAssets","nameLocation":"27134:9:61","nodeType":"FunctionDefinition","overrides":{"id":16211,"nodeType":"OverrideSpecifier","overrides":[],"src":"27158:8:61"},"parameters":{"id":16210,"nodeType":"ParameterList","parameters":[],"src":"27143:2:61"},"returnParameters":{"id":16215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16214,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16253,"src":"27176:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16212,"name":"address","nodeType":"ElementaryTypeName","src":"27176:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16213,"nodeType":"ArrayTypeName","src":"27176:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"27175:18:61"},"scope":16885,"src":"27125:286:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4451],"body":{"id":16297,"nodeType":"Block","src":"27659:221:61","statements":[{"assignments":[16265],"declarations":[{"constant":false,"id":16265,"mutability":"mutable","name":"weights","nameLocation":"27687:7:61","nodeType":"VariableDeclaration","scope":16297,"src":"27670:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16263,"name":"uint256","nodeType":"ElementaryTypeName","src":"27670:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16264,"nodeType":"ArrayTypeName","src":"27670:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":16272,"initialValue":{"arguments":[{"expression":{"id":16269,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"27711:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27722:6:61","memberName":"length","nodeType":"MemberAccess","src":"27711:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"27697:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":16266,"name":"uint256","nodeType":"ElementaryTypeName","src":"27701:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16267,"nodeType":"ArrayTypeName","src":"27701:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":16271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27697:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"27670:59:61"},{"body":{"id":16293,"nodeType":"Block","src":"27788:60:61","statements":[{"expression":{"id":16291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16284,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16265,"src":"27803:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16286,"indexExpression":{"id":16285,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16274,"src":"27811:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27803:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":16287,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"27816:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16289,"indexExpression":{"id":16288,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16274,"src":"27827:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27816:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27830:6:61","memberName":"weight","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"27816:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27803:33:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16292,"nodeType":"ExpressionStatement","src":"27803:33:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16277,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16274,"src":"27760:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16278,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"27764:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27775:6:61","memberName":"length","nodeType":"MemberAccess","src":"27764:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27760:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16294,"initializationExpression":{"assignments":[16274],"declarations":[{"constant":false,"id":16274,"mutability":"mutable","name":"i","nameLocation":"27753:1:61","nodeType":"VariableDeclaration","scope":16294,"src":"27745:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16273,"name":"uint256","nodeType":"ElementaryTypeName","src":"27745:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16276,"initialValue":{"hexValue":"30","id":16275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27757:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27745:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"27783:3:61","subExpression":{"id":16281,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16274,"src":"27783:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16283,"nodeType":"ExpressionStatement","src":"27783:3:61"},"nodeType":"ForStatement","src":"27740:108:61"},{"expression":{"id":16295,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16265,"src":"27865:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":16260,"id":16296,"nodeType":"Return","src":"27858:14:61"}]},"documentation":{"id":16254,"nodeType":"StructuredDocumentation","src":"27419:164:61","text":" @dev Retrieves the list of weights associated with the assets in the pool.\n @return An array of uint256 values representing the weights."},"functionSelector":"22acb867","id":16298,"implemented":true,"kind":"function","modifiers":[],"name":"getWeights","nameLocation":"27598:10:61","nodeType":"FunctionDefinition","overrides":{"id":16256,"nodeType":"OverrideSpecifier","overrides":[],"src":"27623:8:61"},"parameters":{"id":16255,"nodeType":"ParameterList","parameters":[],"src":"27608:2:61"},"returnParameters":{"id":16260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16298,"src":"27641:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16257,"name":"uint256","nodeType":"ElementaryTypeName","src":"27641:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16258,"nodeType":"ArrayTypeName","src":"27641:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"27640:18:61"},"scope":16885,"src":"27589:291:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4456],"body":{"id":16349,"nodeType":"Block","src":"28102:377:61","statements":[{"assignments":[16305],"declarations":[{"constant":false,"id":16305,"mutability":"mutable","name":"rebalance_threshold","nameLocation":"28121:19:61","nodeType":"VariableDeclaration","scope":16349,"src":"28113:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16304,"name":"uint256","nodeType":"ElementaryTypeName","src":"28113:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16309,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16306,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"28143:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":16307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28152:22:61","memberName":"getREBALANCE_THRESHOLD","nodeType":"MemberAccess","referencedDeclaration":4878,"src":"28143:31:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":16308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28143:33:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28113:63:61"},{"assignments":[16314,16317],"declarations":[{"constant":false,"id":16314,"mutability":"mutable","name":"directions","nameLocation":"28202:10:61","nodeType":"VariableDeclaration","scope":16349,"src":"28188:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":16312,"name":"bool","nodeType":"ElementaryTypeName","src":"28188:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16313,"nodeType":"ArrayTypeName","src":"28188:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"},{"constant":false,"id":16317,"mutability":"mutable","name":"deviations","nameLocation":"28231:10:61","nodeType":"VariableDeclaration","scope":16349,"src":"28214:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16315,"name":"uint256","nodeType":"ElementaryTypeName","src":"28214:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16316,"nodeType":"ArrayTypeName","src":"28214:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":16320,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16318,"name":"getDeviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15982,"src":"28245:13:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (bool[] memory,uint256[] memory)"}},"id":16319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28245:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"28187:73:61"},{"body":{"id":16345,"nodeType":"Block","src":"28319:130:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16332,"name":"directions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16314,"src":"28338:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":16334,"indexExpression":{"id":16333,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16322,"src":"28349:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28338:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16335,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16317,"src":"28355:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16337,"indexExpression":{"id":16336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16322,"src":"28366:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28355:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":16338,"name":"rebalance_threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16305,"src":"28371:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28355:35:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28338:52:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16344,"nodeType":"IfStatement","src":"28334:104:61","trueBody":{"id":16343,"nodeType":"Block","src":"28392:46:61","statements":[{"expression":{"hexValue":"74727565","id":16341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28418:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":16303,"id":16342,"nodeType":"Return","src":"28411:11:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16325,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16322,"src":"28291:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16326,"name":"deviations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16317,"src":"28295:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28306:6:61","memberName":"length","nodeType":"MemberAccess","src":"28295:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28291:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16346,"initializationExpression":{"assignments":[16322],"declarations":[{"constant":false,"id":16322,"mutability":"mutable","name":"i","nameLocation":"28284:1:61","nodeType":"VariableDeclaration","scope":16346,"src":"28276:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16321,"name":"uint256","nodeType":"ElementaryTypeName","src":"28276:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16324,"initialValue":{"hexValue":"30","id":16323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28288:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"28276:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"28314:3:61","subExpression":{"id":16329,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16322,"src":"28314:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16331,"nodeType":"ExpressionStatement","src":"28314:3:61"},"nodeType":"ForStatement","src":"28271:178:61"},{"expression":{"hexValue":"66616c7365","id":16347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28466:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":16303,"id":16348,"nodeType":"Return","src":"28459:12:61"}]},"documentation":{"id":16299,"nodeType":"StructuredDocumentation","src":"27888:152:61","text":" @dev Checks if rebalancing is needed for the pool.\n @return A boolean value indicating whether rebalancing is needed or not."},"functionSelector":"8a77c8dc","id":16350,"implemented":true,"kind":"function","modifiers":[],"name":"isRebalanceNeeded","nameLocation":"28055:17:61","nodeType":"FunctionDefinition","parameters":{"id":16300,"nodeType":"ParameterList","parameters":[],"src":"28072:2:61"},"returnParameters":{"id":16303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16350,"src":"28096:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16301,"name":"bool","nodeType":"ElementaryTypeName","src":"28096:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28095:6:61"},"scope":16885,"src":"28046:433:61","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":16447,"nodeType":"Block","src":"28808:673:61","statements":[{"assignments":[16360],"declarations":[{"constant":false,"id":16360,"mutability":"mutable","name":"numAssets","nameLocation":"28827:9:61","nodeType":"VariableDeclaration","scope":16447,"src":"28819:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16359,"name":"uint256","nodeType":"ElementaryTypeName","src":"28819:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16363,"initialValue":{"expression":{"id":16361,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"28839:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28850:6:61","memberName":"length","nodeType":"MemberAccess","src":"28839:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28819:37:61"},{"expression":{"id":16370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16364,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16357,"src":"28867:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16368,"name":"numAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16360,"src":"28894:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"28880:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":16365,"name":"uint256","nodeType":"ElementaryTypeName","src":"28884:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16366,"nodeType":"ArrayTypeName","src":"28884:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":16369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28880:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"28867:37:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16371,"nodeType":"ExpressionStatement","src":"28867:37:61"},{"body":{"id":16441,"nodeType":"Block","src":"28955:483:61","statements":[{"assignments":[16383],"declarations":[{"constant":false,"id":16383,"mutability":"mutable","name":"asset","nameLocation":"28978:5:61","nodeType":"VariableDeclaration","scope":16441,"src":"28970:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16382,"name":"address","nodeType":"ElementaryTypeName","src":"28970:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":16388,"initialValue":{"expression":{"baseExpression":{"id":16384,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"28986:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16386,"indexExpression":{"id":16385,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16373,"src":"28997:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28986:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16387,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29000:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"28986:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"28970:35:61"},{"assignments":[16390],"declarations":[{"constant":false,"id":16390,"mutability":"mutable","name":"assetReserve","nameLocation":"29028:12:61","nodeType":"VariableDeclaration","scope":16441,"src":"29020:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16389,"name":"uint256","nodeType":"ElementaryTypeName","src":"29020:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16397,"initialValue":{"arguments":[{"arguments":[{"id":16394,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16383,"src":"29067:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29059:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16392,"name":"address","nodeType":"ElementaryTypeName","src":"29059:7:61","typeDescriptions":{}}},"id":16395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29059:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16391,"name":"getAssetReserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16208,"src":"29043:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":16396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29043:31:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29020:54:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16398,"name":"assetReserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16390,"src":"29095:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29111:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29095:17:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16402,"nodeType":"IfStatement","src":"29091:31:61","trueBody":{"id":16401,"nodeType":"Continue","src":"29114:8:61"}},{"condition":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16405,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16383,"src":"29152:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29144:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16403,"name":"address","nodeType":"ElementaryTypeName","src":"29144:7:61","typeDescriptions":{}}},"id":16406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29144:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16407,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"29162:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29144:27:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":16409,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29143:29:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16433,"nodeType":"Block","src":"29243:148:61","statements":[{"assignments":[16418],"declarations":[{"constant":false,"id":16418,"mutability":"mutable","name":"valuation","nameLocation":"29270:9:61","nodeType":"VariableDeclaration","scope":16433,"src":"29262:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16417,"name":"uint256","nodeType":"ElementaryTypeName","src":"29262:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16426,"initialValue":{"arguments":[{"arguments":[{"id":16422,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16383,"src":"29310:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29302:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16420,"name":"address","nodeType":"ElementaryTypeName","src":"29302:7:61","typeDescriptions":{}}},"id":16423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29302:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16424,"name":"assetReserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16390,"src":"29318:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16419,"name":"_convertTokenToBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16743,"src":"29282:19:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":16425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29282:49:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29262:69:61"},{"expression":{"id":16431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16427,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16357,"src":"29350:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16429,"indexExpression":{"id":16428,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16373,"src":"29361:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"29350:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16430,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16418,"src":"29366:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29350:25:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16432,"nodeType":"ExpressionStatement","src":"29350:25:61"}]},"id":16434,"nodeType":"IfStatement","src":"29139:252:61","trueBody":{"id":16416,"nodeType":"Block","src":"29174:63:61","statements":[{"expression":{"id":16414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16410,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16357,"src":"29193:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16412,"indexExpression":{"id":16411,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16373,"src":"29204:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"29193:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16413,"name":"assetReserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16390,"src":"29209:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29193:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16415,"nodeType":"ExpressionStatement","src":"29193:28:61"}]}},{"expression":{"id":16439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16435,"name":"tVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16354,"src":"29405:4:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":16436,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16357,"src":"29413:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16438,"indexExpression":{"id":16437,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16373,"src":"29424:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29413:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29405:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16440,"nodeType":"ExpressionStatement","src":"29405:21:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16376,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16373,"src":"28935:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16377,"name":"numAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16360,"src":"28939:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28935:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16442,"initializationExpression":{"assignments":[16373],"declarations":[{"constant":false,"id":16373,"mutability":"mutable","name":"i","nameLocation":"28928:1:61","nodeType":"VariableDeclaration","scope":16442,"src":"28920:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16372,"name":"uint256","nodeType":"ElementaryTypeName","src":"28920:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16375,"initialValue":{"hexValue":"30","id":16374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28932:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"28920:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"28950:3:61","subExpression":{"id":16379,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16373,"src":"28950:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16381,"nodeType":"ExpressionStatement","src":"28950:3:61"},"nodeType":"ForStatement","src":"28915:523:61"},{"expression":{"components":[{"id":16443,"name":"tVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16354,"src":"29456:4:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16444,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16357,"src":"29462:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":16445,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29455:18:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"functionReturnParameters":16358,"id":16446,"nodeType":"Return","src":"29448:25:61"}]},"documentation":{"id":16351,"nodeType":"StructuredDocumentation","src":"28487:215:61","text":" @dev Computes the total valuation of the assets in the pool.\n @return tVal The total valuation of the assets.\n @return valuations An array of valuations for each asset in the pool."},"id":16448,"implemented":true,"kind":"function","modifiers":[],"name":"_computeTotalValuation","nameLocation":"28717:22:61","nodeType":"FunctionDefinition","parameters":{"id":16352,"nodeType":"ParameterList","parameters":[],"src":"28739:2:61"},"returnParameters":{"id":16358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16354,"mutability":"mutable","name":"tVal","nameLocation":"28773:4:61","nodeType":"VariableDeclaration","scope":16448,"src":"28765:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16353,"name":"uint256","nodeType":"ElementaryTypeName","src":"28765:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16357,"mutability":"mutable","name":"valuations","nameLocation":"28796:10:61","nodeType":"VariableDeclaration","scope":16448,"src":"28779:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16355,"name":"uint256","nodeType":"ElementaryTypeName","src":"28779:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16356,"nodeType":"ArrayTypeName","src":"28779:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"28764:43:61"},"scope":16885,"src":"28708:773:61","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16572,"nodeType":"Block","src":"29923:966:61","statements":[{"assignments":[16453],"declarations":[{"constant":false,"id":16453,"mutability":"mutable","name":"rebalancer","nameLocation":"29942:10:61","nodeType":"VariableDeclaration","scope":16572,"src":"29934:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16452,"name":"address","nodeType":"ElementaryTypeName","src":"29934:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":16457,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16454,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"29955:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":16455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29964:19:61","memberName":"getBaluniRebalancer","nodeType":"MemberAccess","referencedDeclaration":4833,"src":"29955:28:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":16456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29955:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"29934:51:61"},{"assignments":[16462],"declarations":[{"constant":false,"id":16462,"mutability":"mutable","name":"assets","nameLocation":"30013:6:61","nodeType":"VariableDeclaration","scope":16572,"src":"29996:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16460,"name":"address","nodeType":"ElementaryTypeName","src":"29996:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16461,"nodeType":"ArrayTypeName","src":"29996:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":16465,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16463,"name":"getAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16253,"src":"30022:9:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view returns (address[] memory)"}},"id":16464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30022:11:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"29996:37:61"},{"assignments":[16470],"declarations":[{"constant":false,"id":16470,"mutability":"mutable","name":"weights","nameLocation":"30061:7:61","nodeType":"VariableDeclaration","scope":16572,"src":"30044:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16468,"name":"uint256","nodeType":"ElementaryTypeName","src":"30044:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16469,"nodeType":"ArrayTypeName","src":"30044:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":16473,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16471,"name":"getWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16298,"src":"30071:10:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256[] memory)"}},"id":16472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30071:12:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"30044:39:61"},{"body":{"id":16525,"nodeType":"Block","src":"30144:261:61","statements":[{"assignments":[16486],"declarations":[{"constant":false,"id":16486,"mutability":"mutable","name":"allowance","nameLocation":"30167:9:61","nodeType":"VariableDeclaration","scope":16525,"src":"30159:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16485,"name":"uint256","nodeType":"ElementaryTypeName","src":"30159:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16500,"initialValue":{"arguments":[{"arguments":[{"id":16496,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"30225:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":16495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30217:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16494,"name":"address","nodeType":"ElementaryTypeName","src":"30217:7:61","typeDescriptions":{}}},"id":16497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30217:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16498,"name":"rebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16453,"src":"30232:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":16488,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"30186:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16490,"indexExpression":{"id":16489,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16475,"src":"30197:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30186:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30200:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"30186:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16487,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"30179:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":16492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30179:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":16493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30207:9:61","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"30179:37:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":16499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30179:64:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30159:84:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16501,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16486,"src":"30262:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":16504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30279:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16503,"name":"uint256","nodeType":"ElementaryTypeName","src":"30279:7:61","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":16502,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"30274:4:61","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30274:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":16506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30288:3:61","memberName":"max","nodeType":"MemberAccess","src":"30274:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30262:29:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16524,"nodeType":"IfStatement","src":"30258:136:61","trueBody":{"id":16523,"nodeType":"Block","src":"30293:101:61","statements":[{"expression":{"arguments":[{"id":16515,"name":"rebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16453,"src":"30348:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":16518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30365:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16517,"name":"uint256","nodeType":"ElementaryTypeName","src":"30365:7:61","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":16516,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"30360:4:61","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30360:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":16520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30374:3:61","memberName":"max","nodeType":"MemberAccess","src":"30360:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":16509,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"30319:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16511,"indexExpression":{"id":16510,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16475,"src":"30330:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30319:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30333:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"30319:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16508,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"30312:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":16513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30312:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":16514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30340:7:61","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"30312:35:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":16521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30312:66:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16522,"nodeType":"ExpressionStatement","src":"30312:66:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16478,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16475,"src":"30116:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16479,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"30120:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30131:6:61","memberName":"length","nodeType":"MemberAccess","src":"30120:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30116:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16526,"initializationExpression":{"assignments":[16475],"declarations":[{"constant":false,"id":16475,"mutability":"mutable","name":"i","nameLocation":"30109:1:61","nodeType":"VariableDeclaration","scope":16526,"src":"30101:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16474,"name":"uint256","nodeType":"ElementaryTypeName","src":"30101:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16477,"initialValue":{"hexValue":"30","id":16476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30113:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"30101:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"30139:3:61","subExpression":{"id":16482,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16475,"src":"30139:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16484,"nodeType":"ExpressionStatement","src":"30139:3:61"},"nodeType":"ForStatement","src":"30096:309:61"},{"assignments":[16531],"declarations":[{"constant":false,"id":16531,"mutability":"mutable","name":"balances","nameLocation":"30434:8:61","nodeType":"VariableDeclaration","scope":16572,"src":"30417:25:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16529,"name":"uint256","nodeType":"ElementaryTypeName","src":"30417:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16530,"nodeType":"ArrayTypeName","src":"30417:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":16534,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":16532,"name":"getReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16168,"src":"30445:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256[] memory)"}},"id":16533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30445:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"30417:41:61"},{"assignments":[16536],"declarations":[{"constant":false,"id":16536,"mutability":"mutable","name":"rebalance_threshold","nameLocation":"30477:19:61","nodeType":"VariableDeclaration","scope":16572,"src":"30469:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16535,"name":"uint256","nodeType":"ElementaryTypeName","src":"30469:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16540,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16537,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"30499:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":16538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30508:22:61","memberName":"getREBALANCE_THRESHOLD","nodeType":"MemberAccess","referencedDeclaration":4878,"src":"30499:31:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":16539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30499:33:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30469:63:61"},{"expression":{"arguments":[{"id":16545,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16531,"src":"30599:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16546,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16462,"src":"30622:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":16547,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16470,"src":"30643:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16548,"name":"rebalance_threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16536,"src":"30665:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":16551,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"30707:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":16550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30699:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16549,"name":"address","nodeType":"ElementaryTypeName","src":"30699:7:61","typeDescriptions":{}}},"id":16552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30699:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":16555,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"30735:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":16554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30727:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16553,"name":"address","nodeType":"ElementaryTypeName","src":"30727:7:61","typeDescriptions":{}}},"id":16556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30727:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16557,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"30755:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":16542,"name":"rebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16453,"src":"30563:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16541,"name":"IBaluniV1Rebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4675,"src":"30543:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Rebalancer_$4675_$","typeString":"type(contract IBaluniV1Rebalancer)"}},"id":16543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30543:31:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Rebalancer_$4675","typeString":"contract IBaluniV1Rebalancer"}},"id":16544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30575:9:61","memberName":"rebalance","nodeType":"MemberAccess","referencedDeclaration":4642,"src":"30543:41:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,uint256[] memory,uint256,address,address,address) external"}},"id":16558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30543:232:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16559,"nodeType":"ExpressionStatement","src":"30543:232:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16560,"name":"_updateSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15145,"src":"30788:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":16561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30788:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16562,"nodeType":"ExpressionStatement","src":"30788:17:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16563,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[16884,1046],"referencedDeclaration":16884,"src":"30816:7:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":16564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30816:9:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16565,"nodeType":"ExpressionStatement","src":"30816:9:61"},{"eventCall":{"arguments":[{"expression":{"id":16567,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"30862:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30866:6:61","memberName":"sender","nodeType":"MemberAccess","src":"30862:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16569,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16462,"src":"30874:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":16566,"name":"RebalancePerformed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4290,"src":"30843:18:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address[] memory)"}},"id":16570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30843:38:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16571,"nodeType":"EmitStatement","src":"30838:43:61"}]},"documentation":{"id":16449,"nodeType":"StructuredDocumentation","src":"29489:382:61","text":" @dev Performs rebalance if needed.\n This function retrieves the assets and weights from the `assetInfos` array,\n and calls the `rebalance` function of the `rebalancer` contract with the retrieved values.\n It emits a `RebalancePerformed` event after the rebalance is performed.\n @notice This function should only be called internally."},"id":16573,"implemented":true,"kind":"function","modifiers":[],"name":"_performRebalanceIfNeeded","nameLocation":"29886:25:61","nodeType":"FunctionDefinition","parameters":{"id":16450,"nodeType":"ParameterList","parameters":[],"src":"29911:2:61"},"returnParameters":{"id":16451,"nodeType":"ParameterList","parameters":[],"src":"29923:0:61"},"scope":16885,"src":"29877:1012:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16603,"nodeType":"Block","src":"31266:168:61","statements":[{"body":{"id":16599,"nodeType":"Block","src":"31325:65:61","statements":[{"expression":{"id":16597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16593,"name":"totalAddedLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16580,"src":"31340:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":16594,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16577,"src":"31363:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16596,"indexExpression":{"id":16595,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16583,"src":"31376:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31363:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31340:38:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16598,"nodeType":"ExpressionStatement","src":"31340:38:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16586,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16583,"src":"31297:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16587,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"31301:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31312:6:61","memberName":"length","nodeType":"MemberAccess","src":"31301:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31297:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16600,"initializationExpression":{"assignments":[16583],"declarations":[{"constant":false,"id":16583,"mutability":"mutable","name":"i","nameLocation":"31290:1:61","nodeType":"VariableDeclaration","scope":16600,"src":"31282:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16582,"name":"uint256","nodeType":"ElementaryTypeName","src":"31282:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16585,"initialValue":{"hexValue":"30","id":16584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31294:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"31282:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"31320:3:61","subExpression":{"id":16590,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16583,"src":"31320:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16592,"nodeType":"ExpressionStatement","src":"31320:3:61"},"nodeType":"ForStatement","src":"31277:113:61"},{"expression":{"id":16601,"name":"totalAddedLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16580,"src":"31407:19:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16581,"id":16602,"nodeType":"Return","src":"31400:26:61"}]},"documentation":{"id":16574,"nodeType":"StructuredDocumentation","src":"30897:225:61","text":" @dev Calculates the total added liquidity based on the amounts to add.\n @param amountsToAdd An array of amounts to add for each asset.\n @return totalAddedLiquidity The total added liquidity."},"id":16604,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateTotalAddedLiquidity","nameLocation":"31137:29:61","nodeType":"FunctionDefinition","parameters":{"id":16578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16577,"mutability":"mutable","name":"amountsToAdd","nameLocation":"31194:12:61","nodeType":"VariableDeclaration","scope":16604,"src":"31177:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16575,"name":"uint256","nodeType":"ElementaryTypeName","src":"31177:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16576,"nodeType":"ArrayTypeName","src":"31177:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"31166:47:61"},"returnParameters":{"id":16581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16580,"mutability":"mutable","name":"totalAddedLiquidity","nameLocation":"31245:19:61","nodeType":"VariableDeclaration","scope":16604,"src":"31237:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16579,"name":"uint256","nodeType":"ElementaryTypeName","src":"31237:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31236:29:61"},"scope":16885,"src":"31128:306:61","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16669,"nodeType":"Block","src":"31921:381:61","statements":[{"expression":{"id":16623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16616,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16614,"src":"31932:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":16620,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"31961:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31972:6:61","memberName":"length","nodeType":"MemberAccess","src":"31961:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"31947:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":16617,"name":"uint256","nodeType":"ElementaryTypeName","src":"31951:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16618,"nodeType":"ArrayTypeName","src":"31951:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":16622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31947:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"31932:47:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16624,"nodeType":"ExpressionStatement","src":"31932:47:61"},{"body":{"id":16665,"nodeType":"Block","src":"32038:225:61","statements":[{"assignments":[16637],"declarations":[{"constant":false,"id":16637,"mutability":"mutable","name":"targetValuation","nameLocation":"32061:15:61","nodeType":"VariableDeclaration","scope":16665,"src":"32053:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16636,"name":"uint256","nodeType":"ElementaryTypeName","src":"32053:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16647,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16638,"name":"tVal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16607,"src":"32080:4:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"baseExpression":{"id":16639,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"32087:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16641,"indexExpression":{"id":16640,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16626,"src":"32098:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32087:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32101:6:61","memberName":"weight","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"32087:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32080:27:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16644,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32079:29:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":16645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32111:5:61","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"32079:37:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32053:63:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16648,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16610,"src":"32135:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16650,"indexExpression":{"id":16649,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16626,"src":"32146:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32135:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16651,"name":"targetValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16637,"src":"32151:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32135:31:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16664,"nodeType":"IfStatement","src":"32131:121:61","trueBody":{"id":16663,"nodeType":"Block","src":"32168:84:61","statements":[{"expression":{"id":16661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16653,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16614,"src":"32187:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16655,"indexExpression":{"id":16654,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16626,"src":"32200:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"32187:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16656,"name":"targetValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16637,"src":"32205:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":16657,"name":"valuations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16610,"src":"32223:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16659,"indexExpression":{"id":16658,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16626,"src":"32234:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32223:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32205:31:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32187:49:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16662,"nodeType":"ExpressionStatement","src":"32187:49:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16629,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16626,"src":"32010:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16630,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"32014:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32025:6:61","memberName":"length","nodeType":"MemberAccess","src":"32014:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32010:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16666,"initializationExpression":{"assignments":[16626],"declarations":[{"constant":false,"id":16626,"mutability":"mutable","name":"i","nameLocation":"32003:1:61","nodeType":"VariableDeclaration","scope":16666,"src":"31995:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16625,"name":"uint256","nodeType":"ElementaryTypeName","src":"31995:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16628,"initialValue":{"hexValue":"30","id":16627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32007:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"31995:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"32033:3:61","subExpression":{"id":16633,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16626,"src":"32033:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16635,"nodeType":"ExpressionStatement","src":"32033:3:61"},"nodeType":"ForStatement","src":"31990:273:61"},{"expression":{"id":16667,"name":"amountsToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16614,"src":"32282:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":16615,"id":16668,"nodeType":"Return","src":"32275:19:61"}]},"documentation":{"id":16605,"nodeType":"StructuredDocumentation","src":"31442:319:61","text":" @dev Calculates the amounts to add to each asset based on the total valuation and current valuations.\n @param tVal The total valuation of the pool.\n @param valuations An array of current valuations for each asset.\n @return amountsToAdd An array of amounts to add to each asset."},"id":16670,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateAmountsToAdd","nameLocation":"31776:22:61","nodeType":"FunctionDefinition","parameters":{"id":16611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16607,"mutability":"mutable","name":"tVal","nameLocation":"31817:4:61","nodeType":"VariableDeclaration","scope":16670,"src":"31809:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16606,"name":"uint256","nodeType":"ElementaryTypeName","src":"31809:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16610,"mutability":"mutable","name":"valuations","nameLocation":"31849:10:61","nodeType":"VariableDeclaration","scope":16670,"src":"31832:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16608,"name":"uint256","nodeType":"ElementaryTypeName","src":"31832:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16609,"nodeType":"ArrayTypeName","src":"31832:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"31798:68:61"},"returnParameters":{"id":16615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16614,"mutability":"mutable","name":"amountsToAdd","nameLocation":"31907:12:61","nodeType":"VariableDeclaration","scope":16670,"src":"31890:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16612,"name":"uint256","nodeType":"ElementaryTypeName","src":"31890:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16613,"nodeType":"ArrayTypeName","src":"31890:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"31889:31:61"},"scope":16885,"src":"31767:535:61","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16708,"nodeType":"Block","src":"32681:264:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":16680,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"32696:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16682,"indexExpression":{"id":16681,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16673,"src":"32707:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32696:17:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32714:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"32696:23:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16684,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"32723:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"32696:36:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16688,"nodeType":"IfStatement","src":"32692:60:61","trueBody":{"expression":{"id":16686,"name":"amountToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16675,"src":"32741:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16679,"id":16687,"nodeType":"Return","src":"32734:18:61"}},{"assignments":[16690],"declarations":[{"constant":false,"id":16690,"mutability":"mutable","name":"tokenAmount","nameLocation":"32771:11:61","nodeType":"VariableDeclaration","scope":16708,"src":"32763:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16689,"name":"uint256","nodeType":"ElementaryTypeName","src":"32763:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16698,"initialValue":{"arguments":[{"expression":{"baseExpression":{"id":16692,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"32805:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16694,"indexExpression":{"id":16693,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16673,"src":"32816:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32805:17:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32823:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"32805:23:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16696,"name":"amountToAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16675,"src":"32830:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16691,"name":"_convertBaseToToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16726,"src":"32785:19:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":16697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32785:57:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32763:79:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16700,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16690,"src":"32861:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32875:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32861:15:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420746f6b656e20616d6f756e7420746f20616464","id":16703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"32878:29:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_231381c7ce9cab5a06140be844586c7572b2dd117d8de83c9f9bda39108cd19d","typeString":"literal_string \"Invalid token amount to add\""},"value":"Invalid token amount to add"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_231381c7ce9cab5a06140be844586c7572b2dd117d8de83c9f9bda39108cd19d","typeString":"literal_string \"Invalid token amount to add\""}],"id":16699,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"32853:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32853:55:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16705,"nodeType":"ExpressionStatement","src":"32853:55:61"},{"expression":{"id":16706,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16690,"src":"32926:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16679,"id":16707,"nodeType":"Return","src":"32919:18:61"}]},"documentation":{"id":16671,"nodeType":"StructuredDocumentation","src":"32310:268:61","text":" @dev Internal function to transfer tokens from the caller to the contract and calculate the liquidity.\n @param index The index of the asset in the assetInfos array.\n @param amountToAdd The amount of native tokens to add as liquidity."},"id":16709,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateLiquidity","nameLocation":"32593:19:61","nodeType":"FunctionDefinition","parameters":{"id":16676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16673,"mutability":"mutable","name":"index","nameLocation":"32621:5:61","nodeType":"VariableDeclaration","scope":16709,"src":"32613:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16672,"name":"uint256","nodeType":"ElementaryTypeName","src":"32613:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16675,"mutability":"mutable","name":"amountToAdd","nameLocation":"32636:11:61","nodeType":"VariableDeclaration","scope":16709,"src":"32628:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16674,"name":"uint256","nodeType":"ElementaryTypeName","src":"32628:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32612:36:61"},"returnParameters":{"id":16679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16709,"src":"32672:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16677,"name":"uint256","nodeType":"ElementaryTypeName","src":"32672:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32671:9:61"},"scope":16885,"src":"32584:361:61","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16725,"nodeType":"Block","src":"33340:66:61","statements":[{"expression":{"arguments":[{"id":16720,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"33371:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16721,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"33382:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16722,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16714,"src":"33391:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16719,"name":"getAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15858,"src":"33358:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":16723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33358:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16718,"id":16724,"nodeType":"Return","src":"33351:47:61"}]},"documentation":{"id":16710,"nodeType":"StructuredDocumentation","src":"32953:287:61","text":" @dev Converts the specified amount of native token to the corresponding token amount.\n @param toToken The address of the native token to convert from.\n @param amount The amount of native token to convert.\n @return The corresponding token amount."},"id":16726,"implemented":true,"kind":"function","modifiers":[],"name":"_convertBaseToToken","nameLocation":"33255:19:61","nodeType":"FunctionDefinition","parameters":{"id":16715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16712,"mutability":"mutable","name":"toToken","nameLocation":"33283:7:61","nodeType":"VariableDeclaration","scope":16726,"src":"33275:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16711,"name":"address","nodeType":"ElementaryTypeName","src":"33275:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16714,"mutability":"mutable","name":"amount","nameLocation":"33300:6:61","nodeType":"VariableDeclaration","scope":16726,"src":"33292:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16713,"name":"uint256","nodeType":"ElementaryTypeName","src":"33292:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33274:33:61"},"returnParameters":{"id":16718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16717,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16726,"src":"33331:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16716,"name":"uint256","nodeType":"ElementaryTypeName","src":"33331:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33330:9:61"},"scope":16885,"src":"33246:160:61","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16742,"nodeType":"Block","src":"33815:68:61","statements":[{"expression":{"arguments":[{"id":16737,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16729,"src":"33846:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16738,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"33857:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16739,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16731,"src":"33868:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16736,"name":"getAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15858,"src":"33833:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":16740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33833:42:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16735,"id":16741,"nodeType":"Return","src":"33826:49:61"}]},"documentation":{"id":16727,"nodeType":"StructuredDocumentation","src":"33414:287:61","text":" @dev Converts the specified token to the native token using the rebalancer contract.\n @param fromToken The address of the token to convert from.\n @param amount The amount of tokens to convert.\n @return tokenAmount The converted amount of tokens."},"id":16743,"implemented":true,"kind":"function","modifiers":[],"name":"_convertTokenToBase","nameLocation":"33716:19:61","nodeType":"FunctionDefinition","parameters":{"id":16732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16729,"mutability":"mutable","name":"fromToken","nameLocation":"33744:9:61","nodeType":"VariableDeclaration","scope":16743,"src":"33736:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16728,"name":"address","nodeType":"ElementaryTypeName","src":"33736:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16731,"mutability":"mutable","name":"amount","nameLocation":"33763:6:61","nodeType":"VariableDeclaration","scope":16743,"src":"33755:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16730,"name":"uint256","nodeType":"ElementaryTypeName","src":"33755:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33735:35:61"},"returnParameters":{"id":16735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16734,"mutability":"mutable","name":"tokenAmount","nameLocation":"33802:11:61","nodeType":"VariableDeclaration","scope":16743,"src":"33794:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16733,"name":"uint256","nodeType":"ElementaryTypeName","src":"33794:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33793:21:61"},"scope":16885,"src":"33707:176:61","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16758,"nodeType":"Block","src":"34182:85:61","statements":[{"assignments":[16753],"declarations":[{"constant":false,"id":16753,"mutability":"mutable","name":"name","nameLocation":"34207:4:61","nodeType":"VariableDeclaration","scope":16758,"src":"34193:18:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16752,"name":"string","nodeType":"ElementaryTypeName","src":"34193:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":16755,"initialValue":{"hexValue":"42616c756e69204c697175696469747920506f6f6c","id":16754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34214:23:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_e5796959c7f0eb32895e2befb07c0339d8ecb4a2f8c1f834638972d086e66bfa","typeString":"literal_string \"Baluni Liquidity Pool\""},"value":"Baluni Liquidity Pool"},"nodeType":"VariableDeclarationStatement","src":"34193:44:61"},{"expression":{"id":16756,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"34255:4:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":16751,"id":16757,"nodeType":"Return","src":"34248:11:61"}]},"documentation":{"id":16744,"nodeType":"StructuredDocumentation","src":"33891:194:61","text":" @dev Generates the name for the pool token based on the symbols of the assets.\n @param _assets The array of asset addresses.\n @return The generated token name."},"id":16759,"implemented":true,"kind":"function","modifiers":[],"name":"generateTokenName","nameLocation":"34100:17:61","nodeType":"FunctionDefinition","parameters":{"id":16748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16747,"mutability":"mutable","name":"_assets","nameLocation":"34135:7:61","nodeType":"VariableDeclaration","scope":16759,"src":"34118:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16745,"name":"address","nodeType":"ElementaryTypeName","src":"34118:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16746,"nodeType":"ArrayTypeName","src":"34118:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"34117:26:61"},"returnParameters":{"id":16751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16759,"src":"34167:13:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16749,"name":"string","nodeType":"ElementaryTypeName","src":"34167:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"34166:15:61"},"scope":16885,"src":"34091:176:61","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":16828,"nodeType":"Block","src":"34572:402:61","statements":[{"assignments":[16769],"declarations":[{"constant":false,"id":16769,"mutability":"mutable","name":"symbol","nameLocation":"34597:6:61","nodeType":"VariableDeclaration","scope":16828,"src":"34583:20:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16768,"name":"string","nodeType":"ElementaryTypeName","src":"34583:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":16771,"initialValue":{"hexValue":"624c502d","id":16770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34606:6:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_521f0fdd0f54b06c588c2a06ed1473e344628dd12a3a2d81341e3b0a2f1f68bf","typeString":"literal_string \"bLP-\""},"value":"bLP-"},"nodeType":"VariableDeclarationStatement","src":"34583:29:61"},{"body":{"id":16824,"nodeType":"Block","src":"34668:275:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16783,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16773,"src":"34687:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34692:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34687:6:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16822,"nodeType":"Block","src":"34814:118:61","statements":[{"expression":{"id":16820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16804,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16769,"src":"34833:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":16809,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16769,"src":"34866:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2d","id":16810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34874:3:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":16812,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16763,"src":"34894:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16814,"indexExpression":{"id":16813,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16773,"src":"34902:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34894:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16811,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"34879:14:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":16815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34879:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":16816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34906:6:61","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":2670,"src":"34879:33:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":16817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34879:35:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":16807,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"34849:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34853:12:61","memberName":"encodePacked","nodeType":"MemberAccess","src":"34849:16:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34849:66:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34842:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":16805,"name":"string","nodeType":"ElementaryTypeName","src":"34842:6:61","typeDescriptions":{}}},"id":16819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34842:74:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"34833:83:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":16821,"nodeType":"ExpressionStatement","src":"34833:83:61"}]},"id":16823,"nodeType":"IfStatement","src":"34683:249:61","trueBody":{"id":16803,"nodeType":"Block","src":"34695:113:61","statements":[{"expression":{"id":16801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16786,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16769,"src":"34714:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":16791,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16769,"src":"34747:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":16793,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16763,"src":"34770:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16795,"indexExpression":{"id":16794,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16773,"src":"34778:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34770:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16792,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"34755:14:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":16796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34755:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":16797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34782:6:61","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":2670,"src":"34755:33:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":16798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34755:35:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":16789,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"34730:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34734:12:61","memberName":"encodePacked","nodeType":"MemberAccess","src":"34730:16:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34730:61:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34723:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":16787,"name":"string","nodeType":"ElementaryTypeName","src":"34723:6:61","typeDescriptions":{}}},"id":16800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34723:69:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"34714:78:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":16802,"nodeType":"ExpressionStatement","src":"34714:78:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16776,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16773,"src":"34643:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16777,"name":"_assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16763,"src":"34647:7:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34655:6:61","memberName":"length","nodeType":"MemberAccess","src":"34647:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34643:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16825,"initializationExpression":{"assignments":[16773],"declarations":[{"constant":false,"id":16773,"mutability":"mutable","name":"i","nameLocation":"34636:1:61","nodeType":"VariableDeclaration","scope":16825,"src":"34628:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16772,"name":"uint256","nodeType":"ElementaryTypeName","src":"34628:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16775,"initialValue":{"hexValue":"30","id":16774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34640:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"34628:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"34663:3:61","subExpression":{"id":16780,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16773,"src":"34663:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16782,"nodeType":"ExpressionStatement","src":"34663:3:61"},"nodeType":"ForStatement","src":"34623:320:61"},{"expression":{"id":16826,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16769,"src":"34960:6:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":16767,"id":16827,"nodeType":"Return","src":"34953:13:61"}]},"documentation":{"id":16760,"nodeType":"StructuredDocumentation","src":"34275:198:61","text":" @dev Generates the symbol for the pool token based on the symbols of the assets.\n @param _assets The array of asset addresses.\n @return The generated token symbol."},"id":16829,"implemented":true,"kind":"function","modifiers":[],"name":"generateTokenSymbol","nameLocation":"34488:19:61","nodeType":"FunctionDefinition","parameters":{"id":16764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16763,"mutability":"mutable","name":"_assets","nameLocation":"34525:7:61","nodeType":"VariableDeclaration","scope":16829,"src":"34508:24:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16761,"name":"address","nodeType":"ElementaryTypeName","src":"34508:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16762,"nodeType":"ArrayTypeName","src":"34508:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"34507:26:61"},"returnParameters":{"id":16767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16829,"src":"34557:13:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16765,"name":"string","nodeType":"ElementaryTypeName","src":"34557:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"34556:15:61"},"scope":16885,"src":"34479:495:61","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16838,"nodeType":"Block","src":"35092:27:61","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16835,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1444,"src":"35103:6:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":16836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35103:8:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16837,"nodeType":"ExpressionStatement","src":"35103:8:61"}]},"documentation":{"id":16830,"nodeType":"StructuredDocumentation","src":"34982:68:61","text":" @dev pause pool, restricting certain operations"},"functionSelector":"8456cb59","id":16839,"implemented":true,"kind":"function","modifiers":[{"id":16833,"kind":"modifierInvocation","modifierName":{"id":16832,"name":"onlyOwner","nameLocations":["35082:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"35082:9:61"},"nodeType":"ModifierInvocation","src":"35082:9:61"}],"name":"pause","nameLocation":"35065:5:61","nodeType":"FunctionDefinition","parameters":{"id":16831,"nodeType":"ParameterList","parameters":[],"src":"35070:2:61"},"returnParameters":{"id":16834,"nodeType":"ParameterList","parameters":[],"src":"35092:0:61"},"scope":16885,"src":"35056:63:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16848,"nodeType":"Block","src":"35238:29:61","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16845,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"35249:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":16846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35249:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16847,"nodeType":"ExpressionStatement","src":"35249:10:61"}]},"documentation":{"id":16840,"nodeType":"StructuredDocumentation","src":"35127:67:61","text":" @dev unpause pool, enabling certain operations"},"functionSelector":"3f4ba83a","id":16849,"implemented":true,"kind":"function","modifiers":[{"id":16843,"kind":"modifierInvocation","modifierName":{"id":16842,"name":"onlyOwner","nameLocations":["35228:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"35228:9:61"},"nodeType":"ModifierInvocation","src":"35228:9:61"}],"name":"unpause","nameLocation":"35209:7:61","nodeType":"FunctionDefinition","parameters":{"id":16841,"nodeType":"ParameterList","parameters":[],"src":"35216:2:61"},"returnParameters":{"id":16844,"nodeType":"ParameterList","parameters":[],"src":"35238:0:61"},"scope":16885,"src":"35200:67:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16883,"nodeType":"Block","src":"35303:169:61","statements":[{"body":{"id":16881,"nodeType":"Block","src":"35362:103:61","statements":[{"expression":{"id":16879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":16863,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"35377:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16865,"indexExpression":{"id":16864,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16853,"src":"35388:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35377:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"35391:7:61","memberName":"reserve","nodeType":"MemberAccess","referencedDeclaration":4251,"src":"35377:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":16876,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"35447:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1Pool_$16885","typeString":"contract BaluniV1Pool"}],"id":16875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35439:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16874,"name":"address","nodeType":"ElementaryTypeName","src":"35439:7:61","typeDescriptions":{}}},"id":16877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35439:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":16868,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"35408:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16870,"indexExpression":{"id":16869,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16853,"src":"35419:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35408:13:61","typeDescriptions":{"typeIdentifier":"t_struct$_AssetInfo_$4252_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref"}},"id":16871,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35422:5:61","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":4245,"src":"35408:19:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16867,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"35401:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":16872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35401:27:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":16873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35429:9:61","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"35401:37:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35401:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35377:76:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16880,"nodeType":"ExpressionStatement","src":"35377:76:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16856,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16853,"src":"35334:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16857,"name":"assetInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14170,"src":"35338:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetInfo_$4252_storage_$dyn_storage","typeString":"struct IBaluniV1Pool.AssetInfo storage ref[] storage ref"}},"id":16858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35349:6:61","memberName":"length","nodeType":"MemberAccess","src":"35338:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35334:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16882,"initializationExpression":{"assignments":[16853],"declarations":[{"constant":false,"id":16853,"mutability":"mutable","name":"i","nameLocation":"35327:1:61","nodeType":"VariableDeclaration","scope":16882,"src":"35319:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16852,"name":"uint256","nodeType":"ElementaryTypeName","src":"35319:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16855,"initialValue":{"hexValue":"30","id":16854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35331:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"35319:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"35357:3:61","subExpression":{"id":16860,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16853,"src":"35357:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16862,"nodeType":"ExpressionStatement","src":"35357:3:61"},"nodeType":"ForStatement","src":"35314:151:61"}]},"id":16884,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"35284:7:61","nodeType":"FunctionDefinition","parameters":{"id":16850,"nodeType":"ParameterList","parameters":[],"src":"35291:2:61"},"returnParameters":{"id":16851,"nodeType":"ParameterList","parameters":[],"src":"35303:0:61"},"scope":16885,"src":"35275:197:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":16886,"src":"2182:33293:61","usedErrors":[30,35,211,214,475,480,1332,1335,1500,1620,1625,1630,1639,1644,1649,1780,1793,2690,2693],"usedEvents":[41,219,1324,1329,1759,2585,2594,4259,4271,4277,4283,4290]}],"src":"40:35437:61"},"id":61},"contracts/pools/BaluniV1PoolPeriphery.sol":{"ast":{"absolutePath":"contracts/pools/BaluniV1PoolPeriphery.sol","exportedSymbols":{"BaluniV1PoolPeriphery":[17727],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1Pool":[4457],"IBaluniV1PoolPeriphery":[4557],"IBaluniV1PoolRegistry":[4590],"IBaluniV1Registry":[4909],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"Initializable":[448],"OwnableUpgradeable":[194],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":17728,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":16887,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:62"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":16888,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":195,"src":"1468:75:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":16889,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":449,"src":"1545:75:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":16890,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":631,"src":"1622:77:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":16891,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":1248,"src":"1701:78:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":16892,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":1599,"src":"1781:82:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1PoolRegistry.sol","file":"../interfaces/IBaluniV1PoolRegistry.sol","id":16893,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":4591,"src":"1867:49:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1PoolPeriphery.sol","file":"../interfaces/IBaluniV1PoolPeriphery.sol","id":16894,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":4558,"src":"1918:50:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":16895,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":4910,"src":"1970:45:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Pool.sol","file":"../interfaces/IBaluniV1Pool.sol","id":16896,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17728,"sourceUnit":4458,"src":"2017:41:62","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16898,"name":"Initializable","nameLocations":["2245:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"2245:13:62"},"id":16899,"nodeType":"InheritanceSpecifier","src":"2245:13:62"},{"baseName":{"id":16900,"name":"OwnableUpgradeable","nameLocations":["2265:18:62"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"2265:18:62"},"id":16901,"nodeType":"InheritanceSpecifier","src":"2265:18:62"},{"baseName":{"id":16902,"name":"UUPSUpgradeable","nameLocations":["2290:15:62"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"2290:15:62"},"id":16903,"nodeType":"InheritanceSpecifier","src":"2290:15:62"},{"baseName":{"id":16904,"name":"ReentrancyGuardUpgradeable","nameLocations":["2312:26:62"],"nodeType":"IdentifierPath","referencedDeclaration":1598,"src":"2312:26:62"},"id":16905,"nodeType":"InheritanceSpecifier","src":"2312:26:62"},{"baseName":{"id":16906,"name":"IBaluniV1PoolPeriphery","nameLocations":["2345:22:62"],"nodeType":"IdentifierPath","referencedDeclaration":4557,"src":"2345:22:62"},"id":16907,"nodeType":"InheritanceSpecifier","src":"2345:22:62"}],"canonicalName":"BaluniV1PoolPeriphery","contractDependencies":[],"contractKind":"contract","documentation":{"id":16897,"nodeType":"StructuredDocumentation","src":"2062:142:62","text":" @title BaluniV1PoolPeriphery\n @dev This contract serves as the periphery contract for interacting with BaluniV1Pool contracts."},"fullyImplemented":true,"id":17727,"linearizedBaseContracts":[17727,4557,1598,630,1608,194,1293,448],"name":"BaluniV1PoolPeriphery","nameLocation":"2215:21:62","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"7b103999","id":16910,"mutability":"mutable","name":"registry","nameLocation":"2401:8:62","nodeType":"VariableDeclaration","scope":17727,"src":"2376:33:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":16909,"nodeType":"UserDefinedTypeName","pathNode":{"id":16908,"name":"IBaluniV1Registry","nameLocations":["2376:17:62"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"2376:17:62"},"referencedDeclaration":4909,"src":"2376:17:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"constant":false,"functionSelector":"4056c37f","id":16916,"mutability":"mutable","name":"poolsReserves","nameLocation":"2473:13:62","nodeType":"VariableDeclaration","scope":17727,"src":"2418:68:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":16915,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":16911,"name":"address","nodeType":"ElementaryTypeName","src":"2426:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2418:47:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":16914,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":16912,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2437:27:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":16913,"name":"uint256","nodeType":"ElementaryTypeName","src":"2456:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"body":{"id":16929,"nodeType":"Block","src":"2593:78:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16921,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16918,"src":"2612:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":16922,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2624:5:62","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":16923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2630:9:62","memberName":"timestamp","nodeType":"MemberAccess","src":"2624:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2612:27:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45585049524544","id":16925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2641:9:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a","typeString":"literal_string \"EXPIRED\""},"value":"EXPIRED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a","typeString":"literal_string \"EXPIRED\""}],"id":16920,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2604:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2604:47:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16927,"nodeType":"ExpressionStatement","src":"2604:47:62"},{"id":16928,"nodeType":"PlaceholderStatement","src":"2662:1:62"}]},"id":16930,"name":"ensure","nameLocation":"2568:6:62","nodeType":"ModifierDefinition","parameters":{"id":16919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16918,"mutability":"mutable","name":"deadline","nameLocation":"2583:8:62","nodeType":"VariableDeclaration","scope":16930,"src":"2575:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16917,"name":"uint256","nodeType":"ElementaryTypeName","src":"2575:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2574:18:62"},"src":"2559:112:62","virtual":false,"visibility":"internal"},{"baseFunctions":[4465],"body":{"id":16951,"nodeType":"Block","src":"2737:130:62","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16937,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2748:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":16938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2748:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16939,"nodeType":"ExpressionStatement","src":"2748:24:62"},{"expression":{"arguments":[{"expression":{"id":16941,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2798:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2802:6:62","memberName":"sender","nodeType":"MemberAccess","src":"2798:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16940,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2783:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":16943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2783:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16944,"nodeType":"ExpressionStatement","src":"2783:26:62"},{"expression":{"id":16949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16945,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16910,"src":"2820:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16947,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16932,"src":"2849:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16946,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2831:17:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":16948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:28:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2820:39:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":16950,"nodeType":"ExpressionStatement","src":"2820:39:62"}]},"functionSelector":"c4d66de8","id":16952,"implemented":true,"kind":"function","modifiers":[{"id":16935,"kind":"modifierInvocation","modifierName":{"id":16934,"name":"initializer","nameLocations":["2725:11:62"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2725:11:62"},"nodeType":"ModifierInvocation","src":"2725:11:62"}],"name":"initialize","nameLocation":"2688:10:62","nodeType":"FunctionDefinition","parameters":{"id":16933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16932,"mutability":"mutable","name":"_registry","nameLocation":"2707:9:62","nodeType":"VariableDeclaration","scope":16952,"src":"2699:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16931,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2698:19:62"},"returnParameters":{"id":16936,"nodeType":"ParameterList","parameters":[],"src":"2737:0:62"},"scope":17727,"src":"2679:188:62","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4472],"body":{"id":16968,"nodeType":"Block","src":"2962:58:62","statements":[{"expression":{"id":16966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16962,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16910,"src":"2973:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16964,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16954,"src":"3002:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16963,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2984:17:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":16965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2984:28:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2973:39:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":16967,"nodeType":"ExpressionStatement","src":"2973:39:62"}]},"functionSelector":"8f2248bc","id":16969,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":16959,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16956,"src":"2953:7:62","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":16960,"kind":"modifierInvocation","modifierName":{"id":16958,"name":"reinitializer","nameLocations":["2939:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2939:13:62"},"nodeType":"ModifierInvocation","src":"2939:22:62"}],"name":"reinitialize","nameLocation":"2884:12:62","nodeType":"FunctionDefinition","parameters":{"id":16957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16954,"mutability":"mutable","name":"_registry","nameLocation":"2905:9:62","nodeType":"VariableDeclaration","scope":16969,"src":"2897:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16953,"name":"address","nodeType":"ElementaryTypeName","src":"2897:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16956,"mutability":"mutable","name":"version","nameLocation":"2923:7:62","nodeType":"VariableDeclaration","scope":16969,"src":"2916:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":16955,"name":"uint64","nodeType":"ElementaryTypeName","src":"2916:6:62","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2896:35:62"},"returnParameters":{"id":16961,"nodeType":"ParameterList","parameters":[],"src":"2962:0:62"},"scope":17727,"src":"2875:145:62","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":16978,"nodeType":"Block","src":"3370:2:62","statements":[]},"documentation":{"id":16970,"nodeType":"StructuredDocumentation","src":"3028:254:62","text":" @dev Internal function to authorize an upgrade to a new implementation contract.\n @param newImplementation The address of the new implementation contract.\n @notice This function can only be called by the contract owner."},"id":16979,"implemented":true,"kind":"function","modifiers":[{"id":16976,"kind":"modifierInvocation","modifierName":{"id":16975,"name":"onlyOwner","nameLocations":["3360:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3360:9:62"},"nodeType":"ModifierInvocation","src":"3360:9:62"}],"name":"_authorizeUpgrade","nameLocation":"3297:17:62","nodeType":"FunctionDefinition","overrides":{"id":16974,"nodeType":"OverrideSpecifier","overrides":[],"src":"3351:8:62"},"parameters":{"id":16973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16972,"mutability":"mutable","name":"newImplementation","nameLocation":"3323:17:62","nodeType":"VariableDeclaration","scope":16979,"src":"3315:25:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16971,"name":"address","nodeType":"ElementaryTypeName","src":"3315:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3314:27:62"},"returnParameters":{"id":16977,"nodeType":"ParameterList","parameters":[],"src":"3370:0:62"},"scope":17727,"src":"3288:84:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4493],"body":{"id":17115,"nodeType":"Block","src":"4356:822:62","statements":[{"assignments":[17009],"declarations":[{"constant":false,"id":17009,"mutability":"mutable","name":"poolRegistry","nameLocation":"4389:12:62","nodeType":"VariableDeclaration","scope":17115,"src":"4367:34:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"},"typeName":{"id":17008,"nodeType":"UserDefinedTypeName","pathNode":{"id":17007,"name":"IBaluniV1PoolRegistry","nameLocations":["4367:21:62"],"nodeType":"IdentifierPath","referencedDeclaration":4590,"src":"4367:21:62"},"referencedDeclaration":4590,"src":"4367:21:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"visibility":"internal"}],"id":17015,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17011,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16910,"src":"4426:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":17012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4435:21:62","memberName":"getBaluniPoolRegistry","nodeType":"MemberAccess","referencedDeclaration":4828,"src":"4426:30:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4426:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17010,"name":"IBaluniV1PoolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"4404:21:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1PoolRegistry_$4590_$","typeString":"type(contract IBaluniV1PoolRegistry)"}},"id":17014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4404:55:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"nodeType":"VariableDeclarationStatement","src":"4367:92:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17017,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16986,"src":"4478:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4491:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4478:14:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e74206d7573742062652067726561746572207468616e207a65726f","id":17020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4494:34:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""},"value":"Amount must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""}],"id":17016,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4470:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4470:59:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17022,"nodeType":"ExpressionStatement","src":"4470:59:62"},{"assignments":[17024],"declarations":[{"constant":false,"id":17024,"mutability":"mutable","name":"poolAddress","nameLocation":"4548:11:62","nodeType":"VariableDeclaration","scope":17115,"src":"4540:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17023,"name":"address","nodeType":"ElementaryTypeName","src":"4540:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17030,"initialValue":{"arguments":[{"id":17027,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16982,"src":"4591:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17028,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16984,"src":"4602:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17025,"name":"poolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17009,"src":"4562:12:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"id":17026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4575:15:62","memberName":"getPoolByAssets","nodeType":"MemberAccess","referencedDeclaration":4568,"src":"4562:28:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address) view external returns (address)"}},"id":17029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4562:48:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4540:70:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17032,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17024,"src":"4629:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":17035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4652:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":17034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4644:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17033,"name":"address","nodeType":"ElementaryTypeName","src":"4644:7:62","typeDescriptions":{}}},"id":17036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4644:10:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4629:25:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631506f6f6c5065726970686572793a20506f6f6c206e6f7420666f756e64","id":17038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4656:39:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc6421c7a51907be6e1b579c66a08d7fac8283169b487d2055cec3c19aafb216","typeString":"literal_string \"BaluniV1PoolPeriphery: Pool not found\""},"value":"BaluniV1PoolPeriphery: Pool not found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc6421c7a51907be6e1b579c66a08d7fac8283169b487d2055cec3c19aafb216","typeString":"literal_string \"BaluniV1PoolPeriphery: Pool not found\""}],"id":17031,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4621:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4621:75:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17040,"nodeType":"ExpressionStatement","src":"4621:75:62"},{"expression":{"arguments":[{"id":17045,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16990,"src":"4738:4:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":17048,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4752:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}],"id":17047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4744:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17046,"name":"address","nodeType":"ElementaryTypeName","src":"4744:7:62","typeDescriptions":{}}},"id":17049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4744:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17050,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16986,"src":"4759:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":17042,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16982,"src":"4714:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17041,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4707:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":17043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4707:17:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":17044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4725:12:62","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"4707:30:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":17051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4707:63:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17052,"nodeType":"ExpressionStatement","src":"4707:63:62"},{"assignments":[17057],"declarations":[{"constant":false,"id":17057,"mutability":"mutable","name":"tokenPath","nameLocation":"4800:9:62","nodeType":"VariableDeclaration","scope":17115,"src":"4783:26:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17055,"name":"address","nodeType":"ElementaryTypeName","src":"4783:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17056,"nodeType":"ArrayTypeName","src":"4783:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":17063,"initialValue":{"arguments":[{"hexValue":"32","id":17061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4826:1:62","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":17060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4812:13:62","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":17058,"name":"address","nodeType":"ElementaryTypeName","src":"4816:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17059,"nodeType":"ArrayTypeName","src":"4816:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":17062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4812:16:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4783:45:62"},{"expression":{"id":17068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17064,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17057,"src":"4839:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17066,"indexExpression":{"hexValue":"30","id":17065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4849:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4839:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17067,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16982,"src":"4854:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4839:24:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17069,"nodeType":"ExpressionStatement","src":"4839:24:62"},{"expression":{"id":17074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17070,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17057,"src":"4874:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17072,"indexExpression":{"hexValue":"31","id":17071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4884:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4874:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17073,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16984,"src":"4889:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4874:22:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17075,"nodeType":"ExpressionStatement","src":"4874:22:62"},{"assignments":[17080],"declarations":[{"constant":false,"id":17080,"mutability":"mutable","name":"poolPath","nameLocation":"4926:8:62","nodeType":"VariableDeclaration","scope":17115,"src":"4909:25:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17078,"name":"address","nodeType":"ElementaryTypeName","src":"4909:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17079,"nodeType":"ArrayTypeName","src":"4909:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":17086,"initialValue":{"arguments":[{"hexValue":"31","id":17084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4951:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":17083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4937:13:62","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":17081,"name":"address","nodeType":"ElementaryTypeName","src":"4941:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17082,"nodeType":"ArrayTypeName","src":"4941:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":17085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4937:16:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4909:44:62"},{"expression":{"id":17091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17087,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17080,"src":"4964:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17089,"indexExpression":{"hexValue":"30","id":17088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4973:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4964:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17090,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17024,"src":"4978:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4964:25:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17092,"nodeType":"ExpressionStatement","src":"4964:25:62"},{"expression":{"id":17102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17093,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17003,"src":"5003:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17094,"name":"haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17005,"src":"5014:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17095,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5002:20:62","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17097,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17057,"src":"5031:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":17098,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17080,"src":"5042:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":17099,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16986,"src":"5052:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17100,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16992,"src":"5064:2:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":17096,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17393,"src":"5025:5:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address[] memory,address[] memory,uint256,address) returns (uint256,uint256)"}},"id":17101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5025:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5002:65:62","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17103,"nodeType":"ExpressionStatement","src":"5002:65:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17105,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17003,"src":"5086:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17106,"name":"minAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16988,"src":"5099:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5086:22:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616d6f756e744f757420746f6f206c6f77","id":17108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5110:19:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_89e7a9e9b0e058e6373f6b6c8cf375c7c9a11cf94defafeca9a2945237ea07a2","typeString":"literal_string \"amountOut too low\""},"value":"amountOut too low"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89e7a9e9b0e058e6373f6b6c8cf375c7c9a11cf94defafeca9a2945237ea07a2","typeString":"literal_string \"amountOut too low\""}],"id":17104,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5078:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5078:52:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17110,"nodeType":"ExpressionStatement","src":"5078:52:62"},{"expression":{"components":[{"id":17111,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17003,"src":"5151:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17112,"name":"haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17005,"src":"5162:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5150:20:62","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":17006,"id":17114,"nodeType":"Return","src":"5143:27:62"}]},"documentation":{"id":16980,"nodeType":"StructuredDocumentation","src":"3380:666:62","text":" @dev Swaps tokens using a Baluni V1 pool.\n @param fromToken The address of the token to swap from.\n @param toToken The address of the token to swap to.\n @param fromAmount The amount of tokens to swap from.\n @param minAmount The minimum amount of tokens to receive in the swap.\n @param from The address from which the tokens are being swapped.\n @param to The address to which the tokens are being swapped.\n @param deadline The deadline by which the swap must be executed.\n @return amountOut The amount of tokens received in the swap.\n @return haircut The haircut applied to the swap."},"functionSelector":"35823d76","id":17116,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":16998,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16994,"src":"4288:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16999,"kind":"modifierInvocation","modifierName":{"id":16997,"name":"ensure","nameLocations":["4281:6:62"],"nodeType":"IdentifierPath","referencedDeclaration":16930,"src":"4281:6:62"},"nodeType":"ModifierInvocation","src":"4281:16:62"},{"id":17001,"kind":"modifierInvocation","modifierName":{"id":17000,"name":"nonReentrant","nameLocations":["4298:12:62"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"4298:12:62"},"nodeType":"ModifierInvocation","src":"4298:12:62"}],"name":"swapTokenForToken","nameLocation":"4061:17:62","nodeType":"FunctionDefinition","overrides":{"id":16996,"nodeType":"OverrideSpecifier","overrides":[],"src":"4272:8:62"},"parameters":{"id":16995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16982,"mutability":"mutable","name":"fromToken","nameLocation":"4097:9:62","nodeType":"VariableDeclaration","scope":17116,"src":"4089:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16981,"name":"address","nodeType":"ElementaryTypeName","src":"4089:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16984,"mutability":"mutable","name":"toToken","nameLocation":"4125:7:62","nodeType":"VariableDeclaration","scope":17116,"src":"4117:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16983,"name":"address","nodeType":"ElementaryTypeName","src":"4117:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16986,"mutability":"mutable","name":"fromAmount","nameLocation":"4151:10:62","nodeType":"VariableDeclaration","scope":17116,"src":"4143:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16985,"name":"uint256","nodeType":"ElementaryTypeName","src":"4143:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16988,"mutability":"mutable","name":"minAmount","nameLocation":"4180:9:62","nodeType":"VariableDeclaration","scope":17116,"src":"4172:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16987,"name":"uint256","nodeType":"ElementaryTypeName","src":"4172:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16990,"mutability":"mutable","name":"from","nameLocation":"4208:4:62","nodeType":"VariableDeclaration","scope":17116,"src":"4200:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16989,"name":"address","nodeType":"ElementaryTypeName","src":"4200:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16992,"mutability":"mutable","name":"to","nameLocation":"4231:2:62","nodeType":"VariableDeclaration","scope":17116,"src":"4223:10:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16991,"name":"address","nodeType":"ElementaryTypeName","src":"4223:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16994,"mutability":"mutable","name":"deadline","nameLocation":"4249:8:62","nodeType":"VariableDeclaration","scope":17116,"src":"4244:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16993,"name":"uint","nodeType":"ElementaryTypeName","src":"4244:4:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4078:186:62"},"returnParameters":{"id":17006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17003,"mutability":"mutable","name":"amountOut","nameLocation":"4328:9:62","nodeType":"VariableDeclaration","scope":17116,"src":"4320:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17002,"name":"uint256","nodeType":"ElementaryTypeName","src":"4320:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17005,"mutability":"mutable","name":"haircut","nameLocation":"4347:7:62","nodeType":"VariableDeclaration","scope":17116,"src":"4339:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17004,"name":"uint256","nodeType":"ElementaryTypeName","src":"4339:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4319:36:62"},"scope":17727,"src":"4052:1126:62","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4514],"body":{"id":17216,"nodeType":"Block","src":"6218:539:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17145,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17125,"src":"6237:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6250:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6237:14:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642066726f6d20616d6f756e74","id":17148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6253:21:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_ab5e8102fe02622d0d94a08b17c10bfd4f3cd182dc77bfb396faae89f4ab032f","typeString":"literal_string \"invalid from amount\""},"value":"invalid from amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab5e8102fe02622d0d94a08b17c10bfd4f3cd182dc77bfb396faae89f4ab032f","typeString":"literal_string \"invalid from amount\""}],"id":17144,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6229:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6229:46:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17150,"nodeType":"ExpressionStatement","src":"6229:46:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17152,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17120,"src":"6294:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6304:6:62","memberName":"length","nodeType":"MemberAccess","src":"6294:16:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"32","id":17154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6314:1:62","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6294:21:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420746f6b656e2070617468","id":17156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6317:20:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_fcff1c1083c8a3e45d0c8ff29c9ac46704438a9bb26b4b6981b3747efb2ee1d0","typeString":"literal_string \"invalid token path\""},"value":"invalid token path"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fcff1c1083c8a3e45d0c8ff29c9ac46704438a9bb26b4b6981b3747efb2ee1d0","typeString":"literal_string \"invalid token path\""}],"id":17151,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6286:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6286:52:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17158,"nodeType":"ExpressionStatement","src":"6286:52:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17160,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17123,"src":"6357:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6366:6:62","memberName":"length","nodeType":"MemberAccess","src":"6357:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17162,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17120,"src":"6376:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:6:62","memberName":"length","nodeType":"MemberAccess","src":"6376:16:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":17164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6395:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6376:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6357:39:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420706f6f6c2070617468","id":17167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6398:19:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_c6cf1ca911242bb8766b9b41cb25f065d2a4a47eb5ee25c2338e6f0c748030cc","typeString":"literal_string \"invalid pool path\""},"value":"invalid pool path"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c6cf1ca911242bb8766b9b41cb25f065d2a4a47eb5ee25c2338e6f0c748030cc","typeString":"literal_string \"invalid pool path\""}],"id":17159,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6349:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6349:69:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17169,"nodeType":"ExpressionStatement","src":"6349:69:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17171,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"6437:2:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":17174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6451:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":17173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6443:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17172,"name":"address","nodeType":"ElementaryTypeName","src":"6443:7:62","typeDescriptions":{}}},"id":17175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6443:10:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6437:16:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7a65726f2061646472657373","id":17177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6455:14:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_a4b4461cfc9c1f0249c17896b005545dc5d1690f81d2023afc517b07ed3227a7","typeString":"literal_string \"zero address\""},"value":"zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a4b4461cfc9c1f0249c17896b005545dc5d1690f81d2023afc517b07ed3227a7","typeString":"literal_string \"zero address\""}],"id":17170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6429:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6429:41:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17179,"nodeType":"ExpressionStatement","src":"6429:41:62"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":17188,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6563:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6567:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6563:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6555:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17186,"name":"address","nodeType":"ElementaryTypeName","src":"6555:7:62","typeDescriptions":{}}},"id":17190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6555:19:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":17193,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6584:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}],"id":17192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6576:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17191,"name":"address","nodeType":"ElementaryTypeName","src":"6576:7:62","typeDescriptions":{}}},"id":17194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6576:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17195,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17125,"src":"6591:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":17181,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17120,"src":"6528:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17183,"indexExpression":{"hexValue":"30","id":17182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6538:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6528:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17180,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6521:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":17184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6521:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":17185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6542:12:62","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"6521:33:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":17196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6521:81:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17197,"nodeType":"ExpressionStatement","src":"6521:81:62"},{"expression":{"id":17207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17198,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17140,"src":"6616:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17199,"name":"haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17142,"src":"6627:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17200,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6615:20:62","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17202,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17120,"src":"6644:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":17203,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17123,"src":"6655:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":17204,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17125,"src":"6665:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17205,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17129,"src":"6677:2:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":17201,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17393,"src":"6638:5:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address[] memory,address[] memory,uint256,address) returns (uint256,uint256)"}},"id":17206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6638:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"6615:65:62","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17208,"nodeType":"ExpressionStatement","src":"6615:65:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17210,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17140,"src":"6699:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17211,"name":"minimumToAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17127,"src":"6712:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6699:28:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616d6f756e744f757420746f6f206c6f77","id":17213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6729:19:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_89e7a9e9b0e058e6373f6b6c8cf375c7c9a11cf94defafeca9a2945237ea07a2","typeString":"literal_string \"amountOut too low\""},"value":"amountOut too low"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89e7a9e9b0e058e6373f6b6c8cf375c7c9a11cf94defafeca9a2945237ea07a2","typeString":"literal_string \"amountOut too low\""}],"id":17209,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6691:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6691:58:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17215,"nodeType":"ExpressionStatement","src":"6691:58:62"}]},"documentation":{"id":17117,"nodeType":"StructuredDocumentation","src":"5186:713:62","text":" @dev Swaps tokens for tokens using a specified token path and pool path.\n @param tokenPath The array of token addresses representing the path of tokens to swap.\n @param poolPath The array of pool addresses representing the path of pools to use for swapping.\n @param fromAmount The amount of tokens to swap from.\n @param minimumToAmount The minimum amount of tokens to receive after swapping.\n @param to The address to receive the swapped tokens.\n @param deadline The deadline for the swap to occur.\n @return amountOut The amount of tokens received after swapping.\n @return haircut The amount of tokens deducted as a fee during the swap."},"functionSelector":"21579b79","id":17217,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17135,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17131,"src":"6150:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17136,"kind":"modifierInvocation","modifierName":{"id":17134,"name":"ensure","nameLocations":["6143:6:62"],"nodeType":"IdentifierPath","referencedDeclaration":16930,"src":"6143:6:62"},"nodeType":"ModifierInvocation","src":"6143:16:62"},{"id":17138,"kind":"modifierInvocation","modifierName":{"id":17137,"name":"nonReentrant","nameLocations":["6160:12:62"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"6160:12:62"},"nodeType":"ModifierInvocation","src":"6160:12:62"}],"name":"swapTokensForTokens","nameLocation":"5914:19:62","nodeType":"FunctionDefinition","overrides":{"id":17133,"nodeType":"OverrideSpecifier","overrides":[],"src":"6134:8:62"},"parameters":{"id":17132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17120,"mutability":"mutable","name":"tokenPath","nameLocation":"5961:9:62","nodeType":"VariableDeclaration","scope":17217,"src":"5944:26:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17118,"name":"address","nodeType":"ElementaryTypeName","src":"5944:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17119,"nodeType":"ArrayTypeName","src":"5944:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17123,"mutability":"mutable","name":"poolPath","nameLocation":"5998:8:62","nodeType":"VariableDeclaration","scope":17217,"src":"5981:25:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17121,"name":"address","nodeType":"ElementaryTypeName","src":"5981:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17122,"nodeType":"ArrayTypeName","src":"5981:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17125,"mutability":"mutable","name":"fromAmount","nameLocation":"6025:10:62","nodeType":"VariableDeclaration","scope":17217,"src":"6017:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17124,"name":"uint256","nodeType":"ElementaryTypeName","src":"6017:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17127,"mutability":"mutable","name":"minimumToAmount","nameLocation":"6054:15:62","nodeType":"VariableDeclaration","scope":17217,"src":"6046:23:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17126,"name":"uint256","nodeType":"ElementaryTypeName","src":"6046:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17129,"mutability":"mutable","name":"to","nameLocation":"6088:2:62","nodeType":"VariableDeclaration","scope":17217,"src":"6080:10:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17128,"name":"address","nodeType":"ElementaryTypeName","src":"6080:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17131,"mutability":"mutable","name":"deadline","nameLocation":"6109:8:62","nodeType":"VariableDeclaration","scope":17217,"src":"6101:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6101:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5933:191:62"},"returnParameters":{"id":17143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17140,"mutability":"mutable","name":"amountOut","nameLocation":"6190:9:62","nodeType":"VariableDeclaration","scope":17217,"src":"6182:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17139,"name":"uint256","nodeType":"ElementaryTypeName","src":"6182:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17142,"mutability":"mutable","name":"haircut","nameLocation":"6209:7:62","nodeType":"VariableDeclaration","scope":17217,"src":"6201:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17141,"name":"uint256","nodeType":"ElementaryTypeName","src":"6201:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6181:36:62"},"scope":17727,"src":"5905:852:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17392,"nodeType":"Block","src":"7644:1855:62","statements":[{"assignments":[17236],"declarations":[{"constant":false,"id":17236,"mutability":"mutable","name":"localHaircut","nameLocation":"7699:12:62","nodeType":"VariableDeclaration","scope":17392,"src":"7691:20:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17235,"name":"uint256","nodeType":"ElementaryTypeName","src":"7691:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17237,"nodeType":"VariableDeclarationStatement","src":"7691:20:62"},{"assignments":[17239],"declarations":[{"constant":false,"id":17239,"mutability":"mutable","name":"nextFromAmount","nameLocation":"7790:14:62","nodeType":"VariableDeclaration","scope":17392,"src":"7782:22:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17238,"name":"uint256","nodeType":"ElementaryTypeName","src":"7782:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17241,"initialValue":{"id":17240,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17226,"src":"7807:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7782:35:62"},{"assignments":[17243],"declarations":[{"constant":false,"id":17243,"mutability":"mutable","name":"nextTo","nameLocation":"7882:6:62","nodeType":"VariableDeclaration","scope":17392,"src":"7874:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17242,"name":"address","nodeType":"ElementaryTypeName","src":"7874:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17244,"nodeType":"VariableDeclarationStatement","src":"7874:14:62"},{"body":{"id":17390,"nodeType":"Block","src":"7943:1549:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17255,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"8045:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8050:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8045:6:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17258,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"8055:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8064:6:62","memberName":"length","nodeType":"MemberAccess","src":"8055:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":17260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8074:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8055:20:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8045:30:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17268,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"8197:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8202:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8197:6:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"8336:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17280,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"8340:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8349:6:62","memberName":"length","nodeType":"MemberAccess","src":"8340:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":17282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8358:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8340:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8336:23:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17305,"nodeType":"Block","src":"8534:145:62","statements":[{"expression":{"id":17299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17297,"name":"nextTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17243,"src":"8607:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17298,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17228,"src":"8616:2:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8607:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17300,"nodeType":"ExpressionStatement","src":"8607:11:62"},{"expression":{"id":17303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17301,"name":"nextFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17239,"src":"8637:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17302,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17231,"src":"8654:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8637:26:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17304,"nodeType":"ExpressionStatement","src":"8637:26:62"}]},"id":17306,"nodeType":"IfStatement","src":"8332:347:62","trueBody":{"id":17296,"nodeType":"Block","src":"8361:167:62","statements":[{"expression":{"id":17290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17285,"name":"nextTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17243,"src":"8445:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17288,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8462:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}],"id":17287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8454:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17286,"name":"address","nodeType":"ElementaryTypeName","src":"8454:7:62","typeDescriptions":{}}},"id":17289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8454:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8445:22:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17291,"nodeType":"ExpressionStatement","src":"8445:22:62"},{"expression":{"id":17294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17292,"name":"nextFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17239,"src":"8486:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17293,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17231,"src":"8503:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8486:26:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17295,"nodeType":"ExpressionStatement","src":"8486:26:62"}]}},"id":17307,"nodeType":"IfStatement","src":"8193:486:62","trueBody":{"id":17278,"nodeType":"Block","src":"8205:121:62","statements":[{"expression":{"id":17276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17271,"name":"nextTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17243,"src":"8288:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17274,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8305:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}],"id":17273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8297:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17272,"name":"address","nodeType":"ElementaryTypeName","src":"8297:7:62","typeDescriptions":{}}},"id":17275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8297:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8288:22:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17277,"nodeType":"ExpressionStatement","src":"8288:22:62"}]}},"id":17308,"nodeType":"IfStatement","src":"8041:638:62","trueBody":{"id":17267,"nodeType":"Block","src":"8077:110:62","statements":[{"expression":{"id":17265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17263,"name":"nextTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17243,"src":"8160:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17264,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17228,"src":"8169:2:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8160:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17266,"nodeType":"ExpressionStatement","src":"8160:11:62"}]}},{"assignments":[17310],"declarations":[{"constant":false,"id":17310,"mutability":"mutable","name":"allowance","nameLocation":"8703:9:62","nodeType":"VariableDeclaration","scope":17390,"src":"8695:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17309,"name":"uint256","nodeType":"ElementaryTypeName","src":"8695:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17325,"initialValue":{"arguments":[{"arguments":[{"id":17319,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8754:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1PoolPeriphery_$17727","typeString":"contract BaluniV1PoolPeriphery"}],"id":17318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8746:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17317,"name":"address","nodeType":"ElementaryTypeName","src":"8746:7:62","typeDescriptions":{}}},"id":17320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8746:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":17321,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"8761:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17323,"indexExpression":{"id":17322,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"8770:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8761:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"baseExpression":{"id":17312,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17221,"src":"8722:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17314,"indexExpression":{"id":17313,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"8732:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8722:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17311,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8715:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":17315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8715:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":17316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8736:9:62","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2628,"src":"8715:30:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":17324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8715:58:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8695:78:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17326,"name":"nextFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17239,"src":"8794:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17327,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17310,"src":"8812:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8794:27:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17342,"nodeType":"IfStatement","src":"8790:125:62","trueBody":{"id":17341,"nodeType":"Block","src":"8823:92:62","statements":[{"expression":{"arguments":[{"baseExpression":{"id":17335,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"8871:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17337,"indexExpression":{"id":17336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"8880:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8871:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17338,"name":"nextFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17239,"src":"8884:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":17330,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17221,"src":"8849:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17332,"indexExpression":{"id":17331,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"8859:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8849:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17329,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8842:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":17333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8842:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":17334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8863:7:62","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"8842:28:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":17339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8842:57:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17340,"nodeType":"ExpressionStatement","src":"8842:57:62"}]}},{"expression":{"id":17369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17343,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17231,"src":"8989:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17344,"name":"localHaircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17236,"src":"9000:12:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17345,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8988:25:62","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":17352,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17221,"src":"9066:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17354,"indexExpression":{"id":17353,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"9076:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9066:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":17355,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17221,"src":"9097:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17359,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17356,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"9107:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9111:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9107:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9097:16:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17360,"name":"nextFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17239,"src":"9132:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":17361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":17362,"name":"nextTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17243,"src":"9243:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":17365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9273:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17364,"name":"uint256","nodeType":"ElementaryTypeName","src":"9273:7:62","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":17363,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9268:4:62","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":17366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9268:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":17367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9282:3:62","memberName":"max","nodeType":"MemberAccess","src":"9268:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":17347,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"9030:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17349,"indexExpression":{"id":17348,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"9039:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9030:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17346,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"9016:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":17350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9016:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":17351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9043:4:62","memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":4317,"src":"9016:31:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,address,uint256) external returns (uint256,uint256)"}},"id":17368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9016:327:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"8988:355:62","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17370,"nodeType":"ExpressionStatement","src":"8988:355:62"},{"expression":{"id":17388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17371,"name":"haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17233,"src":"9398:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17372,"name":"localHaircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17236,"src":"9409:12:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":17373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:2:62","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":17374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:2:62","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":17376,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17221,"src":"9451:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17380,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17377,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"9461:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9465:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9461:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9451:16:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17375,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"9436:14:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":17381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9436:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":17382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9469:8:62","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"9436:41:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":17383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9436:43:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9431:48:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":17385,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9430:50:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9424:56:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9409:71:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9398:82:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17389,"nodeType":"ExpressionStatement","src":"9398:82:62"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17248,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"7917:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17249,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17224,"src":"7921:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7930:6:62","memberName":"length","nodeType":"MemberAccess","src":"7921:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7917:19:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17391,"initializationExpression":{"assignments":[17246],"declarations":[{"constant":false,"id":17246,"mutability":"mutable","name":"i","nameLocation":"7914:1:62","nodeType":"VariableDeclaration","scope":17391,"src":"7906:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17245,"name":"uint256","nodeType":"ElementaryTypeName","src":"7906:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17247,"nodeType":"VariableDeclarationStatement","src":"7906:9:62"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":17253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7938:3:62","subExpression":{"id":17252,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17246,"src":"7940:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17254,"nodeType":"ExpressionStatement","src":"7938:3:62"},"nodeType":"ForStatement","src":"7901:1591:62"}]},"documentation":{"id":17218,"nodeType":"StructuredDocumentation","src":"6765:674:62","text":"@notice _swap private function. Assumes router has initial fromAmount in balance.\n @dev assumes tokens being swapped have been approve via the approveSpendingByPool function\n @param tokenPath An array of token addresses. path.length must be >= 2.\n @param tokenPath The first element of the path is the input token, the last element is the output token.\n @param poolPath An array of pool addresses. The pools where the pathTokens are contained in order.\n @param fromAmount the amount in\n @param to the user to send the tokens to\n @return amountOut received by user\n @return haircut total fee charged by pool"},"id":17393,"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nameLocation":"7454:5:62","nodeType":"FunctionDefinition","parameters":{"id":17229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17221,"mutability":"mutable","name":"tokenPath","nameLocation":"7487:9:62","nodeType":"VariableDeclaration","scope":17393,"src":"7470:26:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17219,"name":"address","nodeType":"ElementaryTypeName","src":"7470:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17220,"nodeType":"ArrayTypeName","src":"7470:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17224,"mutability":"mutable","name":"poolPath","nameLocation":"7524:8:62","nodeType":"VariableDeclaration","scope":17393,"src":"7507:25:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17222,"name":"address","nodeType":"ElementaryTypeName","src":"7507:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17223,"nodeType":"ArrayTypeName","src":"7507:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17226,"mutability":"mutable","name":"fromAmount","nameLocation":"7551:10:62","nodeType":"VariableDeclaration","scope":17393,"src":"7543:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17225,"name":"uint256","nodeType":"ElementaryTypeName","src":"7543:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17228,"mutability":"mutable","name":"to","nameLocation":"7580:2:62","nodeType":"VariableDeclaration","scope":17393,"src":"7572:10:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17227,"name":"address","nodeType":"ElementaryTypeName","src":"7572:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7459:130:62"},"returnParameters":{"id":17234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17231,"mutability":"mutable","name":"amountOut","nameLocation":"7616:9:62","nodeType":"VariableDeclaration","scope":17393,"src":"7608:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17230,"name":"uint256","nodeType":"ElementaryTypeName","src":"7608:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17233,"mutability":"mutable","name":"haircut","nameLocation":"7635:7:62","nodeType":"VariableDeclaration","scope":17393,"src":"7627:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17232,"name":"uint256","nodeType":"ElementaryTypeName","src":"7627:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7607:36:62"},"scope":17727,"src":"7445:2054:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":17506,"nodeType":"Block","src":"10177:1141:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17410,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17402,"src":"10196:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10209:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10196:14:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642066726f6d20616d6f756e74","id":17413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10212:21:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_ab5e8102fe02622d0d94a08b17c10bfd4f3cd182dc77bfb396faae89f4ab032f","typeString":"literal_string \"invalid from amount\""},"value":"invalid from amount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab5e8102fe02622d0d94a08b17c10bfd4f3cd182dc77bfb396faae89f4ab032f","typeString":"literal_string \"invalid from amount\""}],"id":17409,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10188:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10188:46:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17415,"nodeType":"ExpressionStatement","src":"10188:46:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17417,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17397,"src":"10253:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10263:6:62","memberName":"length","nodeType":"MemberAccess","src":"10253:16:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"32","id":17419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10273:1:62","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10253:21:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420746f6b656e2070617468","id":17421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10276:20:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_fcff1c1083c8a3e45d0c8ff29c9ac46704438a9bb26b4b6981b3747efb2ee1d0","typeString":"literal_string \"invalid token path\""},"value":"invalid token path"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fcff1c1083c8a3e45d0c8ff29c9ac46704438a9bb26b4b6981b3747efb2ee1d0","typeString":"literal_string \"invalid token path\""}],"id":17416,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10245:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10245:52:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17423,"nodeType":"ExpressionStatement","src":"10245:52:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17425,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17400,"src":"10316:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10325:6:62","memberName":"length","nodeType":"MemberAccess","src":"10316:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17427,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17397,"src":"10335:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10345:6:62","memberName":"length","nodeType":"MemberAccess","src":"10335:16:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":17429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10354:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10335:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10316:39:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420706f6f6c2070617468","id":17432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10357:19:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_c6cf1ca911242bb8766b9b41cb25f065d2a4a47eb5ee25c2338e6f0c748030cc","typeString":"literal_string \"invalid pool path\""},"value":"invalid pool path"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c6cf1ca911242bb8766b9b41cb25f065d2a4a47eb5ee25c2338e6f0c748030cc","typeString":"literal_string \"invalid pool path\""}],"id":17424,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10308:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10308:69:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17434,"nodeType":"ExpressionStatement","src":"10308:69:62"},{"assignments":[17436],"declarations":[{"constant":false,"id":17436,"mutability":"mutable","name":"localHaircut","nameLocation":"10434:12:62","nodeType":"VariableDeclaration","scope":17506,"src":"10426:20:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17435,"name":"uint256","nodeType":"ElementaryTypeName","src":"10426:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17437,"nodeType":"VariableDeclarationStatement","src":"10426:20:62"},{"assignments":[17439],"declarations":[{"constant":false,"id":17439,"mutability":"mutable","name":"nextFromAmount","nameLocation":"10525:14:62","nodeType":"VariableDeclaration","scope":17506,"src":"10517:22:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17438,"name":"uint256","nodeType":"ElementaryTypeName","src":"10517:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17441,"initialValue":{"id":17440,"name":"fromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17402,"src":"10542:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10517:35:62"},{"body":{"id":17500,"nodeType":"Block","src":"10653:611:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17452,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17443,"src":"10755:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":17453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10760:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10755:6:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17460,"nodeType":"IfStatement","src":"10751:80:62","trueBody":{"id":17459,"nodeType":"Block","src":"10763:68:62","statements":[{"expression":{"id":17457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17455,"name":"nextFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17439,"src":"10782:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17456,"name":"potentialOutcome","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17405,"src":"10799:16:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10782:33:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17458,"nodeType":"ExpressionStatement","src":"10782:33:62"}]}},{"expression":{"id":17479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17461,"name":"potentialOutcome","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17405,"src":"10905:16:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17462,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10904:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":17469,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17397,"src":"10989:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17471,"indexExpression":{"id":17470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17443,"src":"10999:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10989:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":17472,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17397,"src":"11020:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17476,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17473,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17443,"src":"11030:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11034:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11030:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11020:16:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17477,"name":"nextFromAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17439,"src":"11055:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":17464,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17400,"src":"10939:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17466,"indexExpression":{"id":17465,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17443,"src":"10948:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10939:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17463,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"10925:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":17467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10925:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":17468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10952:18:62","memberName":"quotePotentialSwap","nodeType":"MemberAccess","referencedDeclaration":4328,"src":"10925:45:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":17478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10925:159:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10904:180:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17480,"nodeType":"ExpressionStatement","src":"10904:180:62"},{"expression":{"id":17498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17481,"name":"haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17407,"src":"11170:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17482,"name":"localHaircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17436,"src":"11181:12:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":17483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11196:2:62","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":17484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11203:2:62","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":17486,"name":"tokenPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17397,"src":"11223:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17490,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17487,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17443,"src":"11233:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11237:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11233:5:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11223:16:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17485,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"11208:14:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":17491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11208:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":17492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11241:8:62","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"11208:41:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":17493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11208:43:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11203:48:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":17495,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11202:50:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11196:56:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11181:71:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11170:82:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17499,"nodeType":"ExpressionStatement","src":"11170:82:62"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17443,"src":"10627:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17446,"name":"poolPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17400,"src":"10631:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10640:6:62","memberName":"length","nodeType":"MemberAccess","src":"10631:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10627:19:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17501,"initializationExpression":{"assignments":[17443],"declarations":[{"constant":false,"id":17443,"mutability":"mutable","name":"i","nameLocation":"10624:1:62","nodeType":"VariableDeclaration","scope":17501,"src":"10616:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17442,"name":"uint256","nodeType":"ElementaryTypeName","src":"10616:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17444,"nodeType":"VariableDeclarationStatement","src":"10616:9:62"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":17450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10648:3:62","subExpression":{"id":17449,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17443,"src":"10650:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17451,"nodeType":"ExpressionStatement","src":"10648:3:62"},"nodeType":"ForStatement","src":"10611:653:62"},{"expression":{"components":[{"id":17502,"name":"potentialOutcome","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17405,"src":"11284:16:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17503,"name":"haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17407,"src":"11302:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17504,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11283:27:62","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":17408,"id":17505,"nodeType":"Return","src":"11276:34:62"}]},"documentation":{"id":17394,"nodeType":"StructuredDocumentation","src":"9507:460:62","text":" @notice Quotes potential outcome of a swap given current tokenPath and poolPath,\ntaking in account slippage and haircut\n @dev To be used by frontend\n @param tokenPath The token swap path\n @param poolPath The token pool path\n @param fromAmount The amount to quote\n @return potentialOutcome The potential final amount user would receive\n @return haircut The total haircut that would be applied"},"functionSelector":"4209bed0","id":17507,"implemented":true,"kind":"function","modifiers":[],"name":"quotePotentialSwaps","nameLocation":"9982:19:62","nodeType":"FunctionDefinition","parameters":{"id":17403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17397,"mutability":"mutable","name":"tokenPath","nameLocation":"10029:9:62","nodeType":"VariableDeclaration","scope":17507,"src":"10012:26:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17395,"name":"address","nodeType":"ElementaryTypeName","src":"10012:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17396,"nodeType":"ArrayTypeName","src":"10012:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17400,"mutability":"mutable","name":"poolPath","nameLocation":"10066:8:62","nodeType":"VariableDeclaration","scope":17507,"src":"10049:25:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17398,"name":"address","nodeType":"ElementaryTypeName","src":"10049:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17399,"nodeType":"ArrayTypeName","src":"10049:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17402,"mutability":"mutable","name":"fromAmount","nameLocation":"10093:10:62","nodeType":"VariableDeclaration","scope":17507,"src":"10085:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17401,"name":"uint256","nodeType":"ElementaryTypeName","src":"10085:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10001:109:62"},"returnParameters":{"id":17408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17405,"mutability":"mutable","name":"potentialOutcome","nameLocation":"10142:16:62","nodeType":"VariableDeclaration","scope":17507,"src":"10134:24:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17404,"name":"uint256","nodeType":"ElementaryTypeName","src":"10134:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17407,"mutability":"mutable","name":"haircut","nameLocation":"10168:7:62","nodeType":"VariableDeclaration","scope":17507,"src":"10160:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17406,"name":"uint256","nodeType":"ElementaryTypeName","src":"10160:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10133:43:62"},"scope":17727,"src":"9973:1345:62","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4532],"body":{"id":17640,"nodeType":"Block","src":"12072:1038:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17528,"name":"fromTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17511,"src":"12105:10:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12116:6:62","memberName":"length","nodeType":"MemberAccess","src":"12105:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":17530,"name":"toTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17514,"src":"12126:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12135:6:62","memberName":"length","nodeType":"MemberAccess","src":"12126:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12105:36:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17533,"name":"toTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17514,"src":"12162:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12171:6:62","memberName":"length","nodeType":"MemberAccess","src":"12162:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":17535,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"12181:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":17536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12189:6:62","memberName":"length","nodeType":"MemberAccess","src":"12181:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12162:33:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12105:90:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17539,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"12216:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":17540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12224:6:62","memberName":"length","nodeType":"MemberAccess","src":"12216:14:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":17541,"name":"receivers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17520,"src":"12234:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12244:6:62","memberName":"length","nodeType":"MemberAccess","src":"12234:16:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12216:34:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12105:145:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e70757420617272617973206c656e677468206d69736d61746368","id":17545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12265:30:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_435b01265a0cf39a5f3992d984afd4b4e7ac38f8506d53152286f12879fd2786","typeString":"literal_string \"Input arrays length mismatch\""},"value":"Input arrays length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_435b01265a0cf39a5f3992d984afd4b4e7ac38f8506d53152286f12879fd2786","typeString":"literal_string \"Input arrays length mismatch\""}],"id":17527,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12083:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12083:223:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17547,"nodeType":"ExpressionStatement","src":"12083:223:62"},{"assignments":[17552],"declarations":[{"constant":false,"id":17552,"mutability":"mutable","name":"amountsOut","nameLocation":"12336:10:62","nodeType":"VariableDeclaration","scope":17640,"src":"12319:27:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17550,"name":"uint256","nodeType":"ElementaryTypeName","src":"12319:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17551,"nodeType":"ArrayTypeName","src":"12319:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":17559,"initialValue":{"arguments":[{"expression":{"id":17556,"name":"fromTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17511,"src":"12363:10:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12374:6:62","memberName":"length","nodeType":"MemberAccess","src":"12363:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12349:13:62","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":17553,"name":"uint256","nodeType":"ElementaryTypeName","src":"12353:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17554,"nodeType":"ArrayTypeName","src":"12353:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":17558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12349:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"12319:62:62"},{"body":{"id":17636,"nodeType":"Block","src":"12442:631:62","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17572,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"12465:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":17574,"indexExpression":{"id":17573,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17561,"src":"12473:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12465:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":17575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12478:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12465:14:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e74206d7573742062652067726561746572207468616e207a65726f","id":17577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12481:34:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""},"value":"Amount must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""}],"id":17571,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12457:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12457:59:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17579,"nodeType":"ExpressionStatement","src":"12457:59:62"},{"assignments":[17581],"declarations":[{"constant":false,"id":17581,"mutability":"mutable","name":"fromToken","nameLocation":"12541:9:62","nodeType":"VariableDeclaration","scope":17636,"src":"12533:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17580,"name":"address","nodeType":"ElementaryTypeName","src":"12533:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17585,"initialValue":{"baseExpression":{"id":17582,"name":"fromTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17511,"src":"12553:10:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17584,"indexExpression":{"id":17583,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17561,"src":"12564:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12553:13:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12533:33:62"},{"assignments":[17587],"declarations":[{"constant":false,"id":17587,"mutability":"mutable","name":"toToken","nameLocation":"12589:7:62","nodeType":"VariableDeclaration","scope":17636,"src":"12581:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17586,"name":"address","nodeType":"ElementaryTypeName","src":"12581:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17591,"initialValue":{"baseExpression":{"id":17588,"name":"toTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17514,"src":"12599:8:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17590,"indexExpression":{"id":17589,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17561,"src":"12608:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12599:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12581:29:62"},{"assignments":[17593],"declarations":[{"constant":false,"id":17593,"mutability":"mutable","name":"amount","nameLocation":"12635:6:62","nodeType":"VariableDeclaration","scope":17636,"src":"12627:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17592,"name":"uint256","nodeType":"ElementaryTypeName","src":"12627:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17597,"initialValue":{"baseExpression":{"id":17594,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17517,"src":"12644:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":17596,"indexExpression":{"id":17595,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17561,"src":"12652:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12644:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12627:27:62"},{"assignments":[17599],"declarations":[{"constant":false,"id":17599,"mutability":"mutable","name":"receiver","nameLocation":"12677:8:62","nodeType":"VariableDeclaration","scope":17636,"src":"12669:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17598,"name":"address","nodeType":"ElementaryTypeName","src":"12669:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17603,"initialValue":{"baseExpression":{"id":17600,"name":"receivers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17520,"src":"12688:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17602,"indexExpression":{"id":17601,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17561,"src":"12698:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12688:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12669:31:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":17609,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12753:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12757:6:62","memberName":"sender","nodeType":"MemberAccess","src":"12753:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":17606,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17581,"src":"12732:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17605,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"12725:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":17607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12725:17:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":17608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12743:9:62","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"12725:27:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":17611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12725:39:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17612,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17593,"src":"12768:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12725:49:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742042616c616e6365","id":17614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12776:22:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82","typeString":"literal_string \"Insufficient Balance\""},"value":"Insufficient Balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82","typeString":"literal_string \"Insufficient Balance\""}],"id":17604,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12717:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12717:82:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17616,"nodeType":"ExpressionStatement","src":"12717:82:62"},{"expression":{"id":17634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":17617,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17552,"src":"12815:10:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":17619,"indexExpression":{"id":17618,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17561,"src":"12826:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12815:13:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":17620,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12814:17:62","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$__$","typeString":"tuple(uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17622,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17581,"src":"12870:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17623,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17587,"src":"12898:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17624,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17593,"src":"12924:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":17625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12949:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":17626,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12969:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12973:6:62","memberName":"sender","nodeType":"MemberAccess","src":"12969:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17628,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17599,"src":"12998:8:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17629,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13025:5:62","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":17630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13031:9:62","memberName":"timestamp","nodeType":"MemberAccess","src":"13025:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"333030","id":17631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13043:3:62","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"src":"13025:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17621,"name":"swapTokenForToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17116,"src":"12834:17:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,address,address,uint256) returns (uint256,uint256)"}},"id":17633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12834:227:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"12814:247:62","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17635,"nodeType":"ExpressionStatement","src":"12814:247:62"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17564,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17561,"src":"12414:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17565,"name":"fromTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17511,"src":"12418:10:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":17566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12429:6:62","memberName":"length","nodeType":"MemberAccess","src":"12418:17:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12414:21:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17637,"initializationExpression":{"assignments":[17561],"declarations":[{"constant":false,"id":17561,"mutability":"mutable","name":"i","nameLocation":"12407:1:62","nodeType":"VariableDeclaration","scope":17637,"src":"12399:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17560,"name":"uint256","nodeType":"ElementaryTypeName","src":"12399:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17563,"initialValue":{"hexValue":"30","id":17562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12411:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12399:13:62"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":17569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12437:3:62","subExpression":{"id":17568,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17561,"src":"12437:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17570,"nodeType":"ExpressionStatement","src":"12437:3:62"},"nodeType":"ForStatement","src":"12394:679:62"},{"expression":{"id":17638,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17552,"src":"13092:10:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":17526,"id":17639,"nodeType":"Return","src":"13085:17:62"}]},"documentation":{"id":17508,"nodeType":"StructuredDocumentation","src":"11326:515:62","text":" @dev Performs batch swaps between multiple token pairs.\n @param fromTokens An array of addresses representing the tokens to swap from.\n @param toTokens An array of addresses representing the tokens to swap to.\n @param amounts An array of amounts representing the amounts to swap.\n @param receivers An array of addresses representing the receivers of the swapped tokens.\n @return An array of amounts representing the amounts of tokens received after the swaps."},"functionSelector":"e74e9b06","id":17641,"implemented":true,"kind":"function","modifiers":[],"name":"batchSwap","nameLocation":"11856:9:62","nodeType":"FunctionDefinition","overrides":{"id":17522,"nodeType":"OverrideSpecifier","overrides":[],"src":"12036:8:62"},"parameters":{"id":17521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17511,"mutability":"mutable","name":"fromTokens","nameLocation":"11895:10:62","nodeType":"VariableDeclaration","scope":17641,"src":"11876:29:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17509,"name":"address","nodeType":"ElementaryTypeName","src":"11876:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17510,"nodeType":"ArrayTypeName","src":"11876:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17514,"mutability":"mutable","name":"toTokens","nameLocation":"11935:8:62","nodeType":"VariableDeclaration","scope":17641,"src":"11916:27:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17512,"name":"address","nodeType":"ElementaryTypeName","src":"11916:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17513,"nodeType":"ArrayTypeName","src":"11916:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":17517,"mutability":"mutable","name":"amounts","nameLocation":"11973:7:62","nodeType":"VariableDeclaration","scope":17641,"src":"11954:26:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17515,"name":"uint256","nodeType":"ElementaryTypeName","src":"11954:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17516,"nodeType":"ArrayTypeName","src":"11954:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17520,"mutability":"mutable","name":"receivers","nameLocation":"12010:9:62","nodeType":"VariableDeclaration","scope":17641,"src":"11991:28:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17518,"name":"address","nodeType":"ElementaryTypeName","src":"11991:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17519,"nodeType":"ArrayTypeName","src":"11991:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"11865:161:62"},"returnParameters":{"id":17526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17641,"src":"12054:16:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17523,"name":"uint256","nodeType":"ElementaryTypeName","src":"12054:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17524,"nodeType":"ArrayTypeName","src":"12054:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12053:18:62"},"scope":17727,"src":"11847:1263:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4543],"body":{"id":17689,"nodeType":"Block","src":"13569:359:62","statements":[{"assignments":[17656],"declarations":[{"constant":false,"id":17656,"mutability":"mutable","name":"poolRegistry","nameLocation":"13602:12:62","nodeType":"VariableDeclaration","scope":17689,"src":"13580:34:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"},"typeName":{"id":17655,"nodeType":"UserDefinedTypeName","pathNode":{"id":17654,"name":"IBaluniV1PoolRegistry","nameLocations":["13580:21:62"],"nodeType":"IdentifierPath","referencedDeclaration":4590,"src":"13580:21:62"},"referencedDeclaration":4590,"src":"13580:21:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"visibility":"internal"}],"id":17662,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17658,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16910,"src":"13639:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":17659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13648:21:62","memberName":"getBaluniPoolRegistry","nodeType":"MemberAccess","referencedDeclaration":4828,"src":"13639:30:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13639:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17657,"name":"IBaluniV1PoolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"13617:21:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1PoolRegistry_$4590_$","typeString":"type(contract IBaluniV1PoolRegistry)"}},"id":17661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13617:55:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"nodeType":"VariableDeclarationStatement","src":"13580:92:62"},{"assignments":[17664],"declarations":[{"constant":false,"id":17664,"mutability":"mutable","name":"poolAddress","nameLocation":"13691:11:62","nodeType":"VariableDeclaration","scope":17689,"src":"13683:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17663,"name":"address","nodeType":"ElementaryTypeName","src":"13683:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17670,"initialValue":{"arguments":[{"id":17667,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17644,"src":"13734:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17668,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17646,"src":"13745:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17665,"name":"poolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17656,"src":"13705:12:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"id":17666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13718:15:62","memberName":"getPoolByAssets","nodeType":"MemberAccess","referencedDeclaration":4568,"src":"13705:28:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address) view external returns (address)"}},"id":17669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13705:48:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13683:70:62"},{"assignments":[17673],"declarations":[{"constant":false,"id":17673,"mutability":"mutable","name":"pool","nameLocation":"13778:4:62","nodeType":"VariableDeclaration","scope":17689,"src":"13764:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"},"typeName":{"id":17672,"nodeType":"UserDefinedTypeName","pathNode":{"id":17671,"name":"IBaluniV1Pool","nameLocations":["13764:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":4457,"src":"13764:13:62"},"referencedDeclaration":4457,"src":"13764:13:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"visibility":"internal"}],"id":17677,"initialValue":{"arguments":[{"id":17675,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17664,"src":"13799:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17674,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"13785:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":17676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13785:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"nodeType":"VariableDeclarationStatement","src":"13764:47:62"},{"assignments":[17679],"declarations":[{"constant":false,"id":17679,"mutability":"mutable","name":"amountOut","nameLocation":"13830:9:62","nodeType":"VariableDeclaration","scope":17689,"src":"13822:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17678,"name":"uint256","nodeType":"ElementaryTypeName","src":"13822:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17686,"initialValue":{"arguments":[{"id":17682,"name":"fromToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17644,"src":"13866:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17683,"name":"toToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17646,"src":"13877:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17684,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17648,"src":"13886:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17680,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17673,"src":"13842:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":17681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13847:18:62","memberName":"quotePotentialSwap","nodeType":"MemberAccess","referencedDeclaration":4328,"src":"13842:23:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":17685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13842:51:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13822:71:62"},{"expression":{"id":17687,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17679,"src":"13911:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17653,"id":17688,"nodeType":"Return","src":"13904:16:62"}]},"documentation":{"id":17642,"nodeType":"StructuredDocumentation","src":"13118:330:62","text":" @dev Gets the amount of tokens received after a swap in a BaluniV1Pool.\n @param fromToken The address of the token to swap from.\n @param toToken The address of the token to swap to.\n @param amount The amount of tokens to swap.\n @return The amount of tokens received after the swap."},"functionSelector":"4aa06652","id":17690,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountOut","nameLocation":"13463:12:62","nodeType":"FunctionDefinition","overrides":{"id":17650,"nodeType":"OverrideSpecifier","overrides":[],"src":"13542:8:62"},"parameters":{"id":17649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17644,"mutability":"mutable","name":"fromToken","nameLocation":"13484:9:62","nodeType":"VariableDeclaration","scope":17690,"src":"13476:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17643,"name":"address","nodeType":"ElementaryTypeName","src":"13476:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17646,"mutability":"mutable","name":"toToken","nameLocation":"13503:7:62","nodeType":"VariableDeclaration","scope":17690,"src":"13495:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17645,"name":"address","nodeType":"ElementaryTypeName","src":"13495:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17648,"mutability":"mutable","name":"amount","nameLocation":"13520:6:62","nodeType":"VariableDeclaration","scope":17690,"src":"13512:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17647,"name":"uint256","nodeType":"ElementaryTypeName","src":"13512:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13475:52:62"},"returnParameters":{"id":17653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17690,"src":"13560:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17651,"name":"uint256","nodeType":"ElementaryTypeName","src":"13560:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13559:9:62"},"scope":17727,"src":"13454:474:62","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4551],"body":{"id":17714,"nodeType":"Block","src":"14235:164:62","statements":[{"assignments":[17702],"declarations":[{"constant":false,"id":17702,"mutability":"mutable","name":"poolRegistry","nameLocation":"14268:12:62","nodeType":"VariableDeclaration","scope":17714,"src":"14246:34:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"},"typeName":{"id":17701,"nodeType":"UserDefinedTypeName","pathNode":{"id":17700,"name":"IBaluniV1PoolRegistry","nameLocations":["14246:21:62"],"nodeType":"IdentifierPath","referencedDeclaration":4590,"src":"14246:21:62"},"referencedDeclaration":4590,"src":"14246:21:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"visibility":"internal"}],"id":17708,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17704,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16910,"src":"14305:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":17705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14314:21:62","memberName":"getBaluniPoolRegistry","nodeType":"MemberAccess","referencedDeclaration":4828,"src":"14305:30:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14305:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17703,"name":"IBaluniV1PoolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"14283:21:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1PoolRegistry_$4590_$","typeString":"type(contract IBaluniV1PoolRegistry)"}},"id":17707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14283:55:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"nodeType":"VariableDeclarationStatement","src":"14246:92:62"},{"expression":{"arguments":[{"id":17711,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17693,"src":"14385:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17709,"name":"poolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17702,"src":"14356:12:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1PoolRegistry_$4590","typeString":"contract IBaluniV1PoolRegistry"}},"id":17710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14369:15:62","memberName":"getPoolsByAsset","nodeType":"MemberAccess","referencedDeclaration":4576,"src":"14356:28:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view external returns (address[] memory)"}},"id":17712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14356:35:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":17699,"id":17713,"nodeType":"Return","src":"14349:42:62"}]},"documentation":{"id":17691,"nodeType":"StructuredDocumentation","src":"13936:195:62","text":" @dev Returns an array of pool addresses that contain the given token.\n @param token The address of the token to search for.\n @return An array of pool addresses."},"functionSelector":"ae3cce1c","id":17715,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolsContainingToken","nameLocation":"14146:23:62","nodeType":"FunctionDefinition","overrides":{"id":17695,"nodeType":"OverrideSpecifier","overrides":[],"src":"14199:8:62"},"parameters":{"id":17694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17693,"mutability":"mutable","name":"token","nameLocation":"14178:5:62","nodeType":"VariableDeclaration","scope":17715,"src":"14170:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17692,"name":"address","nodeType":"ElementaryTypeName","src":"14170:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14169:15:62"},"returnParameters":{"id":17699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17715,"src":"14217:16:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17696,"name":"address","nodeType":"ElementaryTypeName","src":"14217:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17697,"nodeType":"ArrayTypeName","src":"14217:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14216:18:62"},"scope":17727,"src":"14137:262:62","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4556],"body":{"id":17725,"nodeType":"Block","src":"14573:50:62","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17722,"name":"_getInitializedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"14591:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint64_$","typeString":"function () view returns (uint64)"}},"id":17723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14591:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":17721,"id":17724,"nodeType":"Return","src":"14584:31:62"}]},"documentation":{"id":17716,"nodeType":"StructuredDocumentation","src":"14407:98:62","text":" @dev Returns the version of the contract.\n @return The version string."},"functionSelector":"0d8e6e2c","id":17726,"implemented":true,"kind":"function","modifiers":[],"name":"getVersion","nameLocation":"14520:10:62","nodeType":"FunctionDefinition","overrides":{"id":17718,"nodeType":"OverrideSpecifier","overrides":[],"src":"14547:8:62"},"parameters":{"id":17717,"nodeType":"ParameterList","parameters":[],"src":"14530:2:62"},"returnParameters":{"id":17721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17726,"src":"14565:6:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":17719,"name":"uint64","nodeType":"ElementaryTypeName","src":"14565:6:62","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"14564:8:62"},"scope":17727,"src":"14511:112:62","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":17728,"src":"2206:12420:62","usedErrors":[30,35,211,214,475,480,1500,1780,1793,2690,2693],"usedEvents":[41,219,1759]}],"src":"40:14588:62"},"id":62},"contracts/registry/BaluniV1DCAVaultRegistry.sol":{"ast":{"absolutePath":"contracts/registry/BaluniV1DCAVaultRegistry.sol","exportedSymbols":{"BaluniV1DCAVaultRegistry":[18170],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"IBaluniV1DCAVault":[3888],"IBaluniV1Registry":[4909],"IERC1822Proxiable":[1608],"Initializable":[448],"OwnableUpgradeable":[194],"UUPSUpgradeable":[630]},"id":18171,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":17729,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:63"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":17730,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18171,"sourceUnit":195,"src":"1466:75:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":17731,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18171,"sourceUnit":449,"src":"1543:75:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":17732,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18171,"sourceUnit":631,"src":"1620:77:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":17733,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18171,"sourceUnit":4910,"src":"1699:45:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1DCAVault.sol","file":"../interfaces/IBaluniV1DCAVault.sol","id":17734,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18171,"sourceUnit":3889,"src":"1746:45:63","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17735,"name":"Initializable","nameLocations":["1832:13:63"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1832:13:63"},"id":17736,"nodeType":"InheritanceSpecifier","src":"1832:13:63"},{"baseName":{"id":17737,"name":"UUPSUpgradeable","nameLocations":["1847:15:63"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"1847:15:63"},"id":17738,"nodeType":"InheritanceSpecifier","src":"1847:15:63"},{"baseName":{"id":17739,"name":"OwnableUpgradeable","nameLocations":["1864:18:63"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"1864:18:63"},"id":17740,"nodeType":"InheritanceSpecifier","src":"1864:18:63"}],"canonicalName":"BaluniV1DCAVaultRegistry","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":18170,"linearizedBaseContracts":[18170,194,1293,630,1608,448],"name":"BaluniV1DCAVaultRegistry","nameLocation":"1804:24:63","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"9094a91e","id":17743,"mutability":"mutable","name":"allVaults","nameLocation":"1907:9:63","nodeType":"VariableDeclaration","scope":18170,"src":"1890:26:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":17741,"name":"address","nodeType":"ElementaryTypeName","src":"1890:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17742,"nodeType":"ArrayTypeName","src":"1890:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"constant":false,"functionSelector":"7b103999","id":17746,"mutability":"mutable","name":"registry","nameLocation":"1950:8:63","nodeType":"VariableDeclaration","scope":18170,"src":"1925:33:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":17745,"nodeType":"UserDefinedTypeName","pathNode":{"id":17744,"name":"IBaluniV1Registry","nameLocations":["1925:17:63"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"1925:17:63"},"referencedDeclaration":4909,"src":"1925:17:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"constant":false,"functionSelector":"bbd7edc5","id":17752,"mutability":"mutable","name":"getVault","nameLocation":"2022:8:63","nodeType":"VariableDeclaration","scope":18170,"src":"1967:63:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"},"typeName":{"id":17751,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":17747,"name":"address","nodeType":"ElementaryTypeName","src":"1975:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1967:47:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17750,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":17748,"name":"address","nodeType":"ElementaryTypeName","src":"1994:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1986:27:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17749,"name":"address","nodeType":"ElementaryTypeName","src":"2005:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}}},"visibility":"public"},{"anonymous":false,"eventSelector":"b822d89a800960c58214ca2d78afc70c29a892beb2e57c66d54e184bd7ca1815","id":17759,"name":"vaultCreated","nameLocation":"2045:12:63","nodeType":"EventDefinition","parameters":{"id":17758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17754,"indexed":true,"mutability":"mutable","name":"vault","nameLocation":"2074:5:63","nodeType":"VariableDeclaration","scope":17759,"src":"2058:21:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17753,"name":"address","nodeType":"ElementaryTypeName","src":"2058:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17757,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"2091:6:63","nodeType":"VariableDeclaration","scope":17759,"src":"2081:16:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17755,"name":"address","nodeType":"ElementaryTypeName","src":"2081:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17756,"nodeType":"ArrayTypeName","src":"2081:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2057:41:63"},"src":"2039:60:63"},{"body":{"id":17780,"nodeType":"Block","src":"2165:130:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17766,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2176:22:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":17767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:24:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17768,"nodeType":"ExpressionStatement","src":"2176:24:63"},{"expression":{"arguments":[{"expression":{"id":17770,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2226:3:63","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2230:6:63","memberName":"sender","nodeType":"MemberAccess","src":"2226:10:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17769,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2211:14:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":17772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2211:26:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17773,"nodeType":"ExpressionStatement","src":"2211:26:63"},{"expression":{"id":17778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17774,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17746,"src":"2248:8:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17776,"name":"_register","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17761,"src":"2277:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17775,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2259:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":17777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2259:28:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2248:39:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":17779,"nodeType":"ExpressionStatement","src":"2248:39:63"}]},"functionSelector":"c4d66de8","id":17781,"implemented":true,"kind":"function","modifiers":[{"id":17764,"kind":"modifierInvocation","modifierName":{"id":17763,"name":"initializer","nameLocations":["2153:11:63"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2153:11:63"},"nodeType":"ModifierInvocation","src":"2153:11:63"}],"name":"initialize","nameLocation":"2116:10:63","nodeType":"FunctionDefinition","parameters":{"id":17762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17761,"mutability":"mutable","name":"_register","nameLocation":"2135:9:63","nodeType":"VariableDeclaration","scope":17781,"src":"2127:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17760,"name":"address","nodeType":"ElementaryTypeName","src":"2127:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2126:19:63"},"returnParameters":{"id":17765,"nodeType":"ParameterList","parameters":[],"src":"2165:0:63"},"scope":18170,"src":"2107:188:63","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17797,"nodeType":"Block","src":"2392:58:63","statements":[{"expression":{"id":17795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17791,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17746,"src":"2403:8:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17793,"name":"_register","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17783,"src":"2432:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17792,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2414:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":17794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2414:28:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2403:39:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":17796,"nodeType":"ExpressionStatement","src":"2403:39:63"}]},"functionSelector":"8f2248bc","id":17798,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17788,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17785,"src":"2382:8:63","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":17789,"kind":"modifierInvocation","modifierName":{"id":17787,"name":"reinitializer","nameLocations":["2368:13:63"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2368:13:63"},"nodeType":"ModifierInvocation","src":"2368:23:63"}],"name":"reinitialize","nameLocation":"2312:12:63","nodeType":"FunctionDefinition","parameters":{"id":17786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17783,"mutability":"mutable","name":"_register","nameLocation":"2333:9:63","nodeType":"VariableDeclaration","scope":17798,"src":"2325:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17782,"name":"address","nodeType":"ElementaryTypeName","src":"2325:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17785,"mutability":"mutable","name":"_version","nameLocation":"2351:8:63","nodeType":"VariableDeclaration","scope":17798,"src":"2344:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":17784,"name":"uint64","nodeType":"ElementaryTypeName","src":"2344:6:63","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2324:36:63"},"returnParameters":{"id":17790,"nodeType":"ParameterList","parameters":[],"src":"2392:0:63"},"scope":18170,"src":"2303:147:63","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":17806,"nodeType":"Block","src":"2540:2:63","statements":[]},"id":17807,"implemented":true,"kind":"function","modifiers":[{"id":17804,"kind":"modifierInvocation","modifierName":{"id":17803,"name":"onlyOwner","nameLocations":["2530:9:63"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2530:9:63"},"nodeType":"ModifierInvocation","src":"2530:9:63"}],"name":"_authorizeUpgrade","nameLocation":"2467:17:63","nodeType":"FunctionDefinition","overrides":{"id":17802,"nodeType":"OverrideSpecifier","overrides":[],"src":"2521:8:63"},"parameters":{"id":17801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17800,"mutability":"mutable","name":"newImplementation","nameLocation":"2493:17:63","nodeType":"VariableDeclaration","scope":17807,"src":"2485:25:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17799,"name":"address","nodeType":"ElementaryTypeName","src":"2485:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2484:27:63"},"returnParameters":{"id":17805,"nodeType":"ParameterList","parameters":[],"src":"2540:0:63"},"scope":18170,"src":"2458:84:63","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":17862,"nodeType":"Block","src":"2609:406:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17815,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17809,"src":"2628:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":17818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2652:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":17817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2644:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17816,"name":"address","nodeType":"ElementaryTypeName","src":"2644:7:63","typeDescriptions":{}}},"id":17819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2644:10:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2628:26:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e6956315661756c74466163746f72793a20494e56414c49445f7661756c745f41444452455353","id":17821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2656:45:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_7510511c72bfe0cca9302d42db6cb14a9ff3bc6071674c6a36f4798a31a6f98d","typeString":"literal_string \"BaluniV1VaultFactory: INVALID_vault_ADDRESS\""},"value":"BaluniV1VaultFactory: INVALID_vault_ADDRESS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7510511c72bfe0cca9302d42db6cb14a9ff3bc6071674c6a36f4798a31a6f98d","typeString":"literal_string \"BaluniV1VaultFactory: INVALID_vault_ADDRESS\""}],"id":17814,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2620:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":17822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2620:82:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17823,"nodeType":"ExpressionStatement","src":"2620:82:63"},{"expression":{"arguments":[{"id":17827,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17809,"src":"2728:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17824,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"2713:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":17826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2723:4:63","memberName":"push","nodeType":"MemberAccess","src":"2713:14:63","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":17828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2713:28:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17829,"nodeType":"ExpressionStatement","src":"2713:28:63"},{"assignments":[17831],"declarations":[{"constant":false,"id":17831,"mutability":"mutable","name":"baseAsset","nameLocation":"2760:9:63","nodeType":"VariableDeclaration","scope":17862,"src":"2752:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17830,"name":"address","nodeType":"ElementaryTypeName","src":"2752:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17837,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":17833,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17809,"src":"2790:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17832,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"2772:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":17834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":17835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2804:9:63","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"2772:41:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:43:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2752:63:63"},{"assignments":[17839],"declarations":[{"constant":false,"id":17839,"mutability":"mutable","name":"quoteAsset","nameLocation":"2834:10:63","nodeType":"VariableDeclaration","scope":17862,"src":"2826:18:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17838,"name":"address","nodeType":"ElementaryTypeName","src":"2826:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17845,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":17841,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17809,"src":"2865:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17840,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"2847:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":17842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2847:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":17843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2879:10:63","memberName":"quoteAsset","nodeType":"MemberAccess","referencedDeclaration":3847,"src":"2847:42:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2847:44:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2826:65:63"},{"expression":{"id":17852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":17846,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17752,"src":"2904:8:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":17849,"indexExpression":{"id":17847,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17831,"src":"2913:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2904:19:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":17850,"indexExpression":{"id":17848,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17839,"src":"2924:10:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2904:31:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17851,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17809,"src":"2938:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2904:46:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17853,"nodeType":"ExpressionStatement","src":"2904:46:63"},{"expression":{"id":17860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":17854,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17752,"src":"2961:8:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":17857,"indexExpression":{"id":17855,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17839,"src":"2970:10:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2961:20:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":17858,"indexExpression":{"id":17856,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17831,"src":"2982:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2961:31:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17859,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17809,"src":"2995:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2961:46:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17861,"nodeType":"ExpressionStatement","src":"2961:46:63"}]},"functionSelector":"256b5a02","id":17863,"implemented":true,"kind":"function","modifiers":[{"id":17812,"kind":"modifierInvocation","modifierName":{"id":17811,"name":"onlyOwner","nameLocations":["2599:9:63"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2599:9:63"},"nodeType":"ModifierInvocation","src":"2599:9:63"}],"name":"addVault","nameLocation":"2559:8:63","nodeType":"FunctionDefinition","parameters":{"id":17810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17809,"mutability":"mutable","name":"vaultAddress","nameLocation":"2576:12:63","nodeType":"VariableDeclaration","scope":17863,"src":"2568:20:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17808,"name":"address","nodeType":"ElementaryTypeName","src":"2568:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2567:22:63"},"returnParameters":{"id":17813,"nodeType":"ParameterList","parameters":[],"src":"2609:0:63"},"scope":18170,"src":"2550:465:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17872,"nodeType":"Block","src":"3213:35:63","statements":[{"expression":{"id":17870,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"3231:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":17869,"id":17871,"nodeType":"Return","src":"3224:16:63"}]},"documentation":{"id":17864,"nodeType":"StructuredDocumentation","src":"3023:119:63","text":" @dev Retrieves all the vaults created by the factory.\n @return An array of vault addresses."},"functionSelector":"97331bf9","id":17873,"implemented":true,"kind":"function","modifiers":[],"name":"getAllVaults","nameLocation":"3157:12:63","nodeType":"FunctionDefinition","parameters":{"id":17865,"nodeType":"ParameterList","parameters":[],"src":"3169:2:63"},"returnParameters":{"id":17869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17873,"src":"3195:16:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17866,"name":"address","nodeType":"ElementaryTypeName","src":"3195:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17867,"nodeType":"ArrayTypeName","src":"3195:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3194:18:63"},"scope":18170,"src":"3148:100:63","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17882,"nodeType":"Block","src":"3437:42:63","statements":[{"expression":{"expression":{"id":17879,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"3455:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":17880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3465:6:63","memberName":"length","nodeType":"MemberAccess","src":"3455:16:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17878,"id":17881,"nodeType":"Return","src":"3448:23:63"}]},"documentation":{"id":17874,"nodeType":"StructuredDocumentation","src":"3256:117:63","text":" @dev Retrieves the number of vaults created by the factory.\n @return The count of vaults."},"functionSelector":"b9b658db","id":17883,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultsCount","nameLocation":"3388:14:63","nodeType":"FunctionDefinition","parameters":{"id":17875,"nodeType":"ParameterList","parameters":[],"src":"3402:2:63"},"returnParameters":{"id":17878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17883,"src":"3428:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17876,"name":"uint256","nodeType":"ElementaryTypeName","src":"3428:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3427:9:63"},"scope":18170,"src":"3379:100:63","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17925,"nodeType":"Block","src":"3745:218:63","statements":[{"assignments":[17896],"declarations":[{"constant":false,"id":17896,"mutability":"mutable","name":"assets","nameLocation":"3773:6:63","nodeType":"VariableDeclaration","scope":17925,"src":"3756:23:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17894,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17895,"nodeType":"ArrayTypeName","src":"3756:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":17902,"initialValue":{"arguments":[{"hexValue":"32","id":17900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3796:1:63","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":17899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3782:13:63","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":17897,"name":"address","nodeType":"ElementaryTypeName","src":"3786:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17898,"nodeType":"ArrayTypeName","src":"3786:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":17901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3782:16:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3756:42:63"},{"expression":{"id":17911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17903,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3809:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17905,"indexExpression":{"hexValue":"30","id":17904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3816:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3809:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":17907,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17886,"src":"3839:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17906,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"3821:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":17908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3821:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":17909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3853:9:63","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"3821:41:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3821:43:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3809:55:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17912,"nodeType":"ExpressionStatement","src":"3809:55:63"},{"expression":{"id":17921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17913,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3875:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17915,"indexExpression":{"hexValue":"31","id":17914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3882:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3875:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":17917,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17886,"src":"3905:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17916,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"3887:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":17918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3887:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":17919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3919:10:63","memberName":"quoteAsset","nodeType":"MemberAccess","referencedDeclaration":3847,"src":"3887:42:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3887:44:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3875:56:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17922,"nodeType":"ExpressionStatement","src":"3875:56:63"},{"expression":{"id":17923,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17896,"src":"3949:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":17891,"id":17924,"nodeType":"Return","src":"3942:13:63"}]},"documentation":{"id":17884,"nodeType":"StructuredDocumentation","src":"3487:166:63","text":" @dev Retrieves the assets of a specific vault.\n @param vaultAddress The address of the vault.\n @return An array of asset addresses."},"functionSelector":"ca9d67c8","id":17926,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultAsset","nameLocation":"3668:13:63","nodeType":"FunctionDefinition","parameters":{"id":17887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17886,"mutability":"mutable","name":"vaultAddress","nameLocation":"3690:12:63","nodeType":"VariableDeclaration","scope":17926,"src":"3682:20:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17885,"name":"address","nodeType":"ElementaryTypeName","src":"3682:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3681:22:63"},"returnParameters":{"id":17891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17926,"src":"3727:16:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17888,"name":"address","nodeType":"ElementaryTypeName","src":"3727:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17889,"nodeType":"ArrayTypeName","src":"3727:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3726:18:63"},"scope":18170,"src":"3659:304:63","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17942,"nodeType":"Block","src":"4303:50:63","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":17936,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17752,"src":"4321:8:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":17938,"indexExpression":{"id":17937,"name":"asset1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17929,"src":"4330:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4321:16:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":17940,"indexExpression":{"id":17939,"name":"asset2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17931,"src":"4338:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4321:24:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17935,"id":17941,"nodeType":"Return","src":"4314:31:63"}]},"documentation":{"id":17927,"nodeType":"StructuredDocumentation","src":"3971:231:63","text":" @dev Retrieves the vault address based on the given assets.\n @param asset1 The address of the first asset.\n @param asset2 The address of the second asset.\n @return The address of the vault."},"functionSelector":"592717af","id":17943,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultType1ByAssets","nameLocation":"4217:21:63","nodeType":"FunctionDefinition","parameters":{"id":17932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17929,"mutability":"mutable","name":"asset1","nameLocation":"4247:6:63","nodeType":"VariableDeclaration","scope":17943,"src":"4239:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17928,"name":"address","nodeType":"ElementaryTypeName","src":"4239:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17931,"mutability":"mutable","name":"asset2","nameLocation":"4263:6:63","nodeType":"VariableDeclaration","scope":17943,"src":"4255:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17930,"name":"address","nodeType":"ElementaryTypeName","src":"4255:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4238:32:63"},"returnParameters":{"id":17935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17943,"src":"4294:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17933,"name":"address","nodeType":"ElementaryTypeName","src":"4294:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4293:9:63"},"scope":18170,"src":"4208:145:63","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18053,"nodeType":"Block","src":"4443:709:63","statements":[{"assignments":[17955],"declarations":[{"constant":false,"id":17955,"mutability":"mutable","name":"vaults","nameLocation":"4471:6:63","nodeType":"VariableDeclaration","scope":18053,"src":"4454:23:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17953,"name":"address","nodeType":"ElementaryTypeName","src":"4454:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17954,"nodeType":"ArrayTypeName","src":"4454:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":17962,"initialValue":{"arguments":[{"expression":{"id":17959,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"4494:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":17960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4504:6:63","memberName":"length","nodeType":"MemberAccess","src":"4494:16:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4480:13:63","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":17956,"name":"address","nodeType":"ElementaryTypeName","src":"4484:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17957,"nodeType":"ArrayTypeName","src":"4484:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":17961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4480:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4454:57:63"},{"assignments":[17964],"declarations":[{"constant":false,"id":17964,"mutability":"mutable","name":"count","nameLocation":"4530:5:63","nodeType":"VariableDeclaration","scope":18053,"src":"4522:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17963,"name":"uint256","nodeType":"ElementaryTypeName","src":"4522:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17966,"initialValue":{"hexValue":"30","id":17965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4538:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4522:17:63"},{"body":{"id":18018,"nodeType":"Block","src":"4599:367:63","statements":[{"assignments":[17980],"declarations":[{"constant":false,"id":17980,"mutability":"mutable","name":"vault","nameLocation":"4632:5:63","nodeType":"VariableDeclaration","scope":18018,"src":"4614:23:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"},"typeName":{"id":17979,"nodeType":"UserDefinedTypeName","pathNode":{"id":17978,"name":"IBaluniV1DCAVault","nameLocations":["4614:17:63"],"nodeType":"IdentifierPath","referencedDeclaration":3888,"src":"4614:17:63"},"referencedDeclaration":3888,"src":"4614:17:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"visibility":"internal"}],"id":17986,"initialValue":{"arguments":[{"baseExpression":{"id":17982,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"4658:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":17984,"indexExpression":{"id":17983,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17968,"src":"4668:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4658:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17981,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"4640:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":17985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4640:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"nodeType":"VariableDeclarationStatement","src":"4614:57:63"},{"assignments":[17988],"declarations":[{"constant":false,"id":17988,"mutability":"mutable","name":"asset","nameLocation":"4694:5:63","nodeType":"VariableDeclaration","scope":18018,"src":"4686:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17987,"name":"address","nodeType":"ElementaryTypeName","src":"4686:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17992,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17989,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17980,"src":"4702:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":17990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4708:9:63","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"4702:15:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4702:17:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4686:33:63"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17993,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17988,"src":"4740:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":17994,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17945,"src":"4749:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4740:14:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18010,"nodeType":"IfStatement","src":"4736:135:63","trueBody":{"id":18009,"nodeType":"Block","src":"4756:115:63","statements":[{"expression":{"id":18003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17996,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17955,"src":"4775:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":17998,"indexExpression":{"id":17997,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17964,"src":"4782:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4775:13:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18001,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17980,"src":"4799:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}],"id":18000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4791:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17999,"name":"address","nodeType":"ElementaryTypeName","src":"4791:7:63","typeDescriptions":{}}},"id":18002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4791:14:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4775:30:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18004,"nodeType":"ExpressionStatement","src":"4775:30:63"},{"expression":{"id":18006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4824:7:63","subExpression":{"id":18005,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17964,"src":"4824:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18007,"nodeType":"ExpressionStatement","src":"4824:7:63"},{"id":18008,"nodeType":"Break","src":"4850:5:63"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18011,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17964,"src":"4891:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":18012,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17955,"src":"4900:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4907:6:63","memberName":"length","nodeType":"MemberAccess","src":"4900:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4891:22:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18017,"nodeType":"IfStatement","src":"4887:68:63","trueBody":{"id":18016,"nodeType":"Block","src":"4915:40:63","statements":[{"id":18015,"nodeType":"Break","src":"4934:5:63"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17971,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17968,"src":"4572:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17972,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"4576:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":17973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4586:6:63","memberName":"length","nodeType":"MemberAccess","src":"4576:16:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4572:20:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18019,"initializationExpression":{"assignments":[17968],"declarations":[{"constant":false,"id":17968,"mutability":"mutable","name":"i","nameLocation":"4565:1:63","nodeType":"VariableDeclaration","scope":18019,"src":"4557:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17967,"name":"uint256","nodeType":"ElementaryTypeName","src":"4557:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17970,"initialValue":{"hexValue":"30","id":17969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4569:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4557:13:63"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":17976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4594:3:63","subExpression":{"id":17975,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17968,"src":"4594:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17977,"nodeType":"ExpressionStatement","src":"4594:3:63"},"nodeType":"ForStatement","src":"4552:414:63"},{"assignments":[18024],"declarations":[{"constant":false,"id":18024,"mutability":"mutable","name":"result","nameLocation":"4995:6:63","nodeType":"VariableDeclaration","scope":18053,"src":"4978:23:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18022,"name":"address","nodeType":"ElementaryTypeName","src":"4978:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18023,"nodeType":"ArrayTypeName","src":"4978:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":18030,"initialValue":{"arguments":[{"id":18028,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17964,"src":"5018:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5004:13:63","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":18025,"name":"address","nodeType":"ElementaryTypeName","src":"5008:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18026,"nodeType":"ArrayTypeName","src":"5008:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":18029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5004:20:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4978:46:63"},{"body":{"id":18049,"nodeType":"Block","src":"5071:48:63","statements":[{"expression":{"id":18047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18024,"src":"5086:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18043,"indexExpression":{"id":18042,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18032,"src":"5093:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5086:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":18044,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17955,"src":"5098:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18046,"indexExpression":{"id":18045,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18032,"src":"5105:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5098:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5086:21:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18048,"nodeType":"ExpressionStatement","src":"5086:21:63"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18035,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18032,"src":"5055:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18036,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17964,"src":"5059:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5055:9:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18050,"initializationExpression":{"assignments":[18032],"declarations":[{"constant":false,"id":18032,"mutability":"mutable","name":"i","nameLocation":"5048:1:63","nodeType":"VariableDeclaration","scope":18050,"src":"5040:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18031,"name":"uint256","nodeType":"ElementaryTypeName","src":"5040:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18034,"initialValue":{"hexValue":"30","id":18033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5052:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5040:13:63"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5066:3:63","subExpression":{"id":18038,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18032,"src":"5066:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18040,"nodeType":"ExpressionStatement","src":"5066:3:63"},"nodeType":"ForStatement","src":"5035:84:63"},{"expression":{"id":18051,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18024,"src":"5138:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":17950,"id":18052,"nodeType":"Return","src":"5131:13:63"}]},"functionSelector":"10894052","id":18054,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultsByAsset","nameLocation":"4370:16:63","nodeType":"FunctionDefinition","parameters":{"id":17946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17945,"mutability":"mutable","name":"token","nameLocation":"4395:5:63","nodeType":"VariableDeclaration","scope":18054,"src":"4387:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17944,"name":"address","nodeType":"ElementaryTypeName","src":"4387:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4386:15:63"},"returnParameters":{"id":17950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17949,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18054,"src":"4425:16:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":17947,"name":"address","nodeType":"ElementaryTypeName","src":"4425:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":17948,"nodeType":"ArrayTypeName","src":"4425:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4424:18:63"},"scope":18170,"src":"4361:791:63","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18085,"nodeType":"Block","src":"5225:188:63","statements":[{"body":{"id":18081,"nodeType":"Block","src":"5283:100:63","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18072,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"5302:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18074,"indexExpression":{"id":18073,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18062,"src":"5312:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5302:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18075,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18056,"src":"5318:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5302:22:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18080,"nodeType":"IfStatement","src":"5298:74:63","trueBody":{"id":18079,"nodeType":"Block","src":"5326:46:63","statements":[{"expression":{"hexValue":"74727565","id":18077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5352:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":18060,"id":18078,"nodeType":"Return","src":"5345:11:63"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18065,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18062,"src":"5256:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18066,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"5260:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5270:6:63","memberName":"length","nodeType":"MemberAccess","src":"5260:16:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5256:20:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18082,"initializationExpression":{"assignments":[18062],"declarations":[{"constant":false,"id":18062,"mutability":"mutable","name":"i","nameLocation":"5249:1:63","nodeType":"VariableDeclaration","scope":18082,"src":"5241:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18061,"name":"uint256","nodeType":"ElementaryTypeName","src":"5241:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18064,"initialValue":{"hexValue":"30","id":18063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5253:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5241:13:63"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5278:3:63","subExpression":{"id":18069,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18062,"src":"5278:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18071,"nodeType":"ExpressionStatement","src":"5278:3:63"},"nodeType":"ForStatement","src":"5236:147:63"},{"expression":{"hexValue":"66616c7365","id":18083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5400:5:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":18060,"id":18084,"nodeType":"Return","src":"5393:12:63"}]},"functionSelector":"02b3537d","id":18086,"implemented":true,"kind":"function","modifiers":[],"name":"vaultExist","nameLocation":"5169:10:63","nodeType":"FunctionDefinition","parameters":{"id":18057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18056,"mutability":"mutable","name":"_vault","nameLocation":"5188:6:63","nodeType":"VariableDeclaration","scope":18086,"src":"5180:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18055,"name":"address","nodeType":"ElementaryTypeName","src":"5180:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5179:16:63"},"returnParameters":{"id":18060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18086,"src":"5219:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18058,"name":"bool","nodeType":"ElementaryTypeName","src":"5219:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5218:6:63"},"scope":18170,"src":"5160:253:63","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18168,"nodeType":"Block","src":"5477:496:63","statements":[{"body":{"id":18166,"nodeType":"Block","src":"5535:431:63","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18104,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"5554:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18106,"indexExpression":{"id":18105,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18094,"src":"5564:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5554:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18107,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18088,"src":"5570:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5554:22:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18165,"nodeType":"IfStatement","src":"5550:405:63","trueBody":{"id":18164,"nodeType":"Block","src":"5578:377:63","statements":[{"expression":{"id":18118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18109,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"5597:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18111,"indexExpression":{"id":18110,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18094,"src":"5607:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5597:12:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":18112,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"5612:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18117,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":18113,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"5622:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5632:6:63","memberName":"length","nodeType":"MemberAccess","src":"5622:16:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":18115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5641:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5622:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5612:31:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5597:46:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18119,"nodeType":"ExpressionStatement","src":"5597:46:63"},{"expression":{"id":18137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":18120,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17752,"src":"5662:8:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":18131,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18122,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18088,"src":"5689:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18121,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"5671:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":18123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5671:25:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":18124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5697:10:63","memberName":"quoteAsset","nodeType":"MemberAccess","referencedDeclaration":3847,"src":"5671:36:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":18125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5671:38:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5662:48:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":18132,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18127,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18088,"src":"5729:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18126,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"5711:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":18128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5711:25:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":18129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5737:9:63","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"5711:35:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":18130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5711:37:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5662:87:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":18135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5760:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5752:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18133,"name":"address","nodeType":"ElementaryTypeName","src":"5752:7:63","typeDescriptions":{}}},"id":18136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5752:10:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5662:100:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18138,"nodeType":"ExpressionStatement","src":"5662:100:63"},{"expression":{"id":18156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":18139,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17752,"src":"5781:8:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":18150,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18141,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18088,"src":"5808:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18140,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"5790:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":18142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5790:25:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":18143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5816:9:63","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":3842,"src":"5790:35:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":18144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5790:37:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5781:47:63","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":18151,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18146,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18088,"src":"5847:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18145,"name":"IBaluniV1DCAVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"5829:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1DCAVault_$3888_$","typeString":"type(contract IBaluniV1DCAVault)"}},"id":18147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:25:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1DCAVault_$3888","typeString":"contract IBaluniV1DCAVault"}},"id":18148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5855:10:63","memberName":"quoteAsset","nodeType":"MemberAccess","referencedDeclaration":3847,"src":"5829:36:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":18149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:38:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5781:87:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":18154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5879:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5871:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18152,"name":"address","nodeType":"ElementaryTypeName","src":"5871:7:63","typeDescriptions":{}}},"id":18155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5871:10:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5781:100:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18157,"nodeType":"ExpressionStatement","src":"5781:100:63"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18158,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"5900:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5910:3:63","memberName":"pop","nodeType":"MemberAccess","src":"5900:13:63","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":18161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5900:15:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18162,"nodeType":"ExpressionStatement","src":"5900:15:63"},{"id":18163,"nodeType":"Break","src":"5934:5:63"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18097,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18094,"src":"5508:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18098,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"5512:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5522:6:63","memberName":"length","nodeType":"MemberAccess","src":"5512:16:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5508:20:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18167,"initializationExpression":{"assignments":[18094],"declarations":[{"constant":false,"id":18094,"mutability":"mutable","name":"i","nameLocation":"5501:1:63","nodeType":"VariableDeclaration","scope":18167,"src":"5493:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18093,"name":"uint256","nodeType":"ElementaryTypeName","src":"5493:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18096,"initialValue":{"hexValue":"30","id":18095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5505:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5493:13:63"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5530:3:63","subExpression":{"id":18101,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18094,"src":"5530:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18103,"nodeType":"ExpressionStatement","src":"5530:3:63"},"nodeType":"ForStatement","src":"5488:478:63"}]},"functionSelector":"ceb68c23","id":18169,"implemented":true,"kind":"function","modifiers":[{"id":18091,"kind":"modifierInvocation","modifierName":{"id":18090,"name":"onlyOwner","nameLocations":["5467:9:63"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5467:9:63"},"nodeType":"ModifierInvocation","src":"5467:9:63"}],"name":"removeVault","nameLocation":"5430:11:63","nodeType":"FunctionDefinition","parameters":{"id":18089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18088,"mutability":"mutable","name":"_vault","nameLocation":"5450:6:63","nodeType":"VariableDeclaration","scope":18169,"src":"5442:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18087,"name":"address","nodeType":"ElementaryTypeName","src":"5442:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5441:16:63"},"returnParameters":{"id":18092,"nodeType":"ParameterList","parameters":[],"src":"5477:0:63"},"scope":18170,"src":"5421:552:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18171,"src":"1795:4181:63","usedErrors":[30,35,211,214,475,480,1780,1793,2690,2693],"usedEvents":[41,219,1759,17759]}],"src":"40:5938:63"},"id":63},"contracts/registry/BaluniV1PoolRegistry.sol":{"ast":{"absolutePath":"contracts/registry/BaluniV1PoolRegistry.sol","exportedSymbols":{"BaluniV1PoolRegistry":[18652],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"IBaluniV1Pool":[4457],"IBaluniV1Registry":[4909],"IERC1822Proxiable":[1608],"Initializable":[448],"OwnableUpgradeable":[194],"UUPSUpgradeable":[630]},"id":18653,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":18172,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:64"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":18173,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18653,"sourceUnit":195,"src":"1466:75:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":18174,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18653,"sourceUnit":449,"src":"1543:75:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":18175,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18653,"sourceUnit":631,"src":"1620:77:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":18176,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18653,"sourceUnit":4910,"src":"1699:45:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Pool.sol","file":"../interfaces/IBaluniV1Pool.sol","id":18177,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18653,"sourceUnit":4458,"src":"1746:41:64","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18178,"name":"Initializable","nameLocations":["1824:13:64"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1824:13:64"},"id":18179,"nodeType":"InheritanceSpecifier","src":"1824:13:64"},{"baseName":{"id":18180,"name":"UUPSUpgradeable","nameLocations":["1839:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"1839:15:64"},"id":18181,"nodeType":"InheritanceSpecifier","src":"1839:15:64"},{"baseName":{"id":18182,"name":"OwnableUpgradeable","nameLocations":["1856:18:64"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"1856:18:64"},"id":18183,"nodeType":"InheritanceSpecifier","src":"1856:18:64"}],"canonicalName":"BaluniV1PoolRegistry","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":18652,"linearizedBaseContracts":[18652,194,1293,630,1608,448],"name":"BaluniV1PoolRegistry","nameLocation":"1800:20:64","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"41d1de97","id":18186,"mutability":"mutable","name":"allPools","nameLocation":"1899:8:64","nodeType":"VariableDeclaration","scope":18652,"src":"1882:25:64","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":18184,"name":"address","nodeType":"ElementaryTypeName","src":"1882:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18185,"nodeType":"ArrayTypeName","src":"1882:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"constant":false,"functionSelector":"7b103999","id":18189,"mutability":"mutable","name":"registry","nameLocation":"1941:8:64","nodeType":"VariableDeclaration","scope":18652,"src":"1916:33:64","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":18188,"nodeType":"UserDefinedTypeName","pathNode":{"id":18187,"name":"IBaluniV1Registry","nameLocations":["1916:17:64"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"1916:17:64"},"referencedDeclaration":4909,"src":"1916:17:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"constant":false,"functionSelector":"531aa03e","id":18195,"mutability":"mutable","name":"getPool","nameLocation":"2013:7:64","nodeType":"VariableDeclaration","scope":18652,"src":"1958:62:64","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"},"typeName":{"id":18194,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":18190,"name":"address","nodeType":"ElementaryTypeName","src":"1966:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1958:47:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":18193,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":18191,"name":"address","nodeType":"ElementaryTypeName","src":"1985:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1977:27:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":18192,"name":"address","nodeType":"ElementaryTypeName","src":"1996:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}}},"visibility":"public"},{"anonymous":false,"eventSelector":"0a4af51f99a910b453b81f2f9f5673acd70bf8895729e0a6de8e5e0908d89f2b","id":18202,"name":"PoolCreated","nameLocation":"2035:11:64","nodeType":"EventDefinition","parameters":{"id":18201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18197,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"2063:4:64","nodeType":"VariableDeclaration","scope":18202,"src":"2047:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18196,"name":"address","nodeType":"ElementaryTypeName","src":"2047:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18200,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"2079:6:64","nodeType":"VariableDeclaration","scope":18202,"src":"2069:16:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18198,"name":"address","nodeType":"ElementaryTypeName","src":"2069:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18199,"nodeType":"ArrayTypeName","src":"2069:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2046:40:64"},"src":"2029:58:64"},{"body":{"id":18223,"nodeType":"Block","src":"2153:130:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18209,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2164:22:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":18210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2164:24:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18211,"nodeType":"ExpressionStatement","src":"2164:24:64"},{"expression":{"arguments":[{"expression":{"id":18213,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2214:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2218:6:64","memberName":"sender","nodeType":"MemberAccess","src":"2214:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18212,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2199:14:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":18215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2199:26:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18216,"nodeType":"ExpressionStatement","src":"2199:26:64"},{"expression":{"id":18221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18217,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18189,"src":"2236:8:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18219,"name":"_register","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18204,"src":"2265:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18218,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2247:17:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":18220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2247:28:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2236:39:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":18222,"nodeType":"ExpressionStatement","src":"2236:39:64"}]},"functionSelector":"c4d66de8","id":18224,"implemented":true,"kind":"function","modifiers":[{"id":18207,"kind":"modifierInvocation","modifierName":{"id":18206,"name":"initializer","nameLocations":["2141:11:64"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2141:11:64"},"nodeType":"ModifierInvocation","src":"2141:11:64"}],"name":"initialize","nameLocation":"2104:10:64","nodeType":"FunctionDefinition","parameters":{"id":18205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18204,"mutability":"mutable","name":"_register","nameLocation":"2123:9:64","nodeType":"VariableDeclaration","scope":18224,"src":"2115:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18203,"name":"address","nodeType":"ElementaryTypeName","src":"2115:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2114:19:64"},"returnParameters":{"id":18208,"nodeType":"ParameterList","parameters":[],"src":"2153:0:64"},"scope":18652,"src":"2095:188:64","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18240,"nodeType":"Block","src":"2380:58:64","statements":[{"expression":{"id":18238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18234,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18189,"src":"2391:8:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18236,"name":"_register","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18226,"src":"2420:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18235,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2402:17:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":18237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2402:28:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2391:39:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":18239,"nodeType":"ExpressionStatement","src":"2391:39:64"}]},"functionSelector":"8f2248bc","id":18241,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":18231,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18228,"src":"2370:8:64","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":18232,"kind":"modifierInvocation","modifierName":{"id":18230,"name":"reinitializer","nameLocations":["2356:13:64"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2356:13:64"},"nodeType":"ModifierInvocation","src":"2356:23:64"}],"name":"reinitialize","nameLocation":"2300:12:64","nodeType":"FunctionDefinition","parameters":{"id":18229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18226,"mutability":"mutable","name":"_register","nameLocation":"2321:9:64","nodeType":"VariableDeclaration","scope":18241,"src":"2313:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18225,"name":"address","nodeType":"ElementaryTypeName","src":"2313:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18228,"mutability":"mutable","name":"_version","nameLocation":"2339:8:64","nodeType":"VariableDeclaration","scope":18241,"src":"2332:15:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":18227,"name":"uint64","nodeType":"ElementaryTypeName","src":"2332:6:64","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2312:36:64"},"returnParameters":{"id":18233,"nodeType":"ParameterList","parameters":[],"src":"2380:0:64"},"scope":18652,"src":"2291:147:64","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":18249,"nodeType":"Block","src":"2528:2:64","statements":[]},"id":18250,"implemented":true,"kind":"function","modifiers":[{"id":18247,"kind":"modifierInvocation","modifierName":{"id":18246,"name":"onlyOwner","nameLocations":["2518:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2518:9:64"},"nodeType":"ModifierInvocation","src":"2518:9:64"}],"name":"_authorizeUpgrade","nameLocation":"2455:17:64","nodeType":"FunctionDefinition","overrides":{"id":18245,"nodeType":"OverrideSpecifier","overrides":[],"src":"2509:8:64"},"parameters":{"id":18244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18243,"mutability":"mutable","name":"newImplementation","nameLocation":"2481:17:64","nodeType":"VariableDeclaration","scope":18250,"src":"2473:25:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18242,"name":"address","nodeType":"ElementaryTypeName","src":"2473:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2472:27:64"},"returnParameters":{"id":18248,"nodeType":"ParameterList","parameters":[],"src":"2528:0:64"},"scope":18652,"src":"2446:84:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18336,"nodeType":"Block","src":"2595:478:64","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18258,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18252,"src":"2614:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":18261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2637:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2629:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18259,"name":"address","nodeType":"ElementaryTypeName","src":"2629:7:64","typeDescriptions":{}}},"id":18262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2629:10:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2614:25:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631506f6f6c466163746f72793a20494e56414c49445f504f4f4c5f41444452455353","id":18264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2641:43:64","typeDescriptions":{"typeIdentifier":"t_stringliteral_05f07676dc67392f7f7f6aab9a91a65df1780d5e1861fa32a8a8f53252c2841b","typeString":"literal_string \"BaluniV1PoolFactory: INVALID_POOL_ADDRESS\""},"value":"BaluniV1PoolFactory: INVALID_POOL_ADDRESS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_05f07676dc67392f7f7f6aab9a91a65df1780d5e1861fa32a8a8f53252c2841b","typeString":"literal_string \"BaluniV1PoolFactory: INVALID_POOL_ADDRESS\""}],"id":18257,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2606:7:64","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":18265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2606:79:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18266,"nodeType":"ExpressionStatement","src":"2606:79:64"},{"expression":{"arguments":[{"id":18270,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18252,"src":"2710:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18267,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"2696:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2705:4:64","memberName":"push","nodeType":"MemberAccess","src":"2696:13:64","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":18271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2696:26:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18272,"nodeType":"ExpressionStatement","src":"2696:26:64"},{"assignments":[18277],"declarations":[{"constant":false,"id":18277,"mutability":"mutable","name":"assets","nameLocation":"2750:6:64","nodeType":"VariableDeclaration","scope":18336,"src":"2733:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18275,"name":"address","nodeType":"ElementaryTypeName","src":"2733:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18276,"nodeType":"ArrayTypeName","src":"2733:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":18283,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18279,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18252,"src":"2773:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18278,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"2759:13:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":18280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:26:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":18281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2786:9:64","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"2759:36:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":18282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:38:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2733:64:64"},{"body":{"id":18334,"nodeType":"Block","src":"2852:214:64","statements":[{"body":{"id":18332,"nodeType":"Block","src":"2915:140:64","statements":[{"expression":{"id":18318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":18308,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18195,"src":"2934:7:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":18315,"indexExpression":{"baseExpression":{"id":18309,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18277,"src":"2942:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18311,"indexExpression":{"id":18310,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"2949:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2942:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2934:18:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":18316,"indexExpression":{"baseExpression":{"id":18312,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18277,"src":"2953:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18314,"indexExpression":{"id":18313,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18296,"src":"2960:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2953:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2934:29:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18317,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18252,"src":"2966:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2934:43:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18319,"nodeType":"ExpressionStatement","src":"2934:43:64"},{"expression":{"id":18330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":18320,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18195,"src":"2996:7:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":18327,"indexExpression":{"baseExpression":{"id":18321,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18277,"src":"3004:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18323,"indexExpression":{"id":18322,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18296,"src":"3011:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3004:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2996:18:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":18328,"indexExpression":{"baseExpression":{"id":18324,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18277,"src":"3015:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18326,"indexExpression":{"id":18325,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"3022:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3015:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2996:29:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18329,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18252,"src":"3028:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2996:43:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18331,"nodeType":"ExpressionStatement","src":"2996:43:64"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18301,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18296,"src":"2891:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18302,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18277,"src":"2895:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2902:6:64","memberName":"length","nodeType":"MemberAccess","src":"2895:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2891:17:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18333,"initializationExpression":{"assignments":[18296],"declarations":[{"constant":false,"id":18296,"mutability":"mutable","name":"j","nameLocation":"2880:1:64","nodeType":"VariableDeclaration","scope":18333,"src":"2872:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18295,"name":"uint256","nodeType":"ElementaryTypeName","src":"2872:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18300,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"2884:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":18298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2888:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2884:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2872:17:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2910:3:64","subExpression":{"id":18305,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18296,"src":"2910:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18307,"nodeType":"ExpressionStatement","src":"2910:3:64"},"nodeType":"ForStatement","src":"2867:188:64"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18288,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"2828:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18289,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18277,"src":"2832:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2839:6:64","memberName":"length","nodeType":"MemberAccess","src":"2832:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2828:17:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18335,"initializationExpression":{"assignments":[18285],"declarations":[{"constant":false,"id":18285,"mutability":"mutable","name":"i","nameLocation":"2821:1:64","nodeType":"VariableDeclaration","scope":18335,"src":"2813:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18284,"name":"uint256","nodeType":"ElementaryTypeName","src":"2813:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18287,"initialValue":{"hexValue":"30","id":18286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2825:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2813:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2847:3:64","subExpression":{"id":18292,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"2847:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18294,"nodeType":"ExpressionStatement","src":"2847:3:64"},"nodeType":"ForStatement","src":"2808:258:64"}]},"functionSelector":"d914cd4b","id":18337,"implemented":true,"kind":"function","modifiers":[{"id":18255,"kind":"modifierInvocation","modifierName":{"id":18254,"name":"onlyOwner","nameLocations":["2585:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2585:9:64"},"nodeType":"ModifierInvocation","src":"2585:9:64"}],"name":"addPool","nameLocation":"2547:7:64","nodeType":"FunctionDefinition","parameters":{"id":18253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18252,"mutability":"mutable","name":"poolAddress","nameLocation":"2563:11:64","nodeType":"VariableDeclaration","scope":18337,"src":"2555:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18251,"name":"address","nodeType":"ElementaryTypeName","src":"2555:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2554:21:64"},"returnParameters":{"id":18256,"nodeType":"ParameterList","parameters":[],"src":"2595:0:64"},"scope":18652,"src":"2538:535:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18346,"nodeType":"Block","src":"3268:34:64","statements":[{"expression":{"id":18344,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"3286:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":18343,"id":18345,"nodeType":"Return","src":"3279:15:64"}]},"documentation":{"id":18338,"nodeType":"StructuredDocumentation","src":"3081:117:64","text":" @dev Retrieves all the pools created by the factory.\n @return An array of pool addresses."},"functionSelector":"d88ff1f4","id":18347,"implemented":true,"kind":"function","modifiers":[],"name":"getAllPools","nameLocation":"3213:11:64","nodeType":"FunctionDefinition","parameters":{"id":18339,"nodeType":"ParameterList","parameters":[],"src":"3224:2:64"},"returnParameters":{"id":18343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18342,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18347,"src":"3250:16:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18340,"name":"address","nodeType":"ElementaryTypeName","src":"3250:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18341,"nodeType":"ArrayTypeName","src":"3250:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3249:18:64"},"scope":18652,"src":"3204:98:64","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18356,"nodeType":"Block","src":"3488:41:64","statements":[{"expression":{"expression":{"id":18353,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"3506:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3515:6:64","memberName":"length","nodeType":"MemberAccess","src":"3506:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18352,"id":18355,"nodeType":"Return","src":"3499:22:64"}]},"documentation":{"id":18348,"nodeType":"StructuredDocumentation","src":"3310:115:64","text":" @dev Retrieves the number of pools created by the factory.\n @return The count of pools."},"functionSelector":"b4ac6860","id":18357,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolsCount","nameLocation":"3440:13:64","nodeType":"FunctionDefinition","parameters":{"id":18349,"nodeType":"ParameterList","parameters":[],"src":"3453:2:64"},"returnParameters":{"id":18352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18357,"src":"3479:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18350,"name":"uint256","nodeType":"ElementaryTypeName","src":"3479:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3478:9:64"},"scope":18652,"src":"3431:98:64","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18377,"nodeType":"Block","src":"3791:100:64","statements":[{"assignments":[18368],"declarations":[{"constant":false,"id":18368,"mutability":"mutable","name":"pool","nameLocation":"3816:4:64","nodeType":"VariableDeclaration","scope":18377,"src":"3802:18:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"},"typeName":{"id":18367,"nodeType":"UserDefinedTypeName","pathNode":{"id":18366,"name":"IBaluniV1Pool","nameLocations":["3802:13:64"],"nodeType":"IdentifierPath","referencedDeclaration":4457,"src":"3802:13:64"},"referencedDeclaration":4457,"src":"3802:13:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"visibility":"internal"}],"id":18372,"initialValue":{"arguments":[{"id":18370,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18360,"src":"3837:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18369,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"3823:13:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":18371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3823:26:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"nodeType":"VariableDeclarationStatement","src":"3802:47:64"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18373,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18368,"src":"3867:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":18374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3872:9:64","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"3867:14:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":18375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3867:16:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":18365,"id":18376,"nodeType":"Return","src":"3860:23:64"}]},"documentation":{"id":18358,"nodeType":"StructuredDocumentation","src":"3537:163:64","text":" @dev Retrieves the assets of a specific pool.\n @param poolAddress The address of the pool.\n @return An array of asset addresses."},"functionSelector":"4276b97b","id":18378,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolAssets","nameLocation":"3715:13:64","nodeType":"FunctionDefinition","parameters":{"id":18361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18360,"mutability":"mutable","name":"poolAddress","nameLocation":"3737:11:64","nodeType":"VariableDeclaration","scope":18378,"src":"3729:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18359,"name":"address","nodeType":"ElementaryTypeName","src":"3729:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3728:21:64"},"returnParameters":{"id":18365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18378,"src":"3773:16:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18362,"name":"address","nodeType":"ElementaryTypeName","src":"3773:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18363,"nodeType":"ArrayTypeName","src":"3773:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3772:18:64"},"scope":18652,"src":"3706:185:64","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18397,"nodeType":"Block","src":"4223:58:64","statements":[{"expression":{"arguments":[{"baseExpression":{"baseExpression":{"id":18390,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18195,"src":"4249:7:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":18392,"indexExpression":{"id":18391,"name":"asset1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18381,"src":"4257:6:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4249:15:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":18394,"indexExpression":{"id":18393,"name":"asset2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18383,"src":"4265:6:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4249:23:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4241:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18388,"name":"address","nodeType":"ElementaryTypeName","src":"4241:7:64","typeDescriptions":{}}},"id":18395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4241:32:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18387,"id":18396,"nodeType":"Return","src":"4234:39:64"}]},"documentation":{"id":18379,"nodeType":"StructuredDocumentation","src":"3899:229:64","text":" @dev Retrieves the pool address based on the given assets.\n @param asset1 The address of the first asset.\n @param asset2 The address of the second asset.\n @return The address of the pool."},"functionSelector":"2d5e94a7","id":18398,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolByAssets","nameLocation":"4143:15:64","nodeType":"FunctionDefinition","parameters":{"id":18384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18381,"mutability":"mutable","name":"asset1","nameLocation":"4167:6:64","nodeType":"VariableDeclaration","scope":18398,"src":"4159:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18380,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18383,"mutability":"mutable","name":"asset2","nameLocation":"4183:6:64","nodeType":"VariableDeclaration","scope":18398,"src":"4175:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18382,"name":"address","nodeType":"ElementaryTypeName","src":"4175:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4158:32:64"},"returnParameters":{"id":18387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18386,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18398,"src":"4214:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18385,"name":"address","nodeType":"ElementaryTypeName","src":"4214:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4213:9:64"},"scope":18652,"src":"4134:147:64","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18527,"nodeType":"Block","src":"4575:799:64","statements":[{"assignments":[18411],"declarations":[{"constant":false,"id":18411,"mutability":"mutable","name":"pools","nameLocation":"4603:5:64","nodeType":"VariableDeclaration","scope":18527,"src":"4586:22:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18409,"name":"address","nodeType":"ElementaryTypeName","src":"4586:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18410,"nodeType":"ArrayTypeName","src":"4586:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":18418,"initialValue":{"arguments":[{"expression":{"id":18415,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"4625:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4634:6:64","memberName":"length","nodeType":"MemberAccess","src":"4625:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4611:13:64","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":18412,"name":"address","nodeType":"ElementaryTypeName","src":"4615:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18413,"nodeType":"ArrayTypeName","src":"4615:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":18417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4611:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4586:55:64"},{"assignments":[18420],"declarations":[{"constant":false,"id":18420,"mutability":"mutable","name":"count","nameLocation":"4660:5:64","nodeType":"VariableDeclaration","scope":18527,"src":"4652:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18419,"name":"uint256","nodeType":"ElementaryTypeName","src":"4652:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18422,"initialValue":{"hexValue":"30","id":18421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4668:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4652:17:64"},{"body":{"id":18492,"nodeType":"Block","src":"4728:461:64","statements":[{"assignments":[18436],"declarations":[{"constant":false,"id":18436,"mutability":"mutable","name":"pool","nameLocation":"4757:4:64","nodeType":"VariableDeclaration","scope":18492,"src":"4743:18:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"},"typeName":{"id":18435,"nodeType":"UserDefinedTypeName","pathNode":{"id":18434,"name":"IBaluniV1Pool","nameLocations":["4743:13:64"],"nodeType":"IdentifierPath","referencedDeclaration":4457,"src":"4743:13:64"},"referencedDeclaration":4457,"src":"4743:13:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"visibility":"internal"}],"id":18442,"initialValue":{"arguments":[{"baseExpression":{"id":18438,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"4778:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18440,"indexExpression":{"id":18439,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18424,"src":"4787:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4778:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18437,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"4764:13:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":18441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4764:26:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"nodeType":"VariableDeclarationStatement","src":"4743:47:64"},{"assignments":[18447],"declarations":[{"constant":false,"id":18447,"mutability":"mutable","name":"assets","nameLocation":"4822:6:64","nodeType":"VariableDeclaration","scope":18492,"src":"4805:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18445,"name":"address","nodeType":"ElementaryTypeName","src":"4805:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18446,"nodeType":"ArrayTypeName","src":"4805:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":18451,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18448,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18436,"src":"4831:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":18449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4836:9:64","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"4831:14:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":18450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4831:16:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4805:42:64"},{"body":{"id":18483,"nodeType":"Block","src":"4908:187:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18463,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18447,"src":"4931:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18465,"indexExpression":{"id":18464,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18453,"src":"4938:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4931:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18466,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18401,"src":"4944:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4931:18:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18482,"nodeType":"IfStatement","src":"4927:153:64","trueBody":{"id":18481,"nodeType":"Block","src":"4951:129:64","statements":[{"expression":{"id":18475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18468,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18411,"src":"4974:5:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18470,"indexExpression":{"id":18469,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"4980:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4974:12:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18473,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18436,"src":"4997:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}],"id":18472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4989:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18471,"name":"address","nodeType":"ElementaryTypeName","src":"4989:7:64","typeDescriptions":{}}},"id":18474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4989:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4974:28:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18476,"nodeType":"ExpressionStatement","src":"4974:28:64"},{"expression":{"id":18478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5025:7:64","subExpression":{"id":18477,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"5025:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18479,"nodeType":"ExpressionStatement","src":"5025:7:64"},{"id":18480,"nodeType":"Break","src":"5055:5:64"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18456,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18453,"src":"4884:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18457,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18447,"src":"4888:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:6:64","memberName":"length","nodeType":"MemberAccess","src":"4888:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4884:17:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18484,"initializationExpression":{"assignments":[18453],"declarations":[{"constant":false,"id":18453,"mutability":"mutable","name":"j","nameLocation":"4877:1:64","nodeType":"VariableDeclaration","scope":18484,"src":"4869:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18452,"name":"uint256","nodeType":"ElementaryTypeName","src":"4869:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18455,"initialValue":{"hexValue":"30","id":18454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4881:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4869:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4903:3:64","subExpression":{"id":18460,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18453,"src":"4903:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18462,"nodeType":"ExpressionStatement","src":"4903:3:64"},"nodeType":"ForStatement","src":"4864:231:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18485,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"5115:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":18486,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18411,"src":"5124:5:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5130:6:64","memberName":"length","nodeType":"MemberAccess","src":"5124:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5115:21:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18491,"nodeType":"IfStatement","src":"5111:67:64","trueBody":{"id":18490,"nodeType":"Block","src":"5138:40:64","statements":[{"id":18489,"nodeType":"Break","src":"5157:5:64"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18427,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18424,"src":"4702:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18428,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"4706:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4715:6:64","memberName":"length","nodeType":"MemberAccess","src":"4706:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4702:19:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18493,"initializationExpression":{"assignments":[18424],"declarations":[{"constant":false,"id":18424,"mutability":"mutable","name":"i","nameLocation":"4695:1:64","nodeType":"VariableDeclaration","scope":18493,"src":"4687:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18423,"name":"uint256","nodeType":"ElementaryTypeName","src":"4687:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18426,"initialValue":{"hexValue":"30","id":18425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4699:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4687:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4723:3:64","subExpression":{"id":18431,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18424,"src":"4723:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18433,"nodeType":"ExpressionStatement","src":"4723:3:64"},"nodeType":"ForStatement","src":"4682:507:64"},{"assignments":[18498],"declarations":[{"constant":false,"id":18498,"mutability":"mutable","name":"result","nameLocation":"5218:6:64","nodeType":"VariableDeclaration","scope":18527,"src":"5201:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18496,"name":"address","nodeType":"ElementaryTypeName","src":"5201:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18497,"nodeType":"ArrayTypeName","src":"5201:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":18504,"initialValue":{"arguments":[{"id":18502,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"5241:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5227:13:64","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":18499,"name":"address","nodeType":"ElementaryTypeName","src":"5231:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18500,"nodeType":"ArrayTypeName","src":"5231:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":18503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5227:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5201:46:64"},{"body":{"id":18523,"nodeType":"Block","src":"5294:47:64","statements":[{"expression":{"id":18521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18515,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18498,"src":"5309:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18517,"indexExpression":{"id":18516,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"5316:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5309:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":18518,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18411,"src":"5321:5:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18520,"indexExpression":{"id":18519,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"5327:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5321:8:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5309:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18522,"nodeType":"ExpressionStatement","src":"5309:20:64"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18509,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"5278:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18510,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"5282:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5278:9:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18524,"initializationExpression":{"assignments":[18506],"declarations":[{"constant":false,"id":18506,"mutability":"mutable","name":"i","nameLocation":"5271:1:64","nodeType":"VariableDeclaration","scope":18524,"src":"5263:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18505,"name":"uint256","nodeType":"ElementaryTypeName","src":"5263:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18508,"initialValue":{"hexValue":"30","id":18507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5275:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5263:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5289:3:64","subExpression":{"id":18512,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"5289:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18514,"nodeType":"ExpressionStatement","src":"5289:3:64"},"nodeType":"ForStatement","src":"5258:83:64"},{"expression":{"id":18525,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18498,"src":"5360:6:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":18406,"id":18526,"nodeType":"Return","src":"5353:13:64"}]},"documentation":{"id":18399,"nodeType":"StructuredDocumentation","src":"4289:199:64","text":" @dev Returns an array of pool addresses that contain the specified token.\n @param token The address of the token to search for.\n @return An array of pool addresses."},"functionSelector":"b4340e6a","id":18528,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolsByAsset","nameLocation":"4503:15:64","nodeType":"FunctionDefinition","parameters":{"id":18402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18401,"mutability":"mutable","name":"token","nameLocation":"4527:5:64","nodeType":"VariableDeclaration","scope":18528,"src":"4519:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18400,"name":"address","nodeType":"ElementaryTypeName","src":"4519:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4518:15:64"},"returnParameters":{"id":18406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18528,"src":"4557:16:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":18403,"name":"address","nodeType":"ElementaryTypeName","src":"4557:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18404,"nodeType":"ArrayTypeName","src":"4557:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4556:18:64"},"scope":18652,"src":"4494:880:64","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18559,"nodeType":"Block","src":"5445:185:64","statements":[{"body":{"id":18555,"nodeType":"Block","src":"5502:98:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18546,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"5521:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18548,"indexExpression":{"id":18547,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18536,"src":"5530:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5521:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18549,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18530,"src":"5536:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5521:20:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18554,"nodeType":"IfStatement","src":"5517:72:64","trueBody":{"id":18553,"nodeType":"Block","src":"5543:46:64","statements":[{"expression":{"hexValue":"74727565","id":18551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5569:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":18534,"id":18552,"nodeType":"Return","src":"5562:11:64"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18539,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18536,"src":"5476:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18540,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"5480:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5489:6:64","memberName":"length","nodeType":"MemberAccess","src":"5480:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5476:19:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18556,"initializationExpression":{"assignments":[18536],"declarations":[{"constant":false,"id":18536,"mutability":"mutable","name":"i","nameLocation":"5469:1:64","nodeType":"VariableDeclaration","scope":18556,"src":"5461:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18535,"name":"uint256","nodeType":"ElementaryTypeName","src":"5461:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18538,"initialValue":{"hexValue":"30","id":18537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5473:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5461:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5497:3:64","subExpression":{"id":18543,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18536,"src":"5497:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18545,"nodeType":"ExpressionStatement","src":"5497:3:64"},"nodeType":"ForStatement","src":"5456:144:64"},{"expression":{"hexValue":"66616c7365","id":18557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5617:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":18534,"id":18558,"nodeType":"Return","src":"5610:12:64"}]},"functionSelector":"89345efb","id":18560,"implemented":true,"kind":"function","modifiers":[],"name":"poolExist","nameLocation":"5391:9:64","nodeType":"FunctionDefinition","parameters":{"id":18531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18530,"mutability":"mutable","name":"_pool","nameLocation":"5409:5:64","nodeType":"VariableDeclaration","scope":18560,"src":"5401:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18529,"name":"address","nodeType":"ElementaryTypeName","src":"5401:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5400:15:64"},"returnParameters":{"id":18534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18560,"src":"5439:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18532,"name":"bool","nodeType":"ElementaryTypeName","src":"5439:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5438:6:64"},"scope":18652,"src":"5382:248:64","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18650,"nodeType":"Block","src":"5692:477:64","statements":[{"body":{"id":18648,"nodeType":"Block","src":"5749:413:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":18578,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"5768:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18580,"indexExpression":{"id":18579,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18568,"src":"5777:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5768:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18581,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18562,"src":"5783:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5768:20:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18647,"nodeType":"IfStatement","src":"5764:387:64","trueBody":{"id":18646,"nodeType":"Block","src":"5790:361:64","statements":[{"expression":{"id":18592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18583,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"5809:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18585,"indexExpression":{"id":18584,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18568,"src":"5818:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5809:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":18586,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"5823:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18591,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":18587,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"5832:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5841:6:64","memberName":"length","nodeType":"MemberAccess","src":"5832:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":18589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5850:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5832:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5823:29:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5809:43:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18593,"nodeType":"ExpressionStatement","src":"5809:43:64"},{"expression":{"id":18615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":18594,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18195,"src":"5871:7:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":18609,"indexExpression":{"baseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18596,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18562,"src":"5893:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18595,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"5879:13:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":18597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5879:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":18598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5900:9:64","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"5879:30:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":18599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5879:32:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18601,"indexExpression":{"hexValue":"30","id":18600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5912:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5879:35:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5871:44:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":18610,"indexExpression":{"baseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18603,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18562,"src":"5930:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18602,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"5916:13:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":18604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":18605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5937:9:64","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"5916:30:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":18606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:32:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18608,"indexExpression":{"hexValue":"31","id":18607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5949:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5916:35:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5871:81:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":18613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5963:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5955:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18611,"name":"address","nodeType":"ElementaryTypeName","src":"5955:7:64","typeDescriptions":{}}},"id":18614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:10:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5871:94:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18616,"nodeType":"ExpressionStatement","src":"5871:94:64"},{"expression":{"id":18638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":18617,"name":"getPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18195,"src":"5984:7:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":18632,"indexExpression":{"baseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18619,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18562,"src":"6006:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18618,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"5992:13:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":18620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5992:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":18621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6013:9:64","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"5992:30:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":18622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5992:32:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18624,"indexExpression":{"hexValue":"31","id":18623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6025:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5992:35:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5984:44:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":18633,"indexExpression":{"baseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18626,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18562,"src":"6043:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18625,"name":"IBaluniV1Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"6029:13:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Pool_$4457_$","typeString":"type(contract IBaluniV1Pool)"}},"id":18627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6029:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Pool_$4457","typeString":"contract IBaluniV1Pool"}},"id":18628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6050:9:64","memberName":"getAssets","nodeType":"MemberAccess","referencedDeclaration":4445,"src":"6029:30:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":18629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6029:32:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":18631,"indexExpression":{"hexValue":"30","id":18630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6062:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6029:35:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5984:81:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":18636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6076:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6068:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18634,"name":"address","nodeType":"ElementaryTypeName","src":"6068:7:64","typeDescriptions":{}}},"id":18637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6068:10:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5984:94:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18639,"nodeType":"ExpressionStatement","src":"5984:94:64"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18640,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"6097:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6106:3:64","memberName":"pop","nodeType":"MemberAccess","src":"6097:12:64","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":18643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6097:14:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18644,"nodeType":"ExpressionStatement","src":"6097:14:64"},{"id":18645,"nodeType":"Break","src":"6130:5:64"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18571,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18568,"src":"5723:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18572,"name":"allPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18186,"src":"5727:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":18573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5736:6:64","memberName":"length","nodeType":"MemberAccess","src":"5727:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5723:19:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18649,"initializationExpression":{"assignments":[18568],"declarations":[{"constant":false,"id":18568,"mutability":"mutable","name":"i","nameLocation":"5716:1:64","nodeType":"VariableDeclaration","scope":18649,"src":"5708:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18567,"name":"uint256","nodeType":"ElementaryTypeName","src":"5708:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18570,"initialValue":{"hexValue":"30","id":18569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5720:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5708:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5744:3:64","subExpression":{"id":18575,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18568,"src":"5744:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18577,"nodeType":"ExpressionStatement","src":"5744:3:64"},"nodeType":"ForStatement","src":"5703:459:64"}]},"functionSelector":"3b7d0946","id":18651,"implemented":true,"kind":"function","modifiers":[{"id":18565,"kind":"modifierInvocation","modifierName":{"id":18564,"name":"onlyOwner","nameLocations":["5682:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5682:9:64"},"nodeType":"ModifierInvocation","src":"5682:9:64"}],"name":"removePool","nameLocation":"5647:10:64","nodeType":"FunctionDefinition","parameters":{"id":18563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18562,"mutability":"mutable","name":"_pool","nameLocation":"5666:5:64","nodeType":"VariableDeclaration","scope":18651,"src":"5658:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18561,"name":"address","nodeType":"ElementaryTypeName","src":"5658:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5657:15:64"},"returnParameters":{"id":18566,"nodeType":"ParameterList","parameters":[],"src":"5692:0:64"},"scope":18652,"src":"5638:531:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18653,"src":"1791:4381:64","usedErrors":[30,35,211,214,475,480,1780,1793,2690,2693],"usedEvents":[41,219,1759,18202]}],"src":"40:6134:64"},"id":64},"contracts/registry/BaluniV1Registry.sol":{"ast":{"absolutePath":"contracts/registry/BaluniV1Registry.sol","exportedSymbols":{"BaluniV1Registry":[19256],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"IBaluniV1Registry":[4909],"IERC1822Proxiable":[1608],"Initializable":[448],"OwnableUpgradeable":[194],"UUPSUpgradeable":[630]},"id":19257,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":18654,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:65"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":18655,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19257,"sourceUnit":195,"src":"1470:75:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":18656,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19257,"sourceUnit":449,"src":"1547:75:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":18657,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19257,"sourceUnit":631,"src":"1624:77:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":18658,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19257,"sourceUnit":4910,"src":"1703:45:65","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18659,"name":"Initializable","nameLocations":["1781:13:65"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1781:13:65"},"id":18660,"nodeType":"InheritanceSpecifier","src":"1781:13:65"},{"baseName":{"id":18661,"name":"OwnableUpgradeable","nameLocations":["1796:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"1796:18:65"},"id":18662,"nodeType":"InheritanceSpecifier","src":"1796:18:65"},{"baseName":{"id":18663,"name":"UUPSUpgradeable","nameLocations":["1816:15:65"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"1816:15:65"},"id":18664,"nodeType":"InheritanceSpecifier","src":"1816:15:65"},{"baseName":{"id":18665,"name":"IBaluniV1Registry","nameLocations":["1833:17:65"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"1833:17:65"},"id":18666,"nodeType":"InheritanceSpecifier","src":"1833:17:65"}],"canonicalName":"BaluniV1Registry","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":19256,"linearizedBaseContracts":[19256,4909,630,1608,194,1293,448],"name":"BaluniV1Registry","nameLocation":"1761:16:65","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"8bdb2afa","id":18668,"mutability":"mutable","name":"uniswapFactory","nameLocation":"1873:14:65","nodeType":"VariableDeclaration","scope":19256,"src":"1858:29:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18667,"name":"address","nodeType":"ElementaryTypeName","src":"1858:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"735de9f7","id":18670,"mutability":"mutable","name":"uniswapRouter","nameLocation":"1909:13:65","nodeType":"VariableDeclaration","scope":19256,"src":"1894:28:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18669,"name":"address","nodeType":"ElementaryTypeName","src":"1894:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"1292f02e","id":18672,"mutability":"mutable","name":"baluniAgentFactory","nameLocation":"1944:18:65","nodeType":"VariableDeclaration","scope":19256,"src":"1929:33:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18671,"name":"address","nodeType":"ElementaryTypeName","src":"1929:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"58a67233","id":18674,"mutability":"mutable","name":"baluniPoolPeriphery","nameLocation":"1984:19:65","nodeType":"VariableDeclaration","scope":19256,"src":"1969:34:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18673,"name":"address","nodeType":"ElementaryTypeName","src":"1969:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"4b66a135","id":18676,"mutability":"mutable","name":"baluniPoolRegistry","nameLocation":"2025:18:65","nodeType":"VariableDeclaration","scope":19256,"src":"2010:33:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18675,"name":"address","nodeType":"ElementaryTypeName","src":"2010:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"b691a419","id":18678,"mutability":"mutable","name":"baluniRebalancer","nameLocation":"2065:16:65","nodeType":"VariableDeclaration","scope":19256,"src":"2050:31:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18677,"name":"address","nodeType":"ElementaryTypeName","src":"2050:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"39b65140","id":18680,"mutability":"mutable","name":"baluniRouter","nameLocation":"2103:12:65","nodeType":"VariableDeclaration","scope":19256,"src":"2088:27:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18679,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"e528ca12","id":18682,"mutability":"mutable","name":"baluniRegistry","nameLocation":"2137:14:65","nodeType":"VariableDeclaration","scope":19256,"src":"2122:29:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18681,"name":"address","nodeType":"ElementaryTypeName","src":"2122:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"468a7071","id":18684,"mutability":"mutable","name":"baluniOracle","nameLocation":"2173:12:65","nodeType":"VariableDeclaration","scope":19256,"src":"2158:27:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18683,"name":"address","nodeType":"ElementaryTypeName","src":"2158:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"7dfb7ea1","id":18686,"mutability":"mutable","name":"baluniSwapper","nameLocation":"2207:13:65","nodeType":"VariableDeclaration","scope":19256,"src":"2192:28:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18685,"name":"address","nodeType":"ElementaryTypeName","src":"2192:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"0218ecd6","id":18688,"mutability":"mutable","name":"baluniYearnVaultRegistry","nameLocation":"2242:24:65","nodeType":"VariableDeclaration","scope":19256,"src":"2227:39:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18687,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"e23d837b","id":18690,"mutability":"mutable","name":"baluniDCAVaultRegistry","nameLocation":"2288:22:65","nodeType":"VariableDeclaration","scope":19256,"src":"2273:37:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18689,"name":"address","nodeType":"ElementaryTypeName","src":"2273:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"61d027b3","id":18692,"mutability":"mutable","name":"treasury","nameLocation":"2334:8:65","nodeType":"VariableDeclaration","scope":19256,"src":"2319:23:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18691,"name":"address","nodeType":"ElementaryTypeName","src":"2319:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"9454705f","id":18694,"mutability":"mutable","name":"staticOracle","nameLocation":"2364:12:65","nodeType":"VariableDeclaration","scope":19256,"src":"2349:27:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18693,"name":"address","nodeType":"ElementaryTypeName","src":"2349:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"b381cf40","id":18696,"mutability":"mutable","name":"WNATIVE","nameLocation":"2398:7:65","nodeType":"VariableDeclaration","scope":19256,"src":"2383:22:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18695,"name":"address","nodeType":"ElementaryTypeName","src":"2383:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"89a30271","id":18698,"mutability":"mutable","name":"USDC","nameLocation":"2427:4:65","nodeType":"VariableDeclaration","scope":19256,"src":"2412:19:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18697,"name":"address","nodeType":"ElementaryTypeName","src":"2412:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"782dd902","id":18700,"mutability":"mutable","name":"_1inchSpotAgg","nameLocation":"2453:13:65","nodeType":"VariableDeclaration","scope":19256,"src":"2438:28:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18699,"name":"address","nodeType":"ElementaryTypeName","src":"2438:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"34decfc9","id":18702,"mutability":"mutable","name":"_MAX_BPS_FEE","nameLocation":"2488:12:65","nodeType":"VariableDeclaration","scope":19256,"src":"2473:27:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18701,"name":"uint256","nodeType":"ElementaryTypeName","src":"2473:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"b9f5e617","id":18704,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"2522:8:65","nodeType":"VariableDeclaration","scope":19256,"src":"2507:23:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18703,"name":"uint256","nodeType":"ElementaryTypeName","src":"2507:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"85377188","id":18706,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"2552:9:65","nodeType":"VariableDeclaration","scope":19256,"src":"2537:24:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18705,"name":"uint256","nodeType":"ElementaryTypeName","src":"2537:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"99c22ca6","id":18708,"mutability":"mutable","name":"_REBALANCE_THRESHOLD","nameLocation":"2583:20:65","nodeType":"VariableDeclaration","scope":19256,"src":"2568:35:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18707,"name":"uint256","nodeType":"ElementaryTypeName","src":"2568:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":18737,"nodeType":"Block","src":"2653:198:65","statements":[{"expression":{"arguments":[{"expression":{"id":18714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2679:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2683:6:65","memberName":"sender","nodeType":"MemberAccess","src":"2679:10:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18713,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2664:14:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":18716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2664:26:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18717,"nodeType":"ExpressionStatement","src":"2664:26:65"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18718,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2701:22:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":18719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2701:24:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18720,"nodeType":"ExpressionStatement","src":"2701:24:65"},{"expression":{"id":18723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18721,"name":"_MAX_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18702,"src":"2736:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"313030","id":18722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2751:3:65","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"2736:18:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18724,"nodeType":"ExpressionStatement","src":"2736:18:65"},{"expression":{"id":18727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18725,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18704,"src":"2765:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3330","id":18726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2776:2:65","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"src":"2765:13:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18728,"nodeType":"ExpressionStatement","src":"2765:13:65"},{"expression":{"id":18731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18729,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18706,"src":"2789:9:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130303030","id":18730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2801:5:65","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"2789:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18732,"nodeType":"ExpressionStatement","src":"2789:17:65"},{"expression":{"id":18735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18733,"name":"_REBALANCE_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18708,"src":"2817:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"313030","id":18734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2840:3:65","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"2817:26:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18736,"nodeType":"ExpressionStatement","src":"2817:26:65"}]},"functionSelector":"8129fc1c","id":18738,"implemented":true,"kind":"function","modifiers":[{"id":18711,"kind":"modifierInvocation","modifierName":{"id":18710,"name":"initializer","nameLocations":["2641:11:65"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2641:11:65"},"nodeType":"ModifierInvocation","src":"2641:11:65"}],"name":"initialize","nameLocation":"2621:10:65","nodeType":"FunctionDefinition","parameters":{"id":18709,"nodeType":"ParameterList","parameters":[],"src":"2631:2:65"},"returnParameters":{"id":18712,"nodeType":"ParameterList","parameters":[],"src":"2653:0:65"},"scope":19256,"src":"2612:239:65","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":18746,"nodeType":"Block","src":"2941:2:65","statements":[]},"id":18747,"implemented":true,"kind":"function","modifiers":[{"id":18744,"kind":"modifierInvocation","modifierName":{"id":18743,"name":"onlyOwner","nameLocations":["2931:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2931:9:65"},"nodeType":"ModifierInvocation","src":"2931:9:65"}],"name":"_authorizeUpgrade","nameLocation":"2868:17:65","nodeType":"FunctionDefinition","overrides":{"id":18742,"nodeType":"OverrideSpecifier","overrides":[],"src":"2922:8:65"},"parameters":{"id":18741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18740,"mutability":"mutable","name":"newImplementation","nameLocation":"2894:17:65","nodeType":"VariableDeclaration","scope":18747,"src":"2886:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18739,"name":"address","nodeType":"ElementaryTypeName","src":"2886:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2885:27:65"},"returnParameters":{"id":18745,"nodeType":"ParameterList","parameters":[],"src":"2941:0:65"},"scope":19256,"src":"2859:84:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4758],"body":{"id":18759,"nodeType":"Block","src":"3019:39:65","statements":[{"expression":{"id":18757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18755,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18692,"src":"3030:8:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18756,"name":"_treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18749,"src":"3041:9:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3030:20:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18758,"nodeType":"ExpressionStatement","src":"3030:20:65"}]},"functionSelector":"f0f44260","id":18760,"implemented":true,"kind":"function","modifiers":[{"id":18753,"kind":"modifierInvocation","modifierName":{"id":18752,"name":"onlyOwner","nameLocations":["3009:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3009:9:65"},"nodeType":"ModifierInvocation","src":"3009:9:65"}],"name":"setTreasury","nameLocation":"2960:11:65","nodeType":"FunctionDefinition","overrides":{"id":18751,"nodeType":"OverrideSpecifier","overrides":[],"src":"3000:8:65"},"parameters":{"id":18750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18749,"mutability":"mutable","name":"_treasury","nameLocation":"2980:9:65","nodeType":"VariableDeclaration","scope":18760,"src":"2972:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18748,"name":"address","nodeType":"ElementaryTypeName","src":"2972:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2971:19:65"},"returnParameters":{"id":18754,"nodeType":"ParameterList","parameters":[],"src":"3019:0:65"},"scope":19256,"src":"2951:107:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4683],"body":{"id":18772,"nodeType":"Block","src":"3146:51:65","statements":[{"expression":{"id":18770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18768,"name":"uniswapFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18668,"src":"3157:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18769,"name":"_uniswapFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18762,"src":"3174:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3157:32:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18771,"nodeType":"ExpressionStatement","src":"3157:32:65"}]},"functionSelector":"e04b677f","id":18773,"implemented":true,"kind":"function","modifiers":[{"id":18766,"kind":"modifierInvocation","modifierName":{"id":18765,"name":"onlyOwner","nameLocations":["3136:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3136:9:65"},"nodeType":"ModifierInvocation","src":"3136:9:65"}],"name":"setUniswapFactory","nameLocation":"3075:17:65","nodeType":"FunctionDefinition","overrides":{"id":18764,"nodeType":"OverrideSpecifier","overrides":[],"src":"3127:8:65"},"parameters":{"id":18763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18762,"mutability":"mutable","name":"_uniswapFactory","nameLocation":"3101:15:65","nodeType":"VariableDeclaration","scope":18773,"src":"3093:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18761,"name":"address","nodeType":"ElementaryTypeName","src":"3093:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3092:25:65"},"returnParameters":{"id":18767,"nodeType":"ParameterList","parameters":[],"src":"3146:0:65"},"scope":19256,"src":"3066:131:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4688],"body":{"id":18785,"nodeType":"Block","src":"3283:49:65","statements":[{"expression":{"id":18783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18781,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18670,"src":"3294:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18782,"name":"_uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18775,"src":"3310:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3294:30:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18784,"nodeType":"ExpressionStatement","src":"3294:30:65"}]},"functionSelector":"bea9849e","id":18786,"implemented":true,"kind":"function","modifiers":[{"id":18779,"kind":"modifierInvocation","modifierName":{"id":18778,"name":"onlyOwner","nameLocations":["3273:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3273:9:65"},"nodeType":"ModifierInvocation","src":"3273:9:65"}],"name":"setUniswapRouter","nameLocation":"3214:16:65","nodeType":"FunctionDefinition","overrides":{"id":18777,"nodeType":"OverrideSpecifier","overrides":[],"src":"3264:8:65"},"parameters":{"id":18776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18775,"mutability":"mutable","name":"_uniswapRouter","nameLocation":"3239:14:65","nodeType":"VariableDeclaration","scope":18786,"src":"3231:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18774,"name":"address","nodeType":"ElementaryTypeName","src":"3231:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3230:24:65"},"returnParameters":{"id":18780,"nodeType":"ParameterList","parameters":[],"src":"3283:0:65"},"scope":19256,"src":"3205:127:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4708],"body":{"id":18798,"nodeType":"Block","src":"3418:49:65","statements":[{"expression":{"id":18796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18794,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18686,"src":"3429:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18795,"name":"_baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18788,"src":"3445:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3429:30:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18797,"nodeType":"ExpressionStatement","src":"3429:30:65"}]},"functionSelector":"c3f5df5c","id":18799,"implemented":true,"kind":"function","modifiers":[{"id":18792,"kind":"modifierInvocation","modifierName":{"id":18791,"name":"onlyOwner","nameLocations":["3408:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3408:9:65"},"nodeType":"ModifierInvocation","src":"3408:9:65"}],"name":"setBaluniSwapper","nameLocation":"3349:16:65","nodeType":"FunctionDefinition","overrides":{"id":18790,"nodeType":"OverrideSpecifier","overrides":[],"src":"3399:8:65"},"parameters":{"id":18789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18788,"mutability":"mutable","name":"_baluniSwapper","nameLocation":"3374:14:65","nodeType":"VariableDeclaration","scope":18799,"src":"3366:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18787,"name":"address","nodeType":"ElementaryTypeName","src":"3366:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3365:24:65"},"returnParameters":{"id":18793,"nodeType":"ParameterList","parameters":[],"src":"3418:0:65"},"scope":19256,"src":"3340:127:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4713],"body":{"id":18811,"nodeType":"Block","src":"3551:47:65","statements":[{"expression":{"id":18809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18807,"name":"baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18684,"src":"3562:12:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18808,"name":"_baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18801,"src":"3577:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3562:28:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18810,"nodeType":"ExpressionStatement","src":"3562:28:65"}]},"functionSelector":"f5b84f64","id":18812,"implemented":true,"kind":"function","modifiers":[{"id":18805,"kind":"modifierInvocation","modifierName":{"id":18804,"name":"onlyOwner","nameLocations":["3541:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3541:9:65"},"nodeType":"ModifierInvocation","src":"3541:9:65"}],"name":"setBaluniOracle","nameLocation":"3484:15:65","nodeType":"FunctionDefinition","overrides":{"id":18803,"nodeType":"OverrideSpecifier","overrides":[],"src":"3532:8:65"},"parameters":{"id":18802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18801,"mutability":"mutable","name":"_baluniOracle","nameLocation":"3508:13:65","nodeType":"VariableDeclaration","scope":18812,"src":"3500:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18800,"name":"address","nodeType":"ElementaryTypeName","src":"3500:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3499:23:65"},"returnParameters":{"id":18806,"nodeType":"ParameterList","parameters":[],"src":"3551:0:65"},"scope":19256,"src":"3475:123:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4698],"body":{"id":18824,"nodeType":"Block","src":"3694:59:65","statements":[{"expression":{"id":18822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18820,"name":"baluniAgentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18672,"src":"3705:18:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18821,"name":"_baluniAgentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18814,"src":"3726:19:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3705:40:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18823,"nodeType":"ExpressionStatement","src":"3705:40:65"}]},"functionSelector":"f1dccde7","id":18825,"implemented":true,"kind":"function","modifiers":[{"id":18818,"kind":"modifierInvocation","modifierName":{"id":18817,"name":"onlyOwner","nameLocations":["3684:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3684:9:65"},"nodeType":"ModifierInvocation","src":"3684:9:65"}],"name":"setBaluniAgentFactory","nameLocation":"3615:21:65","nodeType":"FunctionDefinition","overrides":{"id":18816,"nodeType":"OverrideSpecifier","overrides":[],"src":"3675:8:65"},"parameters":{"id":18815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18814,"mutability":"mutable","name":"_baluniAgentFactory","nameLocation":"3645:19:65","nodeType":"VariableDeclaration","scope":18825,"src":"3637:27:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18813,"name":"address","nodeType":"ElementaryTypeName","src":"3637:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3636:29:65"},"returnParameters":{"id":18819,"nodeType":"ParameterList","parameters":[],"src":"3694:0:65"},"scope":19256,"src":"3606:147:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4703],"body":{"id":18837,"nodeType":"Block","src":"3851:61:65","statements":[{"expression":{"id":18835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18833,"name":"baluniPoolPeriphery","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18674,"src":"3862:19:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18834,"name":"_baluniPoolPeriphery","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18827,"src":"3884:20:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3862:42:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18836,"nodeType":"ExpressionStatement","src":"3862:42:65"}]},"functionSelector":"588c5b70","id":18838,"implemented":true,"kind":"function","modifiers":[{"id":18831,"kind":"modifierInvocation","modifierName":{"id":18830,"name":"onlyOwner","nameLocations":["3841:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3841:9:65"},"nodeType":"ModifierInvocation","src":"3841:9:65"}],"name":"setBaluniPoolPeriphery","nameLocation":"3770:22:65","nodeType":"FunctionDefinition","overrides":{"id":18829,"nodeType":"OverrideSpecifier","overrides":[],"src":"3832:8:65"},"parameters":{"id":18828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18827,"mutability":"mutable","name":"_baluniPoolPeriphery","nameLocation":"3801:20:65","nodeType":"VariableDeclaration","scope":18838,"src":"3793:28:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18826,"name":"address","nodeType":"ElementaryTypeName","src":"3793:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3792:30:65"},"returnParameters":{"id":18832,"nodeType":"ParameterList","parameters":[],"src":"3851:0:65"},"scope":19256,"src":"3761:151:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4718],"body":{"id":18850,"nodeType":"Block","src":"4008:59:65","statements":[{"expression":{"id":18848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18846,"name":"baluniPoolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18676,"src":"4019:18:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18847,"name":"_baluniPoolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18840,"src":"4040:19:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4019:40:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18849,"nodeType":"ExpressionStatement","src":"4019:40:65"}]},"functionSelector":"f98977a9","id":18851,"implemented":true,"kind":"function","modifiers":[{"id":18844,"kind":"modifierInvocation","modifierName":{"id":18843,"name":"onlyOwner","nameLocations":["3998:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3998:9:65"},"nodeType":"ModifierInvocation","src":"3998:9:65"}],"name":"setBaluniPoolRegistry","nameLocation":"3929:21:65","nodeType":"FunctionDefinition","overrides":{"id":18842,"nodeType":"OverrideSpecifier","overrides":[],"src":"3989:8:65"},"parameters":{"id":18841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18840,"mutability":"mutable","name":"_baluniPoolRegistry","nameLocation":"3959:19:65","nodeType":"VariableDeclaration","scope":18851,"src":"3951:27:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18839,"name":"address","nodeType":"ElementaryTypeName","src":"3951:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3950:29:65"},"returnParameters":{"id":18845,"nodeType":"ParameterList","parameters":[],"src":"4008:0:65"},"scope":19256,"src":"3920:147:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4728],"body":{"id":18863,"nodeType":"Block","src":"4159:55:65","statements":[{"expression":{"id":18861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18859,"name":"baluniRebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18678,"src":"4170:16:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18860,"name":"_baluniRebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18853,"src":"4189:17:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4170:36:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18862,"nodeType":"ExpressionStatement","src":"4170:36:65"}]},"functionSelector":"0241bffa","id":18864,"implemented":true,"kind":"function","modifiers":[{"id":18857,"kind":"modifierInvocation","modifierName":{"id":18856,"name":"onlyOwner","nameLocations":["4149:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4149:9:65"},"nodeType":"ModifierInvocation","src":"4149:9:65"}],"name":"setBaluniRebalancer","nameLocation":"4084:19:65","nodeType":"FunctionDefinition","overrides":{"id":18855,"nodeType":"OverrideSpecifier","overrides":[],"src":"4140:8:65"},"parameters":{"id":18854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18853,"mutability":"mutable","name":"_baluniRebalancer","nameLocation":"4112:17:65","nodeType":"VariableDeclaration","scope":18864,"src":"4104:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18852,"name":"address","nodeType":"ElementaryTypeName","src":"4104:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4103:27:65"},"returnParameters":{"id":18858,"nodeType":"ParameterList","parameters":[],"src":"4159:0:65"},"scope":19256,"src":"4075:139:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4773],"body":{"id":18876,"nodeType":"Block","src":"4322:71:65","statements":[{"expression":{"id":18874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18872,"name":"baluniYearnVaultRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18688,"src":"4333:24:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18873,"name":"_baluniYearnVaultRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18866,"src":"4360:25:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4333:52:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18875,"nodeType":"ExpressionStatement","src":"4333:52:65"}]},"functionSelector":"ba535c54","id":18877,"implemented":true,"kind":"function","modifiers":[{"id":18870,"kind":"modifierInvocation","modifierName":{"id":18869,"name":"onlyOwner","nameLocations":["4312:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4312:9:65"},"nodeType":"ModifierInvocation","src":"4312:9:65"}],"name":"setBaluniYearnVaultRegistry","nameLocation":"4231:27:65","nodeType":"FunctionDefinition","overrides":{"id":18868,"nodeType":"OverrideSpecifier","overrides":[],"src":"4303:8:65"},"parameters":{"id":18867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18866,"mutability":"mutable","name":"_baluniYearnVaultRegistry","nameLocation":"4267:25:65","nodeType":"VariableDeclaration","scope":18877,"src":"4259:33:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18865,"name":"address","nodeType":"ElementaryTypeName","src":"4259:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4258:35:65"},"returnParameters":{"id":18871,"nodeType":"ParameterList","parameters":[],"src":"4322:0:65"},"scope":19256,"src":"4222:171:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4733],"body":{"id":18889,"nodeType":"Block","src":"4477:47:65","statements":[{"expression":{"id":18887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18885,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18680,"src":"4488:12:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18886,"name":"_baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18879,"src":"4503:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4488:28:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18888,"nodeType":"ExpressionStatement","src":"4488:28:65"}]},"functionSelector":"400fb668","id":18890,"implemented":true,"kind":"function","modifiers":[{"id":18883,"kind":"modifierInvocation","modifierName":{"id":18882,"name":"onlyOwner","nameLocations":["4467:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4467:9:65"},"nodeType":"ModifierInvocation","src":"4467:9:65"}],"name":"setBaluniRouter","nameLocation":"4410:15:65","nodeType":"FunctionDefinition","overrides":{"id":18881,"nodeType":"OverrideSpecifier","overrides":[],"src":"4458:8:65"},"parameters":{"id":18880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18879,"mutability":"mutable","name":"_baluniRouter","nameLocation":"4434:13:65","nodeType":"VariableDeclaration","scope":18890,"src":"4426:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18878,"name":"address","nodeType":"ElementaryTypeName","src":"4426:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4425:23:65"},"returnParameters":{"id":18884,"nodeType":"ParameterList","parameters":[],"src":"4477:0:65"},"scope":19256,"src":"4401:123:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4738],"body":{"id":18902,"nodeType":"Block","src":"4612:51:65","statements":[{"expression":{"id":18900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18898,"name":"baluniRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18682,"src":"4623:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18899,"name":"_baluniRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"4640:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4623:32:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18901,"nodeType":"ExpressionStatement","src":"4623:32:65"}]},"functionSelector":"6c43274c","id":18903,"implemented":true,"kind":"function","modifiers":[{"id":18896,"kind":"modifierInvocation","modifierName":{"id":18895,"name":"onlyOwner","nameLocations":["4602:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4602:9:65"},"nodeType":"ModifierInvocation","src":"4602:9:65"}],"name":"setBaluniRegistry","nameLocation":"4541:17:65","nodeType":"FunctionDefinition","overrides":{"id":18894,"nodeType":"OverrideSpecifier","overrides":[],"src":"4593:8:65"},"parameters":{"id":18893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18892,"mutability":"mutable","name":"_baluniRegistry","nameLocation":"4567:15:65","nodeType":"VariableDeclaration","scope":18903,"src":"4559:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18891,"name":"address","nodeType":"ElementaryTypeName","src":"4559:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4558:25:65"},"returnParameters":{"id":18897,"nodeType":"ParameterList","parameters":[],"src":"4612:0:65"},"scope":19256,"src":"4532:131:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4743],"body":{"id":18915,"nodeType":"Block","src":"4737:37:65","statements":[{"expression":{"id":18913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18911,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18696,"src":"4748:7:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18912,"name":"_WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18905,"src":"4758:8:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4748:18:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18914,"nodeType":"ExpressionStatement","src":"4748:18:65"}]},"functionSelector":"b6fe9cc7","id":18916,"implemented":true,"kind":"function","modifiers":[{"id":18909,"kind":"modifierInvocation","modifierName":{"id":18908,"name":"onlyOwner","nameLocations":["4727:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4727:9:65"},"nodeType":"ModifierInvocation","src":"4727:9:65"}],"name":"setWNATIVE","nameLocation":"4680:10:65","nodeType":"FunctionDefinition","overrides":{"id":18907,"nodeType":"OverrideSpecifier","overrides":[],"src":"4718:8:65"},"parameters":{"id":18906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18905,"mutability":"mutable","name":"_WNATIVE","nameLocation":"4699:8:65","nodeType":"VariableDeclaration","scope":18916,"src":"4691:16:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18904,"name":"address","nodeType":"ElementaryTypeName","src":"4691:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4690:18:65"},"returnParameters":{"id":18910,"nodeType":"ParameterList","parameters":[],"src":"4737:0:65"},"scope":19256,"src":"4671:103:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4748],"body":{"id":18928,"nodeType":"Block","src":"4842:31:65","statements":[{"expression":{"id":18926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18924,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18698,"src":"4853:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18925,"name":"_USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18918,"src":"4860:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4853:12:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18927,"nodeType":"ExpressionStatement","src":"4853:12:65"}]},"functionSelector":"b3e089a2","id":18929,"implemented":true,"kind":"function","modifiers":[{"id":18922,"kind":"modifierInvocation","modifierName":{"id":18921,"name":"onlyOwner","nameLocations":["4832:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4832:9:65"},"nodeType":"ModifierInvocation","src":"4832:9:65"}],"name":"setUSDC","nameLocation":"4791:7:65","nodeType":"FunctionDefinition","overrides":{"id":18920,"nodeType":"OverrideSpecifier","overrides":[],"src":"4823:8:65"},"parameters":{"id":18919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18918,"mutability":"mutable","name":"_USDC","nameLocation":"4807:5:65","nodeType":"VariableDeclaration","scope":18929,"src":"4799:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18917,"name":"address","nodeType":"ElementaryTypeName","src":"4799:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4798:15:65"},"returnParameters":{"id":18923,"nodeType":"ParameterList","parameters":[],"src":"4842:0:65"},"scope":19256,"src":"4782:91:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4763],"body":{"id":18941,"nodeType":"Block","src":"4958:49:65","statements":[{"expression":{"id":18939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18937,"name":"_1inchSpotAgg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"4969:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18938,"name":"__1inchSpotAgg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18931,"src":"4985:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4969:30:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18940,"nodeType":"ExpressionStatement","src":"4969:30:65"}]},"functionSelector":"c08f786b","id":18942,"implemented":true,"kind":"function","modifiers":[{"id":18935,"kind":"modifierInvocation","modifierName":{"id":18934,"name":"onlyOwner","nameLocations":["4948:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4948:9:65"},"nodeType":"ModifierInvocation","src":"4948:9:65"}],"name":"set1inchSpotAgg","nameLocation":"4890:15:65","nodeType":"FunctionDefinition","overrides":{"id":18933,"nodeType":"OverrideSpecifier","overrides":[],"src":"4939:8:65"},"parameters":{"id":18932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18931,"mutability":"mutable","name":"__1inchSpotAgg","nameLocation":"4914:14:65","nodeType":"VariableDeclaration","scope":18942,"src":"4906:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18930,"name":"address","nodeType":"ElementaryTypeName","src":"4906:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4905:24:65"},"returnParameters":{"id":18936,"nodeType":"ParameterList","parameters":[],"src":"4958:0:65"},"scope":19256,"src":"4881:126:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4888],"body":{"id":18954,"nodeType":"Block","src":"5091:47:65","statements":[{"expression":{"id":18952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18950,"name":"staticOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18694,"src":"5102:12:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18951,"name":"_staticOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18944,"src":"5117:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5102:28:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18953,"nodeType":"ExpressionStatement","src":"5102:28:65"}]},"functionSelector":"cc01e9a6","id":18955,"implemented":true,"kind":"function","modifiers":[{"id":18948,"kind":"modifierInvocation","modifierName":{"id":18947,"name":"onlyOwner","nameLocations":["5081:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5081:9:65"},"nodeType":"ModifierInvocation","src":"5081:9:65"}],"name":"setStaticOracle","nameLocation":"5024:15:65","nodeType":"FunctionDefinition","overrides":{"id":18946,"nodeType":"OverrideSpecifier","overrides":[],"src":"5072:8:65"},"parameters":{"id":18945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18944,"mutability":"mutable","name":"_staticOracle","nameLocation":"5048:13:65","nodeType":"VariableDeclaration","scope":18955,"src":"5040:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18943,"name":"address","nodeType":"ElementaryTypeName","src":"5040:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5039:23:65"},"returnParameters":{"id":18949,"nodeType":"ParameterList","parameters":[],"src":"5091:0:65"},"scope":19256,"src":"5015:123:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4723],"body":{"id":18967,"nodeType":"Block","src":"5242:67:65","statements":[{"expression":{"id":18965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18963,"name":"baluniDCAVaultRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"5253:22:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18964,"name":"_baluniDCAVaultRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18957,"src":"5278:23:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5253:48:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18966,"nodeType":"ExpressionStatement","src":"5253:48:65"}]},"functionSelector":"d7e53673","id":18968,"implemented":true,"kind":"function","modifiers":[{"id":18961,"kind":"modifierInvocation","modifierName":{"id":18960,"name":"onlyOwner","nameLocations":["5232:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5232:9:65"},"nodeType":"ModifierInvocation","src":"5232:9:65"}],"name":"setBaluniDCAVaultRegistry","nameLocation":"5155:25:65","nodeType":"FunctionDefinition","overrides":{"id":18959,"nodeType":"OverrideSpecifier","overrides":[],"src":"5223:8:65"},"parameters":{"id":18958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18957,"mutability":"mutable","name":"_baluniDCAVaultRegistry","nameLocation":"5189:23:65","nodeType":"VariableDeclaration","scope":18968,"src":"5181:31:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18956,"name":"address","nodeType":"ElementaryTypeName","src":"5181:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5180:33:65"},"returnParameters":{"id":18962,"nodeType":"ParameterList","parameters":[],"src":"5242:0:65"},"scope":19256,"src":"5146:163:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4768],"body":{"id":18980,"nodeType":"Block","src":"5384:39:65","statements":[{"expression":{"id":18978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18976,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18704,"src":"5395:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18977,"name":"__BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18970,"src":"5406:9:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5395:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18979,"nodeType":"ExpressionStatement","src":"5395:20:65"}]},"functionSelector":"9e6453f8","id":18981,"implemented":true,"kind":"function","modifiers":[{"id":18974,"kind":"modifierInvocation","modifierName":{"id":18973,"name":"onlyOwner","nameLocations":["5374:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5374:9:65"},"nodeType":"ModifierInvocation","src":"5374:9:65"}],"name":"setBPS_FEE","nameLocation":"5326:10:65","nodeType":"FunctionDefinition","overrides":{"id":18972,"nodeType":"OverrideSpecifier","overrides":[],"src":"5365:8:65"},"parameters":{"id":18971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18970,"mutability":"mutable","name":"__BPS_FEE","nameLocation":"5345:9:65","nodeType":"VariableDeclaration","scope":18981,"src":"5337:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18969,"name":"uint256","nodeType":"ElementaryTypeName","src":"5337:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5336:19:65"},"returnParameters":{"id":18975,"nodeType":"ParameterList","parameters":[],"src":"5384:0:65"},"scope":19256,"src":"5317:106:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4753],"body":{"id":18993,"nodeType":"Block","src":"5522:63:65","statements":[{"expression":{"id":18991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18989,"name":"_REBALANCE_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18708,"src":"5533:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18990,"name":"__REBALANCE_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18983,"src":"5556:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5533:44:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18992,"nodeType":"ExpressionStatement","src":"5533:44:65"}]},"functionSelector":"2da52442","id":18994,"implemented":true,"kind":"function","modifiers":[{"id":18987,"kind":"modifierInvocation","modifierName":{"id":18986,"name":"onlyOwner","nameLocations":["5512:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5512:9:65"},"nodeType":"ModifierInvocation","src":"5512:9:65"}],"name":"setREBALANCE_THRESHOLD","nameLocation":"5440:22:65","nodeType":"FunctionDefinition","overrides":{"id":18985,"nodeType":"OverrideSpecifier","overrides":[],"src":"5503:8:65"},"parameters":{"id":18984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18983,"mutability":"mutable","name":"__REBALANCE_THRESHOLD","nameLocation":"5471:21:65","nodeType":"VariableDeclaration","scope":18994,"src":"5463:29:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18982,"name":"uint256","nodeType":"ElementaryTypeName","src":"5463:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5462:31:65"},"returnParameters":{"id":18988,"nodeType":"ParameterList","parameters":[],"src":"5522:0:65"},"scope":19256,"src":"5431:154:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4793],"body":{"id":19002,"nodeType":"Block","src":"5663:40:65","statements":[{"expression":{"id":19000,"name":"uniswapFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18668,"src":"5681:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18999,"id":19001,"nodeType":"Return","src":"5674:21:65"}]},"functionSelector":"3e6dfa36","id":19003,"implemented":true,"kind":"function","modifiers":[],"name":"getUniswapFactory","nameLocation":"5602:17:65","nodeType":"FunctionDefinition","overrides":{"id":18996,"nodeType":"OverrideSpecifier","overrides":[],"src":"5636:8:65"},"parameters":{"id":18995,"nodeType":"ParameterList","parameters":[],"src":"5619:2:65"},"returnParameters":{"id":18999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19003,"src":"5654:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18997,"name":"address","nodeType":"ElementaryTypeName","src":"5654:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5653:9:65"},"scope":19256,"src":"5593:110:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4798],"body":{"id":19011,"nodeType":"Block","src":"5780:39:65","statements":[{"expression":{"id":19009,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18670,"src":"5798:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19008,"id":19010,"nodeType":"Return","src":"5791:20:65"}]},"functionSelector":"524900b5","id":19012,"implemented":true,"kind":"function","modifiers":[],"name":"getUniswapRouter","nameLocation":"5720:16:65","nodeType":"FunctionDefinition","overrides":{"id":19005,"nodeType":"OverrideSpecifier","overrides":[],"src":"5753:8:65"},"parameters":{"id":19004,"nodeType":"ParameterList","parameters":[],"src":"5736:2:65"},"returnParameters":{"id":19008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19012,"src":"5771:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19006,"name":"address","nodeType":"ElementaryTypeName","src":"5771:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5770:9:65"},"scope":19256,"src":"5711:108:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4803],"body":{"id":19020,"nodeType":"Block","src":"5896:39:65","statements":[{"expression":{"id":19018,"name":"baluniSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18686,"src":"5914:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19017,"id":19019,"nodeType":"Return","src":"5907:20:65"}]},"functionSelector":"82755ebb","id":19021,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniSwapper","nameLocation":"5836:16:65","nodeType":"FunctionDefinition","overrides":{"id":19014,"nodeType":"OverrideSpecifier","overrides":[],"src":"5869:8:65"},"parameters":{"id":19013,"nodeType":"ParameterList","parameters":[],"src":"5852:2:65"},"returnParameters":{"id":19017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19021,"src":"5887:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19015,"name":"address","nodeType":"ElementaryTypeName","src":"5887:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5886:9:65"},"scope":19256,"src":"5827:108:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4808],"body":{"id":19029,"nodeType":"Block","src":"6011:38:65","statements":[{"expression":{"id":19027,"name":"baluniOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18684,"src":"6029:12:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19026,"id":19028,"nodeType":"Return","src":"6022:19:65"}]},"functionSelector":"bb3ba04c","id":19030,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniOracle","nameLocation":"5952:15:65","nodeType":"FunctionDefinition","overrides":{"id":19023,"nodeType":"OverrideSpecifier","overrides":[],"src":"5984:8:65"},"parameters":{"id":19022,"nodeType":"ParameterList","parameters":[],"src":"5967:2:65"},"returnParameters":{"id":19026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19030,"src":"6002:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19024,"name":"address","nodeType":"ElementaryTypeName","src":"6002:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6001:9:65"},"scope":19256,"src":"5943:106:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4813],"body":{"id":19038,"nodeType":"Block","src":"6131:44:65","statements":[{"expression":{"id":19036,"name":"baluniAgentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18672,"src":"6149:18:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19035,"id":19037,"nodeType":"Return","src":"6142:25:65"}]},"functionSelector":"f5d2d998","id":19039,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniAgentFactory","nameLocation":"6066:21:65","nodeType":"FunctionDefinition","overrides":{"id":19032,"nodeType":"OverrideSpecifier","overrides":[],"src":"6104:8:65"},"parameters":{"id":19031,"nodeType":"ParameterList","parameters":[],"src":"6087:2:65"},"returnParameters":{"id":19035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19039,"src":"6122:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19033,"name":"address","nodeType":"ElementaryTypeName","src":"6122:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6121:9:65"},"scope":19256,"src":"6057:118:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4818],"body":{"id":19047,"nodeType":"Block","src":"6258:45:65","statements":[{"expression":{"id":19045,"name":"baluniPoolPeriphery","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18674,"src":"6276:19:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19044,"id":19046,"nodeType":"Return","src":"6269:26:65"}]},"functionSelector":"1acb6141","id":19048,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniPoolPeriphery","nameLocation":"6192:22:65","nodeType":"FunctionDefinition","overrides":{"id":19041,"nodeType":"OverrideSpecifier","overrides":[],"src":"6231:8:65"},"parameters":{"id":19040,"nodeType":"ParameterList","parameters":[],"src":"6214:2:65"},"returnParameters":{"id":19044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19043,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19048,"src":"6249:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19042,"name":"address","nodeType":"ElementaryTypeName","src":"6249:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6248:9:65"},"scope":19256,"src":"6183:120:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4828],"body":{"id":19056,"nodeType":"Block","src":"6385:44:65","statements":[{"expression":{"id":19054,"name":"baluniPoolRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18676,"src":"6403:18:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19053,"id":19055,"nodeType":"Return","src":"6396:25:65"}]},"functionSelector":"32569e02","id":19057,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniPoolRegistry","nameLocation":"6320:21:65","nodeType":"FunctionDefinition","overrides":{"id":19050,"nodeType":"OverrideSpecifier","overrides":[],"src":"6358:8:65"},"parameters":{"id":19049,"nodeType":"ParameterList","parameters":[],"src":"6341:2:65"},"returnParameters":{"id":19053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19057,"src":"6376:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19051,"name":"address","nodeType":"ElementaryTypeName","src":"6376:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6375:9:65"},"scope":19256,"src":"6311:118:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4833],"body":{"id":19065,"nodeType":"Block","src":"6509:42:65","statements":[{"expression":{"id":19063,"name":"baluniRebalancer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18678,"src":"6527:16:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19062,"id":19064,"nodeType":"Return","src":"6520:23:65"}]},"functionSelector":"cff49d68","id":19066,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniRebalancer","nameLocation":"6446:19:65","nodeType":"FunctionDefinition","overrides":{"id":19059,"nodeType":"OverrideSpecifier","overrides":[],"src":"6482:8:65"},"parameters":{"id":19058,"nodeType":"ParameterList","parameters":[],"src":"6465:2:65"},"returnParameters":{"id":19062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19066,"src":"6500:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19060,"name":"address","nodeType":"ElementaryTypeName","src":"6500:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6499:9:65"},"scope":19256,"src":"6437:114:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4838],"body":{"id":19074,"nodeType":"Block","src":"6627:38:65","statements":[{"expression":{"id":19072,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18680,"src":"6645:12:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19071,"id":19073,"nodeType":"Return","src":"6638:19:65"}]},"functionSelector":"04cc7325","id":19075,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniRouter","nameLocation":"6568:15:65","nodeType":"FunctionDefinition","overrides":{"id":19068,"nodeType":"OverrideSpecifier","overrides":[],"src":"6600:8:65"},"parameters":{"id":19067,"nodeType":"ParameterList","parameters":[],"src":"6583:2:65"},"returnParameters":{"id":19071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19070,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19075,"src":"6618:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19069,"name":"address","nodeType":"ElementaryTypeName","src":"6618:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6617:9:65"},"scope":19256,"src":"6559:106:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4843],"body":{"id":19083,"nodeType":"Block","src":"6743:40:65","statements":[{"expression":{"id":19081,"name":"baluniRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18682,"src":"6761:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19080,"id":19082,"nodeType":"Return","src":"6754:21:65"}]},"functionSelector":"c9aba8ae","id":19084,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniRegistry","nameLocation":"6682:17:65","nodeType":"FunctionDefinition","overrides":{"id":19077,"nodeType":"OverrideSpecifier","overrides":[],"src":"6716:8:65"},"parameters":{"id":19076,"nodeType":"ParameterList","parameters":[],"src":"6699:2:65"},"returnParameters":{"id":19080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19079,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19084,"src":"6734:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19078,"name":"address","nodeType":"ElementaryTypeName","src":"6734:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6733:9:65"},"scope":19256,"src":"6673:110:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4848],"body":{"id":19092,"nodeType":"Block","src":"6854:33:65","statements":[{"expression":{"id":19090,"name":"WNATIVE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18696,"src":"6872:7:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19089,"id":19091,"nodeType":"Return","src":"6865:14:65"}]},"functionSelector":"6c9c0078","id":19093,"implemented":true,"kind":"function","modifiers":[],"name":"getWNATIVE","nameLocation":"6800:10:65","nodeType":"FunctionDefinition","overrides":{"id":19086,"nodeType":"OverrideSpecifier","overrides":[],"src":"6827:8:65"},"parameters":{"id":19085,"nodeType":"ParameterList","parameters":[],"src":"6810:2:65"},"returnParameters":{"id":19089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19093,"src":"6845:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19087,"name":"address","nodeType":"ElementaryTypeName","src":"6845:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6844:9:65"},"scope":19256,"src":"6791:96:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4853],"body":{"id":19101,"nodeType":"Block","src":"6955:30:65","statements":[{"expression":{"id":19099,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18698,"src":"6973:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19098,"id":19100,"nodeType":"Return","src":"6966:11:65"}]},"functionSelector":"1bf01e9b","id":19102,"implemented":true,"kind":"function","modifiers":[],"name":"getUSDC","nameLocation":"6904:7:65","nodeType":"FunctionDefinition","overrides":{"id":19095,"nodeType":"OverrideSpecifier","overrides":[],"src":"6928:8:65"},"parameters":{"id":19094,"nodeType":"ParameterList","parameters":[],"src":"6911:2:65"},"returnParameters":{"id":19098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19102,"src":"6946:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19096,"name":"address","nodeType":"ElementaryTypeName","src":"6946:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6945:9:65"},"scope":19256,"src":"6895:90:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4858],"body":{"id":19110,"nodeType":"Block","src":"7061:39:65","statements":[{"expression":{"id":19108,"name":"_1inchSpotAgg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18700,"src":"7079:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19107,"id":19109,"nodeType":"Return","src":"7072:20:65"}]},"functionSelector":"8e1c3a8a","id":19111,"implemented":true,"kind":"function","modifiers":[],"name":"get1inchSpotAgg","nameLocation":"7002:15:65","nodeType":"FunctionDefinition","overrides":{"id":19104,"nodeType":"OverrideSpecifier","overrides":[],"src":"7034:8:65"},"parameters":{"id":19103,"nodeType":"ParameterList","parameters":[],"src":"7017:2:65"},"returnParameters":{"id":19107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19111,"src":"7052:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19105,"name":"address","nodeType":"ElementaryTypeName","src":"7052:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7051:9:65"},"scope":19256,"src":"6993:107:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4863],"body":{"id":19119,"nodeType":"Block","src":"7171:34:65","statements":[{"expression":{"id":19117,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18704,"src":"7189:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19116,"id":19118,"nodeType":"Return","src":"7182:15:65"}]},"functionSelector":"85462d6f","id":19120,"implemented":true,"kind":"function","modifiers":[],"name":"getBPS_FEE","nameLocation":"7117:10:65","nodeType":"FunctionDefinition","overrides":{"id":19113,"nodeType":"OverrideSpecifier","overrides":[],"src":"7144:8:65"},"parameters":{"id":19112,"nodeType":"ParameterList","parameters":[],"src":"7127:2:65"},"returnParameters":{"id":19116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19120,"src":"7162:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19114,"name":"uint256","nodeType":"ElementaryTypeName","src":"7162:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7161:9:65"},"scope":19256,"src":"7108:97:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4868],"body":{"id":19128,"nodeType":"Block","src":"7280:38:65","statements":[{"expression":{"id":19126,"name":"_MAX_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18702,"src":"7298:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19125,"id":19127,"nodeType":"Return","src":"7291:19:65"}]},"functionSelector":"9380fb6f","id":19129,"implemented":true,"kind":"function","modifiers":[],"name":"getMAX_BPS_FEE","nameLocation":"7222:14:65","nodeType":"FunctionDefinition","overrides":{"id":19122,"nodeType":"OverrideSpecifier","overrides":[],"src":"7253:8:65"},"parameters":{"id":19121,"nodeType":"ParameterList","parameters":[],"src":"7236:2:65"},"returnParameters":{"id":19125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19129,"src":"7271:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19123,"name":"uint256","nodeType":"ElementaryTypeName","src":"7271:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7270:9:65"},"scope":19256,"src":"7213:105:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4873],"body":{"id":19137,"nodeType":"Block","src":"7390:35:65","statements":[{"expression":{"id":19135,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18706,"src":"7408:9:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19134,"id":19136,"nodeType":"Return","src":"7401:16:65"}]},"functionSelector":"4f4608a2","id":19138,"implemented":true,"kind":"function","modifiers":[],"name":"getBPS_BASE","nameLocation":"7335:11:65","nodeType":"FunctionDefinition","overrides":{"id":19131,"nodeType":"OverrideSpecifier","overrides":[],"src":"7363:8:65"},"parameters":{"id":19130,"nodeType":"ParameterList","parameters":[],"src":"7346:2:65"},"returnParameters":{"id":19134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19138,"src":"7381:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19132,"name":"uint256","nodeType":"ElementaryTypeName","src":"7381:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7380:9:65"},"scope":19256,"src":"7326:99:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4878],"body":{"id":19146,"nodeType":"Block","src":"7508:46:65","statements":[{"expression":{"id":19144,"name":"_REBALANCE_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18708,"src":"7526:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19143,"id":19145,"nodeType":"Return","src":"7519:27:65"}]},"functionSelector":"ea233c05","id":19147,"implemented":true,"kind":"function","modifiers":[],"name":"getREBALANCE_THRESHOLD","nameLocation":"7442:22:65","nodeType":"FunctionDefinition","overrides":{"id":19140,"nodeType":"OverrideSpecifier","overrides":[],"src":"7481:8:65"},"parameters":{"id":19139,"nodeType":"ParameterList","parameters":[],"src":"7464:2:65"},"returnParameters":{"id":19143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19147,"src":"7499:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19141,"name":"uint256","nodeType":"ElementaryTypeName","src":"7499:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7498:9:65"},"scope":19256,"src":"7433:121:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4883],"body":{"id":19155,"nodeType":"Block","src":"7626:34:65","statements":[{"expression":{"id":19153,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18692,"src":"7644:8:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19152,"id":19154,"nodeType":"Return","src":"7637:15:65"}]},"functionSelector":"3b19e84a","id":19156,"implemented":true,"kind":"function","modifiers":[],"name":"getTreasury","nameLocation":"7571:11:65","nodeType":"FunctionDefinition","overrides":{"id":19149,"nodeType":"OverrideSpecifier","overrides":[],"src":"7599:8:65"},"parameters":{"id":19148,"nodeType":"ParameterList","parameters":[],"src":"7582:2:65"},"returnParameters":{"id":19152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19156,"src":"7617:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19150,"name":"address","nodeType":"ElementaryTypeName","src":"7617:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7616:9:65"},"scope":19256,"src":"7562:98:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4893],"body":{"id":19164,"nodeType":"Block","src":"7736:38:65","statements":[{"expression":{"id":19162,"name":"staticOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18694,"src":"7754:12:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19161,"id":19163,"nodeType":"Return","src":"7747:19:65"}]},"functionSelector":"a5d2236f","id":19165,"implemented":true,"kind":"function","modifiers":[],"name":"getStaticOracle","nameLocation":"7677:15:65","nodeType":"FunctionDefinition","overrides":{"id":19158,"nodeType":"OverrideSpecifier","overrides":[],"src":"7709:8:65"},"parameters":{"id":19157,"nodeType":"ParameterList","parameters":[],"src":"7692:2:65"},"returnParameters":{"id":19161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19165,"src":"7727:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19159,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7726:9:65"},"scope":19256,"src":"7668:106:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4898],"body":{"id":19173,"nodeType":"Block","src":"7862:50:65","statements":[{"expression":{"id":19171,"name":"baluniYearnVaultRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18688,"src":"7880:24:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19170,"id":19172,"nodeType":"Return","src":"7873:31:65"}]},"functionSelector":"32327d1f","id":19174,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniYearnVaultRegistry","nameLocation":"7791:27:65","nodeType":"FunctionDefinition","overrides":{"id":19167,"nodeType":"OverrideSpecifier","overrides":[],"src":"7835:8:65"},"parameters":{"id":19166,"nodeType":"ParameterList","parameters":[],"src":"7818:2:65"},"returnParameters":{"id":19170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19174,"src":"7853:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19168,"name":"address","nodeType":"ElementaryTypeName","src":"7853:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7852:9:65"},"scope":19256,"src":"7782:130:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4823],"body":{"id":19182,"nodeType":"Block","src":"7998:48:65","statements":[{"expression":{"id":19180,"name":"baluniDCAVaultRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18690,"src":"8016:22:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19179,"id":19181,"nodeType":"Return","src":"8009:29:65"}]},"functionSelector":"ffa08e95","id":19183,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniDCAVaultRegistry","nameLocation":"7929:25:65","nodeType":"FunctionDefinition","overrides":{"id":19176,"nodeType":"OverrideSpecifier","overrides":[],"src":"7971:8:65"},"parameters":{"id":19175,"nodeType":"ParameterList","parameters":[],"src":"7954:2:65"},"returnParameters":{"id":19179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19183,"src":"7989:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19177,"name":"address","nodeType":"ElementaryTypeName","src":"7989:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7988:9:65"},"scope":19256,"src":"7920:126:65","stateMutability":"view","virtual":false,"visibility":"external"},{"constant":false,"functionSelector":"4db4a352","id":19185,"mutability":"mutable","name":"uniswapQuoter","nameLocation":"8080:13:65","nodeType":"VariableDeclaration","scope":19256,"src":"8065:28:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19184,"name":"address","nodeType":"ElementaryTypeName","src":"8065:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[4693],"body":{"id":19197,"nodeType":"Block","src":"8180:49:65","statements":[{"expression":{"id":19195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19193,"name":"uniswapQuoter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19185,"src":"8191:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19194,"name":"_uniswapQuoter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19187,"src":"8207:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8191:30:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19196,"nodeType":"ExpressionStatement","src":"8191:30:65"}]},"functionSelector":"26158136","id":19198,"implemented":true,"kind":"function","modifiers":[{"id":19191,"kind":"modifierInvocation","modifierName":{"id":19190,"name":"onlyOwner","nameLocations":["8170:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"8170:9:65"},"nodeType":"ModifierInvocation","src":"8170:9:65"}],"name":"setUniswapQuoter","nameLocation":"8111:16:65","nodeType":"FunctionDefinition","overrides":{"id":19189,"nodeType":"OverrideSpecifier","overrides":[],"src":"8161:8:65"},"parameters":{"id":19188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19187,"mutability":"mutable","name":"_uniswapQuoter","nameLocation":"8136:14:65","nodeType":"VariableDeclaration","scope":19198,"src":"8128:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19186,"name":"address","nodeType":"ElementaryTypeName","src":"8128:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8127:24:65"},"returnParameters":{"id":19192,"nodeType":"ParameterList","parameters":[],"src":"8180:0:65"},"scope":19256,"src":"8102:127:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4788],"body":{"id":19206,"nodeType":"Block","src":"8306:39:65","statements":[{"expression":{"id":19204,"name":"uniswapQuoter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19185,"src":"8324:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19203,"id":19205,"nodeType":"Return","src":"8317:20:65"}]},"functionSelector":"b0a70975","id":19207,"implemented":true,"kind":"function","modifiers":[],"name":"getUniswapQuoter","nameLocation":"8246:16:65","nodeType":"FunctionDefinition","overrides":{"id":19200,"nodeType":"OverrideSpecifier","overrides":[],"src":"8279:8:65"},"parameters":{"id":19199,"nodeType":"ParameterList","parameters":[],"src":"8262:2:65"},"returnParameters":{"id":19203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19202,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19207,"src":"8297:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19201,"name":"address","nodeType":"ElementaryTypeName","src":"8297:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8296:9:65"},"scope":19256,"src":"8237:108:65","stateMutability":"view","virtual":false,"visibility":"external"},{"constant":false,"functionSelector":"5333c118","id":19209,"mutability":"mutable","name":"baluniPoolZap","nameLocation":"8381:13:65","nodeType":"VariableDeclaration","scope":19256,"src":"8366:28:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19208,"name":"address","nodeType":"ElementaryTypeName","src":"8366:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[4778],"body":{"id":19221,"nodeType":"Block","src":"8481:49:65","statements":[{"expression":{"id":19219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19217,"name":"baluniPoolZap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19209,"src":"8492:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19218,"name":"_baluniPoolZap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19211,"src":"8508:14:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8492:30:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19220,"nodeType":"ExpressionStatement","src":"8492:30:65"}]},"functionSelector":"8ffc0673","id":19222,"implemented":true,"kind":"function","modifiers":[{"id":19215,"kind":"modifierInvocation","modifierName":{"id":19214,"name":"onlyOwner","nameLocations":["8471:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"8471:9:65"},"nodeType":"ModifierInvocation","src":"8471:9:65"}],"name":"setBaluniPoolZap","nameLocation":"8412:16:65","nodeType":"FunctionDefinition","overrides":{"id":19213,"nodeType":"OverrideSpecifier","overrides":[],"src":"8462:8:65"},"parameters":{"id":19212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19211,"mutability":"mutable","name":"_baluniPoolZap","nameLocation":"8437:14:65","nodeType":"VariableDeclaration","scope":19222,"src":"8429:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19210,"name":"address","nodeType":"ElementaryTypeName","src":"8429:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8428:24:65"},"returnParameters":{"id":19216,"nodeType":"ParameterList","parameters":[],"src":"8481:0:65"},"scope":19256,"src":"8403:127:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4903],"body":{"id":19230,"nodeType":"Block","src":"8607:39:65","statements":[{"expression":{"id":19228,"name":"baluniPoolZap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19209,"src":"8625:13:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19227,"id":19229,"nodeType":"Return","src":"8618:20:65"}]},"functionSelector":"040f767e","id":19231,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniPoolZap","nameLocation":"8547:16:65","nodeType":"FunctionDefinition","overrides":{"id":19224,"nodeType":"OverrideSpecifier","overrides":[],"src":"8580:8:65"},"parameters":{"id":19223,"nodeType":"ParameterList","parameters":[],"src":"8563:2:65"},"returnParameters":{"id":19227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19231,"src":"8598:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19225,"name":"address","nodeType":"ElementaryTypeName","src":"8598:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8597:9:65"},"scope":19256,"src":"8538:108:65","stateMutability":"view","virtual":false,"visibility":"external"},{"constant":false,"functionSelector":"9d9a9d47","id":19233,"mutability":"mutable","name":"baluniHyperPoolZap","nameLocation":"8682:18:65","nodeType":"VariableDeclaration","scope":19256,"src":"8667:33:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19232,"name":"address","nodeType":"ElementaryTypeName","src":"8667:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[4783],"body":{"id":19245,"nodeType":"Block","src":"8797:59:65","statements":[{"expression":{"id":19243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19241,"name":"baluniHyperPoolZap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19233,"src":"8808:18:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19242,"name":"_baluniHyperPoolZap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19235,"src":"8829:19:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8808:40:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19244,"nodeType":"ExpressionStatement","src":"8808:40:65"}]},"functionSelector":"a23dccee","id":19246,"implemented":true,"kind":"function","modifiers":[{"id":19239,"kind":"modifierInvocation","modifierName":{"id":19238,"name":"onlyOwner","nameLocations":["8787:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"8787:9:65"},"nodeType":"ModifierInvocation","src":"8787:9:65"}],"name":"setBaluniHyperPoolZap","nameLocation":"8718:21:65","nodeType":"FunctionDefinition","overrides":{"id":19237,"nodeType":"OverrideSpecifier","overrides":[],"src":"8778:8:65"},"parameters":{"id":19236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19235,"mutability":"mutable","name":"_baluniHyperPoolZap","nameLocation":"8748:19:65","nodeType":"VariableDeclaration","scope":19246,"src":"8740:27:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19234,"name":"address","nodeType":"ElementaryTypeName","src":"8740:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8739:29:65"},"returnParameters":{"id":19240,"nodeType":"ParameterList","parameters":[],"src":"8797:0:65"},"scope":19256,"src":"8709:147:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4908],"body":{"id":19254,"nodeType":"Block","src":"8938:44:65","statements":[{"expression":{"id":19252,"name":"baluniHyperPoolZap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19233,"src":"8956:18:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19251,"id":19253,"nodeType":"Return","src":"8949:25:65"}]},"functionSelector":"0f21717d","id":19255,"implemented":true,"kind":"function","modifiers":[],"name":"getBaluniHyperPoolZap","nameLocation":"8873:21:65","nodeType":"FunctionDefinition","overrides":{"id":19248,"nodeType":"OverrideSpecifier","overrides":[],"src":"8911:8:65"},"parameters":{"id":19247,"nodeType":"ParameterList","parameters":[],"src":"8894:2:65"},"returnParameters":{"id":19251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19250,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19255,"src":"8929:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19249,"name":"address","nodeType":"ElementaryTypeName","src":"8929:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8928:9:65"},"scope":19256,"src":"8864:118:65","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":19257,"src":"1752:7233:65","usedErrors":[30,35,211,214,475,480,1780,1793,2690,2693],"usedEvents":[41,219,1759]}],"src":"40:8947:65"},"id":65},"contracts/registry/BaluniV1YearnVaultRegistry.sol":{"ast":{"absolutePath":"contracts/registry/BaluniV1YearnVaultRegistry.sol","exportedSymbols":{"BaluniV1YearnVaultRegistry":[19744],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"IBaluniV1Registry":[4909],"IBaluniV1YearnVault":[5274],"IERC1822Proxiable":[1608],"Initializable":[448],"OwnableUpgradeable":[194],"UUPSUpgradeable":[630]},"id":19745,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":19258,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:66"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":19259,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19745,"sourceUnit":195,"src":"1466:75:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":19260,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19745,"sourceUnit":449,"src":"1543:75:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":19261,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19745,"sourceUnit":631,"src":"1620:77:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":19262,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19745,"sourceUnit":4910,"src":"1699:45:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1YearnVault.sol","file":"../interfaces/IBaluniV1YearnVault.sol","id":19263,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19745,"sourceUnit":5275,"src":"1746:47:66","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19264,"name":"Initializable","nameLocations":["1836:13:66"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"1836:13:66"},"id":19265,"nodeType":"InheritanceSpecifier","src":"1836:13:66"},{"baseName":{"id":19266,"name":"UUPSUpgradeable","nameLocations":["1851:15:66"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"1851:15:66"},"id":19267,"nodeType":"InheritanceSpecifier","src":"1851:15:66"},{"baseName":{"id":19268,"name":"OwnableUpgradeable","nameLocations":["1868:18:66"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"1868:18:66"},"id":19269,"nodeType":"InheritanceSpecifier","src":"1868:18:66"}],"canonicalName":"BaluniV1YearnVaultRegistry","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":19744,"linearizedBaseContracts":[19744,194,1293,630,1608,448],"name":"BaluniV1YearnVaultRegistry","nameLocation":"1806:26:66","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"9094a91e","id":19272,"mutability":"mutable","name":"allVaults","nameLocation":"1911:9:66","nodeType":"VariableDeclaration","scope":19744,"src":"1894:26:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":19270,"name":"address","nodeType":"ElementaryTypeName","src":"1894:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19271,"nodeType":"ArrayTypeName","src":"1894:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"constant":false,"functionSelector":"7b103999","id":19275,"mutability":"mutable","name":"registry","nameLocation":"1954:8:66","nodeType":"VariableDeclaration","scope":19744,"src":"1929:33:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":19274,"nodeType":"UserDefinedTypeName","pathNode":{"id":19273,"name":"IBaluniV1Registry","nameLocations":["1929:17:66"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"1929:17:66"},"referencedDeclaration":4909,"src":"1929:17:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"public"},{"constant":false,"functionSelector":"1f844a4c","id":19279,"mutability":"mutable","name":"getVaultType0","nameLocation":"2006:13:66","nodeType":"VariableDeclaration","scope":19744,"src":"1971:48:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":19278,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":19276,"name":"address","nodeType":"ElementaryTypeName","src":"1979:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1971:27:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":19277,"name":"address","nodeType":"ElementaryTypeName","src":"1990:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"constant":false,"functionSelector":"a14eb085","id":19285,"mutability":"mutable","name":"getVaultType1","nameLocation":"2081:13:66","nodeType":"VariableDeclaration","scope":19744,"src":"2026:68:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"},"typeName":{"id":19284,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":19280,"name":"address","nodeType":"ElementaryTypeName","src":"2034:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2026:47:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":19283,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":19281,"name":"address","nodeType":"ElementaryTypeName","src":"2053:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2045:27:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":19282,"name":"address","nodeType":"ElementaryTypeName","src":"2064:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}}},"visibility":"public"},{"anonymous":false,"eventSelector":"b822d89a800960c58214ca2d78afc70c29a892beb2e57c66d54e184bd7ca1815","id":19292,"name":"vaultCreated","nameLocation":"2109:12:66","nodeType":"EventDefinition","parameters":{"id":19291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19287,"indexed":true,"mutability":"mutable","name":"vault","nameLocation":"2138:5:66","nodeType":"VariableDeclaration","scope":19292,"src":"2122:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19286,"name":"address","nodeType":"ElementaryTypeName","src":"2122:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19290,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"2155:6:66","nodeType":"VariableDeclaration","scope":19292,"src":"2145:16:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19288,"name":"address","nodeType":"ElementaryTypeName","src":"2145:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19289,"nodeType":"ArrayTypeName","src":"2145:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2121:41:66"},"src":"2103:60:66"},{"body":{"id":19313,"nodeType":"Block","src":"2229:130:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19299,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2240:22:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":19300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2240:24:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19301,"nodeType":"ExpressionStatement","src":"2240:24:66"},{"expression":{"arguments":[{"expression":{"id":19303,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2290:3:66","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2294:6:66","memberName":"sender","nodeType":"MemberAccess","src":"2290:10:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19302,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2275:14:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":19305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2275:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19306,"nodeType":"ExpressionStatement","src":"2275:26:66"},{"expression":{"id":19311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19307,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19275,"src":"2312:8:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19309,"name":"_register","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19294,"src":"2341:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19308,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2323:17:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":19310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2323:28:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2312:39:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":19312,"nodeType":"ExpressionStatement","src":"2312:39:66"}]},"functionSelector":"c4d66de8","id":19314,"implemented":true,"kind":"function","modifiers":[{"id":19297,"kind":"modifierInvocation","modifierName":{"id":19296,"name":"initializer","nameLocations":["2217:11:66"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2217:11:66"},"nodeType":"ModifierInvocation","src":"2217:11:66"}],"name":"initialize","nameLocation":"2180:10:66","nodeType":"FunctionDefinition","parameters":{"id":19295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19294,"mutability":"mutable","name":"_register","nameLocation":"2199:9:66","nodeType":"VariableDeclaration","scope":19314,"src":"2191:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19293,"name":"address","nodeType":"ElementaryTypeName","src":"2191:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2190:19:66"},"returnParameters":{"id":19298,"nodeType":"ParameterList","parameters":[],"src":"2229:0:66"},"scope":19744,"src":"2171:188:66","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19330,"nodeType":"Block","src":"2456:58:66","statements":[{"expression":{"id":19328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19324,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19275,"src":"2467:8:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19326,"name":"_register","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"2496:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19325,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2478:17:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":19327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2478:28:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2467:39:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":19329,"nodeType":"ExpressionStatement","src":"2467:39:66"}]},"functionSelector":"8f2248bc","id":19331,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":19321,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19318,"src":"2446:8:66","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":19322,"kind":"modifierInvocation","modifierName":{"id":19320,"name":"reinitializer","nameLocations":["2432:13:66"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2432:13:66"},"nodeType":"ModifierInvocation","src":"2432:23:66"}],"name":"reinitialize","nameLocation":"2376:12:66","nodeType":"FunctionDefinition","parameters":{"id":19319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19316,"mutability":"mutable","name":"_register","nameLocation":"2397:9:66","nodeType":"VariableDeclaration","scope":19331,"src":"2389:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19315,"name":"address","nodeType":"ElementaryTypeName","src":"2389:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19318,"mutability":"mutable","name":"_version","nameLocation":"2415:8:66","nodeType":"VariableDeclaration","scope":19331,"src":"2408:15:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19317,"name":"uint64","nodeType":"ElementaryTypeName","src":"2408:6:66","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2388:36:66"},"returnParameters":{"id":19323,"nodeType":"ParameterList","parameters":[],"src":"2456:0:66"},"scope":19744,"src":"2367:147:66","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":19339,"nodeType":"Block","src":"2604:2:66","statements":[]},"id":19340,"implemented":true,"kind":"function","modifiers":[{"id":19337,"kind":"modifierInvocation","modifierName":{"id":19336,"name":"onlyOwner","nameLocations":["2594:9:66"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2594:9:66"},"nodeType":"ModifierInvocation","src":"2594:9:66"}],"name":"_authorizeUpgrade","nameLocation":"2531:17:66","nodeType":"FunctionDefinition","overrides":{"id":19335,"nodeType":"OverrideSpecifier","overrides":[],"src":"2585:8:66"},"parameters":{"id":19334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19333,"mutability":"mutable","name":"newImplementation","nameLocation":"2557:17:66","nodeType":"VariableDeclaration","scope":19340,"src":"2549:25:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19332,"name":"address","nodeType":"ElementaryTypeName","src":"2549:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2548:27:66"},"returnParameters":{"id":19338,"nodeType":"ParameterList","parameters":[],"src":"2604:0:66"},"scope":19744,"src":"2522:84:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":19410,"nodeType":"Block","src":"2673:550:66","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19348,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19342,"src":"2692:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":19351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2716:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2708:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19349,"name":"address","nodeType":"ElementaryTypeName","src":"2708:7:66","typeDescriptions":{}}},"id":19352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2708:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2692:26:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e6956315661756c74466163746f72793a20494e56414c49445f7661756c745f41444452455353","id":19354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2720:45:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_7510511c72bfe0cca9302d42db6cb14a9ff3bc6071674c6a36f4798a31a6f98d","typeString":"literal_string \"BaluniV1VaultFactory: INVALID_vault_ADDRESS\""},"value":"BaluniV1VaultFactory: INVALID_vault_ADDRESS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7510511c72bfe0cca9302d42db6cb14a9ff3bc6071674c6a36f4798a31a6f98d","typeString":"literal_string \"BaluniV1VaultFactory: INVALID_vault_ADDRESS\""}],"id":19347,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2684:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2684:82:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19356,"nodeType":"ExpressionStatement","src":"2684:82:66"},{"expression":{"arguments":[{"id":19360,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19342,"src":"2792:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":19357,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"2777:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2787:4:66","memberName":"push","nodeType":"MemberAccess","src":"2777:14:66","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":19361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2777:28:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19362,"nodeType":"ExpressionStatement","src":"2777:28:66"},{"assignments":[19364],"declarations":[{"constant":false,"id":19364,"mutability":"mutable","name":"baseAsset","nameLocation":"2824:9:66","nodeType":"VariableDeclaration","scope":19410,"src":"2816:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19363,"name":"address","nodeType":"ElementaryTypeName","src":"2816:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":19370,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19366,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19342,"src":"2856:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19365,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"2836:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2836:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2870:9:66","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":5215,"src":"2836:43:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2836:45:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2816:65:66"},{"assignments":[19372],"declarations":[{"constant":false,"id":19372,"mutability":"mutable","name":"quoteAsset","nameLocation":"2900:10:66","nodeType":"VariableDeclaration","scope":19410,"src":"2892:18:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19371,"name":"address","nodeType":"ElementaryTypeName","src":"2892:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":19378,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19374,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19342,"src":"2933:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19373,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"2913:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2947:10:66","memberName":"quoteAsset","nodeType":"MemberAccess","referencedDeclaration":5225,"src":"2913:44:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:46:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2892:67:66"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19379,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19372,"src":"2974:10:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":19382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2996:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2988:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19380,"name":"address","nodeType":"ElementaryTypeName","src":"2988:7:66","typeDescriptions":{}}},"id":19383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2988:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2974:24:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19408,"nodeType":"Block","src":"3072:144:66","statements":[{"expression":{"id":19398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":19392,"name":"getVaultType1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19285,"src":"3087:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":19395,"indexExpression":{"id":19393,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19364,"src":"3101:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3087:24:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":19396,"indexExpression":{"id":19394,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19372,"src":"3112:10:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3087:36:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19397,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19342,"src":"3126:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3087:51:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19399,"nodeType":"ExpressionStatement","src":"3087:51:66"},{"expression":{"id":19406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":19400,"name":"getVaultType1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19285,"src":"3153:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":19403,"indexExpression":{"id":19401,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19372,"src":"3167:10:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3153:25:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":19404,"indexExpression":{"id":19402,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19364,"src":"3179:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3153:36:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19405,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19342,"src":"3192:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3153:51:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19407,"nodeType":"ExpressionStatement","src":"3153:51:66"}]},"id":19409,"nodeType":"IfStatement","src":"2970:246:66","trueBody":{"id":19391,"nodeType":"Block","src":"3000:66:66","statements":[{"expression":{"id":19389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19385,"name":"getVaultType0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19279,"src":"3015:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":19387,"indexExpression":{"id":19386,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19364,"src":"3029:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3015:24:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19388,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19342,"src":"3042:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3015:39:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19390,"nodeType":"ExpressionStatement","src":"3015:39:66"}]}}]},"functionSelector":"256b5a02","id":19411,"implemented":true,"kind":"function","modifiers":[{"id":19345,"kind":"modifierInvocation","modifierName":{"id":19344,"name":"onlyOwner","nameLocations":["2663:9:66"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"2663:9:66"},"nodeType":"ModifierInvocation","src":"2663:9:66"}],"name":"addVault","nameLocation":"2623:8:66","nodeType":"FunctionDefinition","parameters":{"id":19343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19342,"mutability":"mutable","name":"vaultAddress","nameLocation":"2640:12:66","nodeType":"VariableDeclaration","scope":19411,"src":"2632:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19341,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2631:22:66"},"returnParameters":{"id":19346,"nodeType":"ParameterList","parameters":[],"src":"2673:0:66"},"scope":19744,"src":"2614:609:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19420,"nodeType":"Block","src":"3421:35:66","statements":[{"expression":{"id":19418,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"3439:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":19417,"id":19419,"nodeType":"Return","src":"3432:16:66"}]},"documentation":{"id":19412,"nodeType":"StructuredDocumentation","src":"3231:119:66","text":" @dev Retrieves all the vaults created by the factory.\n @return An array of vault addresses."},"functionSelector":"97331bf9","id":19421,"implemented":true,"kind":"function","modifiers":[],"name":"getAllVaults","nameLocation":"3365:12:66","nodeType":"FunctionDefinition","parameters":{"id":19413,"nodeType":"ParameterList","parameters":[],"src":"3377:2:66"},"returnParameters":{"id":19417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19421,"src":"3403:16:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19414,"name":"address","nodeType":"ElementaryTypeName","src":"3403:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19415,"nodeType":"ArrayTypeName","src":"3403:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3402:18:66"},"scope":19744,"src":"3356:100:66","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19430,"nodeType":"Block","src":"3645:42:66","statements":[{"expression":{"expression":{"id":19427,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"3663:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3673:6:66","memberName":"length","nodeType":"MemberAccess","src":"3663:16:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19426,"id":19429,"nodeType":"Return","src":"3656:23:66"}]},"documentation":{"id":19422,"nodeType":"StructuredDocumentation","src":"3464:117:66","text":" @dev Retrieves the number of vaults created by the factory.\n @return The count of vaults."},"functionSelector":"b9b658db","id":19431,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultsCount","nameLocation":"3596:14:66","nodeType":"FunctionDefinition","parameters":{"id":19423,"nodeType":"ParameterList","parameters":[],"src":"3610:2:66"},"returnParameters":{"id":19426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19425,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19431,"src":"3636:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19424,"name":"uint256","nodeType":"ElementaryTypeName","src":"3636:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3635:9:66"},"scope":19744,"src":"3587:100:66","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19473,"nodeType":"Block","src":"3953:222:66","statements":[{"assignments":[19444],"declarations":[{"constant":false,"id":19444,"mutability":"mutable","name":"assets","nameLocation":"3981:6:66","nodeType":"VariableDeclaration","scope":19473,"src":"3964:23:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19442,"name":"address","nodeType":"ElementaryTypeName","src":"3964:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19443,"nodeType":"ArrayTypeName","src":"3964:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":19450,"initialValue":{"arguments":[{"hexValue":"32","id":19448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4004:1:66","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":19447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3990:13:66","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":19445,"name":"address","nodeType":"ElementaryTypeName","src":"3994:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19446,"nodeType":"ArrayTypeName","src":"3994:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":19449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3990:16:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3964:42:66"},{"expression":{"id":19459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19451,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19444,"src":"4017:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19453,"indexExpression":{"hexValue":"30","id":19452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4024:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4017:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19455,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19434,"src":"4049:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19454,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"4029:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4063:9:66","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":5215,"src":"4029:43:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:45:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4017:57:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19460,"nodeType":"ExpressionStatement","src":"4017:57:66"},{"expression":{"id":19469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19461,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19444,"src":"4085:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19463,"indexExpression":{"hexValue":"31","id":19462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4092:1:66","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4085:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19465,"name":"vaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19434,"src":"4117:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19464,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"4097:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4097:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4131:10:66","memberName":"quoteAsset","nodeType":"MemberAccess","referencedDeclaration":5225,"src":"4097:44:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4097:46:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4085:58:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19470,"nodeType":"ExpressionStatement","src":"4085:58:66"},{"expression":{"id":19471,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19444,"src":"4161:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":19439,"id":19472,"nodeType":"Return","src":"4154:13:66"}]},"documentation":{"id":19432,"nodeType":"StructuredDocumentation","src":"3695:166:66","text":" @dev Retrieves the assets of a specific vault.\n @param vaultAddress The address of the vault.\n @return An array of asset addresses."},"functionSelector":"ca9d67c8","id":19474,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultAsset","nameLocation":"3876:13:66","nodeType":"FunctionDefinition","parameters":{"id":19435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19434,"mutability":"mutable","name":"vaultAddress","nameLocation":"3898:12:66","nodeType":"VariableDeclaration","scope":19474,"src":"3890:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19433,"name":"address","nodeType":"ElementaryTypeName","src":"3890:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3889:22:66"},"returnParameters":{"id":19439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19474,"src":"3935:16:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19436,"name":"address","nodeType":"ElementaryTypeName","src":"3935:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19437,"nodeType":"ArrayTypeName","src":"3935:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3934:18:66"},"scope":19744,"src":"3867:308:66","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19490,"nodeType":"Block","src":"4515:55:66","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":19484,"name":"getVaultType1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19285,"src":"4533:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":19486,"indexExpression":{"id":19485,"name":"asset1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19477,"src":"4547:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4533:21:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":19488,"indexExpression":{"id":19487,"name":"asset2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19479,"src":"4555:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4533:29:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19483,"id":19489,"nodeType":"Return","src":"4526:36:66"}]},"documentation":{"id":19475,"nodeType":"StructuredDocumentation","src":"4183:231:66","text":" @dev Retrieves the vault address based on the given assets.\n @param asset1 The address of the first asset.\n @param asset2 The address of the second asset.\n @return The address of the vault."},"functionSelector":"592717af","id":19491,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultType1ByAssets","nameLocation":"4429:21:66","nodeType":"FunctionDefinition","parameters":{"id":19480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19477,"mutability":"mutable","name":"asset1","nameLocation":"4459:6:66","nodeType":"VariableDeclaration","scope":19491,"src":"4451:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19476,"name":"address","nodeType":"ElementaryTypeName","src":"4451:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19479,"mutability":"mutable","name":"asset2","nameLocation":"4475:6:66","nodeType":"VariableDeclaration","scope":19491,"src":"4467:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19478,"name":"address","nodeType":"ElementaryTypeName","src":"4467:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4450:32:66"},"returnParameters":{"id":19483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19482,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19491,"src":"4506:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19481,"name":"address","nodeType":"ElementaryTypeName","src":"4506:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4505:9:66"},"scope":19744,"src":"4420:150:66","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19503,"nodeType":"Block","src":"4883:46:66","statements":[{"expression":{"baseExpression":{"id":19499,"name":"getVaultType0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19279,"src":"4901:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":19501,"indexExpression":{"id":19500,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19494,"src":"4915:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4901:20:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19498,"id":19502,"nodeType":"Return","src":"4894:27:66"}]},"documentation":{"id":19492,"nodeType":"StructuredDocumentation","src":"4578:222:66","text":" @dev Retrieves the address of the vault type 0 associated with the given asset.\n @param asset The address of the asset.\n @return The address of the vault type 0 associated with the asset."},"functionSelector":"f7693227","id":19504,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultType0ByAsset","nameLocation":"4815:20:66","nodeType":"FunctionDefinition","parameters":{"id":19495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19494,"mutability":"mutable","name":"asset","nameLocation":"4844:5:66","nodeType":"VariableDeclaration","scope":19504,"src":"4836:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19493,"name":"address","nodeType":"ElementaryTypeName","src":"4836:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4835:15:66"},"returnParameters":{"id":19498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19497,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19504,"src":"4874:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19496,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4873:9:66"},"scope":19744,"src":"4806:123:66","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19614,"nodeType":"Block","src":"5019:713:66","statements":[{"assignments":[19516],"declarations":[{"constant":false,"id":19516,"mutability":"mutable","name":"vaults","nameLocation":"5047:6:66","nodeType":"VariableDeclaration","scope":19614,"src":"5030:23:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19514,"name":"address","nodeType":"ElementaryTypeName","src":"5030:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19515,"nodeType":"ArrayTypeName","src":"5030:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":19523,"initialValue":{"arguments":[{"expression":{"id":19520,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"5070:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5080:6:66","memberName":"length","nodeType":"MemberAccess","src":"5070:16:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5056:13:66","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":19517,"name":"address","nodeType":"ElementaryTypeName","src":"5060:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19518,"nodeType":"ArrayTypeName","src":"5060:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":19522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5056:31:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5030:57:66"},{"assignments":[19525],"declarations":[{"constant":false,"id":19525,"mutability":"mutable","name":"count","nameLocation":"5106:5:66","nodeType":"VariableDeclaration","scope":19614,"src":"5098:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19524,"name":"uint256","nodeType":"ElementaryTypeName","src":"5098:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19527,"initialValue":{"hexValue":"30","id":19526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5114:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5098:17:66"},{"body":{"id":19579,"nodeType":"Block","src":"5175:371:66","statements":[{"assignments":[19541],"declarations":[{"constant":false,"id":19541,"mutability":"mutable","name":"vault","nameLocation":"5210:5:66","nodeType":"VariableDeclaration","scope":19579,"src":"5190:25:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"},"typeName":{"id":19540,"nodeType":"UserDefinedTypeName","pathNode":{"id":19539,"name":"IBaluniV1YearnVault","nameLocations":["5190:19:66"],"nodeType":"IdentifierPath","referencedDeclaration":5274,"src":"5190:19:66"},"referencedDeclaration":5274,"src":"5190:19:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"visibility":"internal"}],"id":19547,"initialValue":{"arguments":[{"baseExpression":{"id":19543,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"5238:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19545,"indexExpression":{"id":19544,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19529,"src":"5248:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5238:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19542,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"5218:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5218:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"nodeType":"VariableDeclarationStatement","src":"5190:61:66"},{"assignments":[19549],"declarations":[{"constant":false,"id":19549,"mutability":"mutable","name":"asset","nameLocation":"5274:5:66","nodeType":"VariableDeclaration","scope":19579,"src":"5266:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19548,"name":"address","nodeType":"ElementaryTypeName","src":"5266:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":19553,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19550,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19541,"src":"5282:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5288:9:66","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":5215,"src":"5282:15:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:17:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5266:33:66"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19554,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19549,"src":"5320:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":19555,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19506,"src":"5329:5:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5320:14:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19571,"nodeType":"IfStatement","src":"5316:135:66","trueBody":{"id":19570,"nodeType":"Block","src":"5336:115:66","statements":[{"expression":{"id":19564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19557,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19516,"src":"5355:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19559,"indexExpression":{"id":19558,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"5362:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5355:13:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19562,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19541,"src":"5379:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}],"id":19561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5371:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19560,"name":"address","nodeType":"ElementaryTypeName","src":"5371:7:66","typeDescriptions":{}}},"id":19563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5371:14:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5355:30:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19565,"nodeType":"ExpressionStatement","src":"5355:30:66"},{"expression":{"id":19567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5404:7:66","subExpression":{"id":19566,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"5404:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19568,"nodeType":"ExpressionStatement","src":"5404:7:66"},{"id":19569,"nodeType":"Break","src":"5430:5:66"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19572,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"5471:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19573,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19516,"src":"5480:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5487:6:66","memberName":"length","nodeType":"MemberAccess","src":"5480:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5471:22:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19578,"nodeType":"IfStatement","src":"5467:68:66","trueBody":{"id":19577,"nodeType":"Block","src":"5495:40:66","statements":[{"id":19576,"nodeType":"Break","src":"5514:5:66"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19532,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19529,"src":"5148:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":19533,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"5152:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5162:6:66","memberName":"length","nodeType":"MemberAccess","src":"5152:16:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5148:20:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19580,"initializationExpression":{"assignments":[19529],"declarations":[{"constant":false,"id":19529,"mutability":"mutable","name":"i","nameLocation":"5141:1:66","nodeType":"VariableDeclaration","scope":19580,"src":"5133:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19528,"name":"uint256","nodeType":"ElementaryTypeName","src":"5133:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19531,"initialValue":{"hexValue":"30","id":19530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5145:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5133:13:66"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":19537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5170:3:66","subExpression":{"id":19536,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19529,"src":"5170:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19538,"nodeType":"ExpressionStatement","src":"5170:3:66"},"nodeType":"ForStatement","src":"5128:418:66"},{"assignments":[19585],"declarations":[{"constant":false,"id":19585,"mutability":"mutable","name":"result","nameLocation":"5575:6:66","nodeType":"VariableDeclaration","scope":19614,"src":"5558:23:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19583,"name":"address","nodeType":"ElementaryTypeName","src":"5558:7:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19584,"nodeType":"ArrayTypeName","src":"5558:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":19591,"initialValue":{"arguments":[{"id":19589,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"5598:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5584:13:66","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":19586,"name":"address","nodeType":"ElementaryTypeName","src":"5588:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19587,"nodeType":"ArrayTypeName","src":"5588:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":19590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5584:20:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5558:46:66"},{"body":{"id":19610,"nodeType":"Block","src":"5651:48:66","statements":[{"expression":{"id":19608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19602,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19585,"src":"5666:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19604,"indexExpression":{"id":19603,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19593,"src":"5673:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5666:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":19605,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19516,"src":"5678:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19607,"indexExpression":{"id":19606,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19593,"src":"5685:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5678:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5666:21:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19609,"nodeType":"ExpressionStatement","src":"5666:21:66"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19596,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19593,"src":"5635:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":19597,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"5639:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5635:9:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19611,"initializationExpression":{"assignments":[19593],"declarations":[{"constant":false,"id":19593,"mutability":"mutable","name":"i","nameLocation":"5628:1:66","nodeType":"VariableDeclaration","scope":19611,"src":"5620:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19592,"name":"uint256","nodeType":"ElementaryTypeName","src":"5620:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19595,"initialValue":{"hexValue":"30","id":19594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5632:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5620:13:66"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":19600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5646:3:66","subExpression":{"id":19599,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19593,"src":"5646:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19601,"nodeType":"ExpressionStatement","src":"5646:3:66"},"nodeType":"ForStatement","src":"5615:84:66"},{"expression":{"id":19612,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19585,"src":"5718:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":19511,"id":19613,"nodeType":"Return","src":"5711:13:66"}]},"functionSelector":"10894052","id":19615,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultsByAsset","nameLocation":"4946:16:66","nodeType":"FunctionDefinition","parameters":{"id":19507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19506,"mutability":"mutable","name":"token","nameLocation":"4971:5:66","nodeType":"VariableDeclaration","scope":19615,"src":"4963:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19505,"name":"address","nodeType":"ElementaryTypeName","src":"4963:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4962:15:66"},"returnParameters":{"id":19511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19615,"src":"5001:16:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19508,"name":"address","nodeType":"ElementaryTypeName","src":"5001:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19509,"nodeType":"ArrayTypeName","src":"5001:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5000:18:66"},"scope":19744,"src":"4937:795:66","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19646,"nodeType":"Block","src":"5805:188:66","statements":[{"body":{"id":19642,"nodeType":"Block","src":"5863:100:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":19633,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"5882:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19635,"indexExpression":{"id":19634,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19623,"src":"5892:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5882:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":19636,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19617,"src":"5898:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5882:22:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19641,"nodeType":"IfStatement","src":"5878:74:66","trueBody":{"id":19640,"nodeType":"Block","src":"5906:46:66","statements":[{"expression":{"hexValue":"74727565","id":19638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5932:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":19621,"id":19639,"nodeType":"Return","src":"5925:11:66"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19626,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19623,"src":"5836:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":19627,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"5840:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5850:6:66","memberName":"length","nodeType":"MemberAccess","src":"5840:16:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5836:20:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19643,"initializationExpression":{"assignments":[19623],"declarations":[{"constant":false,"id":19623,"mutability":"mutable","name":"i","nameLocation":"5829:1:66","nodeType":"VariableDeclaration","scope":19643,"src":"5821:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19622,"name":"uint256","nodeType":"ElementaryTypeName","src":"5821:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19625,"initialValue":{"hexValue":"30","id":19624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5833:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5821:13:66"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":19631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5858:3:66","subExpression":{"id":19630,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19623,"src":"5858:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19632,"nodeType":"ExpressionStatement","src":"5858:3:66"},"nodeType":"ForStatement","src":"5816:147:66"},{"expression":{"hexValue":"66616c7365","id":19644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5980:5:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":19621,"id":19645,"nodeType":"Return","src":"5973:12:66"}]},"functionSelector":"02b3537d","id":19647,"implemented":true,"kind":"function","modifiers":[],"name":"vaultExist","nameLocation":"5749:10:66","nodeType":"FunctionDefinition","parameters":{"id":19618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19617,"mutability":"mutable","name":"_vault","nameLocation":"5768:6:66","nodeType":"VariableDeclaration","scope":19647,"src":"5760:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19616,"name":"address","nodeType":"ElementaryTypeName","src":"5760:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5759:16:66"},"returnParameters":{"id":19621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19647,"src":"5799:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19619,"name":"bool","nodeType":"ElementaryTypeName","src":"5799:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5798:6:66"},"scope":19744,"src":"5740:253:66","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19742,"nodeType":"Block","src":"6057:680:66","statements":[{"body":{"id":19740,"nodeType":"Block","src":"6115:615:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":19665,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"6134:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19667,"indexExpression":{"id":19666,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19655,"src":"6144:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6134:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":19668,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19649,"src":"6150:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6134:22:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19739,"nodeType":"IfStatement","src":"6130:589:66","trueBody":{"id":19738,"nodeType":"Block","src":"6158:561:66","statements":[{"expression":{"id":19679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19670,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"6177:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19672,"indexExpression":{"id":19671,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19655,"src":"6187:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6177:12:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":19673,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"6192:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19678,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19674,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"6202:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6212:6:66","memberName":"length","nodeType":"MemberAccess","src":"6202:16:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":19676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6221:1:66","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6202:20:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6192:31:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6177:46:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19680,"nodeType":"ExpressionStatement","src":"6177:46:66"},{"expression":{"id":19692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19681,"name":"getVaultType0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19279,"src":"6242:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":19687,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19683,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19649,"src":"6276:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19682,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"6256:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6256:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6284:9:66","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":5215,"src":"6256:37:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6256:39:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6242:54:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":19690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6307:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6299:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19688,"name":"address","nodeType":"ElementaryTypeName","src":"6299:7:66","typeDescriptions":{}}},"id":19691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6299:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6242:67:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19693,"nodeType":"ExpressionStatement","src":"6242:67:66"},{"expression":{"id":19711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":19694,"name":"getVaultType1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19285,"src":"6328:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":19705,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19696,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19649,"src":"6362:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19695,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"6342:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6342:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6370:10:66","memberName":"quoteAsset","nodeType":"MemberAccess","referencedDeclaration":5225,"src":"6342:38:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6342:40:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6328:55:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":19706,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19701,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19649,"src":"6426:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19700,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"6406:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6406:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6434:9:66","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":5215,"src":"6406:37:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6406:39:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6328:136:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":19709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6475:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6467:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19707,"name":"address","nodeType":"ElementaryTypeName","src":"6467:7:66","typeDescriptions":{}}},"id":19710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6467:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6328:149:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19712,"nodeType":"ExpressionStatement","src":"6328:149:66"},{"expression":{"id":19730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":19713,"name":"getVaultType1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19285,"src":"6496:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$","typeString":"mapping(address => mapping(address => address))"}},"id":19724,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19715,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19649,"src":"6530:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19714,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"6510:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6510:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6538:9:66","memberName":"baseAsset","nodeType":"MemberAccess","referencedDeclaration":5215,"src":"6510:37:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6510:39:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6496:54:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":19725,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19720,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19649,"src":"6593:6:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19719,"name":"IBaluniV1YearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5274,"src":"6573:19:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1YearnVault_$5274_$","typeString":"type(contract IBaluniV1YearnVault)"}},"id":19721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6573:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1YearnVault_$5274","typeString":"contract IBaluniV1YearnVault"}},"id":19722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6601:10:66","memberName":"quoteAsset","nodeType":"MemberAccess","referencedDeclaration":5225,"src":"6573:38:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":19723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6573:40:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6496:136:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":19728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6643:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6635:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19726,"name":"address","nodeType":"ElementaryTypeName","src":"6635:7:66","typeDescriptions":{}}},"id":19729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6635:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6496:149:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19731,"nodeType":"ExpressionStatement","src":"6496:149:66"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19732,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"6664:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6674:3:66","memberName":"pop","nodeType":"MemberAccess","src":"6664:13:66","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":19735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6664:15:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19736,"nodeType":"ExpressionStatement","src":"6664:15:66"},{"id":19737,"nodeType":"Break","src":"6698:5:66"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19658,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19655,"src":"6088:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":19659,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19272,"src":"6092:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":19660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6102:6:66","memberName":"length","nodeType":"MemberAccess","src":"6092:16:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6088:20:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19741,"initializationExpression":{"assignments":[19655],"declarations":[{"constant":false,"id":19655,"mutability":"mutable","name":"i","nameLocation":"6081:1:66","nodeType":"VariableDeclaration","scope":19741,"src":"6073:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19654,"name":"uint256","nodeType":"ElementaryTypeName","src":"6073:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19657,"initialValue":{"hexValue":"30","id":19656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6085:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6073:13:66"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":19663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6110:3:66","subExpression":{"id":19662,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19655,"src":"6110:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19664,"nodeType":"ExpressionStatement","src":"6110:3:66"},"nodeType":"ForStatement","src":"6068:662:66"}]},"functionSelector":"ceb68c23","id":19743,"implemented":true,"kind":"function","modifiers":[{"id":19652,"kind":"modifierInvocation","modifierName":{"id":19651,"name":"onlyOwner","nameLocations":["6047:9:66"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"6047:9:66"},"nodeType":"ModifierInvocation","src":"6047:9:66"}],"name":"removeVault","nameLocation":"6010:11:66","nodeType":"FunctionDefinition","parameters":{"id":19650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19649,"mutability":"mutable","name":"_vault","nameLocation":"6030:6:66","nodeType":"VariableDeclaration","scope":19743,"src":"6022:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19648,"name":"address","nodeType":"ElementaryTypeName","src":"6022:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6021:16:66"},"returnParameters":{"id":19653,"nodeType":"ParameterList","parameters":[],"src":"6057:0:66"},"scope":19744,"src":"6001:736:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19745,"src":"1797:4943:66","usedErrors":[30,35,211,214,475,480,1780,1793,2690,2693],"usedEvents":[41,219,1759,19292]}],"src":"40:6702:66"},"id":66},"contracts/vaults/BaluniV1DCAVault.sol":{"ast":{"absolutePath":"contracts/vaults/BaluniV1DCAVault.sol","exportedSymbols":{"BaluniV1DCAVault":[20678],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1DCAVault":[3888],"IBaluniV1Oracle":[4240],"IBaluniV1Registry":[4909],"IBaluniV1Swapper":[5208],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"Initializable":[448],"OwnableUpgradeable":[194],"PausableUpgradeable":[1469],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":20679,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":19746,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:67"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":19747,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":1248,"src":"67:78:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":19748,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":195,"src":"147:75:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":19749,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":1599,"src":"224:82:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":19750,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":449,"src":"308:75:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":19751,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":631,"src":"385:77:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","id":19752,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":1470,"src":"464:75:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":19753,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":4910,"src":"543:45:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","file":"../interfaces/IBaluniV1Swapper.sol","id":19754,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":5209,"src":"590:44:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","file":"../interfaces/IBaluniV1Oracle.sol","id":19755,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":4241,"src":"636:43:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1DCAVault.sol","file":"../interfaces/IBaluniV1DCAVault.sol","id":19756,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20679,"sourceUnit":3889,"src":"681:45:67","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19757,"name":"Initializable","nameLocations":["764:13:67"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"764:13:67"},"id":19758,"nodeType":"InheritanceSpecifier","src":"764:13:67"},{"baseName":{"id":19759,"name":"UUPSUpgradeable","nameLocations":["784:15:67"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"784:15:67"},"id":19760,"nodeType":"InheritanceSpecifier","src":"784:15:67"},{"baseName":{"id":19761,"name":"OwnableUpgradeable","nameLocations":["806:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"806:18:67"},"id":19762,"nodeType":"InheritanceSpecifier","src":"806:18:67"},{"baseName":{"id":19763,"name":"ERC20Upgradeable","nameLocations":["831:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":1247,"src":"831:16:67"},"id":19764,"nodeType":"InheritanceSpecifier","src":"831:16:67"},{"baseName":{"id":19765,"name":"ReentrancyGuardUpgradeable","nameLocations":["854:26:67"],"nodeType":"IdentifierPath","referencedDeclaration":1598,"src":"854:26:67"},"id":19766,"nodeType":"InheritanceSpecifier","src":"854:26:67"},{"baseName":{"id":19767,"name":"PausableUpgradeable","nameLocations":["887:19:67"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"887:19:67"},"id":19768,"nodeType":"InheritanceSpecifier","src":"887:19:67"},{"baseName":{"id":19769,"name":"IBaluniV1DCAVault","nameLocations":["913:17:67"],"nodeType":"IdentifierPath","referencedDeclaration":3888,"src":"913:17:67"},"id":19770,"nodeType":"InheritanceSpecifier","src":"913:17:67"}],"canonicalName":"BaluniV1DCAVault","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":20678,"linearizedBaseContracts":[20678,3888,1469,1598,1247,1650,2677,2651,194,1293,630,1608,448],"name":"BaluniV1DCAVault","nameLocation":"739:16:67","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[3842],"constant":false,"functionSelector":"cdf456e1","id":19772,"mutability":"mutable","name":"baseAsset","nameLocation":"954:9:67","nodeType":"VariableDeclaration","scope":20678,"src":"939:24:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19771,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[3847],"constant":false,"functionSelector":"fdf262b7","id":19774,"mutability":"mutable","name":"quoteAsset","nameLocation":"985:10:67","nodeType":"VariableDeclaration","scope":20678,"src":"970:25:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19773,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":19777,"mutability":"mutable","name":"_registry","nameLocation":"1030:9:67","nodeType":"VariableDeclaration","scope":20678,"src":"1004:35:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":19776,"nodeType":"UserDefinedTypeName","pathNode":{"id":19775,"name":"IBaluniV1Registry","nameLocations":["1004:17:67"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"1004:17:67"},"referencedDeclaration":4909,"src":"1004:17:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"private"},{"constant":false,"functionSelector":"f7fde10f","id":19779,"mutability":"mutable","name":"accumulatedAssetB","nameLocation":"1061:17:67","nodeType":"VariableDeclaration","scope":20678,"src":"1046:32:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19778,"name":"uint256","nodeType":"ElementaryTypeName","src":"1046:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"baseFunctions":[3857],"constant":false,"functionSelector":"36b77107","id":19781,"mutability":"mutable","name":"lastDeposit","nameLocation":"1102:11:67","nodeType":"VariableDeclaration","scope":20678,"src":"1087:26:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1087:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"bc4ba731","id":19783,"mutability":"mutable","name":"lastInvestedBlock","nameLocation":"1135:17:67","nodeType":"VariableDeclaration","scope":20678,"src":"1120:32:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19782,"name":"uint256","nodeType":"ElementaryTypeName","src":"1120:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"db48a5e3","id":19785,"mutability":"mutable","name":"maxPerSwap","nameLocation":"1174:10:67","nodeType":"VariableDeclaration","scope":20678,"src":"1159:25:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19784,"name":"uint256","nodeType":"ElementaryTypeName","src":"1159:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"b3404efd","id":19787,"mutability":"mutable","name":"swapDuration","nameLocation":"1206:12:67","nodeType":"VariableDeclaration","scope":20678,"src":"1191:27:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19786,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"4fe84c42","id":19789,"mutability":"mutable","name":"reinvestDuration","nameLocation":"1240:16:67","nodeType":"VariableDeclaration","scope":20678,"src":"1225:31:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19788,"name":"uint256","nodeType":"ElementaryTypeName","src":"1225:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"9ac2a011","id":19793,"mutability":"mutable","name":"executors","nameLocation":"1297:9:67","nodeType":"VariableDeclaration","scope":20678,"src":"1265:41:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":19792,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":19790,"name":"address","nodeType":"ElementaryTypeName","src":"1273:7:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1265:24:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":19791,"name":"bool","nodeType":"ElementaryTypeName","src":"1284:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"anonymous":false,"eventSelector":"129ac658e77b551b004790e5bd957532cef552c50852a1ee0e38dd3e23fe85db","id":19801,"name":"ExecuteTrade","nameLocation":"1321:12:67","nodeType":"EventDefinition","parameters":{"id":19800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19795,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1350:6:67","nodeType":"VariableDeclaration","scope":19801,"src":"1334:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19794,"name":"address","nodeType":"ElementaryTypeName","src":"1334:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19797,"indexed":false,"mutability":"mutable","name":"amountIn","nameLocation":"1366:8:67","nodeType":"VariableDeclaration","scope":19801,"src":"1358:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19796,"name":"uint256","nodeType":"ElementaryTypeName","src":"1358:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19799,"indexed":false,"mutability":"mutable","name":"amountOut","nameLocation":"1384:9:67","nodeType":"VariableDeclaration","scope":19801,"src":"1376:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19798,"name":"uint256","nodeType":"ElementaryTypeName","src":"1376:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1333:61:67"},"src":"1315:80:67"},{"body":{"id":19879,"nodeType":"Block","src":"2059:528:67","statements":[{"expression":{"arguments":[{"expression":{"id":19820,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2085:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2089:6:67","memberName":"sender","nodeType":"MemberAccess","src":"2085:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19819,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2070:14:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":19822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2070:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19823,"nodeType":"ExpressionStatement","src":"2070:26:67"},{"expression":{"arguments":[{"id":19825,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19804,"src":"2120:5:67","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19826,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19806,"src":"2127:7:67","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19824,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"2107:12:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":19827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2107:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19828,"nodeType":"ExpressionStatement","src":"2107:28:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19829,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2146:22:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":19830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2146:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19831,"nodeType":"ExpressionStatement","src":"2146:24:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19832,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"2181:22:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":19833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2181:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19834,"nodeType":"ExpressionStatement","src":"2181:24:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19835,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"2216:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":19836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2216:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19837,"nodeType":"ExpressionStatement","src":"2216:17:67"},{"expression":{"id":19840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19838,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"2246:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19839,"name":"_baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19808,"src":"2258:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2246:22:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19841,"nodeType":"ExpressionStatement","src":"2246:22:67"},{"expression":{"id":19844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19842,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19774,"src":"2279:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19843,"name":"_quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19810,"src":"2292:11:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2279:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19845,"nodeType":"ExpressionStatement","src":"2279:24:67"},{"expression":{"id":19850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19846,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"2314:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19848,"name":"_registryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19812,"src":"2344:16:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19847,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2326:17:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":19849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2326:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2314:47:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":19851,"nodeType":"ExpressionStatement","src":"2314:47:67"},{"expression":{"id":19856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19852,"name":"swapDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19787,"src":"2374:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"333630","id":19853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2389:3:67","typeDescriptions":{"typeIdentifier":"t_rational_360_by_1","typeString":"int_const 360"},"value":"360"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":19854,"name":"_reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19814,"src":"2395:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2389:23:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2374:38:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19857,"nodeType":"ExpressionStatement","src":"2374:38:67"},{"expression":{"id":19860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19858,"name":"reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19789,"src":"2423:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19859,"name":"_reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19814,"src":"2442:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2423:36:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19861,"nodeType":"ExpressionStatement","src":"2423:36:67"},{"expression":{"id":19865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19862,"name":"lastInvestedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19783,"src":"2470:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":19863,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2490:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2496:6:67","memberName":"number","nodeType":"MemberAccess","src":"2490:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2470:32:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19866,"nodeType":"ExpressionStatement","src":"2470:32:67"},{"expression":{"id":19877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19867,"name":"maxPerSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19785,"src":"2513:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130303030","id":19868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2526:5:67","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":19869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2534:2:67","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19871,"name":"_baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19808,"src":"2557:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19870,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"2540:16:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Upgradeable_$1247_$","typeString":"type(contract ERC20Upgradeable)"}},"id":19872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2540:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Upgradeable_$1247","typeString":"contract ERC20Upgradeable"}},"id":19873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2569:8:67","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":767,"src":"2540:37:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":19874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2540:39:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2534:45:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2526:53:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2513:66:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19878,"nodeType":"ExpressionStatement","src":"2513:66:67"}]},"documentation":{"id":19802,"nodeType":"StructuredDocumentation","src":"1403:410:67","text":" @dev Initializes the BaluniV1DCA contract.\n @param _name The name of the token.\n @param _symbol The symbol of the token.\n @param _baseAsset The address of the base asset.\n @param _quoteAsset The address of the quote asset.\n @param _registryAddress The address of the registry contract.\n @param _reinvestDuration The duration between reinvestments."},"functionSelector":"edf3e29e","id":19880,"implemented":true,"kind":"function","modifiers":[{"id":19817,"kind":"modifierInvocation","modifierName":{"id":19816,"name":"initializer","nameLocations":["2047:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2047:11:67"},"nodeType":"ModifierInvocation","src":"2047:11:67"}],"name":"initialize","nameLocation":"1828:10:67","nodeType":"FunctionDefinition","parameters":{"id":19815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19804,"mutability":"mutable","name":"_name","nameLocation":"1863:5:67","nodeType":"VariableDeclaration","scope":19880,"src":"1849:19:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19803,"name":"string","nodeType":"ElementaryTypeName","src":"1849:6:67","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19806,"mutability":"mutable","name":"_symbol","nameLocation":"1893:7:67","nodeType":"VariableDeclaration","scope":19880,"src":"1879:21:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19805,"name":"string","nodeType":"ElementaryTypeName","src":"1879:6:67","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19808,"mutability":"mutable","name":"_baseAsset","nameLocation":"1919:10:67","nodeType":"VariableDeclaration","scope":19880,"src":"1911:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19807,"name":"address","nodeType":"ElementaryTypeName","src":"1911:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19810,"mutability":"mutable","name":"_quoteAsset","nameLocation":"1948:11:67","nodeType":"VariableDeclaration","scope":19880,"src":"1940:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19809,"name":"address","nodeType":"ElementaryTypeName","src":"1940:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19812,"mutability":"mutable","name":"_registryAddress","nameLocation":"1978:16:67","nodeType":"VariableDeclaration","scope":19880,"src":"1970:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19811,"name":"address","nodeType":"ElementaryTypeName","src":"1970:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19814,"mutability":"mutable","name":"_reinvestDuration","nameLocation":"2013:17:67","nodeType":"VariableDeclaration","scope":19880,"src":"2005:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19813,"name":"uint256","nodeType":"ElementaryTypeName","src":"2005:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:199:67"},"returnParameters":{"id":19818,"nodeType":"ParameterList","parameters":[],"src":"2059:0:67"},"scope":20678,"src":"1819:768:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19960,"nodeType":"Block","src":"2875:528:67","statements":[{"expression":{"arguments":[{"expression":{"id":19901,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2901:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2905:6:67","memberName":"sender","nodeType":"MemberAccess","src":"2901:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19900,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2886:14:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":19903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2886:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19904,"nodeType":"ExpressionStatement","src":"2886:26:67"},{"expression":{"arguments":[{"id":19906,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19882,"src":"2936:5:67","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19907,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19884,"src":"2943:7:67","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":19905,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"2923:12:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":19908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2923:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19909,"nodeType":"ExpressionStatement","src":"2923:28:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19910,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2962:22:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":19911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2962:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19912,"nodeType":"ExpressionStatement","src":"2962:24:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19913,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"2997:22:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":19914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2997:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19915,"nodeType":"ExpressionStatement","src":"2997:24:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19916,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"3032:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":19917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3032:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19918,"nodeType":"ExpressionStatement","src":"3032:17:67"},{"expression":{"id":19921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19919,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"3062:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19920,"name":"_baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19886,"src":"3074:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3062:22:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19922,"nodeType":"ExpressionStatement","src":"3062:22:67"},{"expression":{"id":19925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19923,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19774,"src":"3095:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19924,"name":"_quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19888,"src":"3108:11:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3095:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19926,"nodeType":"ExpressionStatement","src":"3095:24:67"},{"expression":{"id":19931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19927,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"3130:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19929,"name":"_registryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19890,"src":"3160:16:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19928,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"3142:17:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":19930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3142:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"3130:47:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":19932,"nodeType":"ExpressionStatement","src":"3130:47:67"},{"expression":{"id":19937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19933,"name":"swapDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19787,"src":"3190:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"333630","id":19934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3205:3:67","typeDescriptions":{"typeIdentifier":"t_rational_360_by_1","typeString":"int_const 360"},"value":"360"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":19935,"name":"_reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19892,"src":"3211:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3205:23:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3190:38:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19938,"nodeType":"ExpressionStatement","src":"3190:38:67"},{"expression":{"id":19941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19939,"name":"reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19789,"src":"3239:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19940,"name":"_reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19892,"src":"3258:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3239:36:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19942,"nodeType":"ExpressionStatement","src":"3239:36:67"},{"expression":{"id":19946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19943,"name":"lastInvestedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19783,"src":"3286:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":19944,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3306:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3312:6:67","memberName":"number","nodeType":"MemberAccess","src":"3306:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3286:32:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19947,"nodeType":"ExpressionStatement","src":"3286:32:67"},{"expression":{"id":19958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19948,"name":"maxPerSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19785,"src":"3329:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130303030","id":19949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3342:5:67","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":19950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3350:2:67","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":19952,"name":"_baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19886,"src":"3373:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19951,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"3356:16:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Upgradeable_$1247_$","typeString":"type(contract ERC20Upgradeable)"}},"id":19953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3356:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Upgradeable_$1247","typeString":"contract ERC20Upgradeable"}},"id":19954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3385:8:67","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":767,"src":"3356:37:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":19955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3356:39:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3350:45:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3342:53:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3329:66:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19959,"nodeType":"ExpressionStatement","src":"3329:66:67"}]},"functionSelector":"c80b0baf","id":19961,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":19897,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19894,"src":"2865:8:67","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":19898,"kind":"modifierInvocation","modifierName":{"id":19896,"name":"reinitializer","nameLocations":["2851:13:67"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2851:13:67"},"nodeType":"ModifierInvocation","src":"2851:23:67"}],"name":"reinitialize","nameLocation":"2604:12:67","nodeType":"FunctionDefinition","parameters":{"id":19895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19882,"mutability":"mutable","name":"_name","nameLocation":"2641:5:67","nodeType":"VariableDeclaration","scope":19961,"src":"2627:19:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19881,"name":"string","nodeType":"ElementaryTypeName","src":"2627:6:67","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19884,"mutability":"mutable","name":"_symbol","nameLocation":"2671:7:67","nodeType":"VariableDeclaration","scope":19961,"src":"2657:21:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19883,"name":"string","nodeType":"ElementaryTypeName","src":"2657:6:67","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19886,"mutability":"mutable","name":"_baseAsset","nameLocation":"2697:10:67","nodeType":"VariableDeclaration","scope":19961,"src":"2689:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19885,"name":"address","nodeType":"ElementaryTypeName","src":"2689:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19888,"mutability":"mutable","name":"_quoteAsset","nameLocation":"2726:11:67","nodeType":"VariableDeclaration","scope":19961,"src":"2718:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19887,"name":"address","nodeType":"ElementaryTypeName","src":"2718:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19890,"mutability":"mutable","name":"_registryAddress","nameLocation":"2756:16:67","nodeType":"VariableDeclaration","scope":19961,"src":"2748:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19889,"name":"address","nodeType":"ElementaryTypeName","src":"2748:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19892,"mutability":"mutable","name":"_reinvestDuration","nameLocation":"2791:17:67","nodeType":"VariableDeclaration","scope":19961,"src":"2783:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19891,"name":"uint256","nodeType":"ElementaryTypeName","src":"2783:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19894,"mutability":"mutable","name":"_version","nameLocation":"2826:8:67","nodeType":"VariableDeclaration","scope":19961,"src":"2819:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19893,"name":"uint64","nodeType":"ElementaryTypeName","src":"2819:6:67","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2616:225:67"},"returnParameters":{"id":19899,"nodeType":"ParameterList","parameters":[],"src":"2875:0:67"},"scope":20678,"src":"2595:808:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19978,"nodeType":"Block","src":"3489:104:67","statements":[{"expression":{"id":19970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19968,"name":"reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19789,"src":"3500:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19969,"name":"_reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19963,"src":"3519:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3500:36:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19971,"nodeType":"ExpressionStatement","src":"3500:36:67"},{"expression":{"id":19976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19972,"name":"swapDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19787,"src":"3547:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"333630","id":19973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3562:3:67","typeDescriptions":{"typeIdentifier":"t_rational_360_by_1","typeString":"int_const 360"},"value":"360"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":19974,"name":"_reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19963,"src":"3568:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3562:23:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3547:38:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19977,"nodeType":"ExpressionStatement","src":"3547:38:67"}]},"functionSelector":"f661af29","id":19979,"implemented":true,"kind":"function","modifiers":[{"id":19966,"kind":"modifierInvocation","modifierName":{"id":19965,"name":"onlyOwner","nameLocations":["3479:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3479:9:67"},"nodeType":"ModifierInvocation","src":"3479:9:67"}],"name":"changeReinvestDuration","nameLocation":"3420:22:67","nodeType":"FunctionDefinition","parameters":{"id":19964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19963,"mutability":"mutable","name":"_reinvestDuration","nameLocation":"3451:17:67","nodeType":"VariableDeclaration","scope":19979,"src":"3443:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19962,"name":"uint256","nodeType":"ElementaryTypeName","src":"3443:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3442:27:67"},"returnParameters":{"id":19967,"nodeType":"ParameterList","parameters":[],"src":"3489:0:67"},"scope":20678,"src":"3411:182:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19990,"nodeType":"Block","src":"3625:79:67","statements":[{"expression":{"arguments":[{"baseExpression":{"id":19982,"name":"executors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"3644:9:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":19985,"indexExpression":{"expression":{"id":19983,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3654:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3658:6:67","memberName":"sender","nodeType":"MemberAccess","src":"3654:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3644:21:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6578656375746f723a207775743f","id":19986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3667:16:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_bbbcd694010870aca4b5330159c65992a3109a1437ee6632b6833f21093588c0","typeString":"literal_string \"executor: wut?\""},"value":"executor: wut?"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bbbcd694010870aca4b5330159c65992a3109a1437ee6632b6833f21093588c0","typeString":"literal_string \"executor: wut?\""}],"id":19981,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3636:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":19987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3636:48:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19988,"nodeType":"ExpressionStatement","src":"3636:48:67"},{"id":19989,"nodeType":"PlaceholderStatement","src":"3695:1:67"}]},"id":19991,"name":"onlyExecutor","nameLocation":"3610:12:67","nodeType":"ModifierDefinition","parameters":{"id":19980,"nodeType":"ParameterList","parameters":[],"src":"3622:2:67"},"src":"3601:103:67","virtual":false,"visibility":"internal"},{"baseFunctions":[584],"body":{"id":20000,"nodeType":"Block","src":"4054:2:67","statements":[]},"documentation":{"id":19992,"nodeType":"StructuredDocumentation","src":"3712:254:67","text":" @dev Internal function to authorize an upgrade to a new implementation contract.\n @param newImplementation The address of the new implementation contract.\n @notice This function can only be called by the contract owner."},"id":20001,"implemented":true,"kind":"function","modifiers":[{"id":19998,"kind":"modifierInvocation","modifierName":{"id":19997,"name":"onlyOwner","nameLocations":["4044:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"4044:9:67"},"nodeType":"ModifierInvocation","src":"4044:9:67"}],"name":"_authorizeUpgrade","nameLocation":"3981:17:67","nodeType":"FunctionDefinition","overrides":{"id":19996,"nodeType":"OverrideSpecifier","overrides":[],"src":"4035:8:67"},"parameters":{"id":19995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19994,"mutability":"mutable","name":"newImplementation","nameLocation":"4007:17:67","nodeType":"VariableDeclaration","scope":20001,"src":"3999:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19993,"name":"address","nodeType":"ElementaryTypeName","src":"3999:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3998:27:67"},"returnParameters":{"id":19999,"nodeType":"ParameterList","parameters":[],"src":"4054:0:67"},"scope":20678,"src":"3972:84:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3864],"body":{"id":20109,"nodeType":"Block","src":"4316:779:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20014,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20004,"src":"4335:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":20015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4344:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4335:10:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e74206d7573742062652067726561746572207468616e207a65726f","id":20017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4347:34:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""},"value":"Amount must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""}],"id":20013,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4327:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4327:55:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20019,"nodeType":"ExpressionStatement","src":"4327:55:67"},{"expression":{"arguments":[{"expression":{"id":20024,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4426:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4430:6:67","memberName":"sender","nodeType":"MemberAccess","src":"4426:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":20028,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4446:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}],"id":20027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4438:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20026,"name":"address","nodeType":"ElementaryTypeName","src":"4438:7:67","typeDescriptions":{}}},"id":20029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20030,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20004,"src":"4453:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20021,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"4402:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20020,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4395:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4395:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4413:12:67","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"4395:30:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":20031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4395:65:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20032,"nodeType":"ExpressionStatement","src":"4395:65:67"},{"assignments":[20034],"declarations":[{"constant":false,"id":20034,"mutability":"mutable","name":"baluniRouter","nameLocation":"4481:12:67","nodeType":"VariableDeclaration","scope":20109,"src":"4473:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20033,"name":"address","nodeType":"ElementaryTypeName","src":"4473:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20038,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20035,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"4496:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4506:15:67","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":4838,"src":"4496:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4496:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4473:50:67"},{"assignments":[20040],"declarations":[{"constant":false,"id":20040,"mutability":"mutable","name":"treasury","nameLocation":"4542:8:67","nodeType":"VariableDeclaration","scope":20109,"src":"4534:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20039,"name":"address","nodeType":"ElementaryTypeName","src":"4534:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20044,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20041,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"4553:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4563:11:67","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"4553:21:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4553:23:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4534:42:67"},{"assignments":[20046],"declarations":[{"constant":false,"id":20046,"mutability":"mutable","name":"hairCut","nameLocation":"4594:7:67","nodeType":"VariableDeclaration","scope":20109,"src":"4589:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20045,"name":"uint","nodeType":"ElementaryTypeName","src":"4589:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20050,"initialValue":{"arguments":[{"id":20048,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20004,"src":"4613:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20047,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20588,"src":"4604:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":20049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4604:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4589:31:67"},{"assignments":[20052],"declarations":[{"constant":false,"id":20052,"mutability":"mutable","name":"hairCut2","nameLocation":"4636:8:67","nodeType":"VariableDeclaration","scope":20109,"src":"4631:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20051,"name":"uint","nodeType":"ElementaryTypeName","src":"4631:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20056,"initialValue":{"arguments":[{"id":20054,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20046,"src":"4656:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20053,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20588,"src":"4647:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":20055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4647:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4631:33:67"},{"expression":{"arguments":[{"id":20061,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20034,"src":"4704:12:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20062,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20046,"src":"4718:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20063,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20052,"src":"4728:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4718:18:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20058,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"4684:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20057,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4677:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4677:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4695:8:67","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"4677:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4677:60:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20066,"nodeType":"ExpressionStatement","src":"4677:60:67"},{"expression":{"arguments":[{"id":20071,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20040,"src":"4775:8:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20072,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20052,"src":"4785:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20068,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"4755:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20067,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4748:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4748:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4766:8:67","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"4748:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4748:46:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20074,"nodeType":"ExpressionStatement","src":"4748:46:67"},{"assignments":[20076],"declarations":[{"constant":false,"id":20076,"mutability":"mutable","name":"amountAfter","nameLocation":"4815:11:67","nodeType":"VariableDeclaration","scope":20109,"src":"4807:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20075,"name":"uint256","nodeType":"ElementaryTypeName","src":"4807:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20080,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20077,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20004,"src":"4829:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20078,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20046,"src":"4838:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4829:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4807:38:67"},{"assignments":[20082],"declarations":[{"constant":false,"id":20082,"mutability":"mutable","name":"baseDecimal","nameLocation":"4862:11:67","nodeType":"VariableDeclaration","scope":20109,"src":"4856:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20081,"name":"uint8","nodeType":"ElementaryTypeName","src":"4856:5:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":20088,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":20084,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"4891:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20083,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"4876:14:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":20085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4876:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":20086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4902:8:67","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"4876:34:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":20087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4876:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4856:56:67"},{"assignments":[20090],"declarations":[{"constant":false,"id":20090,"mutability":"mutable","name":"amountScaled","nameLocation":"4961:12:67","nodeType":"VariableDeclaration","scope":20109,"src":"4953:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20089,"name":"uint256","nodeType":"ElementaryTypeName","src":"4953:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20099,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20091,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20076,"src":"4976:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":20092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4990:2:67","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":20095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":20093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4997:2:67","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20094,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20082,"src":"5002:11:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4997:16:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":20096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4996:18:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4990:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4976:38:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4953:61:67"},{"expression":{"arguments":[{"id":20101,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20006,"src":"5031:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20102,"name":"amountScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20090,"src":"5035:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20100,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"5025:5:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5025:23:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20104,"nodeType":"ExpressionStatement","src":"5025:23:67"},{"expression":{"id":20107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20105,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19781,"src":"5061:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":20106,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20076,"src":"5076:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20108,"nodeType":"ExpressionStatement","src":"5061:26:67"}]},"documentation":{"id":20002,"nodeType":"StructuredDocumentation","src":"4064:165:67","text":" @dev Deposits assetA into the pool.\n @param amount The amount of assetA to deposit.\n @param to The address to receive pool tokens."},"functionSelector":"6e553f65","id":20110,"implemented":true,"kind":"function","modifiers":[{"id":20009,"kind":"modifierInvocation","modifierName":{"id":20008,"name":"nonReentrant","nameLocations":["4289:12:67"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"4289:12:67"},"nodeType":"ModifierInvocation","src":"4289:12:67"},{"id":20011,"kind":"modifierInvocation","modifierName":{"id":20010,"name":"whenNotPaused","nameLocations":["4302:13:67"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"4302:13:67"},"nodeType":"ModifierInvocation","src":"4302:13:67"}],"name":"deposit","nameLocation":"4244:7:67","nodeType":"FunctionDefinition","parameters":{"id":20007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20004,"mutability":"mutable","name":"amount","nameLocation":"4260:6:67","nodeType":"VariableDeclaration","scope":20110,"src":"4252:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20003,"name":"uint256","nodeType":"ElementaryTypeName","src":"4252:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20006,"mutability":"mutable","name":"to","nameLocation":"4276:2:67","nodeType":"VariableDeclaration","scope":20110,"src":"4268:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20005,"name":"address","nodeType":"ElementaryTypeName","src":"4268:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4251:28:67"},"returnParameters":{"id":20012,"nodeType":"ParameterList","parameters":[],"src":"4316:0:67"},"scope":20678,"src":"4235:860:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3871],"body":{"id":20315,"nodeType":"Block","src":"5378:1564:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20123,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20113,"src":"5397:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":20124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5406:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5397:10:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536861726573206d7573742062652067726561746572207468616e207a65726f","id":20126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5409:34:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6","typeString":"literal_string \"Shares must be greater than zero\""},"value":"Shares must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6","typeString":"literal_string \"Shares must be greater than zero\""}],"id":20122,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5389:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:55:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20128,"nodeType":"ExpressionStatement","src":"5389:55:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":20131,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5473:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5477:6:67","memberName":"sender","nodeType":"MemberAccess","src":"5473:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20130,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"5463:9:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5463:21:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":20134,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20113,"src":"5488:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5463:31:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742062616c616e6365","id":20136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5496:22:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5","typeString":"literal_string \"Insufficient balance\""},"value":"Insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5","typeString":"literal_string \"Insufficient balance\""}],"id":20129,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5455:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5455:64:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20138,"nodeType":"ExpressionStatement","src":"5455:64:67"},{"assignments":[20140],"declarations":[{"constant":false,"id":20140,"mutability":"mutable","name":"quoteDecimal","nameLocation":"5538:12:67","nodeType":"VariableDeclaration","scope":20315,"src":"5532:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20139,"name":"uint8","nodeType":"ElementaryTypeName","src":"5532:5:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":20146,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":20142,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19774,"src":"5568:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20141,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"5553:14:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":20143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5553:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":20144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5580:8:67","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"5553:35:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":20145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5553:37:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5532:58:67"},{"assignments":[20148],"declarations":[{"constant":false,"id":20148,"mutability":"mutable","name":"quoteBalance","nameLocation":"5609:12:67","nodeType":"VariableDeclaration","scope":20315,"src":"5601:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20147,"name":"uint256","nodeType":"ElementaryTypeName","src":"5601:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20158,"initialValue":{"arguments":[{"arguments":[{"id":20155,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5661:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}],"id":20154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5653:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20153,"name":"address","nodeType":"ElementaryTypeName","src":"5653:7:67","typeDescriptions":{}}},"id":20156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5653:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":20150,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19774,"src":"5631:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20149,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5624:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5624:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5643:9:67","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"5624:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5624:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5601:66:67"},{"assignments":[20160],"declarations":[{"constant":false,"id":20160,"mutability":"mutable","name":"baseBalance","nameLocation":"5686:11:67","nodeType":"VariableDeclaration","scope":20315,"src":"5678:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20159,"name":"uint256","nodeType":"ElementaryTypeName","src":"5678:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20170,"initialValue":{"arguments":[{"arguments":[{"id":20167,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5736:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}],"id":20166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5728:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20165,"name":"address","nodeType":"ElementaryTypeName","src":"5728:7:67","typeDescriptions":{}}},"id":20168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5728:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":20162,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"5707:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20161,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5700:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5700:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5718:9:67","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"5700:27:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5700:42:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5678:64:67"},{"expression":{"id":20178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20171,"name":"quoteBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"5810:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":20172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5826:2:67","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":20175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":20173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5833:2:67","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20174,"name":"quoteDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20140,"src":"5838:12:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5833:17:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":20176,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5832:19:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5826:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5810:41:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20179,"nodeType":"ExpressionStatement","src":"5810:41:67"},{"assignments":[20181],"declarations":[{"constant":false,"id":20181,"mutability":"mutable","name":"withdrawAmountA","nameLocation":"5872:15:67","nodeType":"VariableDeclaration","scope":20315,"src":"5864:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20180,"name":"uint256","nodeType":"ElementaryTypeName","src":"5864:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20189,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20182,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20113,"src":"5891:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":20183,"name":"baseBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20160,"src":"5900:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5891:20:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20185,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5890:22:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20186,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5915:11:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5915:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5890:38:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5864:64:67"},{"assignments":[20191],"declarations":[{"constant":false,"id":20191,"mutability":"mutable","name":"withdrawAmountB","nameLocation":"5947:15:67","nodeType":"VariableDeclaration","scope":20315,"src":"5939:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20190,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20199,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20192,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20113,"src":"5966:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":20193,"name":"quoteBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"5975:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:21:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20195,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5965:23:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20196,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5991:11:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5991:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5965:39:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:65:67"},{"expression":{"arguments":[{"expression":{"id":20201,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6023:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6027:6:67","memberName":"sender","nodeType":"MemberAccess","src":"6023:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20203,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20113,"src":"6035:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20200,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"6017:5:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6017:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20205,"nodeType":"ExpressionStatement","src":"6017:25:67"},{"expression":{"id":20213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20206,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20191,"src":"6112:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":20207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6131:2:67","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":20210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":20208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6138:2:67","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20209,"name":"quoteDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20140,"src":"6143:12:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6138:17:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":20211,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6137:19:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6131:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6112:44:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20214,"nodeType":"ExpressionStatement","src":"6112:44:67"},{"assignments":[20216],"declarations":[{"constant":false,"id":20216,"mutability":"mutable","name":"amountToSend","nameLocation":"6177:12:67","nodeType":"VariableDeclaration","scope":20315,"src":"6169:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20215,"name":"uint256","nodeType":"ElementaryTypeName","src":"6169:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20218,"initialValue":{"id":20217,"name":"withdrawAmountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20181,"src":"6192:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6169:38:67"},{"assignments":[20220],"declarations":[{"constant":false,"id":20220,"mutability":"mutable","name":"hairCut","nameLocation":"6225:7:67","nodeType":"VariableDeclaration","scope":20315,"src":"6220:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20219,"name":"uint","nodeType":"ElementaryTypeName","src":"6220:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20224,"initialValue":{"arguments":[{"id":20222,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20216,"src":"6244:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20221,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20588,"src":"6235:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":20223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6235:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6220:37:67"},{"expression":{"arguments":[{"id":20229,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20115,"src":"6295:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20230,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20216,"src":"6299:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20231,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20220,"src":"6314:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6299:22:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20226,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"6275:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20225,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6268:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6268:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6286:8:67","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"6268:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6268:54:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20234,"nodeType":"ExpressionStatement","src":"6268:54:67"},{"assignments":[20236],"declarations":[{"constant":false,"id":20236,"mutability":"mutable","name":"hairCut2","nameLocation":"6340:8:67","nodeType":"VariableDeclaration","scope":20315,"src":"6335:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20235,"name":"uint","nodeType":"ElementaryTypeName","src":"6335:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20240,"initialValue":{"arguments":[{"id":20238,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20220,"src":"6360:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20237,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20588,"src":"6351:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":20239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6351:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6335:33:67"},{"assignments":[20242],"declarations":[{"constant":false,"id":20242,"mutability":"mutable","name":"baluniRouter","nameLocation":"6387:12:67","nodeType":"VariableDeclaration","scope":20315,"src":"6379:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20241,"name":"address","nodeType":"ElementaryTypeName","src":"6379:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20246,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20243,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"6402:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6412:15:67","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":4838,"src":"6402:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6402:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6379:50:67"},{"assignments":[20248],"declarations":[{"constant":false,"id":20248,"mutability":"mutable","name":"treasury","nameLocation":"6448:8:67","nodeType":"VariableDeclaration","scope":20315,"src":"6440:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20247,"name":"address","nodeType":"ElementaryTypeName","src":"6440:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20252,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20249,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"6459:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6469:11:67","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"6459:21:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6459:23:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6440:42:67"},{"expression":{"arguments":[{"id":20257,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20242,"src":"6520:12:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20258,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20220,"src":"6534:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20259,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20236,"src":"6544:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6534:18:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20254,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"6500:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20253,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6493:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6511:8:67","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"6493:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:60:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20262,"nodeType":"ExpressionStatement","src":"6493:60:67"},{"expression":{"arguments":[{"id":20267,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20248,"src":"6591:8:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20268,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20236,"src":"6601:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20264,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"6571:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20263,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6564:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6564:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6582:8:67","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"6564:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6564:46:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20270,"nodeType":"ExpressionStatement","src":"6564:46:67"},{"expression":{"id":20275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20271,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20220,"src":"6623:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20273,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20191,"src":"6642:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20272,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20588,"src":"6633:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":20274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6633:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6623:35:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20276,"nodeType":"ExpressionStatement","src":"6623:35:67"},{"expression":{"arguments":[{"id":20281,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20115,"src":"6697:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20282,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20191,"src":"6701:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20283,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20220,"src":"6719:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6701:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20278,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19774,"src":"6676:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20277,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6669:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6669:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6688:8:67","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"6669:27:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6669:58:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20286,"nodeType":"ExpressionStatement","src":"6669:58:67"},{"expression":{"id":20291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20287,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20236,"src":"6738:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20289,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20220,"src":"6758:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20288,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20588,"src":"6749:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":20290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6749:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6738:28:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20292,"nodeType":"ExpressionStatement","src":"6738:28:67"},{"expression":{"arguments":[{"id":20297,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20242,"src":"6804:12:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20298,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20220,"src":"6818:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20299,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20236,"src":"6828:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6818:18:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20294,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"6784:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20293,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6777:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6777:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6795:8:67","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"6777:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6777:60:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20302,"nodeType":"ExpressionStatement","src":"6777:60:67"},{"expression":{"arguments":[{"id":20307,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20248,"src":"6875:8:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20308,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20236,"src":"6885:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20304,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"6855:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20303,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6848:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6848:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6866:8:67","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"6848:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6848:46:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20310,"nodeType":"ExpressionStatement","src":"6848:46:67"},{"expression":{"id":20313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20311,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19781,"src":"6907:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":20312,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20216,"src":"6922:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6907:27:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20314,"nodeType":"ExpressionStatement","src":"6907:27:67"}]},"documentation":{"id":20111,"nodeType":"StructuredDocumentation","src":"5103:187:67","text":" @dev Withdraws assetA and assetB from the pool.\n @param shares The amount of pool tokens to redeem.\n @param to The address to receive assetA and assetB."},"functionSelector":"00f714ce","id":20316,"implemented":true,"kind":"function","modifiers":[{"id":20118,"kind":"modifierInvocation","modifierName":{"id":20117,"name":"nonReentrant","nameLocations":["5351:12:67"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"5351:12:67"},"nodeType":"ModifierInvocation","src":"5351:12:67"},{"id":20120,"kind":"modifierInvocation","modifierName":{"id":20119,"name":"whenNotPaused","nameLocations":["5364:13:67"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"5364:13:67"},"nodeType":"ModifierInvocation","src":"5364:13:67"}],"name":"withdraw","nameLocation":"5305:8:67","nodeType":"FunctionDefinition","parameters":{"id":20116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20113,"mutability":"mutable","name":"shares","nameLocation":"5322:6:67","nodeType":"VariableDeclaration","scope":20316,"src":"5314:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20112,"name":"uint256","nodeType":"ElementaryTypeName","src":"5314:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20115,"mutability":"mutable","name":"to","nameLocation":"5338:2:67","nodeType":"VariableDeclaration","scope":20316,"src":"5330:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20114,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5313:28:67"},"returnParameters":{"id":20121,"nodeType":"ParameterList","parameters":[],"src":"5378:0:67"},"scope":20678,"src":"5296:1646:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20391,"nodeType":"Block","src":"7011:594:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20324,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7031:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":20325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7037:6:67","memberName":"number","nodeType":"MemberAccess","src":"7031:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20326,"name":"lastInvestedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19783,"src":"7046:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:32:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20328,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7030:34:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":20329,"name":"reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19789,"src":"7067:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7030:53:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"776169742074696c6c206e657874207265696e76657374206379636c65","id":20331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7085:31:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_8475dfc2a61c983fde89982d493adea657965a16ea35a31669edc1d76f0cb847","typeString":"literal_string \"wait till next reinvest cycle\""},"value":"wait till next reinvest cycle"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8475dfc2a61c983fde89982d493adea657965a16ea35a31669edc1d76f0cb847","typeString":"literal_string \"wait till next reinvest cycle\""}],"id":20323,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7022:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7022:95:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20333,"nodeType":"ExpressionStatement","src":"7022:95:67"},{"assignments":[20335],"declarations":[{"constant":false,"id":20335,"mutability":"mutable","name":"amtToSwap","nameLocation":"7135:9:67","nodeType":"VariableDeclaration","scope":20391,"src":"7130:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20334,"name":"uint","nodeType":"ElementaryTypeName","src":"7130:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20338,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":20336,"name":"getAmountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20433,"src":"7147:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7147:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7130:34:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20340,"name":"amtToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20335,"src":"7198:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":20341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7210:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7198:13:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7468696e6720746f2073776170","id":20343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7213:17:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_53449748a5034738d502a01b62b389ab55b3ebc840f594da71fc707f6109e0a1","typeString":"literal_string \"Nothing to swap\""},"value":"Nothing to swap"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_53449748a5034738d502a01b62b389ab55b3ebc840f594da71fc707f6109e0a1","typeString":"literal_string \"Nothing to swap\""}],"id":20339,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7190:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7190:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20345,"nodeType":"ExpressionStatement","src":"7190:41:67"},{"assignments":[20348],"declarations":[{"constant":false,"id":20348,"mutability":"mutable","name":"swapper","nameLocation":"7261:7:67","nodeType":"VariableDeclaration","scope":20391,"src":"7244:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"},"typeName":{"id":20347,"nodeType":"UserDefinedTypeName","pathNode":{"id":20346,"name":"IBaluniV1Swapper","nameLocations":["7244:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":5208,"src":"7244:16:67"},"referencedDeclaration":5208,"src":"7244:16:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"visibility":"internal"}],"id":20354,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20350,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"7288:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7298:16:67","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":4803,"src":"7288:26:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7288:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20349,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"7271:16:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":20353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7271:46:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"nodeType":"VariableDeclarationStatement","src":"7244:73:67"},{"expression":{"arguments":[{"arguments":[{"id":20361,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20348,"src":"7362:7:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}],"id":20360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7354:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20359,"name":"address","nodeType":"ElementaryTypeName","src":"7354:7:67","typeDescriptions":{}}},"id":20362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7354:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20363,"name":"amtToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20335,"src":"7372:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20356,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"7335:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20355,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"7328:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7328:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7346:7:67","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"7328:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7328:54:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20365,"nodeType":"ExpressionStatement","src":"7328:54:67"},{"assignments":[20367],"declarations":[{"constant":false,"id":20367,"mutability":"mutable","name":"quoteReceived","nameLocation":"7403:13:67","nodeType":"VariableDeclaration","scope":20391,"src":"7395:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20366,"name":"uint256","nodeType":"ElementaryTypeName","src":"7395:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20378,"initialValue":{"arguments":[{"id":20370,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"7438:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20371,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19774,"src":"7449:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20372,"name":"amtToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20335,"src":"7461:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":20375,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7480:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}],"id":20374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7472:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20373,"name":"address","nodeType":"ElementaryTypeName","src":"7472:7:67","typeDescriptions":{}}},"id":20376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7472:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":20368,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20348,"src":"7419:7:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":20369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7427:10:67","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":5192,"src":"7419:18:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":20377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7419:67:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7395:91:67"},{"expression":{"id":20382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20379,"name":"lastInvestedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19783,"src":"7497:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20380,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7517:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":20381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7523:6:67","memberName":"number","nodeType":"MemberAccess","src":"7517:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7497:32:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20383,"nodeType":"ExpressionStatement","src":"7497:32:67"},{"eventCall":{"arguments":[{"expression":{"id":20385,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7560:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7564:6:67","memberName":"sender","nodeType":"MemberAccess","src":"7560:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20387,"name":"amtToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20335,"src":"7572:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20388,"name":"quoteReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20367,"src":"7583:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20384,"name":"ExecuteTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19801,"src":"7547:12:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":20389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7547:50:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20390,"nodeType":"EmitStatement","src":"7542:55:67"}]},"functionSelector":"d53419a3","id":20392,"implemented":true,"kind":"function","modifiers":[{"id":20319,"kind":"modifierInvocation","modifierName":{"id":20318,"name":"nonReentrant","nameLocations":["6984:12:67"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"6984:12:67"},"nodeType":"ModifierInvocation","src":"6984:12:67"},{"id":20321,"kind":"modifierInvocation","modifierName":{"id":20320,"name":"whenNotPaused","nameLocations":["6997:13:67"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"6997:13:67"},"nodeType":"ModifierInvocation","src":"6997:13:67"}],"name":"systemDeposit","nameLocation":"6959:13:67","nodeType":"FunctionDefinition","parameters":{"id":20317,"nodeType":"ParameterList","parameters":[],"src":"6972:2:67"},"returnParameters":{"id":20322,"nodeType":"ParameterList","parameters":[],"src":"7011:0:67"},"scope":20678,"src":"6950:655:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20432,"nodeType":"Block","src":"7667:275:67","statements":[{"assignments":[20398],"declarations":[{"constant":false,"id":20398,"mutability":"mutable","name":"baseTokenBal","nameLocation":"7683:12:67","nodeType":"VariableDeclaration","scope":20432,"src":"7678:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20397,"name":"uint","nodeType":"ElementaryTypeName","src":"7678:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20408,"initialValue":{"arguments":[{"arguments":[{"id":20405,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7734:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}],"id":20404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7726:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20403,"name":"address","nodeType":"ElementaryTypeName","src":"7726:7:67","typeDescriptions":{}}},"id":20406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7726:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":20400,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"7705:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20399,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"7698:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7698:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7716:9:67","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"7698:27:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7698:42:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7678:62:67"},{"assignments":[20410],"declarations":[{"constant":false,"id":20410,"mutability":"mutable","name":"blockDiff","nameLocation":"7756:9:67","nodeType":"VariableDeclaration","scope":20432,"src":"7751:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20409,"name":"uint","nodeType":"ElementaryTypeName","src":"7751:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20415,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20411,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7768:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":20412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7774:6:67","memberName":"number","nodeType":"MemberAccess","src":"7768:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20413,"name":"lastInvestedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19783,"src":"7783:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7768:32:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7751:49:67"},{"assignments":[20417],"declarations":[{"constant":false,"id":20417,"mutability":"mutable","name":"toSwapQty","nameLocation":"7816:9:67","nodeType":"VariableDeclaration","scope":20432,"src":"7811:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20416,"name":"uint","nodeType":"ElementaryTypeName","src":"7811:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20424,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20418,"name":"baseTokenBal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20398,"src":"7829:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":20419,"name":"blockDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20410,"src":"7844:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7829:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20421,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7828:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":20422,"name":"swapDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19787,"src":"7857:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7828:41:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7811:58:67"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20425,"name":"toSwapQty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20417,"src":"7887:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":20426,"name":"maxPerSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19785,"src":"7899:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7887:22:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":20429,"name":"toSwapQty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20417,"src":"7925:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7887:47:67","trueExpression":{"id":20428,"name":"maxPerSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19785,"src":"7912:10:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20396,"id":20431,"nodeType":"Return","src":"7880:54:67"}]},"functionSelector":"d9d47d69","id":20433,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountToSwap","nameLocation":"7622:15:67","nodeType":"FunctionDefinition","parameters":{"id":20393,"nodeType":"ParameterList","parameters":[],"src":"7637:2:67"},"returnParameters":{"id":20396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20395,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20433,"src":"7661:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20394,"name":"uint","nodeType":"ElementaryTypeName","src":"7661:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7660:6:67"},"scope":20678,"src":"7613:329:67","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":20457,"nodeType":"Block","src":"8005:145:67","statements":[{"assignments":[20439],"declarations":[{"constant":false,"id":20439,"mutability":"mutable","name":"amtToSwap","nameLocation":"8021:9:67","nodeType":"VariableDeclaration","scope":20457,"src":"8016:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20438,"name":"uint","nodeType":"ElementaryTypeName","src":"8016:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20442,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":20440,"name":"getAmountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20433,"src":"8033:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8033:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8016:34:67"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20443,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8070:5:67","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":20444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8076:6:67","memberName":"number","nodeType":"MemberAccess","src":"8070:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20445,"name":"lastInvestedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19783,"src":"8085:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8070:32:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20447,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8069:34:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":20448,"name":"reinvestDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19789,"src":"8106:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8069:53:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":20450,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8068:55:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20451,"name":"amtToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20439,"src":"8128:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":20452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8140:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8128:13:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":20454,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8127:15:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8068:74:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":20437,"id":20456,"nodeType":"Return","src":"8061:81:67"}]},"functionSelector":"f267d91b","id":20458,"implemented":true,"kind":"function","modifiers":[],"name":"canSystemDeposit","nameLocation":"7959:16:67","nodeType":"FunctionDefinition","parameters":{"id":20434,"nodeType":"ParameterList","parameters":[],"src":"7975:2:67"},"returnParameters":{"id":20437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20436,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20458,"src":"7999:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20435,"name":"bool","nodeType":"ElementaryTypeName","src":"7999:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7998:6:67"},"scope":20678,"src":"7950:200:67","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3874],"body":{"id":20467,"nodeType":"Block","src":"8268:27:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20464,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1444,"src":"8279:6:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8279:8:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20466,"nodeType":"ExpressionStatement","src":"8279:8:67"}]},"documentation":{"id":20459,"nodeType":"StructuredDocumentation","src":"8158:68:67","text":" @dev pause pool, restricting certain operations"},"functionSelector":"8456cb59","id":20468,"implemented":true,"kind":"function","modifiers":[{"id":20462,"kind":"modifierInvocation","modifierName":{"id":20461,"name":"onlyOwner","nameLocations":["8258:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"8258:9:67"},"nodeType":"ModifierInvocation","src":"8258:9:67"}],"name":"pause","nameLocation":"8241:5:67","nodeType":"FunctionDefinition","parameters":{"id":20460,"nodeType":"ParameterList","parameters":[],"src":"8246:2:67"},"returnParameters":{"id":20463,"nodeType":"ParameterList","parameters":[],"src":"8268:0:67"},"scope":20678,"src":"8232:63:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3877],"body":{"id":20477,"nodeType":"Block","src":"8414:29:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20474,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"8425:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8425:10:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20476,"nodeType":"ExpressionStatement","src":"8425:10:67"}]},"documentation":{"id":20469,"nodeType":"StructuredDocumentation","src":"8303:67:67","text":" @dev unpause pool, enabling certain operations"},"functionSelector":"3f4ba83a","id":20478,"implemented":true,"kind":"function","modifiers":[{"id":20472,"kind":"modifierInvocation","modifierName":{"id":20471,"name":"onlyOwner","nameLocations":["8404:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"8404:9:67"},"nodeType":"ModifierInvocation","src":"8404:9:67"}],"name":"unpause","nameLocation":"8385:7:67","nodeType":"FunctionDefinition","parameters":{"id":20470,"nodeType":"ParameterList","parameters":[],"src":"8392:2:67"},"returnParameters":{"id":20473,"nodeType":"ParameterList","parameters":[],"src":"8414:0:67"},"scope":20678,"src":"8376:67:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3887],"body":{"id":20532,"nodeType":"Block","src":"8504:382:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20483,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"8519:11:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8519:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8536:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8519:18:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20489,"nodeType":"IfStatement","src":"8515:32:67","trueBody":{"expression":{"hexValue":"30","id":20487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8546:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":20482,"id":20488,"nodeType":"Return","src":"8539:8:67"}},{"assignments":[20491],"declarations":[{"constant":false,"id":20491,"mutability":"mutable","name":"USDC","nameLocation":"8568:4:67","nodeType":"VariableDeclaration","scope":20532,"src":"8560:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20490,"name":"address","nodeType":"ElementaryTypeName","src":"8560:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20495,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20492,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"8575:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8585:7:67","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"8575:17:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8575:19:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8560:34:67"},{"assignments":[20497],"declarations":[{"constant":false,"id":20497,"mutability":"mutable","name":"decimals","nameLocation":"8611:8:67","nodeType":"VariableDeclaration","scope":20532,"src":"8605:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20496,"name":"uint8","nodeType":"ElementaryTypeName","src":"8605:5:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":20503,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":20499,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20491,"src":"8637:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20498,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"8622:14:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":20500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8622:20:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":20501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8643:8:67","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"8622:29:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":20502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8622:31:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8605:48:67"},{"assignments":[20505],"declarations":[{"constant":false,"id":20505,"mutability":"mutable","name":"factor","nameLocation":"8672:6:67","nodeType":"VariableDeclaration","scope":20532,"src":"8664:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20504,"name":"uint256","nodeType":"ElementaryTypeName","src":"8664:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20512,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":20506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8681:2:67","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":20509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":20507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8688:2:67","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20508,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20497,"src":"8693:8:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8688:13:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":20510,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8687:15:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8681:21:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8664:38:67"},{"assignments":[20514],"declarations":[{"constant":false,"id":20514,"mutability":"mutable","name":"valuationScaledUp","nameLocation":"8721:17:67","nodeType":"VariableDeclaration","scope":20532,"src":"8713:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20513,"name":"uint256","nodeType":"ElementaryTypeName","src":"8713:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20519,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20515,"name":"totalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20677,"src":"8741:14:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8741:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":20517,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20505,"src":"8760:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8741:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8713:53:67"},{"assignments":[20521],"declarations":[{"constant":false,"id":20521,"mutability":"mutable","name":"unitPriceScaled","nameLocation":"8785:15:67","nodeType":"VariableDeclaration","scope":20532,"src":"8777:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20520,"name":"uint256","nodeType":"ElementaryTypeName","src":"8777:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20529,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20522,"name":"valuationScaledUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20514,"src":"8804:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":20523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8824:4:67","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"8804:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20525,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8803:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":20526,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"8832:11:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8832:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8803:42:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8777:68:67"},{"expression":{"id":20530,"name":"unitPriceScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20521,"src":"8863:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20482,"id":20531,"nodeType":"Return","src":"8856:22:67"}]},"functionSelector":"e73faa2d","id":20533,"implemented":true,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"8460:9:67","nodeType":"FunctionDefinition","parameters":{"id":20479,"nodeType":"ParameterList","parameters":[],"src":"8469:2:67"},"returnParameters":{"id":20482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20533,"src":"8495:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20480,"name":"uint256","nodeType":"ElementaryTypeName","src":"8495:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8494:9:67"},"scope":20678,"src":"8451:435:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3852],"body":{"id":20543,"nodeType":"Block","src":"8946:44:67","statements":[{"expression":{"arguments":[{"id":20540,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"8972:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}],"id":20539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8964:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20538,"name":"address","nodeType":"ElementaryTypeName","src":"8964:7:67","typeDescriptions":{}}},"id":20541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8964:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":20537,"id":20542,"nodeType":"Return","src":"8957:25:67"}]},"functionSelector":"7b103999","id":20544,"implemented":true,"kind":"function","modifiers":[],"name":"registry","nameLocation":"8903:8:67","nodeType":"FunctionDefinition","parameters":{"id":20534,"nodeType":"ParameterList","parameters":[],"src":"8911:2:67"},"returnParameters":{"id":20537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20536,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20544,"src":"8937:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20535,"name":"address","nodeType":"ElementaryTypeName","src":"8937:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8936:9:67"},"scope":20678,"src":"8894:96:67","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20559,"nodeType":"Block","src":"9068:46:67","statements":[{"expression":{"id":20557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":20553,"name":"executors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"9079:9:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":20555,"indexExpression":{"id":20554,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20546,"src":"9089:7:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9079:18:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20556,"name":"_allow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20548,"src":"9100:6:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9079:27:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20558,"nodeType":"ExpressionStatement","src":"9079:27:67"}]},"functionSelector":"1e1bff3f","id":20560,"implemented":true,"kind":"function","modifiers":[{"id":20551,"kind":"modifierInvocation","modifierName":{"id":20550,"name":"onlyOwner","nameLocations":["9058:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"9058:9:67"},"nodeType":"ModifierInvocation","src":"9058:9:67"}],"name":"setExecutor","nameLocation":"9007:11:67","nodeType":"FunctionDefinition","parameters":{"id":20549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20546,"mutability":"mutable","name":"_wallet","nameLocation":"9027:7:67","nodeType":"VariableDeclaration","scope":20560,"src":"9019:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20545,"name":"address","nodeType":"ElementaryTypeName","src":"9019:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20548,"mutability":"mutable","name":"_allow","nameLocation":"9041:6:67","nodeType":"VariableDeclaration","scope":20560,"src":"9036:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20547,"name":"bool","nodeType":"ElementaryTypeName","src":"9036:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9018:30:67"},"returnParameters":{"id":20552,"nodeType":"ParameterList","parameters":[],"src":"9068:0:67"},"scope":20678,"src":"8998:116:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20587,"nodeType":"Block","src":"9392:163:67","statements":[{"assignments":[20569],"declarations":[{"constant":false,"id":20569,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"9411:8:67","nodeType":"VariableDeclaration","scope":20587,"src":"9403:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20568,"name":"uint256","nodeType":"ElementaryTypeName","src":"9403:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20573,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20570,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"9422:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9432:10:67","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":4863,"src":"9422:20:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9422:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9403:41:67"},{"assignments":[20575],"declarations":[{"constant":false,"id":20575,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"9463:9:67","nodeType":"VariableDeclaration","scope":20587,"src":"9455:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20574,"name":"uint256","nodeType":"ElementaryTypeName","src":"9455:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20579,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20576,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"9475:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9485:11:67","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"9475:21:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9475:23:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9455:43:67"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20580,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20563,"src":"9517:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":20581,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20569,"src":"9526:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9517:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20583,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9516:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":20584,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20575,"src":"9538:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9516:31:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20567,"id":20586,"nodeType":"Return","src":"9509:38:67"}]},"documentation":{"id":20561,"nodeType":"StructuredDocumentation","src":"9122:198:67","text":" @dev Calculates the fee amount based on the provided amount using the haircut formula.\n @param amount The amount to calculate the fee for.\n @return The fee amount."},"id":20588,"implemented":true,"kind":"function","modifiers":[],"name":"_haircut","nameLocation":"9335:8:67","nodeType":"FunctionDefinition","parameters":{"id":20564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20563,"mutability":"mutable","name":"amount","nameLocation":"9352:6:67","nodeType":"VariableDeclaration","scope":20588,"src":"9344:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20562,"name":"uint256","nodeType":"ElementaryTypeName","src":"9344:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9343:16:67"},"returnParameters":{"id":20567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20588,"src":"9383:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20565,"name":"uint256","nodeType":"ElementaryTypeName","src":"9383:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9382:9:67"},"scope":20678,"src":"9326:229:67","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[3882],"body":{"id":20676,"nodeType":"Block","src":"9619:654:67","statements":[{"assignments":[20595],"declarations":[{"constant":false,"id":20595,"mutability":"mutable","name":"oracle","nameLocation":"9646:6:67","nodeType":"VariableDeclaration","scope":20676,"src":"9630:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"},"typeName":{"id":20594,"nodeType":"UserDefinedTypeName","pathNode":{"id":20593,"name":"IBaluniV1Oracle","nameLocations":["9630:15:67"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"9630:15:67"},"referencedDeclaration":4240,"src":"9630:15:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"visibility":"internal"}],"id":20601,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20597,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"9671:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9681:15:67","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"9671:25:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9671:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20596,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"9655:15:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$4240_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":20600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9655:44:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"nodeType":"VariableDeclarationStatement","src":"9630:69:67"},{"assignments":[20603],"declarations":[{"constant":false,"id":20603,"mutability":"mutable","name":"USDC","nameLocation":"9718:4:67","nodeType":"VariableDeclaration","scope":20676,"src":"9710:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20602,"name":"address","nodeType":"ElementaryTypeName","src":"9710:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20607,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20604,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19777,"src":"9725:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9735:7:67","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"9725:17:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9725:19:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9710:34:67"},{"assignments":[20609],"declarations":[{"constant":false,"id":20609,"mutability":"mutable","name":"valuation","nameLocation":"9763:9:67","nodeType":"VariableDeclaration","scope":20676,"src":"9755:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20608,"name":"uint256","nodeType":"ElementaryTypeName","src":"9755:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20611,"initialValue":{"hexValue":"30","id":20610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9775:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9755:21:67"},{"assignments":[20613],"declarations":[{"constant":false,"id":20613,"mutability":"mutable","name":"baseBalance","nameLocation":"9794:11:67","nodeType":"VariableDeclaration","scope":20676,"src":"9789:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20612,"name":"uint","nodeType":"ElementaryTypeName","src":"9789:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20623,"initialValue":{"arguments":[{"arguments":[{"id":20620,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9844:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}],"id":20619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9836:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20618,"name":"address","nodeType":"ElementaryTypeName","src":"9836:7:67","typeDescriptions":{}}},"id":20621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9836:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":20615,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"9815:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20614,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9808:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9808:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9826:9:67","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"9808:27:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9808:42:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9789:61:67"},{"assignments":[20625],"declarations":[{"constant":false,"id":20625,"mutability":"mutable","name":"balanceQuote","nameLocation":"9866:12:67","nodeType":"VariableDeclaration","scope":20676,"src":"9861:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20624,"name":"uint","nodeType":"ElementaryTypeName","src":"9861:4:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20635,"initialValue":{"arguments":[{"arguments":[{"id":20632,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9918:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1DCAVault_$20678","typeString":"contract BaluniV1DCAVault"}],"id":20631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9910:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20630,"name":"address","nodeType":"ElementaryTypeName","src":"9910:7:67","typeDescriptions":{}}},"id":20633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9910:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":20627,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19774,"src":"9888:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20626,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9881:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9881:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9900:9:67","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"9881:28:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9881:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9861:63:67"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20636,"name":"baseBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20613,"src":"9941:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9956:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9941:16:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20639,"name":"balanceQuote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20625,"src":"9961:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9977:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9961:17:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9941:37:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20645,"nodeType":"IfStatement","src":"9937:51:67","trueBody":{"expression":{"hexValue":"30","id":20643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9987:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":20592,"id":20644,"nodeType":"Return","src":"9980:8:67"}},{"expression":{"id":20653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20646,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20609,"src":"10001:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":20649,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19774,"src":"10029:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20650,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20603,"src":"10041:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20651,"name":"balanceQuote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20625,"src":"10047:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20647,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20595,"src":"10014:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":20648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10021:7:67","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":4228,"src":"10014:14:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":20652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10014:46:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10001:59:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20654,"nodeType":"ExpressionStatement","src":"10001:59:67"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20655,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"10077:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":20656,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20603,"src":"10090:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10077:17:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":20672,"nodeType":"Block","src":"10153:84:67","statements":[{"expression":{"id":20670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20663,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20609,"src":"10168:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":20666,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19772,"src":"10196:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20667,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20603,"src":"10207:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20668,"name":"baseBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20613,"src":"10213:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20664,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20595,"src":"10181:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":20665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10188:7:67","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":4228,"src":"10181:14:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":20669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10181:44:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10168:57:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20671,"nodeType":"ExpressionStatement","src":"10168:57:67"}]},"id":20673,"nodeType":"IfStatement","src":"10073:164:67","trueBody":{"id":20662,"nodeType":"Block","src":"10096:51:67","statements":[{"expression":{"id":20660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20658,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20609,"src":"10111:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":20659,"name":"baseBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20613,"src":"10124:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10111:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20661,"nodeType":"ExpressionStatement","src":"10111:24:67"}]}},{"expression":{"id":20674,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20609,"src":"10256:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20592,"id":20675,"nodeType":"Return","src":"10249:16:67"}]},"functionSelector":"295b9300","id":20677,"implemented":true,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"9572:14:67","nodeType":"FunctionDefinition","parameters":{"id":20589,"nodeType":"ParameterList","parameters":[],"src":"9586:2:67"},"returnParameters":{"id":20592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20591,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20677,"src":"9610:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20590,"name":"uint256","nodeType":"ElementaryTypeName","src":"9610:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9609:9:67"},"scope":20678,"src":"9563:710:67","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":20679,"src":"730:9546:67","usedErrors":[30,35,211,214,475,480,1332,1335,1500,1620,1625,1630,1639,1644,1649,1780,1793,2690,2693],"usedEvents":[41,219,1324,1329,1759,2585,2594,19801]}],"src":"40:10238:67"},"id":67},"contracts/vaults/BaluniV1YearnVault.sol":{"ast":{"absolutePath":"contracts/vaults/BaluniV1YearnVault.sol","exportedSymbols":{"BaluniV1YearnVault":[21874],"ContextUpgradeable":[1293],"ERC1967Utils":[2048],"ERC20Upgradeable":[1247],"IBaluniV1Oracle":[4240],"IBaluniV1Registry":[4909],"IBaluniV1Swapper":[5208],"IBaluniV1YearnVault":[5274],"IERC1822Proxiable":[1608],"IERC20":[2651],"IERC20Errors":[1650],"IERC20Metadata":[2677],"IYearnVault":[5531],"Initializable":[448],"OwnableUpgradeable":[194],"PausableUpgradeable":[1469],"ReentrancyGuardUpgradeable":[1598],"UUPSUpgradeable":[630]},"id":21875,"license":"GNU AGPLv3","nodeType":"SourceUnit","nodes":[{"id":20680,"literals":["solidity","0.8",".25"],"nodeType":"PragmaDirective","src":"40:23:68"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":20681,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":1248,"src":"67:78:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":20682,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":195,"src":"147:75:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":20683,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":1599,"src":"224:82:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":20684,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":449,"src":"308:75:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":20685,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":631,"src":"385:77:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","id":20686,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":1470,"src":"464:75:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Registry.sol","file":"../interfaces/IBaluniV1Registry.sol","id":20687,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":4910,"src":"543:45:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IYearnVault.sol","file":"../interfaces/IYearnVault.sol","id":20688,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":5532,"src":"590:39:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Swapper.sol","file":"../interfaces/IBaluniV1Swapper.sol","id":20689,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":5209,"src":"631:44:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1Oracle.sol","file":"../interfaces/IBaluniV1Oracle.sol","id":20690,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":4241,"src":"677:43:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IBaluniV1YearnVault.sol","file":"../interfaces/IBaluniV1YearnVault.sol","id":20691,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":21875,"sourceUnit":5275,"src":"722:47:68","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":20692,"name":"Initializable","nameLocations":["809:13:68"],"nodeType":"IdentifierPath","referencedDeclaration":448,"src":"809:13:68"},"id":20693,"nodeType":"InheritanceSpecifier","src":"809:13:68"},{"baseName":{"id":20694,"name":"UUPSUpgradeable","nameLocations":["829:15:68"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"829:15:68"},"id":20695,"nodeType":"InheritanceSpecifier","src":"829:15:68"},{"baseName":{"id":20696,"name":"OwnableUpgradeable","nameLocations":["851:18:68"],"nodeType":"IdentifierPath","referencedDeclaration":194,"src":"851:18:68"},"id":20697,"nodeType":"InheritanceSpecifier","src":"851:18:68"},{"baseName":{"id":20698,"name":"ERC20Upgradeable","nameLocations":["876:16:68"],"nodeType":"IdentifierPath","referencedDeclaration":1247,"src":"876:16:68"},"id":20699,"nodeType":"InheritanceSpecifier","src":"876:16:68"},{"baseName":{"id":20700,"name":"ReentrancyGuardUpgradeable","nameLocations":["899:26:68"],"nodeType":"IdentifierPath","referencedDeclaration":1598,"src":"899:26:68"},"id":20701,"nodeType":"InheritanceSpecifier","src":"899:26:68"},{"baseName":{"id":20702,"name":"PausableUpgradeable","nameLocations":["932:19:68"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"932:19:68"},"id":20703,"nodeType":"InheritanceSpecifier","src":"932:19:68"},{"baseName":{"id":20704,"name":"IBaluniV1YearnVault","nameLocations":["958:19:68"],"nodeType":"IdentifierPath","referencedDeclaration":5274,"src":"958:19:68"},"id":20705,"nodeType":"InheritanceSpecifier","src":"958:19:68"}],"canonicalName":"BaluniV1YearnVault","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":21874,"linearizedBaseContracts":[21874,5274,1469,1598,1247,1650,2677,2651,194,1293,630,1608,448],"name":"BaluniV1YearnVault","nameLocation":"782:18:68","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[5215],"constant":false,"functionSelector":"cdf456e1","id":20707,"mutability":"mutable","name":"baseAsset","nameLocation":"1001:9:68","nodeType":"VariableDeclaration","scope":21874,"src":"986:24:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20706,"name":"address","nodeType":"ElementaryTypeName","src":"986:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":20710,"mutability":"mutable","name":"_yearnVault","nameLocation":"1037:11:68","nodeType":"VariableDeclaration","scope":21874,"src":"1017:31:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"},"typeName":{"id":20709,"nodeType":"UserDefinedTypeName","pathNode":{"id":20708,"name":"IYearnVault","nameLocations":["1017:11:68"],"nodeType":"IdentifierPath","referencedDeclaration":5531,"src":"1017:11:68"},"referencedDeclaration":5531,"src":"1017:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"visibility":"private"},{"baseFunctions":[5225],"constant":false,"functionSelector":"fdf262b7","id":20712,"mutability":"mutable","name":"quoteAsset","nameLocation":"1070:10:68","nodeType":"VariableDeclaration","scope":21874,"src":"1055:25:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20711,"name":"address","nodeType":"ElementaryTypeName","src":"1055:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":20715,"mutability":"mutable","name":"_registry","nameLocation":"1113:9:68","nodeType":"VariableDeclaration","scope":21874,"src":"1087:35:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"},"typeName":{"id":20714,"nodeType":"UserDefinedTypeName","pathNode":{"id":20713,"name":"IBaluniV1Registry","nameLocations":["1087:17:68"],"nodeType":"IdentifierPath","referencedDeclaration":4909,"src":"1087:17:68"},"referencedDeclaration":4909,"src":"1087:17:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"visibility":"private"},{"constant":false,"functionSelector":"f7fde10f","id":20717,"mutability":"mutable","name":"accumulatedAssetB","nameLocation":"1146:17:68","nodeType":"VariableDeclaration","scope":21874,"src":"1131:32:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20716,"name":"uint256","nodeType":"ElementaryTypeName","src":"1131:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"baseFunctions":[5235],"constant":false,"functionSelector":"36b77107","id":20719,"mutability":"mutable","name":"lastDeposit","nameLocation":"1185:11:68","nodeType":"VariableDeclaration","scope":21874,"src":"1170:26:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20718,"name":"uint256","nodeType":"ElementaryTypeName","src":"1170:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"6560bc80","id":20721,"mutability":"mutable","name":"allTimeInterest","nameLocation":"1218:15:68","nodeType":"VariableDeclaration","scope":21874,"src":"1203:30:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"anonymous":false,"eventSelector":"1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed","id":20729,"name":"Buy","nameLocation":"1248:3:68","nodeType":"EventDefinition","parameters":{"id":20728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20723,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1268:6:68","nodeType":"VariableDeclaration","scope":20729,"src":"1252:22:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20722,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20725,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1284:6:68","nodeType":"VariableDeclaration","scope":20729,"src":"1276:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20724,"name":"uint256","nodeType":"ElementaryTypeName","src":"1276:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20727,"indexed":false,"mutability":"mutable","name":"interest","nameLocation":"1300:8:68","nodeType":"VariableDeclaration","scope":20729,"src":"1292:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20726,"name":"uint256","nodeType":"ElementaryTypeName","src":"1292:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1251:58:68"},"src":"1242:68:68"},{"body":{"id":20818,"nodeType":"Block","src":"1552:585:68","statements":[{"expression":{"arguments":[{"expression":{"id":20747,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1578:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1582:6:68","memberName":"sender","nodeType":"MemberAccess","src":"1578:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20746,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1563:14:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1563:26:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20750,"nodeType":"ExpressionStatement","src":"1563:26:68"},{"expression":{"arguments":[{"id":20752,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20731,"src":"1613:5:68","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":20753,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20733,"src":"1620:7:68","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":20751,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"1600:12:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":20754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1600:28:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20755,"nodeType":"ExpressionStatement","src":"1600:28:68"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20756,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"1639:22:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1639:24:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20758,"nodeType":"ExpressionStatement","src":"1639:24:68"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20759,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"1674:22:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1674:24:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20761,"nodeType":"ExpressionStatement","src":"1674:24:68"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20762,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"1709:15:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1709:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20764,"nodeType":"ExpressionStatement","src":"1709:17:68"},{"expression":{"id":20767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20765,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"1739:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20766,"name":"_assetA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20735,"src":"1751:7:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1739:19:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20768,"nodeType":"ExpressionStatement","src":"1739:19:68"},{"expression":{"id":20773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20769,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"1769:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20771,"name":"_yearnVaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20737,"src":"1795:18:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20770,"name":"IYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5531,"src":"1783:11:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYearnVault_$5531_$","typeString":"type(contract IYearnVault)"}},"id":20772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1783:31:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"src":"1769:45:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":20774,"nodeType":"ExpressionStatement","src":"1769:45:68"},{"expression":{"id":20777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20775,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"1825:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20776,"name":"_assetB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"1838:7:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1825:20:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20778,"nodeType":"ExpressionStatement","src":"1825:20:68"},{"expression":{"id":20783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20779,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"1856:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20781,"name":"_registryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20741,"src":"1886:16:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20780,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"1868:17:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":20782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1868:35:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"1856:47:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20784,"nodeType":"ExpressionStatement","src":"1856:47:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20786,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"1924:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":20789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1945:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":20788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1937:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20787,"name":"address","nodeType":"ElementaryTypeName","src":"1937:7:68","typeDescriptions":{}}},"id":20790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1924:23:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206173736574412061646472657373","id":20792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1949:24:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89","typeString":"literal_string \"Invalid assetA address\""},"value":"Invalid assetA address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89","typeString":"literal_string \"Invalid assetA address\""}],"id":20785,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1916:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1916:58:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20794,"nodeType":"ExpressionStatement","src":"1916:58:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":20798,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"2001:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}],"id":20797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1993:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20796,"name":"address","nodeType":"ElementaryTypeName","src":"1993:7:68","typeDescriptions":{}}},"id":20799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1993:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":20802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2025:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":20801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2017:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20800,"name":"address","nodeType":"ElementaryTypeName","src":"2017:7:68","typeDescriptions":{}}},"id":20803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2017:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1993:34:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420596561726e205661756c742061646472657373","id":20805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2029:29:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae","typeString":"literal_string \"Invalid Yearn Vault address\""},"value":"Invalid Yearn Vault address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae","typeString":"literal_string \"Invalid Yearn Vault address\""}],"id":20795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1985:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1985:74:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20807,"nodeType":"ExpressionStatement","src":"1985:74:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20809,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"2078:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":20812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":20811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2092:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20810,"name":"address","nodeType":"ElementaryTypeName","src":"2092:7:68","typeDescriptions":{}}},"id":20813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2092:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2078:24:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206173736574422061646472657373","id":20815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2104:24:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec","typeString":"literal_string \"Invalid assetB address\""},"value":"Invalid assetB address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec","typeString":"literal_string \"Invalid assetB address\""}],"id":20808,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2070:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2070:59:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20817,"nodeType":"ExpressionStatement","src":"2070:59:68"}]},"functionSelector":"e56f2fe4","id":20819,"implemented":true,"kind":"function","modifiers":[{"id":20744,"kind":"modifierInvocation","modifierName":{"id":20743,"name":"initializer","nameLocations":["1540:11:68"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"1540:11:68"},"nodeType":"ModifierInvocation","src":"1540:11:68"}],"name":"initialize","nameLocation":"1327:10:68","nodeType":"FunctionDefinition","parameters":{"id":20742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20731,"mutability":"mutable","name":"_name","nameLocation":"1362:5:68","nodeType":"VariableDeclaration","scope":20819,"src":"1348:19:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20730,"name":"string","nodeType":"ElementaryTypeName","src":"1348:6:68","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20733,"mutability":"mutable","name":"_symbol","nameLocation":"1392:7:68","nodeType":"VariableDeclaration","scope":20819,"src":"1378:21:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20732,"name":"string","nodeType":"ElementaryTypeName","src":"1378:6:68","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20735,"mutability":"mutable","name":"_assetA","nameLocation":"1418:7:68","nodeType":"VariableDeclaration","scope":20819,"src":"1410:15:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20734,"name":"address","nodeType":"ElementaryTypeName","src":"1410:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20737,"mutability":"mutable","name":"_yearnVaultAddress","nameLocation":"1444:18:68","nodeType":"VariableDeclaration","scope":20819,"src":"1436:26:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20736,"name":"address","nodeType":"ElementaryTypeName","src":"1436:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20739,"mutability":"mutable","name":"_assetB","nameLocation":"1481:7:68","nodeType":"VariableDeclaration","scope":20819,"src":"1473:15:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20738,"name":"address","nodeType":"ElementaryTypeName","src":"1473:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20741,"mutability":"mutable","name":"_registryAddress","nameLocation":"1507:16:68","nodeType":"VariableDeclaration","scope":20819,"src":"1499:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20740,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1337:193:68"},"returnParameters":{"id":20745,"nodeType":"ParameterList","parameters":[],"src":"1552:0:68"},"scope":21874,"src":"1318:819:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20911,"nodeType":"Block","src":"2419:585:68","statements":[{"expression":{"arguments":[{"expression":{"id":20840,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2445:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2449:6:68","memberName":"sender","nodeType":"MemberAccess","src":"2445:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20839,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"2430:14:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2430:26:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20843,"nodeType":"ExpressionStatement","src":"2430:26:68"},{"expression":{"arguments":[{"id":20845,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20821,"src":"2480:5:68","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":20846,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20823,"src":"2487:7:68","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":20844,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"2467:12:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":20847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2467:28:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20848,"nodeType":"ExpressionStatement","src":"2467:28:68"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20849,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"2506:22:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2506:24:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20851,"nodeType":"ExpressionStatement","src":"2506:24:68"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20852,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"2541:22:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2541:24:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20854,"nodeType":"ExpressionStatement","src":"2541:24:68"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20855,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"2576:15:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2576:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20857,"nodeType":"ExpressionStatement","src":"2576:17:68"},{"expression":{"id":20860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20858,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"2606:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20859,"name":"_assetA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20825,"src":"2618:7:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2606:19:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20861,"nodeType":"ExpressionStatement","src":"2606:19:68"},{"expression":{"id":20866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20862,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"2636:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20864,"name":"_yearnVaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20827,"src":"2662:18:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20863,"name":"IYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5531,"src":"2650:11:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYearnVault_$5531_$","typeString":"type(contract IYearnVault)"}},"id":20865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2650:31:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"src":"2636:45:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":20867,"nodeType":"ExpressionStatement","src":"2636:45:68"},{"expression":{"id":20870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20868,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"2692:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20869,"name":"_assetB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20829,"src":"2705:7:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2692:20:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20871,"nodeType":"ExpressionStatement","src":"2692:20:68"},{"expression":{"id":20876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20872,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"2723:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20874,"name":"_registryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20831,"src":"2753:16:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20873,"name":"IBaluniV1Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"2735:17:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Registry_$4909_$","typeString":"type(contract IBaluniV1Registry)"}},"id":20875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:35:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"src":"2723:47:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20877,"nodeType":"ExpressionStatement","src":"2723:47:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20879,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"2791:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":20882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2812:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":20881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2804:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20880,"name":"address","nodeType":"ElementaryTypeName","src":"2804:7:68","typeDescriptions":{}}},"id":20883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2804:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2791:23:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206173736574412061646472657373","id":20885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2816:24:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89","typeString":"literal_string \"Invalid assetA address\""},"value":"Invalid assetA address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89","typeString":"literal_string \"Invalid assetA address\""}],"id":20878,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2783:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2783:58:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20887,"nodeType":"ExpressionStatement","src":"2783:58:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":20891,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"2868:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}],"id":20890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2860:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20889,"name":"address","nodeType":"ElementaryTypeName","src":"2860:7:68","typeDescriptions":{}}},"id":20892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2860:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":20895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2892:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":20894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2884:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20893,"name":"address","nodeType":"ElementaryTypeName","src":"2884:7:68","typeDescriptions":{}}},"id":20896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2884:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2860:34:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420596561726e205661756c742061646472657373","id":20898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2896:29:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae","typeString":"literal_string \"Invalid Yearn Vault address\""},"value":"Invalid Yearn Vault address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae","typeString":"literal_string \"Invalid Yearn Vault address\""}],"id":20888,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2852:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2852:74:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20900,"nodeType":"ExpressionStatement","src":"2852:74:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20902,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"2945:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":20905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2967:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":20904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2959:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20903,"name":"address","nodeType":"ElementaryTypeName","src":"2959:7:68","typeDescriptions":{}}},"id":20906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2959:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2945:24:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206173736574422061646472657373","id":20908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2971:24:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec","typeString":"literal_string \"Invalid assetB address\""},"value":"Invalid assetB address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec","typeString":"literal_string \"Invalid assetB address\""}],"id":20901,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2937:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2937:59:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20910,"nodeType":"ExpressionStatement","src":"2937:59:68"}]},"functionSelector":"88696f62","id":20912,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":20836,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20833,"src":"2409:8:68","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":20837,"kind":"modifierInvocation","modifierName":{"id":20835,"name":"reinitializer","nameLocations":["2395:13:68"],"nodeType":"IdentifierPath","referencedDeclaration":349,"src":"2395:13:68"},"nodeType":"ModifierInvocation","src":"2395:23:68"}],"name":"reinitialize","nameLocation":"2154:12:68","nodeType":"FunctionDefinition","parameters":{"id":20834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20821,"mutability":"mutable","name":"_name","nameLocation":"2191:5:68","nodeType":"VariableDeclaration","scope":20912,"src":"2177:19:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20820,"name":"string","nodeType":"ElementaryTypeName","src":"2177:6:68","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20823,"mutability":"mutable","name":"_symbol","nameLocation":"2221:7:68","nodeType":"VariableDeclaration","scope":20912,"src":"2207:21:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20822,"name":"string","nodeType":"ElementaryTypeName","src":"2207:6:68","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20825,"mutability":"mutable","name":"_assetA","nameLocation":"2247:7:68","nodeType":"VariableDeclaration","scope":20912,"src":"2239:15:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20824,"name":"address","nodeType":"ElementaryTypeName","src":"2239:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20827,"mutability":"mutable","name":"_yearnVaultAddress","nameLocation":"2273:18:68","nodeType":"VariableDeclaration","scope":20912,"src":"2265:26:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20826,"name":"address","nodeType":"ElementaryTypeName","src":"2265:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20829,"mutability":"mutable","name":"_assetB","nameLocation":"2310:7:68","nodeType":"VariableDeclaration","scope":20912,"src":"2302:15:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20828,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20831,"mutability":"mutable","name":"_registryAddress","nameLocation":"2336:16:68","nodeType":"VariableDeclaration","scope":20912,"src":"2328:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20830,"name":"address","nodeType":"ElementaryTypeName","src":"2328:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20833,"mutability":"mutable","name":"_version","nameLocation":"2370:8:68","nodeType":"VariableDeclaration","scope":20912,"src":"2363:15:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":20832,"name":"uint64","nodeType":"ElementaryTypeName","src":"2363:6:68","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2166:219:68"},"returnParameters":{"id":20838,"nodeType":"ParameterList","parameters":[],"src":"2419:0:68"},"scope":21874,"src":"2145:859:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[584],"body":{"id":20920,"nodeType":"Block","src":"3094:2:68","statements":[]},"id":20921,"implemented":true,"kind":"function","modifiers":[{"id":20918,"kind":"modifierInvocation","modifierName":{"id":20917,"name":"onlyOwner","nameLocations":["3084:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"3084:9:68"},"nodeType":"ModifierInvocation","src":"3084:9:68"}],"name":"_authorizeUpgrade","nameLocation":"3021:17:68","nodeType":"FunctionDefinition","overrides":{"id":20916,"nodeType":"OverrideSpecifier","overrides":[],"src":"3075:8:68"},"parameters":{"id":20915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20914,"mutability":"mutable","name":"newImplementation","nameLocation":"3047:17:68","nodeType":"VariableDeclaration","scope":20921,"src":"3039:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20913,"name":"address","nodeType":"ElementaryTypeName","src":"3039:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3038:27:68"},"returnParameters":{"id":20919,"nodeType":"ParameterList","parameters":[],"src":"3094:0:68"},"scope":21874,"src":"3012:84:68","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[5242],"body":{"id":21101,"nodeType":"Block","src":"3194:1278:68","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20934,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20923,"src":"3213:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":20935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3222:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3213:10:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e74206d7573742062652067726561746572207468616e207a65726f","id":20937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3225:34:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""},"value":"Amount must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887","typeString":"literal_string \"Amount must be greater than zero\""}],"id":20933,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3205:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":20938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3205:55:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20939,"nodeType":"ExpressionStatement","src":"3205:55:68"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20940,"name":"_processInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21272,"src":"3273:16:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":20941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3273:18:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20942,"nodeType":"ExpressionStatement","src":"3273:18:68"},{"expression":{"arguments":[{"expression":{"id":20947,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3335:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3339:6:68","memberName":"sender","nodeType":"MemberAccess","src":"3335:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":20951,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3355:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":20950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3347:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20949,"name":"address","nodeType":"ElementaryTypeName","src":"3347:7:68","typeDescriptions":{}}},"id":20952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3347:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20953,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20923,"src":"3362:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20944,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"3311:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20943,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"3304:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3322:12:68","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2650,"src":"3304:30:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":20954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:65:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20955,"nodeType":"ExpressionStatement","src":"3304:65:68"},{"assignments":[20957],"declarations":[{"constant":false,"id":20957,"mutability":"mutable","name":"baluniRouter","nameLocation":"3390:12:68","nodeType":"VariableDeclaration","scope":21101,"src":"3382:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20956,"name":"address","nodeType":"ElementaryTypeName","src":"3382:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20961,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20958,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"3405:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3415:15:68","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":4838,"src":"3405:25:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3405:27:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3382:50:68"},{"assignments":[20963],"declarations":[{"constant":false,"id":20963,"mutability":"mutable","name":"treasury","nameLocation":"3451:8:68","nodeType":"VariableDeclaration","scope":21101,"src":"3443:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20962,"name":"address","nodeType":"ElementaryTypeName","src":"3443:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20967,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20964,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"3462:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":20965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3472:11:68","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"3462:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:23:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3443:42:68"},{"assignments":[20969],"declarations":[{"constant":false,"id":20969,"mutability":"mutable","name":"hairCut","nameLocation":"3503:7:68","nodeType":"VariableDeclaration","scope":21101,"src":"3498:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20968,"name":"uint","nodeType":"ElementaryTypeName","src":"3498:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20973,"initialValue":{"arguments":[{"id":20971,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20923,"src":"3522:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20970,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21504,"src":"3513:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":20972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3513:16:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3498:31:68"},{"assignments":[20975],"declarations":[{"constant":false,"id":20975,"mutability":"mutable","name":"hairCut2","nameLocation":"3545:8:68","nodeType":"VariableDeclaration","scope":21101,"src":"3540:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20974,"name":"uint","nodeType":"ElementaryTypeName","src":"3540:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20979,"initialValue":{"arguments":[{"id":20977,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20969,"src":"3565:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20976,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21504,"src":"3556:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":20978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3556:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3540:33:68"},{"expression":{"arguments":[{"id":20984,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20957,"src":"3613:12:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20985,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20969,"src":"3627:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20986,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20975,"src":"3637:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3627:18:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20981,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"3593:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20980,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"3586:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3586:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3604:8:68","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"3586:26:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3586:60:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20989,"nodeType":"ExpressionStatement","src":"3586:60:68"},{"expression":{"arguments":[{"id":20994,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20963,"src":"3684:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20995,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20975,"src":"3694:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20991,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"3664:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20990,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"3657:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":20992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3657:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":20993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3675:8:68","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"3657:26:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":20996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3657:46:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20997,"nodeType":"ExpressionStatement","src":"3657:46:68"},{"assignments":[20999],"declarations":[{"constant":false,"id":20999,"mutability":"mutable","name":"amountAfter","nameLocation":"3724:11:68","nodeType":"VariableDeclaration","scope":21101,"src":"3716:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20998,"name":"uint256","nodeType":"ElementaryTypeName","src":"3716:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21003,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21000,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20923,"src":"3738:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21001,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20969,"src":"3747:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3738:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3716:38:68"},{"expression":{"arguments":[{"arguments":[{"id":21010,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"3801:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}],"id":21009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3793:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21008,"name":"address","nodeType":"ElementaryTypeName","src":"3793:7:68","typeDescriptions":{}}},"id":21011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21012,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"3815:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21005,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"3774:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21004,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"3767:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3767:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3785:7:68","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"3767:25:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3767:60:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21014,"nodeType":"ExpressionStatement","src":"3767:60:68"},{"expression":{"arguments":[{"id":21018,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"3858:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21021,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3879:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3871:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21019,"name":"address","nodeType":"ElementaryTypeName","src":"3871:7:68","typeDescriptions":{}}},"id":21022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3871:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21015,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"3838:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3850:7:68","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5497,"src":"3838:19:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":21023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:47:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21024,"nodeType":"ExpressionStatement","src":"3838:47:68"},{"assignments":[21026],"declarations":[{"constant":false,"id":21026,"mutability":"mutable","name":"baseDecimal","nameLocation":"3904:11:68","nodeType":"VariableDeclaration","scope":21101,"src":"3898:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21025,"name":"uint8","nodeType":"ElementaryTypeName","src":"3898:5:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":21032,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":21028,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"3933:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21027,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3918:14:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":21029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3918:25:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":21030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3944:8:68","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"3918:34:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":21031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3918:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3898:56:68"},{"assignments":[21034],"declarations":[{"constant":false,"id":21034,"mutability":"mutable","name":"yearnDecimal","nameLocation":"3971:12:68","nodeType":"VariableDeclaration","scope":21101,"src":"3965:18:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21033,"name":"uint8","nodeType":"ElementaryTypeName","src":"3965:5:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":21043,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":21038,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"4009:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}],"id":21037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4001:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21036,"name":"address","nodeType":"ElementaryTypeName","src":"4001:7:68","typeDescriptions":{}}},"id":21039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4001:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21035,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"3986:14:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":21040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":21041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4023:8:68","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"3986:45:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":21042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:47:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3965:68:68"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21044,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21026,"src":"4050:11:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21045,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21034,"src":"4064:12:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4050:26:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21070,"nodeType":"Block","src":"4173:89:68","statements":[{"expression":{"id":21068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21059,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"4188:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21060,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"4202:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4216:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21062,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21034,"src":"4223:12:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21063,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21026,"src":"4238:11:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4223:26:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21065,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4222:28:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4216:34:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4202:48:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4188:62:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21069,"nodeType":"ExpressionStatement","src":"4188:62:68"}]},"id":21071,"nodeType":"IfStatement","src":"4046:216:68","trueBody":{"id":21058,"nodeType":"Block","src":"4078:89:68","statements":[{"expression":{"id":21056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21047,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"4093:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21048,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"4107:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4121:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21050,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21026,"src":"4128:11:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21051,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21034,"src":"4142:12:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4128:26:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21053,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4127:28:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4121:34:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4107:48:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4093:62:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21057,"nodeType":"ExpressionStatement","src":"4093:62:68"}]}},{"assignments":[21073],"declarations":[{"constant":false,"id":21073,"mutability":"mutable","name":"amountScaled","nameLocation":"4282:12:68","nodeType":"VariableDeclaration","scope":21101,"src":"4274:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21072,"name":"uint256","nodeType":"ElementaryTypeName","src":"4274:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21082,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21074,"name":"amountAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"4297:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4311:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":21076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4318:2:68","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21077,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21034,"src":"4323:12:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4318:17:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21079,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4317:19:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4311:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4297:39:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4274:62:68"},{"expression":{"arguments":[{"id":21084,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20925,"src":"4355:2:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21085,"name":"amountScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21073,"src":"4359:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21083,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"4349:5:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4349:23:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21087,"nodeType":"ExpressionStatement","src":"4349:23:68"},{"expression":{"id":21099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21088,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"4385:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":21095,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4457:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4449:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21093,"name":"address","nodeType":"ElementaryTypeName","src":"4449:7:68","typeDescriptions":{}}},"id":21096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4449:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21091,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"4427:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4439:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5470,"src":"4427:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4427:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21089,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"4399:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4411:15:68","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":5509,"src":"4399:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4399:65:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4385:79:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21100,"nodeType":"ExpressionStatement","src":"4385:79:68"}]},"functionSelector":"6e553f65","id":21102,"implemented":true,"kind":"function","modifiers":[{"id":20929,"kind":"modifierInvocation","modifierName":{"id":20928,"name":"nonReentrant","nameLocations":["3167:12:68"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"3167:12:68"},"nodeType":"ModifierInvocation","src":"3167:12:68"},{"id":20931,"kind":"modifierInvocation","modifierName":{"id":20930,"name":"whenNotPaused","nameLocations":["3180:13:68"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"3180:13:68"},"nodeType":"ModifierInvocation","src":"3180:13:68"}],"name":"deposit","nameLocation":"3113:7:68","nodeType":"FunctionDefinition","overrides":{"id":20927,"nodeType":"OverrideSpecifier","overrides":[],"src":"3158:8:68"},"parameters":{"id":20926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20923,"mutability":"mutable","name":"amount","nameLocation":"3129:6:68","nodeType":"VariableDeclaration","scope":21102,"src":"3121:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20922,"name":"uint256","nodeType":"ElementaryTypeName","src":"3121:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20925,"mutability":"mutable","name":"to","nameLocation":"3145:2:68","nodeType":"VariableDeclaration","scope":21102,"src":"3137:10:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20924,"name":"address","nodeType":"ElementaryTypeName","src":"3137:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3120:28:68"},"returnParameters":{"id":20932,"nodeType":"ParameterList","parameters":[],"src":"3194:0:68"},"scope":21874,"src":"3104:1368:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21204,"nodeType":"Block","src":"4505:791:68","statements":[{"assignments":[21106],"declarations":[{"constant":false,"id":21106,"mutability":"mutable","name":"totalAssets","nameLocation":"4524:11:68","nodeType":"VariableDeclaration","scope":21204,"src":"4516:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21105,"name":"uint256","nodeType":"ElementaryTypeName","src":"4516:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21117,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":21113,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4596:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4588:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21111,"name":"address","nodeType":"ElementaryTypeName","src":"4588:7:68","typeDescriptions":{}}},"id":21114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4588:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21109,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"4566:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4578:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5470,"src":"4566:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4566:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21107,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"4538:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4550:15:68","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":5509,"src":"4538:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4538:65:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4516:87:68"},{"assignments":[21119],"declarations":[{"constant":false,"id":21119,"mutability":"mutable","name":"interest","nameLocation":"4622:8:68","nodeType":"VariableDeclaration","scope":21204,"src":"4614:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21118,"name":"uint256","nodeType":"ElementaryTypeName","src":"4614:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21128,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21120,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21106,"src":"4633:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21121,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"4647:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4633:25:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4689:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4633:57:68","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21123,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21106,"src":"4661:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21124,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"4675:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4661:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4614:76:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21130,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21119,"src":"4709:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4720:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4709:12:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631795661756c743a204e6f20696e74657265737420617661696c61626c65","id":21133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4723:39:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_5a2aae2d17adf319835d1d5e7cf18b37e3e2f2096577dc0ce875faec48f9a25a","typeString":"literal_string \"BaluniV1yVault: No interest available\""},"value":"BaluniV1yVault: No interest available"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a2aae2d17adf319835d1d5e7cf18b37e3e2f2096577dc0ce875faec48f9a25a","typeString":"literal_string \"BaluniV1yVault: No interest available\""}],"id":21129,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4701:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4701:62:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21135,"nodeType":"ExpressionStatement","src":"4701:62:68"},{"assignments":[21137],"declarations":[{"constant":false,"id":21137,"mutability":"mutable","name":"sharesToRedeem","nameLocation":"4784:14:68","nodeType":"VariableDeclaration","scope":21204,"src":"4776:22:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21136,"name":"uint256","nodeType":"ElementaryTypeName","src":"4776:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21142,"initialValue":{"arguments":[{"id":21140,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21119,"src":"4829:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21138,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"4801:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4813:15:68","memberName":"convertToShares","nodeType":"MemberAccess","referencedDeclaration":5516,"src":"4801:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4801:37:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4776:62:68"},{"assignments":[21144],"declarations":[{"constant":false,"id":21144,"mutability":"mutable","name":"amountOut","nameLocation":"4857:9:68","nodeType":"VariableDeclaration","scope":21204,"src":"4849:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21143,"name":"uint256","nodeType":"ElementaryTypeName","src":"4849:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21157,"initialValue":{"arguments":[{"id":21147,"name":"sharesToRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21137,"src":"4888:14:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21150,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4912:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4904:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21148,"name":"address","nodeType":"ElementaryTypeName","src":"4904:7:68","typeDescriptions":{}}},"id":21151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4904:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":21154,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4927:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4919:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21152,"name":"address","nodeType":"ElementaryTypeName","src":"4919:7:68","typeDescriptions":{}}},"id":21155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21145,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"4869:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4881:6:68","memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":5488,"src":"4869:18:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":21156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4869:64:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4849:84:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21159,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21144,"src":"4954:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4954:13:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"42616c756e695631795661756c743a2052656465656d204661696c6564","id":21162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4969:31:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_df2ebb4d199325e76f7966b4aa783d4644729570ebb2dcefef37eefd936f4949","typeString":"literal_string \"BaluniV1yVault: Redeem Failed\""},"value":"BaluniV1yVault: Redeem Failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df2ebb4d199325e76f7966b4aa783d4644729570ebb2dcefef37eefd936f4949","typeString":"literal_string \"BaluniV1yVault: Redeem Failed\""}],"id":21158,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4946:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4946:55:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21164,"nodeType":"ExpressionStatement","src":"4946:55:68"},{"assignments":[21167],"declarations":[{"constant":false,"id":21167,"mutability":"mutable","name":"swapper","nameLocation":"5031:7:68","nodeType":"VariableDeclaration","scope":21204,"src":"5014:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"},"typeName":{"id":21166,"nodeType":"UserDefinedTypeName","pathNode":{"id":21165,"name":"IBaluniV1Swapper","nameLocations":["5014:16:68"],"nodeType":"IdentifierPath","referencedDeclaration":5208,"src":"5014:16:68"},"referencedDeclaration":5208,"src":"5014:16:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"visibility":"internal"}],"id":21173,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21169,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"5058:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5068:16:68","memberName":"getBaluniSwapper","nodeType":"MemberAccess","referencedDeclaration":4803,"src":"5058:26:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5058:28:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21168,"name":"IBaluniV1Swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"5041:16:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Swapper_$5208_$","typeString":"type(contract IBaluniV1Swapper)"}},"id":21172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5041:46:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"nodeType":"VariableDeclarationStatement","src":"5014:73:68"},{"expression":{"arguments":[{"arguments":[{"id":21180,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21167,"src":"5134:7:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}],"id":21179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5126:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21178,"name":"address","nodeType":"ElementaryTypeName","src":"5126:7:68","typeDescriptions":{}}},"id":21181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5126:16:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21182,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21144,"src":"5144:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21175,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"5107:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21174,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"5100:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5100:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5118:7:68","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2638,"src":"5100:25:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5100:54:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21184,"nodeType":"ExpressionStatement","src":"5100:54:68"},{"expression":{"arguments":[{"id":21188,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"5186:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21189,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"5197:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21190,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21144,"src":"5209:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21193,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5228:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5220:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21191,"name":"address","nodeType":"ElementaryTypeName","src":"5220:7:68","typeDescriptions":{}}},"id":21194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5220:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21185,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21167,"src":"5167:7:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Swapper_$5208","typeString":"contract IBaluniV1Swapper"}},"id":21187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5175:10:68","memberName":"singleSwap","nodeType":"MemberAccess","referencedDeclaration":5192,"src":"5167:18:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,address) external returns (uint256)"}},"id":21195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5167:67:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21196,"nodeType":"ExpressionStatement","src":"5167:67:68"},{"eventCall":{"arguments":[{"expression":{"id":21198,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5256:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5260:6:68","memberName":"sender","nodeType":"MemberAccess","src":"5256:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21200,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21144,"src":"5268:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21201,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21119,"src":"5279:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21197,"name":"Buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20729,"src":"5252:3:68","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":21202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5252:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21203,"nodeType":"EmitStatement","src":"5247:41:68"}]},"id":21205,"implemented":true,"kind":"function","modifiers":[],"name":"_buy","nameLocation":"4489:4:68","nodeType":"FunctionDefinition","parameters":{"id":21103,"nodeType":"ParameterList","parameters":[],"src":"4493:2:68"},"returnParameters":{"id":21104,"nodeType":"ParameterList","parameters":[],"src":"4505:0:68"},"scope":21874,"src":"4480:816:68","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[5252],"body":{"id":21216,"nodeType":"Block","src":"5364:25:68","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21213,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21205,"src":"5375:4:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":21214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:6:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21215,"nodeType":"ExpressionStatement","src":"5375:6:68"}]},"functionSelector":"a6f2ae3a","id":21217,"implemented":true,"kind":"function","modifiers":[{"id":21209,"kind":"modifierInvocation","modifierName":{"id":21208,"name":"nonReentrant","nameLocations":["5337:12:68"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"5337:12:68"},"nodeType":"ModifierInvocation","src":"5337:12:68"},{"id":21211,"kind":"modifierInvocation","modifierName":{"id":21210,"name":"whenNotPaused","nameLocations":["5350:13:68"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"5350:13:68"},"nodeType":"ModifierInvocation","src":"5350:13:68"}],"name":"buy","nameLocation":"5313:3:68","nodeType":"FunctionDefinition","overrides":{"id":21207,"nodeType":"OverrideSpecifier","overrides":[],"src":"5328:8:68"},"parameters":{"id":21206,"nodeType":"ParameterList","parameters":[],"src":"5316:2:68"},"returnParameters":{"id":21212,"nodeType":"ParameterList","parameters":[],"src":"5364:0:68"},"scope":21874,"src":"5304:85:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21271,"nodeType":"Block","src":"5434:376:68","statements":[{"assignments":[21221],"declarations":[{"constant":false,"id":21221,"mutability":"mutable","name":"totalAssets","nameLocation":"5453:11:68","nodeType":"VariableDeclaration","scope":21271,"src":"5445:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21220,"name":"uint256","nodeType":"ElementaryTypeName","src":"5445:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21232,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":21228,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5525:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5517:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21226,"name":"address","nodeType":"ElementaryTypeName","src":"5517:7:68","typeDescriptions":{}}},"id":21229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5517:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21224,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"5495:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5507:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5470,"src":"5495:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5495:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21222,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"5467:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5479:15:68","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":5509,"src":"5467:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5467:65:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5445:87:68"},{"assignments":[21234],"declarations":[{"constant":false,"id":21234,"mutability":"mutable","name":"interest","nameLocation":"5551:8:68","nodeType":"VariableDeclaration","scope":21271,"src":"5543:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21233,"name":"uint256","nodeType":"ElementaryTypeName","src":"5543:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21243,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21235,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21221,"src":"5562:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21236,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"5576:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5562:25:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5618:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5562:57:68","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21238,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21221,"src":"5590:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21239,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"5604:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5590:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5543:76:68"},{"assignments":[21245],"declarations":[{"constant":false,"id":21245,"mutability":"mutable","name":"baseDecimal","nameLocation":"5636:11:68","nodeType":"VariableDeclaration","scope":21271,"src":"5630:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21244,"name":"uint8","nodeType":"ElementaryTypeName","src":"5630:5:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":21251,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":21247,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"5665:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21246,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"5650:14:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":21248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5650:25:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":21249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5676:8:68","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"5650:34:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":21250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5650:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5630:56:68"},{"assignments":[21253],"declarations":[{"constant":false,"id":21253,"mutability":"mutable","name":"limit","nameLocation":"5702:5:68","nodeType":"VariableDeclaration","scope":21271,"src":"5697:10:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21252,"name":"uint","nodeType":"ElementaryTypeName","src":"5697:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21262,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":21254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5710:1:68","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5714:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21256,"name":"baseDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21245,"src":"5721:11:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":21257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5735:1:68","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5721:15:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21259,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5720:17:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5714:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5710:27:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5697:40:68"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21263,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21234,"src":"5752:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21264,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21253,"src":"5763:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5752:16:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21270,"nodeType":"IfStatement","src":"5748:55:68","trueBody":{"id":21269,"nodeType":"Block","src":"5770:33:68","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21266,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21205,"src":"5785:4:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":21267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5785:6:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21268,"nodeType":"ExpressionStatement","src":"5785:6:68"}]}}]},"id":21272,"implemented":true,"kind":"function","modifiers":[],"name":"_processInterest","nameLocation":"5406:16:68","nodeType":"FunctionDefinition","parameters":{"id":21218,"nodeType":"ParameterList","parameters":[],"src":"5422:2:68"},"returnParameters":{"id":21219,"nodeType":"ParameterList","parameters":[],"src":"5434:0:68"},"scope":21874,"src":"5397:413:68","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[5255],"body":{"id":21281,"nodeType":"Block","src":"5863:27:68","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21278,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1444,"src":"5874:6:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":21279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5874:8:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21280,"nodeType":"ExpressionStatement","src":"5874:8:68"}]},"functionSelector":"8456cb59","id":21282,"implemented":true,"kind":"function","modifiers":[{"id":21276,"kind":"modifierInvocation","modifierName":{"id":21275,"name":"onlyOwner","nameLocations":["5853:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5853:9:68"},"nodeType":"ModifierInvocation","src":"5853:9:68"}],"name":"pause","nameLocation":"5827:5:68","nodeType":"FunctionDefinition","overrides":{"id":21274,"nodeType":"OverrideSpecifier","overrides":[],"src":"5844:8:68"},"parameters":{"id":21273,"nodeType":"ParameterList","parameters":[],"src":"5832:2:68"},"returnParameters":{"id":21277,"nodeType":"ParameterList","parameters":[],"src":"5863:0:68"},"scope":21874,"src":"5818:72:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5258],"body":{"id":21291,"nodeType":"Block","src":"5945:29:68","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21288,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"5956:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":21289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5956:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21290,"nodeType":"ExpressionStatement","src":"5956:10:68"}]},"functionSelector":"3f4ba83a","id":21292,"implemented":true,"kind":"function","modifiers":[{"id":21286,"kind":"modifierInvocation","modifierName":{"id":21285,"name":"onlyOwner","nameLocations":["5935:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":89,"src":"5935:9:68"},"nodeType":"ModifierInvocation","src":"5935:9:68"}],"name":"unpause","nameLocation":"5907:7:68","nodeType":"FunctionDefinition","overrides":{"id":21284,"nodeType":"OverrideSpecifier","overrides":[],"src":"5926:8:68"},"parameters":{"id":21283,"nodeType":"ParameterList","parameters":[],"src":"5914:2:68"},"returnParameters":{"id":21287,"nodeType":"ParameterList","parameters":[],"src":"5945:0:68"},"scope":21874,"src":"5898:76:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5263],"body":{"id":21396,"nodeType":"Block","src":"6047:807:68","statements":[{"assignments":[21300],"declarations":[{"constant":false,"id":21300,"mutability":"mutable","name":"oracle","nameLocation":"6074:6:68","nodeType":"VariableDeclaration","scope":21396,"src":"6058:22:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"},"typeName":{"id":21299,"nodeType":"UserDefinedTypeName","pathNode":{"id":21298,"name":"IBaluniV1Oracle","nameLocations":["6058:15:68"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"6058:15:68"},"referencedDeclaration":4240,"src":"6058:15:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"visibility":"internal"}],"id":21306,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21302,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"6099:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6109:15:68","memberName":"getBaluniOracle","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"6099:25:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6099:27:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21301,"name":"IBaluniV1Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"6083:15:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaluniV1Oracle_$4240_$","typeString":"type(contract IBaluniV1Oracle)"}},"id":21305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6083:44:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"nodeType":"VariableDeclarationStatement","src":"6058:69:68"},{"assignments":[21308],"declarations":[{"constant":false,"id":21308,"mutability":"mutable","name":"USDC","nameLocation":"6146:4:68","nodeType":"VariableDeclaration","scope":21396,"src":"6138:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21307,"name":"address","nodeType":"ElementaryTypeName","src":"6138:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":21312,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21309,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"6153:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6163:7:68","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"6153:17:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6153:19:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6138:34:68"},{"assignments":[21314],"declarations":[{"constant":false,"id":21314,"mutability":"mutable","name":"valuation","nameLocation":"6191:9:68","nodeType":"VariableDeclaration","scope":21396,"src":"6183:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21313,"name":"uint256","nodeType":"ElementaryTypeName","src":"6183:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21316,"initialValue":{"hexValue":"30","id":21315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6203:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6183:21:68"},{"assignments":[21318],"declarations":[{"constant":false,"id":21318,"mutability":"mutable","name":"yearnBalance","nameLocation":"6222:12:68","nodeType":"VariableDeclaration","scope":21396,"src":"6217:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21317,"name":"uint","nodeType":"ElementaryTypeName","src":"6217:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21326,"initialValue":{"arguments":[{"arguments":[{"id":21323,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6267:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6259:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21321,"name":"address","nodeType":"ElementaryTypeName","src":"6259:7:68","typeDescriptions":{}}},"id":21324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6259:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21319,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"6237:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6249:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5470,"src":"6237:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6237:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6217:56:68"},{"assignments":[21328],"declarations":[{"constant":false,"id":21328,"mutability":"mutable","name":"yearnBalanceConvert","nameLocation":"6289:19:68","nodeType":"VariableDeclaration","scope":21396,"src":"6284:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21327,"name":"uint","nodeType":"ElementaryTypeName","src":"6284:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21333,"initialValue":{"arguments":[{"id":21331,"name":"yearnBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21318,"src":"6339:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21329,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"6311:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6323:15:68","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":5509,"src":"6311:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6311:41:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6284:68:68"},{"assignments":[21335],"declarations":[{"constant":false,"id":21335,"mutability":"mutable","name":"balanceQuote","nameLocation":"6368:12:68","nodeType":"VariableDeclaration","scope":21396,"src":"6363:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21334,"name":"uint","nodeType":"ElementaryTypeName","src":"6363:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21345,"initialValue":{"arguments":[{"arguments":[{"id":21342,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6420:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6412:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21340,"name":"address","nodeType":"ElementaryTypeName","src":"6412:7:68","typeDescriptions":{}}},"id":21343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6412:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":21337,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"6390:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21336,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"6383:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6383:18:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6402:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"6383:28:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6383:43:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6363:63:68"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":21348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21346,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"6443:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":21347,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21308,"src":"6456:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6443:17:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21358,"nodeType":"IfStatement","src":"6439:88:68","trueBody":{"expression":{"id":21356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21349,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21314,"src":"6462:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":21352,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"6490:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21353,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21308,"src":"6501:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21354,"name":"yearnBalanceConvert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21328,"src":"6507:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21350,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21300,"src":"6475:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":21351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6482:7:68","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":4228,"src":"6475:14:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":21355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6475:52:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6462:65:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21357,"nodeType":"ExpressionStatement","src":"6462:65:68"}},{"expression":{"id":21366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21359,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21314,"src":"6538:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":21362,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"6566:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21363,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"6578:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21364,"name":"balanceQuote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21335,"src":"6589:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21360,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21300,"src":"6551:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":21361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6558:7:68","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":4228,"src":"6551:14:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":21365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6551:51:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6538:64:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21367,"nodeType":"ExpressionStatement","src":"6538:64:68"},{"expression":{"id":21370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21368,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21314,"src":"6613:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":21369,"name":"yearnBalanceConvert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21328,"src":"6626:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6613:32:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21371,"nodeType":"ExpressionStatement","src":"6613:32:68"},{"assignments":[21373],"declarations":[{"constant":false,"id":21373,"mutability":"mutable","name":"interest","nameLocation":"6666:8:68","nodeType":"VariableDeclaration","scope":21396,"src":"6658:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21372,"name":"uint256","nodeType":"ElementaryTypeName","src":"6658:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21376,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":21374,"name":"interestEarned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21537,"src":"6677:14:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6677:16:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6658:35:68"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":21379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21377,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"6710:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":21378,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21308,"src":"6723:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6710:17:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21389,"nodeType":"IfStatement","src":"6706:77:68","trueBody":{"expression":{"id":21387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21380,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21314,"src":"6729:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":21383,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"6757:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21384,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21308,"src":"6768:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21385,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21373,"src":"6774:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21381,"name":"oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21300,"src":"6742:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Oracle_$4240","typeString":"contract IBaluniV1Oracle"}},"id":21382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6749:7:68","memberName":"convert","nodeType":"MemberAccess","referencedDeclaration":4228,"src":"6742:14:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view external returns (uint256)"}},"id":21386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6742:41:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6729:54:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21388,"nodeType":"ExpressionStatement","src":"6729:54:68"}},{"expression":{"id":21392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21390,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21314,"src":"6796:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":21391,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21373,"src":"6809:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6796:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21393,"nodeType":"ExpressionStatement","src":"6796:21:68"},{"expression":{"id":21394,"name":"valuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21314,"src":"6837:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21297,"id":21395,"nodeType":"Return","src":"6830:16:68"}]},"functionSelector":"295b9300","id":21397,"implemented":true,"kind":"function","modifiers":[],"name":"totalValuation","nameLocation":"5991:14:68","nodeType":"FunctionDefinition","overrides":{"id":21294,"nodeType":"OverrideSpecifier","overrides":[],"src":"6020:8:68"},"parameters":{"id":21293,"nodeType":"ParameterList","parameters":[],"src":"6005:2:68"},"returnParameters":{"id":21297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21397,"src":"6038:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21295,"name":"uint256","nodeType":"ElementaryTypeName","src":"6038:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6037:9:68"},"scope":21874,"src":"5982:872:68","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[5268],"body":{"id":21452,"nodeType":"Block","src":"6924:380:68","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21403,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"6939:11:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6939:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":21405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6956:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6939:18:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21409,"nodeType":"IfStatement","src":"6935:32:68","trueBody":{"expression":{"hexValue":"30","id":21407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6966:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":21402,"id":21408,"nodeType":"Return","src":"6959:8:68"}},{"assignments":[21411],"declarations":[{"constant":false,"id":21411,"mutability":"mutable","name":"USDC","nameLocation":"6986:4:68","nodeType":"VariableDeclaration","scope":21452,"src":"6978:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21410,"name":"address","nodeType":"ElementaryTypeName","src":"6978:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":21415,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21412,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"6993:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7003:7:68","memberName":"getUSDC","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"6993:17:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6993:19:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6978:34:68"},{"assignments":[21417],"declarations":[{"constant":false,"id":21417,"mutability":"mutable","name":"decimals","nameLocation":"7029:8:68","nodeType":"VariableDeclaration","scope":21452,"src":"7023:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21416,"name":"uint8","nodeType":"ElementaryTypeName","src":"7023:5:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":21423,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":21419,"name":"USDC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21411,"src":"7055:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21418,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"7040:14:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":21420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7040:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":21421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7061:8:68","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"7040:29:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":21422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7040:31:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7023:48:68"},{"assignments":[21425],"declarations":[{"constant":false,"id":21425,"mutability":"mutable","name":"factor","nameLocation":"7090:6:68","nodeType":"VariableDeclaration","scope":21452,"src":"7082:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21424,"name":"uint256","nodeType":"ElementaryTypeName","src":"7082:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21432,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7099:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":21427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7106:2:68","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21428,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21417,"src":"7111:8:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7106:13:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21430,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7105:15:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7099:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7082:38:68"},{"assignments":[21434],"declarations":[{"constant":false,"id":21434,"mutability":"mutable","name":"valuationScaledUp","nameLocation":"7139:17:68","nodeType":"VariableDeclaration","scope":21452,"src":"7131:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21433,"name":"uint256","nodeType":"ElementaryTypeName","src":"7131:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21439,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21435,"name":"totalValuation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"7159:14:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7159:16:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":21437,"name":"factor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21425,"src":"7178:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7159:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7131:53:68"},{"assignments":[21441],"declarations":[{"constant":false,"id":21441,"mutability":"mutable","name":"unitPriceScaled","nameLocation":"7203:15:68","nodeType":"VariableDeclaration","scope":21452,"src":"7195:23:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21440,"name":"uint256","nodeType":"ElementaryTypeName","src":"7195:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21449,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21442,"name":"valuationScaledUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21434,"src":"7222:17:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":21443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7242:4:68","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"7222:24:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21445,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7221:26:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21446,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"7250:11:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7250:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7221:42:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7195:68:68"},{"expression":{"id":21450,"name":"unitPriceScaled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21441,"src":"7281:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21402,"id":21451,"nodeType":"Return","src":"7274:22:68"}]},"functionSelector":"e73faa2d","id":21453,"implemented":true,"kind":"function","modifiers":[],"name":"unitPrice","nameLocation":"6871:9:68","nodeType":"FunctionDefinition","overrides":{"id":21399,"nodeType":"OverrideSpecifier","overrides":[],"src":"6897:8:68"},"parameters":{"id":21398,"nodeType":"ParameterList","parameters":[],"src":"6880:2:68"},"returnParameters":{"id":21402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21401,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21453,"src":"6915:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21400,"name":"uint256","nodeType":"ElementaryTypeName","src":"6915:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6914:9:68"},"scope":21874,"src":"6862:442:68","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[5230],"body":{"id":21464,"nodeType":"Block","src":"7373:44:68","statements":[{"expression":{"arguments":[{"id":21461,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"7399:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}],"id":21460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7391:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21459,"name":"address","nodeType":"ElementaryTypeName","src":"7391:7:68","typeDescriptions":{}}},"id":21462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7391:18:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":21458,"id":21463,"nodeType":"Return","src":"7384:25:68"}]},"functionSelector":"7b103999","id":21465,"implemented":true,"kind":"function","modifiers":[],"name":"registry","nameLocation":"7321:8:68","nodeType":"FunctionDefinition","overrides":{"id":21455,"nodeType":"OverrideSpecifier","overrides":[],"src":"7346:8:68"},"parameters":{"id":21454,"nodeType":"ParameterList","parameters":[],"src":"7329:2:68"},"returnParameters":{"id":21458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21465,"src":"7364:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21456,"name":"address","nodeType":"ElementaryTypeName","src":"7364:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7363:9:68"},"scope":21874,"src":"7312:105:68","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[5220],"body":{"id":21476,"nodeType":"Block","src":"7488:46:68","statements":[{"expression":{"arguments":[{"id":21473,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"7514:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}],"id":21472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7506:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21471,"name":"address","nodeType":"ElementaryTypeName","src":"7506:7:68","typeDescriptions":{}}},"id":21474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7506:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":21470,"id":21475,"nodeType":"Return","src":"7499:27:68"}]},"functionSelector":"9db5df46","id":21477,"implemented":true,"kind":"function","modifiers":[],"name":"yearnVault","nameLocation":"7434:10:68","nodeType":"FunctionDefinition","overrides":{"id":21467,"nodeType":"OverrideSpecifier","overrides":[],"src":"7461:8:68"},"parameters":{"id":21466,"nodeType":"ParameterList","parameters":[],"src":"7444:2:68"},"returnParameters":{"id":21470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21477,"src":"7479:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21468,"name":"address","nodeType":"ElementaryTypeName","src":"7479:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7478:9:68"},"scope":21874,"src":"7425:109:68","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21503,"nodeType":"Block","src":"7608:163:68","statements":[{"assignments":[21485],"declarations":[{"constant":false,"id":21485,"mutability":"mutable","name":"_BPS_FEE","nameLocation":"7627:8:68","nodeType":"VariableDeclaration","scope":21503,"src":"7619:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21484,"name":"uint256","nodeType":"ElementaryTypeName","src":"7619:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21489,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21486,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"7638:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7648:10:68","memberName":"getBPS_FEE","nodeType":"MemberAccess","referencedDeclaration":4863,"src":"7638:20:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":21488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7638:22:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7619:41:68"},{"assignments":[21491],"declarations":[{"constant":false,"id":21491,"mutability":"mutable","name":"_BPS_BASE","nameLocation":"7679:9:68","nodeType":"VariableDeclaration","scope":21503,"src":"7671:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21490,"name":"uint256","nodeType":"ElementaryTypeName","src":"7671:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21495,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21492,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"7691:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7701:11:68","memberName":"getBPS_BASE","nodeType":"MemberAccess","referencedDeclaration":4873,"src":"7691:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":21494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7691:23:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7671:43:68"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21496,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21479,"src":"7733:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":21497,"name":"_BPS_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21485,"src":"7742:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7733:17:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7732:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":21500,"name":"_BPS_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21491,"src":"7754:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7732:31:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21483,"id":21502,"nodeType":"Return","src":"7725:38:68"}]},"id":21504,"implemented":true,"kind":"function","modifiers":[],"name":"_haircut","nameLocation":"7551:8:68","nodeType":"FunctionDefinition","parameters":{"id":21480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21479,"mutability":"mutable","name":"amount","nameLocation":"7568:6:68","nodeType":"VariableDeclaration","scope":21504,"src":"7560:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21478,"name":"uint256","nodeType":"ElementaryTypeName","src":"7560:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7559:16:68"},"returnParameters":{"id":21483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21482,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21504,"src":"7599:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21481,"name":"uint256","nodeType":"ElementaryTypeName","src":"7599:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7598:9:68"},"scope":21874,"src":"7542:229:68","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[5273],"body":{"id":21536,"nodeType":"Block","src":"7844:219:68","statements":[{"assignments":[21511],"declarations":[{"constant":false,"id":21511,"mutability":"mutable","name":"totalAssets","nameLocation":"7863:11:68","nodeType":"VariableDeclaration","scope":21536,"src":"7855:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21510,"name":"uint256","nodeType":"ElementaryTypeName","src":"7855:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21522,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":21518,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7935:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7927:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21516,"name":"address","nodeType":"ElementaryTypeName","src":"7927:7:68","typeDescriptions":{}}},"id":21519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7927:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21514,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"7905:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5470,"src":"7905:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7905:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21512,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"7877:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7889:15:68","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":5509,"src":"7877:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7877:65:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7855:87:68"},{"assignments":[21524],"declarations":[{"constant":false,"id":21524,"mutability":"mutable","name":"interest","nameLocation":"7961:8:68","nodeType":"VariableDeclaration","scope":21536,"src":"7953:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21523,"name":"uint256","nodeType":"ElementaryTypeName","src":"7953:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21533,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21525,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21511,"src":"7972:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21526,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"7986:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7972:25:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8028:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7972:57:68","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21528,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21511,"src":"8000:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21529,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"8014:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8000:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7953:76:68"},{"expression":{"id":21534,"name":"interest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21524,"src":"8047:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21509,"id":21535,"nodeType":"Return","src":"8040:15:68"}]},"functionSelector":"374261ab","id":21537,"implemented":true,"kind":"function","modifiers":[],"name":"interestEarned","nameLocation":"7788:14:68","nodeType":"FunctionDefinition","overrides":{"id":21506,"nodeType":"OverrideSpecifier","overrides":[],"src":"7817:8:68"},"parameters":{"id":21505,"nodeType":"ParameterList","parameters":[],"src":"7802:2:68"},"returnParameters":{"id":21509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21508,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21537,"src":"7835:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21507,"name":"uint256","nodeType":"ElementaryTypeName","src":"7835:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7834:9:68"},"scope":21874,"src":"7779:284:68","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[5249],"body":{"id":21804,"nodeType":"Block","src":"8162:1957:68","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21550,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21539,"src":"8181:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8190:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8181:10:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"536861726573206d7573742062652067726561746572207468616e207a65726f","id":21553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8193:34:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6","typeString":"literal_string \"Shares must be greater than zero\""},"value":"Shares must be greater than zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6","typeString":"literal_string \"Shares must be greater than zero\""}],"id":21549,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8173:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8173:55:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21555,"nodeType":"ExpressionStatement","src":"8173:55:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":21558,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8257:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8261:6:68","memberName":"sender","nodeType":"MemberAccess","src":"8257:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21557,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"8247:9:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8247:21:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":21561,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21539,"src":"8272:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8247:31:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e73756666696369656e742062616c616e6365","id":21563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8280:22:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5","typeString":"literal_string \"Insufficient balance\""},"value":"Insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5","typeString":"literal_string \"Insufficient balance\""}],"id":21556,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8239:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8239:64:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21565,"nodeType":"ExpressionStatement","src":"8239:64:68"},{"assignments":[21567],"declarations":[{"constant":false,"id":21567,"mutability":"mutable","name":"yearnDecimal","nameLocation":"8322:12:68","nodeType":"VariableDeclaration","scope":21804,"src":"8316:18:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21566,"name":"uint8","nodeType":"ElementaryTypeName","src":"8316:5:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":21576,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":21571,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"8360:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}],"id":21570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8352:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21569,"name":"address","nodeType":"ElementaryTypeName","src":"8352:7:68","typeDescriptions":{}}},"id":21572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8352:20:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21568,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"8337:14:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":21573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8337:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":21574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8374:8:68","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"8337:45:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":21575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8337:47:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8316:68:68"},{"assignments":[21578],"declarations":[{"constant":false,"id":21578,"mutability":"mutable","name":"quoteDecimal","nameLocation":"8401:12:68","nodeType":"VariableDeclaration","scope":21804,"src":"8395:18:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21577,"name":"uint8","nodeType":"ElementaryTypeName","src":"8395:5:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":21584,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":21580,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"8431:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21579,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"8416:14:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$2677_$","typeString":"type(contract IERC20Metadata)"}},"id":21581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8416:26:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$2677","typeString":"contract IERC20Metadata"}},"id":21582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8443:8:68","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":2676,"src":"8416:35:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":21583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8416:37:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8395:58:68"},{"assignments":[21586],"declarations":[{"constant":false,"id":21586,"mutability":"mutable","name":"balanceYearnVault","nameLocation":"8472:17:68","nodeType":"VariableDeclaration","scope":21804,"src":"8464:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21585,"name":"uint256","nodeType":"ElementaryTypeName","src":"8464:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21594,"initialValue":{"arguments":[{"arguments":[{"id":21591,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8522:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8514:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21589,"name":"address","nodeType":"ElementaryTypeName","src":"8514:7:68","typeDescriptions":{}}},"id":21592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8514:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21587,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"8492:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8504:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5470,"src":"8492:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8492:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8464:64:68"},{"assignments":[21596],"declarations":[{"constant":false,"id":21596,"mutability":"mutable","name":"quoteBalance","nameLocation":"8547:12:68","nodeType":"VariableDeclaration","scope":21804,"src":"8539:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21595,"name":"uint256","nodeType":"ElementaryTypeName","src":"8539:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21606,"initialValue":{"arguments":[{"arguments":[{"id":21603,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8599:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8591:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21601,"name":"address","nodeType":"ElementaryTypeName","src":"8591:7:68","typeDescriptions":{}}},"id":21604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8591:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":21598,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"8569:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21597,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8562:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8562:18:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8581:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"8562:28:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8562:43:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8539:66:68"},{"assignments":[21608],"declarations":[{"constant":false,"id":21608,"mutability":"mutable","name":"baseBalance","nameLocation":"8624:11:68","nodeType":"VariableDeclaration","scope":21804,"src":"8616:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21607,"name":"uint256","nodeType":"ElementaryTypeName","src":"8616:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21618,"initialValue":{"arguments":[{"arguments":[{"id":21615,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8674:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8666:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21613,"name":"address","nodeType":"ElementaryTypeName","src":"8666:7:68","typeDescriptions":{}}},"id":21616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8666:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":21610,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"8645:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21609,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"8638:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8638:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8656:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"8638:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8638:42:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8616:64:68"},{"expression":{"id":21626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21619,"name":"balanceYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21586,"src":"8691:17:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8712:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":21621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8719:2:68","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21622,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21567,"src":"8724:12:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8719:17:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8718:19:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8712:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8691:46:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21627,"nodeType":"ExpressionStatement","src":"8691:46:68"},{"expression":{"id":21635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21628,"name":"quoteBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21596,"src":"8748:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8764:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":21630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8771:2:68","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21631,"name":"quoteDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21578,"src":"8776:12:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8771:17:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8770:19:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8764:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8748:41:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21636,"nodeType":"ExpressionStatement","src":"8748:41:68"},{"assignments":[21638],"declarations":[{"constant":false,"id":21638,"mutability":"mutable","name":"withdrawAmountA","nameLocation":"8810:15:68","nodeType":"VariableDeclaration","scope":21804,"src":"8802:23:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21637,"name":"uint256","nodeType":"ElementaryTypeName","src":"8802:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21646,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21639,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21539,"src":"8829:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":21640,"name":"balanceYearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21586,"src":"8838:17:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8829:26:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21642,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8828:28:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21643,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"8859:11:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8859:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8828:44:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8802:70:68"},{"assignments":[21648],"declarations":[{"constant":false,"id":21648,"mutability":"mutable","name":"withdrawAmountB","nameLocation":"8891:15:68","nodeType":"VariableDeclaration","scope":21804,"src":"8883:23:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21647,"name":"uint256","nodeType":"ElementaryTypeName","src":"8883:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21656,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21649,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21539,"src":"8910:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":21650,"name":"quoteBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21596,"src":"8919:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8910:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8909:23:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":21653,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"8935:11:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8935:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8909:39:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8883:65:68"},{"expression":{"arguments":[{"expression":{"id":21658,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8967:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8971:6:68","memberName":"sender","nodeType":"MemberAccess","src":"8967:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21660,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21539,"src":"8979:6:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21657,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"8961:5:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8961:25:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21662,"nodeType":"ExpressionStatement","src":"8961:25:68"},{"expression":{"id":21670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21663,"name":"withdrawAmountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21638,"src":"8999:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9018:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":21665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9025:2:68","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21666,"name":"yearnDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21567,"src":"9030:12:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9025:17:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9024:19:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9018:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8999:44:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21671,"nodeType":"ExpressionStatement","src":"8999:44:68"},{"expression":{"id":21679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21672,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21648,"src":"9054:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":21673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9073:2:68","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":21676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":21674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9080:2:68","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21675,"name":"quoteDecimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21578,"src":"9085:12:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9080:17:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9079:19:68","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9073:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9054:44:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21680,"nodeType":"ExpressionStatement","src":"9054:44:68"},{"expression":{"arguments":[{"id":21684,"name":"withdrawAmountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21638,"src":"9130:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21687,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9155:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9147:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21685,"name":"address","nodeType":"ElementaryTypeName","src":"9147:7:68","typeDescriptions":{}}},"id":21688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9147:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":21691,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9170:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9162:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21689,"name":"address","nodeType":"ElementaryTypeName","src":"9162:7:68","typeDescriptions":{}}},"id":21692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9162:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21681,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"9111:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9123:6:68","memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":5488,"src":"9111:18:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":21693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9111:65:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21694,"nodeType":"ExpressionStatement","src":"9111:65:68"},{"assignments":[21696],"declarations":[{"constant":false,"id":21696,"mutability":"mutable","name":"baseBalanceAfter","nameLocation":"9197:16:68","nodeType":"VariableDeclaration","scope":21804,"src":"9189:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21695,"name":"uint256","nodeType":"ElementaryTypeName","src":"9189:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21706,"initialValue":{"arguments":[{"arguments":[{"id":21703,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9252:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9244:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21701,"name":"address","nodeType":"ElementaryTypeName","src":"9244:7:68","typeDescriptions":{}}},"id":21704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9244:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":21698,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"9223:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21697,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9216:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9216:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9234:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2608,"src":"9216:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9216:42:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9189:69:68"},{"assignments":[21708],"declarations":[{"constant":false,"id":21708,"mutability":"mutable","name":"amountToSend","nameLocation":"9277:12:68","nodeType":"VariableDeclaration","scope":21804,"src":"9269:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21707,"name":"uint256","nodeType":"ElementaryTypeName","src":"9269:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21712,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21709,"name":"baseBalanceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21696,"src":"9292:16:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21710,"name":"baseBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21608,"src":"9311:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9292:30:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9269:53:68"},{"assignments":[21714],"declarations":[{"constant":false,"id":21714,"mutability":"mutable","name":"receiver","nameLocation":"9341:8:68","nodeType":"VariableDeclaration","scope":21804,"src":"9333:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21713,"name":"address","nodeType":"ElementaryTypeName","src":"9333:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":21716,"initialValue":{"id":21715,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21541,"src":"9352:2:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9333:21:68"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21717,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21708,"src":"9371:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9386:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9371:16:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21773,"nodeType":"IfStatement","src":"9367:467:68","trueBody":{"id":21772,"nodeType":"Block","src":"9389:445:68","statements":[{"assignments":[21721],"declarations":[{"constant":false,"id":21721,"mutability":"mutable","name":"hairCut","nameLocation":"9409:7:68","nodeType":"VariableDeclaration","scope":21772,"src":"9404:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21720,"name":"uint","nodeType":"ElementaryTypeName","src":"9404:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21725,"initialValue":{"arguments":[{"id":21723,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21708,"src":"9428:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21722,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21504,"src":"9419:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9419:22:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9404:37:68"},{"expression":{"arguments":[{"id":21730,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21714,"src":"9483:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21731,"name":"amountToSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21708,"src":"9493:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21732,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21721,"src":"9508:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9493:22:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21727,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"9463:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21726,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9456:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9456:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9474:8:68","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"9456:26:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9456:60:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21735,"nodeType":"ExpressionStatement","src":"9456:60:68"},{"assignments":[21737],"declarations":[{"constant":false,"id":21737,"mutability":"mutable","name":"hairCut2","nameLocation":"9536:8:68","nodeType":"VariableDeclaration","scope":21772,"src":"9531:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21736,"name":"uint","nodeType":"ElementaryTypeName","src":"9531:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21741,"initialValue":{"arguments":[{"id":21739,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21721,"src":"9556:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21738,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21504,"src":"9547:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9531:33:68"},{"assignments":[21743],"declarations":[{"constant":false,"id":21743,"mutability":"mutable","name":"baluniRouter","nameLocation":"9587:12:68","nodeType":"VariableDeclaration","scope":21772,"src":"9579:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21742,"name":"address","nodeType":"ElementaryTypeName","src":"9579:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":21747,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21744,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"9602:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9612:15:68","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":4838,"src":"9602:25:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9602:27:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9579:50:68"},{"assignments":[21749],"declarations":[{"constant":false,"id":21749,"mutability":"mutable","name":"treasury","nameLocation":"9652:8:68","nodeType":"VariableDeclaration","scope":21772,"src":"9644:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21748,"name":"address","nodeType":"ElementaryTypeName","src":"9644:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":21753,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21750,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"9663:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9673:11:68","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"9663:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9663:23:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9644:42:68"},{"expression":{"arguments":[{"id":21758,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21743,"src":"9728:12:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21759,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21721,"src":"9742:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21760,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21737,"src":"9752:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9742:18:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21755,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"9708:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21754,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9701:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9701:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9719:8:68","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"9701:26:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9701:60:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21763,"nodeType":"ExpressionStatement","src":"9701:60:68"},{"expression":{"arguments":[{"id":21768,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21749,"src":"9803:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21769,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21737,"src":"9813:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21765,"name":"baseAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20707,"src":"9783:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21764,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"9776:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9776:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9794:8:68","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"9776:26:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9776:46:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21771,"nodeType":"ExpressionStatement","src":"9776:46:68"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21774,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21648,"src":"9850:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9868:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9850:19:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21790,"nodeType":"IfStatement","src":"9846:174:68","trueBody":{"id":21789,"nodeType":"Block","src":"9871:149:68","statements":[{"assignments":[21778],"declarations":[{"constant":false,"id":21778,"mutability":"mutable","name":"success","nameLocation":"9891:7:68","nodeType":"VariableDeclaration","scope":21789,"src":"9886:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21777,"name":"bool","nodeType":"ElementaryTypeName","src":"9886:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":21783,"initialValue":{"arguments":[{"id":21780,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21648,"src":"9918:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21781,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21714,"src":"9935:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":21779,"name":"_handleWithdrawB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21873,"src":"9901:16:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_bool_$","typeString":"function (uint256,address) returns (bool)"}},"id":21782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:43:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9886:58:68"},{"expression":{"arguments":[{"id":21785,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21778,"src":"9967:7:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4661696c656420746f207472616e736665722071756f74654173736574","id":21786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9976:31:68","typeDescriptions":{"typeIdentifier":"t_stringliteral_c766bbf94e1d4ee2c587f13da8ba24e222f68835e65af46bb7ea43e218ad9a58","typeString":"literal_string \"Failed to transfer quoteAsset\""},"value":"Failed to transfer quoteAsset"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c766bbf94e1d4ee2c587f13da8ba24e222f68835e65af46bb7ea43e218ad9a58","typeString":"literal_string \"Failed to transfer quoteAsset\""}],"id":21784,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9959:7:68","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9959:49:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21788,"nodeType":"ExpressionStatement","src":"9959:49:68"}]}},{"expression":{"id":21802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21791,"name":"lastDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"10032:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":21798,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10104:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaluniV1YearnVault_$21874","typeString":"contract BaluniV1YearnVault"}],"id":21797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10096:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21796,"name":"address","nodeType":"ElementaryTypeName","src":"10096:7:68","typeDescriptions":{}}},"id":21799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10096:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21794,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"10074:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10086:9:68","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5470,"src":"10074:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10074:36:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21792,"name":"_yearnVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20710,"src":"10046:11:68","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnVault_$5531","typeString":"contract IYearnVault"}},"id":21793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10058:15:68","memberName":"convertToAssets","nodeType":"MemberAccess","referencedDeclaration":5509,"src":"10046:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10046:65:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10032:79:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21803,"nodeType":"ExpressionStatement","src":"10032:79:68"}]},"functionSelector":"00f714ce","id":21805,"implemented":true,"kind":"function","modifiers":[{"id":21545,"kind":"modifierInvocation","modifierName":{"id":21544,"name":"nonReentrant","nameLocations":["8135:12:68"],"nodeType":"IdentifierPath","referencedDeclaration":1538,"src":"8135:12:68"},"nodeType":"ModifierInvocation","src":"8135:12:68"},{"id":21547,"kind":"modifierInvocation","modifierName":{"id":21546,"name":"whenNotPaused","nameLocations":["8148:13:68"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"8148:13:68"},"nodeType":"ModifierInvocation","src":"8148:13:68"}],"name":"withdraw","nameLocation":"8080:8:68","nodeType":"FunctionDefinition","overrides":{"id":21543,"nodeType":"OverrideSpecifier","overrides":[],"src":"8126:8:68"},"parameters":{"id":21542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21539,"mutability":"mutable","name":"shares","nameLocation":"8097:6:68","nodeType":"VariableDeclaration","scope":21805,"src":"8089:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21538,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21541,"mutability":"mutable","name":"to","nameLocation":"8113:2:68","nodeType":"VariableDeclaration","scope":21805,"src":"8105:10:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21540,"name":"address","nodeType":"ElementaryTypeName","src":"8105:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8088:28:68"},"returnParameters":{"id":21548,"nodeType":"ParameterList","parameters":[],"src":"8162:0:68"},"scope":21874,"src":"8071:2048:68","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21872,"nodeType":"Block","src":"10220:491:68","statements":[{"assignments":[21815],"declarations":[{"constant":false,"id":21815,"mutability":"mutable","name":"hairCut","nameLocation":"10236:7:68","nodeType":"VariableDeclaration","scope":21872,"src":"10231:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21814,"name":"uint","nodeType":"ElementaryTypeName","src":"10231:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21819,"initialValue":{"arguments":[{"id":21817,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21807,"src":"10255:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21816,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21504,"src":"10246:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10246:25:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10231:40:68"},{"expression":{"id":21822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21820,"name":"accumulatedAssetB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20717,"src":"10282:17:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":21821,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21807,"src":"10303:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10282:36:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21823,"nodeType":"ExpressionStatement","src":"10282:36:68"},{"expression":{"arguments":[{"id":21828,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21809,"src":"10357:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21829,"name":"withdrawAmountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21807,"src":"10367:15:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21830,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21815,"src":"10385:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10367:25:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21825,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"10336:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21824,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10329:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10329:18:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10348:8:68","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"10329:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10329:64:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21833,"nodeType":"ExpressionStatement","src":"10329:64:68"},{"assignments":[21835],"declarations":[{"constant":false,"id":21835,"mutability":"mutable","name":"hairCut2","nameLocation":"10409:8:68","nodeType":"VariableDeclaration","scope":21872,"src":"10404:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21834,"name":"uint","nodeType":"ElementaryTypeName","src":"10404:4:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21839,"initialValue":{"arguments":[{"id":21837,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21815,"src":"10429:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21836,"name":"_haircut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21504,"src":"10420:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10420:17:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10404:33:68"},{"assignments":[21841],"declarations":[{"constant":false,"id":21841,"mutability":"mutable","name":"baluniRouter","nameLocation":"10456:12:68","nodeType":"VariableDeclaration","scope":21872,"src":"10448:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21840,"name":"address","nodeType":"ElementaryTypeName","src":"10448:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":21845,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21842,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"10471:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10481:15:68","memberName":"getBaluniRouter","nodeType":"MemberAccess","referencedDeclaration":4838,"src":"10471:25:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10471:27:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10448:50:68"},{"assignments":[21847],"declarations":[{"constant":false,"id":21847,"mutability":"mutable","name":"treasury","nameLocation":"10517:8:68","nodeType":"VariableDeclaration","scope":21872,"src":"10509:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21846,"name":"address","nodeType":"ElementaryTypeName","src":"10509:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":21851,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21848,"name":"_registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20715,"src":"10528:9:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBaluniV1Registry_$4909","typeString":"contract IBaluniV1Registry"}},"id":21849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10538:11:68","memberName":"getTreasury","nodeType":"MemberAccess","referencedDeclaration":4883,"src":"10528:21:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10528:23:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10509:42:68"},{"expression":{"arguments":[{"id":21856,"name":"baluniRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21841,"src":"10590:12:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21857,"name":"hairCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21815,"src":"10604:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21858,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21835,"src":"10614:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10604:18:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21853,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"10569:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21852,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10562:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10562:18:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10581:8:68","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"10562:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10562:61:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21861,"nodeType":"ExpressionStatement","src":"10562:61:68"},{"expression":{"arguments":[{"id":21866,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21847,"src":"10662:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21867,"name":"hairCut2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21835,"src":"10672:8:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21863,"name":"quoteAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20712,"src":"10641:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21862,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"10634:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2651_$","typeString":"type(contract IERC20)"}},"id":21864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10634:18:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2651","typeString":"contract IERC20"}},"id":21865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10653:8:68","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2618,"src":"10634:27:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":21868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10634:47:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21869,"nodeType":"ExpressionStatement","src":"10634:47:68"},{"expression":{"hexValue":"74727565","id":21870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10699:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":21813,"id":21871,"nodeType":"Return","src":"10692:11:68"}]},"id":21873,"implemented":true,"kind":"function","modifiers":[],"name":"_handleWithdrawB","nameLocation":"10136:16:68","nodeType":"FunctionDefinition","parameters":{"id":21810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21807,"mutability":"mutable","name":"withdrawAmountB","nameLocation":"10161:15:68","nodeType":"VariableDeclaration","scope":21873,"src":"10153:23:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21806,"name":"uint256","nodeType":"ElementaryTypeName","src":"10153:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21809,"mutability":"mutable","name":"receiver","nameLocation":"10186:8:68","nodeType":"VariableDeclaration","scope":21873,"src":"10178:16:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21808,"name":"address","nodeType":"ElementaryTypeName","src":"10178:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10152:43:68"},"returnParameters":{"id":21813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21873,"src":"10214:4:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21811,"name":"bool","nodeType":"ElementaryTypeName","src":"10214:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10213:6:68"},"scope":21874,"src":"10127:584:68","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":21875,"src":"773:9941:68","usedErrors":[30,35,211,214,475,480,1332,1335,1500,1620,1625,1630,1639,1644,1649,1780,1793,2690,2693],"usedEvents":[41,219,1324,1329,1759,2585,2594,20729]}],"src":"40:10676:68"},"id":68}},"contracts":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"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.","errors":{"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() {     _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\"MyToken\", \"MTK\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\"MyToken\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","errors":{"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\\\"MyToken\\\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.","errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"stateVariables":{"UPGRADE_INTERFACE_VERSION":{"details":"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade."},"__self":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"ERC20Upgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"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\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":\"ERC20Upgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"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.","errors":{"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"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.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"PausableUpgradeable":{"abi":[{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.","errors":{"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."}},"kind":"dev","methods":{"paused()":{"details":"Returns true if the contract is paused, and false otherwise."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"paused()":"5c975abb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":\"PausableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\\n    struct PausableStorage {\\n        bool _paused;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Pausable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\\n\\n    function _getPausableStorage() private pure returns (PausableStorage storage $) {\\n        assembly {\\n            $.slot := PausableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Emitted when the pause is triggered by `account`.\\n     */\\n    event Paused(address account);\\n\\n    /**\\n     * @dev Emitted when the pause is lifted by `account`.\\n     */\\n    event Unpaused(address account);\\n\\n    /**\\n     * @dev The operation failed because the contract is paused.\\n     */\\n    error EnforcedPause();\\n\\n    /**\\n     * @dev The operation failed because the contract is not paused.\\n     */\\n    error ExpectedPause();\\n\\n    /**\\n     * @dev Initializes the contract in unpaused state.\\n     */\\n    function __Pausable_init() internal onlyInitializing {\\n        __Pausable_init_unchained();\\n    }\\n\\n    function __Pausable_init_unchained() internal onlyInitializing {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is not paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    modifier whenNotPaused() {\\n        _requireNotPaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    modifier whenPaused() {\\n        _requirePaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns true if the contract is paused, and false otherwise.\\n     */\\n    function paused() public view virtual returns (bool) {\\n        PausableStorage storage $ = _getPausableStorage();\\n        return $._paused;\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is paused.\\n     */\\n    function _requireNotPaused() internal view virtual {\\n        if (paused()) {\\n            revert EnforcedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is not paused.\\n     */\\n    function _requirePaused() internal view virtual {\\n        if (!paused()) {\\n            revert ExpectedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Triggers stopped state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    function _pause() internal virtual whenNotPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = true;\\n        emit Paused(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns to normal state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    function _unpause() internal virtual whenPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n        emit Unpaused(_msgSender());\\n    }\\n}\\n\",\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ReentrancyGuardUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].","errors":{"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"devdoc":{"details":"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.","errors":{"ERC1155InsufficientBalance(address,uint256,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC1155InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC1155InvalidArrayLength(uint256,uint256)":[{"details":"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.","params":{"idsLength":"Length of the array of token identifiers","valuesLength":"Length of the array of token amounts"}}],"ERC1155InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC1155InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC1155InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC1155MissingApprovalForAll(address,address)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","owner":"Address of the current owner of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"devdoc":{"details":"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"devdoc":{"details":"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"beacon","type":"address"}],"name":"ERC1967InvalidBeacon","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.","errors":{"ERC1967InvalidAdmin(address)":[{"details":"The `admin` of the proxy is invalid."}],"ERC1967InvalidBeacon(address)":[{"details":"The `beacon` of the proxy is invalid."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}]},"events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"stateVariables":{"ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220c1043002e0957d9d1143817db7c5f5aa7c61d4a09773cc8b4b7dd5f24dbdac0564736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC1 DIV ADDRESS MUL 0xE0 SWAP6 PUSH30 0x9D1143817DB7C5F5AA7C61D4A09773CC8B4B7DD5F24DBDAC0564736F6C63 NUMBER STOP ADDMOD NOT STOP CALLER ","sourceMap":"449:6273:9:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220c1043002e0957d9d1143817db7c5f5aa7c61d4a09773cc8b4b7dd5f24dbdac0564736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC1 DIV ADDRESS MUL 0xE0 SWAP6 PUSH30 0x9D1143817DB7C5F5AA7C61D4A09773CC8B4B7DD5F24DBDAC0564736F6C63 NUMBER STOP ADDMOD NOT STOP CALLER ","sourceMap":"449:6273:9:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"_checkNonPayable()":"infinite","_setAdmin(address)":"infinite","_setBeacon(address)":"infinite","_setImplementation(address)":"infinite","changeAdmin(address)":"infinite","getAdmin()":"infinite","getBeacon()":"infinite","getImplementation()":"infinite","upgradeBeaconToAndCall(address,bytes memory)":"infinite","upgradeToAndCall(address,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"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\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2081,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2087,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2089,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2091,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2093,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC20 standard.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"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\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"}],"devdoc":{"details":"Collection of functions related to the address type","errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"AddressInsufficientBalance(address)":[{"details":"The ETH balance of the account is not enough to perform the operation."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220fe592213b84a96e53e2db44059a20045151fdc253761b35d349376c5fcc7026364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID MSIZE 0x22 SGT 0xB8 BLOBBASEFEE SWAP7 0xE5 RETURNDATACOPY 0x2D 0xB4 BLOCKHASH MSIZE LOG2 STOP GASLIMIT ISZERO 0x1F 0xDC 0x25 CALLDATACOPY PUSH2 0xB35D CALLVALUE SWAP4 PUSH23 0xC5FCC7026364736F6C6343000819003300000000000000 ","sourceMap":"195:6066:14:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220fe592213b84a96e53e2db44059a20045151fdc253761b35d349376c5fcc7026364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID MSIZE 0x22 SGT 0xB8 BLOBBASEFEE SWAP7 0xE5 RETURNDATACOPY 0x2D 0xB4 BLOCKHASH MSIZE LOG2 STOP GASLIMIT ISZERO 0x1F 0xDC 0x25 CALLDATACOPY PUSH2 0xB35D CALLVALUE SWAP4 PUSH23 0xC5FCC7026364736F6C6343000819003300000000000000 ","sourceMap":"195:6066:14:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"_revert(bytes memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"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.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ```","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220f84c9254faf500bf03afbb32fa31918b2a825a517f9ae06e91edf6c2e4f53c2364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0x4C SWAP3 SLOAD STATICCALL CREATE2 STOP 0xBF SUB 0xAF 0xBB ORIGIN STATICCALL BALANCE SWAP2 DUP12 0x2A DUP3 GAS MLOAD PUSH32 0x9AE06E91EDF6C2E4F53C2364736F6C6343000819003300000000000000000000 ","sourceMap":"1245:2685:16:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220f84c9254faf500bf03afbb32fa31918b2a825a517f9ae06e91edf6c2e4f53c2364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0x4C SWAP3 SLOAD STATICCALL CREATE2 STOP 0xBF SUB 0xAF 0xBB ORIGIN STATICCALL BALANCE SWAP2 DUP12 0x2A DUP3 GAS MLOAD PUSH32 0x9AE06E91EDF6C2E4F53C2364736F6C6343000819003300000000000000000000 ","sourceMap":"1245:2685:16:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol":{"IUniswapV3Factory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint24","name":"fee","type":"uint24"},{"indexed":true,"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"FeeAmountEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":true,"internalType":"uint24","name":"fee","type":"uint24"},{"indexed":false,"internalType":"int24","name":"tickSpacing","type":"int24"},{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"createPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"enableFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"feeAmountTickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"getPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"FeeAmountEnabled(uint24,int24)":{"params":{"fee":"The enabled fee, denominated in hundredths of a bip","tickSpacing":"The minimum number of ticks between initialized ticks for pools created with the given fee"}},"OwnerChanged(address,address)":{"params":{"newOwner":"The owner after the owner was changed","oldOwner":"The owner before the owner was changed"}},"PoolCreated(address,address,uint24,int24,address)":{"params":{"fee":"The fee collected upon every swap in the pool, denominated in hundredths of a bip","pool":"The address of the created pool","tickSpacing":"The minimum number of ticks between initialized ticks","token0":"The first token of the pool by address sort order","token1":"The second token of the pool by address sort order"}}},"kind":"dev","methods":{"createPool(address,address,uint24)":{"details":"tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments are invalid.","params":{"fee":"The desired fee for the pool","tokenA":"One of the two tokens in the desired pool","tokenB":"The other of the two tokens in the desired pool"},"returns":{"pool":"The address of the newly created pool"}},"enableFeeAmount(uint24,int24)":{"details":"Fee amounts may never be removed once enabled","params":{"fee":"The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)","tickSpacing":"The spacing between ticks to be enforced for all pools created with the given fee amount"}},"feeAmountTickSpacing(uint24)":{"details":"A fee amount can never be removed, so this value should be hard coded or cached in the calling context","params":{"fee":"The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee"},"returns":{"_0":"The tick spacing"}},"getPool(address,address,uint24)":{"details":"tokenA and tokenB may be passed in either token0/token1 or token1/token0 order","params":{"fee":"The fee collected upon every swap in the pool, denominated in hundredths of a bip","tokenA":"The contract address of either token0 or token1","tokenB":"The contract address of the other token"},"returns":{"pool":"The pool address"}},"owner()":{"details":"Can be changed by the current owner via setOwner","returns":{"_0":"The address of the factory owner"}},"setOwner(address)":{"details":"Must be called by the current owner","params":{"_owner":"The new owner of the factory"}}},"title":"The interface for the Uniswap V3 Factory","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"createPool(address,address,uint24)":"a1671295","enableFeeAmount(uint24,int24)":"8a7c195f","feeAmountTickSpacing(uint24)":"22afcccb","getPool(address,address,uint24)":"1698ee82","owner()":"8da5cb5b","setOwner(address)":"13af4035"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"FeeAmountEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"enableFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"FeeAmountEnabled(uint24,int24)\":{\"params\":{\"fee\":\"The enabled fee, denominated in hundredths of a bip\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks for pools created with the given fee\"}},\"OwnerChanged(address,address)\":{\"params\":{\"newOwner\":\"The owner after the owner was changed\",\"oldOwner\":\"The owner before the owner was changed\"}},\"PoolCreated(address,address,uint24,int24,address)\":{\"params\":{\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"pool\":\"The address of the created pool\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\",\"token0\":\"The first token of the pool by address sort order\",\"token1\":\"The second token of the pool by address sort order\"}}},\"kind\":\"dev\",\"methods\":{\"createPool(address,address,uint24)\":{\"details\":\"tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments are invalid.\",\"params\":{\"fee\":\"The desired fee for the pool\",\"tokenA\":\"One of the two tokens in the desired pool\",\"tokenB\":\"The other of the two tokens in the desired pool\"},\"returns\":{\"pool\":\"The address of the newly created pool\"}},\"enableFeeAmount(uint24,int24)\":{\"details\":\"Fee amounts may never be removed once enabled\",\"params\":{\"fee\":\"The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\",\"tickSpacing\":\"The spacing between ticks to be enforced for all pools created with the given fee amount\"}},\"feeAmountTickSpacing(uint24)\":{\"details\":\"A fee amount can never be removed, so this value should be hard coded or cached in the calling context\",\"params\":{\"fee\":\"The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\"},\"returns\":{\"_0\":\"The tick spacing\"}},\"getPool(address,address,uint24)\":{\"details\":\"tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\",\"params\":{\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"tokenA\":\"The contract address of either token0 or token1\",\"tokenB\":\"The contract address of the other token\"},\"returns\":{\"pool\":\"The pool address\"}},\"owner()\":{\"details\":\"Can be changed by the current owner via setOwner\",\"returns\":{\"_0\":\"The address of the factory owner\"}},\"setOwner(address)\":{\"details\":\"Must be called by the current owner\",\"params\":{\"_owner\":\"The new owner of the factory\"}}},\"title\":\"The interface for the Uniswap V3 Factory\",\"version\":1},\"userdoc\":{\"events\":{\"FeeAmountEnabled(uint24,int24)\":{\"notice\":\"Emitted when a new fee amount is enabled for pool creation via the factory\"},\"OwnerChanged(address,address)\":{\"notice\":\"Emitted when the owner of the factory is changed\"},\"PoolCreated(address,address,uint24,int24,address)\":{\"notice\":\"Emitted when a pool is created\"}},\"kind\":\"user\",\"methods\":{\"createPool(address,address,uint24)\":{\"notice\":\"Creates a pool for the given two tokens and fee\"},\"enableFeeAmount(uint24,int24)\":{\"notice\":\"Enables a fee amount with the given tickSpacing\"},\"feeAmountTickSpacing(uint24)\":{\"notice\":\"Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\"},\"getPool(address,address,uint24)\":{\"notice\":\"Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\"},\"owner()\":{\"notice\":\"Returns the current owner of the factory\"},\"setOwner(address)\":{\"notice\":\"Updates the owner of the factory\"}},\"notice\":\"The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":\"IUniswapV3Factory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title The interface for the Uniswap V3 Factory\\n/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\\ninterface IUniswapV3Factory {\\n    /// @notice Emitted when the owner of the factory is changed\\n    /// @param oldOwner The owner before the owner was changed\\n    /// @param newOwner The owner after the owner was changed\\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\\n\\n    /// @notice Emitted when a pool is created\\n    /// @param token0 The first token of the pool by address sort order\\n    /// @param token1 The second token of the pool by address sort order\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\\n    /// @param pool The address of the created pool\\n    event PoolCreated(\\n        address indexed token0,\\n        address indexed token1,\\n        uint24 indexed fee,\\n        int24 tickSpacing,\\n        address pool\\n    );\\n\\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\\n    /// @param fee The enabled fee, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\\n\\n    /// @notice Returns the current owner of the factory\\n    /// @dev Can be changed by the current owner via setOwner\\n    /// @return The address of the factory owner\\n    function owner() external view returns (address);\\n\\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\\n    /// @return The tick spacing\\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\\n\\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\\n    /// @param tokenA The contract address of either token0 or token1\\n    /// @param tokenB The contract address of the other token\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @return pool The pool address\\n    function getPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external view returns (address pool);\\n\\n    /// @notice Creates a pool for the given two tokens and fee\\n    /// @param tokenA One of the two tokens in the desired pool\\n    /// @param tokenB The other of the two tokens in the desired pool\\n    /// @param fee The desired fee for the pool\\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\\n    /// are invalid.\\n    /// @return pool The address of the newly created pool\\n    function createPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external returns (address pool);\\n\\n    /// @notice Updates the owner of the factory\\n    /// @dev Must be called by the current owner\\n    /// @param _owner The new owner of the factory\\n    function setOwner(address _owner) external;\\n\\n    /// @notice Enables a fee amount with the given tickSpacing\\n    /// @dev Fee amounts may never be removed once enabled\\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\\n}\\n\",\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"FeeAmountEnabled(uint24,int24)":{"notice":"Emitted when a new fee amount is enabled for pool creation via the factory"},"OwnerChanged(address,address)":{"notice":"Emitted when the owner of the factory is changed"},"PoolCreated(address,address,uint24,int24,address)":{"notice":"Emitted when a pool is created"}},"kind":"user","methods":{"createPool(address,address,uint24)":{"notice":"Creates a pool for the given two tokens and fee"},"enableFeeAmount(uint24,int24)":{"notice":"Enables a fee amount with the given tickSpacing"},"feeAmountTickSpacing(uint24)":{"notice":"Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled"},"getPool(address,address,uint24)":{"notice":"Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist"},"owner()":{"notice":"Returns the current owner of the factory"},"setOwner(address)":{"notice":"Updates the owner of the factory"}},"notice":"The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees","version":1}}},"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"IUniswapV3Pool":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"_liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"The pool interface is broken up into many smaller pieces","events":{"Burn(address,int24,int24,uint128,uint256,uint256)":{"details":"Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect","params":{"amount":"The amount of liquidity to remove","amount0":"The amount of token0 withdrawn","amount1":"The amount of token1 withdrawn","owner":"The owner of the position for which liquidity is removed","tickLower":"The lower tick of the position","tickUpper":"The upper tick of the position"}},"Collect(address,address,int24,int24,uint128,uint128)":{"details":"Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees","params":{"amount0":"The amount of token0 fees collected","amount1":"The amount of token1 fees collected","owner":"The owner of the position for which fees are collected","tickLower":"The lower tick of the position","tickUpper":"The upper tick of the position"}},"CollectProtocol(address,address,uint128,uint128)":{"params":{"amount0":"The amount of token1 protocol fees that is withdrawn","recipient":"The address that receives the collected protocol fees","sender":"The address that collects the protocol fees"}},"Flash(address,address,uint256,uint256,uint256,uint256)":{"params":{"amount0":"The amount of token0 that was flashed","amount1":"The amount of token1 that was flashed","paid0":"The amount of token0 paid for the flash, which can exceed the amount0 plus the fee","paid1":"The amount of token1 paid for the flash, which can exceed the amount1 plus the fee","recipient":"The address that received the tokens from flash","sender":"The address that initiated the swap call, and that received the callback"}},"IncreaseObservationCardinalityNext(uint16,uint16)":{"details":"observationCardinalityNext is not the observation cardinality until an observation is written at the index just before a mint/swap/burn.","params":{"observationCardinalityNextNew":"The updated value of the next observation cardinality","observationCardinalityNextOld":"The previous value of the next observation cardinality"}},"Initialize(uint160,int24)":{"details":"Mint/Burn/Swap cannot be emitted by the pool before Initialize","params":{"sqrtPriceX96":"The initial sqrt price of the pool, as a Q64.96","tick":"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool"}},"Mint(address,address,int24,int24,uint128,uint256,uint256)":{"params":{"amount":"The amount of liquidity minted to the position range","amount0":"How much token0 was required for the minted liquidity","amount1":"How much token1 was required for the minted liquidity","owner":"The owner of the position and recipient of any minted liquidity","sender":"The address that minted the liquidity","tickLower":"The lower tick of the position","tickUpper":"The upper tick of the position"}},"SetFeeProtocol(uint8,uint8,uint8,uint8)":{"params":{"feeProtocol0New":"The updated value of the token0 protocol fee","feeProtocol0Old":"The previous value of the token0 protocol fee","feeProtocol1New":"The updated value of the token1 protocol fee","feeProtocol1Old":"The previous value of the token1 protocol fee"}},"Swap(address,address,int256,int256,uint160,uint128,int24)":{"params":{"amount0":"The delta of the token0 balance of the pool","amount1":"The delta of the token1 balance of the pool","liquidity":"The liquidity of the pool after the swap","recipient":"The address that received the output of the swap","sender":"The address that initiated the swap call, and that received the callback","sqrtPriceX96":"The sqrt(price) of the pool after the swap, as a Q64.96","tick":"The log base 1.0001 of price of the pool after the swap"}}},"kind":"dev","methods":{"burn(int24,int24,uint128)":{"details":"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect","params":{"amount":"How much liquidity to burn","tickLower":"The lower tick of the position for which to burn liquidity","tickUpper":"The upper tick of the position for which to burn liquidity"},"returns":{"amount0":"The amount of token0 sent to the recipient","amount1":"The amount of token1 sent to the recipient"}},"collect(address,int24,int24,uint128,uint128)":{"details":"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.","params":{"amount0Requested":"How much token0 should be withdrawn from the fees owed","amount1Requested":"How much token1 should be withdrawn from the fees owed","recipient":"The address which should receive the fees collected","tickLower":"The lower tick of the position for which to collect fees","tickUpper":"The upper tick of the position for which to collect fees"},"returns":{"amount0":"The amount of fees collected in token0","amount1":"The amount of fees collected in token1"}},"collectProtocol(address,uint128,uint128)":{"params":{"amount0Requested":"The maximum amount of token0 to send, can be 0 to collect fees in only token1","amount1Requested":"The maximum amount of token1 to send, can be 0 to collect fees in only token0","recipient":"The address to which collected protocol fees should be sent"},"returns":{"amount0":"The protocol fee collected in token0","amount1":"The protocol fee collected in token1"}},"factory()":{"returns":{"_0":"The contract address"}},"fee()":{"returns":{"_0":"The fee"}},"feeGrowthGlobal0X128()":{"details":"This value can overflow the uint256"},"feeGrowthGlobal1X128()":{"details":"This value can overflow the uint256"},"flash(address,uint256,uint256,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback","params":{"amount0":"The amount of token0 to send","amount1":"The amount of token1 to send","data":"Any data to be passed through to the callback","recipient":"The address which will receive the token0 and token1 amounts"}},"increaseObservationCardinalityNext(uint16)":{"details":"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.","params":{"observationCardinalityNext":"The desired minimum number of observations for the pool to store"}},"initialize(uint160)":{"details":"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value","params":{"sqrtPriceX96":"the initial sqrt price of the pool as a Q64.96"}},"liquidity()":{"details":"This value has no relationship to the total liquidity across all ticks"},"maxLiquidityPerTick()":{"details":"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool","returns":{"_0":"The max amount of liquidity per tick"}},"mint(address,int24,int24,uint128,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.","params":{"amount":"The amount of liquidity to mint","data":"Any data that should be passed through to the callback","recipient":"The address for which the liquidity will be created","tickLower":"The lower tick of the position in which to add liquidity","tickUpper":"The upper tick of the position in which to add liquidity"},"returns":{"amount0":"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback","amount1":"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"}},"observations(uint256)":{"details":"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.","params":{"index":"The element of the observations array to fetch"},"returns":{"blockTimestamp":"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use"}},"observe(uint32[])":{"details":"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.","params":{"secondsAgos":"From how long ago each cumulative tick and liquidity value should be returned"},"returns":{"secondsPerLiquidityCumulativeX128s":"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp","tickCumulatives":"Cumulative tick values as of each `secondsAgos` from the current block timestamp"}},"positions(bytes32)":{"params":{"key":"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper"},"returns":{"_liquidity":"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke"}},"protocolFees()":{"details":"Protocol fees will never exceed uint128 max in either token"},"setFeeProtocol(uint8,uint8)":{"params":{"feeProtocol0":"new protocol fee for token0 of the pool","feeProtocol1":"new protocol fee for token1 of the pool"}},"slot0()":{"returns":{"sqrtPriceX96":"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy"}},"snapshotCumulativesInside(int24,int24)":{"details":"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.","params":{"tickLower":"The lower tick of the range","tickUpper":"The upper tick of the range"},"returns":{"secondsInside":"The snapshot of seconds per liquidity for the range","secondsPerLiquidityInsideX128":"The snapshot of seconds per liquidity for the range","tickCumulativeInside":"The snapshot of the tick accumulator for the range"}},"swap(address,bool,int256,uint160,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback","params":{"amountSpecified":"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)","data":"Any data to be passed through to the callback","recipient":"The address to receive the output of the swap","sqrtPriceLimitX96":"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap","zeroForOne":"The direction of the swap, true for token0 to token1, false for token1 to token0"},"returns":{"amount0":"The delta of the balance of token0 of the pool, exact when negative, minimum when positive","amount1":"The delta of the balance of token1 of the pool, exact when negative, minimum when positive"}},"tickSpacing()":{"details":"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.","returns":{"_0":"The tick spacing"}},"ticks(int24)":{"params":{"tick":"The tick to look up"},"returns":{"liquidityGross":"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position."}},"token0()":{"returns":{"_0":"The token contract address"}},"token1()":{"returns":{"_0":"The token contract address"}}},"title":"The interface for a Uniswap V3 Pool","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","collectProtocol(address,uint128,uint128)":"85b66729","factory()":"c45a0155","fee()":"ddca3f43","feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","liquidity()":"1a686502","maxLiquidityPerTick()":"70cf754a","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","observations(uint256)":"252c09d7","observe(uint32[])":"883bdbfd","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","setFeeProtocol(uint8,uint8)":"8206a4d1","slot0()":"3850c7bd","snapshotCumulativesInside(int24,int24)":"a38807f2","swap(address,bool,int256,uint160,bytes)":"128acb08","tickBitmap(int16)":"5339c296","tickSpacing()":"d0c93a7c","ticks(int24)":"f30dba93","token0()":"0dfe1681","token1()":"d21220a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The pool interface is broken up into many smaller pieces\",\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"details\":\"Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\",\"params\":{\"amount\":\"The amount of liquidity to remove\",\"amount0\":\"The amount of token0 withdrawn\",\"amount1\":\"The amount of token1 withdrawn\",\"owner\":\"The owner of the position for which liquidity is removed\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"details\":\"Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\",\"params\":{\"amount0\":\"The amount of token0 fees collected\",\"amount1\":\"The amount of token1 fees collected\",\"owner\":\"The owner of the position for which fees are collected\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"CollectProtocol(address,address,uint128,uint128)\":{\"params\":{\"amount0\":\"The amount of token1 protocol fees that is withdrawn\",\"recipient\":\"The address that receives the collected protocol fees\",\"sender\":\"The address that collects the protocol fees\"}},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount of token0 that was flashed\",\"amount1\":\"The amount of token1 that was flashed\",\"paid0\":\"The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\",\"paid1\":\"The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\",\"recipient\":\"The address that received the tokens from flash\",\"sender\":\"The address that initiated the swap call, and that received the callback\"}},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"details\":\"observationCardinalityNext is not the observation cardinality until an observation is written at the index just before a mint/swap/burn.\",\"params\":{\"observationCardinalityNextNew\":\"The updated value of the next observation cardinality\",\"observationCardinalityNextOld\":\"The previous value of the next observation cardinality\"}},\"Initialize(uint160,int24)\":{\"details\":\"Mint/Burn/Swap cannot be emitted by the pool before Initialize\",\"params\":{\"sqrtPriceX96\":\"The initial sqrt price of the pool, as a Q64.96\",\"tick\":\"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\"}},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of liquidity minted to the position range\",\"amount0\":\"How much token0 was required for the minted liquidity\",\"amount1\":\"How much token1 was required for the minted liquidity\",\"owner\":\"The owner of the position and recipient of any minted liquidity\",\"sender\":\"The address that minted the liquidity\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"params\":{\"feeProtocol0New\":\"The updated value of the token0 protocol fee\",\"feeProtocol0Old\":\"The previous value of the token0 protocol fee\",\"feeProtocol1New\":\"The updated value of the token1 protocol fee\",\"feeProtocol1Old\":\"The previous value of the token1 protocol fee\"}},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"params\":{\"amount0\":\"The delta of the token0 balance of the pool\",\"amount1\":\"The delta of the token1 balance of the pool\",\"liquidity\":\"The liquidity of the pool after the swap\",\"recipient\":\"The address that received the output of the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use\"}},\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"_liquidity\":\"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"slot0()\":{\"returns\":{\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"The interface for a Uniswap V3 Pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform to the ERC20 specification\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":\"IUniswapV3Pool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\nimport './pool/IUniswapV3PoolImmutables.sol';\\nimport './pool/IUniswapV3PoolState.sol';\\nimport './pool/IUniswapV3PoolDerivedState.sol';\\nimport './pool/IUniswapV3PoolActions.sol';\\nimport './pool/IUniswapV3PoolOwnerActions.sol';\\nimport './pool/IUniswapV3PoolEvents.sol';\\n\\n/// @title The interface for a Uniswap V3 Pool\\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\\n/// to the ERC20 specification\\n/// @dev The pool interface is broken up into many smaller pieces\\ninterface IUniswapV3Pool is\\n    IUniswapV3PoolImmutables,\\n    IUniswapV3PoolState,\\n    IUniswapV3PoolDerivedState,\\n    IUniswapV3PoolActions,\\n    IUniswapV3PoolOwnerActions,\\n    IUniswapV3PoolEvents\\n{\\n\\n}\\n\",\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissionless pool actions\\n/// @notice Contains pool methods that can be called by anyone\\ninterface IUniswapV3PoolActions {\\n    /// @notice Sets the initial price for the pool\\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\\n    function initialize(uint160 sqrtPriceX96) external;\\n\\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\\n    /// @param recipient The address for which the liquidity will be created\\n    /// @param tickLower The lower tick of the position in which to add liquidity\\n    /// @param tickUpper The upper tick of the position in which to add liquidity\\n    /// @param amount The amount of liquidity to mint\\n    /// @param data Any data that should be passed through to the callback\\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    function mint(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount,\\n        bytes calldata data\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects tokens owed to a position\\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\\n    /// @param recipient The address which should receive the fees collected\\n    /// @param tickLower The lower tick of the position for which to collect fees\\n    /// @param tickUpper The upper tick of the position for which to collect fees\\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n\\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\\n    /// @dev Fees must be collected separately via a call to #collect\\n    /// @param tickLower The lower tick of the position for which to burn liquidity\\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\\n    /// @param amount How much liquidity to burn\\n    /// @return amount0 The amount of token0 sent to the recipient\\n    /// @return amount1 The amount of token1 sent to the recipient\\n    function burn(\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Swap token0 for token1, or token1 for token0\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\\n    /// @param recipient The address to receive the output of the swap\\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\\n    /// @param data Any data to be passed through to the callback\\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\\n    function swap(\\n        address recipient,\\n        bool zeroForOne,\\n        int256 amountSpecified,\\n        uint160 sqrtPriceLimitX96,\\n        bytes calldata data\\n    ) external returns (int256 amount0, int256 amount1);\\n\\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\\n    /// @param recipient The address which will receive the token0 and token1 amounts\\n    /// @param amount0 The amount of token0 to send\\n    /// @param amount1 The amount of token1 to send\\n    /// @param data Any data to be passed through to the callback\\n    function flash(\\n        address recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        bytes calldata data\\n    ) external;\\n\\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\\n    /// the input observationCardinalityNext.\\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\\n}\\n\",\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that is not stored\\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\\n/// blockchain. The functions here may have variable gas costs.\\ninterface IUniswapV3PoolDerivedState {\\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\\n    /// you must call it with secondsAgos = [3600, 0].\\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\\n    /// timestamp\\n    function observe(uint32[] calldata secondsAgos)\\n        external\\n        view\\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\\n\\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\\n    /// snapshot is taken and the second snapshot is taken.\\n    /// @param tickLower The lower tick of the range\\n    /// @param tickUpper The upper tick of the range\\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\\n        external\\n        view\\n        returns (\\n            int56 tickCumulativeInside,\\n            uint160 secondsPerLiquidityInsideX128,\\n            uint32 secondsInside\\n        );\\n}\\n\",\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Events emitted by a pool\\n/// @notice Contains all events emitted by the pool\\ninterface IUniswapV3PoolEvents {\\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\\n\\n    /// @notice Emitted when liquidity is minted for a given position\\n    /// @param sender The address that minted the liquidity\\n    /// @param owner The owner of the position and recipient of any minted liquidity\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity minted to the position range\\n    /// @param amount0 How much token0 was required for the minted liquidity\\n    /// @param amount1 How much token1 was required for the minted liquidity\\n    event Mint(\\n        address sender,\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted when fees are collected by the owner of a position\\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\\n    /// @param owner The owner of the position for which fees are collected\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount0 The amount of token0 fees collected\\n    /// @param amount1 The amount of token1 fees collected\\n    event Collect(\\n        address indexed owner,\\n        address recipient,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount0,\\n        uint128 amount1\\n    );\\n\\n    /// @notice Emitted when a position's liquidity is removed\\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\\n    /// @param owner The owner of the position for which liquidity is removed\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity to remove\\n    /// @param amount0 The amount of token0 withdrawn\\n    /// @param amount1 The amount of token1 withdrawn\\n    event Burn(\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted by the pool for any swaps between token0 and token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the output of the swap\\n    /// @param amount0 The delta of the token0 balance of the pool\\n    /// @param amount1 The delta of the token1 balance of the pool\\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\\n    /// @param liquidity The liquidity of the pool after the swap\\n    /// @param tick The log base 1.0001 of price of the pool after the swap\\n    event Swap(\\n        address indexed sender,\\n        address indexed recipient,\\n        int256 amount0,\\n        int256 amount1,\\n        uint160 sqrtPriceX96,\\n        uint128 liquidity,\\n        int24 tick\\n    );\\n\\n    /// @notice Emitted by the pool for any flashes of token0/token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the tokens from flash\\n    /// @param amount0 The amount of token0 that was flashed\\n    /// @param amount1 The amount of token1 that was flashed\\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\\n    event Flash(\\n        address indexed sender,\\n        address indexed recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        uint256 paid0,\\n        uint256 paid1\\n    );\\n\\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\\n    /// just before a mint/swap/burn.\\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\\n    event IncreaseObservationCardinalityNext(\\n        uint16 observationCardinalityNextOld,\\n        uint16 observationCardinalityNextNew\\n    );\\n\\n    /// @notice Emitted when the protocol fee is changed by the pool\\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\\n\\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\\n    /// @param sender The address that collects the protocol fees\\n    /// @param recipient The address that receives the collected protocol fees\\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that never changes\\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\\ninterface IUniswapV3PoolImmutables {\\n    /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\\n    /// @return The contract address\\n    function factory() external view returns (address);\\n\\n    /// @notice The first of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token0() external view returns (address);\\n\\n    /// @notice The second of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token1() external view returns (address);\\n\\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\\n    /// @return The fee\\n    function fee() external view returns (uint24);\\n\\n    /// @notice The pool tick spacing\\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\\n    /// This value is an int24 to avoid casting even though it is always positive.\\n    /// @return The tick spacing\\n    function tickSpacing() external view returns (int24);\\n\\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\\n    /// @return The max amount of liquidity per tick\\n    function maxLiquidityPerTick() external view returns (uint128);\\n}\\n\",\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissioned pool actions\\n/// @notice Contains pool methods that may only be called by the factory owner\\ninterface IUniswapV3PoolOwnerActions {\\n    /// @notice Set the denominator of the protocol's % share of the fees\\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\\n\\n    /// @notice Collect the protocol fee accrued to the pool\\n    /// @param recipient The address to which collected protocol fees should be sent\\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\\n    /// @return amount0 The protocol fee collected in token0\\n    /// @return amount1 The protocol fee collected in token1\\n    function collectProtocol(\\n        address recipient,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that can change\\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\\n/// per transaction\\ninterface IUniswapV3PoolState {\\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\\n    /// when accessed externally.\\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\\n    /// boundary.\\n    /// observationIndex The index of the last oracle observation that was written,\\n    /// observationCardinality The current maximum number of observations stored in the pool,\\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\\n    /// feeProtocol The protocol fee for both tokens of the pool.\\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\\n    /// unlocked Whether the pool is currently locked to reentrancy\\n    function slot0()\\n        external\\n        view\\n        returns (\\n            uint160 sqrtPriceX96,\\n            int24 tick,\\n            uint16 observationIndex,\\n            uint16 observationCardinality,\\n            uint16 observationCardinalityNext,\\n            uint8 feeProtocol,\\n            bool unlocked\\n        );\\n\\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal0X128() external view returns (uint256);\\n\\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal1X128() external view returns (uint256);\\n\\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\\n    /// @dev Protocol fees will never exceed uint128 max in either token\\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\\n\\n    /// @notice The currently in range liquidity available to the pool\\n    /// @dev This value has no relationship to the total liquidity across all ticks\\n    function liquidity() external view returns (uint128);\\n\\n    /// @notice Look up information about a specific tick in the pool\\n    /// @param tick The tick to look up\\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\\n    /// tick upper,\\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\\n    /// a specific position.\\n    function ticks(int24 tick)\\n        external\\n        view\\n        returns (\\n            uint128 liquidityGross,\\n            int128 liquidityNet,\\n            uint256 feeGrowthOutside0X128,\\n            uint256 feeGrowthOutside1X128,\\n            int56 tickCumulativeOutside,\\n            uint160 secondsPerLiquidityOutsideX128,\\n            uint32 secondsOutside,\\n            bool initialized\\n        );\\n\\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\\n\\n    /// @notice Returns the information about a position by the position's key\\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\\n    /// @return _liquidity The amount of liquidity in the position,\\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\\n    function positions(bytes32 key)\\n        external\\n        view\\n        returns (\\n            uint128 _liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    /// @notice Returns data about a specific observation index\\n    /// @param index The element of the observations array to fetch\\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\\n    /// ago, rather than at a specific index in the array.\\n    /// @return blockTimestamp The timestamp of the observation,\\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\\n    function observations(uint256 index)\\n        external\\n        view\\n        returns (\\n            uint32 blockTimestamp,\\n            int56 tickCumulative,\\n            uint160 secondsPerLiquidityCumulativeX128,\\n            bool initialized\\n        );\\n}\\n\",\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"Burn(address,int24,int24,uint128,uint256,uint256)":{"notice":"Emitted when a position's liquidity is removed"},"Collect(address,address,int24,int24,uint128,uint128)":{"notice":"Emitted when fees are collected by the owner of a position"},"CollectProtocol(address,address,uint128,uint128)":{"notice":"Emitted when the collected protocol fees are withdrawn by the factory owner"},"Flash(address,address,uint256,uint256,uint256,uint256)":{"notice":"Emitted by the pool for any flashes of token0/token1"},"IncreaseObservationCardinalityNext(uint16,uint16)":{"notice":"Emitted by the pool for increases to the number of observations that can be stored"},"Initialize(uint160,int24)":{"notice":"Emitted exactly once by a pool when #initialize is first called on the pool"},"Mint(address,address,int24,int24,uint128,uint256,uint256)":{"notice":"Emitted when liquidity is minted for a given position"},"SetFeeProtocol(uint8,uint8,uint8,uint8)":{"notice":"Emitted when the protocol fee is changed by the pool"},"Swap(address,address,int256,int256,uint160,uint128,int24)":{"notice":"Emitted by the pool for any swaps between token0 and token1"}},"kind":"user","methods":{"burn(int24,int24,uint128)":{"notice":"Burn liquidity from the sender and account tokens owed for the liquidity to the position"},"collect(address,int24,int24,uint128,uint128)":{"notice":"Collects tokens owed to a position"},"collectProtocol(address,uint128,uint128)":{"notice":"Collect the protocol fee accrued to the pool"},"factory()":{"notice":"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface"},"fee()":{"notice":"The pool's fee in hundredths of a bip, i.e. 1e-6"},"feeGrowthGlobal0X128()":{"notice":"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool"},"feeGrowthGlobal1X128()":{"notice":"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool"},"flash(address,uint256,uint256,bytes)":{"notice":"Receive token0 and/or token1 and pay it back, plus a fee, in the callback"},"increaseObservationCardinalityNext(uint16)":{"notice":"Increase the maximum number of price and liquidity observations that this pool will store"},"initialize(uint160)":{"notice":"Sets the initial price for the pool"},"liquidity()":{"notice":"The currently in range liquidity available to the pool"},"maxLiquidityPerTick()":{"notice":"The maximum amount of position liquidity that can use any tick in the range"},"mint(address,int24,int24,uint128,bytes)":{"notice":"Adds liquidity for the given recipient/tickLower/tickUpper position"},"observations(uint256)":{"notice":"Returns data about a specific observation index"},"observe(uint32[])":{"notice":"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp"},"positions(bytes32)":{"notice":"Returns the information about a position by the position's key"},"protocolFees()":{"notice":"The amounts of token0 and token1 that are owed to the protocol"},"setFeeProtocol(uint8,uint8)":{"notice":"Set the denominator of the protocol's % share of the fees"},"slot0()":{"notice":"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally."},"snapshotCumulativesInside(int24,int24)":{"notice":"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range"},"swap(address,bool,int256,uint160,bytes)":{"notice":"Swap token0 for token1, or token1 for token0"},"tickBitmap(int16)":{"notice":"Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"tickSpacing()":{"notice":"The pool tick spacing"},"ticks(int24)":{"notice":"Look up information about a specific tick in the pool"},"token0()":{"notice":"The first of the two tokens of the pool, sorted by address"},"token1()":{"notice":"The second of the two tokens of the pool, sorted by address"}},"notice":"A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform to the ERC20 specification","version":1}}},"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"IUniswapV3SwapCallback":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"uniswapV3SwapCallback(int256,int256,bytes)":{"details":"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.","params":{"amount0Delta":"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.","amount1Delta":"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.","data":"Any data passed through by the caller via the IUniswapV3PoolActions#swap call"}}},"title":"Callback for IUniswapV3PoolActions#swap","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Callback for IUniswapV3PoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Any contract that calls IUniswapV3PoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":\"IUniswapV3SwapCallback\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Callback for IUniswapV3PoolActions#swap\\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\\ninterface IUniswapV3SwapCallback {\\n    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\\n    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\\n    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\\n    function uniswapV3SwapCallback(\\n        int256 amount0Delta,\\n        int256 amount1Delta,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"uniswapV3SwapCallback(int256,int256,bytes)":{"notice":"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."}},"notice":"Any contract that calls IUniswapV3PoolActions#swap must implement this interface","version":1}}},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"IUniswapV3PoolActions":{"abi":[{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"burn(int24,int24,uint128)":{"details":"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect","params":{"amount":"How much liquidity to burn","tickLower":"The lower tick of the position for which to burn liquidity","tickUpper":"The upper tick of the position for which to burn liquidity"},"returns":{"amount0":"The amount of token0 sent to the recipient","amount1":"The amount of token1 sent to the recipient"}},"collect(address,int24,int24,uint128,uint128)":{"details":"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.","params":{"amount0Requested":"How much token0 should be withdrawn from the fees owed","amount1Requested":"How much token1 should be withdrawn from the fees owed","recipient":"The address which should receive the fees collected","tickLower":"The lower tick of the position for which to collect fees","tickUpper":"The upper tick of the position for which to collect fees"},"returns":{"amount0":"The amount of fees collected in token0","amount1":"The amount of fees collected in token1"}},"flash(address,uint256,uint256,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback","params":{"amount0":"The amount of token0 to send","amount1":"The amount of token1 to send","data":"Any data to be passed through to the callback","recipient":"The address which will receive the token0 and token1 amounts"}},"increaseObservationCardinalityNext(uint16)":{"details":"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.","params":{"observationCardinalityNext":"The desired minimum number of observations for the pool to store"}},"initialize(uint160)":{"details":"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value","params":{"sqrtPriceX96":"the initial sqrt price of the pool as a Q64.96"}},"mint(address,int24,int24,uint128,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.","params":{"amount":"The amount of liquidity to mint","data":"Any data that should be passed through to the callback","recipient":"The address for which the liquidity will be created","tickLower":"The lower tick of the position in which to add liquidity","tickUpper":"The upper tick of the position in which to add liquidity"},"returns":{"amount0":"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback","amount1":"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"}},"swap(address,bool,int256,uint160,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback","params":{"amountSpecified":"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)","data":"Any data to be passed through to the callback","recipient":"The address to receive the output of the swap","sqrtPriceLimitX96":"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap","zeroForOne":"The direction of the swap, true for token0 to token1, false for token1 to token0"},"returns":{"amount0":"The delta of the balance of token0 of the pool, exact when negative, minimum when positive","amount1":"The delta of the balance of token1 of the pool, exact when negative, minimum when positive"}}},"title":"Permissionless pool actions","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","swap(address,bool,int256,uint160,bytes)":"128acb08"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}}},\"title\":\"Permissionless pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"}},\"notice\":\"Contains pool methods that can be called by anyone\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":\"IUniswapV3PoolActions\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissionless pool actions\\n/// @notice Contains pool methods that can be called by anyone\\ninterface IUniswapV3PoolActions {\\n    /// @notice Sets the initial price for the pool\\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\\n    function initialize(uint160 sqrtPriceX96) external;\\n\\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\\n    /// @param recipient The address for which the liquidity will be created\\n    /// @param tickLower The lower tick of the position in which to add liquidity\\n    /// @param tickUpper The upper tick of the position in which to add liquidity\\n    /// @param amount The amount of liquidity to mint\\n    /// @param data Any data that should be passed through to the callback\\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    function mint(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount,\\n        bytes calldata data\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects tokens owed to a position\\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\\n    /// @param recipient The address which should receive the fees collected\\n    /// @param tickLower The lower tick of the position for which to collect fees\\n    /// @param tickUpper The upper tick of the position for which to collect fees\\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n\\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\\n    /// @dev Fees must be collected separately via a call to #collect\\n    /// @param tickLower The lower tick of the position for which to burn liquidity\\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\\n    /// @param amount How much liquidity to burn\\n    /// @return amount0 The amount of token0 sent to the recipient\\n    /// @return amount1 The amount of token1 sent to the recipient\\n    function burn(\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Swap token0 for token1, or token1 for token0\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\\n    /// @param recipient The address to receive the output of the swap\\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\\n    /// @param data Any data to be passed through to the callback\\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\\n    function swap(\\n        address recipient,\\n        bool zeroForOne,\\n        int256 amountSpecified,\\n        uint160 sqrtPriceLimitX96,\\n        bytes calldata data\\n    ) external returns (int256 amount0, int256 amount1);\\n\\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\\n    /// @param recipient The address which will receive the token0 and token1 amounts\\n    /// @param amount0 The amount of token0 to send\\n    /// @param amount1 The amount of token1 to send\\n    /// @param data Any data to be passed through to the callback\\n    function flash(\\n        address recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        bytes calldata data\\n    ) external;\\n\\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\\n    /// the input observationCardinalityNext.\\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\\n}\\n\",\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"burn(int24,int24,uint128)":{"notice":"Burn liquidity from the sender and account tokens owed for the liquidity to the position"},"collect(address,int24,int24,uint128,uint128)":{"notice":"Collects tokens owed to a position"},"flash(address,uint256,uint256,bytes)":{"notice":"Receive token0 and/or token1 and pay it back, plus a fee, in the callback"},"increaseObservationCardinalityNext(uint16)":{"notice":"Increase the maximum number of price and liquidity observations that this pool will store"},"initialize(uint160)":{"notice":"Sets the initial price for the pool"},"mint(address,int24,int24,uint128,bytes)":{"notice":"Adds liquidity for the given recipient/tickLower/tickUpper position"},"swap(address,bool,int256,uint160,bytes)":{"notice":"Swap token0 for token1, or token1 for token0"}},"notice":"Contains pool methods that can be called by anyone","version":1}}},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"IUniswapV3PoolDerivedState":{"abi":[{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"observe(uint32[])":{"details":"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.","params":{"secondsAgos":"From how long ago each cumulative tick and liquidity value should be returned"},"returns":{"secondsPerLiquidityCumulativeX128s":"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp","tickCumulatives":"Cumulative tick values as of each `secondsAgos` from the current block timestamp"}},"snapshotCumulativesInside(int24,int24)":{"details":"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.","params":{"tickLower":"The lower tick of the range","tickUpper":"The upper tick of the range"},"returns":{"secondsInside":"The snapshot of seconds per liquidity for the range","secondsPerLiquidityInsideX128":"The snapshot of seconds per liquidity for the range","tickCumulativeInside":"The snapshot of the tick accumulator for the range"}}},"title":"Pool state that is not stored","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"observe(uint32[])":"883bdbfd","snapshotCumulativesInside(int24,int24)":"a38807f2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}}},\"title\":\"Pool state that is not stored\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"}},\"notice\":\"Contains view functions to provide information about the pool that is computed rather than stored on the blockchain. The functions here may have variable gas costs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":\"IUniswapV3PoolDerivedState\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that is not stored\\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\\n/// blockchain. The functions here may have variable gas costs.\\ninterface IUniswapV3PoolDerivedState {\\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\\n    /// you must call it with secondsAgos = [3600, 0].\\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\\n    /// timestamp\\n    function observe(uint32[] calldata secondsAgos)\\n        external\\n        view\\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\\n\\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\\n    /// snapshot is taken and the second snapshot is taken.\\n    /// @param tickLower The lower tick of the range\\n    /// @param tickUpper The upper tick of the range\\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\\n        external\\n        view\\n        returns (\\n            int56 tickCumulativeInside,\\n            uint160 secondsPerLiquidityInsideX128,\\n            uint32 secondsInside\\n        );\\n}\\n\",\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"observe(uint32[])":{"notice":"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp"},"snapshotCumulativesInside(int24,int24)":{"notice":"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range"}},"notice":"Contains view functions to provide information about the pool that is computed rather than stored on the blockchain. The functions here may have variable gas costs.","version":1}}},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"IUniswapV3PoolEvents":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"}],"devdoc":{"events":{"Burn(address,int24,int24,uint128,uint256,uint256)":{"details":"Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect","params":{"amount":"The amount of liquidity to remove","amount0":"The amount of token0 withdrawn","amount1":"The amount of token1 withdrawn","owner":"The owner of the position for which liquidity is removed","tickLower":"The lower tick of the position","tickUpper":"The upper tick of the position"}},"Collect(address,address,int24,int24,uint128,uint128)":{"details":"Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees","params":{"amount0":"The amount of token0 fees collected","amount1":"The amount of token1 fees collected","owner":"The owner of the position for which fees are collected","tickLower":"The lower tick of the position","tickUpper":"The upper tick of the position"}},"CollectProtocol(address,address,uint128,uint128)":{"params":{"amount0":"The amount of token1 protocol fees that is withdrawn","recipient":"The address that receives the collected protocol fees","sender":"The address that collects the protocol fees"}},"Flash(address,address,uint256,uint256,uint256,uint256)":{"params":{"amount0":"The amount of token0 that was flashed","amount1":"The amount of token1 that was flashed","paid0":"The amount of token0 paid for the flash, which can exceed the amount0 plus the fee","paid1":"The amount of token1 paid for the flash, which can exceed the amount1 plus the fee","recipient":"The address that received the tokens from flash","sender":"The address that initiated the swap call, and that received the callback"}},"IncreaseObservationCardinalityNext(uint16,uint16)":{"details":"observationCardinalityNext is not the observation cardinality until an observation is written at the index just before a mint/swap/burn.","params":{"observationCardinalityNextNew":"The updated value of the next observation cardinality","observationCardinalityNextOld":"The previous value of the next observation cardinality"}},"Initialize(uint160,int24)":{"details":"Mint/Burn/Swap cannot be emitted by the pool before Initialize","params":{"sqrtPriceX96":"The initial sqrt price of the pool, as a Q64.96","tick":"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool"}},"Mint(address,address,int24,int24,uint128,uint256,uint256)":{"params":{"amount":"The amount of liquidity minted to the position range","amount0":"How much token0 was required for the minted liquidity","amount1":"How much token1 was required for the minted liquidity","owner":"The owner of the position and recipient of any minted liquidity","sender":"The address that minted the liquidity","tickLower":"The lower tick of the position","tickUpper":"The upper tick of the position"}},"SetFeeProtocol(uint8,uint8,uint8,uint8)":{"params":{"feeProtocol0New":"The updated value of the token0 protocol fee","feeProtocol0Old":"The previous value of the token0 protocol fee","feeProtocol1New":"The updated value of the token1 protocol fee","feeProtocol1Old":"The previous value of the token1 protocol fee"}},"Swap(address,address,int256,int256,uint160,uint128,int24)":{"params":{"amount0":"The delta of the token0 balance of the pool","amount1":"The delta of the token1 balance of the pool","liquidity":"The liquidity of the pool after the swap","recipient":"The address that received the output of the swap","sender":"The address that initiated the swap call, and that received the callback","sqrtPriceX96":"The sqrt(price) of the pool after the swap, as a Q64.96","tick":"The log base 1.0001 of price of the pool after the swap"}}},"kind":"dev","methods":{},"title":"Events emitted by a pool","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"}],\"devdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"details\":\"Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\",\"params\":{\"amount\":\"The amount of liquidity to remove\",\"amount0\":\"The amount of token0 withdrawn\",\"amount1\":\"The amount of token1 withdrawn\",\"owner\":\"The owner of the position for which liquidity is removed\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"details\":\"Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\",\"params\":{\"amount0\":\"The amount of token0 fees collected\",\"amount1\":\"The amount of token1 fees collected\",\"owner\":\"The owner of the position for which fees are collected\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"CollectProtocol(address,address,uint128,uint128)\":{\"params\":{\"amount0\":\"The amount of token1 protocol fees that is withdrawn\",\"recipient\":\"The address that receives the collected protocol fees\",\"sender\":\"The address that collects the protocol fees\"}},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount of token0 that was flashed\",\"amount1\":\"The amount of token1 that was flashed\",\"paid0\":\"The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\",\"paid1\":\"The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\",\"recipient\":\"The address that received the tokens from flash\",\"sender\":\"The address that initiated the swap call, and that received the callback\"}},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"details\":\"observationCardinalityNext is not the observation cardinality until an observation is written at the index just before a mint/swap/burn.\",\"params\":{\"observationCardinalityNextNew\":\"The updated value of the next observation cardinality\",\"observationCardinalityNextOld\":\"The previous value of the next observation cardinality\"}},\"Initialize(uint160,int24)\":{\"details\":\"Mint/Burn/Swap cannot be emitted by the pool before Initialize\",\"params\":{\"sqrtPriceX96\":\"The initial sqrt price of the pool, as a Q64.96\",\"tick\":\"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\"}},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of liquidity minted to the position range\",\"amount0\":\"How much token0 was required for the minted liquidity\",\"amount1\":\"How much token1 was required for the minted liquidity\",\"owner\":\"The owner of the position and recipient of any minted liquidity\",\"sender\":\"The address that minted the liquidity\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"params\":{\"feeProtocol0New\":\"The updated value of the token0 protocol fee\",\"feeProtocol0Old\":\"The previous value of the token0 protocol fee\",\"feeProtocol1New\":\"The updated value of the token1 protocol fee\",\"feeProtocol1Old\":\"The previous value of the token1 protocol fee\"}},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"params\":{\"amount0\":\"The delta of the token0 balance of the pool\",\"amount1\":\"The delta of the token1 balance of the pool\",\"liquidity\":\"The liquidity of the pool after the swap\",\"recipient\":\"The address that received the output of the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{},\"title\":\"Events emitted by a pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains all events emitted by the pool\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":\"IUniswapV3PoolEvents\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Events emitted by a pool\\n/// @notice Contains all events emitted by the pool\\ninterface IUniswapV3PoolEvents {\\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\\n\\n    /// @notice Emitted when liquidity is minted for a given position\\n    /// @param sender The address that minted the liquidity\\n    /// @param owner The owner of the position and recipient of any minted liquidity\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity minted to the position range\\n    /// @param amount0 How much token0 was required for the minted liquidity\\n    /// @param amount1 How much token1 was required for the minted liquidity\\n    event Mint(\\n        address sender,\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted when fees are collected by the owner of a position\\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\\n    /// @param owner The owner of the position for which fees are collected\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount0 The amount of token0 fees collected\\n    /// @param amount1 The amount of token1 fees collected\\n    event Collect(\\n        address indexed owner,\\n        address recipient,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount0,\\n        uint128 amount1\\n    );\\n\\n    /// @notice Emitted when a position's liquidity is removed\\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\\n    /// @param owner The owner of the position for which liquidity is removed\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity to remove\\n    /// @param amount0 The amount of token0 withdrawn\\n    /// @param amount1 The amount of token1 withdrawn\\n    event Burn(\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted by the pool for any swaps between token0 and token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the output of the swap\\n    /// @param amount0 The delta of the token0 balance of the pool\\n    /// @param amount1 The delta of the token1 balance of the pool\\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\\n    /// @param liquidity The liquidity of the pool after the swap\\n    /// @param tick The log base 1.0001 of price of the pool after the swap\\n    event Swap(\\n        address indexed sender,\\n        address indexed recipient,\\n        int256 amount0,\\n        int256 amount1,\\n        uint160 sqrtPriceX96,\\n        uint128 liquidity,\\n        int24 tick\\n    );\\n\\n    /// @notice Emitted by the pool for any flashes of token0/token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the tokens from flash\\n    /// @param amount0 The amount of token0 that was flashed\\n    /// @param amount1 The amount of token1 that was flashed\\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\\n    event Flash(\\n        address indexed sender,\\n        address indexed recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        uint256 paid0,\\n        uint256 paid1\\n    );\\n\\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\\n    /// just before a mint/swap/burn.\\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\\n    event IncreaseObservationCardinalityNext(\\n        uint16 observationCardinalityNextOld,\\n        uint16 observationCardinalityNextNew\\n    );\\n\\n    /// @notice Emitted when the protocol fee is changed by the pool\\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\\n\\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\\n    /// @param sender The address that collects the protocol fees\\n    /// @param recipient The address that receives the collected protocol fees\\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"Burn(address,int24,int24,uint128,uint256,uint256)":{"notice":"Emitted when a position's liquidity is removed"},"Collect(address,address,int24,int24,uint128,uint128)":{"notice":"Emitted when fees are collected by the owner of a position"},"CollectProtocol(address,address,uint128,uint128)":{"notice":"Emitted when the collected protocol fees are withdrawn by the factory owner"},"Flash(address,address,uint256,uint256,uint256,uint256)":{"notice":"Emitted by the pool for any flashes of token0/token1"},"IncreaseObservationCardinalityNext(uint16,uint16)":{"notice":"Emitted by the pool for increases to the number of observations that can be stored"},"Initialize(uint160,int24)":{"notice":"Emitted exactly once by a pool when #initialize is first called on the pool"},"Mint(address,address,int24,int24,uint128,uint256,uint256)":{"notice":"Emitted when liquidity is minted for a given position"},"SetFeeProtocol(uint8,uint8,uint8,uint8)":{"notice":"Emitted when the protocol fee is changed by the pool"},"Swap(address,address,int256,int256,uint160,uint128,int24)":{"notice":"Emitted by the pool for any swaps between token0 and token1"}},"kind":"user","methods":{},"notice":"Contains all events emitted by the pool","version":1}}},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"IUniswapV3PoolImmutables":{"abi":[{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"factory()":{"returns":{"_0":"The contract address"}},"fee()":{"returns":{"_0":"The fee"}},"maxLiquidityPerTick()":{"details":"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool","returns":{"_0":"The max amount of liquidity per tick"}},"tickSpacing()":{"details":"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.","returns":{"_0":"The tick spacing"}},"token0()":{"returns":{"_0":"The token contract address"}},"token1()":{"returns":{"_0":"The token contract address"}}},"title":"Pool state that never changes","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"factory()":"c45a0155","fee()":"ddca3f43","maxLiquidityPerTick()":"70cf754a","tickSpacing()":"d0c93a7c","token0()":"0dfe1681","token1()":"d21220a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"Pool state that never changes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"These parameters are fixed for a pool forever, i.e., the methods will always return the same values\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":\"IUniswapV3PoolImmutables\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that never changes\\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\\ninterface IUniswapV3PoolImmutables {\\n    /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\\n    /// @return The contract address\\n    function factory() external view returns (address);\\n\\n    /// @notice The first of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token0() external view returns (address);\\n\\n    /// @notice The second of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token1() external view returns (address);\\n\\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\\n    /// @return The fee\\n    function fee() external view returns (uint24);\\n\\n    /// @notice The pool tick spacing\\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\\n    /// This value is an int24 to avoid casting even though it is always positive.\\n    /// @return The tick spacing\\n    function tickSpacing() external view returns (int24);\\n\\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\\n    /// @return The max amount of liquidity per tick\\n    function maxLiquidityPerTick() external view returns (uint128);\\n}\\n\",\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"factory()":{"notice":"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface"},"fee()":{"notice":"The pool's fee in hundredths of a bip, i.e. 1e-6"},"maxLiquidityPerTick()":{"notice":"The maximum amount of position liquidity that can use any tick in the range"},"tickSpacing()":{"notice":"The pool tick spacing"},"token0()":{"notice":"The first of the two tokens of the pool, sorted by address"},"token1()":{"notice":"The second of the two tokens of the pool, sorted by address"}},"notice":"These parameters are fixed for a pool forever, i.e., the methods will always return the same values","version":1}}},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"IUniswapV3PoolOwnerActions":{"abi":[{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"collectProtocol(address,uint128,uint128)":{"params":{"amount0Requested":"The maximum amount of token0 to send, can be 0 to collect fees in only token1","amount1Requested":"The maximum amount of token1 to send, can be 0 to collect fees in only token0","recipient":"The address to which collected protocol fees should be sent"},"returns":{"amount0":"The protocol fee collected in token0","amount1":"The protocol fee collected in token1"}},"setFeeProtocol(uint8,uint8)":{"params":{"feeProtocol0":"new protocol fee for token0 of the pool","feeProtocol1":"new protocol fee for token1 of the pool"}}},"title":"Permissioned pool actions","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"collectProtocol(address,uint128,uint128)":"85b66729","setFeeProtocol(uint8,uint8)":"8206a4d1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}}},\"title\":\"Permissioned pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"}},\"notice\":\"Contains pool methods that may only be called by the factory owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":\"IUniswapV3PoolOwnerActions\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissioned pool actions\\n/// @notice Contains pool methods that may only be called by the factory owner\\ninterface IUniswapV3PoolOwnerActions {\\n    /// @notice Set the denominator of the protocol's % share of the fees\\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\\n\\n    /// @notice Collect the protocol fee accrued to the pool\\n    /// @param recipient The address to which collected protocol fees should be sent\\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\\n    /// @return amount0 The protocol fee collected in token0\\n    /// @return amount1 The protocol fee collected in token1\\n    function collectProtocol(\\n        address recipient,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"collectProtocol(address,uint128,uint128)":{"notice":"Collect the protocol fee accrued to the pool"},"setFeeProtocol(uint8,uint8)":{"notice":"Set the denominator of the protocol's % share of the fees"}},"notice":"Contains pool methods that may only be called by the factory owner","version":1}}},"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"IUniswapV3PoolState":{"abi":[{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"_liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"feeGrowthGlobal0X128()":{"details":"This value can overflow the uint256"},"feeGrowthGlobal1X128()":{"details":"This value can overflow the uint256"},"liquidity()":{"details":"This value has no relationship to the total liquidity across all ticks"},"observations(uint256)":{"details":"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.","params":{"index":"The element of the observations array to fetch"},"returns":{"blockTimestamp":"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use"}},"positions(bytes32)":{"params":{"key":"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper"},"returns":{"_liquidity":"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke"}},"protocolFees()":{"details":"Protocol fees will never exceed uint128 max in either token"},"slot0()":{"returns":{"sqrtPriceX96":"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy"}},"ticks(int24)":{"params":{"tick":"The tick to look up"},"returns":{"liquidityGross":"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position."}}},"title":"Pool state that can change","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","liquidity()":"1a686502","observations(uint256)":"252c09d7","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","slot0()":"3850c7bd","tickBitmap(int16)":"5339c296","ticks(int24)":"f30dba93"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\"},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation, Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp, Returns initialized whether the observation has been initialized and the values are safe to use\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"_liquidity\":\"The amount of liquidity in the position, Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke, Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke, Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke, Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"slot0()\":{\"returns\":{\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value tick The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. observationIndex The index of the last oracle observation that was written, observationCardinality The current maximum number of observations stored in the pool, observationCardinalityNext The next maximum number of observations, to be updated when the observation. feeProtocol The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper, liquidityNet how much liquidity changes when the pool price crosses the tick, feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0, feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1, tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick, secondsOutside the seconds spent on the other side of the tick from the current tick, initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\"}}},\"title\":\"Pool state that can change\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"}},\"notice\":\"These methods compose the pool's state, and can change with any frequency including multiple times per transaction\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":\"IUniswapV3PoolState\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that can change\\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\\n/// per transaction\\ninterface IUniswapV3PoolState {\\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\\n    /// when accessed externally.\\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\\n    /// boundary.\\n    /// observationIndex The index of the last oracle observation that was written,\\n    /// observationCardinality The current maximum number of observations stored in the pool,\\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\\n    /// feeProtocol The protocol fee for both tokens of the pool.\\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\\n    /// unlocked Whether the pool is currently locked to reentrancy\\n    function slot0()\\n        external\\n        view\\n        returns (\\n            uint160 sqrtPriceX96,\\n            int24 tick,\\n            uint16 observationIndex,\\n            uint16 observationCardinality,\\n            uint16 observationCardinalityNext,\\n            uint8 feeProtocol,\\n            bool unlocked\\n        );\\n\\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal0X128() external view returns (uint256);\\n\\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal1X128() external view returns (uint256);\\n\\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\\n    /// @dev Protocol fees will never exceed uint128 max in either token\\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\\n\\n    /// @notice The currently in range liquidity available to the pool\\n    /// @dev This value has no relationship to the total liquidity across all ticks\\n    function liquidity() external view returns (uint128);\\n\\n    /// @notice Look up information about a specific tick in the pool\\n    /// @param tick The tick to look up\\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\\n    /// tick upper,\\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\\n    /// a specific position.\\n    function ticks(int24 tick)\\n        external\\n        view\\n        returns (\\n            uint128 liquidityGross,\\n            int128 liquidityNet,\\n            uint256 feeGrowthOutside0X128,\\n            uint256 feeGrowthOutside1X128,\\n            int56 tickCumulativeOutside,\\n            uint160 secondsPerLiquidityOutsideX128,\\n            uint32 secondsOutside,\\n            bool initialized\\n        );\\n\\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\\n\\n    /// @notice Returns the information about a position by the position's key\\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\\n    /// @return _liquidity The amount of liquidity in the position,\\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\\n    function positions(bytes32 key)\\n        external\\n        view\\n        returns (\\n            uint128 _liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    /// @notice Returns data about a specific observation index\\n    /// @param index The element of the observations array to fetch\\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\\n    /// ago, rather than at a specific index in the array.\\n    /// @return blockTimestamp The timestamp of the observation,\\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\\n    function observations(uint256 index)\\n        external\\n        view\\n        returns (\\n            uint32 blockTimestamp,\\n            int56 tickCumulative,\\n            uint160 secondsPerLiquidityCumulativeX128,\\n            bool initialized\\n        );\\n}\\n\",\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"feeGrowthGlobal0X128()":{"notice":"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool"},"feeGrowthGlobal1X128()":{"notice":"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool"},"liquidity()":{"notice":"The currently in range liquidity available to the pool"},"observations(uint256)":{"notice":"Returns data about a specific observation index"},"positions(bytes32)":{"notice":"Returns the information about a position by the position's key"},"protocolFees()":{"notice":"The amounts of token0 and token1 that are owed to the protocol"},"slot0()":{"notice":"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally."},"tickBitmap(int16)":{"notice":"Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"ticks(int24)":{"notice":"Look up information about a specific tick in the pool"}},"notice":"These methods compose the pool's state, and can change with any frequency including multiple times per transaction","version":1}}},"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol":{"IQuoter":{"abi":[{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"quoteExactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"quoteExactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"quoteExactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"name":"quoteExactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"These functions are not marked view because they rely on calling non-view functions and reverting to compute the result. They are also not gas efficient and should not be called on-chain.","kind":"dev","methods":{"quoteExactInput(bytes,uint256)":{"params":{"amountIn":"The amount of the first token to swap","path":"The path of the swap, i.e. each token pair and the pool fee"},"returns":{"amountOut":"The amount of the last token that would be received"}},"quoteExactInputSingle(address,address,uint24,uint256,uint160)":{"params":{"amountIn":"The desired input amount","fee":"The fee of the token pool to consider for the pair","sqrtPriceLimitX96":"The price limit of the pool that cannot be exceeded by the swap","tokenIn":"The token being swapped in","tokenOut":"The token being swapped out"},"returns":{"amountOut":"The amount of `tokenOut` that would be received"}},"quoteExactOutput(bytes,uint256)":{"params":{"amountOut":"The amount of the last token to receive","path":"The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order"},"returns":{"amountIn":"The amount of first token required to be paid"}},"quoteExactOutputSingle(address,address,uint24,uint256,uint160)":{"params":{"amountOut":"The desired output amount","fee":"The fee of the token pool to consider for the pair","sqrtPriceLimitX96":"The price limit of the pool that cannot be exceeded by the swap","tokenIn":"The token being swapped in","tokenOut":"The token being swapped out"},"returns":{"amountIn":"The amount required as the input for the swap in order to receive `amountOut`"}}},"title":"Quoter Interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"quoteExactInput(bytes,uint256)":"cdca1753","quoteExactInputSingle(address,address,uint24,uint256,uint160)":"f7729d43","quoteExactOutput(bytes,uint256)":"2f80bb1d","quoteExactOutputSingle(address,address,uint24,uint256,uint160)":"30d07f21"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"quoteExactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"quoteExactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These functions are not marked view because they rely on calling non-view functions and reverting to compute the result. They are also not gas efficient and should not be called on-chain.\",\"kind\":\"dev\",\"methods\":{\"quoteExactInput(bytes,uint256)\":{\"params\":{\"amountIn\":\"The amount of the first token to swap\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee\"},\"returns\":{\"amountOut\":\"The amount of the last token that would be received\"}},\"quoteExactInputSingle(address,address,uint24,uint256,uint160)\":{\"params\":{\"amountIn\":\"The desired input amount\",\"fee\":\"The fee of the token pool to consider for the pair\",\"sqrtPriceLimitX96\":\"The price limit of the pool that cannot be exceeded by the swap\",\"tokenIn\":\"The token being swapped in\",\"tokenOut\":\"The token being swapped out\"},\"returns\":{\"amountOut\":\"The amount of `tokenOut` that would be received\"}},\"quoteExactOutput(bytes,uint256)\":{\"params\":{\"amountOut\":\"The amount of the last token to receive\",\"path\":\"The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\"},\"returns\":{\"amountIn\":\"The amount of first token required to be paid\"}},\"quoteExactOutputSingle(address,address,uint24,uint256,uint160)\":{\"params\":{\"amountOut\":\"The desired output amount\",\"fee\":\"The fee of the token pool to consider for the pair\",\"sqrtPriceLimitX96\":\"The price limit of the pool that cannot be exceeded by the swap\",\"tokenIn\":\"The token being swapped in\",\"tokenOut\":\"The token being swapped out\"},\"returns\":{\"amountIn\":\"The amount required as the input for the swap in order to receive `amountOut`\"}}},\"title\":\"Quoter Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"quoteExactInput(bytes,uint256)\":{\"notice\":\"Returns the amount out received for a given exact input swap without executing the swap\"},\"quoteExactInputSingle(address,address,uint24,uint256,uint160)\":{\"notice\":\"Returns the amount out received for a given exact input but for a swap of a single pool\"},\"quoteExactOutput(bytes,uint256)\":{\"notice\":\"Returns the amount in required for a given exact output swap without executing the swap\"},\"quoteExactOutputSingle(address,address,uint24,uint256,uint160)\":{\"notice\":\"Returns the amount in required to receive the given exact output amount but for a swap of a single pool\"}},\"notice\":\"Supports quoting the calculated amounts from exact input or exact output swaps\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol\":\"IQuoter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.7.5;\\npragma abicoder v2;\\n\\n/// @title Quoter Interface\\n/// @notice Supports quoting the calculated amounts from exact input or exact output swaps\\n/// @dev These functions are not marked view because they rely on calling non-view functions and reverting\\n/// to compute the result. They are also not gas efficient and should not be called on-chain.\\ninterface IQuoter {\\n    /// @notice Returns the amount out received for a given exact input swap without executing the swap\\n    /// @param path The path of the swap, i.e. each token pair and the pool fee\\n    /// @param amountIn The amount of the first token to swap\\n    /// @return amountOut The amount of the last token that would be received\\n    function quoteExactInput(bytes memory path, uint256 amountIn) external returns (uint256 amountOut);\\n\\n    /// @notice Returns the amount out received for a given exact input but for a swap of a single pool\\n    /// @param tokenIn The token being swapped in\\n    /// @param tokenOut The token being swapped out\\n    /// @param fee The fee of the token pool to consider for the pair\\n    /// @param amountIn The desired input amount\\n    /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\\n    /// @return amountOut The amount of `tokenOut` that would be received\\n    function quoteExactInputSingle(\\n        address tokenIn,\\n        address tokenOut,\\n        uint24 fee,\\n        uint256 amountIn,\\n        uint160 sqrtPriceLimitX96\\n    ) external returns (uint256 amountOut);\\n\\n    /// @notice Returns the amount in required for a given exact output swap without executing the swap\\n    /// @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\\n    /// @param amountOut The amount of the last token to receive\\n    /// @return amountIn The amount of first token required to be paid\\n    function quoteExactOutput(bytes memory path, uint256 amountOut) external returns (uint256 amountIn);\\n\\n    /// @notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\\n    /// @param tokenIn The token being swapped in\\n    /// @param tokenOut The token being swapped out\\n    /// @param fee The fee of the token pool to consider for the pair\\n    /// @param amountOut The desired output amount\\n    /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\\n    /// @return amountIn The amount required as the input for the swap in order to receive `amountOut`\\n    function quoteExactOutputSingle(\\n        address tokenIn,\\n        address tokenOut,\\n        uint24 fee,\\n        uint256 amountOut,\\n        uint160 sqrtPriceLimitX96\\n    ) external returns (uint256 amountIn);\\n}\\n\",\"keccak256\":\"0x124b4334f058f70afd8f3b04315cc0812961d400957225d0875872b2a31afbff\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"quoteExactInput(bytes,uint256)":{"notice":"Returns the amount out received for a given exact input swap without executing the swap"},"quoteExactInputSingle(address,address,uint24,uint256,uint160)":{"notice":"Returns the amount out received for a given exact input but for a swap of a single pool"},"quoteExactOutput(bytes,uint256)":{"notice":"Returns the amount in required for a given exact output swap without executing the swap"},"quoteExactOutputSingle(address,address,uint24,uint256,uint160)":{"notice":"Returns the amount in required to receive the given exact output amount but for a swap of a single pool"}},"notice":"Supports quoting the calculated amounts from exact input or exact output swaps","version":1}}},"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol":{"ISwapRouter":{"abi":[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"exactInput((bytes,address,uint256,uint256,uint256))":{"params":{"params":"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata"},"returns":{"amountOut":"The amount of the received token"}},"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":{"params":{"params":"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata"},"returns":{"amountOut":"The amount of the received token"}},"exactOutput((bytes,address,uint256,uint256,uint256))":{"params":{"params":"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata"},"returns":{"amountIn":"The amount of the input token"}},"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":{"params":{"params":"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata"},"returns":{"amountIn":"The amount of the input token"}},"uniswapV3SwapCallback(int256,int256,bytes)":{"details":"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.","params":{"amount0Delta":"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.","amount1Delta":"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.","data":"Any data passed through by the caller via the IUniswapV3PoolActions#swap call"}}},"title":"Router token swapping functionality","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Router token swapping functionality\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token\"},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Functions for swapping tokens via Uniswap V3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":\"ISwapRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Callback for IUniswapV3PoolActions#swap\\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\\ninterface IUniswapV3SwapCallback {\\n    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\\n    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\\n    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\\n    function uniswapV3SwapCallback(\\n        int256 amount0Delta,\\n        int256 amount1Delta,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.7.5;\\npragma abicoder v2;\\n\\nimport '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';\\n\\n/// @title Router token swapping functionality\\n/// @notice Functions for swapping tokens via Uniswap V3\\ninterface ISwapRouter is IUniswapV3SwapCallback {\\n    struct ExactInputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Swaps `amountIn` of one token for as much as possible of another token\\n    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\\n    /// @return amountOut The amount of the received token\\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\\n\\n    struct ExactInputParams {\\n        bytes path;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n    }\\n\\n    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\\n    /// @return amountOut The amount of the received token\\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\\n\\n    struct ExactOutputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountOut;\\n        uint256 amountInMaximum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Swaps as little as possible of one token for `amountOut` of another token\\n    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\\n    /// @return amountIn The amount of the input token\\n    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\\n\\n    struct ExactOutputParams {\\n        bytes path;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountOut;\\n        uint256 amountInMaximum;\\n    }\\n\\n    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\\n    /// @return amountIn The amount of the input token\\n    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\\n}\\n\",\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"exactInput((bytes,address,uint256,uint256,uint256))":{"notice":"Swaps `amountIn` of one token for as much as possible of another along the specified path"},"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":{"notice":"Swaps `amountIn` of one token for as much as possible of another token"},"exactOutput((bytes,address,uint256,uint256,uint256))":{"notice":"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)"},"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":{"notice":"Swaps as little as possible of one token for `amountOut` of another token"},"uniswapV3SwapCallback(int256,int256,bytes)":{"notice":"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."}},"notice":"Functions for swapping tokens via Uniswap V3","version":1}}},"contracts/interfaces/I1inchSpotAgg.sol":{"I1inchSpotAgg":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"srcToken","type":"address"},{"internalType":"contract IERC20","name":"dstToken","type":"address"},{"internalType":"bool","name":"useWrappers","type":"bool"}],"name":"getRate","outputs":[{"internalType":"uint256","name":"weightedRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"srcToken","type":"address"},{"internalType":"bool","name":"useWrappers","type":"bool"}],"name":"getRateToEth","outputs":[{"internalType":"uint256","name":"weightedRate","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getRate(address,address,bool)":"802431fb","getRateToEth(address,bool)":"7de4fd10"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"srcToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"dstToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useWrappers\",\"type\":\"bool\"}],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weightedRate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"srcToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useWrappers\",\"type\":\"bool\"}],\"name\":\"getRateToEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weightedRate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/I1inchSpotAgg.sol\":\"I1inchSpotAgg\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"contracts/interfaces/I1inchSpotAgg.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\n\\r\\ninterface I1inchSpotAgg {\\r\\n  function getRate(IERC20 srcToken, IERC20 dstToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n\\r\\n  function getRateToEth(IERC20 srcToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n}\\r\\n\",\"keccak256\":\"0x29417a441b068263f01adb36906270f1b76431d3017d214f506824ee41ada1b3\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Agent.sol":{"IBaluniV1Agent":{"abi":[{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IBaluniV1Agent.Call[]","name":"calls","type":"tuple[]"},{"internalType":"address[]","name":"tokensReturn","type":"address[]"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"execute((address,uint256,bytes)[],address[])":"eedc3c50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBaluniV1Agent.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensReturn\",\"type\":\"address[]\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Agent.sol\":\"IBaluniV1Agent\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Agent.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Agent {\\r\\n  struct Call {\\r\\n    address to;\\r\\n    uint256 value;\\r\\n    bytes data;\\r\\n  }\\r\\n\\r\\n  function execute(Call[] memory calls, address[] memory tokensReturn) external;\\r\\n}\\r\\n\",\"keccak256\":\"0x1bbf5ddbc4f525451e727d6997e6a20a6238d69232b58b3813760a16e7f60bbe\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1AgentFactory.sol":{"IBaluniV1AgentFactory":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getAgentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getOrCreateAgent","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getAgentAddress(address)":"27d54a92","getOrCreateAgent(address)":"9b76a5cd","getRegistry()":"5ab1bd53"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getAgentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getOrCreateAgent\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1AgentFactory.sol\":\"IBaluniV1AgentFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1AgentFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1AgentFactory {\\r\\n    function getAgentAddress(address user) external view returns (address);\\r\\n\\r\\n    function getOrCreateAgent(address user) external returns (address);\\r\\n\\r\\n    function getRegistry() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x7de0683d187e1b0dbbffde17f943b24e1481351949e7b292a9bff33cdc4b3d71\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1DCAVault.sol":{"IBaluniV1DCAVault":{"abi":[{"inputs":[],"name":"baseAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quoteAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"baseAsset()":"cdf456e1","deposit(uint256,address)":"6e553f65","lastDeposit()":"36b77107","pause()":"8456cb59","quoteAsset()":"fdf262b7","registry()":"7b103999","totalValuation()":"295b9300","unitPrice()":"e73faa2d","unpause()":"3f4ba83a","withdraw(uint256,address)":"00f714ce"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"baseAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoteAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1DCAVault.sol\":\"IBaluniV1DCAVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1DCAVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1DCAVault {\\r\\n    function baseAsset() external view returns (address);\\r\\n    function quoteAsset() external view returns (address);\\r\\n    function registry() external view returns (address);\\r\\n    function lastDeposit() external view returns (uint256);\\r\\n    function deposit(uint256 amount, address to) external;\\r\\n    function withdraw(uint256 shares, address to) external;\\r\\n    function pause() external;\\r\\n    function unpause() external;\\r\\n    function totalValuation() external view returns (uint256);\\r\\n    function unitPrice() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0xc7fa68680d00716d3c09298f77099f8a8afe02bf6030819587408e5f152eb088\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1HyperUniProxy.sol":{"IBaluniV1HyperUniProxy":{"abi":[{"inputs":[],"name":"clearance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"deposit0","type":"uint256"},{"internalType":"uint256","name":"deposit1","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"pos","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pos","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_deposit","type":"uint256"}],"name":"getDepositAmount","outputs":[{"internalType":"uint256","name":"amountStart","type":"uint256"},{"internalType":"uint256","name":"amountEnd","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"clearance()":"14897194","deposit(uint256,uint256,address,address,address)":"e6d7b876","getDepositAmount(address,address,uint256)":"5ccfb71d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"clearance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deposit0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deposit1\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pos\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pos\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_deposit\",\"type\":\"uint256\"}],\"name\":\"getDepositAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountEnd\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1HyperUniProxy.sol\":\"IBaluniV1HyperUniProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1HyperUniProxy.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\ninterface IBaluniV1HyperUniProxy {\\r\\n    function deposit(\\r\\n        uint256 deposit0,\\r\\n        uint256 deposit1,\\r\\n        address to,\\r\\n        address from,\\r\\n        address pos\\r\\n    ) external returns (uint256 shares);\\r\\n\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function clearance() external returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x02f2efa00b8f693dba548171d226f6c916414083906b7ab8c3a8d2ebdb5f4470\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Hypervisor.sol":{"IBaluniV1Hypervisor":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256[2]","name":"minIn","type":"uint256[2]"}],"name":"addBaseLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256[2]","name":"minIn","type":"uint256[2]"}],"name":"addLimitLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256[2]","name":"inMin","type":"uint256[2]"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","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":"baseLower","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseUpper","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[4]","name":"inMin","type":"uint256[4]"}],"name":"compound","outputs":[{"internalType":"uint128","name":"baseToken0Owed","type":"uint128"},{"internalType":"uint128","name":"baseToken1Owed","type":"uint128"},{"internalType":"uint128","name":"limitToken0Owed","type":"uint128"},{"internalType":"uint128","name":"limitToken1Owed","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[{"internalType":"uint128","name":"baseToken0Owed","type":"uint128"},{"internalType":"uint128","name":"baseToken1Owed","type":"uint128"},{"internalType":"uint128","name":"limitToken0Owed","type":"uint128"},{"internalType":"uint128","name":"limitToken1Owed","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentTick","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[4]","name":"minIn","type":"uint256[4]"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit0Max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit1Max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBasePosition","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"total0","type":"uint256"},{"internalType":"uint256","name":"total1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAmounts","outputs":[{"internalType":"uint256","name":"total0","type":"uint256"},{"internalType":"uint256","name":"total1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitLower","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitUpper","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"contract IUniswapV3Pool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256[4]","name":"minAmounts","type":"uint256[4]"}],"name":"pullLiquidity","outputs":[{"internalType":"uint256","name":"base0","type":"uint256"},{"internalType":"uint256","name":"base1","type":"uint256"},{"internalType":"uint256","name":"limit0","type":"uint256"},{"internalType":"uint256","name":"limit1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"shares","type":"uint128"},{"internalType":"uint256[2]","name":"amountMin","type":"uint256[2]"}],"name":"pullLiquidity","outputs":[{"internalType":"uint256","name":"base0","type":"uint256"},{"internalType":"uint256","name":"base1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"_baseLower","type":"int24"},{"internalType":"int24","name":"_baseUpper","type":"int24"},{"internalType":"int24","name":"_limitLower","type":"int24"},{"internalType":"int24","name":"_limitUpper","type":"int24"},{"internalType":"address","name":"_feeRecipient","type":"address"},{"internalType":"uint256[4]","name":"minIn","type":"uint256[4]"},{"internalType":"uint256[4]","name":"outMin","type":"uint256[4]"}],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newFee","type":"uint8"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"spacing","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleDirectDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[4]","name":"","type":"uint256[4]"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"addBaseLiquidity(uint256,uint256,uint256[2])":"2527aa1d","addLimitLiquidity(uint256,uint256,uint256[2])":"49e8f1c2","addLiquidity(int24,int24,uint256,uint256,uint256[2])":"63e96836","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseLower()":"fa082743","baseUpper()":"888a9134","compound()":"f69e2046","compound(uint256[4])":"513ea884","currentTick()":"065e5360","deposit(uint256,uint256,address,address,uint256[4])":"8e3c92e4","deposit0Max()":"648cab85","deposit1Max()":"4d461fbb","getBasePosition()":"d2eabcfc","getTotalAmounts()":"c4a7761e","limitLower()":"51e87af7","limitUpper()":"0f35bcac","pool()":"16f0115b","pullLiquidity(int24,int24,uint128,uint256[2])":"95235656","pullLiquidity(uint256,uint256[4])":"1bead8f3","rebalance(int24,int24,int24,int24,address,uint256[4],uint256[4])":"85919c5d","removeWhitelisted()":"c5241e29","setFee(uint8)":"cb122a09","setWhitelist(address)":"854cff2f","tickSpacing()":"d0c93a7c","toggleDirectDeposit()":"b1a3d533","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","withdraw(uint256,address,address,uint256[4])":"a8559872"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"minIn\",\"type\":\"uint256[2]\"}],\"name\":\"addBaseLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"minIn\",\"type\":\"uint256[2]\"}],\"name\":\"addLimitLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"inMin\",\"type\":\"uint256[2]\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"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\":\"baseLower\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseUpper\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"inMin\",\"type\":\"uint256[4]\"}],\"name\":\"compound\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"baseToken0Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"baseToken1Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"limitToken0Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"limitToken1Owed\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"compound\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"baseToken0Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"baseToken1Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"limitToken0Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"limitToken1Owed\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentTick\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"minIn\",\"type\":\"uint256[4]\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit0Max\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit1Max\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasePosition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitLower\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitUpper\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256[4]\",\"name\":\"minAmounts\",\"type\":\"uint256[4]\"}],\"name\":\"pullLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"base0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"base1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"shares\",\"type\":\"uint128\"},{\"internalType\":\"uint256[2]\",\"name\":\"amountMin\",\"type\":\"uint256[2]\"}],\"name\":\"pullLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"base0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"base1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"_baseLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"_baseUpper\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"_limitLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"_limitUpper\",\"type\":\"int24\"},{\"internalType\":\"address\",\"name\":\"_feeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"minIn\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"outMin\",\"type\":\"uint256[4]\"}],\"name\":\"rebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newFee\",\"type\":\"uint8\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"spacing\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleDirectDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"\",\"type\":\"uint256[4]\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Hypervisor.sol\":\"IBaluniV1Hypervisor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\nimport './pool/IUniswapV3PoolImmutables.sol';\\nimport './pool/IUniswapV3PoolState.sol';\\nimport './pool/IUniswapV3PoolDerivedState.sol';\\nimport './pool/IUniswapV3PoolActions.sol';\\nimport './pool/IUniswapV3PoolOwnerActions.sol';\\nimport './pool/IUniswapV3PoolEvents.sol';\\n\\n/// @title The interface for a Uniswap V3 Pool\\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\\n/// to the ERC20 specification\\n/// @dev The pool interface is broken up into many smaller pieces\\ninterface IUniswapV3Pool is\\n    IUniswapV3PoolImmutables,\\n    IUniswapV3PoolState,\\n    IUniswapV3PoolDerivedState,\\n    IUniswapV3PoolActions,\\n    IUniswapV3PoolOwnerActions,\\n    IUniswapV3PoolEvents\\n{\\n\\n}\\n\",\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissionless pool actions\\n/// @notice Contains pool methods that can be called by anyone\\ninterface IUniswapV3PoolActions {\\n    /// @notice Sets the initial price for the pool\\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\\n    function initialize(uint160 sqrtPriceX96) external;\\n\\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\\n    /// @param recipient The address for which the liquidity will be created\\n    /// @param tickLower The lower tick of the position in which to add liquidity\\n    /// @param tickUpper The upper tick of the position in which to add liquidity\\n    /// @param amount The amount of liquidity to mint\\n    /// @param data Any data that should be passed through to the callback\\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    function mint(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount,\\n        bytes calldata data\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects tokens owed to a position\\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\\n    /// @param recipient The address which should receive the fees collected\\n    /// @param tickLower The lower tick of the position for which to collect fees\\n    /// @param tickUpper The upper tick of the position for which to collect fees\\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n\\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\\n    /// @dev Fees must be collected separately via a call to #collect\\n    /// @param tickLower The lower tick of the position for which to burn liquidity\\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\\n    /// @param amount How much liquidity to burn\\n    /// @return amount0 The amount of token0 sent to the recipient\\n    /// @return amount1 The amount of token1 sent to the recipient\\n    function burn(\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Swap token0 for token1, or token1 for token0\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\\n    /// @param recipient The address to receive the output of the swap\\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\\n    /// @param data Any data to be passed through to the callback\\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\\n    function swap(\\n        address recipient,\\n        bool zeroForOne,\\n        int256 amountSpecified,\\n        uint160 sqrtPriceLimitX96,\\n        bytes calldata data\\n    ) external returns (int256 amount0, int256 amount1);\\n\\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\\n    /// @param recipient The address which will receive the token0 and token1 amounts\\n    /// @param amount0 The amount of token0 to send\\n    /// @param amount1 The amount of token1 to send\\n    /// @param data Any data to be passed through to the callback\\n    function flash(\\n        address recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        bytes calldata data\\n    ) external;\\n\\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\\n    /// the input observationCardinalityNext.\\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\\n}\\n\",\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that is not stored\\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\\n/// blockchain. The functions here may have variable gas costs.\\ninterface IUniswapV3PoolDerivedState {\\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\\n    /// you must call it with secondsAgos = [3600, 0].\\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\\n    /// timestamp\\n    function observe(uint32[] calldata secondsAgos)\\n        external\\n        view\\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\\n\\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\\n    /// snapshot is taken and the second snapshot is taken.\\n    /// @param tickLower The lower tick of the range\\n    /// @param tickUpper The upper tick of the range\\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\\n        external\\n        view\\n        returns (\\n            int56 tickCumulativeInside,\\n            uint160 secondsPerLiquidityInsideX128,\\n            uint32 secondsInside\\n        );\\n}\\n\",\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Events emitted by a pool\\n/// @notice Contains all events emitted by the pool\\ninterface IUniswapV3PoolEvents {\\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\\n\\n    /// @notice Emitted when liquidity is minted for a given position\\n    /// @param sender The address that minted the liquidity\\n    /// @param owner The owner of the position and recipient of any minted liquidity\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity minted to the position range\\n    /// @param amount0 How much token0 was required for the minted liquidity\\n    /// @param amount1 How much token1 was required for the minted liquidity\\n    event Mint(\\n        address sender,\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted when fees are collected by the owner of a position\\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\\n    /// @param owner The owner of the position for which fees are collected\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount0 The amount of token0 fees collected\\n    /// @param amount1 The amount of token1 fees collected\\n    event Collect(\\n        address indexed owner,\\n        address recipient,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount0,\\n        uint128 amount1\\n    );\\n\\n    /// @notice Emitted when a position's liquidity is removed\\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\\n    /// @param owner The owner of the position for which liquidity is removed\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity to remove\\n    /// @param amount0 The amount of token0 withdrawn\\n    /// @param amount1 The amount of token1 withdrawn\\n    event Burn(\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted by the pool for any swaps between token0 and token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the output of the swap\\n    /// @param amount0 The delta of the token0 balance of the pool\\n    /// @param amount1 The delta of the token1 balance of the pool\\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\\n    /// @param liquidity The liquidity of the pool after the swap\\n    /// @param tick The log base 1.0001 of price of the pool after the swap\\n    event Swap(\\n        address indexed sender,\\n        address indexed recipient,\\n        int256 amount0,\\n        int256 amount1,\\n        uint160 sqrtPriceX96,\\n        uint128 liquidity,\\n        int24 tick\\n    );\\n\\n    /// @notice Emitted by the pool for any flashes of token0/token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the tokens from flash\\n    /// @param amount0 The amount of token0 that was flashed\\n    /// @param amount1 The amount of token1 that was flashed\\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\\n    event Flash(\\n        address indexed sender,\\n        address indexed recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        uint256 paid0,\\n        uint256 paid1\\n    );\\n\\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\\n    /// just before a mint/swap/burn.\\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\\n    event IncreaseObservationCardinalityNext(\\n        uint16 observationCardinalityNextOld,\\n        uint16 observationCardinalityNextNew\\n    );\\n\\n    /// @notice Emitted when the protocol fee is changed by the pool\\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\\n\\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\\n    /// @param sender The address that collects the protocol fees\\n    /// @param recipient The address that receives the collected protocol fees\\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that never changes\\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\\ninterface IUniswapV3PoolImmutables {\\n    /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\\n    /// @return The contract address\\n    function factory() external view returns (address);\\n\\n    /// @notice The first of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token0() external view returns (address);\\n\\n    /// @notice The second of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token1() external view returns (address);\\n\\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\\n    /// @return The fee\\n    function fee() external view returns (uint24);\\n\\n    /// @notice The pool tick spacing\\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\\n    /// This value is an int24 to avoid casting even though it is always positive.\\n    /// @return The tick spacing\\n    function tickSpacing() external view returns (int24);\\n\\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\\n    /// @return The max amount of liquidity per tick\\n    function maxLiquidityPerTick() external view returns (uint128);\\n}\\n\",\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissioned pool actions\\n/// @notice Contains pool methods that may only be called by the factory owner\\ninterface IUniswapV3PoolOwnerActions {\\n    /// @notice Set the denominator of the protocol's % share of the fees\\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\\n\\n    /// @notice Collect the protocol fee accrued to the pool\\n    /// @param recipient The address to which collected protocol fees should be sent\\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\\n    /// @return amount0 The protocol fee collected in token0\\n    /// @return amount1 The protocol fee collected in token1\\n    function collectProtocol(\\n        address recipient,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that can change\\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\\n/// per transaction\\ninterface IUniswapV3PoolState {\\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\\n    /// when accessed externally.\\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\\n    /// boundary.\\n    /// observationIndex The index of the last oracle observation that was written,\\n    /// observationCardinality The current maximum number of observations stored in the pool,\\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\\n    /// feeProtocol The protocol fee for both tokens of the pool.\\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\\n    /// unlocked Whether the pool is currently locked to reentrancy\\n    function slot0()\\n        external\\n        view\\n        returns (\\n            uint160 sqrtPriceX96,\\n            int24 tick,\\n            uint16 observationIndex,\\n            uint16 observationCardinality,\\n            uint16 observationCardinalityNext,\\n            uint8 feeProtocol,\\n            bool unlocked\\n        );\\n\\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal0X128() external view returns (uint256);\\n\\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal1X128() external view returns (uint256);\\n\\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\\n    /// @dev Protocol fees will never exceed uint128 max in either token\\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\\n\\n    /// @notice The currently in range liquidity available to the pool\\n    /// @dev This value has no relationship to the total liquidity across all ticks\\n    function liquidity() external view returns (uint128);\\n\\n    /// @notice Look up information about a specific tick in the pool\\n    /// @param tick The tick to look up\\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\\n    /// tick upper,\\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\\n    /// a specific position.\\n    function ticks(int24 tick)\\n        external\\n        view\\n        returns (\\n            uint128 liquidityGross,\\n            int128 liquidityNet,\\n            uint256 feeGrowthOutside0X128,\\n            uint256 feeGrowthOutside1X128,\\n            int56 tickCumulativeOutside,\\n            uint160 secondsPerLiquidityOutsideX128,\\n            uint32 secondsOutside,\\n            bool initialized\\n        );\\n\\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\\n\\n    /// @notice Returns the information about a position by the position's key\\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\\n    /// @return _liquidity The amount of liquidity in the position,\\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\\n    function positions(bytes32 key)\\n        external\\n        view\\n        returns (\\n            uint128 _liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    /// @notice Returns data about a specific observation index\\n    /// @param index The element of the observations array to fetch\\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\\n    /// ago, rather than at a specific index in the array.\\n    /// @return blockTimestamp The timestamp of the observation,\\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\\n    function observations(uint256 index)\\n        external\\n        view\\n        returns (\\n            uint32 blockTimestamp,\\n            int56 tickCumulative,\\n            uint160 secondsPerLiquidityCumulativeX128,\\n            bool initialized\\n        );\\n}\\n\",\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/IBaluniV1Hypervisor.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-only\\r\\npragma solidity 0.8.25;\\r\\npragma abicoder v2;\\r\\n\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';\\r\\n\\r\\ninterface IBaluniV1Hypervisor {\\r\\n    function deposit(uint256, uint256, address, address, uint256[4] memory minIn) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256, address, address, uint256[4] memory) external returns (uint256, uint256);\\r\\n\\r\\n    function compound()\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function compound(\\r\\n        uint256[4] memory inMin\\r\\n    )\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function rebalance(\\r\\n        int24 _baseLower,\\r\\n        int24 _baseUpper,\\r\\n        int24 _limitLower,\\r\\n        int24 _limitUpper,\\r\\n        address _feeRecipient,\\r\\n        uint256[4] memory minIn,\\r\\n        uint256[4] memory outMin\\r\\n    ) external;\\r\\n\\r\\n    function addBaseLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function addLimitLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function pullLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint128 shares,\\r\\n        uint256[2] memory amountMin\\r\\n    ) external returns (uint256 base0, uint256 base1);\\r\\n\\r\\n    function pullLiquidity(\\r\\n        uint256 shares,\\r\\n        uint256[4] memory minAmounts\\r\\n    ) external returns (uint256 base0, uint256 base1, uint256 limit0, uint256 limit1);\\r\\n\\r\\n    function addLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint256 amount0,\\r\\n        uint256 amount1,\\r\\n        uint256[2] memory inMin\\r\\n    ) external;\\r\\n\\r\\n    function pool() external view returns (IUniswapV3Pool);\\r\\n\\r\\n    function currentTick() external view returns (int24 tick);\\r\\n\\r\\n    function tickSpacing() external view returns (int24 spacing);\\r\\n\\r\\n    function baseLower() external view returns (int24 tick);\\r\\n\\r\\n    function baseUpper() external view returns (int24 tick);\\r\\n\\r\\n    function limitLower() external view returns (int24 tick);\\r\\n\\r\\n    function limitUpper() external view returns (int24 tick);\\r\\n\\r\\n    function token0() external view returns (address);\\r\\n\\r\\n    function token1() external view returns (address);\\r\\n\\r\\n    function deposit0Max() external view returns (uint256);\\r\\n\\r\\n    function deposit1Max() external view returns (uint256);\\r\\n\\r\\n    function balanceOf(address) external view returns (uint256);\\r\\n\\r\\n    function approve(address, uint256) external returns (bool);\\r\\n\\r\\n    function transferFrom(address, address, uint256) external returns (bool);\\r\\n\\r\\n    function transfer(address, uint256) external returns (bool);\\r\\n\\r\\n    function getTotalAmounts() external view returns (uint256 total0, uint256 total1);\\r\\n\\r\\n    function getBasePosition() external view returns (uint256 liquidity, uint256 total0, uint256 total1);\\r\\n\\r\\n    function totalSupply() external view returns (uint256);\\r\\n\\r\\n    function setWhitelist(address _address) external;\\r\\n\\r\\n    function setFee(uint8 newFee) external;\\r\\n\\r\\n    function removeWhitelisted() external;\\r\\n\\r\\n    function transferOwnership(address newOwner) external;\\r\\n\\r\\n    function toggleDirectDeposit() external;\\r\\n}\\r\\n\",\"keccak256\":\"0xd87a0b5b61ae37a4692442030c36843651c366d804c3582e8cc571dbd6e5e8e5\",\"license\":\"GPL-3.0-only\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Oracle.sol":{"IBaluniV1Oracle":{"abi":[{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convert","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertScaled","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"convert(address,address,uint256)":"248391ff","convertScaled(address,address,uint256)":"b27b5e75"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Oracle.sol\":\"IBaluniV1Oracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Pool.sol":{"IBaluniV1Pool":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address[]","name":"assets","type":"address[]"}],"name":"RebalancePerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"fromToken","type":"address"},{"indexed":false,"internalType":"address","name":"toToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"amountsToAdd","type":"uint256[]"}],"name":"WeightsRebalanced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"assetIndex","type":"uint256"}],"name":"assetLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getAssetReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAssets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getDeviationForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeviations","outputs":[{"internalType":"bool[]","name":"directions","type":"bool[]"},{"internalType":"uint256[]","name":"deviations","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getSlippage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSlippageParams","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWeights","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRebalanceNeeded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"quotePotentialSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"rebalanceAndDeposit","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"totalVal","type":"uint256"},{"internalType":"uint256[]","name":"valuations","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the BaluniV1Pool contract","kind":"dev","methods":{},"title":"IBaluniV1Pool","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"assetLiquidity(uint256)":"cf8fa764","deposit(address,uint256[],uint256)":"b3bf9d32","getAmountOut(address,address,uint256)":"4aa06652","getAssetReserve(address)":"b2b55d70","getAssets()":"67e4ac2c","getDeviationForToken(address)":"89b3179b","getDeviations()":"b7110e13","getReserves()":"0902f1ac","getSlippage(address)":"12899068","getSlippageParams()":"7ff1c179","getTokenWeight(address)":"250aa683","getWeights()":"22acb867","isRebalanceNeeded()":"8a77c8dc","liquidity()":"1a686502","quotePotentialSwap(address,address,uint256)":"43c2e2f5","rebalance()":"7d7c2a1c","rebalanceAndDeposit(address)":"8de30f30","swap(address,address,uint256,uint256,address,uint256)":"9908fc8b","totalValuation()":"295b9300","unitPrice()":"e73faa2d","withdraw(uint256,address,uint256)":"e63697c8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"RebalancePerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsToAdd\",\"type\":\"uint256[]\"}],\"name\":\"WeightsRebalanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"}],\"name\":\"assetLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getAssetReserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDeviationForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeviations\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"directions\",\"type\":\"bool[]\"},{\"internalType\":\"uint256[]\",\"name\":\"deviations\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getSlippage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlippageParams\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWeights\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isRebalanceNeeded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"quotePotentialSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"rebalanceAndDeposit\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalVal\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"valuations\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the BaluniV1Pool contract\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IBaluniV1Pool\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Pool.sol\":\"IBaluniV1Pool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Pool\\r\\n * @dev Interface for the BaluniV1Pool contract\\r\\n */\\r\\ninterface IBaluniV1Pool {\\r\\n    struct AssetInfo {\\r\\n        address asset;\\r\\n        uint256 weight;\\r\\n        uint256 slippage;\\r\\n        uint256 reserve;\\r\\n    }\\r\\n\\r\\n    event WeightsRebalanced(address indexed user, uint256[] amountsToAdd);\\r\\n    event Swap(address indexed user, address fromToken, address toToken, uint256 amountIn, uint256 amountOut);\\r\\n    event Withdraw(address indexed user, uint256 amount);\\r\\n    event Deposit(address indexed user, uint256 amount);\\r\\n    event RebalancePerformed(address indexed user, address[] assets);\\r\\n\\r\\n    function rebalanceAndDeposit(address receiver) external returns (uint256[] memory);\\r\\n\\r\\n    function swap(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount,\\r\\n        uint256 minAmount,\\r\\n        address receiver,\\r\\n        uint256 deadline\\r\\n    ) external returns (uint256 amountOut, uint256 fee);\\r\\n\\r\\n    function quotePotentialSwap(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function getSlippage(address token) external view returns (uint256);\\r\\n\\r\\n    function getTokenWeight(address token) external view returns (uint256);\\r\\n\\r\\n    function getDeviationForToken(address token) external view returns (uint256);\\r\\n\\r\\n    function getSlippageParams() external view returns (uint256[] memory);\\r\\n\\r\\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\\r\\n\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function rebalance() external;\\r\\n\\r\\n    function getDeviations() external view returns (bool[] memory directions, uint256[] memory deviations);\\r\\n\\r\\n    function assetLiquidity(uint256 assetIndex) external view returns (uint256);\\r\\n\\r\\n    function totalValuation() external view returns (uint256 totalVal, uint256[] memory valuations);\\r\\n\\r\\n    function liquidity() external view returns (uint256);\\r\\n\\r\\n    function unitPrice() external view returns (uint256);\\r\\n\\r\\n    function getReserves() external view returns (uint256[] memory);\\r\\n\\r\\n    function getAssetReserve(address asset) external view returns (uint256);\\r\\n\\r\\n    function getAssets() external view returns (address[] memory);\\r\\n\\r\\n    function getWeights() external view returns (uint256[] memory);\\r\\n\\r\\n    function isRebalanceNeeded() external view returns (bool);\\r\\n}\\r\\n\",\"keccak256\":\"0xee1a088737643c523dd1651cb6b00182d35a9365426a04493680682b38ea16d6\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1PoolPeriphery.sol":{"IBaluniV1PoolPeriphery":{"abi":[{"inputs":[{"internalType":"address[]","name":"fromTokens","type":"address[]"},{"internalType":"address[]","name":"toTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"receivers","type":"address[]"}],"name":"batchSwap","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPoolsContainingToken","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"uint64","name":"version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"fromAmount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokenForToken","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"haircut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenPath","type":"address[]"},{"internalType":"address[]","name":"poolPath","type":"address[]"},{"internalType":"uint256","name":"fromAmount","type":"uint256"},{"internalType":"uint256","name":"minimumToAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"haircut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the BaluniV1PoolPeriphery contract","kind":"dev","methods":{},"title":"IBaluniV1PoolPeriphery","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"batchSwap(address[],address[],uint256[],address[])":"e74e9b06","getAmountOut(address,address,uint256)":"4aa06652","getPoolsContainingToken(address)":"ae3cce1c","getVersion()":"0d8e6e2c","initialize(address)":"c4d66de8","reinitialize(address,uint64)":"8f2248bc","swapTokenForToken(address,address,uint256,uint256,address,address,uint256)":"35823d76","swapTokensForTokens(address[],address[],uint256,uint256,address,uint256)":"21579b79"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"fromTokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"toTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"receivers\",\"type\":\"address[]\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolsContainingToken\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fromAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokenForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"haircut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"poolPath\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"fromAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumToAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"haircut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the BaluniV1PoolPeriphery contract\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IBaluniV1PoolPeriphery\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1PoolPeriphery.sol\":\"IBaluniV1PoolPeriphery\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1PoolPeriphery.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1PoolPeriphery\\r\\n * @dev Interface for the BaluniV1PoolPeriphery contract\\r\\n */\\r\\ninterface IBaluniV1PoolPeriphery {\\r\\n    function initialize(address _registry) external;\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) external;\\r\\n\\r\\n    function swapTokenForToken(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minAmount,\\r\\n        address from,\\r\\n        address to,\\r\\n        uint deadline\\r\\n    ) external returns (uint256 amountOut, uint256 haircut);\\r\\n\\r\\n    function swapTokensForTokens(\\r\\n        address[] calldata tokenPath,\\r\\n        address[] calldata poolPath,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minimumToAmount,\\r\\n        address to,\\r\\n        uint256 deadline\\r\\n    ) external returns (uint256 amountOut, uint256 haircut);\\r\\n\\r\\n    function batchSwap(\\r\\n        address[] calldata fromTokens,\\r\\n        address[] calldata toTokens,\\r\\n        uint256[] calldata amounts,\\r\\n        address[] calldata receivers\\r\\n    ) external returns (uint256[] memory);\\r\\n\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function getPoolsContainingToken(address token) external view returns (address[] memory);\\r\\n\\r\\n    function getVersion() external view returns (uint64);\\r\\n}\\r\\n\",\"keccak256\":\"0xb2419b790831f69d82667bc962bb0d13d94014f47a99024153fcb0455e6e70b4\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1PoolRegistry.sol":{"IBaluniV1PoolRegistry":{"abi":[{"inputs":[],"name":"getAllPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset1","type":"address"},{"internalType":"address","name":"asset2","type":"address"}],"name":"getPoolByAssets","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPoolsByAsset","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"poolExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getAllPools()":"d88ff1f4","getPoolByAssets(address,address)":"2d5e94a7","getPoolsByAsset(address)":"b4340e6a","poolExist(address)":"89345efb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getAllPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset2\",\"type\":\"address\"}],\"name\":\"getPoolByAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolsByAsset\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"}],\"name\":\"poolExist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1PoolRegistry.sol\":\"IBaluniV1PoolRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1PoolRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1PoolRegistry {\\r\\n    function getPoolByAssets(address asset1, address asset2) external view returns (address);\\r\\n    function getPoolsByAsset(address token) external view returns (address[] memory);\\r\\n    function poolExist(address _pool) external view returns (bool);\\r\\n    function getAllPools() external view returns (address[] memory);\\r\\n}\\r\\n\",\"keccak256\":\"0x584696ac6736f57a477f4d23de280e68263942472ee88f7f2f6965e4dea53661\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Rebalancer.sol":{"IBaluniV1Rebalancer":{"abi":[{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"baseAsset","type":"address"}],"name":"checkRebalance","outputs":[{"components":[{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"uint256","name":"totalValue","type":"uint256"},{"internalType":"uint256","name":"finalUsdBalance","type":"uint256"},{"internalType":"uint256","name":"overweightVaultsLength","type":"uint256"},{"internalType":"uint256","name":"underweightVaultsLength","type":"uint256"},{"internalType":"uint256","name":"totalActiveWeight","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256[]","name":"overweightVaults","type":"uint256[]"},{"internalType":"uint256[]","name":"overweightAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"underweightVaults","type":"uint256[]"},{"internalType":"uint256[]","name":"underweightAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"internalType":"struct IBaluniV1Rebalancer.RebalanceVars","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convert","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"baseAsset","type":"address"}],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"checkRebalance(uint256[],address[],uint256[],uint256,address,address)":"997146f5","convert(address,address,uint256)":"248391ff","rebalance(uint256[],address[],uint256[],uint256,address,address,address)":"f0bf7714"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"weights\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseAsset\",\"type\":\"address\"}],\"name\":\"checkRebalance\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalUsdBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"overweightVaultsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underweightVaultsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalActiveWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"overweightVaults\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"overweightAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"underweightVaults\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"underweightAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IBaluniV1Rebalancer.RebalanceVars\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"weights\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseAsset\",\"type\":\"address\"}],\"name\":\"rebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Rebalancer.sol\":\"IBaluniV1Rebalancer\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Rebalancer.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Rebalancer {\\r\\n    struct RebalanceVars {\\r\\n        uint256 length;\\r\\n        uint256 totalValue;\\r\\n        uint256 finalUsdBalance;\\r\\n        uint256 overweightVaultsLength;\\r\\n        uint256 underweightVaultsLength;\\r\\n        uint256 totalActiveWeight;\\r\\n        uint256 amountOut;\\r\\n        uint256[] overweightVaults;\\r\\n        uint256[] overweightAmounts;\\r\\n        uint256[] underweightVaults;\\r\\n        uint256[] underweightAmounts;\\r\\n        uint256[] balances;\\r\\n    }\\r\\n\\r\\n    // Functions\\r\\n    function rebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address receiver,\\r\\n        address baseAsset\\r\\n    ) external;\\r\\n\\r\\n    function checkRebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address baseAsset\\r\\n    ) external view returns (RebalanceVars memory);\\r\\n\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x61c44c9208ab5c5638160706c4737e8032440e73054a90378d0b65559653d57a\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Registry.sol":{"IBaluniV1Registry":{"abi":[{"inputs":[],"name":"get1inchSpotAgg","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPS_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniAgentFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniDCAVaultRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniHyperPoolZap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolPeriphery","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolZap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRebalancer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniSwapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniYearnVaultRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMAX_BPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getREBALANCE_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStaticOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUSDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapQuoter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"__1inchSpotAgg","type":"address"}],"name":"set1inchSpotAgg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__BPS_FEE","type":"uint256"}],"name":"setBPS_FEE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniAgentFactory","type":"address"}],"name":"setBaluniAgentFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolRegistry","type":"address"}],"name":"setBaluniDCAVaultRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniHyperPoolZap","type":"address"}],"name":"setBaluniHyperPoolZap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniOracle","type":"address"}],"name":"setBaluniOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolPeriphery","type":"address"}],"name":"setBaluniPoolPeriphery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolRegistry","type":"address"}],"name":"setBaluniPoolRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolZap","type":"address"}],"name":"setBaluniPoolZap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRebalancer","type":"address"}],"name":"setBaluniRebalancer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRegistry","type":"address"}],"name":"setBaluniRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRouter","type":"address"}],"name":"setBaluniRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniSwapper","type":"address"}],"name":"setBaluniSwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniYearnVaultRegistry","type":"address"}],"name":"setBaluniYearnVaultRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_REBALANCE_THRESHOLD","type":"uint256"}],"name":"setREBALANCE_THRESHOLD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staticOracle","type":"address"}],"name":"setStaticOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_USDC","type":"address"}],"name":"setUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapFactory","type":"address"}],"name":"setUniswapFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapQuoter","type":"address"}],"name":"setUniswapQuoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapRouter","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_WNATIVE","type":"address"}],"name":"setWNATIVE","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the BaluniV1Registry contract.","kind":"dev","methods":{},"title":"IBaluniV1Registry","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"get1inchSpotAgg()":"8e1c3a8a","getBPS_BASE()":"4f4608a2","getBPS_FEE()":"85462d6f","getBaluniAgentFactory()":"f5d2d998","getBaluniDCAVaultRegistry()":"ffa08e95","getBaluniHyperPoolZap()":"0f21717d","getBaluniOracle()":"bb3ba04c","getBaluniPoolPeriphery()":"1acb6141","getBaluniPoolRegistry()":"32569e02","getBaluniPoolZap()":"040f767e","getBaluniRebalancer()":"cff49d68","getBaluniRegistry()":"c9aba8ae","getBaluniRouter()":"04cc7325","getBaluniSwapper()":"82755ebb","getBaluniYearnVaultRegistry()":"32327d1f","getMAX_BPS_FEE()":"9380fb6f","getREBALANCE_THRESHOLD()":"ea233c05","getStaticOracle()":"a5d2236f","getTreasury()":"3b19e84a","getUSDC()":"1bf01e9b","getUniswapFactory()":"3e6dfa36","getUniswapQuoter()":"b0a70975","getUniswapRouter()":"524900b5","getWNATIVE()":"6c9c0078","set1inchSpotAgg(address)":"c08f786b","setBPS_FEE(uint256)":"9e6453f8","setBaluniAgentFactory(address)":"f1dccde7","setBaluniDCAVaultRegistry(address)":"d7e53673","setBaluniHyperPoolZap(address)":"a23dccee","setBaluniOracle(address)":"f5b84f64","setBaluniPoolPeriphery(address)":"588c5b70","setBaluniPoolRegistry(address)":"f98977a9","setBaluniPoolZap(address)":"8ffc0673","setBaluniRebalancer(address)":"0241bffa","setBaluniRegistry(address)":"6c43274c","setBaluniRouter(address)":"400fb668","setBaluniSwapper(address)":"c3f5df5c","setBaluniYearnVaultRegistry(address)":"ba535c54","setREBALANCE_THRESHOLD(uint256)":"2da52442","setStaticOracle(address)":"cc01e9a6","setTreasury(address)":"f0f44260","setUSDC(address)":"b3e089a2","setUniswapFactory(address)":"e04b677f","setUniswapQuoter(address)":"26158136","setUniswapRouter(address)":"bea9849e","setWNATIVE(address)":"b6fe9cc7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"get1inchSpotAgg\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPS_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniAgentFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniDCAVaultRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniHyperPoolZap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolPeriphery\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolZap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRebalancer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniSwapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniYearnVaultRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMAX_BPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getREBALANCE_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUSDC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapQuoter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWNATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__1inchSpotAgg\",\"type\":\"address\"}],\"name\":\"set1inchSpotAgg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"__BPS_FEE\",\"type\":\"uint256\"}],\"name\":\"setBPS_FEE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniAgentFactory\",\"type\":\"address\"}],\"name\":\"setBaluniAgentFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniDCAVaultRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniHyperPoolZap\",\"type\":\"address\"}],\"name\":\"setBaluniHyperPoolZap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniOracle\",\"type\":\"address\"}],\"name\":\"setBaluniOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolPeriphery\",\"type\":\"address\"}],\"name\":\"setBaluniPoolPeriphery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniPoolRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolZap\",\"type\":\"address\"}],\"name\":\"setBaluniPoolZap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRebalancer\",\"type\":\"address\"}],\"name\":\"setBaluniRebalancer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRouter\",\"type\":\"address\"}],\"name\":\"setBaluniRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniSwapper\",\"type\":\"address\"}],\"name\":\"setBaluniSwapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniYearnVaultRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniYearnVaultRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_REBALANCE_THRESHOLD\",\"type\":\"uint256\"}],\"name\":\"setREBALANCE_THRESHOLD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_staticOracle\",\"type\":\"address\"}],\"name\":\"setStaticOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_USDC\",\"type\":\"address\"}],\"name\":\"setUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapFactory\",\"type\":\"address\"}],\"name\":\"setUniswapFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapQuoter\",\"type\":\"address\"}],\"name\":\"setUniswapQuoter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapRouter\",\"type\":\"address\"}],\"name\":\"setUniswapRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_WNATIVE\",\"type\":\"address\"}],\"name\":\"setWNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the BaluniV1Registry contract.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IBaluniV1Registry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Registry.sol\":\"IBaluniV1Registry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Router.sol":{"IBaluniV1Router":{"abi":[{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BPS_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MAX_BPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"agentFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniPeriphery","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"burnERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"burnUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalBaluni","type":"uint256"},{"internalType":"uint256","name":"totalERC20Balance","type":"uint256"},{"internalType":"uint256","name":"baluniAmount","type":"uint256"},{"internalType":"uint256","name":"tokenDecimals","type":"uint256"}],"name":"calculateTokenShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"address","name":"baseAsset","type":"address"}],"name":"callRebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_agentFactory","type":"address"}],"name":"changeAgentFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"changeBpsFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketOracle","type":"address"}],"name":"changeMarketOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newRebalancer","type":"address"}],"name":"changeRebalancer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTreasury","type":"address"}],"name":"changeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IBaluniV1Agent.Call[]","name":"calls","type":"tuple[]"},{"internalType":"address[]","name":"tokensReturn","type":"address[]"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fetchMarketPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAgentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getUSDCShareValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usdc","type":"address"},{"internalType":"address","name":"_wnative","type":"address"},{"internalType":"address","name":"_1inchSpotAgg","type":"address"},{"internalType":"address","name":"_uniRouter","type":"address"},{"internalType":"address","name":"_uniFactory","type":"address"},{"internalType":"address","name":"_rebalancer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketOracle","type":"address"}],"name":"initializeMarketOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"liquidate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidateAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balAmountToMint","type":"uint256"}],"name":"mintWithUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebalancer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usdc","type":"address"},{"internalType":"address","name":"_wnative","type":"address"},{"internalType":"address","name":"_1inchSpotAgg","type":"address"},{"internalType":"address","name":"_uniRouter","type":"address"},{"internalType":"address","name":"_uniFactory","type":"address"},{"internalType":"address","name":"_rebalancer","type":"address"},{"internalType":"uint64","name":"version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"balAmountToMint","type":"uint256"}],"name":"requiredUSDCtoMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"tokenValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"USDC()":"89a30271","WNATIVE()":"b381cf40","_BPS_BASE()":"85377188","_BPS_FEE()":"b9f5e617","_MAX_BPS_FEE()":"34decfc9","agentFactory()":"7df107ea","baluniFactory()":"196b7a5f","baluniPeriphery()":"060b5e82","burnERC20(uint256)":"1a168da2","burnUSDC(uint256)":"fe0a4dd1","calculateTokenShare(uint256,uint256,uint256,uint256)":"fe330a51","callRebalance(address[],uint256[],address,address,uint256,address)":"599f69f7","changeAgentFactory(address)":"0a38abab","changeBpsFee(uint256)":"06497cb9","changeMarketOracle(address)":"35aa0efa","changeRebalancer(address)":"0918281b","changeTreasury(address)":"b14f2a39","execute((address,uint256,bytes)[],address[])":"eedc3c50","fetchMarketPrices()":"8d483df1","getAgentAddress(address)":"27d54a92","getTokens()":"aa6ca808","getUSDCShareValue(uint256)":"71ddcfb8","getVersion()":"0d8e6e2c","initialize(address,address,address,address,address,address)":"cc2a9a5b","initializeMarketOracle(address)":"980d24f9","liquidate(address)":"2f865568","liquidateAll()":"3c2066a9","marketOracle()":"60961528","mintWithUSDC(uint256)":"0cfc7386","oracle()":"7dc0d1d0","rebalancer()":"01d22ccd","reinitialize(address,address,address,address,address,address,uint64)":"b0d60ba0","requiredUSDCtoMint(uint256)":"aa95d893","tokenValuation(uint256,address)":"2bdd955a","totalValuation()":"295b9300","treasury()":"61d027b3","uniswapFactory()":"8bdb2afa","uniswapRouter()":"735de9f7","unitPrice()":"e73faa2d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"USDC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WNATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_BPS_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_BPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_MAX_BPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"agentFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniPeriphery\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"burnERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"burnUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBaluni\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalERC20Balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baluniAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenDecimals\",\"type\":\"uint256\"}],\"name\":\"calculateTokenShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"weights\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"baseAsset\",\"type\":\"address\"}],\"name\":\"callRebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agentFactory\",\"type\":\"address\"}],\"name\":\"changeAgentFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newFee\",\"type\":\"uint256\"}],\"name\":\"changeBpsFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketOracle\",\"type\":\"address\"}],\"name\":\"changeMarketOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newRebalancer\",\"type\":\"address\"}],\"name\":\"changeRebalancer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newTreasury\",\"type\":\"address\"}],\"name\":\"changeTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBaluniV1Agent.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensReturn\",\"type\":\"address[]\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fetchMarketPrices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getAgentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getUSDCShareValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wnative\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_1inchSpotAgg\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_uniRouter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_uniFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rebalancer\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketOracle\",\"type\":\"address\"}],\"name\":\"initializeMarketOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidateAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marketOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balAmountToMint\",\"type\":\"uint256\"}],\"name\":\"mintWithUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalancer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wnative\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_1inchSpotAgg\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_uniRouter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_uniFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rebalancer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balAmountToMint\",\"type\":\"uint256\"}],\"name\":\"requiredUSDCtoMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tokenValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Router.sol\":\"IBaluniV1Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"contracts/interfaces/I1inchSpotAgg.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\n\\r\\ninterface I1inchSpotAgg {\\r\\n  function getRate(IERC20 srcToken, IERC20 dstToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n\\r\\n  function getRateToEth(IERC20 srcToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n}\\r\\n\",\"keccak256\":\"0x29417a441b068263f01adb36906270f1b76431d3017d214f506824ee41ada1b3\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Agent.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Agent {\\r\\n  struct Call {\\r\\n    address to;\\r\\n    uint256 value;\\r\\n    bytes data;\\r\\n  }\\r\\n\\r\\n  function execute(Call[] memory calls, address[] memory tokensReturn) external;\\r\\n}\\r\\n\",\"keccak256\":\"0x1bbf5ddbc4f525451e727d6997e6a20a6238d69232b58b3813760a16e7f60bbe\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Router.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\nimport '@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol';\\r\\nimport './I1inchSpotAgg.sol';\\r\\nimport './IBaluniV1Agent.sol';\\r\\n\\r\\ninterface IBaluniV1Router {\\r\\n    struct Call {\\r\\n        address to;\\r\\n        uint256 value;\\r\\n        bytes data;\\r\\n    }\\r\\n\\r\\n    // Variables\\r\\n    function _MAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function _BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function _BPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getTokens() external view returns (address[] memory);\\r\\n\\r\\n    function USDC() external view returns (IERC20);\\r\\n\\r\\n    function WNATIVE() external view returns (address);\\r\\n\\r\\n    function oracle() external view returns (address);\\r\\n\\r\\n    function uniswapRouter() external view returns (address);\\r\\n\\r\\n    function uniswapFactory() external view returns (address);\\r\\n\\r\\n    function baluniFactory() external view returns (address);\\r\\n\\r\\n    function baluniPeriphery() external view returns (address);\\r\\n\\r\\n    function agentFactory() external view returns (address);\\r\\n\\r\\n    function marketOracle() external view returns (address);\\r\\n\\r\\n    function rebalancer() external view returns (address);\\r\\n\\r\\n    function treasury() external view returns (address);\\r\\n\\r\\n    // Functions\\r\\n    function initialize(\\r\\n        address _usdc,\\r\\n        address _wnative,\\r\\n        address _1inchSpotAgg,\\r\\n        address _uniRouter,\\r\\n        address _uniFactory,\\r\\n        address _rebalancer\\r\\n    ) external;\\r\\n\\r\\n    function reinitialize(\\r\\n        address _usdc,\\r\\n        address _wnative,\\r\\n        address _1inchSpotAgg,\\r\\n        address _uniRouter,\\r\\n        address _uniFactory,\\r\\n        address _rebalancer,\\r\\n        uint64 version\\r\\n    ) external;\\r\\n\\r\\n    function initializeMarketOracle(address _marketOracle) external;\\r\\n\\r\\n    function changeMarketOracle(address _marketOracle) external;\\r\\n\\r\\n    function changeBpsFee(uint256 _newFee) external;\\r\\n\\r\\n    function changeTreasury(address _newTreasury) external;\\r\\n\\r\\n    function changeRebalancer(address _newRebalancer) external;\\r\\n\\r\\n    function changeAgentFactory(address _agentFactory) external;\\r\\n\\r\\n    function execute(IBaluniV1Agent.Call[] memory calls, address[] memory tokensReturn) external;\\r\\n\\r\\n    function liquidate(address token) external;\\r\\n\\r\\n    function liquidateAll() external;\\r\\n\\r\\n    function burnERC20(uint256 burnAmount) external;\\r\\n\\r\\n    function burnUSDC(uint256 burnAmount) external;\\r\\n\\r\\n    function getAgentAddress(address _user) external view returns (address);\\r\\n\\r\\n    function mintWithUSDC(uint256 balAmountToMint) external;\\r\\n\\r\\n    function callRebalance(\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        address sender,\\r\\n        address receiver,\\r\\n        uint256 limit,\\r\\n        address baseAsset\\r\\n    ) external;\\r\\n\\r\\n    function requiredUSDCtoMint(uint256 balAmountToMint) external view returns (uint256);\\r\\n\\r\\n    function calculateTokenShare(\\r\\n        uint256 totalBaluni,\\r\\n        uint256 totalERC20Balance,\\r\\n        uint256 baluniAmount,\\r\\n        uint256 tokenDecimals\\r\\n    ) external pure returns (uint256);\\r\\n\\r\\n    function tokenValuation(uint256 amount, address token) external view returns (uint256);\\r\\n\\r\\n    function totalValuation() external view returns (uint256);\\r\\n\\r\\n    function getUSDCShareValue(uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function fetchMarketPrices() external view returns (uint256, uint256);\\r\\n\\r\\n    function getVersion() external view returns (uint64);\\r\\n\\r\\n    function unitPrice() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x22f26eeb4b0b0e9d2a8f95fc5072c3d3bfd43bc55a2368c333fd91cebf5195ce\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1Swapper.sol":{"IBaluniV1Swapper":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"token2","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"multiHopSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"singleSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"multiHopSwap(address,address,address,uint256,address)":"5efaaebb","singleSwap(address,address,uint256,address)":"2d6bc8ea"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token2\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"multiHopSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"singleSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1Swapper.sol\":\"IBaluniV1Swapper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IBaluniV1YearnVault.sol":{"IBaluniV1YearnVault":{"abi":[{"inputs":[],"name":"baseAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"interestEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quoteAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yearnVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"baseAsset()":"cdf456e1","buy()":"a6f2ae3a","deposit(uint256,address)":"6e553f65","interestEarned()":"374261ab","lastDeposit()":"36b77107","pause()":"8456cb59","quoteAsset()":"fdf262b7","registry()":"7b103999","totalValuation()":"295b9300","unitPrice()":"e73faa2d","unpause()":"3f4ba83a","withdraw(uint256,address)":"00f714ce","yearnVault()":"9db5df46"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"baseAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interestEarned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoteAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"yearnVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBaluniV1YearnVault.sol\":\"IBaluniV1YearnVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IBaluniV1YearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1YearnVault {\\r\\n    function baseAsset() external view returns (address);\\r\\n    function yearnVault() external view returns (address);\\r\\n    function quoteAsset() external view returns (address);\\r\\n    function registry() external view returns (address);\\r\\n    function lastDeposit() external view returns (uint256);\\r\\n    function deposit(uint256 amount, address to) external;\\r\\n    function withdraw(uint256 shares, address to) external;\\r\\n    function buy() external;\\r\\n    function pause() external;\\r\\n    function unpause() external;\\r\\n    function totalValuation() external view returns (uint256);\\r\\n    function unitPrice() external view returns (uint256);\\r\\n    function interestEarned() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x1bc913632491c1953bdd30cc0a35acc2b8987b2309495e18bd8756f235b3f614\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IStaticOracle.sol":{"IStaticOracle":{"abi":[{"inputs":[],"name":"CARDINALITY_PER_MINUTE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V3_FACTORY","outputs":[{"internalType":"contract IUniswapV3Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint24","name":"feeTier","type":"uint24"}],"name":"addNewFeeTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"getAllPoolsForPair","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"isPairSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint16","name":"cardinality","type":"uint16"}],"name":"prepareAllAvailablePoolsWithCardinality","outputs":[{"internalType":"address[]","name":"preparedPools","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint32","name":"period","type":"uint32"}],"name":"prepareAllAvailablePoolsWithTimePeriod","outputs":[{"internalType":"address[]","name":"preparedPools","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24[]","name":"feeTiers","type":"uint24[]"},{"internalType":"uint16","name":"cardinality","type":"uint16"}],"name":"prepareSpecificFeeTiersWithCardinality","outputs":[{"internalType":"address[]","name":"preparedPools","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24[]","name":"feeTiers","type":"uint24[]"},{"internalType":"uint32","name":"period","type":"uint32"}],"name":"prepareSpecificFeeTiersWithTimePeriod","outputs":[{"internalType":"address[]","name":"preparedPools","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"uint16","name":"cardinality","type":"uint16"}],"name":"prepareSpecificPoolsWithCardinality","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"uint32","name":"period","type":"uint32"}],"name":"prepareSpecificPoolsWithTimePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"baseAmount","type":"uint128"},{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"uint32","name":"period","type":"uint32"}],"name":"quoteAllAvailablePoolsWithTimePeriod","outputs":[{"internalType":"uint256","name":"quoteAmount","type":"uint256"},{"internalType":"address[]","name":"queriedPools","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"baseAmount","type":"uint128"},{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"uint24[]","name":"feeTiers","type":"uint24[]"},{"internalType":"uint32","name":"period","type":"uint32"}],"name":"quoteSpecificFeeTiersWithTimePeriod","outputs":[{"internalType":"uint256","name":"quoteAmount","type":"uint256"},{"internalType":"address[]","name":"queriedPools","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"baseAmount","type":"uint128"},{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"uint32","name":"period","type":"uint32"}],"name":"quoteSpecificPoolsWithTimePeriod","outputs":[{"internalType":"uint256","name":"quoteAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supportedFeeTiers","outputs":[{"internalType":"uint24[]","name":"","type":"uint24[]"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"CARDINALITY_PER_MINUTE()":{"details":"This value is assigned during deployment and cannot be changed","returns":{"_0":"Number of observation that are needed per minute"}},"UNISWAP_V3_FACTORY()":{"details":"This value is assigned during deployment and cannot be changed","returns":{"_0":"The address of the Uniswap V3 factory"}},"addNewFeeTier(uint24)":{"details":"Will revert if the given tier is invalid, or already supported","params":{"feeTier":"The new fee tier to add"}},"getAllPoolsForPair(address,address)":{"details":"The pair can be provided in tokenA/tokenB or tokenB/tokenA order","returns":{"_0":"All existing pools for the given pair"}},"isPairSupported(address,address)":{"details":"The pair can be provided in tokenA/tokenB or tokenB/tokenA order","returns":{"_0":"Whether the given pair can be supported by the oracle"}},"prepareAllAvailablePoolsWithCardinality(address,address,uint16)":{"details":"Will revert if there are no pools available for the pair and period combination","params":{"cardinality":"The cardinality that will be guaranteed when quoting","tokenA":"One of the pair's tokens","tokenB":"The other of the pair's tokens"},"returns":{"preparedPools":"The pools that were prepared"}},"prepareAllAvailablePoolsWithTimePeriod(address,address,uint32)":{"details":"Will revert if there are no pools available for the pair and period combination","params":{"period":"The period that will be guaranteed when quoting","tokenA":"One of the pair's tokens","tokenB":"The other of the pair's tokens"},"returns":{"preparedPools":"The pools that were prepared"}},"prepareSpecificFeeTiersWithCardinality(address,address,uint24[],uint16)":{"details":"Will revert if the pair does not have a pool for a given fee tier","params":{"cardinality":"The cardinality that will be guaranteed when quoting","feeTiers":"The fee tiers to consider when searching for the pair's pools","tokenA":"One of the pair's tokens","tokenB":"The other of the pair's tokens"},"returns":{"preparedPools":"The pools that were prepared"}},"prepareSpecificFeeTiersWithTimePeriod(address,address,uint24[],uint32)":{"details":"Will revert if the pair does not have a pool for a given fee tier","params":{"feeTiers":"The fee tiers to consider when searching for the pair's pools","period":"The period that will be guaranteed when quoting","tokenA":"One of the pair's tokens","tokenB":"The other of the pair's tokens"},"returns":{"preparedPools":"The pools that were prepared"}},"prepareSpecificPoolsWithCardinality(address[],uint16)":{"params":{"cardinality":"The cardinality that will be guaranteed when quoting","pools":"The pools to initialize"}},"prepareSpecificPoolsWithTimePeriod(address[],uint32)":{"params":{"period":"The period that will be guaranteed when quoting","pools":"The pools to initialize"}},"quoteAllAvailablePoolsWithTimePeriod(uint128,address,address,uint32)":{"details":"If some pools are not configured correctly for the given period, then they will be ignoredWill revert if there are no pools available/configured for the pair and period combination","params":{"baseAmount":"Amount of token to be converted","baseToken":"Address of an ERC20 token contract used as the baseAmount denomination","period":"Number of seconds from which to calculate the TWAP","quoteToken":"Address of an ERC20 token contract used as the quoteAmount denomination"},"returns":{"queriedPools":"The pools that were queried to calculate the quote","quoteAmount":"Amount of quoteToken received for baseAmount of baseToken"}},"quoteSpecificFeeTiersWithTimePeriod(uint128,address,address,uint24[],uint32)":{"details":"Will revert if the pair does not have a pool for one of the given fee tiers, or if one of the pools is not prepared/configured correctly for the given period","params":{"baseAmount":"Amount of token to be converted","baseToken":"Address of an ERC20 token contract used as the baseAmount denomination","feeTiers":"The fee tiers to consider when calculating the quote","period":"Number of seconds from which to calculate the TWAP","quoteToken":"Address of an ERC20 token contract used as the quoteAmount denomination"},"returns":{"queriedPools":"The pools that were queried to calculate the quote","quoteAmount":"Amount of quoteToken received for baseAmount of baseToken"}},"quoteSpecificPoolsWithTimePeriod(uint128,address,address,address[],uint32)":{"details":"Will revert if one of the pools is not prepared/configured correctly for the given period","params":{"baseAmount":"Amount of token to be converted","baseToken":"Address of an ERC20 token contract used as the baseAmount denomination","period":"Number of seconds from which to calculate the TWAP","pools":"The pools to consider when calculating the quote","quoteToken":"Address of an ERC20 token contract used as the quoteAmount denomination"},"returns":{"quoteAmount":"Amount of quoteToken received for baseAmount of baseToken"}},"supportedFeeTiers()":{"returns":{"_0":"The supported fee tiers"}}},"title":"Uniswap V3 Static Oracle","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"CARDINALITY_PER_MINUTE()":"b7604e53","UNISWAP_V3_FACTORY()":"f73e5aab","addNewFeeTier(uint24)":"43dfc58d","getAllPoolsForPair(address,address)":"62d99119","isPairSupported(address,address)":"9446994a","prepareAllAvailablePoolsWithCardinality(address,address,uint16)":"1b2a933c","prepareAllAvailablePoolsWithTimePeriod(address,address,uint32)":"1c49cbb5","prepareSpecificFeeTiersWithCardinality(address,address,uint24[],uint16)":"33e4c28e","prepareSpecificFeeTiersWithTimePeriod(address,address,uint24[],uint32)":"e85dd383","prepareSpecificPoolsWithCardinality(address[],uint16)":"55eba792","prepareSpecificPoolsWithTimePeriod(address[],uint32)":"354b1a7d","quoteAllAvailablePoolsWithTimePeriod(uint128,address,address,uint32)":"0757bc81","quoteSpecificFeeTiersWithTimePeriod(uint128,address,address,uint24[],uint32)":"d8045eca","quoteSpecificPoolsWithTimePeriod(uint128,address,address,address[],uint32)":"07f7ca9f","supportedFeeTiers()":"bc4389f7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CARDINALITY_PER_MINUTE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNISWAP_V3_FACTORY\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"feeTier\",\"type\":\"uint24\"}],\"name\":\"addNewFeeTier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getAllPoolsForPair\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"isPairSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"cardinality\",\"type\":\"uint16\"}],\"name\":\"prepareAllAvailablePoolsWithCardinality\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"preparedPools\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"period\",\"type\":\"uint32\"}],\"name\":\"prepareAllAvailablePoolsWithTimePeriod\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"preparedPools\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24[]\",\"name\":\"feeTiers\",\"type\":\"uint24[]\"},{\"internalType\":\"uint16\",\"name\":\"cardinality\",\"type\":\"uint16\"}],\"name\":\"prepareSpecificFeeTiersWithCardinality\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"preparedPools\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24[]\",\"name\":\"feeTiers\",\"type\":\"uint24[]\"},{\"internalType\":\"uint32\",\"name\":\"period\",\"type\":\"uint32\"}],\"name\":\"prepareSpecificFeeTiersWithTimePeriod\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"preparedPools\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"},{\"internalType\":\"uint16\",\"name\":\"cardinality\",\"type\":\"uint16\"}],\"name\":\"prepareSpecificPoolsWithCardinality\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"period\",\"type\":\"uint32\"}],\"name\":\"prepareSpecificPoolsWithTimePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"baseAmount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quoteToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"period\",\"type\":\"uint32\"}],\"name\":\"quoteAllAvailablePoolsWithTimePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"quoteAmount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"queriedPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"baseAmount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quoteToken\",\"type\":\"address\"},{\"internalType\":\"uint24[]\",\"name\":\"feeTiers\",\"type\":\"uint24[]\"},{\"internalType\":\"uint32\",\"name\":\"period\",\"type\":\"uint32\"}],\"name\":\"quoteSpecificFeeTiersWithTimePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"quoteAmount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"queriedPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"baseAmount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quoteToken\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"period\",\"type\":\"uint32\"}],\"name\":\"quoteSpecificPoolsWithTimePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"quoteAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supportedFeeTiers\",\"outputs\":[{\"internalType\":\"uint24[]\",\"name\":\"\",\"type\":\"uint24[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CARDINALITY_PER_MINUTE()\":{\"details\":\"This value is assigned during deployment and cannot be changed\",\"returns\":{\"_0\":\"Number of observation that are needed per minute\"}},\"UNISWAP_V3_FACTORY()\":{\"details\":\"This value is assigned during deployment and cannot be changed\",\"returns\":{\"_0\":\"The address of the Uniswap V3 factory\"}},\"addNewFeeTier(uint24)\":{\"details\":\"Will revert if the given tier is invalid, or already supported\",\"params\":{\"feeTier\":\"The new fee tier to add\"}},\"getAllPoolsForPair(address,address)\":{\"details\":\"The pair can be provided in tokenA/tokenB or tokenB/tokenA order\",\"returns\":{\"_0\":\"All existing pools for the given pair\"}},\"isPairSupported(address,address)\":{\"details\":\"The pair can be provided in tokenA/tokenB or tokenB/tokenA order\",\"returns\":{\"_0\":\"Whether the given pair can be supported by the oracle\"}},\"prepareAllAvailablePoolsWithCardinality(address,address,uint16)\":{\"details\":\"Will revert if there are no pools available for the pair and period combination\",\"params\":{\"cardinality\":\"The cardinality that will be guaranteed when quoting\",\"tokenA\":\"One of the pair's tokens\",\"tokenB\":\"The other of the pair's tokens\"},\"returns\":{\"preparedPools\":\"The pools that were prepared\"}},\"prepareAllAvailablePoolsWithTimePeriod(address,address,uint32)\":{\"details\":\"Will revert if there are no pools available for the pair and period combination\",\"params\":{\"period\":\"The period that will be guaranteed when quoting\",\"tokenA\":\"One of the pair's tokens\",\"tokenB\":\"The other of the pair's tokens\"},\"returns\":{\"preparedPools\":\"The pools that were prepared\"}},\"prepareSpecificFeeTiersWithCardinality(address,address,uint24[],uint16)\":{\"details\":\"Will revert if the pair does not have a pool for a given fee tier\",\"params\":{\"cardinality\":\"The cardinality that will be guaranteed when quoting\",\"feeTiers\":\"The fee tiers to consider when searching for the pair's pools\",\"tokenA\":\"One of the pair's tokens\",\"tokenB\":\"The other of the pair's tokens\"},\"returns\":{\"preparedPools\":\"The pools that were prepared\"}},\"prepareSpecificFeeTiersWithTimePeriod(address,address,uint24[],uint32)\":{\"details\":\"Will revert if the pair does not have a pool for a given fee tier\",\"params\":{\"feeTiers\":\"The fee tiers to consider when searching for the pair's pools\",\"period\":\"The period that will be guaranteed when quoting\",\"tokenA\":\"One of the pair's tokens\",\"tokenB\":\"The other of the pair's tokens\"},\"returns\":{\"preparedPools\":\"The pools that were prepared\"}},\"prepareSpecificPoolsWithCardinality(address[],uint16)\":{\"params\":{\"cardinality\":\"The cardinality that will be guaranteed when quoting\",\"pools\":\"The pools to initialize\"}},\"prepareSpecificPoolsWithTimePeriod(address[],uint32)\":{\"params\":{\"period\":\"The period that will be guaranteed when quoting\",\"pools\":\"The pools to initialize\"}},\"quoteAllAvailablePoolsWithTimePeriod(uint128,address,address,uint32)\":{\"details\":\"If some pools are not configured correctly for the given period, then they will be ignoredWill revert if there are no pools available/configured for the pair and period combination\",\"params\":{\"baseAmount\":\"Amount of token to be converted\",\"baseToken\":\"Address of an ERC20 token contract used as the baseAmount denomination\",\"period\":\"Number of seconds from which to calculate the TWAP\",\"quoteToken\":\"Address of an ERC20 token contract used as the quoteAmount denomination\"},\"returns\":{\"queriedPools\":\"The pools that were queried to calculate the quote\",\"quoteAmount\":\"Amount of quoteToken received for baseAmount of baseToken\"}},\"quoteSpecificFeeTiersWithTimePeriod(uint128,address,address,uint24[],uint32)\":{\"details\":\"Will revert if the pair does not have a pool for one of the given fee tiers, or if one of the pools is not prepared/configured correctly for the given period\",\"params\":{\"baseAmount\":\"Amount of token to be converted\",\"baseToken\":\"Address of an ERC20 token contract used as the baseAmount denomination\",\"feeTiers\":\"The fee tiers to consider when calculating the quote\",\"period\":\"Number of seconds from which to calculate the TWAP\",\"quoteToken\":\"Address of an ERC20 token contract used as the quoteAmount denomination\"},\"returns\":{\"queriedPools\":\"The pools that were queried to calculate the quote\",\"quoteAmount\":\"Amount of quoteToken received for baseAmount of baseToken\"}},\"quoteSpecificPoolsWithTimePeriod(uint128,address,address,address[],uint32)\":{\"details\":\"Will revert if one of the pools is not prepared/configured correctly for the given period\",\"params\":{\"baseAmount\":\"Amount of token to be converted\",\"baseToken\":\"Address of an ERC20 token contract used as the baseAmount denomination\",\"period\":\"Number of seconds from which to calculate the TWAP\",\"pools\":\"The pools to consider when calculating the quote\",\"quoteToken\":\"Address of an ERC20 token contract used as the quoteAmount denomination\"},\"returns\":{\"quoteAmount\":\"Amount of quoteToken received for baseAmount of baseToken\"}},\"supportedFeeTiers()\":{\"returns\":{\"_0\":\"The supported fee tiers\"}}},\"title\":\"Uniswap V3 Static Oracle\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"CARDINALITY_PER_MINUTE()\":{\"notice\":\"Returns how many observations are needed per minute in Uniswap V3 oracles, on the deployed chain\"},\"UNISWAP_V3_FACTORY()\":{\"notice\":\"Returns the address of the Uniswap V3 factory\"},\"addNewFeeTier(uint24)\":{\"notice\":\"Adds support for a new fee tier\"},\"getAllPoolsForPair(address,address)\":{\"notice\":\"Returns all existing pools for the given pair\"},\"isPairSupported(address,address)\":{\"notice\":\"Returns whether a specific pair can be supported by the oracle\"},\"prepareAllAvailablePoolsWithCardinality(address,address,uint16)\":{\"notice\":\"Will increase observations for all existing pools for the given pair, so they start accruing information for twap calculations\"},\"prepareAllAvailablePoolsWithTimePeriod(address,address,uint32)\":{\"notice\":\"Will initialize all existing pools for the given pair, so that they can be queried with the given period in the future\"},\"prepareSpecificFeeTiersWithCardinality(address,address,uint24[],uint16)\":{\"notice\":\"Will increase the pair's pools with the specified fee tiers observations, so they start accruing information for twap calculations\"},\"prepareSpecificFeeTiersWithTimePeriod(address,address,uint24[],uint32)\":{\"notice\":\"Will initialize the pair's pools with the specified fee tiers, so that they can be queried with the given period in the future\"},\"prepareSpecificPoolsWithCardinality(address[],uint16)\":{\"notice\":\"Will increase all given pools observations, so they start accruing information for twap calculations\"},\"prepareSpecificPoolsWithTimePeriod(address[],uint32)\":{\"notice\":\"Will initialize all given pools, so that they can be queried with the given period in the future\"},\"quoteAllAvailablePoolsWithTimePeriod(uint128,address,address,uint32)\":{\"notice\":\"Returns a quote, based on the given tokens and amount, by querying all of the pair's pools\"},\"quoteSpecificFeeTiersWithTimePeriod(uint128,address,address,uint24[],uint32)\":{\"notice\":\"Returns a quote, based on the given tokens and amount, by querying only the specified fee tiers\"},\"quoteSpecificPoolsWithTimePeriod(uint128,address,address,address[],uint32)\":{\"notice\":\"Returns a quote, based on the given tokens and amount, by querying only the specified pools\"},\"supportedFeeTiers()\":{\"notice\":\"Returns all supported fee tiers\"}},\"notice\":\"Oracle contract for calculating price quoting against Uniswap V3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IStaticOracle.sol\":\"IStaticOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title The interface for the Uniswap V3 Factory\\n/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\\ninterface IUniswapV3Factory {\\n    /// @notice Emitted when the owner of the factory is changed\\n    /// @param oldOwner The owner before the owner was changed\\n    /// @param newOwner The owner after the owner was changed\\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\\n\\n    /// @notice Emitted when a pool is created\\n    /// @param token0 The first token of the pool by address sort order\\n    /// @param token1 The second token of the pool by address sort order\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\\n    /// @param pool The address of the created pool\\n    event PoolCreated(\\n        address indexed token0,\\n        address indexed token1,\\n        uint24 indexed fee,\\n        int24 tickSpacing,\\n        address pool\\n    );\\n\\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\\n    /// @param fee The enabled fee, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\\n\\n    /// @notice Returns the current owner of the factory\\n    /// @dev Can be changed by the current owner via setOwner\\n    /// @return The address of the factory owner\\n    function owner() external view returns (address);\\n\\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\\n    /// @return The tick spacing\\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\\n\\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\\n    /// @param tokenA The contract address of either token0 or token1\\n    /// @param tokenB The contract address of the other token\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @return pool The pool address\\n    function getPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external view returns (address pool);\\n\\n    /// @notice Creates a pool for the given two tokens and fee\\n    /// @param tokenA One of the two tokens in the desired pool\\n    /// @param tokenB The other of the two tokens in the desired pool\\n    /// @param fee The desired fee for the pool\\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\\n    /// are invalid.\\n    /// @return pool The address of the newly created pool\\n    function createPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external returns (address pool);\\n\\n    /// @notice Updates the owner of the factory\\n    /// @dev Must be called by the current owner\\n    /// @param _owner The new owner of the factory\\n    function setOwner(address _owner) external;\\n\\n    /// @notice Enables a fee amount with the given tickSpacing\\n    /// @dev Fee amounts may never be removed once enabled\\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\\n}\\n\",\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/IStaticOracle.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\r\\n\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\\r\\n\\r\\n/// @title Uniswap V3 Static Oracle\\r\\n/// @notice Oracle contract for calculating price quoting against Uniswap V3\\r\\ninterface IStaticOracle {\\r\\n    /// @notice Returns the address of the Uniswap V3 factory\\r\\n    /// @dev This value is assigned during deployment and cannot be changed\\r\\n    /// @return The address of the Uniswap V3 factory\\r\\n    function UNISWAP_V3_FACTORY() external view returns (IUniswapV3Factory);\\r\\n\\r\\n    /// @notice Returns how many observations are needed per minute in Uniswap V3 oracles, on the deployed chain\\r\\n    /// @dev This value is assigned during deployment and cannot be changed\\r\\n    /// @return Number of observation that are needed per minute\\r\\n    function CARDINALITY_PER_MINUTE() external view returns (uint8);\\r\\n\\r\\n    /// @notice Returns all supported fee tiers\\r\\n    /// @return The supported fee tiers\\r\\n    function supportedFeeTiers() external view returns (uint24[] memory);\\r\\n\\r\\n    /// @notice Returns whether a specific pair can be supported by the oracle\\r\\n    /// @dev The pair can be provided in tokenA/tokenB or tokenB/tokenA order\\r\\n    /// @return Whether the given pair can be supported by the oracle\\r\\n    function isPairSupported(address tokenA, address tokenB) external view returns (bool);\\r\\n\\r\\n    /// @notice Returns all existing pools for the given pair\\r\\n    /// @dev The pair can be provided in tokenA/tokenB or tokenB/tokenA order\\r\\n    /// @return All existing pools for the given pair\\r\\n    function getAllPoolsForPair(address tokenA, address tokenB) external view returns (address[] memory);\\r\\n\\r\\n    /// @notice Returns a quote, based on the given tokens and amount, by querying all of the pair's pools\\r\\n    /// @dev If some pools are not configured correctly for the given period, then they will be ignored\\r\\n    /// @dev Will revert if there are no pools available/configured for the pair and period combination\\r\\n    /// @param baseAmount Amount of token to be converted\\r\\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\\r\\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\\r\\n    /// @param period Number of seconds from which to calculate the TWAP\\r\\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\\r\\n    /// @return queriedPools The pools that were queried to calculate the quote\\r\\n    function quoteAllAvailablePoolsWithTimePeriod(\\r\\n        uint128 baseAmount,\\r\\n        address baseToken,\\r\\n        address quoteToken,\\r\\n        uint32 period\\r\\n    ) external view returns (uint256 quoteAmount, address[] memory queriedPools);\\r\\n\\r\\n    /// @notice Returns a quote, based on the given tokens and amount, by querying only the specified fee tiers\\r\\n    /// @dev Will revert if the pair does not have a pool for one of the given fee tiers, or if one of the pools\\r\\n    /// is not prepared/configured correctly for the given period\\r\\n    /// @param baseAmount Amount of token to be converted\\r\\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\\r\\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\\r\\n    /// @param feeTiers The fee tiers to consider when calculating the quote\\r\\n    /// @param period Number of seconds from which to calculate the TWAP\\r\\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\\r\\n    /// @return queriedPools The pools that were queried to calculate the quote\\r\\n    function quoteSpecificFeeTiersWithTimePeriod(\\r\\n        uint128 baseAmount,\\r\\n        address baseToken,\\r\\n        address quoteToken,\\r\\n        uint24[] calldata feeTiers,\\r\\n        uint32 period\\r\\n    ) external view returns (uint256 quoteAmount, address[] memory queriedPools);\\r\\n\\r\\n    /// @notice Returns a quote, based on the given tokens and amount, by querying only the specified pools\\r\\n    /// @dev Will revert if one of the pools is not prepared/configured correctly for the given period\\r\\n    /// @param baseAmount Amount of token to be converted\\r\\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\\r\\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\\r\\n    /// @param pools The pools to consider when calculating the quote\\r\\n    /// @param period Number of seconds from which to calculate the TWAP\\r\\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\\r\\n    function quoteSpecificPoolsWithTimePeriod(\\r\\n        uint128 baseAmount,\\r\\n        address baseToken,\\r\\n        address quoteToken,\\r\\n        address[] calldata pools,\\r\\n        uint32 period\\r\\n    ) external view returns (uint256 quoteAmount);\\r\\n\\r\\n    /// @notice Will initialize all existing pools for the given pair, so that they can be queried with the given period in the future\\r\\n    /// @dev Will revert if there are no pools available for the pair and period combination\\r\\n    /// @param tokenA One of the pair's tokens\\r\\n    /// @param tokenB The other of the pair's tokens\\r\\n    /// @param period The period that will be guaranteed when quoting\\r\\n    /// @return preparedPools The pools that were prepared\\r\\n    function prepareAllAvailablePoolsWithTimePeriod(\\r\\n        address tokenA,\\r\\n        address tokenB,\\r\\n        uint32 period\\r\\n    ) external returns (address[] memory preparedPools);\\r\\n\\r\\n    /// @notice Will initialize the pair's pools with the specified fee tiers, so that they can be queried with the given period in the future\\r\\n    /// @dev Will revert if the pair does not have a pool for a given fee tier\\r\\n    /// @param tokenA One of the pair's tokens\\r\\n    /// @param tokenB The other of the pair's tokens\\r\\n    /// @param feeTiers The fee tiers to consider when searching for the pair's pools\\r\\n    /// @param period The period that will be guaranteed when quoting\\r\\n    /// @return preparedPools The pools that were prepared\\r\\n    function prepareSpecificFeeTiersWithTimePeriod(\\r\\n        address tokenA,\\r\\n        address tokenB,\\r\\n        uint24[] calldata feeTiers,\\r\\n        uint32 period\\r\\n    ) external returns (address[] memory preparedPools);\\r\\n\\r\\n    /// @notice Will initialize all given pools, so that they can be queried with the given period in the future\\r\\n    /// @param pools The pools to initialize\\r\\n    /// @param period The period that will be guaranteed when quoting\\r\\n    function prepareSpecificPoolsWithTimePeriod(address[] calldata pools, uint32 period) external;\\r\\n\\r\\n    /// @notice Will increase observations for all existing pools for the given pair, so they start accruing information for twap calculations\\r\\n    /// @dev Will revert if there are no pools available for the pair and period combination\\r\\n    /// @param tokenA One of the pair's tokens\\r\\n    /// @param tokenB The other of the pair's tokens\\r\\n    /// @param cardinality The cardinality that will be guaranteed when quoting\\r\\n    /// @return preparedPools The pools that were prepared\\r\\n    function prepareAllAvailablePoolsWithCardinality(\\r\\n        address tokenA,\\r\\n        address tokenB,\\r\\n        uint16 cardinality\\r\\n    ) external returns (address[] memory preparedPools);\\r\\n\\r\\n    /// @notice Will increase the pair's pools with the specified fee tiers observations, so they start accruing information for twap calculations\\r\\n    /// @dev Will revert if the pair does not have a pool for a given fee tier\\r\\n    /// @param tokenA One of the pair's tokens\\r\\n    /// @param tokenB The other of the pair's tokens\\r\\n    /// @param feeTiers The fee tiers to consider when searching for the pair's pools\\r\\n    /// @param cardinality The cardinality that will be guaranteed when quoting\\r\\n    /// @return preparedPools The pools that were prepared\\r\\n    function prepareSpecificFeeTiersWithCardinality(\\r\\n        address tokenA,\\r\\n        address tokenB,\\r\\n        uint24[] calldata feeTiers,\\r\\n        uint16 cardinality\\r\\n    ) external returns (address[] memory preparedPools);\\r\\n\\r\\n    /// @notice Will increase all given pools observations, so they start accruing information for twap calculations\\r\\n    /// @param pools The pools to initialize\\r\\n    /// @param cardinality The cardinality that will be guaranteed when quoting\\r\\n    function prepareSpecificPoolsWithCardinality(address[] calldata pools, uint16 cardinality) external;\\r\\n\\r\\n    /// @notice Adds support for a new fee tier\\r\\n    /// @dev Will revert if the given tier is invalid, or already supported\\r\\n    /// @param feeTier The new fee tier to add\\r\\n    function addNewFeeTier(uint24 feeTier) external;\\r\\n}\\r\\n\",\"keccak256\":\"0x592a6d2e0bfc7781db8700e7932c20e8c15f8de8307c5db562079f95f232877b\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"CARDINALITY_PER_MINUTE()":{"notice":"Returns how many observations are needed per minute in Uniswap V3 oracles, on the deployed chain"},"UNISWAP_V3_FACTORY()":{"notice":"Returns the address of the Uniswap V3 factory"},"addNewFeeTier(uint24)":{"notice":"Adds support for a new fee tier"},"getAllPoolsForPair(address,address)":{"notice":"Returns all existing pools for the given pair"},"isPairSupported(address,address)":{"notice":"Returns whether a specific pair can be supported by the oracle"},"prepareAllAvailablePoolsWithCardinality(address,address,uint16)":{"notice":"Will increase observations for all existing pools for the given pair, so they start accruing information for twap calculations"},"prepareAllAvailablePoolsWithTimePeriod(address,address,uint32)":{"notice":"Will initialize all existing pools for the given pair, so that they can be queried with the given period in the future"},"prepareSpecificFeeTiersWithCardinality(address,address,uint24[],uint16)":{"notice":"Will increase the pair's pools with the specified fee tiers observations, so they start accruing information for twap calculations"},"prepareSpecificFeeTiersWithTimePeriod(address,address,uint24[],uint32)":{"notice":"Will initialize the pair's pools with the specified fee tiers, so that they can be queried with the given period in the future"},"prepareSpecificPoolsWithCardinality(address[],uint16)":{"notice":"Will increase all given pools observations, so they start accruing information for twap calculations"},"prepareSpecificPoolsWithTimePeriod(address[],uint32)":{"notice":"Will initialize all given pools, so that they can be queried with the given period in the future"},"quoteAllAvailablePoolsWithTimePeriod(uint128,address,address,uint32)":{"notice":"Returns a quote, based on the given tokens and amount, by querying all of the pair's pools"},"quoteSpecificFeeTiersWithTimePeriod(uint128,address,address,uint24[],uint32)":{"notice":"Returns a quote, based on the given tokens and amount, by querying only the specified fee tiers"},"quoteSpecificPoolsWithTimePeriod(uint128,address,address,address[],uint32)":{"notice":"Returns a quote, based on the given tokens and amount, by querying only the specified pools"},"supportedFeeTiers()":{"notice":"Returns all supported fee tiers"}},"notice":"Oracle contract for calculating price quoting against Uniswap V3","version":1}}},"contracts/interfaces/IYearnVault.sol":{"IYearnVault":{"abi":[{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxRedeem(address)":"d905777e","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","totalAssets()":"01e1d114"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IYearnVault.sol\":\"IYearnVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\ninterface IYearnVault {\\r\\n    function asset() external view returns (address);\\r\\n\\r\\n    function balanceOf(address owner) external view returns (uint256);\\r\\n\\r\\n    function maxDeposit(address receiver) external view returns (uint256);\\r\\n\\r\\n    function redeem(uint256 shares, address receiver, address owner) external returns (uint256);\\r\\n\\r\\n    function deposit(uint256 assets, address receiver) external returns (uint256);\\r\\n\\r\\n    function totalAssets() external view returns (uint256);\\r\\n\\r\\n    function convertToAssets(uint256 shares) external view returns (uint256);\\r\\n\\r\\n    function convertToShares(uint256 assets) external view returns (uint256);\\r\\n\\r\\n    function previewWithdraw(uint256 assets) external view returns (uint256);\\r\\n\\r\\n    function maxRedeem(address owner) external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x32952c4cf75af24a48eb5ce8ca05358d527dba5532e6f19e4db12ef418b82ab8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/libs/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220fed45f822f472ba27e633ee43c594fd992757f08a5544e03b27ec26408e2d54d64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID 0xD4 PUSH0 DUP3 0x2F SELFBALANCE 0x2B LOG2 PUSH31 0x633EE43C594FD992757F08A5544E03B27EC26408E2D54D64736F6C63430008 NOT STOP CALLER ","sourceMap":"202:6832:45:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220fed45f822f472ba27e633ee43c594fd992757f08a5544e03b27ec26408e2d54d64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID 0xD4 PUSH0 DUP3 0x2F SELFBALANCE 0x2B LOG2 PUSH31 0x633EE43C594FD992757F08A5544E03B27EC26408E2D54D64736F6C63430008 NOT STOP CALLER ","sourceMap":"202:6832:45:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libs/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/libs/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\r\\n\\r\\npragma solidity ^0.8.1;\\r\\n\\r\\n/**\\r\\n * @dev Collection of functions related to the address type\\r\\n */\\r\\nlibrary AddressUpgradeable {\\r\\n  /**\\r\\n   * @dev Returns true if `account` is a contract.\\r\\n   *\\r\\n   * [IMPORTANT]\\r\\n   * ====\\r\\n   * It is unsafe to assume that an address for which this function returns\\r\\n   * false is an externally-owned account (EOA) and not a contract.\\r\\n   *\\r\\n   * Among others, `isContract` will return false for the following\\r\\n   * types of addresses:\\r\\n   *\\r\\n   *  - an externally-owned account\\r\\n   *  - a contract in construction\\r\\n   *  - an address where a contract will be created\\r\\n   *  - an address where a contract lived, but was destroyed\\r\\n   * ====\\r\\n   *\\r\\n   * [IMPORTANT]\\r\\n   * ====\\r\\n   * You shouldn't rely on `isContract` to protect against flash loan attacks!\\r\\n   *\\r\\n   * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\r\\n   * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\r\\n   * constructor.\\r\\n   * ====\\r\\n   */\\r\\n  function isContract(address account) internal view returns (bool) {\\r\\n    // This method relies on extcodesize/address.code.length, which returns 0\\r\\n    // for contracts in construction, since the code is only stored at the end\\r\\n    // of the constructor execution.\\r\\n\\r\\n    return account.code.length > 0;\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\r\\n   * `recipient`, forwarding all available gas and reverting on errors.\\r\\n   *\\r\\n   * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\r\\n   * of certain opcodes, possibly making contracts go over the 2300 gas limit\\r\\n   * imposed by `transfer`, making them unable to receive funds via\\r\\n   * `transfer`. {sendValue} removes this limitation.\\r\\n   *\\r\\n   * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\r\\n   *\\r\\n   * IMPORTANT: because control is transferred to `recipient`, care must be\\r\\n   * taken to not create reentrancy vulnerabilities. Consider using\\r\\n   * {ReentrancyGuard} or the\\r\\n   * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\r\\n   */\\r\\n  function sendValue(address payable recipient, uint256 amount) internal {\\r\\n    require(address(this).balance >= amount, 'Address: insufficient balance');\\r\\n\\r\\n    (bool success, ) = recipient.call{value: amount}('');\\r\\n    require(success, 'Address: unable to send value, recipient may have reverted');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Performs a Solidity function call using a low level `call`. A\\r\\n   * plain `call` is an unsafe replacement for a function call: use this\\r\\n   * function instead.\\r\\n   *\\r\\n   * If `target` reverts with a revert reason, it is bubbled up by this\\r\\n   * function (like regular Solidity function calls).\\r\\n   *\\r\\n   * Returns the raw returned data. To convert to the expected return value,\\r\\n   * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\r\\n   *\\r\\n   * Requirements:\\r\\n   *\\r\\n   * - `target` must be a contract.\\r\\n   * - calling `target` with `data` must not revert.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\r\\n    return functionCall(target, data, 'Address: low-level call failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\r\\n   * `errorMessage` as a fallback revert reason when `target` reverts.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\r\\n    return functionCallWithValue(target, data, 0, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\r\\n   * but also transferring `value` wei to `target`.\\r\\n   *\\r\\n   * Requirements:\\r\\n   *\\r\\n   * - the calling contract must have an ETH balance of at least `value`.\\r\\n   * - the called Solidity function must be `payable`.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\r\\n    return functionCallWithValue(target, data, value, 'Address: low-level call with value failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\r\\n   * with `errorMessage` as a fallback revert reason when `target` reverts.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCallWithValue(\\r\\n    address target,\\r\\n    bytes memory data,\\r\\n    uint256 value,\\r\\n    string memory errorMessage\\r\\n  ) internal returns (bytes memory) {\\r\\n    require(address(this).balance >= value, 'Address: insufficient balance for call');\\r\\n    require(isContract(target), 'Address: call to non-contract');\\r\\n\\r\\n    (bool success, bytes memory returndata) = target.call{value: value}(data);\\r\\n    return verifyCallResult(success, returndata, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\r\\n   * but performing a static call.\\r\\n   *\\r\\n   * _Available since v3.3._\\r\\n   */\\r\\n  function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\r\\n    return functionStaticCall(target, data, 'Address: low-level static call failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\r\\n   * but performing a static call.\\r\\n   *\\r\\n   * _Available since v3.3._\\r\\n   */\\r\\n  function functionStaticCall(\\r\\n    address target,\\r\\n    bytes memory data,\\r\\n    string memory errorMessage\\r\\n  ) internal view returns (bytes memory) {\\r\\n    require(isContract(target), 'Address: static call to non-contract');\\r\\n\\r\\n    (bool success, bytes memory returndata) = target.staticcall(data);\\r\\n    return verifyCallResult(success, returndata, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\r\\n   * revert reason using the provided one.\\r\\n   *\\r\\n   * _Available since v4.3._\\r\\n   */\\r\\n  function verifyCallResult(\\r\\n    bool success,\\r\\n    bytes memory returndata,\\r\\n    string memory errorMessage\\r\\n  ) internal pure returns (bytes memory) {\\r\\n    if (success) {\\r\\n      return returndata;\\r\\n    } else {\\r\\n      // Look for revert reason and bubble it up if present\\r\\n      if (returndata.length > 0) {\\r\\n        // The easiest way to bubble the revert reason is using memory via assembly\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n          let returndata_size := mload(returndata)\\r\\n          revert(add(32, returndata), returndata_size)\\r\\n        }\\r\\n      } else {\\r\\n        revert(errorMessage);\\r\\n      }\\r\\n    }\\r\\n  }\\r\\n}\\r\\n\",\"keccak256\":\"0x0d727e8de593fdee1ddeb0f7db69d83db1948ceaa9286d1b03491809bc19fa0f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/libs/ClonesUpgradeable.sol":{"ClonesUpgradeable":{"abi":[],"devdoc":{"details":"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \"clones\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220e91426af774a4f3066bbb5196cb966b661200e43be4f97e0491de623f49a766c64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 EQ 0x26 0xAF PUSH24 0x4A4F3066BBB5196CB966B661200E43BE4F97E0491DE623F4 SWAP11 PUSH23 0x6C64736F6C634300081900330000000000000000000000 ","sourceMap":"773:3025:46:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220e91426af774a4f3066bbb5196cb966b661200e43be4f97e0491de623f49a766c64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 EQ 0x26 0xAF PUSH24 0x4A4F3066BBB5196CB966B661200E43BE4F97E0491DE623F4 SWAP11 PUSH23 0x6C64736F6C634300081900330000000000000000000000 ","sourceMap":"773:3025:46:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"clone(address)":"infinite","cloneDeterministic(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32,address)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \\\"clones\\\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libs/ClonesUpgradeable.sol\":\"ClonesUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/libs/ClonesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/Clones.sol)\\r\\n\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\n/**\\r\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\r\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\r\\n *\\r\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\r\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\r\\n *\\r\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\r\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\r\\n * deterministic method.\\r\\n *\\r\\n * _Available since v3.4._\\r\\n */\\r\\nlibrary ClonesUpgradeable {\\r\\n    /**\\r\\n     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\r\\n     *\\r\\n     * This function uses the create opcode, which should never revert.\\r\\n     */\\r\\n    function clone(address implementation) internal returns (address instance) {\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            let ptr := mload(0x40)\\r\\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\\r\\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\\r\\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\\r\\n            instance := create(0, ptr, 0x37)\\r\\n        }\\r\\n        require(instance != address(0), \\\"ERC1167: create failed\\\");\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\r\\n     *\\r\\n     * This function uses the create2 opcode and a `salt` to deterministically deploy\\r\\n     * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\r\\n     * the clones cannot be deployed twice at the same address.\\r\\n     */\\r\\n    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            let ptr := mload(0x40)\\r\\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\\r\\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\\r\\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\\r\\n            instance := create2(0, ptr, 0x37, salt)\\r\\n        }\\r\\n        require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\r\\n     */\\r\\n    function predictDeterministicAddress(\\r\\n        address implementation,\\r\\n        bytes32 salt,\\r\\n        address deployer\\r\\n    ) internal pure returns (address predicted) {\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            let ptr := mload(0x40)\\r\\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\\r\\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\\r\\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)\\r\\n            mstore(add(ptr, 0x38), shl(0x60, deployer))\\r\\n            mstore(add(ptr, 0x4c), salt)\\r\\n            mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\\r\\n            predicted := keccak256(add(ptr, 0x37), 0x55)\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\r\\n     */\\r\\n    function predictDeterministicAddress(address implementation, bytes32 salt)\\r\\n        internal\\r\\n        view\\r\\n        returns (address predicted)\\r\\n    {\\r\\n        return predictDeterministicAddress(implementation, salt, address(this));\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0xe6c3f4e71fbdfbcd5818c6c71e28a02149fe28e8ad56ef110fb1bc7fd9fe9ad7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/libs/DSMath.sol":{"DSMath":{"abi":[{"inputs":[],"name":"RAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":36,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":42,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234602057600e6024565b61019361002f82393081505061019390f35b602a565b60405190565b5f80fdfe60806040526004361015610013575b610159565b61001d5f3561003c565b8063552033c41461003757636a1460240361000e5761012e565b6100c5565b60e01c90565b60405190565b5f80fd5b5f91031261005657565b610048565b90565b90565b90565b61007861007361007d9261005b565b610061565b61005e565b90565b6100956b033b2e3c9fd0803ce8000000610064565b90565b6100a0610080565b90565b6100ac9061005e565b9052565b91906100c3905f602085019401906100a3565b565b6100d036600461004c565b6100ec6100db610098565b6100e3610042565b918291826100b0565b0390f35b90565b61010761010261010c926100f0565b610061565b61005e565b90565b610120670de0b6b3a76400006100f3565b90565b61012b61010f565b90565b61013936600461004c565b610155610144610123565b61014c610042565b918291826100b0565b0390f35b5f80fdfea2646970667358221220aac0e9d83a91b2e9bd7284523aad65f08718160a3f5902a9c3cc57c555bba61b64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x20 JUMPI PUSH1 0xE PUSH1 0x24 JUMP JUMPDEST PUSH2 0x193 PUSH2 0x2F DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH2 0x193 SWAP1 RETURN JUMPDEST PUSH1 0x2A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x159 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x3C JUMP JUMPDEST DUP1 PUSH4 0x552033C4 EQ PUSH2 0x37 JUMPI PUSH4 0x6A146024 SUB PUSH2 0xE JUMPI PUSH2 0x12E JUMP JUMPDEST PUSH2 0xC5 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x56 JUMPI JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x78 PUSH2 0x73 PUSH2 0x7D SWAP3 PUSH2 0x5B JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST PUSH2 0x5E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x95 PUSH12 0x33B2E3C9FD0803CE8000000 PUSH2 0x64 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x80 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAC SWAP1 PUSH2 0x5E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xC3 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xA3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xD0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C JUMP JUMPDEST PUSH2 0xEC PUSH2 0xDB PUSH2 0x98 JUMP JUMPDEST PUSH2 0xE3 PUSH2 0x42 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x107 PUSH2 0x102 PUSH2 0x10C SWAP3 PUSH2 0xF0 JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST PUSH2 0x5E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120 PUSH8 0xDE0B6B3A7640000 PUSH2 0xF3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C JUMP JUMPDEST PUSH2 0x155 PUSH2 0x144 PUSH2 0x123 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x42 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xC0 0xE9 0xD8 GASPRICE SWAP2 0xB2 0xE9 0xBD PUSH19 0x84523AAD65F08718160A3F5902A9C3CC57C555 0xBB 0xA6 SHL PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"773:1575:47:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":76,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256":{"entryPoint":176,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256_library":{"entryPoint":163,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_unbounded":{"entryPoint":66,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_rational_by":{"entryPoint":240,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":91,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":94,"id":null,"parameterSlots":1,"returnSlots":1},"constant_RAY":{"entryPoint":128,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WAD":{"entryPoint":271,"id":null,"parameterSlots":0,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":243,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":100,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_RAY":{"entryPoint":197,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WAD":{"entryPoint":302,"id":null,"parameterSlots":0,"returnSlots":0},"getter_fun_RAY":{"entryPoint":152,"id":5866,"parameterSlots":0,"returnSlots":1},"getter_fun_WAD":{"entryPoint":291,"id":5861,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":97,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":345,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":72,"id":null,"parameterSlots":0,"returnSlots":0},"shift_right_unsigned":{"entryPoint":60,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361015610013575b610159565b61001d5f3561003c565b8063552033c41461003757636a1460240361000e5761012e565b6100c5565b60e01c90565b60405190565b5f80fd5b5f91031261005657565b610048565b90565b90565b90565b61007861007361007d9261005b565b610061565b61005e565b90565b6100956b033b2e3c9fd0803ce8000000610064565b90565b6100a0610080565b90565b6100ac9061005e565b9052565b91906100c3905f602085019401906100a3565b565b6100d036600461004c565b6100ec6100db610098565b6100e3610042565b918291826100b0565b0390f35b90565b61010761010261010c926100f0565b610061565b61005e565b90565b610120670de0b6b3a76400006100f3565b90565b61012b61010f565b90565b61013936600461004c565b610155610144610123565b61014c610042565b918291826100b0565b0390f35b5f80fdfea2646970667358221220aac0e9d83a91b2e9bd7284523aad65f08718160a3f5902a9c3cc57c555bba61b64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x159 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x3C JUMP JUMPDEST DUP1 PUSH4 0x552033C4 EQ PUSH2 0x37 JUMPI PUSH4 0x6A146024 SUB PUSH2 0xE JUMPI PUSH2 0x12E JUMP JUMPDEST PUSH2 0xC5 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x56 JUMPI JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x78 PUSH2 0x73 PUSH2 0x7D SWAP3 PUSH2 0x5B JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST PUSH2 0x5E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x95 PUSH12 0x33B2E3C9FD0803CE8000000 PUSH2 0x64 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x80 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAC SWAP1 PUSH2 0x5E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xC3 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xA3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xD0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C JUMP JUMPDEST PUSH2 0xEC PUSH2 0xDB PUSH2 0x98 JUMP JUMPDEST PUSH2 0xE3 PUSH2 0x42 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x107 PUSH2 0x102 PUSH2 0x10C SWAP3 PUSH2 0xF0 JUMP JUMPDEST PUSH2 0x61 JUMP JUMPDEST PUSH2 0x5E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120 PUSH8 0xDE0B6B3A7640000 PUSH2 0xF3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C JUMP JUMPDEST PUSH2 0x155 PUSH2 0x144 PUSH2 0x123 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x42 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xC0 0xE9 0xD8 GASPRICE SWAP2 0xB2 0xE9 0xBD PUSH19 0x84523AAD65F08718160A3F5902A9C3CC57C555 0xBB 0xA6 SHL PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"773:1575:47:-:0;;;;;;;;;-1:-1:-1;773:1575:47;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;840:38::-;870:8;;;:::i;:::-;840:38;:::o;:::-;;;:::i;:::-;;:::o;773:1575::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;795:38::-;825:8;;;:::i;:::-;795:38;:::o;:::-;;;:::i;:::-;;:::o;773:1575::-;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"80600","executionCost":"infinite","totalCost":"infinite"},"external":{"RAY()":"infinite","WAD()":"infinite"},"internal":{"reciprocal(uint256)":"infinite","rmul(uint256,uint256)":"infinite","rpow(uint256,uint256)":"infinite","wdiv(uint256,uint256)":"infinite","wmul(uint256,uint256)":"infinite"}},"methodIdentifiers":{"RAY()":"552033c4","WAD()":"6a146024"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"RAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libs/DSMath.sol\":\"DSMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/libs/DSMath.sol\":{\"content\":\"/// math.sol -- mixin for inline numerical wizardry\\r\\n\\r\\n// This program is free software: you can redistribute it and/or modify\\r\\n// it under the terms of the GNU General Public License as published by\\r\\n// the Free Software Foundation, either version 3 of the License, or\\r\\n// (at your option) any later version.\\r\\n\\r\\n// This program is distributed in the hope that it will be useful,\\r\\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\\r\\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\r\\n// GNU General Public License for more details.\\r\\n\\r\\n// You should have received a copy of the GNU General Public License\\r\\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\\r\\n\\r\\n// SPDX-License-Identifier: MIT\\r\\n\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\nlibrary DSMath {\\r\\n    uint256 public constant WAD = 10 ** 18;\\r\\n    uint256 public constant RAY = 10 ** 27;\\r\\n\\r\\n    //rounds to zero if x*y < WAD / 2\\r\\n    function wmul(uint256 x, uint256 y) internal pure returns (uint256) {\\r\\n        return ((x * y) + (WAD / 2)) / WAD;\\r\\n    }\\r\\n\\r\\n    //rounds to zero if x*y < WAD / 2\\r\\n    function wdiv(uint256 x, uint256 y) internal pure returns (uint256) {\\r\\n        return ((x * WAD) + (y / 2)) / y;\\r\\n    }\\r\\n\\r\\n    function reciprocal(uint256 x) internal pure returns (uint256) {\\r\\n        return wdiv(WAD, x);\\r\\n    }\\r\\n\\r\\n    // This famous algorithm is called \\\"exponentiation by squaring\\\"\\r\\n    // and calculates x^n with x as fixed-point and n as regular unsigned.\\r\\n    //\\r\\n    // It's O(log n), instead of O(n) for naive repeated multiplication.\\r\\n    //\\r\\n    // These facts are why it works:\\r\\n    //\\r\\n    //  If n is even, then x^n = (x^2)^(n/2).\\r\\n    //  If n is odd,  then x^n = x * x^(n-1),\\r\\n    //   and applying the equation for even x gives\\r\\n    //    x^n = x * (x^2)^((n-1) / 2).\\r\\n    //\\r\\n    //  Also, EVM division is flooring and\\r\\n    //    floor[(n-1) / 2] = floor[n / 2].\\r\\n    //\\r\\n    function rpow(uint256 x, uint256 n) internal pure returns (uint256 z) {\\r\\n        z = n % 2 != 0 ? x : RAY;\\r\\n\\r\\n        for (n /= 2; n != 0; n /= 2) {\\r\\n            x = rmul(x, x);\\r\\n\\r\\n            if (n % 2 != 0) {\\r\\n                z = rmul(z, x);\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n\\r\\n    //rounds to zero if x*y < WAD / 2\\r\\n    function rmul(uint256 x, uint256 y) internal pure returns (uint256 z) {\\r\\n        z = ((x * y) + (RAY / 2)) / RAY;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0xc8d775656235e934285c7a38f9aa3a5175a31d6c9b7cb953ee7a50296db6397e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/libs/EnumerableSetUpgradeable.sol":{"EnumerableSetUpgradeable":{"abi":[],"devdoc":{"details":"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ====  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":33,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":39,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601d57600e6021565b603e602c823930815050603e90f35b6027565b60405190565b5f80fdfe60806040525f80fdfea2646970667358221220f1a9a8c9f8e986d34831ed512ef6b16b2b985ed6ce6ac3b9d405ffc0e7edc8ad64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI PUSH1 0xE PUSH1 0x21 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x2C DUP3 CODECOPY ADDRESS DUP2 POP POP PUSH1 0x3E SWAP1 RETURN JUMPDEST PUSH1 0x27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALL 0xA9 0xA8 0xC9 0xF8 0xE9 DUP7 0xD3 BASEFEE BALANCE 0xED MLOAD 0x2E 0xF6 0xB1 PUSH12 0x2B985ED6CE6AC3B9D405FFC0 0xE7 0xED 0xC8 0xAD PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"1265:11794:48:-:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040525f80fdfea2646970667358221220f1a9a8c9f8e986d34831ed512ef6b16b2b985ed6ce6ac3b9d405ffc0e7edc8ad64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALL 0xA9 0xA8 0xC9 0xF8 0xE9 DUP7 0xD3 BASEFEE BALANCE 0xED MLOAD 0x2E 0xF6 0xB1 PUSH12 0x2B985ED6CE6AC3B9D405FFC0 0xE7 0xED 0xC8 0xAD PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"1265:11794:48:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12400","executionCost":"infinite","totalCost":"infinite"},"internal":{"_add(struct EnumerableSetUpgradeable.Set storage pointer,bytes32)":"infinite","_at(struct EnumerableSetUpgradeable.Set storage pointer,uint256)":"infinite","_contains(struct EnumerableSetUpgradeable.Set storage pointer,bytes32)":"infinite","_length(struct EnumerableSetUpgradeable.Set storage pointer)":"infinite","_remove(struct EnumerableSetUpgradeable.Set storage pointer,bytes32)":"infinite","_values(struct EnumerableSetUpgradeable.Set storage pointer)":"infinite","add(struct EnumerableSetUpgradeable.AddressSet storage pointer,address)":"infinite","add(struct EnumerableSetUpgradeable.Bytes32Set storage pointer,bytes32)":"infinite","add(struct EnumerableSetUpgradeable.UintSet storage pointer,uint256)":"infinite","at(struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256)":"infinite","at(struct EnumerableSetUpgradeable.Bytes32Set storage pointer,uint256)":"infinite","at(struct EnumerableSetUpgradeable.UintSet storage pointer,uint256)":"infinite","contains(struct EnumerableSetUpgradeable.AddressSet storage pointer,address)":"infinite","contains(struct EnumerableSetUpgradeable.Bytes32Set storage pointer,bytes32)":"infinite","contains(struct EnumerableSetUpgradeable.UintSet storage pointer,uint256)":"infinite","length(struct EnumerableSetUpgradeable.AddressSet storage pointer)":"infinite","length(struct EnumerableSetUpgradeable.Bytes32Set storage pointer)":"infinite","length(struct EnumerableSetUpgradeable.UintSet storage pointer)":"infinite","remove(struct EnumerableSetUpgradeable.AddressSet storage pointer,address)":"infinite","remove(struct EnumerableSetUpgradeable.Bytes32Set storage pointer,bytes32)":"infinite","remove(struct EnumerableSetUpgradeable.UintSet storage pointer,uint256)":"infinite","values(struct EnumerableSetUpgradeable.AddressSet storage pointer)":"infinite","values(struct EnumerableSetUpgradeable.Bytes32Set storage pointer)":"infinite","values(struct EnumerableSetUpgradeable.UintSet storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ====  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libs/EnumerableSetUpgradeable.sol\":\"EnumerableSetUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/libs/EnumerableSetUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\\r\\n\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\n/**\\r\\n * @dev Library for managing\\r\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\r\\n * types.\\r\\n *\\r\\n * Sets have the following properties:\\r\\n *\\r\\n * - Elements are added, removed, and checked for existence in constant time\\r\\n * (O(1)).\\r\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\r\\n *\\r\\n * ```\\r\\n * contract Example {\\r\\n *     // Add the library methods\\r\\n *     using EnumerableSet for EnumerableSet.AddressSet;\\r\\n *\\r\\n *     // Declare a set state variable\\r\\n *     EnumerableSet.AddressSet private mySet;\\r\\n * }\\r\\n * ```\\r\\n *\\r\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\r\\n * and `uint256` (`UintSet`) are supported.\\r\\n *\\r\\n * [WARNING]\\r\\n * ====\\r\\n *  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\\r\\n *  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\r\\n *\\r\\n *  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\\r\\n * ====\\r\\n */\\r\\nlibrary EnumerableSetUpgradeable {\\r\\n    // To implement this library for multiple types with as little code\\r\\n    // repetition as possible, we write it in terms of a generic Set type with\\r\\n    // bytes32 values.\\r\\n    // The Set implementation uses private functions, and user-facing\\r\\n    // implementations (such as AddressSet) are just wrappers around the\\r\\n    // underlying Set.\\r\\n    // This means that we can only create new EnumerableSets for types that fit\\r\\n    // in bytes32.\\r\\n\\r\\n    struct Set {\\r\\n        // Storage of set values\\r\\n        bytes32[] _values;\\r\\n        // Position of the value in the `values` array, plus 1 because index 0\\r\\n        // means a value is not in the set.\\r\\n        mapping(bytes32 => uint256) _indexes;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Add a value to a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was added to the set, that is if it was not\\r\\n     * already present.\\r\\n     */\\r\\n    function _add(Set storage set, bytes32 value) private returns (bool) {\\r\\n        if (!_contains(set, value)) {\\r\\n            set._values.push(value);\\r\\n            // The value is stored at length-1, but we add 1 to all indexes\\r\\n            // and use 0 as a sentinel value\\r\\n            set._indexes[value] = set._values.length;\\r\\n            return true;\\r\\n        } else {\\r\\n            return false;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a value from a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was removed from the set, that is if it was\\r\\n     * present.\\r\\n     */\\r\\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\\r\\n        // We read and store the value's index to prevent multiple reads from the same storage slot\\r\\n        uint256 valueIndex = set._indexes[value];\\r\\n\\r\\n        if (valueIndex != 0) {\\r\\n            // Equivalent to contains(set, value)\\r\\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\r\\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\\r\\n            // This modifies the order of the array, as noted in {at}.\\r\\n\\r\\n            uint256 toDeleteIndex = valueIndex - 1;\\r\\n            uint256 lastIndex = set._values.length - 1;\\r\\n\\r\\n            if (lastIndex != toDeleteIndex) {\\r\\n                bytes32 lastValue = set._values[lastIndex];\\r\\n\\r\\n                // Move the last value to the index where the value to delete is\\r\\n                set._values[toDeleteIndex] = lastValue;\\r\\n                // Update the index for the moved value\\r\\n                set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\r\\n            }\\r\\n\\r\\n            // Delete the slot where the moved value was stored\\r\\n            set._values.pop();\\r\\n\\r\\n            // Delete the index for the deleted slot\\r\\n            delete set._indexes[value];\\r\\n\\r\\n            return true;\\r\\n        } else {\\r\\n            return false;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns true if the value is in the set. O(1).\\r\\n     */\\r\\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\\r\\n        return set._indexes[value] != 0;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the number of values on the set. O(1).\\r\\n     */\\r\\n    function _length(Set storage set) private view returns (uint256) {\\r\\n        return set._values.length;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the value stored at position `index` in the set. O(1).\\r\\n     *\\r\\n     * Note that there are no guarantees on the ordering of values inside the\\r\\n     * array, and it may change when more values are added or removed.\\r\\n     *\\r\\n     * Requirements:\\r\\n     *\\r\\n     * - `index` must be strictly less than {length}.\\r\\n     */\\r\\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\\r\\n        return set._values[index];\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Return the entire set in an array\\r\\n     *\\r\\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\r\\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\r\\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\r\\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\r\\n     */\\r\\n    function _values(Set storage set) private view returns (bytes32[] memory) {\\r\\n        return set._values;\\r\\n    }\\r\\n\\r\\n    // Bytes32Set\\r\\n\\r\\n    struct Bytes32Set {\\r\\n        Set _inner;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Add a value to a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was added to the set, that is if it was not\\r\\n     * already present.\\r\\n     */\\r\\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\r\\n        return _add(set._inner, value);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a value from a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was removed from the set, that is if it was\\r\\n     * present.\\r\\n     */\\r\\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\r\\n        return _remove(set._inner, value);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns true if the value is in the set. O(1).\\r\\n     */\\r\\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\r\\n        return _contains(set._inner, value);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the number of values in the set. O(1).\\r\\n     */\\r\\n    function length(Bytes32Set storage set) internal view returns (uint256) {\\r\\n        return _length(set._inner);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the value stored at position `index` in the set. O(1).\\r\\n     *\\r\\n     * Note that there are no guarantees on the ordering of values inside the\\r\\n     * array, and it may change when more values are added or removed.\\r\\n     *\\r\\n     * Requirements:\\r\\n     *\\r\\n     * - `index` must be strictly less than {length}.\\r\\n     */\\r\\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\r\\n        return _at(set._inner, index);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Return the entire set in an array\\r\\n     *\\r\\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\r\\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\r\\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\r\\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\r\\n     */\\r\\n    function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\r\\n        return _values(set._inner);\\r\\n    }\\r\\n\\r\\n    // AddressSet\\r\\n\\r\\n    struct AddressSet {\\r\\n        Set _inner;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Add a value to a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was added to the set, that is if it was not\\r\\n     * already present.\\r\\n     */\\r\\n    function add(AddressSet storage set, address value) internal returns (bool) {\\r\\n        return _add(set._inner, bytes32(uint256(uint160(value))));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a value from a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was removed from the set, that is if it was\\r\\n     * present.\\r\\n     */\\r\\n    function remove(AddressSet storage set, address value) internal returns (bool) {\\r\\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns true if the value is in the set. O(1).\\r\\n     */\\r\\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\\r\\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the number of values in the set. O(1).\\r\\n     */\\r\\n    function length(AddressSet storage set) internal view returns (uint256) {\\r\\n        return _length(set._inner);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the value stored at position `index` in the set. O(1).\\r\\n     *\\r\\n     * Note that there are no guarantees on the ordering of values inside the\\r\\n     * array, and it may change when more values are added or removed.\\r\\n     *\\r\\n     * Requirements:\\r\\n     *\\r\\n     * - `index` must be strictly less than {length}.\\r\\n     */\\r\\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\\r\\n        return address(uint160(uint256(_at(set._inner, index))));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Return the entire set in an array\\r\\n     *\\r\\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\r\\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\r\\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\r\\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\r\\n     */\\r\\n    function values(AddressSet storage set) internal view returns (address[] memory) {\\r\\n        bytes32[] memory store = _values(set._inner);\\r\\n        address[] memory result;\\r\\n\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            result := store\\r\\n        }\\r\\n\\r\\n        return result;\\r\\n    }\\r\\n\\r\\n    // UintSet\\r\\n\\r\\n    struct UintSet {\\r\\n        Set _inner;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Add a value to a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was added to the set, that is if it was not\\r\\n     * already present.\\r\\n     */\\r\\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\\r\\n        return _add(set._inner, bytes32(value));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a value from a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was removed from the set, that is if it was\\r\\n     * present.\\r\\n     */\\r\\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\\r\\n        return _remove(set._inner, bytes32(value));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns true if the value is in the set. O(1).\\r\\n     */\\r\\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\r\\n        return _contains(set._inner, bytes32(value));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the number of values on the set. O(1).\\r\\n     */\\r\\n    function length(UintSet storage set) internal view returns (uint256) {\\r\\n        return _length(set._inner);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the value stored at position `index` in the set. O(1).\\r\\n     *\\r\\n     * Note that there are no guarantees on the ordering of values inside the\\r\\n     * array, and it may change when more values are added or removed.\\r\\n     *\\r\\n     * Requirements:\\r\\n     *\\r\\n     * - `index` must be strictly less than {length}.\\r\\n     */\\r\\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\r\\n        return uint256(_at(set._inner, index));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Return the entire set in an array\\r\\n     *\\r\\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\r\\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\r\\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\r\\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\r\\n     */\\r\\n    function values(UintSet storage set) internal view returns (uint256[] memory) {\\r\\n        bytes32[] memory store = _values(set._inner);\\r\\n        uint256[] memory result;\\r\\n\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            result := store\\r\\n        }\\r\\n\\r\\n        return result;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x0e86a06de431b687eaf963847642f6f5f857bcc08b5ad5334097669d83d46ab9\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/managers/BaluniV1HyperPoolZap.sol":{"BaluniV1HyperPoolZap":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniHyperUniProxy","outputs":[{"internalType":"contract IBaluniV1HyperUniProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniSwapper","outputs":[{"internalType":"contract IBaluniV1Swapper","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"changeRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapper","type":"address"}],"name":"changeSwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniProxy","type":"address"}],"name":"changeUniProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"address","name":"_uniProxy","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"hypervisor","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountsOut","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"zapIn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"hypervisor","type":"address"},{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"zapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":79,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1HyperPoolZap":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":135,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":125,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":115,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":93,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":90,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b61321b61009482396080518181816124b60152818161253b0152612736015261321b90f35b6043565b60405190565b5f80fd5b604d6087565b565b60018060a01b031690565b90565b606c6068607092604f565b605a565b604f565b90565b607a90605d565b90565b6084906073565b90565b608e30607d565b60805256fe60806040526004361015610015575b36610a5e57005b61001f5f3561011e565b806315554c55146101195780633ebb287c1461011457806345b1cb801461010f578063485cc9551461010a5780634aa4a4fc146101055780634f1ef2861461010057806352d1902d146100fb578063715018a6146100f65780637b103999146100f15780637dfb7ea1146100ec5780638af90292146100e75780638da5cb5b146100e2578063ad3cb1cc146100dd578063b1aa8cd1146100d8578063b487c54a146100d35763f2fde38b0361000e57610a2b565b6109fe565b610971565b6108c0565b61078f565b61075a565b6106a9565b6105f8565b610520565b6104eb565b61049c565b61031e565b610267565b610207565b6101d4565b6101a1565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61015890610136565b90565b6101648161014f565b0361016b57565b5f80fd5b9050359061017c8261015b565b565b9060208282031261019757610194915f0161016f565b90565b61012e565b5f0190565b346101cf576101b96101b436600461017e565b610afe565b6101c1610124565b806101cb8161019c565b0390f35b61012a565b34610202576101ec6101e736600461017e565b610b78565b6101f4610124565b806101fe8161019c565b0390f35b61012a565b346102355761021f61021a36600461017e565b610bf2565b610227610124565b806102318161019c565b0390f35b61012a565b9190604083820312610262578061025661025f925f860161016f565b9360200161016f565b90565b61012e565b346102965761028061027a36600461023a565b9061111c565b610288610124565b806102928161019c565b0390f35b61012a565b5f9103126102a557565b61012e565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102d79060086102dc93026102aa565b6102ae565b90565b906102ea91546102c7565b90565b6102f960035f906102df565b90565b6103059061014f565b9052565b919061031c905f602085019401906102fc565b565b3461034e5761032e36600461029b565b61034a6103396102ed565b610341610124565b91829182610309565b0390f35b61012a565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061039c9061035b565b810190811067ffffffffffffffff8211176103b657604052565b610365565b906103ce6103c7610124565b9283610392565b565b67ffffffffffffffff81116103ee576103ea60209161035b565b0190565b610365565b90825f939282370152565b9092919261041361040e826103d0565b6103bb565b9381855260208501908284011161042f5761042d926103f3565b565b610357565b9080601f830112156104525781602061044f933591016103fe565b90565b610353565b91909160408184031261049757610470835f830161016f565b92602082013567ffffffffffffffff81116104925761048f9201610434565b90565b610132565b61012e565b6104b06104aa366004610457565b90611151565b6104b8610124565b806104c28161019c565b0390f35b90565b6104d2906104c6565b9052565b91906104e9905f602085019401906104c9565b565b3461051b576104fb36600461029b565b6105176105066111cc565b61050e610124565b918291826104d6565b0390f35b61012a565b3461054e5761053036600461029b565b61053861122c565b610540610124565b8061054a8161019c565b0390f35b61012a565b73ffffffffffffffffffffffffffffffffffffffff1690565b61057c90600861058193026102aa565b610553565b90565b9061058f915461056c565b90565b61059c5f80610584565b90565b90565b6105b66105b16105bb92610136565b61059f565b610136565b90565b6105c7906105a2565b90565b6105d3906105be565b90565b6105df906105ca565b9052565b91906105f6905f602085019401906105d6565b565b346106285761060836600461029b565b610624610613610592565b61061b610124565b918291826105e3565b0390f35b61012a565b73ffffffffffffffffffffffffffffffffffffffff1690565b61065690600861065b93026102aa565b61062d565b90565b906106699154610646565b90565b61067860015f9061065e565b90565b610684906105be565b90565b6106909061067b565b9052565b91906106a7905f60208501940190610687565b565b346106d9576106b936600461029b565b6106d56106c461066c565b6106cc610124565b91829182610694565b0390f35b61012a565b73ffffffffffffffffffffffffffffffffffffffff1690565b61070790600861070c93026102aa565b6106de565b90565b9061071a91546106f7565b90565b61072960025f9061070f565b90565b610735906105be565b90565b6107419061072c565b9052565b9190610758905f60208501940190610738565b565b3461078a5761076a36600461029b565b61078661077561071d565b61077d610124565b91829182610745565b0390f35b61012a565b346107bf5761079f36600461029b565b6107bb6107aa61125b565b6107b2610124565b91829182610309565b0390f35b61012a565b67ffffffffffffffff81116107e2576107de60209161035b565b0190565b610365565b906107f96107f4836107c4565b6103bb565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61082f60056107e7565b9061083c602083016107fe565b565b610846610825565b90565b61085161083e565b90565b61085c610849565b90565b5190565b60209181520190565b90825f9392825e0152565b61089661089f6020936108a49361088d8161085f565b93848093610863565b9586910161086c565b61035b565b0190565b6108bd9160208201915f818403910152610877565b90565b346108f0576108d036600461029b565b6108ec6108db610854565b6108e3610124565b918291826108a8565b0390f35b61012a565b90565b610901816108f5565b0361090857565b5f80fd5b90503590610919826108f8565b565b919060a08382031261096c57610933815f850161016f565b92610941826020830161090c565b92610969610952846040850161016f565b93610960816060860161090c565b9360800161016f565b90565b61012e565b346109a35761098d61098436600461091b565b939290926122df565b610995610124565b8061099f8161019c565b0390f35b61012a565b919060a0838203126109f9576109c0815f850161016f565b926109ce826020830161016f565b926109f66109df846040850161090c565b936109ed816060860161090c565b9360800161016f565b90565b61012e565b610a15610a0c3660046109a8565b93929092612305565b610a1d610124565b80610a278161019c565b0390f35b34610a5957610a43610a3e36600461017e565b612399565b610a4b610124565b80610a558161019c565b0390f35b61012a565b5f80fd5b610a7390610a6e6123a4565b610aea565b565b610a7e906105a2565b90565b610a8a90610a75565b90565b5f1b90565b90610ab173ffffffffffffffffffffffffffffffffffffffff91610a8d565b9181191691161790565b610ac490610a75565b90565b90565b90610adf610ada610ae692610abb565b610ac7565b8254610a92565b9055565b610af6610afc91610a81565b5f610aca565b565b610b0790610a62565b565b610b1a90610b156123a4565b610b63565b565b610b25906105a2565b90565b610b3190610b1c565b90565b610b3d90610b1c565b90565b90565b90610b58610b53610b5f92610b34565b610b40565b8254610a92565b9055565b610b6f610b7691610b28565b6001610b43565b565b610b8190610b09565b565b610b9490610b8f6123a4565b610bdd565b565b610b9f906105a2565b90565b610bab90610b96565b90565b610bb790610b96565b90565b90565b90610bd2610bcd610bd992610bae565b610bba565b8254610a92565b9055565b610be9610bf091610ba2565b6002610bbd565b565b610bfb90610b83565b565b60401c90565b60ff1690565b610c15610c1a91610bfd565b610c03565b90565b610c279054610c09565b90565b151590565b5f1c90565b67ffffffffffffffff1690565b610c4d610c5291610c2f565b610c34565b90565b610c5f9054610c41565b90565b67ffffffffffffffff1690565b90565b610c86610c81610c8b92610c6f565b61059f565b610c62565b90565b90565b610ca5610ca0610caa92610c8e565b61059f565b610c62565b90565b610cb6906105be565b90565b610ccd610cc8610cd292610c6f565b61059f565b6108f5565b90565b90610ce867ffffffffffffffff91610a8d565b9181191691161790565b610d06610d01610d0b92610c62565b61059f565b610c62565b90565b90565b90610d26610d21610d2d92610cf2565b610d0e565b8254610cd5565b9055565b60401b90565b90610d4b68ff000000000000000091610d31565b9181191691161790565b610d5e90610c2a565b90565b90565b90610d79610d74610d8092610d55565b610d61565b8254610d37565b9055565b610d8d90610c91565b9052565b9190610da4905f60208501940190610d84565b565b90610daf612412565b91610dc4610dbe5f8501610c1d565b15610c2a565b91610dd05f8501610c55565b80610de3610ddd5f610c72565b91610c62565b1480610f1d575b90610dfe610df86001610c91565b91610c62565b1480610ef5575b610e10909115610c2a565b9081610ee4575b50610ea857610e4091610e35610e2d6001610c91565b5f8701610d11565b83610e96575b610fbb565b610e48575b50565b610e55905f809101610d64565b6001610e8d7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291610e84610124565b91829182610d91565b0390a15f610e45565b610ea360015f8701610d64565b610e3b565b610eb0610124565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280610ee06004820161019c565b0390fd5b610eef915015610c2a565b5f610e17565b50610e10610f0230610cad565b3b610f15610f0f5f610cb9565b916108f5565b149050610e05565b5083610dea565b610f30610f3591610c2f565b610553565b90565b610f429054610f24565b90565b5f80fd5b60e01b90565b90505190610f5c8261015b565b565b90602082820312610f7757610f74915f01610f4f565b90565b61012e565b610f84610124565b3d5f823e3d90fd5b610f95906105be565b90565b90565b90610fb0610fab610fb792610f8c565b610f98565b8254610a92565b9055565b610fe0610fe691610fcb33612454565b610fd361247b565b610fdb61248f565b610a81565b5f610aca565b6110126020610ffc610ff75f610f38565b6105ca565b6382755ebb9061100a610124565b938492610f49565b825281806110226004820161019c565b03915afa9182156111175761104f61104861105b94611054945f916110e9575b50610b28565b6001610b43565b610ba2565b6002610bbd565b611087602061107161106c5f610f38565b6105ca565b636c9c00789061107f610124565b938492610f49565b825281806110976004820161019c565b03915afa80156110e4576110b4915f916110b6575b506003610f9b565b565b6110d7915060203d81116110dd575b6110cf8183610392565b810190610f5e565b5f6110ac565b503d6110c5565b610f7c565b61110a915060203d8111611110575b6111028183610392565b810190610f5e565b5f611042565b503d6110f8565b610f7c565b9061112691610da6565b565b9061113a916111356124a5565b61113c565b565b9061114f9161114a81612577565b6125e7565b565b9061115b91611128565b565b5f90565b6111729061116d612725565b6111c0565b90565b90565b61118c61118761119192611175565b610a8d565b6104c6565b90565b6111bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc611178565b90565b506111c9611194565b90565b6111dc6111d761115d565b611161565b90565b6111e76123a4565b6111ef611219565b565b61120561120061120a92610c6f565b61059f565b610136565b90565b611216906111f1565b90565b61122a6112255f61120d565b6127a3565b565b6112346111df565b565b5f90565b61124661124b91610c2f565b6102ae565b90565b611258905461123a565b90565b611263611236565b506112765f61127061280f565b0161124e565b90565b9061128e949392916112896128d8565b6118bc565b611296612968565b565b6112a1906105a2565b90565b6112ad90611298565b90565b6112b9906105be565b90565b6112c59061014f565b90565b6112d1816112bc565b036112d857565b5f80fd5b905051906112e9826112c8565b565b9060208282031261130457611301915f016112dc565b90565b61012e565b611312906105be565b90565b90565b61132c61132761133192611315565b61059f565b6108f5565b90565b67ffffffffffffffff811161134c5760208091020190565b610365565b9061136361135e83611334565b6103bb565b918252565b369037565b9061139261137a83611351565b926020806113888693611334565b9201910390611368565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5190565b906113cf826113c1565b8110156113e0576020809102010190565b611394565b906113ef9061014f565b9052565b61140761140261140c92610c8e565b61059f565b6108f5565b90565b67ffffffffffffffff81116114275760208091020190565b610365565b9061143e6114398361140f565b6103bb565b918252565b369037565b9061146d6114558361142c565b92602080611463869361140f565b9201910390611443565b565b600161147b91016108f5565b90565b611488905161014f565b90565b611494906105a2565b90565b6114a09061148b565b90565b6114ac906105be565b90565b905051906114bc826108f8565b565b906020828203126114d7576114d4915f016114af565b90565b61012e565b5190565b906114ea826114dc565b8110156114fb576020809102010190565b611394565b9061150a906108f5565b9052565b61151781610c2a565b0361151e57565b5f80fd5b9050519061152f8261150e565b565b9060208282031261154a57611547915f01611522565b90565b61012e565b611558906108f5565b9052565b60409061158561158c949695939661157b60608401985f8501906102fc565b60208301906102fc565b019061154f565b565b9160206115af9294936115a860408201965f8301906102fc565b019061154f565b565b67ffffffffffffffff81116115c65760200290565b610365565b6115d76115dc916115b1565b6103bb565b90565b906115fd6115ec836115cb565b926115f784916115b1565b90611443565b565b61160960046115df565b90565b50600490565b9061161c8261160c565b81101561162a576020020190565b611394565b90565b61164661164161164b9261162f565b61059f565b6108f5565b90565b9190604083820312611676578061166a611673925f86016114af565b936020016114af565b90565b61012e565b905090565b90565b61168c906108f5565b9052565b9061169d81602093611683565b0190565b60200190565b6116c36116bd6116b68361160c565b809461167b565b91611680565b5f915b8383106116d35750505050565b6116e96116e36001928451611690565b926116a1565b920191906116c6565b61172761172e9461171d60609498979561171360e086019a5f87019061154f565b60208501906102fc565b60408301906102fc565b01906116a7565b565b61173a90516108f5565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61177961177f919392936108f5565b926108f5565b820391821161178a57565b61173d565b61179e6117a4919392936108f5565b926108f5565b82018092116117af57565b61173d565b5f7f496e73756666696369656e74206f757470757420616d6f756e74000000000000910152565b6117e8601a602092610863565b6117f1816117b4565b0190565b61180a9060208101905f8183039101526117db565b90565b1561181457565b61181c610124565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061184c600482016117f5565b0390fd5b611859906105a2565b90565b61186590611850565b90565b611871906105be565b90565b5f91031261187e57565b61012e565b9190611896905f6020850194019061154f565b565b6118a1906105a2565b90565b6118ad90611898565b90565b6118b9906105be565b90565b93949291946118ca856112a4565b956118ef60206118d9896112b0565b630dfe1681906118e7610124565b938492610f49565b825281806118ff6004820161019c565b03915afa80156122da5761191a915f916122ac575b50611309565b9461193f60206119298a6112b0565b63d21220a790611937610124565b938492610f49565b8252818061194f6004820161019c565b03915afa9081156122a7576119b69161196f915f91612279575b50611309565b61199d61198461197f6002611318565b61136d565b986119988a6119925f610cb9565b906113c5565b6113e5565b6119b1886119ab60016113f3565b906113c5565b6113e5565b6119c86119c36002611318565b611448565b946119da6119d5886113c1565b611448565b986119e45f610cb9565b5b80611a006119fa6119f58c6113c1565b6108f5565b916108f5565b1015611ad257611a61906020611a2f611a2a611a25611a208e86906113c5565b61147e565b611497565b611309565b6370a0823190611a56611a41306114a3565b92611a4a610124565b96879485938493610f49565b835260048301610309565b03915afa918215611acd57611a94928d611a8f925f92611a99575b50611a8a90918490926114e0565b611500565b61146f565b6119e5565b611a8a919250611abf9060203d8111611ac6575b611ab78183610392565b8101906114be565b9190611a7c565b503d611aad565b610f7c565b50909192939598969497611b246020611af2611aed88611497565b611309565b6370a0823190611b19611b04306114a3565b92611b0d610124565b95869485938493610f49565b835260048301610309565b03915afa908115612274575f91612246575b5098611b49611b4483611497565b611309565b60206323b872dd913390611b795f611b60306114a3565b95611b8488611b6d610124565b98899788968795610f49565b85526004850161155c565b03925af1801561224157612215575b506020611ba7611ba284611497565b611309565b63095ea7b39390611bcb5f8596611bd6611bbf610124565b98899687958694610f49565b84526004840161158e565b03925af1918215612210576040926121e4575b50611c8e611bf56115ff565b93611c1a611c025f610cb9565b611c1587611c0f5f610cb9565b90611612565b611500565b611c3f611c265f610cb9565b611c3a87611c3460016113f3565b90611612565b611500565b611c64611c4b5f610cb9565b611c5f87611c596002611318565b90611612565b611500565b611c89611c705f610cb9565b611c8487611c7e6003611632565b90611612565b611500565b6112b0565b611cc15f63a8559872611ccc611ca3306114a3565b97611cad306114a3565b611cb5610124565b998a9889978896610f49565b8652600486016116f2565b03925af180156121df576121b2575b50611ce55f610cb9565b94611cef5f610cb9565b955b86611d0c611d06611d01896113c1565b6108f5565b916108f5565b1015611f7457611d25611d208789906113c5565b61147e565b611d37611d318761014f565b9161014f565b145f14611e4957611d986020611d66611d61611d5c611d578b8d906113c5565b61147e565b611497565b611309565b6370a0823190611d8d611d78306114a3565b92611d81610124565b95869485938493610f49565b835260048301610309565b03915afa918215611e4457611de48c611ddf611dd7611e04968d8f611dfd985f93611e0a575b50611dd191611dcc916114e0565b611730565b9061176a565b8c90926114e0565b611500565b611df7611df28d8b906114e0565b611730565b9061178f565b965b61146f565b95611cf1565b611dcc91935091611e34611dd19360203d8111611e3d575b611e2c8183610392565b8101906114be565b93915091611dbe565b503d611e22565b610f7c565b611ea36020611e71611e6c611e67611e628b8d906113c5565b61147e565b611497565b611309565b6370a0823190611e98611e83306114a3565b92611e8c610124565b95869485938493610f49565b835260048301610309565b03915afa918215611f6f57611eef8c611eea611ee2611e04968d8f611f2f985f93611f35575b50611edc91611ed7916114e0565b611730565b9061176a565b8c90926114e0565b611500565b611f29611f05611f008a8c906113c5565b61147e565b8d611f19611f148d8c936114e0565b611730565b90611f23306114a3565b92612ad1565b9061178f565b96611dff565b611ed791935091611f5f611edc9360203d8111611f68575b611f578183610392565b8101906114be565b93915091611ec9565b503d611f4d565b610f7c565b50955095925095509150611fc66020611f94611f8f85611497565b611309565b6370a0823190611fbb611fa6306114a3565b92611faf610124565b95869485938493610f49565b835260048301610309565b03915afa9182156121ad5761200192611fe6925f9161217f575b5061176a565b93611ffa611ff486926108f5565b916108f5565b101561180d565b8061201d612017612012600361124e565b61014f565b9161014f565b145f146120f6575061203f61203a612035600361124e565b61185c565b611868565b90632e1a7d4d83833b156120f1576120769361206b5f809461205f610124565b97889586948593610f49565b835260048301611883565b03925af19081156120ec575f936120a161209c86959386959486956120c0575b506118a4565b6118b0565b8282156120b7575bf1156120b2575b565b610f7c565b506108fc6120a9565b6120df90863d81116120e5575b6120d78183610392565b810190611874565b5f612096565b503d6120cd565b610f7c565b610f45565b9161210b61210660209394611497565b611309565b61212e5f63a9059cbb959395612139612122610124565b97889687958694610f49565b84526004840161158e565b03925af1801561217a5761214e575b506120b0565b61216e9060203d8111612173575b6121668183610392565b810190611531565b612148565b503d61215c565b610f7c565b6121a0915060203d81116121a6575b6121988183610392565b8101906114be565b5f611fe0565b503d61218e565b610f7c565b6121d29060403d81116121d8575b6121ca8183610392565b81019061164e565b50611cdb565b503d6121c0565b610f7c565b6122049060203d8111612209575b6121fc8183610392565b810190611531565b611be9565b503d6121f2565b610f7c565b6122359060203d811161223a575b61222d8183610392565b810190611531565b611b93565b503d612223565b610f7c565b612267915060203d811161226d575b61225f8183610392565b8101906114be565b5f611b36565b503d612255565b610f7c565b61229a915060203d81116122a0575b6122928183610392565b8101906112eb565b5f611969565b503d612288565b610f7c565b6122cd915060203d81116122d3575b6122c58183610392565b8101906112eb565b5f611914565b503d6122bb565b610f7c565b906122ec94939291611279565b565b50505050506122fb6128d8565b612303612968565b565b90612312949392916122ee565b565b612325906123206123a4565b612327565b565b8061234261233c6123375f61120d565b61014f565b9161014f565b1461235257612350906127a3565b565b61239561235e5f61120d565b612366610124565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b6123a290612314565b565b6123ac61125b565b6123c56123bf6123ba612d77565b61014f565b9161014f565b036123cc57565b61240e6123d7612d77565b6123df610124565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61244790612442612d84565b612449565b565b61245290612e5c565b565b61245d90612436565b565b612467612d84565b61246f612471565b565b612479612e96565b565b61248361245f565b565b61248d612d84565b565b612497612485565b565b6124a2906105be565b90565b6124ae30612499565b6124e06124da7f000000000000000000000000000000000000000000000000000000000000000061014f565b9161014f565b14801561252a575b6124ee57565b6124f6610124565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806125266004820161019c565b0390fd5b50612533612ea0565b61256561255f7f000000000000000000000000000000000000000000000000000000000000000061014f565b9161014f565b14156124e8565b506125756123a4565b565b6125809061256c565b565b61258b906105a2565b90565b61259790612582565b90565b6125a3906105be565b90565b6125af816104c6565b036125b657565b5f80fd5b905051906125c7826125a6565b565b906020828203126125e2576125df915f016125ba565b90565b61012e565b919061261560206125ff6125fa8661258e565b61259a565b6352d1902d9061260d610124565b938492610f49565b825281806126256004820161019c565b03915afa80915f926126f5575b50155f1461268657505090600161264757505b565b61268290612653610124565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b92836126a161269b612696611194565b6104c6565b916104c6565b036126b6576126b1929350612eca565b612645565b6126f1846126c2610124565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016104d6565b0390fd5b61271791925060203d811161271e575b61270f8183610392565b8101906125c9565b905f612632565b503d612705565b61272e30612499565b61276061275a7f000000000000000000000000000000000000000000000000000000000000000061014f565b9161014f565b0361276757565b61276f610124565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061279f6004820161019c565b0390fd5b6127ab61280f565b6127c36127b95f830161124e565b915f849101610f9b565b906127f76127f17f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610f8c565b91610f8c565b91612800610124565b8061280a8161019c565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b90565b61284261284791610c2f565b612833565b90565b6128549054612836565b90565b6128616002611318565b90565b9061288f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91610a8d565b9181191691161790565b6128ad6128a86128b2926108f5565b61059f565b6108f5565b90565b90565b906128cd6128c86128d492612899565b6128b5565b8254612864565b9055565b6128e0612f53565b6128eb5f820161284a565b6129046128fe6128f9612857565b6108f5565b916108f5565b1461291f5761291d905f612916612857565b91016128b8565b565b612927610124565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000008152806129576004820161019c565b0390fd5b61296560016113f3565b90565b612983612973612f53565b5f61297c61295b565b91016128b8565b565b5f90565b61299561299a91610c2f565b61062d565b90565b6129a79054612989565b90565b6129df6129e6946129d56060949897956129cb608086019a5f8701906102fc565b60208501906102fc565b604083019061154f565b01906102fc565b565b90959492612a3394612a22612a2c92612a18608096612a0e60a088019c5f8901906102fc565b60208701906102fc565b60408501906102fc565b606083019061154f565b01906102fc565b565b5f7f53776170206661696c6564000000000000000000000000000000000000000000910152565b612a69600b602092610863565b612a7281612a35565b0190565b612a8b9060208101905f818303910152612a5c565b90565b15612a9557565b612a9d610124565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612acd60048201612a76565b0390fd5b92919091612add612985565b93612b0a6020612af4612aef5f610f38565b6105ca565b636c9c007890612b02610124565b938492610f49565b82528180612b1a6004820161019c565b03915afa908115612d72575f91612d44575b509281612b41612b3b8761014f565b9161014f565b14612d3b57612b57612b5283611497565b611309565b602063095ea7b391612b71612b6c600161299d565b61067b565b90612b8f5f8695612b9a612b83610124565b97889687958694610f49565b84526004840161158e565b03925af18015612d3657612d0a575b50612bbc612bb7600161299d565b61067b565b6020632d6bc8ea918490612be65f8a95612bf1888b90612bda610124565b998a9889978896610f49565b8652600486016129aa565b03925af180915f92612cda575b50155f14612cce57506001612c33575b50505050505b612c3081612c2a612c245f610cb9565b916108f5565b11612a8e565b90565b6020949550612c7391612c7e5f92612c53612c4e600161299d565b61067b565b95635efaaebb939799919091612c67610124565b9a8b998a988997610f49565b8752600487016129e8565b03925af1908115612cc9575f91612c9b575b505f80808080612c0e565b612cbc915060203d8111612cc2575b612cb48183610392565b8101906114be565b5f612c90565b503d612caa565b610f7c565b95505050505050612c14565b612cfc91925060203d8111612d03575b612cf48183610392565b8101906114be565b905f612bfe565b503d612cea565b612d2a9060203d8111612d2f575b612d228183610392565b810190611531565b612ba9565b503d612d18565b610f7c565b94505050505090565b612d65915060203d8111612d6b575b612d5d8183610392565b810190610f5e565b5f612b2c565b503d612d53565b610f7c565b612d7f611236565b503390565b612d95612d8f612f7b565b15610c2a565b612d9b57565b612da3610124565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612dd36004820161019c565b0390fd5b612de890612de3612d84565b612dea565b565b80612e05612dff612dfa5f61120d565b61014f565b9161014f565b14612e1557612e13906127a3565b565b612e58612e215f61120d565b612e29610124565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b612e6590612dd7565b565b612e6f612d84565b612e77612e79565b565b612e94612e84612f53565b5f612e8d61295b565b91016128b8565b565b612e9e612e67565b565b612ea8611236565b50612ec35f612ebd612eb8611194565b612f99565b0161124e565b90565b5190565b90612ed482612f9c565b81612eff7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610f8c565b90612f08610124565b80612f128161019c565b0390a2612f1e81612ec6565b612f30612f2a5f610cb9565b916108f5565b115f14612f4457612f40916130ac565b505b565b5050612f4e613011565b612f42565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b5f90565b612f83612f77565b50612f965f612f90612412565b01610c1d565b90565b90565b803b612fb0612faa5f610cb9565b916108f5565b14612fd257612fd0905f612fca612fc5611194565b612f99565b01610f9b565b565b61300d90612fde610124565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b3461302461301e5f610cb9565b916108f5565b1161302b57565b613033610124565b7fb398979f000000000000000000000000000000000000000000000000000000008152806130636004820161019c565b0390fd5b606090565b9061307e613079836103d0565b6103bb565b918252565b3d5f1461309e576130933d61306c565b903d5f602084013e5b565b6130a6613067565b9061309c565b5f806130d8936130ba613067565b508390602081019051915af4906130cf613083565b909190916130db565b90565b906130ef906130e8613067565b5015610c2a565b5f146130fb575061317f565b61310482612ec6565b6131166131105f610cb9565b916108f5565b1480613164575b613125575090565b61316090613131610124565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b50803b6131796131735f610cb9565b916108f5565b1461311d565b61318881612ec6565b61319a6131945f610cb9565b916108f5565b115f146131a957805190602001fd5b6131b1610124565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806131e16004820161019c565b0390fdfea26469706673582212204e8f428379a50962bd52b1f6207dd20a02c7a34b8a24b050e3063ef93458dc4764736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x321B PUSH2 0x94 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x24B6 ADD MSTORE DUP2 DUP2 PUSH2 0x253B ADD MSTORE PUSH2 0x2736 ADD MSTORE PUSH2 0x321B SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x87 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x6C PUSH1 0x68 PUSH1 0x70 SWAP3 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x5A JUMP JUMPDEST PUSH1 0x4F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7A SWAP1 PUSH1 0x5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x73 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8E ADDRESS PUSH1 0x7D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0xA5E JUMPI STOP JUMPDEST PUSH2 0x1F PUSH0 CALLDATALOAD PUSH2 0x11E JUMP JUMPDEST DUP1 PUSH4 0x15554C55 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x3EBB287C EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x45B1CB80 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x7DFB7EA1 EQ PUSH2 0xEC JUMPI DUP1 PUSH4 0x8AF90292 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0xB1AA8CD1 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0xB487C54A EQ PUSH2 0xD3 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xA2B JUMP JUMPDEST PUSH2 0x9FE JUMP JUMPDEST PUSH2 0x971 JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x520 JUMP JUMPDEST PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x49C JUMP JUMPDEST PUSH2 0x31E JUMP JUMPDEST PUSH2 0x267 JUMP JUMPDEST PUSH2 0x207 JUMP JUMPDEST PUSH2 0x1D4 JUMP JUMPDEST PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x158 SWAP1 PUSH2 0x136 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x164 DUP2 PUSH2 0x14F JUMP JUMPDEST SUB PUSH2 0x16B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x17C DUP3 PUSH2 0x15B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x197 JUMPI PUSH2 0x194 SWAP2 PUSH0 ADD PUSH2 0x16F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1CF JUMPI PUSH2 0x1B9 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E JUMP JUMPDEST PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x1CB DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST CALLVALUE PUSH2 0x202 JUMPI PUSH2 0x1EC PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E JUMP JUMPDEST PUSH2 0xB78 JUMP JUMPDEST PUSH2 0x1F4 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x1FE DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST CALLVALUE PUSH2 0x235 JUMPI PUSH2 0x21F PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x17E JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x231 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x262 JUMPI DUP1 PUSH2 0x256 PUSH2 0x25F SWAP3 PUSH0 DUP7 ADD PUSH2 0x16F JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x16F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST CALLVALUE PUSH2 0x296 JUMPI PUSH2 0x280 PUSH2 0x27A CALLDATASIZE PUSH1 0x4 PUSH2 0x23A JUMP JUMPDEST SWAP1 PUSH2 0x111C JUMP JUMPDEST PUSH2 0x288 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x292 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x2A5 JUMPI JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2D7 SWAP1 PUSH1 0x8 PUSH2 0x2DC SWAP4 MUL PUSH2 0x2AA JUMP JUMPDEST PUSH2 0x2AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2EA SWAP2 SLOAD PUSH2 0x2C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x2DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x305 SWAP1 PUSH2 0x14F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x31C SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x34E JUMPI PUSH2 0x32E CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x34A PUSH2 0x339 PUSH2 0x2ED JUMP JUMPDEST PUSH2 0x341 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x39C SWAP1 PUSH2 0x35B JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x3B6 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 PUSH2 0x3CE PUSH2 0x3C7 PUSH2 0x124 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x392 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3EE JUMPI PUSH2 0x3EA PUSH1 0x20 SWAP2 PUSH2 0x35B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x413 PUSH2 0x40E DUP3 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x42F JUMPI PUSH2 0x42D SWAP3 PUSH2 0x3F3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x357 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x452 JUMPI DUP2 PUSH1 0x20 PUSH2 0x44F SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x3FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x497 JUMPI PUSH2 0x470 DUP4 PUSH0 DUP4 ADD PUSH2 0x16F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x492 JUMPI PUSH2 0x48F SWAP3 ADD PUSH2 0x434 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0x4B0 PUSH2 0x4AA CALLDATASIZE PUSH1 0x4 PUSH2 0x457 JUMP JUMPDEST SWAP1 PUSH2 0x1151 JUMP JUMPDEST PUSH2 0x4B8 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x4C2 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4D2 SWAP1 PUSH2 0x4C6 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4E9 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4C9 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x51B JUMPI PUSH2 0x4FB CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x517 PUSH2 0x506 PUSH2 0x11CC JUMP JUMPDEST PUSH2 0x50E PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4D6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST CALLVALUE PUSH2 0x54E JUMPI PUSH2 0x530 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x538 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x540 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x54A DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x57C SWAP1 PUSH1 0x8 PUSH2 0x581 SWAP4 MUL PUSH2 0x2AA JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x58F SWAP2 SLOAD PUSH2 0x56C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x59C PUSH0 DUP1 PUSH2 0x584 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5B6 PUSH2 0x5B1 PUSH2 0x5BB SWAP3 PUSH2 0x136 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C7 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D3 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5DF SWAP1 PUSH2 0x5CA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5F6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5D6 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x628 JUMPI PUSH2 0x608 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x624 PUSH2 0x613 PUSH2 0x592 JUMP JUMPDEST PUSH2 0x61B PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5E3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x656 SWAP1 PUSH1 0x8 PUSH2 0x65B SWAP4 MUL PUSH2 0x2AA JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x669 SWAP2 SLOAD PUSH2 0x646 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x678 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x65E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x684 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x690 SWAP1 PUSH2 0x67B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6A7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x687 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x6D9 JUMPI PUSH2 0x6B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x6D5 PUSH2 0x6C4 PUSH2 0x66C JUMP JUMPDEST PUSH2 0x6CC PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x694 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x707 SWAP1 PUSH1 0x8 PUSH2 0x70C SWAP4 MUL PUSH2 0x2AA JUMP JUMPDEST PUSH2 0x6DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x71A SWAP2 SLOAD PUSH2 0x6F7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x729 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x70F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x735 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x741 SWAP1 PUSH2 0x72C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x758 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x738 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x78A JUMPI PUSH2 0x76A CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x786 PUSH2 0x775 PUSH2 0x71D JUMP JUMPDEST PUSH2 0x77D PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x745 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST CALLVALUE PUSH2 0x7BF JUMPI PUSH2 0x79F CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x7BB PUSH2 0x7AA PUSH2 0x125B JUMP JUMPDEST PUSH2 0x7B2 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7E2 JUMPI PUSH2 0x7DE PUSH1 0x20 SWAP2 PUSH2 0x35B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 PUSH2 0x7F9 PUSH2 0x7F4 DUP4 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x82F PUSH1 0x5 PUSH2 0x7E7 JUMP JUMPDEST SWAP1 PUSH2 0x83C PUSH1 0x20 DUP4 ADD PUSH2 0x7FE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x846 PUSH2 0x825 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x851 PUSH2 0x83E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x85C PUSH2 0x849 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x896 PUSH2 0x89F PUSH1 0x20 SWAP4 PUSH2 0x8A4 SWAP4 PUSH2 0x88D DUP2 PUSH2 0x85F JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x863 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x86C JUMP JUMPDEST PUSH2 0x35B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x8BD SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x877 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8F0 JUMPI PUSH2 0x8D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x8EC PUSH2 0x8DB PUSH2 0x854 JUMP JUMPDEST PUSH2 0x8E3 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x8A8 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x901 DUP2 PUSH2 0x8F5 JUMP JUMPDEST SUB PUSH2 0x908 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x919 DUP3 PUSH2 0x8F8 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x96C JUMPI PUSH2 0x933 DUP2 PUSH0 DUP6 ADD PUSH2 0x16F JUMP JUMPDEST SWAP3 PUSH2 0x941 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x90C JUMP JUMPDEST SWAP3 PUSH2 0x969 PUSH2 0x952 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x16F JUMP JUMPDEST SWAP4 PUSH2 0x960 DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x90C JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x16F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST CALLVALUE PUSH2 0x9A3 JUMPI PUSH2 0x98D PUSH2 0x984 CALLDATASIZE PUSH1 0x4 PUSH2 0x91B JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x22DF JUMP JUMPDEST PUSH2 0x995 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x99F DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x9F9 JUMPI PUSH2 0x9C0 DUP2 PUSH0 DUP6 ADD PUSH2 0x16F JUMP JUMPDEST SWAP3 PUSH2 0x9CE DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x16F JUMP JUMPDEST SWAP3 PUSH2 0x9F6 PUSH2 0x9DF DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x90C JUMP JUMPDEST SWAP4 PUSH2 0x9ED DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x90C JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x16F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0xA15 PUSH2 0xA0C CALLDATASIZE PUSH1 0x4 PUSH2 0x9A8 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x2305 JUMP JUMPDEST PUSH2 0xA1D PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0xA27 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xA59 JUMPI PUSH2 0xA43 PUSH2 0xA3E CALLDATASIZE PUSH1 0x4 PUSH2 0x17E JUMP JUMPDEST PUSH2 0x2399 JUMP JUMPDEST PUSH2 0xA4B PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0xA55 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xA73 SWAP1 PUSH2 0xA6E PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0xAEA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA7E SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA8A SWAP1 PUSH2 0xA75 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAB1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xA8D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xAC4 SWAP1 PUSH2 0xA75 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xADF PUSH2 0xADA PUSH2 0xAE6 SWAP3 PUSH2 0xABB JUMP JUMPDEST PUSH2 0xAC7 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xA92 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAF6 PUSH2 0xAFC SWAP2 PUSH2 0xA81 JUMP JUMPDEST PUSH0 PUSH2 0xACA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB07 SWAP1 PUSH2 0xA62 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB1A SWAP1 PUSH2 0xB15 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0xB63 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB25 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB31 SWAP1 PUSH2 0xB1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB3D SWAP1 PUSH2 0xB1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB58 PUSH2 0xB53 PUSH2 0xB5F SWAP3 PUSH2 0xB34 JUMP JUMPDEST PUSH2 0xB40 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xA92 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB6F PUSH2 0xB76 SWAP2 PUSH2 0xB28 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xB43 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB81 SWAP1 PUSH2 0xB09 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB94 SWAP1 PUSH2 0xB8F PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0xBDD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB9F SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBAB SWAP1 PUSH2 0xB96 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBB7 SWAP1 PUSH2 0xB96 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBD2 PUSH2 0xBCD PUSH2 0xBD9 SWAP3 PUSH2 0xBAE JUMP JUMPDEST PUSH2 0xBBA JUMP JUMPDEST DUP3 SLOAD PUSH2 0xA92 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBE9 PUSH2 0xBF0 SWAP2 PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xBBD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xBFB SWAP1 PUSH2 0xB83 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xC15 PUSH2 0xC1A SWAP2 PUSH2 0xBFD JUMP JUMPDEST PUSH2 0xC03 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC27 SWAP1 SLOAD PUSH2 0xC09 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xC4D PUSH2 0xC52 SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0xC34 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC5F SWAP1 SLOAD PUSH2 0xC41 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC86 PUSH2 0xC81 PUSH2 0xC8B SWAP3 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0xC62 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA5 PUSH2 0xCA0 PUSH2 0xCAA SWAP3 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0xC62 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB6 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCCD PUSH2 0xCC8 PUSH2 0xCD2 SWAP3 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xCE8 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xA8D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xD06 PUSH2 0xD01 PUSH2 0xD0B SWAP3 PUSH2 0xC62 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0xC62 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD26 PUSH2 0xD21 PUSH2 0xD2D SWAP3 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST DUP3 SLOAD PUSH2 0xCD5 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD4B PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0xD31 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xD5E SWAP1 PUSH2 0xC2A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD79 PUSH2 0xD74 PUSH2 0xD80 SWAP3 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0xD61 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xD37 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD8D SWAP1 PUSH2 0xC91 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xDA4 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xD84 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xDAF PUSH2 0x2412 JUMP JUMPDEST SWAP2 PUSH2 0xDC4 PUSH2 0xDBE PUSH0 DUP6 ADD PUSH2 0xC1D JUMP JUMPDEST ISZERO PUSH2 0xC2A JUMP JUMPDEST SWAP2 PUSH2 0xDD0 PUSH0 DUP6 ADD PUSH2 0xC55 JUMP JUMPDEST DUP1 PUSH2 0xDE3 PUSH2 0xDDD PUSH0 PUSH2 0xC72 JUMP JUMPDEST SWAP2 PUSH2 0xC62 JUMP JUMPDEST EQ DUP1 PUSH2 0xF1D JUMPI JUMPDEST SWAP1 PUSH2 0xDFE PUSH2 0xDF8 PUSH1 0x1 PUSH2 0xC91 JUMP JUMPDEST SWAP2 PUSH2 0xC62 JUMP JUMPDEST EQ DUP1 PUSH2 0xEF5 JUMPI JUMPDEST PUSH2 0xE10 SWAP1 SWAP2 ISZERO PUSH2 0xC2A JUMP JUMPDEST SWAP1 DUP2 PUSH2 0xEE4 JUMPI JUMPDEST POP PUSH2 0xEA8 JUMPI PUSH2 0xE40 SWAP2 PUSH2 0xE35 PUSH2 0xE2D PUSH1 0x1 PUSH2 0xC91 JUMP JUMPDEST PUSH0 DUP8 ADD PUSH2 0xD11 JUMP JUMPDEST DUP4 PUSH2 0xE96 JUMPI JUMPDEST PUSH2 0xFBB JUMP JUMPDEST PUSH2 0xE48 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0xE55 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE8D PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0xE84 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xD91 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0xE45 JUMP JUMPDEST PUSH2 0xEA3 PUSH1 0x1 PUSH0 DUP8 ADD PUSH2 0xD64 JUMP JUMPDEST PUSH2 0xE3B JUMP JUMPDEST PUSH2 0xEB0 PUSH2 0x124 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xEE0 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xEEF SWAP2 POP ISZERO PUSH2 0xC2A JUMP JUMPDEST PUSH0 PUSH2 0xE17 JUMP JUMPDEST POP PUSH2 0xE10 PUSH2 0xF02 ADDRESS PUSH2 0xCAD JUMP JUMPDEST EXTCODESIZE PUSH2 0xF15 PUSH2 0xF0F PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0xE05 JUMP JUMPDEST POP DUP4 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xF30 PUSH2 0xF35 SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF42 SWAP1 SLOAD PUSH2 0xF24 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xF5C DUP3 PUSH2 0x15B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xF77 JUMPI PUSH2 0xF74 SWAP2 PUSH0 ADD PUSH2 0xF4F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0xF84 PUSH2 0x124 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0xF95 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xFB0 PUSH2 0xFAB PUSH2 0xFB7 SWAP3 PUSH2 0xF8C JUMP JUMPDEST PUSH2 0xF98 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xA92 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xFE0 PUSH2 0xFE6 SWAP2 PUSH2 0xFCB CALLER PUSH2 0x2454 JUMP JUMPDEST PUSH2 0xFD3 PUSH2 0x247B JUMP JUMPDEST PUSH2 0xFDB PUSH2 0x248F JUMP JUMPDEST PUSH2 0xA81 JUMP JUMPDEST PUSH0 PUSH2 0xACA JUMP JUMPDEST PUSH2 0x1012 PUSH1 0x20 PUSH2 0xFFC PUSH2 0xFF7 PUSH0 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x100A PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1022 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1117 JUMPI PUSH2 0x104F PUSH2 0x1048 PUSH2 0x105B SWAP5 PUSH2 0x1054 SWAP5 PUSH0 SWAP2 PUSH2 0x10E9 JUMPI JUMPDEST POP PUSH2 0xB28 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xB43 JUMP JUMPDEST PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xBBD JUMP JUMPDEST PUSH2 0x1087 PUSH1 0x20 PUSH2 0x1071 PUSH2 0x106C PUSH0 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x107F PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1097 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x10E4 JUMPI PUSH2 0x10B4 SWAP2 PUSH0 SWAP2 PUSH2 0x10B6 JUMPI JUMPDEST POP PUSH1 0x3 PUSH2 0xF9B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x10D7 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x10DD JUMPI JUMPDEST PUSH2 0x10CF DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH0 PUSH2 0x10AC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10C5 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x110A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1110 JUMPI JUMPDEST PUSH2 0x1102 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH0 PUSH2 0x1042 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10F8 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST SWAP1 PUSH2 0x1126 SWAP2 PUSH2 0xDA6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x113A SWAP2 PUSH2 0x1135 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x113C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x114F SWAP2 PUSH2 0x114A DUP2 PUSH2 0x2577 JUMP JUMPDEST PUSH2 0x25E7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x115B SWAP2 PUSH2 0x1128 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1172 SWAP1 PUSH2 0x116D PUSH2 0x2725 JUMP JUMPDEST PUSH2 0x11C0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x118C PUSH2 0x1187 PUSH2 0x1191 SWAP3 PUSH2 0x1175 JUMP JUMPDEST PUSH2 0xA8D JUMP JUMPDEST PUSH2 0x4C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11BD PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x1178 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x11C9 PUSH2 0x1194 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11DC PUSH2 0x11D7 PUSH2 0x115D JUMP JUMPDEST PUSH2 0x1161 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11E7 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0x11EF PUSH2 0x1219 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1205 PUSH2 0x1200 PUSH2 0x120A SWAP3 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1216 SWAP1 PUSH2 0x11F1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x122A PUSH2 0x1225 PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x27A3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1234 PUSH2 0x11DF JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1246 PUSH2 0x124B SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x2AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1258 SWAP1 SLOAD PUSH2 0x123A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1263 PUSH2 0x1236 JUMP JUMPDEST POP PUSH2 0x1276 PUSH0 PUSH2 0x1270 PUSH2 0x280F JUMP JUMPDEST ADD PUSH2 0x124E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x128E SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1289 PUSH2 0x28D8 JUMP JUMPDEST PUSH2 0x18BC JUMP JUMPDEST PUSH2 0x1296 PUSH2 0x2968 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12A1 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12AD SWAP1 PUSH2 0x1298 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12B9 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C5 SWAP1 PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12D1 DUP2 PUSH2 0x12BC JUMP JUMPDEST SUB PUSH2 0x12D8 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x12E9 DUP3 PUSH2 0x12C8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1304 JUMPI PUSH2 0x1301 SWAP2 PUSH0 ADD PUSH2 0x12DC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0x1312 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x132C PUSH2 0x1327 PUSH2 0x1331 SWAP3 PUSH2 0x1315 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x134C JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 PUSH2 0x1363 PUSH2 0x135E DUP4 PUSH2 0x1334 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x1392 PUSH2 0x137A DUP4 PUSH2 0x1351 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x1388 DUP7 SWAP4 PUSH2 0x1334 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x1368 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x13CF DUP3 PUSH2 0x13C1 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x13E0 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x1394 JUMP JUMPDEST SWAP1 PUSH2 0x13EF SWAP1 PUSH2 0x14F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1407 PUSH2 0x1402 PUSH2 0x140C SWAP3 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1427 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 PUSH2 0x143E PUSH2 0x1439 DUP4 PUSH2 0x140F JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x146D PUSH2 0x1455 DUP4 PUSH2 0x142C JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x1463 DUP7 SWAP4 PUSH2 0x140F JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x1443 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH2 0x147B SWAP2 ADD PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1488 SWAP1 MLOAD PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1494 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14A0 SWAP1 PUSH2 0x148B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14AC SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x14BC DUP3 PUSH2 0x8F8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x14D7 JUMPI PUSH2 0x14D4 SWAP2 PUSH0 ADD PUSH2 0x14AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x14EA DUP3 PUSH2 0x14DC JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x14FB JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x1394 JUMP JUMPDEST SWAP1 PUSH2 0x150A SWAP1 PUSH2 0x8F5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1517 DUP2 PUSH2 0xC2A JUMP JUMPDEST SUB PUSH2 0x151E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x152F DUP3 PUSH2 0x150E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x154A JUMPI PUSH2 0x1547 SWAP2 PUSH0 ADD PUSH2 0x1522 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0x1558 SWAP1 PUSH2 0x8F5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x1585 PUSH2 0x158C SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x157B PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x15AF SWAP3 SWAP5 SWAP4 PUSH2 0x15A8 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15C6 JUMPI PUSH1 0x20 MUL SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST PUSH2 0x15D7 PUSH2 0x15DC SWAP2 PUSH2 0x15B1 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15FD PUSH2 0x15EC DUP4 PUSH2 0x15CB JUMP JUMPDEST SWAP3 PUSH2 0x15F7 DUP5 SWAP2 PUSH2 0x15B1 JUMP JUMPDEST SWAP1 PUSH2 0x1443 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1609 PUSH1 0x4 PUSH2 0x15DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x161C DUP3 PUSH2 0x160C JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x162A JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1394 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1646 PUSH2 0x1641 PUSH2 0x164B SWAP3 PUSH2 0x162F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x1676 JUMPI DUP1 PUSH2 0x166A PUSH2 0x1673 SWAP3 PUSH0 DUP7 ADD PUSH2 0x14AF JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x14AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x168C SWAP1 PUSH2 0x8F5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x169D DUP2 PUSH1 0x20 SWAP4 PUSH2 0x1683 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x16C3 PUSH2 0x16BD PUSH2 0x16B6 DUP4 PUSH2 0x160C JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x167B JUMP JUMPDEST SWAP2 PUSH2 0x1680 JUMP JUMPDEST PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x16D3 JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x16E9 PUSH2 0x16E3 PUSH1 0x1 SWAP3 DUP5 MLOAD PUSH2 0x1690 JUMP JUMPDEST SWAP3 PUSH2 0x16A1 JUMP JUMPDEST SWAP3 ADD SWAP2 SWAP1 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x1727 PUSH2 0x172E SWAP5 PUSH2 0x171D PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x1713 PUSH1 0xE0 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST ADD SWAP1 PUSH2 0x16A7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x173A SWAP1 MLOAD PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1779 PUSH2 0x177F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x8F5 JUMP JUMPDEST SWAP3 PUSH2 0x8F5 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x178A JUMPI JUMP JUMPDEST PUSH2 0x173D JUMP JUMPDEST PUSH2 0x179E PUSH2 0x17A4 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x8F5 JUMP JUMPDEST SWAP3 PUSH2 0x8F5 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x17AF JUMPI JUMP JUMPDEST PUSH2 0x173D JUMP JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E74206F757470757420616D6F756E74000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x17E8 PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x863 JUMP JUMPDEST PUSH2 0x17F1 DUP2 PUSH2 0x17B4 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x180A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x17DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1814 JUMPI JUMP JUMPDEST PUSH2 0x181C PUSH2 0x124 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x184C PUSH1 0x4 DUP3 ADD PUSH2 0x17F5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1859 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1865 SWAP1 PUSH2 0x1850 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1871 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x187E JUMPI JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1896 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x18A1 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18AD SWAP1 PUSH2 0x1898 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18B9 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP4 SWAP5 SWAP3 SWAP2 SWAP5 PUSH2 0x18CA DUP6 PUSH2 0x12A4 JUMP JUMPDEST SWAP6 PUSH2 0x18EF PUSH1 0x20 PUSH2 0x18D9 DUP10 PUSH2 0x12B0 JUMP JUMPDEST PUSH4 0xDFE1681 SWAP1 PUSH2 0x18E7 PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x18FF PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x22DA JUMPI PUSH2 0x191A SWAP2 PUSH0 SWAP2 PUSH2 0x22AC JUMPI JUMPDEST POP PUSH2 0x1309 JUMP JUMPDEST SWAP5 PUSH2 0x193F PUSH1 0x20 PUSH2 0x1929 DUP11 PUSH2 0x12B0 JUMP JUMPDEST PUSH4 0xD21220A7 SWAP1 PUSH2 0x1937 PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x194F PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x22A7 JUMPI PUSH2 0x19B6 SWAP2 PUSH2 0x196F SWAP2 PUSH0 SWAP2 PUSH2 0x2279 JUMPI JUMPDEST POP PUSH2 0x1309 JUMP JUMPDEST PUSH2 0x199D PUSH2 0x1984 PUSH2 0x197F PUSH1 0x2 PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x136D JUMP JUMPDEST SWAP9 PUSH2 0x1998 DUP11 PUSH2 0x1992 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x19B1 DUP9 PUSH2 0x19AB PUSH1 0x1 PUSH2 0x13F3 JUMP JUMPDEST SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x19C8 PUSH2 0x19C3 PUSH1 0x2 PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x1448 JUMP JUMPDEST SWAP5 PUSH2 0x19DA PUSH2 0x19D5 DUP9 PUSH2 0x13C1 JUMP JUMPDEST PUSH2 0x1448 JUMP JUMPDEST SWAP9 PUSH2 0x19E4 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1A00 PUSH2 0x19FA PUSH2 0x19F5 DUP13 PUSH2 0x13C1 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST LT ISZERO PUSH2 0x1AD2 JUMPI PUSH2 0x1A61 SWAP1 PUSH1 0x20 PUSH2 0x1A2F PUSH2 0x1A2A PUSH2 0x1A25 PUSH2 0x1A20 DUP15 DUP7 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1A56 PUSH2 0x1A41 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1A4A PUSH2 0x124 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1ACD JUMPI PUSH2 0x1A94 SWAP3 DUP14 PUSH2 0x1A8F SWAP3 PUSH0 SWAP3 PUSH2 0x1A99 JUMPI JUMPDEST POP PUSH2 0x1A8A SWAP1 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST PUSH2 0x19E5 JUMP JUMPDEST PUSH2 0x1A8A SWAP2 SWAP3 POP PUSH2 0x1ABF SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1AC6 JUMPI JUMPDEST PUSH2 0x1AB7 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1A7C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1AAD JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 SWAP9 SWAP7 SWAP5 SWAP8 PUSH2 0x1B24 PUSH1 0x20 PUSH2 0x1AF2 PUSH2 0x1AED DUP9 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1B19 PUSH2 0x1B04 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1B0D PUSH2 0x124 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2274 JUMPI PUSH0 SWAP2 PUSH2 0x2246 JUMPI JUMPDEST POP SWAP9 PUSH2 0x1B49 PUSH2 0x1B44 DUP4 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x1B79 PUSH0 PUSH2 0x1B60 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP6 PUSH2 0x1B84 DUP9 PUSH2 0x1B6D PUSH2 0x124 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xF49 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x155C JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2241 JUMPI PUSH2 0x2215 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1BA7 PUSH2 0x1BA2 DUP5 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x95EA7B3 SWAP4 SWAP1 PUSH2 0x1BCB PUSH0 DUP6 SWAP7 PUSH2 0x1BD6 PUSH2 0x1BBF PUSH2 0x124 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xF49 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x158E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2210 JUMPI PUSH1 0x40 SWAP3 PUSH2 0x21E4 JUMPI JUMPDEST POP PUSH2 0x1C8E PUSH2 0x1BF5 PUSH2 0x15FF JUMP JUMPDEST SWAP4 PUSH2 0x1C1A PUSH2 0x1C02 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0x1C15 DUP8 PUSH2 0x1C0F PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1C3F PUSH2 0x1C26 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0x1C3A DUP8 PUSH2 0x1C34 PUSH1 0x1 PUSH2 0x13F3 JUMP JUMPDEST SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1C64 PUSH2 0x1C4B PUSH0 PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0x1C5F DUP8 PUSH2 0x1C59 PUSH1 0x2 PUSH2 0x1318 JUMP JUMPDEST SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1C89 PUSH2 0x1C70 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0x1C84 DUP8 PUSH2 0x1C7E PUSH1 0x3 PUSH2 0x1632 JUMP JUMPDEST SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0x1CC1 PUSH0 PUSH4 0xA8559872 PUSH2 0x1CCC PUSH2 0x1CA3 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP8 PUSH2 0x1CAD ADDRESS PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1CB5 PUSH2 0x124 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0xF49 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x16F2 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x21DF JUMPI PUSH2 0x21B2 JUMPI JUMPDEST POP PUSH2 0x1CE5 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP5 PUSH2 0x1CEF PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP6 JUMPDEST DUP7 PUSH2 0x1D0C PUSH2 0x1D06 PUSH2 0x1D01 DUP10 PUSH2 0x13C1 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST LT ISZERO PUSH2 0x1F74 JUMPI PUSH2 0x1D25 PUSH2 0x1D20 DUP8 DUP10 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST PUSH2 0x1D37 PUSH2 0x1D31 DUP8 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1E49 JUMPI PUSH2 0x1D98 PUSH1 0x20 PUSH2 0x1D66 PUSH2 0x1D61 PUSH2 0x1D5C PUSH2 0x1D57 DUP12 DUP14 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1D8D PUSH2 0x1D78 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1D81 PUSH2 0x124 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1E44 JUMPI PUSH2 0x1DE4 DUP13 PUSH2 0x1DDF PUSH2 0x1DD7 PUSH2 0x1E04 SWAP7 DUP14 DUP16 PUSH2 0x1DFD SWAP9 PUSH0 SWAP4 PUSH2 0x1E0A JUMPI JUMPDEST POP PUSH2 0x1DD1 SWAP2 PUSH2 0x1DCC SWAP2 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x176A JUMP JUMPDEST DUP13 SWAP1 SWAP3 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1DF7 PUSH2 0x1DF2 DUP14 DUP12 SWAP1 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x178F JUMP JUMPDEST SWAP7 JUMPDEST PUSH2 0x146F JUMP JUMPDEST SWAP6 PUSH2 0x1CF1 JUMP JUMPDEST PUSH2 0x1DCC SWAP2 SWAP4 POP SWAP2 PUSH2 0x1E34 PUSH2 0x1DD1 SWAP4 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E3D JUMPI JUMPDEST PUSH2 0x1E2C DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 PUSH2 0x1DBE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E22 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x1EA3 PUSH1 0x20 PUSH2 0x1E71 PUSH2 0x1E6C PUSH2 0x1E67 PUSH2 0x1E62 DUP12 DUP14 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1E98 PUSH2 0x1E83 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1E8C PUSH2 0x124 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1F6F JUMPI PUSH2 0x1EEF DUP13 PUSH2 0x1EEA PUSH2 0x1EE2 PUSH2 0x1E04 SWAP7 DUP14 DUP16 PUSH2 0x1F2F SWAP9 PUSH0 SWAP4 PUSH2 0x1F35 JUMPI JUMPDEST POP PUSH2 0x1EDC SWAP2 PUSH2 0x1ED7 SWAP2 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x176A JUMP JUMPDEST DUP13 SWAP1 SWAP3 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1F29 PUSH2 0x1F05 PUSH2 0x1F00 DUP11 DUP13 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST DUP14 PUSH2 0x1F19 PUSH2 0x1F14 DUP14 DUP13 SWAP4 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x1F23 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x2AD1 JUMP JUMPDEST SWAP1 PUSH2 0x178F JUMP JUMPDEST SWAP7 PUSH2 0x1DFF JUMP JUMPDEST PUSH2 0x1ED7 SWAP2 SWAP4 POP SWAP2 PUSH2 0x1F5F PUSH2 0x1EDC SWAP4 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F68 JUMPI JUMPDEST PUSH2 0x1F57 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 PUSH2 0x1EC9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST POP SWAP6 POP SWAP6 SWAP3 POP SWAP6 POP SWAP2 POP PUSH2 0x1FC6 PUSH1 0x20 PUSH2 0x1F94 PUSH2 0x1F8F DUP6 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1FBB PUSH2 0x1FA6 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1FAF PUSH2 0x124 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x21AD JUMPI PUSH2 0x2001 SWAP3 PUSH2 0x1FE6 SWAP3 PUSH0 SWAP2 PUSH2 0x217F JUMPI JUMPDEST POP PUSH2 0x176A JUMP JUMPDEST SWAP4 PUSH2 0x1FFA PUSH2 0x1FF4 DUP7 SWAP3 PUSH2 0x8F5 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST LT ISZERO PUSH2 0x180D JUMP JUMPDEST DUP1 PUSH2 0x201D PUSH2 0x2017 PUSH2 0x2012 PUSH1 0x3 PUSH2 0x124E JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x20F6 JUMPI POP PUSH2 0x203F PUSH2 0x203A PUSH2 0x2035 PUSH1 0x3 PUSH2 0x124E JUMP JUMPDEST PUSH2 0x185C JUMP JUMPDEST PUSH2 0x1868 JUMP JUMPDEST SWAP1 PUSH4 0x2E1A7D4D DUP4 DUP4 EXTCODESIZE ISZERO PUSH2 0x20F1 JUMPI PUSH2 0x2076 SWAP4 PUSH2 0x206B PUSH0 DUP1 SWAP5 PUSH2 0x205F PUSH2 0x124 JUMP JUMPDEST SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1883 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x20EC JUMPI PUSH0 SWAP4 PUSH2 0x20A1 PUSH2 0x209C DUP7 SWAP6 SWAP4 DUP7 SWAP6 SWAP5 DUP7 SWAP6 PUSH2 0x20C0 JUMPI JUMPDEST POP PUSH2 0x18A4 JUMP JUMPDEST PUSH2 0x18B0 JUMP JUMPDEST DUP3 DUP3 ISZERO PUSH2 0x20B7 JUMPI JUMPDEST CALL ISZERO PUSH2 0x20B2 JUMPI JUMPDEST JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST POP PUSH2 0x8FC PUSH2 0x20A9 JUMP JUMPDEST PUSH2 0x20DF SWAP1 DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x20E5 JUMPI JUMPDEST PUSH2 0x20D7 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1874 JUMP JUMPDEST PUSH0 PUSH2 0x2096 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x20CD JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0xF45 JUMP JUMPDEST SWAP2 PUSH2 0x210B PUSH2 0x2106 PUSH1 0x20 SWAP4 SWAP5 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH2 0x212E PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x2139 PUSH2 0x2122 PUSH2 0x124 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xF49 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x158E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x217A JUMPI PUSH2 0x214E JUMPI JUMPDEST POP PUSH2 0x20B0 JUMP JUMPDEST PUSH2 0x216E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2173 JUMPI JUMPDEST PUSH2 0x2166 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH2 0x2148 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x215C JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x21A0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x21A6 JUMPI JUMPDEST PUSH2 0x2198 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST PUSH0 PUSH2 0x1FE0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x218E JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x21D2 SWAP1 PUSH1 0x40 RETURNDATASIZE DUP2 GT PUSH2 0x21D8 JUMPI JUMPDEST PUSH2 0x21CA DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x164E JUMP JUMPDEST POP PUSH2 0x1CDB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x21C0 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x2204 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2209 JUMPI JUMPDEST PUSH2 0x21FC DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH2 0x1BE9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x21F2 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x2235 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x223A JUMPI JUMPDEST PUSH2 0x222D DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH2 0x1B93 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2223 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x2267 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x226D JUMPI JUMPDEST PUSH2 0x225F DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST PUSH0 PUSH2 0x1B36 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2255 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x229A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x22A0 JUMPI JUMPDEST PUSH2 0x2292 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12EB JUMP JUMPDEST PUSH0 PUSH2 0x1969 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2288 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x22CD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x22D3 JUMPI JUMPDEST PUSH2 0x22C5 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12EB JUMP JUMPDEST PUSH0 PUSH2 0x1914 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x22BB JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST SWAP1 PUSH2 0x22EC SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1279 JUMP JUMPDEST JUMP JUMPDEST POP POP POP POP POP PUSH2 0x22FB PUSH2 0x28D8 JUMP JUMPDEST PUSH2 0x2303 PUSH2 0x2968 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2312 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x22EE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2325 SWAP1 PUSH2 0x2320 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0x2327 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2342 PUSH2 0x233C PUSH2 0x2337 PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH2 0x2352 JUMPI PUSH2 0x2350 SWAP1 PUSH2 0x27A3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2395 PUSH2 0x235E PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x2366 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x23A2 SWAP1 PUSH2 0x2314 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23AC PUSH2 0x125B JUMP JUMPDEST PUSH2 0x23C5 PUSH2 0x23BF PUSH2 0x23BA PUSH2 0x2D77 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST SUB PUSH2 0x23CC JUMPI JUMP JUMPDEST PUSH2 0x240E PUSH2 0x23D7 PUSH2 0x2D77 JUMP JUMPDEST PUSH2 0x23DF PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2447 SWAP1 PUSH2 0x2442 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x2449 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2452 SWAP1 PUSH2 0x2E5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x245D SWAP1 PUSH2 0x2436 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2467 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x246F PUSH2 0x2471 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2479 PUSH2 0x2E96 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2483 PUSH2 0x245F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x248D PUSH2 0x2D84 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2497 PUSH2 0x2485 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24A2 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24AE ADDRESS PUSH2 0x2499 JUMP JUMPDEST PUSH2 0x24E0 PUSH2 0x24DA PUSH32 0x0 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x252A JUMPI JUMPDEST PUSH2 0x24EE JUMPI JUMP JUMPDEST PUSH2 0x24F6 PUSH2 0x124 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2526 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2533 PUSH2 0x2EA0 JUMP JUMPDEST PUSH2 0x2565 PUSH2 0x255F PUSH32 0x0 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ ISZERO PUSH2 0x24E8 JUMP JUMPDEST POP PUSH2 0x2575 PUSH2 0x23A4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2580 SWAP1 PUSH2 0x256C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x258B SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2597 SWAP1 PUSH2 0x2582 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25A3 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25AF DUP2 PUSH2 0x4C6 JUMP JUMPDEST SUB PUSH2 0x25B6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x25C7 DUP3 PUSH2 0x25A6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x25E2 JUMPI PUSH2 0x25DF SWAP2 PUSH0 ADD PUSH2 0x25BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2615 PUSH1 0x20 PUSH2 0x25FF PUSH2 0x25FA DUP7 PUSH2 0x258E JUMP JUMPDEST PUSH2 0x259A JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x260D PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2625 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x26F5 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x2686 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x2647 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x2682 SWAP1 PUSH2 0x2653 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x26A1 PUSH2 0x269B PUSH2 0x2696 PUSH2 0x1194 JUMP JUMPDEST PUSH2 0x4C6 JUMP JUMPDEST SWAP2 PUSH2 0x4C6 JUMP JUMPDEST SUB PUSH2 0x26B6 JUMPI PUSH2 0x26B1 SWAP3 SWAP4 POP PUSH2 0x2ECA JUMP JUMPDEST PUSH2 0x2645 JUMP JUMPDEST PUSH2 0x26F1 DUP5 PUSH2 0x26C2 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x4D6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2717 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x271E JUMPI JUMPDEST PUSH2 0x270F DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25C9 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2632 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2705 JUMP JUMPDEST PUSH2 0x272E ADDRESS PUSH2 0x2499 JUMP JUMPDEST PUSH2 0x2760 PUSH2 0x275A PUSH32 0x0 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST SUB PUSH2 0x2767 JUMPI JUMP JUMPDEST PUSH2 0x276F PUSH2 0x124 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x279F PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27AB PUSH2 0x280F JUMP JUMPDEST PUSH2 0x27C3 PUSH2 0x27B9 PUSH0 DUP4 ADD PUSH2 0x124E JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0xF9B JUMP JUMPDEST SWAP1 PUSH2 0x27F7 PUSH2 0x27F1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0xF8C JUMP JUMPDEST SWAP2 PUSH2 0xF8C JUMP JUMPDEST SWAP2 PUSH2 0x2800 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x280A DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2842 PUSH2 0x2847 SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x2833 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2854 SWAP1 SLOAD PUSH2 0x2836 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2861 PUSH1 0x2 PUSH2 0x1318 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x288F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xA8D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x28AD PUSH2 0x28A8 PUSH2 0x28B2 SWAP3 PUSH2 0x8F5 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x28CD PUSH2 0x28C8 PUSH2 0x28D4 SWAP3 PUSH2 0x2899 JUMP JUMPDEST PUSH2 0x28B5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2864 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x28E0 PUSH2 0x2F53 JUMP JUMPDEST PUSH2 0x28EB PUSH0 DUP3 ADD PUSH2 0x284A JUMP JUMPDEST PUSH2 0x2904 PUSH2 0x28FE PUSH2 0x28F9 PUSH2 0x2857 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ PUSH2 0x291F JUMPI PUSH2 0x291D SWAP1 PUSH0 PUSH2 0x2916 PUSH2 0x2857 JUMP JUMPDEST SWAP2 ADD PUSH2 0x28B8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2927 PUSH2 0x124 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2957 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2965 PUSH1 0x1 PUSH2 0x13F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2983 PUSH2 0x2973 PUSH2 0x2F53 JUMP JUMPDEST PUSH0 PUSH2 0x297C PUSH2 0x295B JUMP JUMPDEST SWAP2 ADD PUSH2 0x28B8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2995 PUSH2 0x299A SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29A7 SWAP1 SLOAD PUSH2 0x2989 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29DF PUSH2 0x29E6 SWAP5 PUSH2 0x29D5 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x29CB PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x2A33 SWAP5 PUSH2 0x2A22 PUSH2 0x2A2C SWAP3 PUSH2 0x2A18 PUSH1 0x80 SWAP7 PUSH2 0x2A0E PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x53776170206661696C6564000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2A69 PUSH1 0xB PUSH1 0x20 SWAP3 PUSH2 0x863 JUMP JUMPDEST PUSH2 0x2A72 DUP2 PUSH2 0x2A35 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2A8B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2A5C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2A95 JUMPI JUMP JUMPDEST PUSH2 0x2A9D PUSH2 0x124 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2ACD PUSH1 0x4 DUP3 ADD PUSH2 0x2A76 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x2ADD PUSH2 0x2985 JUMP JUMPDEST SWAP4 PUSH2 0x2B0A PUSH1 0x20 PUSH2 0x2AF4 PUSH2 0x2AEF PUSH0 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x2B02 PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2B1A PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2D72 JUMPI PUSH0 SWAP2 PUSH2 0x2D44 JUMPI JUMPDEST POP SWAP3 DUP2 PUSH2 0x2B41 PUSH2 0x2B3B DUP8 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH2 0x2D3B JUMPI PUSH2 0x2B57 PUSH2 0x2B52 DUP4 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x2B71 PUSH2 0x2B6C PUSH1 0x1 PUSH2 0x299D JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST SWAP1 PUSH2 0x2B8F PUSH0 DUP7 SWAP6 PUSH2 0x2B9A PUSH2 0x2B83 PUSH2 0x124 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xF49 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x158E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2D36 JUMPI PUSH2 0x2D0A JUMPI JUMPDEST POP PUSH2 0x2BBC PUSH2 0x2BB7 PUSH1 0x1 PUSH2 0x299D JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 DUP5 SWAP1 PUSH2 0x2BE6 PUSH0 DUP11 SWAP6 PUSH2 0x2BF1 DUP9 DUP12 SWAP1 PUSH2 0x2BDA PUSH2 0x124 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0xF49 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x29AA JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x2CDA JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x2CCE JUMPI POP PUSH1 0x1 PUSH2 0x2C33 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST PUSH2 0x2C30 DUP2 PUSH2 0x2C2A PUSH2 0x2C24 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST GT PUSH2 0x2A8E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP5 SWAP6 POP PUSH2 0x2C73 SWAP2 PUSH2 0x2C7E PUSH0 SWAP3 PUSH2 0x2C53 PUSH2 0x2C4E PUSH1 0x1 PUSH2 0x299D JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST SWAP6 PUSH4 0x5EFAAEBB SWAP4 SWAP8 SWAP10 SWAP2 SWAP1 SWAP2 PUSH2 0x2C67 PUSH2 0x124 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0xF49 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x29E8 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2CC9 JUMPI PUSH0 SWAP2 PUSH2 0x2C9B JUMPI JUMPDEST POP PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2C0E JUMP JUMPDEST PUSH2 0x2CBC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2CC2 JUMPI JUMPDEST PUSH2 0x2CB4 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST PUSH0 PUSH2 0x2C90 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2CAA JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2CFC SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D03 JUMPI JUMPDEST PUSH2 0x2CF4 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2BFE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2CEA JUMP JUMPDEST PUSH2 0x2D2A SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D2F JUMPI JUMPDEST PUSH2 0x2D22 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH2 0x2BA9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D18 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2D65 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D6B JUMPI JUMPDEST PUSH2 0x2D5D DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH0 PUSH2 0x2B2C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D53 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x2D7F PUSH2 0x1236 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2D95 PUSH2 0x2D8F PUSH2 0x2F7B JUMP JUMPDEST ISZERO PUSH2 0xC2A JUMP JUMPDEST PUSH2 0x2D9B JUMPI JUMP JUMPDEST PUSH2 0x2DA3 PUSH2 0x124 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2DD3 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2DE8 SWAP1 PUSH2 0x2DE3 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x2DEA JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2E05 PUSH2 0x2DFF PUSH2 0x2DFA PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH2 0x2E15 JUMPI PUSH2 0x2E13 SWAP1 PUSH2 0x27A3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E58 PUSH2 0x2E21 PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x2E29 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E65 SWAP1 PUSH2 0x2DD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E6F PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x2E77 PUSH2 0x2E79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E94 PUSH2 0x2E84 PUSH2 0x2F53 JUMP JUMPDEST PUSH0 PUSH2 0x2E8D PUSH2 0x295B JUMP JUMPDEST SWAP2 ADD PUSH2 0x28B8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E9E PUSH2 0x2E67 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2EA8 PUSH2 0x1236 JUMP JUMPDEST POP PUSH2 0x2EC3 PUSH0 PUSH2 0x2EBD PUSH2 0x2EB8 PUSH2 0x1194 JUMP JUMPDEST PUSH2 0x2F99 JUMP JUMPDEST ADD PUSH2 0x124E JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2ED4 DUP3 PUSH2 0x2F9C JUMP JUMPDEST DUP2 PUSH2 0x2EFF PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0xF8C JUMP JUMPDEST SWAP1 PUSH2 0x2F08 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x2F12 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2F1E DUP2 PUSH2 0x2EC6 JUMP JUMPDEST PUSH2 0x2F30 PUSH2 0x2F2A PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2F44 JUMPI PUSH2 0x2F40 SWAP2 PUSH2 0x30AC JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2F4E PUSH2 0x3011 JUMP JUMPDEST PUSH2 0x2F42 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2F83 PUSH2 0x2F77 JUMP JUMPDEST POP PUSH2 0x2F96 PUSH0 PUSH2 0x2F90 PUSH2 0x2412 JUMP JUMPDEST ADD PUSH2 0xC1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x2FB0 PUSH2 0x2FAA PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ PUSH2 0x2FD2 JUMPI PUSH2 0x2FD0 SWAP1 PUSH0 PUSH2 0x2FCA PUSH2 0x2FC5 PUSH2 0x1194 JUMP JUMPDEST PUSH2 0x2F99 JUMP JUMPDEST ADD PUSH2 0xF9B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x300D SWAP1 PUSH2 0x2FDE PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x3024 PUSH2 0x301E PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST GT PUSH2 0x302B JUMPI JUMP JUMPDEST PUSH2 0x3033 PUSH2 0x124 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3063 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x307E PUSH2 0x3079 DUP4 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x309E JUMPI PUSH2 0x3093 RETURNDATASIZE PUSH2 0x306C JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x30A6 PUSH2 0x3067 JUMP JUMPDEST SWAP1 PUSH2 0x309C JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x30D8 SWAP4 PUSH2 0x30BA PUSH2 0x3067 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x30CF PUSH2 0x3083 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x30DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x30EF SWAP1 PUSH2 0x30E8 PUSH2 0x3067 JUMP JUMPDEST POP ISZERO PUSH2 0xC2A JUMP JUMPDEST PUSH0 EQ PUSH2 0x30FB JUMPI POP PUSH2 0x317F JUMP JUMPDEST PUSH2 0x3104 DUP3 PUSH2 0x2EC6 JUMP JUMPDEST PUSH2 0x3116 PUSH2 0x3110 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ DUP1 PUSH2 0x3164 JUMPI JUMPDEST PUSH2 0x3125 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x3160 SWAP1 PUSH2 0x3131 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x3179 PUSH2 0x3173 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ PUSH2 0x311D JUMP JUMPDEST PUSH2 0x3188 DUP2 PUSH2 0x2EC6 JUMP JUMPDEST PUSH2 0x319A PUSH2 0x3194 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x31A9 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x31B1 PUSH2 0x124 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x31E1 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E DUP16 TIMESTAMP DUP4 PUSH26 0xA50962BD52B1F6207DD20A02C7A34B8A24B050E3063EF93458DC SELFBALANCE PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"4335:7247:49:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":667,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":367,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":3919,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":570,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256t_uint256t_address":{"entryPoint":2472,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_addresst_bytes":{"entryPoint":1111,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint256t_addresst_uint256t_address":{"entryPoint":2331,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_available_length_bytes":{"entryPoint":1022,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":5425,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":1076,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":9673,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20_fromMemory":{"entryPoint":4843,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_fromMemory":{"entryPoint":6260,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_t_bool_fromMemory":{"entryPoint":5410,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":9658,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract_IERC20_fromMemory":{"entryPoint":4828,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":5295,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":382,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":3934,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":2316,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":5310,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_uint256_fromMemory":{"entryPoint":5710,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encodeUpdatedPos_uint256":{"entryPoint":5776,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":764,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address_address_uint256_address":{"entryPoint":10728,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":5468,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_address":{"entryPoint":10666,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":5518,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256":{"entryPoint":5799,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":1238,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":1225,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1HyperUniProxy":{"entryPoint":1848,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":1494,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Swapper":{"entryPoint":1684,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IBaluniV1Swapper_to_address":{"entryPoint":1671,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":3473,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":3460,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":2216,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":2167,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":10844,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_6e18":{"entryPoint":6133,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90":{"entryPoint":6107,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":412,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":777,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1HyperUniProxy":{"entryPoint":1861,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":1507,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":10870,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256":{"entryPoint":6275,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_address_address_array_uint256":{"entryPoint":5874,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":5763,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_to_uint256_fromStack":{"entryPoint":5455,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_address_dyn":{"entryPoint":4973,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256":{"entryPoint":5599,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":5192,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":955,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_address_dyn":{"entryPoint":4945,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_uint256":{"entryPoint":5579,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_uint256_dyn":{"entryPoint":5164,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":12396,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":2023,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":292,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":4916,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256":{"entryPoint":5553,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":5135,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":976,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":1988,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_uint256":{"entryPoint":5760,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":5057,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_uint256":{"entryPoint":5644,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_uint256_dyn":{"entryPoint":5340,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":11974,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":2143,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_uint256":{"entryPoint":5793,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_array_uint256":{"entryPoint":5755,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":2147,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":6031,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":5994,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":335,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":3114,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":1222,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_contract_IERC20":{"entryPoint":4796,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":686,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":3075,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1HyperUniProxy":{"entryPoint":1758,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":1363,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Swapper":{"entryPoint":1581,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":10291,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":3124,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3_by":{"entryPoint":5679,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":3214,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":4469,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":3183,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":4885,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":310,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":2293,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":3170,"id":null,"parameterSlots":1,"returnSlots":1},"constant_ENTERED":{"entryPoint":10327,"id":null,"parameterSlots":0,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":4500,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NOT_ENTERED":{"entryPoint":10587,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":2121,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_payable_to_address":{"entryPoint":6320,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_address":{"entryPoint":3980,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_address_payable":{"entryPoint":6308,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1HyperUniProxy":{"entryPoint":2978,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Hypervisor":{"entryPoint":4772,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":2689,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Swapper":{"entryPoint":2856,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":9614,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":5271,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IWETH":{"entryPoint":6236,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":3413,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1HyperPoolZap_to_address":{"entryPoint":5283,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1HyperUniProxy_to_address":{"entryPoint":1836,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1HyperUniProxy_to_contract_IBaluniV1HyperUniProxy":{"entryPoint":2990,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Hypervisor_to_address":{"entryPoint":4784,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1482,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":2747,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_address":{"entryPoint":1659,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_contract_IBaluniV1Swapper":{"entryPoint":2868,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":9626,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":4873,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IWETH_to_address":{"entryPoint":6248,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":3245,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":9369,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":3257,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":4888,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":4621,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":4472,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":4593,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":5682,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":3217,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":2110,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":5107,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":3186,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1470,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address_payable":{"entryPoint":6296,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1HyperUniProxy":{"entryPoint":2966,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Hypervisor":{"entryPoint":4760,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":2677,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Swapper":{"entryPoint":2844,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":9602,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":5259,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IWETH":{"entryPoint":6224,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1442,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":10393,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":3314,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1011,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2085,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2156,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2240,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH9":{"entryPoint":798,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniHyperUniProxy":{"entryPoint":1882,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniSwapper":{"entryPoint":1705,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_changeRegistry":{"entryPoint":417,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_changeSwapper":{"entryPoint":468,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_changeUniProxy":{"entryPoint":519,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":615,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":1935,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":1259,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":1528,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":1312,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":2603,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":1180,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_zapIn":{"entryPoint":2558,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_zapOut":{"entryPoint":2417,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":711,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1HyperUniProxy":{"entryPoint":1783,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":1388,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Swapper":{"entryPoint":1606,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":4666,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":3081,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":3876,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Swapper":{"entryPoint":10633,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":10294,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":3137,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":12419,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":914,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":9300,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":9289,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":11868,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":11754,"id":null,"parameterSlots":1,"returnSlots":0},"fun_ReentrancyGuard_init":{"entryPoint":9339,"id":1509,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_inner":{"entryPoint":9329,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained":{"entryPoint":11926,"id":1527,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained_inner":{"entryPoint":11897,"id":null,"parameterSlots":0,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":9359,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":10147,"id":193,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":9591,"id":7060,"parameterSlots":1,"returnSlots":0},"fun_changeRegistry":{"entryPoint":2814,"id":7051,"parameterSlots":1,"returnSlots":0},"fun_changeRegistry_inner":{"entryPoint":2794,"id":null,"parameterSlots":1,"returnSlots":0},"fun_changeSwapper":{"entryPoint":2936,"id":7037,"parameterSlots":1,"returnSlots":0},"fun_changeSwapper_inner":{"entryPoint":2915,"id":null,"parameterSlots":1,"returnSlots":0},"fun_changeUniProxy":{"entryPoint":3058,"id":7023,"parameterSlots":1,"returnSlots":0},"fun_changeUniProxy_inner":{"entryPoint":3037,"id":null,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":11652,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":12305,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":10021,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":9124,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":9381,"id":562,"parameterSlots":0,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":12460,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":12185,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getImplementation":{"entryPoint":11936,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":9234,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":10255,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getReentrancyGuardStorage":{"entryPoint":12115,"id":1497,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":4380,"id":7009,"parameterSlots":2,"returnSlots":0},"fun_initialize_inner":{"entryPoint":4027,"id":null,"parameterSlots":2,"returnSlots":0},"fun_isInitializing":{"entryPoint":12155,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":11639,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":10600,"id":1579,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":10456,"id":1563,"parameterSlots":0,"returnSlots":0},"fun_owner":{"entryPoint":4699,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":4556,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":4544,"id":null,"parameterSlots":1,"returnSlots":1},"fun_renounceOwnership":{"entryPoint":4652,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":4633,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":12671,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":12188,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_swap":{"entryPoint":10961,"id":7496,"parameterSlots":4,"returnSlots":1},"fun_transferOwnership":{"entryPoint":9113,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":8999,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":11978,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":9703,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":4433,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":4412,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":12507,"id":2889,"parameterSlots":3,"returnSlots":1},"fun_zapIn":{"entryPoint":8965,"id":7080,"parameterSlots":5,"returnSlots":0},"fun_zapOut":{"entryPoint":8927,"id":7419,"parameterSlots":5,"returnSlots":0},"fun_zapOut_inner":{"entryPoint":6332,"id":null,"parameterSlots":5,"returnSlots":0},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2132,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH9":{"entryPoint":749,"id":6962,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniHyperUniProxy":{"entryPoint":1821,"id":6960,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniSwapper":{"entryPoint":1644,"id":6957,"parameterSlots":0,"returnSlots":1},"getter_fun_registry":{"entryPoint":1426,"id":6954,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":1439,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":5231,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":5061,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256":{"entryPoint":5650,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":5344,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":3494,"id":302,"parameterSlots":2,"returnSlots":0},"modifier_nonReentrant":{"entryPoint":4729,"id":1538,"parameterSlots":5,"returnSlots":0},"modifier_nonReentrant_7077":{"entryPoint":8942,"id":1538,"parameterSlots":5,"returnSlots":0},"modifier_notDelegated":{"entryPoint":4449,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":11735,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_1503":{"entryPoint":9311,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1512":{"entryPoint":11879,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":9270,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":9349,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":2658,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":4575,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":8980,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_7014":{"entryPoint":2947,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_7028":{"entryPoint":2825,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_7057":{"entryPoint":9580,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":4392,"id":488,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":5949,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":5012,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":869,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":3992,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":3425,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1HyperUniProxy":{"entryPoint":3002,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":2759,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Swapper":{"entryPoint":2880,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":10421,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":3342,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":5246,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_uint256":{"entryPoint":5936,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":735,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1HyperUniProxy":{"entryPoint":1807,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":1412,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Swapper":{"entryPoint":1630,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":4686,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":3101,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":3896,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Swapper":{"entryPoint":10653,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":10314,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":3157,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":10894,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_6e18":{"entryPoint":6157,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_0cc013b6b3b6beabea4e3a74a6d380f0df81852ca99887912475e1f66b2a2c20":{"entryPoint":3909,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":851,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":855,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":306,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":298,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_d228b4ceac16d8e91d6dc7ca8d4a5394f524b2e550555324088cb23b86b87b98":{"entryPoint":2654,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":302,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":3964,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":859,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":2701,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":3913,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":3377,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":3119,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":3069,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":286,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":682,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69":{"entryPoint":10805,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2046,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90":{"entryPoint":6068,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":3285,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":10340,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":2706,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":3383,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":3995,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":3428,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1HyperUniProxy_to_contract_IBaluniV1HyperUniProxy":{"entryPoint":3005,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":2762,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Swapper_to_contract_IBaluniV1Swapper":{"entryPoint":2883,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":10424,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":3345,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":347,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":5390,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":9638,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_contract_IERC20":{"entryPoint":4808,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":2296,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_address":{"entryPoint":5093,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint256":{"entryPoint":5376,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_address":{"entryPoint":4968,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_uint256":{"entryPoint":5187,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":4662,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_uint256":{"entryPoint":5631,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":12151,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":12391,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":4445,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":10629,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":9398},{"length":32,"start":9531},{"length":32,"start":10038}]},"linkReferences":{},"object":"60806040526004361015610015575b36610a5e57005b61001f5f3561011e565b806315554c55146101195780633ebb287c1461011457806345b1cb801461010f578063485cc9551461010a5780634aa4a4fc146101055780634f1ef2861461010057806352d1902d146100fb578063715018a6146100f65780637b103999146100f15780637dfb7ea1146100ec5780638af90292146100e75780638da5cb5b146100e2578063ad3cb1cc146100dd578063b1aa8cd1146100d8578063b487c54a146100d35763f2fde38b0361000e57610a2b565b6109fe565b610971565b6108c0565b61078f565b61075a565b6106a9565b6105f8565b610520565b6104eb565b61049c565b61031e565b610267565b610207565b6101d4565b6101a1565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61015890610136565b90565b6101648161014f565b0361016b57565b5f80fd5b9050359061017c8261015b565b565b9060208282031261019757610194915f0161016f565b90565b61012e565b5f0190565b346101cf576101b96101b436600461017e565b610afe565b6101c1610124565b806101cb8161019c565b0390f35b61012a565b34610202576101ec6101e736600461017e565b610b78565b6101f4610124565b806101fe8161019c565b0390f35b61012a565b346102355761021f61021a36600461017e565b610bf2565b610227610124565b806102318161019c565b0390f35b61012a565b9190604083820312610262578061025661025f925f860161016f565b9360200161016f565b90565b61012e565b346102965761028061027a36600461023a565b9061111c565b610288610124565b806102928161019c565b0390f35b61012a565b5f9103126102a557565b61012e565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102d79060086102dc93026102aa565b6102ae565b90565b906102ea91546102c7565b90565b6102f960035f906102df565b90565b6103059061014f565b9052565b919061031c905f602085019401906102fc565b565b3461034e5761032e36600461029b565b61034a6103396102ed565b610341610124565b91829182610309565b0390f35b61012a565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061039c9061035b565b810190811067ffffffffffffffff8211176103b657604052565b610365565b906103ce6103c7610124565b9283610392565b565b67ffffffffffffffff81116103ee576103ea60209161035b565b0190565b610365565b90825f939282370152565b9092919261041361040e826103d0565b6103bb565b9381855260208501908284011161042f5761042d926103f3565b565b610357565b9080601f830112156104525781602061044f933591016103fe565b90565b610353565b91909160408184031261049757610470835f830161016f565b92602082013567ffffffffffffffff81116104925761048f9201610434565b90565b610132565b61012e565b6104b06104aa366004610457565b90611151565b6104b8610124565b806104c28161019c565b0390f35b90565b6104d2906104c6565b9052565b91906104e9905f602085019401906104c9565b565b3461051b576104fb36600461029b565b6105176105066111cc565b61050e610124565b918291826104d6565b0390f35b61012a565b3461054e5761053036600461029b565b61053861122c565b610540610124565b8061054a8161019c565b0390f35b61012a565b73ffffffffffffffffffffffffffffffffffffffff1690565b61057c90600861058193026102aa565b610553565b90565b9061058f915461056c565b90565b61059c5f80610584565b90565b90565b6105b66105b16105bb92610136565b61059f565b610136565b90565b6105c7906105a2565b90565b6105d3906105be565b90565b6105df906105ca565b9052565b91906105f6905f602085019401906105d6565b565b346106285761060836600461029b565b610624610613610592565b61061b610124565b918291826105e3565b0390f35b61012a565b73ffffffffffffffffffffffffffffffffffffffff1690565b61065690600861065b93026102aa565b61062d565b90565b906106699154610646565b90565b61067860015f9061065e565b90565b610684906105be565b90565b6106909061067b565b9052565b91906106a7905f60208501940190610687565b565b346106d9576106b936600461029b565b6106d56106c461066c565b6106cc610124565b91829182610694565b0390f35b61012a565b73ffffffffffffffffffffffffffffffffffffffff1690565b61070790600861070c93026102aa565b6106de565b90565b9061071a91546106f7565b90565b61072960025f9061070f565b90565b610735906105be565b90565b6107419061072c565b9052565b9190610758905f60208501940190610738565b565b3461078a5761076a36600461029b565b61078661077561071d565b61077d610124565b91829182610745565b0390f35b61012a565b346107bf5761079f36600461029b565b6107bb6107aa61125b565b6107b2610124565b91829182610309565b0390f35b61012a565b67ffffffffffffffff81116107e2576107de60209161035b565b0190565b610365565b906107f96107f4836107c4565b6103bb565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61082f60056107e7565b9061083c602083016107fe565b565b610846610825565b90565b61085161083e565b90565b61085c610849565b90565b5190565b60209181520190565b90825f9392825e0152565b61089661089f6020936108a49361088d8161085f565b93848093610863565b9586910161086c565b61035b565b0190565b6108bd9160208201915f818403910152610877565b90565b346108f0576108d036600461029b565b6108ec6108db610854565b6108e3610124565b918291826108a8565b0390f35b61012a565b90565b610901816108f5565b0361090857565b5f80fd5b90503590610919826108f8565b565b919060a08382031261096c57610933815f850161016f565b92610941826020830161090c565b92610969610952846040850161016f565b93610960816060860161090c565b9360800161016f565b90565b61012e565b346109a35761098d61098436600461091b565b939290926122df565b610995610124565b8061099f8161019c565b0390f35b61012a565b919060a0838203126109f9576109c0815f850161016f565b926109ce826020830161016f565b926109f66109df846040850161090c565b936109ed816060860161090c565b9360800161016f565b90565b61012e565b610a15610a0c3660046109a8565b93929092612305565b610a1d610124565b80610a278161019c565b0390f35b34610a5957610a43610a3e36600461017e565b612399565b610a4b610124565b80610a558161019c565b0390f35b61012a565b5f80fd5b610a7390610a6e6123a4565b610aea565b565b610a7e906105a2565b90565b610a8a90610a75565b90565b5f1b90565b90610ab173ffffffffffffffffffffffffffffffffffffffff91610a8d565b9181191691161790565b610ac490610a75565b90565b90565b90610adf610ada610ae692610abb565b610ac7565b8254610a92565b9055565b610af6610afc91610a81565b5f610aca565b565b610b0790610a62565b565b610b1a90610b156123a4565b610b63565b565b610b25906105a2565b90565b610b3190610b1c565b90565b610b3d90610b1c565b90565b90565b90610b58610b53610b5f92610b34565b610b40565b8254610a92565b9055565b610b6f610b7691610b28565b6001610b43565b565b610b8190610b09565b565b610b9490610b8f6123a4565b610bdd565b565b610b9f906105a2565b90565b610bab90610b96565b90565b610bb790610b96565b90565b90565b90610bd2610bcd610bd992610bae565b610bba565b8254610a92565b9055565b610be9610bf091610ba2565b6002610bbd565b565b610bfb90610b83565b565b60401c90565b60ff1690565b610c15610c1a91610bfd565b610c03565b90565b610c279054610c09565b90565b151590565b5f1c90565b67ffffffffffffffff1690565b610c4d610c5291610c2f565b610c34565b90565b610c5f9054610c41565b90565b67ffffffffffffffff1690565b90565b610c86610c81610c8b92610c6f565b61059f565b610c62565b90565b90565b610ca5610ca0610caa92610c8e565b61059f565b610c62565b90565b610cb6906105be565b90565b610ccd610cc8610cd292610c6f565b61059f565b6108f5565b90565b90610ce867ffffffffffffffff91610a8d565b9181191691161790565b610d06610d01610d0b92610c62565b61059f565b610c62565b90565b90565b90610d26610d21610d2d92610cf2565b610d0e565b8254610cd5565b9055565b60401b90565b90610d4b68ff000000000000000091610d31565b9181191691161790565b610d5e90610c2a565b90565b90565b90610d79610d74610d8092610d55565b610d61565b8254610d37565b9055565b610d8d90610c91565b9052565b9190610da4905f60208501940190610d84565b565b90610daf612412565b91610dc4610dbe5f8501610c1d565b15610c2a565b91610dd05f8501610c55565b80610de3610ddd5f610c72565b91610c62565b1480610f1d575b90610dfe610df86001610c91565b91610c62565b1480610ef5575b610e10909115610c2a565b9081610ee4575b50610ea857610e4091610e35610e2d6001610c91565b5f8701610d11565b83610e96575b610fbb565b610e48575b50565b610e55905f809101610d64565b6001610e8d7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291610e84610124565b91829182610d91565b0390a15f610e45565b610ea360015f8701610d64565b610e3b565b610eb0610124565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280610ee06004820161019c565b0390fd5b610eef915015610c2a565b5f610e17565b50610e10610f0230610cad565b3b610f15610f0f5f610cb9565b916108f5565b149050610e05565b5083610dea565b610f30610f3591610c2f565b610553565b90565b610f429054610f24565b90565b5f80fd5b60e01b90565b90505190610f5c8261015b565b565b90602082820312610f7757610f74915f01610f4f565b90565b61012e565b610f84610124565b3d5f823e3d90fd5b610f95906105be565b90565b90565b90610fb0610fab610fb792610f8c565b610f98565b8254610a92565b9055565b610fe0610fe691610fcb33612454565b610fd361247b565b610fdb61248f565b610a81565b5f610aca565b6110126020610ffc610ff75f610f38565b6105ca565b6382755ebb9061100a610124565b938492610f49565b825281806110226004820161019c565b03915afa9182156111175761104f61104861105b94611054945f916110e9575b50610b28565b6001610b43565b610ba2565b6002610bbd565b611087602061107161106c5f610f38565b6105ca565b636c9c00789061107f610124565b938492610f49565b825281806110976004820161019c565b03915afa80156110e4576110b4915f916110b6575b506003610f9b565b565b6110d7915060203d81116110dd575b6110cf8183610392565b810190610f5e565b5f6110ac565b503d6110c5565b610f7c565b61110a915060203d8111611110575b6111028183610392565b810190610f5e565b5f611042565b503d6110f8565b610f7c565b9061112691610da6565b565b9061113a916111356124a5565b61113c565b565b9061114f9161114a81612577565b6125e7565b565b9061115b91611128565b565b5f90565b6111729061116d612725565b6111c0565b90565b90565b61118c61118761119192611175565b610a8d565b6104c6565b90565b6111bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc611178565b90565b506111c9611194565b90565b6111dc6111d761115d565b611161565b90565b6111e76123a4565b6111ef611219565b565b61120561120061120a92610c6f565b61059f565b610136565b90565b611216906111f1565b90565b61122a6112255f61120d565b6127a3565b565b6112346111df565b565b5f90565b61124661124b91610c2f565b6102ae565b90565b611258905461123a565b90565b611263611236565b506112765f61127061280f565b0161124e565b90565b9061128e949392916112896128d8565b6118bc565b611296612968565b565b6112a1906105a2565b90565b6112ad90611298565b90565b6112b9906105be565b90565b6112c59061014f565b90565b6112d1816112bc565b036112d857565b5f80fd5b905051906112e9826112c8565b565b9060208282031261130457611301915f016112dc565b90565b61012e565b611312906105be565b90565b90565b61132c61132761133192611315565b61059f565b6108f5565b90565b67ffffffffffffffff811161134c5760208091020190565b610365565b9061136361135e83611334565b6103bb565b918252565b369037565b9061139261137a83611351565b926020806113888693611334565b9201910390611368565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5190565b906113cf826113c1565b8110156113e0576020809102010190565b611394565b906113ef9061014f565b9052565b61140761140261140c92610c8e565b61059f565b6108f5565b90565b67ffffffffffffffff81116114275760208091020190565b610365565b9061143e6114398361140f565b6103bb565b918252565b369037565b9061146d6114558361142c565b92602080611463869361140f565b9201910390611443565b565b600161147b91016108f5565b90565b611488905161014f565b90565b611494906105a2565b90565b6114a09061148b565b90565b6114ac906105be565b90565b905051906114bc826108f8565b565b906020828203126114d7576114d4915f016114af565b90565b61012e565b5190565b906114ea826114dc565b8110156114fb576020809102010190565b611394565b9061150a906108f5565b9052565b61151781610c2a565b0361151e57565b5f80fd5b9050519061152f8261150e565b565b9060208282031261154a57611547915f01611522565b90565b61012e565b611558906108f5565b9052565b60409061158561158c949695939661157b60608401985f8501906102fc565b60208301906102fc565b019061154f565b565b9160206115af9294936115a860408201965f8301906102fc565b019061154f565b565b67ffffffffffffffff81116115c65760200290565b610365565b6115d76115dc916115b1565b6103bb565b90565b906115fd6115ec836115cb565b926115f784916115b1565b90611443565b565b61160960046115df565b90565b50600490565b9061161c8261160c565b81101561162a576020020190565b611394565b90565b61164661164161164b9261162f565b61059f565b6108f5565b90565b9190604083820312611676578061166a611673925f86016114af565b936020016114af565b90565b61012e565b905090565b90565b61168c906108f5565b9052565b9061169d81602093611683565b0190565b60200190565b6116c36116bd6116b68361160c565b809461167b565b91611680565b5f915b8383106116d35750505050565b6116e96116e36001928451611690565b926116a1565b920191906116c6565b61172761172e9461171d60609498979561171360e086019a5f87019061154f565b60208501906102fc565b60408301906102fc565b01906116a7565b565b61173a90516108f5565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61177961177f919392936108f5565b926108f5565b820391821161178a57565b61173d565b61179e6117a4919392936108f5565b926108f5565b82018092116117af57565b61173d565b5f7f496e73756666696369656e74206f757470757420616d6f756e74000000000000910152565b6117e8601a602092610863565b6117f1816117b4565b0190565b61180a9060208101905f8183039101526117db565b90565b1561181457565b61181c610124565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061184c600482016117f5565b0390fd5b611859906105a2565b90565b61186590611850565b90565b611871906105be565b90565b5f91031261187e57565b61012e565b9190611896905f6020850194019061154f565b565b6118a1906105a2565b90565b6118ad90611898565b90565b6118b9906105be565b90565b93949291946118ca856112a4565b956118ef60206118d9896112b0565b630dfe1681906118e7610124565b938492610f49565b825281806118ff6004820161019c565b03915afa80156122da5761191a915f916122ac575b50611309565b9461193f60206119298a6112b0565b63d21220a790611937610124565b938492610f49565b8252818061194f6004820161019c565b03915afa9081156122a7576119b69161196f915f91612279575b50611309565b61199d61198461197f6002611318565b61136d565b986119988a6119925f610cb9565b906113c5565b6113e5565b6119b1886119ab60016113f3565b906113c5565b6113e5565b6119c86119c36002611318565b611448565b946119da6119d5886113c1565b611448565b986119e45f610cb9565b5b80611a006119fa6119f58c6113c1565b6108f5565b916108f5565b1015611ad257611a61906020611a2f611a2a611a25611a208e86906113c5565b61147e565b611497565b611309565b6370a0823190611a56611a41306114a3565b92611a4a610124565b96879485938493610f49565b835260048301610309565b03915afa918215611acd57611a94928d611a8f925f92611a99575b50611a8a90918490926114e0565b611500565b61146f565b6119e5565b611a8a919250611abf9060203d8111611ac6575b611ab78183610392565b8101906114be565b9190611a7c565b503d611aad565b610f7c565b50909192939598969497611b246020611af2611aed88611497565b611309565b6370a0823190611b19611b04306114a3565b92611b0d610124565b95869485938493610f49565b835260048301610309565b03915afa908115612274575f91612246575b5098611b49611b4483611497565b611309565b60206323b872dd913390611b795f611b60306114a3565b95611b8488611b6d610124565b98899788968795610f49565b85526004850161155c565b03925af1801561224157612215575b506020611ba7611ba284611497565b611309565b63095ea7b39390611bcb5f8596611bd6611bbf610124565b98899687958694610f49565b84526004840161158e565b03925af1918215612210576040926121e4575b50611c8e611bf56115ff565b93611c1a611c025f610cb9565b611c1587611c0f5f610cb9565b90611612565b611500565b611c3f611c265f610cb9565b611c3a87611c3460016113f3565b90611612565b611500565b611c64611c4b5f610cb9565b611c5f87611c596002611318565b90611612565b611500565b611c89611c705f610cb9565b611c8487611c7e6003611632565b90611612565b611500565b6112b0565b611cc15f63a8559872611ccc611ca3306114a3565b97611cad306114a3565b611cb5610124565b998a9889978896610f49565b8652600486016116f2565b03925af180156121df576121b2575b50611ce55f610cb9565b94611cef5f610cb9565b955b86611d0c611d06611d01896113c1565b6108f5565b916108f5565b1015611f7457611d25611d208789906113c5565b61147e565b611d37611d318761014f565b9161014f565b145f14611e4957611d986020611d66611d61611d5c611d578b8d906113c5565b61147e565b611497565b611309565b6370a0823190611d8d611d78306114a3565b92611d81610124565b95869485938493610f49565b835260048301610309565b03915afa918215611e4457611de48c611ddf611dd7611e04968d8f611dfd985f93611e0a575b50611dd191611dcc916114e0565b611730565b9061176a565b8c90926114e0565b611500565b611df7611df28d8b906114e0565b611730565b9061178f565b965b61146f565b95611cf1565b611dcc91935091611e34611dd19360203d8111611e3d575b611e2c8183610392565b8101906114be565b93915091611dbe565b503d611e22565b610f7c565b611ea36020611e71611e6c611e67611e628b8d906113c5565b61147e565b611497565b611309565b6370a0823190611e98611e83306114a3565b92611e8c610124565b95869485938493610f49565b835260048301610309565b03915afa918215611f6f57611eef8c611eea611ee2611e04968d8f611f2f985f93611f35575b50611edc91611ed7916114e0565b611730565b9061176a565b8c90926114e0565b611500565b611f29611f05611f008a8c906113c5565b61147e565b8d611f19611f148d8c936114e0565b611730565b90611f23306114a3565b92612ad1565b9061178f565b96611dff565b611ed791935091611f5f611edc9360203d8111611f68575b611f578183610392565b8101906114be565b93915091611ec9565b503d611f4d565b610f7c565b50955095925095509150611fc66020611f94611f8f85611497565b611309565b6370a0823190611fbb611fa6306114a3565b92611faf610124565b95869485938493610f49565b835260048301610309565b03915afa9182156121ad5761200192611fe6925f9161217f575b5061176a565b93611ffa611ff486926108f5565b916108f5565b101561180d565b8061201d612017612012600361124e565b61014f565b9161014f565b145f146120f6575061203f61203a612035600361124e565b61185c565b611868565b90632e1a7d4d83833b156120f1576120769361206b5f809461205f610124565b97889586948593610f49565b835260048301611883565b03925af19081156120ec575f936120a161209c86959386959486956120c0575b506118a4565b6118b0565b8282156120b7575bf1156120b2575b565b610f7c565b506108fc6120a9565b6120df90863d81116120e5575b6120d78183610392565b810190611874565b5f612096565b503d6120cd565b610f7c565b610f45565b9161210b61210660209394611497565b611309565b61212e5f63a9059cbb959395612139612122610124565b97889687958694610f49565b84526004840161158e565b03925af1801561217a5761214e575b506120b0565b61216e9060203d8111612173575b6121668183610392565b810190611531565b612148565b503d61215c565b610f7c565b6121a0915060203d81116121a6575b6121988183610392565b8101906114be565b5f611fe0565b503d61218e565b610f7c565b6121d29060403d81116121d8575b6121ca8183610392565b81019061164e565b50611cdb565b503d6121c0565b610f7c565b6122049060203d8111612209575b6121fc8183610392565b810190611531565b611be9565b503d6121f2565b610f7c565b6122359060203d811161223a575b61222d8183610392565b810190611531565b611b93565b503d612223565b610f7c565b612267915060203d811161226d575b61225f8183610392565b8101906114be565b5f611b36565b503d612255565b610f7c565b61229a915060203d81116122a0575b6122928183610392565b8101906112eb565b5f611969565b503d612288565b610f7c565b6122cd915060203d81116122d3575b6122c58183610392565b8101906112eb565b5f611914565b503d6122bb565b610f7c565b906122ec94939291611279565b565b50505050506122fb6128d8565b612303612968565b565b90612312949392916122ee565b565b612325906123206123a4565b612327565b565b8061234261233c6123375f61120d565b61014f565b9161014f565b1461235257612350906127a3565b565b61239561235e5f61120d565b612366610124565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b6123a290612314565b565b6123ac61125b565b6123c56123bf6123ba612d77565b61014f565b9161014f565b036123cc57565b61240e6123d7612d77565b6123df610124565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61244790612442612d84565b612449565b565b61245290612e5c565b565b61245d90612436565b565b612467612d84565b61246f612471565b565b612479612e96565b565b61248361245f565b565b61248d612d84565b565b612497612485565b565b6124a2906105be565b90565b6124ae30612499565b6124e06124da7f000000000000000000000000000000000000000000000000000000000000000061014f565b9161014f565b14801561252a575b6124ee57565b6124f6610124565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806125266004820161019c565b0390fd5b50612533612ea0565b61256561255f7f000000000000000000000000000000000000000000000000000000000000000061014f565b9161014f565b14156124e8565b506125756123a4565b565b6125809061256c565b565b61258b906105a2565b90565b61259790612582565b90565b6125a3906105be565b90565b6125af816104c6565b036125b657565b5f80fd5b905051906125c7826125a6565b565b906020828203126125e2576125df915f016125ba565b90565b61012e565b919061261560206125ff6125fa8661258e565b61259a565b6352d1902d9061260d610124565b938492610f49565b825281806126256004820161019c565b03915afa80915f926126f5575b50155f1461268657505090600161264757505b565b61268290612653610124565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b92836126a161269b612696611194565b6104c6565b916104c6565b036126b6576126b1929350612eca565b612645565b6126f1846126c2610124565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016104d6565b0390fd5b61271791925060203d811161271e575b61270f8183610392565b8101906125c9565b905f612632565b503d612705565b61272e30612499565b61276061275a7f000000000000000000000000000000000000000000000000000000000000000061014f565b9161014f565b0361276757565b61276f610124565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061279f6004820161019c565b0390fd5b6127ab61280f565b6127c36127b95f830161124e565b915f849101610f9b565b906127f76127f17f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610f8c565b91610f8c565b91612800610124565b8061280a8161019c565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b90565b61284261284791610c2f565b612833565b90565b6128549054612836565b90565b6128616002611318565b90565b9061288f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91610a8d565b9181191691161790565b6128ad6128a86128b2926108f5565b61059f565b6108f5565b90565b90565b906128cd6128c86128d492612899565b6128b5565b8254612864565b9055565b6128e0612f53565b6128eb5f820161284a565b6129046128fe6128f9612857565b6108f5565b916108f5565b1461291f5761291d905f612916612857565b91016128b8565b565b612927610124565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000008152806129576004820161019c565b0390fd5b61296560016113f3565b90565b612983612973612f53565b5f61297c61295b565b91016128b8565b565b5f90565b61299561299a91610c2f565b61062d565b90565b6129a79054612989565b90565b6129df6129e6946129d56060949897956129cb608086019a5f8701906102fc565b60208501906102fc565b604083019061154f565b01906102fc565b565b90959492612a3394612a22612a2c92612a18608096612a0e60a088019c5f8901906102fc565b60208701906102fc565b60408501906102fc565b606083019061154f565b01906102fc565b565b5f7f53776170206661696c6564000000000000000000000000000000000000000000910152565b612a69600b602092610863565b612a7281612a35565b0190565b612a8b9060208101905f818303910152612a5c565b90565b15612a9557565b612a9d610124565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612acd60048201612a76565b0390fd5b92919091612add612985565b93612b0a6020612af4612aef5f610f38565b6105ca565b636c9c007890612b02610124565b938492610f49565b82528180612b1a6004820161019c565b03915afa908115612d72575f91612d44575b509281612b41612b3b8761014f565b9161014f565b14612d3b57612b57612b5283611497565b611309565b602063095ea7b391612b71612b6c600161299d565b61067b565b90612b8f5f8695612b9a612b83610124565b97889687958694610f49565b84526004840161158e565b03925af18015612d3657612d0a575b50612bbc612bb7600161299d565b61067b565b6020632d6bc8ea918490612be65f8a95612bf1888b90612bda610124565b998a9889978896610f49565b8652600486016129aa565b03925af180915f92612cda575b50155f14612cce57506001612c33575b50505050505b612c3081612c2a612c245f610cb9565b916108f5565b11612a8e565b90565b6020949550612c7391612c7e5f92612c53612c4e600161299d565b61067b565b95635efaaebb939799919091612c67610124565b9a8b998a988997610f49565b8752600487016129e8565b03925af1908115612cc9575f91612c9b575b505f80808080612c0e565b612cbc915060203d8111612cc2575b612cb48183610392565b8101906114be565b5f612c90565b503d612caa565b610f7c565b95505050505050612c14565b612cfc91925060203d8111612d03575b612cf48183610392565b8101906114be565b905f612bfe565b503d612cea565b612d2a9060203d8111612d2f575b612d228183610392565b810190611531565b612ba9565b503d612d18565b610f7c565b94505050505090565b612d65915060203d8111612d6b575b612d5d8183610392565b810190610f5e565b5f612b2c565b503d612d53565b610f7c565b612d7f611236565b503390565b612d95612d8f612f7b565b15610c2a565b612d9b57565b612da3610124565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612dd36004820161019c565b0390fd5b612de890612de3612d84565b612dea565b565b80612e05612dff612dfa5f61120d565b61014f565b9161014f565b14612e1557612e13906127a3565b565b612e58612e215f61120d565b612e29610124565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b612e6590612dd7565b565b612e6f612d84565b612e77612e79565b565b612e94612e84612f53565b5f612e8d61295b565b91016128b8565b565b612e9e612e67565b565b612ea8611236565b50612ec35f612ebd612eb8611194565b612f99565b0161124e565b90565b5190565b90612ed482612f9c565b81612eff7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610f8c565b90612f08610124565b80612f128161019c565b0390a2612f1e81612ec6565b612f30612f2a5f610cb9565b916108f5565b115f14612f4457612f40916130ac565b505b565b5050612f4e613011565b612f42565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b5f90565b612f83612f77565b50612f965f612f90612412565b01610c1d565b90565b90565b803b612fb0612faa5f610cb9565b916108f5565b14612fd257612fd0905f612fca612fc5611194565b612f99565b01610f9b565b565b61300d90612fde610124565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b3461302461301e5f610cb9565b916108f5565b1161302b57565b613033610124565b7fb398979f000000000000000000000000000000000000000000000000000000008152806130636004820161019c565b0390fd5b606090565b9061307e613079836103d0565b6103bb565b918252565b3d5f1461309e576130933d61306c565b903d5f602084013e5b565b6130a6613067565b9061309c565b5f806130d8936130ba613067565b508390602081019051915af4906130cf613083565b909190916130db565b90565b906130ef906130e8613067565b5015610c2a565b5f146130fb575061317f565b61310482612ec6565b6131166131105f610cb9565b916108f5565b1480613164575b613125575090565b61316090613131610124565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610309565b0390fd5b50803b6131796131735f610cb9565b916108f5565b1461311d565b61318881612ec6565b61319a6131945f610cb9565b916108f5565b115f146131a957805190602001fd5b6131b1610124565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806131e16004820161019c565b0390fdfea26469706673582212204e8f428379a50962bd52b1f6207dd20a02c7a34b8a24b050e3063ef93458dc4764736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0xA5E JUMPI STOP JUMPDEST PUSH2 0x1F PUSH0 CALLDATALOAD PUSH2 0x11E JUMP JUMPDEST DUP1 PUSH4 0x15554C55 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x3EBB287C EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x45B1CB80 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x7DFB7EA1 EQ PUSH2 0xEC JUMPI DUP1 PUSH4 0x8AF90292 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0xB1AA8CD1 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0xB487C54A EQ PUSH2 0xD3 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xA2B JUMP JUMPDEST PUSH2 0x9FE JUMP JUMPDEST PUSH2 0x971 JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST PUSH2 0x75A JUMP JUMPDEST PUSH2 0x6A9 JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x520 JUMP JUMPDEST PUSH2 0x4EB JUMP JUMPDEST PUSH2 0x49C JUMP JUMPDEST PUSH2 0x31E JUMP JUMPDEST PUSH2 0x267 JUMP JUMPDEST PUSH2 0x207 JUMP JUMPDEST PUSH2 0x1D4 JUMP JUMPDEST PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x158 SWAP1 PUSH2 0x136 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x164 DUP2 PUSH2 0x14F JUMP JUMPDEST SUB PUSH2 0x16B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x17C DUP3 PUSH2 0x15B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x197 JUMPI PUSH2 0x194 SWAP2 PUSH0 ADD PUSH2 0x16F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1CF JUMPI PUSH2 0x1B9 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E JUMP JUMPDEST PUSH2 0xAFE JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x1CB DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST CALLVALUE PUSH2 0x202 JUMPI PUSH2 0x1EC PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x17E JUMP JUMPDEST PUSH2 0xB78 JUMP JUMPDEST PUSH2 0x1F4 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x1FE DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST CALLVALUE PUSH2 0x235 JUMPI PUSH2 0x21F PUSH2 0x21A CALLDATASIZE PUSH1 0x4 PUSH2 0x17E JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x231 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x262 JUMPI DUP1 PUSH2 0x256 PUSH2 0x25F SWAP3 PUSH0 DUP7 ADD PUSH2 0x16F JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x16F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST CALLVALUE PUSH2 0x296 JUMPI PUSH2 0x280 PUSH2 0x27A CALLDATASIZE PUSH1 0x4 PUSH2 0x23A JUMP JUMPDEST SWAP1 PUSH2 0x111C JUMP JUMPDEST PUSH2 0x288 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x292 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x2A5 JUMPI JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2D7 SWAP1 PUSH1 0x8 PUSH2 0x2DC SWAP4 MUL PUSH2 0x2AA JUMP JUMPDEST PUSH2 0x2AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2EA SWAP2 SLOAD PUSH2 0x2C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x2DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x305 SWAP1 PUSH2 0x14F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x31C SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x34E JUMPI PUSH2 0x32E CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x34A PUSH2 0x339 PUSH2 0x2ED JUMP JUMPDEST PUSH2 0x341 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x39C SWAP1 PUSH2 0x35B JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x3B6 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 PUSH2 0x3CE PUSH2 0x3C7 PUSH2 0x124 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x392 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3EE JUMPI PUSH2 0x3EA PUSH1 0x20 SWAP2 PUSH2 0x35B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x413 PUSH2 0x40E DUP3 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x42F JUMPI PUSH2 0x42D SWAP3 PUSH2 0x3F3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x357 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x452 JUMPI DUP2 PUSH1 0x20 PUSH2 0x44F SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x3FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x497 JUMPI PUSH2 0x470 DUP4 PUSH0 DUP4 ADD PUSH2 0x16F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x492 JUMPI PUSH2 0x48F SWAP3 ADD PUSH2 0x434 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0x4B0 PUSH2 0x4AA CALLDATASIZE PUSH1 0x4 PUSH2 0x457 JUMP JUMPDEST SWAP1 PUSH2 0x1151 JUMP JUMPDEST PUSH2 0x4B8 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x4C2 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4D2 SWAP1 PUSH2 0x4C6 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4E9 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4C9 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x51B JUMPI PUSH2 0x4FB CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x517 PUSH2 0x506 PUSH2 0x11CC JUMP JUMPDEST PUSH2 0x50E PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4D6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST CALLVALUE PUSH2 0x54E JUMPI PUSH2 0x530 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x538 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x540 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x54A DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x57C SWAP1 PUSH1 0x8 PUSH2 0x581 SWAP4 MUL PUSH2 0x2AA JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x58F SWAP2 SLOAD PUSH2 0x56C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x59C PUSH0 DUP1 PUSH2 0x584 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5B6 PUSH2 0x5B1 PUSH2 0x5BB SWAP3 PUSH2 0x136 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C7 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D3 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5DF SWAP1 PUSH2 0x5CA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5F6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5D6 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x628 JUMPI PUSH2 0x608 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x624 PUSH2 0x613 PUSH2 0x592 JUMP JUMPDEST PUSH2 0x61B PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5E3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x656 SWAP1 PUSH1 0x8 PUSH2 0x65B SWAP4 MUL PUSH2 0x2AA JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x669 SWAP2 SLOAD PUSH2 0x646 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x678 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x65E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x684 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x690 SWAP1 PUSH2 0x67B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6A7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x687 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x6D9 JUMPI PUSH2 0x6B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x6D5 PUSH2 0x6C4 PUSH2 0x66C JUMP JUMPDEST PUSH2 0x6CC PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x694 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x707 SWAP1 PUSH1 0x8 PUSH2 0x70C SWAP4 MUL PUSH2 0x2AA JUMP JUMPDEST PUSH2 0x6DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x71A SWAP2 SLOAD PUSH2 0x6F7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x729 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x70F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x735 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x741 SWAP1 PUSH2 0x72C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x758 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x738 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x78A JUMPI PUSH2 0x76A CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x786 PUSH2 0x775 PUSH2 0x71D JUMP JUMPDEST PUSH2 0x77D PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x745 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST CALLVALUE PUSH2 0x7BF JUMPI PUSH2 0x79F CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x7BB PUSH2 0x7AA PUSH2 0x125B JUMP JUMPDEST PUSH2 0x7B2 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7E2 JUMPI PUSH2 0x7DE PUSH1 0x20 SWAP2 PUSH2 0x35B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 PUSH2 0x7F9 PUSH2 0x7F4 DUP4 PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x82F PUSH1 0x5 PUSH2 0x7E7 JUMP JUMPDEST SWAP1 PUSH2 0x83C PUSH1 0x20 DUP4 ADD PUSH2 0x7FE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x846 PUSH2 0x825 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x851 PUSH2 0x83E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x85C PUSH2 0x849 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x896 PUSH2 0x89F PUSH1 0x20 SWAP4 PUSH2 0x8A4 SWAP4 PUSH2 0x88D DUP2 PUSH2 0x85F JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x863 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x86C JUMP JUMPDEST PUSH2 0x35B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x8BD SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x877 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8F0 JUMPI PUSH2 0x8D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x8EC PUSH2 0x8DB PUSH2 0x854 JUMP JUMPDEST PUSH2 0x8E3 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x8A8 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x901 DUP2 PUSH2 0x8F5 JUMP JUMPDEST SUB PUSH2 0x908 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x919 DUP3 PUSH2 0x8F8 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x96C JUMPI PUSH2 0x933 DUP2 PUSH0 DUP6 ADD PUSH2 0x16F JUMP JUMPDEST SWAP3 PUSH2 0x941 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x90C JUMP JUMPDEST SWAP3 PUSH2 0x969 PUSH2 0x952 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x16F JUMP JUMPDEST SWAP4 PUSH2 0x960 DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x90C JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x16F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST CALLVALUE PUSH2 0x9A3 JUMPI PUSH2 0x98D PUSH2 0x984 CALLDATASIZE PUSH1 0x4 PUSH2 0x91B JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x22DF JUMP JUMPDEST PUSH2 0x995 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x99F DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x9F9 JUMPI PUSH2 0x9C0 DUP2 PUSH0 DUP6 ADD PUSH2 0x16F JUMP JUMPDEST SWAP3 PUSH2 0x9CE DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x16F JUMP JUMPDEST SWAP3 PUSH2 0x9F6 PUSH2 0x9DF DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x90C JUMP JUMPDEST SWAP4 PUSH2 0x9ED DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x90C JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x16F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0xA15 PUSH2 0xA0C CALLDATASIZE PUSH1 0x4 PUSH2 0x9A8 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x2305 JUMP JUMPDEST PUSH2 0xA1D PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0xA27 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xA59 JUMPI PUSH2 0xA43 PUSH2 0xA3E CALLDATASIZE PUSH1 0x4 PUSH2 0x17E JUMP JUMPDEST PUSH2 0x2399 JUMP JUMPDEST PUSH2 0xA4B PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0xA55 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xA73 SWAP1 PUSH2 0xA6E PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0xAEA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA7E SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA8A SWAP1 PUSH2 0xA75 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAB1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xA8D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xAC4 SWAP1 PUSH2 0xA75 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xADF PUSH2 0xADA PUSH2 0xAE6 SWAP3 PUSH2 0xABB JUMP JUMPDEST PUSH2 0xAC7 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xA92 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAF6 PUSH2 0xAFC SWAP2 PUSH2 0xA81 JUMP JUMPDEST PUSH0 PUSH2 0xACA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB07 SWAP1 PUSH2 0xA62 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB1A SWAP1 PUSH2 0xB15 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0xB63 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB25 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB31 SWAP1 PUSH2 0xB1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB3D SWAP1 PUSH2 0xB1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB58 PUSH2 0xB53 PUSH2 0xB5F SWAP3 PUSH2 0xB34 JUMP JUMPDEST PUSH2 0xB40 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xA92 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB6F PUSH2 0xB76 SWAP2 PUSH2 0xB28 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xB43 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB81 SWAP1 PUSH2 0xB09 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB94 SWAP1 PUSH2 0xB8F PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0xBDD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB9F SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBAB SWAP1 PUSH2 0xB96 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBB7 SWAP1 PUSH2 0xB96 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBD2 PUSH2 0xBCD PUSH2 0xBD9 SWAP3 PUSH2 0xBAE JUMP JUMPDEST PUSH2 0xBBA JUMP JUMPDEST DUP3 SLOAD PUSH2 0xA92 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBE9 PUSH2 0xBF0 SWAP2 PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xBBD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xBFB SWAP1 PUSH2 0xB83 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xC15 PUSH2 0xC1A SWAP2 PUSH2 0xBFD JUMP JUMPDEST PUSH2 0xC03 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC27 SWAP1 SLOAD PUSH2 0xC09 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xC4D PUSH2 0xC52 SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0xC34 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC5F SWAP1 SLOAD PUSH2 0xC41 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC86 PUSH2 0xC81 PUSH2 0xC8B SWAP3 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0xC62 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA5 PUSH2 0xCA0 PUSH2 0xCAA SWAP3 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0xC62 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB6 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCCD PUSH2 0xCC8 PUSH2 0xCD2 SWAP3 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xCE8 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xA8D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xD06 PUSH2 0xD01 PUSH2 0xD0B SWAP3 PUSH2 0xC62 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0xC62 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD26 PUSH2 0xD21 PUSH2 0xD2D SWAP3 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0xD0E JUMP JUMPDEST DUP3 SLOAD PUSH2 0xCD5 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD4B PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0xD31 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xD5E SWAP1 PUSH2 0xC2A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD79 PUSH2 0xD74 PUSH2 0xD80 SWAP3 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0xD61 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xD37 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD8D SWAP1 PUSH2 0xC91 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xDA4 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xD84 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xDAF PUSH2 0x2412 JUMP JUMPDEST SWAP2 PUSH2 0xDC4 PUSH2 0xDBE PUSH0 DUP6 ADD PUSH2 0xC1D JUMP JUMPDEST ISZERO PUSH2 0xC2A JUMP JUMPDEST SWAP2 PUSH2 0xDD0 PUSH0 DUP6 ADD PUSH2 0xC55 JUMP JUMPDEST DUP1 PUSH2 0xDE3 PUSH2 0xDDD PUSH0 PUSH2 0xC72 JUMP JUMPDEST SWAP2 PUSH2 0xC62 JUMP JUMPDEST EQ DUP1 PUSH2 0xF1D JUMPI JUMPDEST SWAP1 PUSH2 0xDFE PUSH2 0xDF8 PUSH1 0x1 PUSH2 0xC91 JUMP JUMPDEST SWAP2 PUSH2 0xC62 JUMP JUMPDEST EQ DUP1 PUSH2 0xEF5 JUMPI JUMPDEST PUSH2 0xE10 SWAP1 SWAP2 ISZERO PUSH2 0xC2A JUMP JUMPDEST SWAP1 DUP2 PUSH2 0xEE4 JUMPI JUMPDEST POP PUSH2 0xEA8 JUMPI PUSH2 0xE40 SWAP2 PUSH2 0xE35 PUSH2 0xE2D PUSH1 0x1 PUSH2 0xC91 JUMP JUMPDEST PUSH0 DUP8 ADD PUSH2 0xD11 JUMP JUMPDEST DUP4 PUSH2 0xE96 JUMPI JUMPDEST PUSH2 0xFBB JUMP JUMPDEST PUSH2 0xE48 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0xE55 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xE8D PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0xE84 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xD91 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0xE45 JUMP JUMPDEST PUSH2 0xEA3 PUSH1 0x1 PUSH0 DUP8 ADD PUSH2 0xD64 JUMP JUMPDEST PUSH2 0xE3B JUMP JUMPDEST PUSH2 0xEB0 PUSH2 0x124 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xEE0 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xEEF SWAP2 POP ISZERO PUSH2 0xC2A JUMP JUMPDEST PUSH0 PUSH2 0xE17 JUMP JUMPDEST POP PUSH2 0xE10 PUSH2 0xF02 ADDRESS PUSH2 0xCAD JUMP JUMPDEST EXTCODESIZE PUSH2 0xF15 PUSH2 0xF0F PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0xE05 JUMP JUMPDEST POP DUP4 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xF30 PUSH2 0xF35 SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF42 SWAP1 SLOAD PUSH2 0xF24 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xF5C DUP3 PUSH2 0x15B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xF77 JUMPI PUSH2 0xF74 SWAP2 PUSH0 ADD PUSH2 0xF4F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0xF84 PUSH2 0x124 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0xF95 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xFB0 PUSH2 0xFAB PUSH2 0xFB7 SWAP3 PUSH2 0xF8C JUMP JUMPDEST PUSH2 0xF98 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xA92 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xFE0 PUSH2 0xFE6 SWAP2 PUSH2 0xFCB CALLER PUSH2 0x2454 JUMP JUMPDEST PUSH2 0xFD3 PUSH2 0x247B JUMP JUMPDEST PUSH2 0xFDB PUSH2 0x248F JUMP JUMPDEST PUSH2 0xA81 JUMP JUMPDEST PUSH0 PUSH2 0xACA JUMP JUMPDEST PUSH2 0x1012 PUSH1 0x20 PUSH2 0xFFC PUSH2 0xFF7 PUSH0 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x100A PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1022 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1117 JUMPI PUSH2 0x104F PUSH2 0x1048 PUSH2 0x105B SWAP5 PUSH2 0x1054 SWAP5 PUSH0 SWAP2 PUSH2 0x10E9 JUMPI JUMPDEST POP PUSH2 0xB28 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xB43 JUMP JUMPDEST PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xBBD JUMP JUMPDEST PUSH2 0x1087 PUSH1 0x20 PUSH2 0x1071 PUSH2 0x106C PUSH0 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x107F PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1097 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x10E4 JUMPI PUSH2 0x10B4 SWAP2 PUSH0 SWAP2 PUSH2 0x10B6 JUMPI JUMPDEST POP PUSH1 0x3 PUSH2 0xF9B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x10D7 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x10DD JUMPI JUMPDEST PUSH2 0x10CF DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH0 PUSH2 0x10AC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10C5 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x110A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1110 JUMPI JUMPDEST PUSH2 0x1102 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH0 PUSH2 0x1042 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10F8 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST SWAP1 PUSH2 0x1126 SWAP2 PUSH2 0xDA6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x113A SWAP2 PUSH2 0x1135 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x113C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x114F SWAP2 PUSH2 0x114A DUP2 PUSH2 0x2577 JUMP JUMPDEST PUSH2 0x25E7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x115B SWAP2 PUSH2 0x1128 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1172 SWAP1 PUSH2 0x116D PUSH2 0x2725 JUMP JUMPDEST PUSH2 0x11C0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x118C PUSH2 0x1187 PUSH2 0x1191 SWAP3 PUSH2 0x1175 JUMP JUMPDEST PUSH2 0xA8D JUMP JUMPDEST PUSH2 0x4C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11BD PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x1178 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x11C9 PUSH2 0x1194 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11DC PUSH2 0x11D7 PUSH2 0x115D JUMP JUMPDEST PUSH2 0x1161 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11E7 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0x11EF PUSH2 0x1219 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1205 PUSH2 0x1200 PUSH2 0x120A SWAP3 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1216 SWAP1 PUSH2 0x11F1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x122A PUSH2 0x1225 PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x27A3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1234 PUSH2 0x11DF JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1246 PUSH2 0x124B SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x2AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1258 SWAP1 SLOAD PUSH2 0x123A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1263 PUSH2 0x1236 JUMP JUMPDEST POP PUSH2 0x1276 PUSH0 PUSH2 0x1270 PUSH2 0x280F JUMP JUMPDEST ADD PUSH2 0x124E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x128E SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1289 PUSH2 0x28D8 JUMP JUMPDEST PUSH2 0x18BC JUMP JUMPDEST PUSH2 0x1296 PUSH2 0x2968 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12A1 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12AD SWAP1 PUSH2 0x1298 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12B9 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C5 SWAP1 PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12D1 DUP2 PUSH2 0x12BC JUMP JUMPDEST SUB PUSH2 0x12D8 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x12E9 DUP3 PUSH2 0x12C8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1304 JUMPI PUSH2 0x1301 SWAP2 PUSH0 ADD PUSH2 0x12DC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0x1312 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x132C PUSH2 0x1327 PUSH2 0x1331 SWAP3 PUSH2 0x1315 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x134C JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 PUSH2 0x1363 PUSH2 0x135E DUP4 PUSH2 0x1334 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x1392 PUSH2 0x137A DUP4 PUSH2 0x1351 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x1388 DUP7 SWAP4 PUSH2 0x1334 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x1368 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x13CF DUP3 PUSH2 0x13C1 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x13E0 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x1394 JUMP JUMPDEST SWAP1 PUSH2 0x13EF SWAP1 PUSH2 0x14F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1407 PUSH2 0x1402 PUSH2 0x140C SWAP3 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1427 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST SWAP1 PUSH2 0x143E PUSH2 0x1439 DUP4 PUSH2 0x140F JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x146D PUSH2 0x1455 DUP4 PUSH2 0x142C JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x1463 DUP7 SWAP4 PUSH2 0x140F JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x1443 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH2 0x147B SWAP2 ADD PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1488 SWAP1 MLOAD PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1494 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14A0 SWAP1 PUSH2 0x148B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14AC SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x14BC DUP3 PUSH2 0x8F8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x14D7 JUMPI PUSH2 0x14D4 SWAP2 PUSH0 ADD PUSH2 0x14AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x14EA DUP3 PUSH2 0x14DC JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x14FB JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x1394 JUMP JUMPDEST SWAP1 PUSH2 0x150A SWAP1 PUSH2 0x8F5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1517 DUP2 PUSH2 0xC2A JUMP JUMPDEST SUB PUSH2 0x151E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x152F DUP3 PUSH2 0x150E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x154A JUMPI PUSH2 0x1547 SWAP2 PUSH0 ADD PUSH2 0x1522 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST PUSH2 0x1558 SWAP1 PUSH2 0x8F5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x1585 PUSH2 0x158C SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x157B PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x15AF SWAP3 SWAP5 SWAP4 PUSH2 0x15A8 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15C6 JUMPI PUSH1 0x20 MUL SWAP1 JUMP JUMPDEST PUSH2 0x365 JUMP JUMPDEST PUSH2 0x15D7 PUSH2 0x15DC SWAP2 PUSH2 0x15B1 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15FD PUSH2 0x15EC DUP4 PUSH2 0x15CB JUMP JUMPDEST SWAP3 PUSH2 0x15F7 DUP5 SWAP2 PUSH2 0x15B1 JUMP JUMPDEST SWAP1 PUSH2 0x1443 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1609 PUSH1 0x4 PUSH2 0x15DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH1 0x4 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x161C DUP3 PUSH2 0x160C JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x162A JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1394 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1646 PUSH2 0x1641 PUSH2 0x164B SWAP3 PUSH2 0x162F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x1676 JUMPI DUP1 PUSH2 0x166A PUSH2 0x1673 SWAP3 PUSH0 DUP7 ADD PUSH2 0x14AF JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x14AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x168C SWAP1 PUSH2 0x8F5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x169D DUP2 PUSH1 0x20 SWAP4 PUSH2 0x1683 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x16C3 PUSH2 0x16BD PUSH2 0x16B6 DUP4 PUSH2 0x160C JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x167B JUMP JUMPDEST SWAP2 PUSH2 0x1680 JUMP JUMPDEST PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x16D3 JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x16E9 PUSH2 0x16E3 PUSH1 0x1 SWAP3 DUP5 MLOAD PUSH2 0x1690 JUMP JUMPDEST SWAP3 PUSH2 0x16A1 JUMP JUMPDEST SWAP3 ADD SWAP2 SWAP1 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x1727 PUSH2 0x172E SWAP5 PUSH2 0x171D PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x1713 PUSH1 0xE0 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST ADD SWAP1 PUSH2 0x16A7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x173A SWAP1 MLOAD PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1779 PUSH2 0x177F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x8F5 JUMP JUMPDEST SWAP3 PUSH2 0x8F5 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x178A JUMPI JUMP JUMPDEST PUSH2 0x173D JUMP JUMPDEST PUSH2 0x179E PUSH2 0x17A4 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x8F5 JUMP JUMPDEST SWAP3 PUSH2 0x8F5 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x17AF JUMPI JUMP JUMPDEST PUSH2 0x173D JUMP JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E74206F757470757420616D6F756E74000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x17E8 PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x863 JUMP JUMPDEST PUSH2 0x17F1 DUP2 PUSH2 0x17B4 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x180A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x17DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1814 JUMPI JUMP JUMPDEST PUSH2 0x181C PUSH2 0x124 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x184C PUSH1 0x4 DUP3 ADD PUSH2 0x17F5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1859 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1865 SWAP1 PUSH2 0x1850 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1871 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x187E JUMPI JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1896 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x18A1 SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18AD SWAP1 PUSH2 0x1898 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18B9 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP4 SWAP5 SWAP3 SWAP2 SWAP5 PUSH2 0x18CA DUP6 PUSH2 0x12A4 JUMP JUMPDEST SWAP6 PUSH2 0x18EF PUSH1 0x20 PUSH2 0x18D9 DUP10 PUSH2 0x12B0 JUMP JUMPDEST PUSH4 0xDFE1681 SWAP1 PUSH2 0x18E7 PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x18FF PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x22DA JUMPI PUSH2 0x191A SWAP2 PUSH0 SWAP2 PUSH2 0x22AC JUMPI JUMPDEST POP PUSH2 0x1309 JUMP JUMPDEST SWAP5 PUSH2 0x193F PUSH1 0x20 PUSH2 0x1929 DUP11 PUSH2 0x12B0 JUMP JUMPDEST PUSH4 0xD21220A7 SWAP1 PUSH2 0x1937 PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x194F PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x22A7 JUMPI PUSH2 0x19B6 SWAP2 PUSH2 0x196F SWAP2 PUSH0 SWAP2 PUSH2 0x2279 JUMPI JUMPDEST POP PUSH2 0x1309 JUMP JUMPDEST PUSH2 0x199D PUSH2 0x1984 PUSH2 0x197F PUSH1 0x2 PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x136D JUMP JUMPDEST SWAP9 PUSH2 0x1998 DUP11 PUSH2 0x1992 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x19B1 DUP9 PUSH2 0x19AB PUSH1 0x1 PUSH2 0x13F3 JUMP JUMPDEST SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x19C8 PUSH2 0x19C3 PUSH1 0x2 PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x1448 JUMP JUMPDEST SWAP5 PUSH2 0x19DA PUSH2 0x19D5 DUP9 PUSH2 0x13C1 JUMP JUMPDEST PUSH2 0x1448 JUMP JUMPDEST SWAP9 PUSH2 0x19E4 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1A00 PUSH2 0x19FA PUSH2 0x19F5 DUP13 PUSH2 0x13C1 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST LT ISZERO PUSH2 0x1AD2 JUMPI PUSH2 0x1A61 SWAP1 PUSH1 0x20 PUSH2 0x1A2F PUSH2 0x1A2A PUSH2 0x1A25 PUSH2 0x1A20 DUP15 DUP7 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1A56 PUSH2 0x1A41 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1A4A PUSH2 0x124 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1ACD JUMPI PUSH2 0x1A94 SWAP3 DUP14 PUSH2 0x1A8F SWAP3 PUSH0 SWAP3 PUSH2 0x1A99 JUMPI JUMPDEST POP PUSH2 0x1A8A SWAP1 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST PUSH2 0x19E5 JUMP JUMPDEST PUSH2 0x1A8A SWAP2 SWAP3 POP PUSH2 0x1ABF SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1AC6 JUMPI JUMPDEST PUSH2 0x1AB7 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1A7C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1AAD JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 SWAP9 SWAP7 SWAP5 SWAP8 PUSH2 0x1B24 PUSH1 0x20 PUSH2 0x1AF2 PUSH2 0x1AED DUP9 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1B19 PUSH2 0x1B04 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1B0D PUSH2 0x124 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2274 JUMPI PUSH0 SWAP2 PUSH2 0x2246 JUMPI JUMPDEST POP SWAP9 PUSH2 0x1B49 PUSH2 0x1B44 DUP4 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x1B79 PUSH0 PUSH2 0x1B60 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP6 PUSH2 0x1B84 DUP9 PUSH2 0x1B6D PUSH2 0x124 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xF49 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x155C JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2241 JUMPI PUSH2 0x2215 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1BA7 PUSH2 0x1BA2 DUP5 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x95EA7B3 SWAP4 SWAP1 PUSH2 0x1BCB PUSH0 DUP6 SWAP7 PUSH2 0x1BD6 PUSH2 0x1BBF PUSH2 0x124 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xF49 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x158E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2210 JUMPI PUSH1 0x40 SWAP3 PUSH2 0x21E4 JUMPI JUMPDEST POP PUSH2 0x1C8E PUSH2 0x1BF5 PUSH2 0x15FF JUMP JUMPDEST SWAP4 PUSH2 0x1C1A PUSH2 0x1C02 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0x1C15 DUP8 PUSH2 0x1C0F PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1C3F PUSH2 0x1C26 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0x1C3A DUP8 PUSH2 0x1C34 PUSH1 0x1 PUSH2 0x13F3 JUMP JUMPDEST SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1C64 PUSH2 0x1C4B PUSH0 PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0x1C5F DUP8 PUSH2 0x1C59 PUSH1 0x2 PUSH2 0x1318 JUMP JUMPDEST SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1C89 PUSH2 0x1C70 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0x1C84 DUP8 PUSH2 0x1C7E PUSH1 0x3 PUSH2 0x1632 JUMP JUMPDEST SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0x1CC1 PUSH0 PUSH4 0xA8559872 PUSH2 0x1CCC PUSH2 0x1CA3 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP8 PUSH2 0x1CAD ADDRESS PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1CB5 PUSH2 0x124 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0xF49 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x16F2 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x21DF JUMPI PUSH2 0x21B2 JUMPI JUMPDEST POP PUSH2 0x1CE5 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP5 PUSH2 0x1CEF PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP6 JUMPDEST DUP7 PUSH2 0x1D0C PUSH2 0x1D06 PUSH2 0x1D01 DUP10 PUSH2 0x13C1 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST LT ISZERO PUSH2 0x1F74 JUMPI PUSH2 0x1D25 PUSH2 0x1D20 DUP8 DUP10 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST PUSH2 0x1D37 PUSH2 0x1D31 DUP8 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1E49 JUMPI PUSH2 0x1D98 PUSH1 0x20 PUSH2 0x1D66 PUSH2 0x1D61 PUSH2 0x1D5C PUSH2 0x1D57 DUP12 DUP14 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1D8D PUSH2 0x1D78 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1D81 PUSH2 0x124 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1E44 JUMPI PUSH2 0x1DE4 DUP13 PUSH2 0x1DDF PUSH2 0x1DD7 PUSH2 0x1E04 SWAP7 DUP14 DUP16 PUSH2 0x1DFD SWAP9 PUSH0 SWAP4 PUSH2 0x1E0A JUMPI JUMPDEST POP PUSH2 0x1DD1 SWAP2 PUSH2 0x1DCC SWAP2 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x176A JUMP JUMPDEST DUP13 SWAP1 SWAP3 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1DF7 PUSH2 0x1DF2 DUP14 DUP12 SWAP1 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x178F JUMP JUMPDEST SWAP7 JUMPDEST PUSH2 0x146F JUMP JUMPDEST SWAP6 PUSH2 0x1CF1 JUMP JUMPDEST PUSH2 0x1DCC SWAP2 SWAP4 POP SWAP2 PUSH2 0x1E34 PUSH2 0x1DD1 SWAP4 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E3D JUMPI JUMPDEST PUSH2 0x1E2C DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 PUSH2 0x1DBE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E22 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x1EA3 PUSH1 0x20 PUSH2 0x1E71 PUSH2 0x1E6C PUSH2 0x1E67 PUSH2 0x1E62 DUP12 DUP14 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1E98 PUSH2 0x1E83 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1E8C PUSH2 0x124 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1F6F JUMPI PUSH2 0x1EEF DUP13 PUSH2 0x1EEA PUSH2 0x1EE2 PUSH2 0x1E04 SWAP7 DUP14 DUP16 PUSH2 0x1F2F SWAP9 PUSH0 SWAP4 PUSH2 0x1F35 JUMPI JUMPDEST POP PUSH2 0x1EDC SWAP2 PUSH2 0x1ED7 SWAP2 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x176A JUMP JUMPDEST DUP13 SWAP1 SWAP3 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1500 JUMP JUMPDEST PUSH2 0x1F29 PUSH2 0x1F05 PUSH2 0x1F00 DUP11 DUP13 SWAP1 PUSH2 0x13C5 JUMP JUMPDEST PUSH2 0x147E JUMP JUMPDEST DUP14 PUSH2 0x1F19 PUSH2 0x1F14 DUP14 DUP13 SWAP4 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x1F23 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x2AD1 JUMP JUMPDEST SWAP1 PUSH2 0x178F JUMP JUMPDEST SWAP7 PUSH2 0x1DFF JUMP JUMPDEST PUSH2 0x1ED7 SWAP2 SWAP4 POP SWAP2 PUSH2 0x1F5F PUSH2 0x1EDC SWAP4 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F68 JUMPI JUMPDEST PUSH2 0x1F57 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 PUSH2 0x1EC9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST POP SWAP6 POP SWAP6 SWAP3 POP SWAP6 POP SWAP2 POP PUSH2 0x1FC6 PUSH1 0x20 PUSH2 0x1F94 PUSH2 0x1F8F DUP6 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1FBB PUSH2 0x1FA6 ADDRESS PUSH2 0x14A3 JUMP JUMPDEST SWAP3 PUSH2 0x1FAF PUSH2 0x124 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x21AD JUMPI PUSH2 0x2001 SWAP3 PUSH2 0x1FE6 SWAP3 PUSH0 SWAP2 PUSH2 0x217F JUMPI JUMPDEST POP PUSH2 0x176A JUMP JUMPDEST SWAP4 PUSH2 0x1FFA PUSH2 0x1FF4 DUP7 SWAP3 PUSH2 0x8F5 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST LT ISZERO PUSH2 0x180D JUMP JUMPDEST DUP1 PUSH2 0x201D PUSH2 0x2017 PUSH2 0x2012 PUSH1 0x3 PUSH2 0x124E JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x20F6 JUMPI POP PUSH2 0x203F PUSH2 0x203A PUSH2 0x2035 PUSH1 0x3 PUSH2 0x124E JUMP JUMPDEST PUSH2 0x185C JUMP JUMPDEST PUSH2 0x1868 JUMP JUMPDEST SWAP1 PUSH4 0x2E1A7D4D DUP4 DUP4 EXTCODESIZE ISZERO PUSH2 0x20F1 JUMPI PUSH2 0x2076 SWAP4 PUSH2 0x206B PUSH0 DUP1 SWAP5 PUSH2 0x205F PUSH2 0x124 JUMP JUMPDEST SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0xF49 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1883 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x20EC JUMPI PUSH0 SWAP4 PUSH2 0x20A1 PUSH2 0x209C DUP7 SWAP6 SWAP4 DUP7 SWAP6 SWAP5 DUP7 SWAP6 PUSH2 0x20C0 JUMPI JUMPDEST POP PUSH2 0x18A4 JUMP JUMPDEST PUSH2 0x18B0 JUMP JUMPDEST DUP3 DUP3 ISZERO PUSH2 0x20B7 JUMPI JUMPDEST CALL ISZERO PUSH2 0x20B2 JUMPI JUMPDEST JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST POP PUSH2 0x8FC PUSH2 0x20A9 JUMP JUMPDEST PUSH2 0x20DF SWAP1 DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x20E5 JUMPI JUMPDEST PUSH2 0x20D7 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1874 JUMP JUMPDEST PUSH0 PUSH2 0x2096 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x20CD JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0xF45 JUMP JUMPDEST SWAP2 PUSH2 0x210B PUSH2 0x2106 PUSH1 0x20 SWAP4 SWAP5 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH2 0x212E PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x2139 PUSH2 0x2122 PUSH2 0x124 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xF49 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x158E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x217A JUMPI PUSH2 0x214E JUMPI JUMPDEST POP PUSH2 0x20B0 JUMP JUMPDEST PUSH2 0x216E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2173 JUMPI JUMPDEST PUSH2 0x2166 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH2 0x2148 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x215C JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x21A0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x21A6 JUMPI JUMPDEST PUSH2 0x2198 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST PUSH0 PUSH2 0x1FE0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x218E JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x21D2 SWAP1 PUSH1 0x40 RETURNDATASIZE DUP2 GT PUSH2 0x21D8 JUMPI JUMPDEST PUSH2 0x21CA DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x164E JUMP JUMPDEST POP PUSH2 0x1CDB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x21C0 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x2204 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2209 JUMPI JUMPDEST PUSH2 0x21FC DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH2 0x1BE9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x21F2 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x2235 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x223A JUMPI JUMPDEST PUSH2 0x222D DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH2 0x1B93 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2223 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x2267 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x226D JUMPI JUMPDEST PUSH2 0x225F DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST PUSH0 PUSH2 0x1B36 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2255 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x229A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x22A0 JUMPI JUMPDEST PUSH2 0x2292 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12EB JUMP JUMPDEST PUSH0 PUSH2 0x1969 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2288 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x22CD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x22D3 JUMPI JUMPDEST PUSH2 0x22C5 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12EB JUMP JUMPDEST PUSH0 PUSH2 0x1914 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x22BB JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST SWAP1 PUSH2 0x22EC SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1279 JUMP JUMPDEST JUMP JUMPDEST POP POP POP POP POP PUSH2 0x22FB PUSH2 0x28D8 JUMP JUMPDEST PUSH2 0x2303 PUSH2 0x2968 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2312 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x22EE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2325 SWAP1 PUSH2 0x2320 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0x2327 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2342 PUSH2 0x233C PUSH2 0x2337 PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH2 0x2352 JUMPI PUSH2 0x2350 SWAP1 PUSH2 0x27A3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2395 PUSH2 0x235E PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x2366 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x23A2 SWAP1 PUSH2 0x2314 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23AC PUSH2 0x125B JUMP JUMPDEST PUSH2 0x23C5 PUSH2 0x23BF PUSH2 0x23BA PUSH2 0x2D77 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST SUB PUSH2 0x23CC JUMPI JUMP JUMPDEST PUSH2 0x240E PUSH2 0x23D7 PUSH2 0x2D77 JUMP JUMPDEST PUSH2 0x23DF PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2447 SWAP1 PUSH2 0x2442 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x2449 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2452 SWAP1 PUSH2 0x2E5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x245D SWAP1 PUSH2 0x2436 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2467 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x246F PUSH2 0x2471 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2479 PUSH2 0x2E96 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2483 PUSH2 0x245F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x248D PUSH2 0x2D84 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2497 PUSH2 0x2485 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24A2 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24AE ADDRESS PUSH2 0x2499 JUMP JUMPDEST PUSH2 0x24E0 PUSH2 0x24DA PUSH32 0x0 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x252A JUMPI JUMPDEST PUSH2 0x24EE JUMPI JUMP JUMPDEST PUSH2 0x24F6 PUSH2 0x124 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2526 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2533 PUSH2 0x2EA0 JUMP JUMPDEST PUSH2 0x2565 PUSH2 0x255F PUSH32 0x0 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ ISZERO PUSH2 0x24E8 JUMP JUMPDEST POP PUSH2 0x2575 PUSH2 0x23A4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2580 SWAP1 PUSH2 0x256C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x258B SWAP1 PUSH2 0x5A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2597 SWAP1 PUSH2 0x2582 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25A3 SWAP1 PUSH2 0x5BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25AF DUP2 PUSH2 0x4C6 JUMP JUMPDEST SUB PUSH2 0x25B6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x25C7 DUP3 PUSH2 0x25A6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x25E2 JUMPI PUSH2 0x25DF SWAP2 PUSH0 ADD PUSH2 0x25BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2615 PUSH1 0x20 PUSH2 0x25FF PUSH2 0x25FA DUP7 PUSH2 0x258E JUMP JUMPDEST PUSH2 0x259A JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x260D PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2625 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x26F5 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x2686 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x2647 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x2682 SWAP1 PUSH2 0x2653 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x26A1 PUSH2 0x269B PUSH2 0x2696 PUSH2 0x1194 JUMP JUMPDEST PUSH2 0x4C6 JUMP JUMPDEST SWAP2 PUSH2 0x4C6 JUMP JUMPDEST SUB PUSH2 0x26B6 JUMPI PUSH2 0x26B1 SWAP3 SWAP4 POP PUSH2 0x2ECA JUMP JUMPDEST PUSH2 0x2645 JUMP JUMPDEST PUSH2 0x26F1 DUP5 PUSH2 0x26C2 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x4D6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2717 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x271E JUMPI JUMPDEST PUSH2 0x270F DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25C9 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2632 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2705 JUMP JUMPDEST PUSH2 0x272E ADDRESS PUSH2 0x2499 JUMP JUMPDEST PUSH2 0x2760 PUSH2 0x275A PUSH32 0x0 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST SUB PUSH2 0x2767 JUMPI JUMP JUMPDEST PUSH2 0x276F PUSH2 0x124 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x279F PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27AB PUSH2 0x280F JUMP JUMPDEST PUSH2 0x27C3 PUSH2 0x27B9 PUSH0 DUP4 ADD PUSH2 0x124E JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0xF9B JUMP JUMPDEST SWAP1 PUSH2 0x27F7 PUSH2 0x27F1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0xF8C JUMP JUMPDEST SWAP2 PUSH2 0xF8C JUMP JUMPDEST SWAP2 PUSH2 0x2800 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x280A DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2842 PUSH2 0x2847 SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x2833 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2854 SWAP1 SLOAD PUSH2 0x2836 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2861 PUSH1 0x2 PUSH2 0x1318 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x288F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xA8D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x28AD PUSH2 0x28A8 PUSH2 0x28B2 SWAP3 PUSH2 0x8F5 JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x28CD PUSH2 0x28C8 PUSH2 0x28D4 SWAP3 PUSH2 0x2899 JUMP JUMPDEST PUSH2 0x28B5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2864 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x28E0 PUSH2 0x2F53 JUMP JUMPDEST PUSH2 0x28EB PUSH0 DUP3 ADD PUSH2 0x284A JUMP JUMPDEST PUSH2 0x2904 PUSH2 0x28FE PUSH2 0x28F9 PUSH2 0x2857 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ PUSH2 0x291F JUMPI PUSH2 0x291D SWAP1 PUSH0 PUSH2 0x2916 PUSH2 0x2857 JUMP JUMPDEST SWAP2 ADD PUSH2 0x28B8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2927 PUSH2 0x124 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2957 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2965 PUSH1 0x1 PUSH2 0x13F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2983 PUSH2 0x2973 PUSH2 0x2F53 JUMP JUMPDEST PUSH0 PUSH2 0x297C PUSH2 0x295B JUMP JUMPDEST SWAP2 ADD PUSH2 0x28B8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2995 PUSH2 0x299A SWAP2 PUSH2 0xC2F JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29A7 SWAP1 SLOAD PUSH2 0x2989 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29DF PUSH2 0x29E6 SWAP5 PUSH2 0x29D5 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x29CB PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x2A33 SWAP5 PUSH2 0x2A22 PUSH2 0x2A2C SWAP3 PUSH2 0x2A18 PUSH1 0x80 SWAP7 PUSH2 0x2A0E PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x154F JUMP JUMPDEST ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x53776170206661696C6564000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2A69 PUSH1 0xB PUSH1 0x20 SWAP3 PUSH2 0x863 JUMP JUMPDEST PUSH2 0x2A72 DUP2 PUSH2 0x2A35 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2A8B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2A5C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2A95 JUMPI JUMP JUMPDEST PUSH2 0x2A9D PUSH2 0x124 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2ACD PUSH1 0x4 DUP3 ADD PUSH2 0x2A76 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x2ADD PUSH2 0x2985 JUMP JUMPDEST SWAP4 PUSH2 0x2B0A PUSH1 0x20 PUSH2 0x2AF4 PUSH2 0x2AEF PUSH0 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x2B02 PUSH2 0x124 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xF49 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2B1A PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2D72 JUMPI PUSH0 SWAP2 PUSH2 0x2D44 JUMPI JUMPDEST POP SWAP3 DUP2 PUSH2 0x2B41 PUSH2 0x2B3B DUP8 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH2 0x2D3B JUMPI PUSH2 0x2B57 PUSH2 0x2B52 DUP4 PUSH2 0x1497 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x2B71 PUSH2 0x2B6C PUSH1 0x1 PUSH2 0x299D JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST SWAP1 PUSH2 0x2B8F PUSH0 DUP7 SWAP6 PUSH2 0x2B9A PUSH2 0x2B83 PUSH2 0x124 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xF49 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x158E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2D36 JUMPI PUSH2 0x2D0A JUMPI JUMPDEST POP PUSH2 0x2BBC PUSH2 0x2BB7 PUSH1 0x1 PUSH2 0x299D JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 DUP5 SWAP1 PUSH2 0x2BE6 PUSH0 DUP11 SWAP6 PUSH2 0x2BF1 DUP9 DUP12 SWAP1 PUSH2 0x2BDA PUSH2 0x124 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0xF49 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x29AA JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x2CDA JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x2CCE JUMPI POP PUSH1 0x1 PUSH2 0x2C33 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST PUSH2 0x2C30 DUP2 PUSH2 0x2C2A PUSH2 0x2C24 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST GT PUSH2 0x2A8E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP5 SWAP6 POP PUSH2 0x2C73 SWAP2 PUSH2 0x2C7E PUSH0 SWAP3 PUSH2 0x2C53 PUSH2 0x2C4E PUSH1 0x1 PUSH2 0x299D JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST SWAP6 PUSH4 0x5EFAAEBB SWAP4 SWAP8 SWAP10 SWAP2 SWAP1 SWAP2 PUSH2 0x2C67 PUSH2 0x124 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0xF49 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x29E8 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2CC9 JUMPI PUSH0 SWAP2 PUSH2 0x2C9B JUMPI JUMPDEST POP PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2C0E JUMP JUMPDEST PUSH2 0x2CBC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2CC2 JUMPI JUMPDEST PUSH2 0x2CB4 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST PUSH0 PUSH2 0x2C90 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2CAA JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2CFC SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D03 JUMPI JUMPDEST PUSH2 0x2CF4 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14BE JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2BFE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2CEA JUMP JUMPDEST PUSH2 0x2D2A SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D2F JUMPI JUMPDEST PUSH2 0x2D22 DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH2 0x2BA9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D18 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2D65 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D6B JUMPI JUMPDEST PUSH2 0x2D5D DUP2 DUP4 PUSH2 0x392 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF5E JUMP JUMPDEST PUSH0 PUSH2 0x2B2C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D53 JUMP JUMPDEST PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x2D7F PUSH2 0x1236 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2D95 PUSH2 0x2D8F PUSH2 0x2F7B JUMP JUMPDEST ISZERO PUSH2 0xC2A JUMP JUMPDEST PUSH2 0x2D9B JUMPI JUMP JUMPDEST PUSH2 0x2DA3 PUSH2 0x124 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2DD3 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2DE8 SWAP1 PUSH2 0x2DE3 PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x2DEA JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2E05 PUSH2 0x2DFF PUSH2 0x2DFA PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ PUSH2 0x2E15 JUMPI PUSH2 0x2E13 SWAP1 PUSH2 0x27A3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E58 PUSH2 0x2E21 PUSH0 PUSH2 0x120D JUMP JUMPDEST PUSH2 0x2E29 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E65 SWAP1 PUSH2 0x2DD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E6F PUSH2 0x2D84 JUMP JUMPDEST PUSH2 0x2E77 PUSH2 0x2E79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E94 PUSH2 0x2E84 PUSH2 0x2F53 JUMP JUMPDEST PUSH0 PUSH2 0x2E8D PUSH2 0x295B JUMP JUMPDEST SWAP2 ADD PUSH2 0x28B8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E9E PUSH2 0x2E67 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2EA8 PUSH2 0x1236 JUMP JUMPDEST POP PUSH2 0x2EC3 PUSH0 PUSH2 0x2EBD PUSH2 0x2EB8 PUSH2 0x1194 JUMP JUMPDEST PUSH2 0x2F99 JUMP JUMPDEST ADD PUSH2 0x124E JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2ED4 DUP3 PUSH2 0x2F9C JUMP JUMPDEST DUP2 PUSH2 0x2EFF PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0xF8C JUMP JUMPDEST SWAP1 PUSH2 0x2F08 PUSH2 0x124 JUMP JUMPDEST DUP1 PUSH2 0x2F12 DUP2 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2F1E DUP2 PUSH2 0x2EC6 JUMP JUMPDEST PUSH2 0x2F30 PUSH2 0x2F2A PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2F44 JUMPI PUSH2 0x2F40 SWAP2 PUSH2 0x30AC JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2F4E PUSH2 0x3011 JUMP JUMPDEST PUSH2 0x2F42 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2F83 PUSH2 0x2F77 JUMP JUMPDEST POP PUSH2 0x2F96 PUSH0 PUSH2 0x2F90 PUSH2 0x2412 JUMP JUMPDEST ADD PUSH2 0xC1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x2FB0 PUSH2 0x2FAA PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ PUSH2 0x2FD2 JUMPI PUSH2 0x2FD0 SWAP1 PUSH0 PUSH2 0x2FCA PUSH2 0x2FC5 PUSH2 0x1194 JUMP JUMPDEST PUSH2 0x2F99 JUMP JUMPDEST ADD PUSH2 0xF9B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x300D SWAP1 PUSH2 0x2FDE PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x3024 PUSH2 0x301E PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST GT PUSH2 0x302B JUMPI JUMP JUMPDEST PUSH2 0x3033 PUSH2 0x124 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3063 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x307E PUSH2 0x3079 DUP4 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x309E JUMPI PUSH2 0x3093 RETURNDATASIZE PUSH2 0x306C JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x30A6 PUSH2 0x3067 JUMP JUMPDEST SWAP1 PUSH2 0x309C JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x30D8 SWAP4 PUSH2 0x30BA PUSH2 0x3067 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x30CF PUSH2 0x3083 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x30DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x30EF SWAP1 PUSH2 0x30E8 PUSH2 0x3067 JUMP JUMPDEST POP ISZERO PUSH2 0xC2A JUMP JUMPDEST PUSH0 EQ PUSH2 0x30FB JUMPI POP PUSH2 0x317F JUMP JUMPDEST PUSH2 0x3104 DUP3 PUSH2 0x2EC6 JUMP JUMPDEST PUSH2 0x3116 PUSH2 0x3110 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ DUP1 PUSH2 0x3164 JUMPI JUMPDEST PUSH2 0x3125 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x3160 SWAP1 PUSH2 0x3131 PUSH2 0x124 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x309 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x3179 PUSH2 0x3173 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST EQ PUSH2 0x311D JUMP JUMPDEST PUSH2 0x3188 DUP2 PUSH2 0x2EC6 JUMP JUMPDEST PUSH2 0x319A PUSH2 0x3194 PUSH0 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0x8F5 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x31A9 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x31B1 PUSH2 0x124 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x31E1 PUSH1 0x4 DUP3 ADD PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E DUP16 TIMESTAMP DUP4 PUSH26 0xA50962BD52B1F6207DD20A02C7A34B8A24B050E3063EF93458DC SELFBALANCE PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"4335:7247:49:-:0;;;;;;;;;-1:-1:-1;4335:7247:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4594:20::-;;;;;;:::i;:::-;;:::o;4335:7247::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4454:33::-;;;;;:::i;:::-;;:::o;4335:7247::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4494:37::-;;;;;;:::i;:::-;;:::o;4335:7247::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4538:49::-;;;;;;:::i;:::-;;:::o;4335:7247::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;4335:7247:49:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;2303:62:0;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4335:7247:49:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;5326:120::-;5410:28;5399:39;5326:120;5410:28;:::i;:::-;5399:39;;:::i;:::-;5326:120::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4335:7247:49:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;5197:121::-;5284:26;5268:42;5197:121;5284:26;:::i;:::-;5268:42;;:::i;:::-;5197:121::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4335:7247:49:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;5053:136::-;5148:33;5126:55;5053:136;5148:33;:::i;:::-;5126:55;;:::i;:::-;5053:136::o;:::-;;;;:::i;:::-;:::o;4335:7247::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;4335:7247:49;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;4623:422::-;4831:28;4820:39;4623:422;4726:10;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;4831:28;:::i;:::-;4820:39;;:::i;:::-;4903:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;4870:61;4886:45;4942:55;4903:27;4964:33;4903:27;;;;;4623:422;4886:45;;:::i;:::-;4870:61;;:::i;:::-;4964:33;:::i;:::-;4942:55;;:::i;:::-;5016:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5008:29;5016:21;;;;;4623:422;5008:29;;;:::i;:::-;4623:422::o;5016:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4903:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4623:422::-;;;;;:::i;:::-;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;4335:7247:49:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;4335:7247:49:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;4335:7247:49:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;4335:7247:49:-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;3217:103:6:-;;3282:1;3217:103;;;;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;4335:7247:49:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;8606:2241::-;;;;;;8832:31;8852:10;8832:31;:::i;:::-;8901:9;:18;;:16;:9;:16;:::i;:::-;;:18;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;8893:27;8901:18;;;;;8606:2241;8893:27;;:::i;:::-;8956:9;:18;;:16;:9;:16;:::i;:::-;;:18;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;9078:22;8956:18;8948:27;8956:18;;;;;8606:2241;8948:27;;:::i;:::-;9045:22;9018:16;;9032:1;9018:16;:::i;:::-;;:::i;:::-;9061:6;9045:22;:10;:22;9056:1;9045:22;:::i;:::-;;;:::i;:::-;;:::i;:::-;9078;:10;:22;9089:1;9078:22;:::i;:::-;;;:::i;:::-;;:::i;:::-;9140:16;;9154:1;9140:16;:::i;:::-;;:::i;:::-;9211:10;9197:32;9211:17;:10;:17;:::i;:::-;9197:32;:::i;:::-;9257:1;9245:13;9257:1;9245:13;:::i;:::-;9283:3;9260:1;:21;;9264:17;:10;:17;:::i;:::-;9260:21;:::i;:::-;;;:::i;:::-;;;;;9317:46;9324:10;9317:46;:31;:21;9324:13;;:10;9335:1;9324:13;;:::i;:::-;;:::i;:::-;9317:21;:::i;:::-;:31;:::i;:::-;;9357:4;9317:46;9349:13;9357:4;9349:13;:::i;:::-;9317:46;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;9283:3;9317:46;;9303:60;9317:46;;;;;9283:3;9303:8;:60;:8;9312:1;;9303:60;;;:::i;:::-;;:::i;:::-;9283:3;:::i;:::-;9245:13;;9317:46;9303:60;9317:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;9260:21::-;;;;;;;;;;;9411:41;;:26;:16;9418:8;9411:16;:::i;:::-;:26;:::i;:::-;;9446:4;9411:41;9438:13;9446:4;9438:13;:::i;:::-;9411:41;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;9240:135;9387:65;9472:10;9465:31;:18;9472:10;9465:18;:::i;:::-;:31;:::i;:::-;:65;:31;9497:10;;9517:4;9465:65;;9509:13;9517:4;9509:13;:::i;:::-;9524:5;9465:65;9524:5;9465:65;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;9240:135;9548:10;9541:54;:26;:18;9548:10;9541:18;:::i;:::-;:26;:::i;:::-;;9576:10;9589:5;9541:54;;9589:5;9541:54;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;9798:67;9541:54;;;9240:135;9608:28;9798:18;9608:28;;:::i;:::-;9665:1;9649:17;;9665:1;9649:17;:::i;:::-;;:10;:17;9660:1;9649:17;:::i;:::-;;;:::i;:::-;;:::i;:::-;9677;;9693:1;9677:17;:::i;:::-;;:10;:17;9688:1;9677:17;:::i;:::-;;;:::i;:::-;;:::i;:::-;9705;;9721:1;9705:17;:::i;:::-;;:10;:17;9716:1;9705:17;:::i;:::-;;;:::i;:::-;;:::i;:::-;9733;;9749:1;9733:17;:::i;:::-;;:10;:17;9744:1;9733:17;:::i;:::-;;;:::i;:::-;;:::i;:::-;9798:18;:::i;:::-;:67;;:18;:67;9824:13;9832:4;9824:13;:::i;:::-;9847:4;9839:13;9847:4;9839:13;:::i;:::-;9798:67;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;9240:135;9903:1;9878:26;9903:1;9878:26;:::i;:::-;9934:1;9922:13;9934:1;9922:13;:::i;:::-;9917:468;9960:3;9937:1;:21;;9941:17;:10;:17;:::i;:::-;9937:21;:::i;:::-;;;:::i;:::-;;;;;9984:13;;:10;9995:1;9984:13;;:::i;:::-;;:::i;:::-;:25;;10001:8;9984:25;:::i;:::-;;;:::i;:::-;;9980:394;;;;10043:46;;:31;:21;10050:13;;:10;10061:1;10050:13;;:::i;:::-;;:::i;:::-;10043:21;:::i;:::-;:31;:::i;:::-;;10083:4;10043:46;10075:13;10083:4;10075:13;:::i;:::-;10043:46;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10030:73;10043:46;10030:73;10043:60;9960:3;10043:46;;;10122:28;10043:46;;;;;9980:394;10092:8;:11;:8;:11;:8;:11;:::i;:::-;;:::i;:::-;10043:60;;:::i;:::-;10038:1;10030:73;;;:::i;:::-;;:::i;:::-;10140:10;;:7;10148:1;10140:10;;:::i;:::-;;:::i;:::-;10122:28;;:::i;:::-;9980:394;;9960:3;:::i;:::-;9922:13;;;10043:46;10092:11;10043:46;;;;;10092:11;10043:46;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;9980:394::-;10204:46;;:31;:21;10211:13;;:10;10222:1;10211:13;;:::i;:::-;;:::i;:::-;10204:21;:::i;:::-;:31;:::i;:::-;;10244:4;10204:46;10236:13;10244:4;10236:13;:::i;:::-;10204:46;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10191:73;10204:46;10191:73;10204:60;9960:3;10204:46;;;10283:75;10204:46;;;;;9980:394;10253:8;:11;:8;:11;:8;:11;:::i;:::-;;:::i;:::-;10204:60;;:::i;:::-;10199:1;10191:73;;;:::i;:::-;;:::i;:::-;10301:57;10307:13;;:10;10318:1;10307:13;;:::i;:::-;;:::i;:::-;10322:8;10332:10;;10322:8;;10332:7;:10;:::i;:::-;;:::i;:::-;10352:4;10344:13;10352:4;10344:13;:::i;:::-;10301:57;;:::i;:::-;10283:75;;:::i;:::-;9980:394;;;10204:46;10253:11;10204:46;;;;;10253:11;10204:46;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;9937:21::-;;;;;;;;;;;10420:41;;:26;:16;10427:8;10420:16;:::i;:::-;:26;:::i;:::-;;10455:4;10420:41;10447:13;10455:4;10447:13;:::i;:::-;10420:41;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10530:69;10420:41;10489:28;10420:41;;;;;9917:468;10397:64;10489:28;:::i;:::-;10538:14;:30;;:14;10556:12;10538:30;:::i;:::-;;;:::i;:::-;;;10530:69;:::i;:::-;10616:8;:17;;10628:5;;;:::i;:::-;10616:17;:::i;:::-;;;:::i;:::-;;10612:228;;;;10656:5;10650:21;:12;10656:5;;;:::i;:::-;10650:12;:::i;:::-;:21;:::i;:::-;;;10672:14;10650:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10702:42;10650:37;10702:26;:17;10650:37;;;;;;;;;;10612:228;10710:8;10702:17;:::i;:::-;:26;:::i;:::-;:42;;;;;10612:228;10702:42;;;;10612:228;8606:2241::o;10702:42::-;;:::i;:::-;;;;;10650:37;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;10612:228::-;10784:8;10777:25;:16;:51;10784:8;;10777:16;:::i;:::-;:25;:::i;:::-;:51;;:25;10803:8;10813:14;10777:51;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;10612:228;;;;10777:51;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;10420:41::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9798:67::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9541:54::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;9465:65::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;9411:41::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8956:18::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8901:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8606:2241::-;;;;;;;;:::i;:::-;:::o;3217:103:6:-;;;;;;;;:::i;:::-;3282:1;;:::i;:::-;3217:103::o;5583:3015:49:-;;;;;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2658:162::-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;8737:170:1;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2540:111:6:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;4335:7247:49:-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;5454:84:49:-;;;;:::i;:::-;:::o;4335:7247::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;4335:7247:49:-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;1812:36:6:-;1847:1;;;:::i;:::-;1812:36;:::o;1847:1::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3326:384::-;3410:28;;:::i;:::-;3526:9;;:1;:9;;:::i;:::-;:20;;3539:7;;:::i;:::-;3526:20;:::i;:::-;;;:::i;:::-;;3522:88;;3684:19;3696:7;3684:9;3696:7;;:::i;:::-;3684:1;:9;:19;:::i;:::-;3326:384::o;3522:88::-;3569:30;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1766:40;1805:1;;;:::i;:::-;1766:40;:::o;3716:283::-;3969:23;3799:28;;:::i;:::-;3969:9;3981:11;;:::i;:::-;3969:1;:9;:23;:::i;:::-;3716:283::o;4335:7247:49:-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;10855:724;;;;;11002:17;;:::i;:::-;11049:8;:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;10855:724;11032:38;11087:7;;:19;;11098:8;11087:19;:::i;:::-;;;:::i;:::-;;11083:67;;11162:23;:15;11169:7;11162:15;:::i;:::-;:23;:::i;:::-;:57;:23;11194:13;11186:22;11194:13;;;:::i;:::-;11186:22;:::i;:::-;11210:8;11162:57;;11210:8;11162:57;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;10855:724;11236:13;:24;:13;;;:::i;:::-;:24;:::i;:::-;:63;:24;11261:7;;11270:8;11236:63;;11270:8;11280;11236:63;11280:8;11290;11236:63;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;10855:724;11232:265;;;;;;;;;;;;;;;;;11507:37;11515:9;:13;;11527:1;11515:13;:::i;:::-;;;:::i;:::-;;11507:37;:::i;:::-;11555:16;:::o;11232:265::-;11412:73;:13;;;:73;:13;:73;;:13;:26;:13;;;:::i;:::-;:26;:::i;:::-;;;11439:7;11448:6;11456:8;11466;11476;11412:73;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;11232:265;11400:85;11232:265;;;;;;;11412:73;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11232:265::-;;;;;;;;;;11236:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;11162:57;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;11083:67::-;11130:8;;;;;;11123:15;:::o;11049:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;7084:141:1:-;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2657:183:6:-;2810:23;2772:28;;:::i;:::-;2810:9;2822:11;;:::i;:::-;2810:1;:9;:23;:::i;:::-;2657:183::o;:::-;;;:::i;:::-;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;4335:7247:49:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;2251:183:6;2355:73;2251:183;:::o;4335:7247:49:-;;;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4335:7247:49;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;4625:582::-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2565400","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","WETH9()":"2750","baluniHyperUniProxy()":"infinite","baluniSwapper()":"infinite","changeRegistry(address)":"infinite","changeSwapper(address)":"infinite","changeUniProxy(address)":"infinite","initialize(address,address)":"infinite","owner()":"2950","proxiableUUID()":"infinite","registry()":"infinite","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite","zapIn(address,address,uint256,uint256,address)":"infinite","zapOut(address,uint256,address,uint256,address)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_swap(address,address,uint256,address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","WETH9()":"4aa4a4fc","baluniHyperUniProxy()":"8af90292","baluniSwapper()":"7dfb7ea1","changeRegistry(address)":"15554c55","changeSwapper(address)":"3ebb287c","changeUniProxy(address)":"45b1cb80","initialize(address,address)":"485cc955","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registry()":"7b103999","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","zapIn(address,address,uint256,uint256,address)":"b487c54a","zapOut(address,uint256,address,uint256,address)":"b1aa8cd1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniHyperUniProxy\",\"outputs\":[{\"internalType\":\"contract IBaluniV1HyperUniProxy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniSwapper\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Swapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"changeRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_swapper\",\"type\":\"address\"}],\"name\":\"changeSwapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniProxy\",\"type\":\"address\"}],\"name\":\"changeUniProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_uniProxy\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hypervisor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountsOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"zapIn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hypervisor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"zapOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1HyperPoolZap.sol\":\"BaluniV1HyperPoolZap\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\nimport './pool/IUniswapV3PoolImmutables.sol';\\nimport './pool/IUniswapV3PoolState.sol';\\nimport './pool/IUniswapV3PoolDerivedState.sol';\\nimport './pool/IUniswapV3PoolActions.sol';\\nimport './pool/IUniswapV3PoolOwnerActions.sol';\\nimport './pool/IUniswapV3PoolEvents.sol';\\n\\n/// @title The interface for a Uniswap V3 Pool\\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\\n/// to the ERC20 specification\\n/// @dev The pool interface is broken up into many smaller pieces\\ninterface IUniswapV3Pool is\\n    IUniswapV3PoolImmutables,\\n    IUniswapV3PoolState,\\n    IUniswapV3PoolDerivedState,\\n    IUniswapV3PoolActions,\\n    IUniswapV3PoolOwnerActions,\\n    IUniswapV3PoolEvents\\n{\\n\\n}\\n\",\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissionless pool actions\\n/// @notice Contains pool methods that can be called by anyone\\ninterface IUniswapV3PoolActions {\\n    /// @notice Sets the initial price for the pool\\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\\n    function initialize(uint160 sqrtPriceX96) external;\\n\\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\\n    /// @param recipient The address for which the liquidity will be created\\n    /// @param tickLower The lower tick of the position in which to add liquidity\\n    /// @param tickUpper The upper tick of the position in which to add liquidity\\n    /// @param amount The amount of liquidity to mint\\n    /// @param data Any data that should be passed through to the callback\\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    function mint(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount,\\n        bytes calldata data\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects tokens owed to a position\\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\\n    /// @param recipient The address which should receive the fees collected\\n    /// @param tickLower The lower tick of the position for which to collect fees\\n    /// @param tickUpper The upper tick of the position for which to collect fees\\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n\\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\\n    /// @dev Fees must be collected separately via a call to #collect\\n    /// @param tickLower The lower tick of the position for which to burn liquidity\\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\\n    /// @param amount How much liquidity to burn\\n    /// @return amount0 The amount of token0 sent to the recipient\\n    /// @return amount1 The amount of token1 sent to the recipient\\n    function burn(\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Swap token0 for token1, or token1 for token0\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\\n    /// @param recipient The address to receive the output of the swap\\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\\n    /// @param data Any data to be passed through to the callback\\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\\n    function swap(\\n        address recipient,\\n        bool zeroForOne,\\n        int256 amountSpecified,\\n        uint160 sqrtPriceLimitX96,\\n        bytes calldata data\\n    ) external returns (int256 amount0, int256 amount1);\\n\\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\\n    /// @param recipient The address which will receive the token0 and token1 amounts\\n    /// @param amount0 The amount of token0 to send\\n    /// @param amount1 The amount of token1 to send\\n    /// @param data Any data to be passed through to the callback\\n    function flash(\\n        address recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        bytes calldata data\\n    ) external;\\n\\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\\n    /// the input observationCardinalityNext.\\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\\n}\\n\",\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that is not stored\\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\\n/// blockchain. The functions here may have variable gas costs.\\ninterface IUniswapV3PoolDerivedState {\\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\\n    /// you must call it with secondsAgos = [3600, 0].\\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\\n    /// timestamp\\n    function observe(uint32[] calldata secondsAgos)\\n        external\\n        view\\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\\n\\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\\n    /// snapshot is taken and the second snapshot is taken.\\n    /// @param tickLower The lower tick of the range\\n    /// @param tickUpper The upper tick of the range\\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\\n        external\\n        view\\n        returns (\\n            int56 tickCumulativeInside,\\n            uint160 secondsPerLiquidityInsideX128,\\n            uint32 secondsInside\\n        );\\n}\\n\",\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Events emitted by a pool\\n/// @notice Contains all events emitted by the pool\\ninterface IUniswapV3PoolEvents {\\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\\n\\n    /// @notice Emitted when liquidity is minted for a given position\\n    /// @param sender The address that minted the liquidity\\n    /// @param owner The owner of the position and recipient of any minted liquidity\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity minted to the position range\\n    /// @param amount0 How much token0 was required for the minted liquidity\\n    /// @param amount1 How much token1 was required for the minted liquidity\\n    event Mint(\\n        address sender,\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted when fees are collected by the owner of a position\\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\\n    /// @param owner The owner of the position for which fees are collected\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount0 The amount of token0 fees collected\\n    /// @param amount1 The amount of token1 fees collected\\n    event Collect(\\n        address indexed owner,\\n        address recipient,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount0,\\n        uint128 amount1\\n    );\\n\\n    /// @notice Emitted when a position's liquidity is removed\\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\\n    /// @param owner The owner of the position for which liquidity is removed\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity to remove\\n    /// @param amount0 The amount of token0 withdrawn\\n    /// @param amount1 The amount of token1 withdrawn\\n    event Burn(\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted by the pool for any swaps between token0 and token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the output of the swap\\n    /// @param amount0 The delta of the token0 balance of the pool\\n    /// @param amount1 The delta of the token1 balance of the pool\\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\\n    /// @param liquidity The liquidity of the pool after the swap\\n    /// @param tick The log base 1.0001 of price of the pool after the swap\\n    event Swap(\\n        address indexed sender,\\n        address indexed recipient,\\n        int256 amount0,\\n        int256 amount1,\\n        uint160 sqrtPriceX96,\\n        uint128 liquidity,\\n        int24 tick\\n    );\\n\\n    /// @notice Emitted by the pool for any flashes of token0/token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the tokens from flash\\n    /// @param amount0 The amount of token0 that was flashed\\n    /// @param amount1 The amount of token1 that was flashed\\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\\n    event Flash(\\n        address indexed sender,\\n        address indexed recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        uint256 paid0,\\n        uint256 paid1\\n    );\\n\\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\\n    /// just before a mint/swap/burn.\\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\\n    event IncreaseObservationCardinalityNext(\\n        uint16 observationCardinalityNextOld,\\n        uint16 observationCardinalityNextNew\\n    );\\n\\n    /// @notice Emitted when the protocol fee is changed by the pool\\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\\n\\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\\n    /// @param sender The address that collects the protocol fees\\n    /// @param recipient The address that receives the collected protocol fees\\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that never changes\\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\\ninterface IUniswapV3PoolImmutables {\\n    /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\\n    /// @return The contract address\\n    function factory() external view returns (address);\\n\\n    /// @notice The first of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token0() external view returns (address);\\n\\n    /// @notice The second of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token1() external view returns (address);\\n\\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\\n    /// @return The fee\\n    function fee() external view returns (uint24);\\n\\n    /// @notice The pool tick spacing\\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\\n    /// This value is an int24 to avoid casting even though it is always positive.\\n    /// @return The tick spacing\\n    function tickSpacing() external view returns (int24);\\n\\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\\n    /// @return The max amount of liquidity per tick\\n    function maxLiquidityPerTick() external view returns (uint128);\\n}\\n\",\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissioned pool actions\\n/// @notice Contains pool methods that may only be called by the factory owner\\ninterface IUniswapV3PoolOwnerActions {\\n    /// @notice Set the denominator of the protocol's % share of the fees\\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\\n\\n    /// @notice Collect the protocol fee accrued to the pool\\n    /// @param recipient The address to which collected protocol fees should be sent\\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\\n    /// @return amount0 The protocol fee collected in token0\\n    /// @return amount1 The protocol fee collected in token1\\n    function collectProtocol(\\n        address recipient,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that can change\\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\\n/// per transaction\\ninterface IUniswapV3PoolState {\\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\\n    /// when accessed externally.\\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\\n    /// boundary.\\n    /// observationIndex The index of the last oracle observation that was written,\\n    /// observationCardinality The current maximum number of observations stored in the pool,\\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\\n    /// feeProtocol The protocol fee for both tokens of the pool.\\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\\n    /// unlocked Whether the pool is currently locked to reentrancy\\n    function slot0()\\n        external\\n        view\\n        returns (\\n            uint160 sqrtPriceX96,\\n            int24 tick,\\n            uint16 observationIndex,\\n            uint16 observationCardinality,\\n            uint16 observationCardinalityNext,\\n            uint8 feeProtocol,\\n            bool unlocked\\n        );\\n\\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal0X128() external view returns (uint256);\\n\\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal1X128() external view returns (uint256);\\n\\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\\n    /// @dev Protocol fees will never exceed uint128 max in either token\\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\\n\\n    /// @notice The currently in range liquidity available to the pool\\n    /// @dev This value has no relationship to the total liquidity across all ticks\\n    function liquidity() external view returns (uint128);\\n\\n    /// @notice Look up information about a specific tick in the pool\\n    /// @param tick The tick to look up\\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\\n    /// tick upper,\\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\\n    /// a specific position.\\n    function ticks(int24 tick)\\n        external\\n        view\\n        returns (\\n            uint128 liquidityGross,\\n            int128 liquidityNet,\\n            uint256 feeGrowthOutside0X128,\\n            uint256 feeGrowthOutside1X128,\\n            int56 tickCumulativeOutside,\\n            uint160 secondsPerLiquidityOutsideX128,\\n            uint32 secondsOutside,\\n            bool initialized\\n        );\\n\\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\\n\\n    /// @notice Returns the information about a position by the position's key\\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\\n    /// @return _liquidity The amount of liquidity in the position,\\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\\n    function positions(bytes32 key)\\n        external\\n        view\\n        returns (\\n            uint128 _liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    /// @notice Returns data about a specific observation index\\n    /// @param index The element of the observations array to fetch\\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\\n    /// ago, rather than at a specific index in the array.\\n    /// @return blockTimestamp The timestamp of the observation,\\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\\n    function observations(uint256 index)\\n        external\\n        view\\n        returns (\\n            uint32 blockTimestamp,\\n            int56 tickCumulative,\\n            uint160 secondsPerLiquidityCumulativeX128,\\n            bool initialized\\n        );\\n}\\n\",\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/IBaluniV1HyperUniProxy.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\ninterface IBaluniV1HyperUniProxy {\\r\\n    function deposit(\\r\\n        uint256 deposit0,\\r\\n        uint256 deposit1,\\r\\n        address to,\\r\\n        address from,\\r\\n        address pos\\r\\n    ) external returns (uint256 shares);\\r\\n\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function clearance() external returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x02f2efa00b8f693dba548171d226f6c916414083906b7ab8c3a8d2ebdb5f4470\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1HyperPoolZap.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1HyperUniProxy.sol';\\r\\n\\r\\ninterface IClearingV2 {\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function applyRatio(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 total0,\\r\\n        uint256 total1\\r\\n    ) external view returns (uint256 ratioStart, uint256 ratioEnd);\\r\\n}\\r\\n\\r\\ninterface IBaluniV1Hypervisor {\\r\\n    function deposit(uint256, uint256, address, address, uint256[4] memory minIn) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256, address, address, uint256[4] memory) external returns (uint256, uint256);\\r\\n\\r\\n    function compound()\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function compound(\\r\\n        uint256[4] memory inMin\\r\\n    )\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function rebalance(\\r\\n        int24 _baseLower,\\r\\n        int24 _baseUpper,\\r\\n        int24 _limitLower,\\r\\n        int24 _limitUpper,\\r\\n        address _feeRecipient,\\r\\n        uint256[4] memory minIn,\\r\\n        uint256[4] memory outMin\\r\\n    ) external;\\r\\n\\r\\n    function addBaseLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function addLimitLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function pullLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint128 shares,\\r\\n        uint256[2] memory amountMin\\r\\n    ) external returns (uint256 base0, uint256 base1);\\r\\n\\r\\n    function pullLiquidity(\\r\\n        uint256 shares,\\r\\n        uint256[4] memory minAmounts\\r\\n    ) external returns (uint256 base0, uint256 base1, uint256 limit0, uint256 limit1);\\r\\n\\r\\n    function addLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint256 amount0,\\r\\n        uint256 amount1,\\r\\n        uint256[2] memory inMin\\r\\n    ) external;\\r\\n\\r\\n    function pool() external view returns (IUniswapV3Pool);\\r\\n\\r\\n    function currentTick() external view returns (int24 tick);\\r\\n\\r\\n    function tickSpacing() external view returns (int24 spacing);\\r\\n\\r\\n    function baseLower() external view returns (int24 tick);\\r\\n\\r\\n    function baseUpper() external view returns (int24 tick);\\r\\n\\r\\n    function limitLower() external view returns (int24 tick);\\r\\n\\r\\n    function limitUpper() external view returns (int24 tick);\\r\\n\\r\\n    function token0() external view returns (IERC20);\\r\\n\\r\\n    function token1() external view returns (IERC20);\\r\\n\\r\\n    function deposit0Max() external view returns (uint256);\\r\\n\\r\\n    function deposit1Max() external view returns (uint256);\\r\\n\\r\\n    function balanceOf(address) external view returns (uint256);\\r\\n\\r\\n    function approve(address, uint256) external returns (bool);\\r\\n\\r\\n    function transferFrom(address, address, uint256) external returns (bool);\\r\\n\\r\\n    function transfer(address, uint256) external returns (bool);\\r\\n\\r\\n    function getTotalAmounts() external view returns (uint256 total0, uint256 total1);\\r\\n\\r\\n    function getBasePosition() external view returns (uint256 liquidity, uint256 total0, uint256 total1);\\r\\n\\r\\n    function totalSupply() external view returns (uint256);\\r\\n\\r\\n    function setWhitelist(address _address) external;\\r\\n\\r\\n    function setFee(uint8 newFee) external;\\r\\n\\r\\n    function removeWhitelisted() external;\\r\\n\\r\\n    function transferOwnership(address newOwner) external;\\r\\n\\r\\n    function toggleDirectDeposit() external;\\r\\n}\\r\\n\\r\\ninterface IWETH {\\r\\n    function deposit() external payable;\\r\\n    function withdraw(uint wad) external;\\r\\n}\\r\\n\\r\\ncontract BaluniV1HyperPoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n    IBaluniV1Swapper public baluniSwapper;\\r\\n    IBaluniV1HyperUniProxy public baluniHyperUniProxy;\\r\\n    address public WETH9;\\r\\n\\r\\n    function initialize(address _registry, address _uniProxy) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ReentrancyGuard_init();\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\\r\\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\\r\\n        WETH9 = registry.getWNATIVE();\\r\\n    }\\r\\n\\r\\n    function changeUniProxy(address _uniProxy) external onlyOwner {\\r\\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\\r\\n    }\\r\\n\\r\\n    function changeSwapper(address _swapper) external onlyOwner {\\r\\n        baluniSwapper = IBaluniV1Swapper(_swapper);\\r\\n    }\\r\\n\\r\\n    function changeRegistry(address _registry) external onlyOwner {\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    receive() external payable {}\\r\\n\\r\\n    function zapIn(\\r\\n        address hypervisor,\\r\\n        address tokenIn,\\r\\n        uint256 amountIn,\\r\\n        uint256 minAmountsOut,\\r\\n        address receiver\\r\\n    ) external payable nonReentrant {\\r\\n        // IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\\r\\n        // address token0 = address(hyperPool.token0());\\r\\n        // address token1 = address(hyperPool.token1());\\r\\n        // address[] memory poolAssets = new address[](2);\\r\\n        // poolAssets[0] = token0;\\r\\n        // poolAssets[1] = token1;\\r\\n        // uint256[] memory amounts = new uint256[](2);\\r\\n        // if (tokenIn == address(0)) {\\r\\n        //     require(msg.value == amountIn, 'Incorrect ETH amount');\\r\\n        //     IWETH(WETH9).deposit{value: amountIn}();\\r\\n        //     tokenIn = WETH9;\\r\\n        // } else {\\r\\n        //     IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\r\\n        // }\\r\\n        // // Ottieni i rapporti di deposito utilizzando il contratto ClearingV2\\r\\n        // IClearingV2 clearingV2 = IClearingV2(baluniHyperUniProxy.clearance());\\r\\n        // (uint256 amount1Min, uint256 amount1Max) = clearingV2.getDepositAmount(hypervisor, token0, amountIn);\\r\\n        // (uint256 amount0Min, uint256 amount0Max) = clearingV2.getDepositAmount(hypervisor, token1, amountIn);\\r\\n        // // Calcola gli importi effettivi da depositare\\r\\n        // uint256 amount0 = amount0Min;\\r\\n        // uint256 amount1 = (amount1Min + amount1Max) / 2;\\r\\n        // // Verifica che gli importi siano sufficienti per il deposito\\r\\n        // require(amount0 > 0 && amount1 > 0, 'Calculated amounts are insufficient');\\r\\n        // // Swap per ottenere i token necessari\\r\\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n        //     if (tokenIn == poolAssets[i]) {\\r\\n        //         amounts[i] = (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1);\\r\\n        //     } else {\\r\\n        //         amounts[i] = _swap(\\r\\n        //             tokenIn,\\r\\n        //             poolAssets[i],\\r\\n        //             (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1),\\r\\n        //             address(this)\\r\\n        //         );\\r\\n        //         require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\\r\\n        //     }\\r\\n        // }\\r\\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n        //     IERC20(poolAssets[i]).approve(address(baluniHyperUniProxy), amounts[i]);\\r\\n        //     IERC20(poolAssets[i]).approve(address(hypervisor), amounts[i]);\\r\\n        // }\\r\\n        // require(amounts[0] > 0 && amounts[1] > 0, 'Insufficient amounts');\\r\\n        // // Verifica dei bilanci dei token\\r\\n        // require(IERC20(token0).balanceOf(address(this)) >= amounts[0], 'Insufficient token0 balance');\\r\\n        // require(IERC20(token1).balanceOf(address(this)) >= amounts[1], 'Insufficient token1 balance');\\r\\n        // // Deposita i token nel proxy\\r\\n        // baluniHyperUniProxy.deposit(amounts[0], amounts[1], receiver, address(this), hypervisor);\\r\\n    }\\r\\n\\r\\n    function zapOut(\\r\\n        address hypervisor,\\r\\n        uint256 share,\\r\\n        address tokenOut,\\r\\n        uint256 minAmountOut,\\r\\n        address receiver\\r\\n    ) external nonReentrant {\\r\\n        IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\\r\\n\\r\\n        address token0 = address(hyperPool.token0());\\r\\n        address token1 = address(hyperPool.token1());\\r\\n\\r\\n        address[] memory poolAssets = new address[](2);\\r\\n        poolAssets[0] = token0;\\r\\n        poolAssets[1] = token1;\\r\\n\\r\\n        uint256[] memory amounts = new uint256[](2);\\r\\n\\r\\n        uint256[] memory balances = new uint256[](poolAssets.length);\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\\r\\n\\r\\n        IERC20(hypervisor).transferFrom(msg.sender, address(this), share);\\r\\n        IERC20(hypervisor).approve(address(hypervisor), share);\\r\\n\\r\\n        uint256[4] memory minAmounts;\\r\\n\\r\\n        minAmounts[0] = 0;\\r\\n        minAmounts[1] = 0;\\r\\n        minAmounts[2] = 0;\\r\\n        minAmounts[3] = 0;\\r\\n\\r\\n        // Withdraw from the pool\\r\\n        hyperPool.withdraw(share, address(this), address(this), minAmounts);\\r\\n\\r\\n        uint256 totalAmountOut = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (poolAssets[i] == tokenOut) {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += amounts[i];\\r\\n            } else {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], address(this));\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\\r\\n        totalAmountOut = balanceAfter - balanceBefore;\\r\\n\\r\\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\\r\\n\\r\\n        if (tokenOut == WETH9) {\\r\\n            IWETH(WETH9).withdraw(totalAmountOut);\\r\\n            payable(receiver).transfer(totalAmountOut);\\r\\n        } else {\\r\\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    function _swap(\\r\\n        address tokenIn,\\r\\n        address tokenOut,\\r\\n        uint256 amountIn,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address WMATIC = registry.getWNATIVE();\\r\\n\\r\\n        if (tokenIn == tokenOut) {\\r\\n            return amountIn;\\r\\n        }\\r\\n\\r\\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\\r\\n\\r\\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\\r\\n            amountOut = _amountOut;\\r\\n        } catch {\\r\\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\\r\\n        }\\r\\n        require(amountOut > 0, 'Swap failed');\\r\\n        return amountOut;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x2f901e80278f3571a5082525d942c54cec110d1970704fe4af66c1985b44b17e\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":6954,"contract":"contracts/managers/BaluniV1HyperPoolZap.sol:BaluniV1HyperPoolZap","label":"registry","offset":0,"slot":"0","type":"t_contract(IBaluniV1Registry)4909"},{"astId":6957,"contract":"contracts/managers/BaluniV1HyperPoolZap.sol:BaluniV1HyperPoolZap","label":"baluniSwapper","offset":0,"slot":"1","type":"t_contract(IBaluniV1Swapper)5208"},{"astId":6960,"contract":"contracts/managers/BaluniV1HyperPoolZap.sol:BaluniV1HyperPoolZap","label":"baluniHyperUniProxy","offset":0,"slot":"2","type":"t_contract(IBaluniV1HyperUniProxy)3924"},{"astId":6962,"contract":"contracts/managers/BaluniV1HyperPoolZap.sol:BaluniV1HyperPoolZap","label":"WETH9","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_contract(IBaluniV1HyperUniProxy)3924":{"encoding":"inplace","label":"contract IBaluniV1HyperUniProxy","numberOfBytes":"20"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_contract(IBaluniV1Swapper)5208":{"encoding":"inplace","label":"contract IBaluniV1Swapper","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}},"IBaluniV1Hypervisor":{"abi":[{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256[2]","name":"minIn","type":"uint256[2]"}],"name":"addBaseLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256[2]","name":"minIn","type":"uint256[2]"}],"name":"addLimitLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256[2]","name":"inMin","type":"uint256[2]"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","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":"baseLower","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseUpper","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[4]","name":"inMin","type":"uint256[4]"}],"name":"compound","outputs":[{"internalType":"uint128","name":"baseToken0Owed","type":"uint128"},{"internalType":"uint128","name":"baseToken1Owed","type":"uint128"},{"internalType":"uint128","name":"limitToken0Owed","type":"uint128"},{"internalType":"uint128","name":"limitToken1Owed","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[{"internalType":"uint128","name":"baseToken0Owed","type":"uint128"},{"internalType":"uint128","name":"baseToken1Owed","type":"uint128"},{"internalType":"uint128","name":"limitToken0Owed","type":"uint128"},{"internalType":"uint128","name":"limitToken1Owed","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentTick","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[4]","name":"minIn","type":"uint256[4]"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit0Max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit1Max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBasePosition","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"total0","type":"uint256"},{"internalType":"uint256","name":"total1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAmounts","outputs":[{"internalType":"uint256","name":"total0","type":"uint256"},{"internalType":"uint256","name":"total1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitLower","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitUpper","outputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"contract IUniswapV3Pool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256[4]","name":"minAmounts","type":"uint256[4]"}],"name":"pullLiquidity","outputs":[{"internalType":"uint256","name":"base0","type":"uint256"},{"internalType":"uint256","name":"base1","type":"uint256"},{"internalType":"uint256","name":"limit0","type":"uint256"},{"internalType":"uint256","name":"limit1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"shares","type":"uint128"},{"internalType":"uint256[2]","name":"amountMin","type":"uint256[2]"}],"name":"pullLiquidity","outputs":[{"internalType":"uint256","name":"base0","type":"uint256"},{"internalType":"uint256","name":"base1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int24","name":"_baseLower","type":"int24"},{"internalType":"int24","name":"_baseUpper","type":"int24"},{"internalType":"int24","name":"_limitLower","type":"int24"},{"internalType":"int24","name":"_limitUpper","type":"int24"},{"internalType":"address","name":"_feeRecipient","type":"address"},{"internalType":"uint256[4]","name":"minIn","type":"uint256[4]"},{"internalType":"uint256[4]","name":"outMin","type":"uint256[4]"}],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newFee","type":"uint8"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"spacing","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleDirectDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[4]","name":"","type":"uint256[4]"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"addBaseLiquidity(uint256,uint256,uint256[2])":"2527aa1d","addLimitLiquidity(uint256,uint256,uint256[2])":"49e8f1c2","addLiquidity(int24,int24,uint256,uint256,uint256[2])":"63e96836","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseLower()":"fa082743","baseUpper()":"888a9134","compound()":"f69e2046","compound(uint256[4])":"513ea884","currentTick()":"065e5360","deposit(uint256,uint256,address,address,uint256[4])":"8e3c92e4","deposit0Max()":"648cab85","deposit1Max()":"4d461fbb","getBasePosition()":"d2eabcfc","getTotalAmounts()":"c4a7761e","limitLower()":"51e87af7","limitUpper()":"0f35bcac","pool()":"16f0115b","pullLiquidity(int24,int24,uint128,uint256[2])":"95235656","pullLiquidity(uint256,uint256[4])":"1bead8f3","rebalance(int24,int24,int24,int24,address,uint256[4],uint256[4])":"85919c5d","removeWhitelisted()":"c5241e29","setFee(uint8)":"cb122a09","setWhitelist(address)":"854cff2f","tickSpacing()":"d0c93a7c","toggleDirectDeposit()":"b1a3d533","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","withdraw(uint256,address,address,uint256[4])":"a8559872"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"minIn\",\"type\":\"uint256[2]\"}],\"name\":\"addBaseLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"minIn\",\"type\":\"uint256[2]\"}],\"name\":\"addLimitLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"inMin\",\"type\":\"uint256[2]\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"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\":\"baseLower\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseUpper\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"inMin\",\"type\":\"uint256[4]\"}],\"name\":\"compound\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"baseToken0Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"baseToken1Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"limitToken0Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"limitToken1Owed\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"compound\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"baseToken0Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"baseToken1Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"limitToken0Owed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"limitToken1Owed\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentTick\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"minIn\",\"type\":\"uint256[4]\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit0Max\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit1Max\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasePosition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitLower\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitUpper\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256[4]\",\"name\":\"minAmounts\",\"type\":\"uint256[4]\"}],\"name\":\"pullLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"base0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"base1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"shares\",\"type\":\"uint128\"},{\"internalType\":\"uint256[2]\",\"name\":\"amountMin\",\"type\":\"uint256[2]\"}],\"name\":\"pullLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"base0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"base1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"_baseLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"_baseUpper\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"_limitLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"_limitUpper\",\"type\":\"int24\"},{\"internalType\":\"address\",\"name\":\"_feeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"minIn\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[4]\",\"name\":\"outMin\",\"type\":\"uint256[4]\"}],\"name\":\"rebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeWhitelisted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newFee\",\"type\":\"uint8\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"spacing\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleDirectDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"\",\"type\":\"uint256[4]\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1HyperPoolZap.sol\":\"IBaluniV1Hypervisor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\nimport './pool/IUniswapV3PoolImmutables.sol';\\nimport './pool/IUniswapV3PoolState.sol';\\nimport './pool/IUniswapV3PoolDerivedState.sol';\\nimport './pool/IUniswapV3PoolActions.sol';\\nimport './pool/IUniswapV3PoolOwnerActions.sol';\\nimport './pool/IUniswapV3PoolEvents.sol';\\n\\n/// @title The interface for a Uniswap V3 Pool\\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\\n/// to the ERC20 specification\\n/// @dev The pool interface is broken up into many smaller pieces\\ninterface IUniswapV3Pool is\\n    IUniswapV3PoolImmutables,\\n    IUniswapV3PoolState,\\n    IUniswapV3PoolDerivedState,\\n    IUniswapV3PoolActions,\\n    IUniswapV3PoolOwnerActions,\\n    IUniswapV3PoolEvents\\n{\\n\\n}\\n\",\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissionless pool actions\\n/// @notice Contains pool methods that can be called by anyone\\ninterface IUniswapV3PoolActions {\\n    /// @notice Sets the initial price for the pool\\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\\n    function initialize(uint160 sqrtPriceX96) external;\\n\\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\\n    /// @param recipient The address for which the liquidity will be created\\n    /// @param tickLower The lower tick of the position in which to add liquidity\\n    /// @param tickUpper The upper tick of the position in which to add liquidity\\n    /// @param amount The amount of liquidity to mint\\n    /// @param data Any data that should be passed through to the callback\\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    function mint(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount,\\n        bytes calldata data\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects tokens owed to a position\\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\\n    /// @param recipient The address which should receive the fees collected\\n    /// @param tickLower The lower tick of the position for which to collect fees\\n    /// @param tickUpper The upper tick of the position for which to collect fees\\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n\\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\\n    /// @dev Fees must be collected separately via a call to #collect\\n    /// @param tickLower The lower tick of the position for which to burn liquidity\\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\\n    /// @param amount How much liquidity to burn\\n    /// @return amount0 The amount of token0 sent to the recipient\\n    /// @return amount1 The amount of token1 sent to the recipient\\n    function burn(\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Swap token0 for token1, or token1 for token0\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\\n    /// @param recipient The address to receive the output of the swap\\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\\n    /// @param data Any data to be passed through to the callback\\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\\n    function swap(\\n        address recipient,\\n        bool zeroForOne,\\n        int256 amountSpecified,\\n        uint160 sqrtPriceLimitX96,\\n        bytes calldata data\\n    ) external returns (int256 amount0, int256 amount1);\\n\\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\\n    /// @param recipient The address which will receive the token0 and token1 amounts\\n    /// @param amount0 The amount of token0 to send\\n    /// @param amount1 The amount of token1 to send\\n    /// @param data Any data to be passed through to the callback\\n    function flash(\\n        address recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        bytes calldata data\\n    ) external;\\n\\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\\n    /// the input observationCardinalityNext.\\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\\n}\\n\",\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that is not stored\\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\\n/// blockchain. The functions here may have variable gas costs.\\ninterface IUniswapV3PoolDerivedState {\\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\\n    /// you must call it with secondsAgos = [3600, 0].\\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\\n    /// timestamp\\n    function observe(uint32[] calldata secondsAgos)\\n        external\\n        view\\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\\n\\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\\n    /// snapshot is taken and the second snapshot is taken.\\n    /// @param tickLower The lower tick of the range\\n    /// @param tickUpper The upper tick of the range\\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\\n        external\\n        view\\n        returns (\\n            int56 tickCumulativeInside,\\n            uint160 secondsPerLiquidityInsideX128,\\n            uint32 secondsInside\\n        );\\n}\\n\",\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Events emitted by a pool\\n/// @notice Contains all events emitted by the pool\\ninterface IUniswapV3PoolEvents {\\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\\n\\n    /// @notice Emitted when liquidity is minted for a given position\\n    /// @param sender The address that minted the liquidity\\n    /// @param owner The owner of the position and recipient of any minted liquidity\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity minted to the position range\\n    /// @param amount0 How much token0 was required for the minted liquidity\\n    /// @param amount1 How much token1 was required for the minted liquidity\\n    event Mint(\\n        address sender,\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted when fees are collected by the owner of a position\\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\\n    /// @param owner The owner of the position for which fees are collected\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount0 The amount of token0 fees collected\\n    /// @param amount1 The amount of token1 fees collected\\n    event Collect(\\n        address indexed owner,\\n        address recipient,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount0,\\n        uint128 amount1\\n    );\\n\\n    /// @notice Emitted when a position's liquidity is removed\\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\\n    /// @param owner The owner of the position for which liquidity is removed\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity to remove\\n    /// @param amount0 The amount of token0 withdrawn\\n    /// @param amount1 The amount of token1 withdrawn\\n    event Burn(\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted by the pool for any swaps between token0 and token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the output of the swap\\n    /// @param amount0 The delta of the token0 balance of the pool\\n    /// @param amount1 The delta of the token1 balance of the pool\\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\\n    /// @param liquidity The liquidity of the pool after the swap\\n    /// @param tick The log base 1.0001 of price of the pool after the swap\\n    event Swap(\\n        address indexed sender,\\n        address indexed recipient,\\n        int256 amount0,\\n        int256 amount1,\\n        uint160 sqrtPriceX96,\\n        uint128 liquidity,\\n        int24 tick\\n    );\\n\\n    /// @notice Emitted by the pool for any flashes of token0/token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the tokens from flash\\n    /// @param amount0 The amount of token0 that was flashed\\n    /// @param amount1 The amount of token1 that was flashed\\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\\n    event Flash(\\n        address indexed sender,\\n        address indexed recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        uint256 paid0,\\n        uint256 paid1\\n    );\\n\\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\\n    /// just before a mint/swap/burn.\\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\\n    event IncreaseObservationCardinalityNext(\\n        uint16 observationCardinalityNextOld,\\n        uint16 observationCardinalityNextNew\\n    );\\n\\n    /// @notice Emitted when the protocol fee is changed by the pool\\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\\n\\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\\n    /// @param sender The address that collects the protocol fees\\n    /// @param recipient The address that receives the collected protocol fees\\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that never changes\\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\\ninterface IUniswapV3PoolImmutables {\\n    /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\\n    /// @return The contract address\\n    function factory() external view returns (address);\\n\\n    /// @notice The first of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token0() external view returns (address);\\n\\n    /// @notice The second of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token1() external view returns (address);\\n\\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\\n    /// @return The fee\\n    function fee() external view returns (uint24);\\n\\n    /// @notice The pool tick spacing\\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\\n    /// This value is an int24 to avoid casting even though it is always positive.\\n    /// @return The tick spacing\\n    function tickSpacing() external view returns (int24);\\n\\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\\n    /// @return The max amount of liquidity per tick\\n    function maxLiquidityPerTick() external view returns (uint128);\\n}\\n\",\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissioned pool actions\\n/// @notice Contains pool methods that may only be called by the factory owner\\ninterface IUniswapV3PoolOwnerActions {\\n    /// @notice Set the denominator of the protocol's % share of the fees\\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\\n\\n    /// @notice Collect the protocol fee accrued to the pool\\n    /// @param recipient The address to which collected protocol fees should be sent\\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\\n    /// @return amount0 The protocol fee collected in token0\\n    /// @return amount1 The protocol fee collected in token1\\n    function collectProtocol(\\n        address recipient,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that can change\\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\\n/// per transaction\\ninterface IUniswapV3PoolState {\\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\\n    /// when accessed externally.\\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\\n    /// boundary.\\n    /// observationIndex The index of the last oracle observation that was written,\\n    /// observationCardinality The current maximum number of observations stored in the pool,\\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\\n    /// feeProtocol The protocol fee for both tokens of the pool.\\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\\n    /// unlocked Whether the pool is currently locked to reentrancy\\n    function slot0()\\n        external\\n        view\\n        returns (\\n            uint160 sqrtPriceX96,\\n            int24 tick,\\n            uint16 observationIndex,\\n            uint16 observationCardinality,\\n            uint16 observationCardinalityNext,\\n            uint8 feeProtocol,\\n            bool unlocked\\n        );\\n\\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal0X128() external view returns (uint256);\\n\\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal1X128() external view returns (uint256);\\n\\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\\n    /// @dev Protocol fees will never exceed uint128 max in either token\\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\\n\\n    /// @notice The currently in range liquidity available to the pool\\n    /// @dev This value has no relationship to the total liquidity across all ticks\\n    function liquidity() external view returns (uint128);\\n\\n    /// @notice Look up information about a specific tick in the pool\\n    /// @param tick The tick to look up\\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\\n    /// tick upper,\\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\\n    /// a specific position.\\n    function ticks(int24 tick)\\n        external\\n        view\\n        returns (\\n            uint128 liquidityGross,\\n            int128 liquidityNet,\\n            uint256 feeGrowthOutside0X128,\\n            uint256 feeGrowthOutside1X128,\\n            int56 tickCumulativeOutside,\\n            uint160 secondsPerLiquidityOutsideX128,\\n            uint32 secondsOutside,\\n            bool initialized\\n        );\\n\\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\\n\\n    /// @notice Returns the information about a position by the position's key\\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\\n    /// @return _liquidity The amount of liquidity in the position,\\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\\n    function positions(bytes32 key)\\n        external\\n        view\\n        returns (\\n            uint128 _liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    /// @notice Returns data about a specific observation index\\n    /// @param index The element of the observations array to fetch\\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\\n    /// ago, rather than at a specific index in the array.\\n    /// @return blockTimestamp The timestamp of the observation,\\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\\n    function observations(uint256 index)\\n        external\\n        view\\n        returns (\\n            uint32 blockTimestamp,\\n            int56 tickCumulative,\\n            uint160 secondsPerLiquidityCumulativeX128,\\n            bool initialized\\n        );\\n}\\n\",\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/IBaluniV1HyperUniProxy.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\ninterface IBaluniV1HyperUniProxy {\\r\\n    function deposit(\\r\\n        uint256 deposit0,\\r\\n        uint256 deposit1,\\r\\n        address to,\\r\\n        address from,\\r\\n        address pos\\r\\n    ) external returns (uint256 shares);\\r\\n\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function clearance() external returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x02f2efa00b8f693dba548171d226f6c916414083906b7ab8c3a8d2ebdb5f4470\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1HyperPoolZap.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1HyperUniProxy.sol';\\r\\n\\r\\ninterface IClearingV2 {\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function applyRatio(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 total0,\\r\\n        uint256 total1\\r\\n    ) external view returns (uint256 ratioStart, uint256 ratioEnd);\\r\\n}\\r\\n\\r\\ninterface IBaluniV1Hypervisor {\\r\\n    function deposit(uint256, uint256, address, address, uint256[4] memory minIn) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256, address, address, uint256[4] memory) external returns (uint256, uint256);\\r\\n\\r\\n    function compound()\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function compound(\\r\\n        uint256[4] memory inMin\\r\\n    )\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function rebalance(\\r\\n        int24 _baseLower,\\r\\n        int24 _baseUpper,\\r\\n        int24 _limitLower,\\r\\n        int24 _limitUpper,\\r\\n        address _feeRecipient,\\r\\n        uint256[4] memory minIn,\\r\\n        uint256[4] memory outMin\\r\\n    ) external;\\r\\n\\r\\n    function addBaseLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function addLimitLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function pullLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint128 shares,\\r\\n        uint256[2] memory amountMin\\r\\n    ) external returns (uint256 base0, uint256 base1);\\r\\n\\r\\n    function pullLiquidity(\\r\\n        uint256 shares,\\r\\n        uint256[4] memory minAmounts\\r\\n    ) external returns (uint256 base0, uint256 base1, uint256 limit0, uint256 limit1);\\r\\n\\r\\n    function addLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint256 amount0,\\r\\n        uint256 amount1,\\r\\n        uint256[2] memory inMin\\r\\n    ) external;\\r\\n\\r\\n    function pool() external view returns (IUniswapV3Pool);\\r\\n\\r\\n    function currentTick() external view returns (int24 tick);\\r\\n\\r\\n    function tickSpacing() external view returns (int24 spacing);\\r\\n\\r\\n    function baseLower() external view returns (int24 tick);\\r\\n\\r\\n    function baseUpper() external view returns (int24 tick);\\r\\n\\r\\n    function limitLower() external view returns (int24 tick);\\r\\n\\r\\n    function limitUpper() external view returns (int24 tick);\\r\\n\\r\\n    function token0() external view returns (IERC20);\\r\\n\\r\\n    function token1() external view returns (IERC20);\\r\\n\\r\\n    function deposit0Max() external view returns (uint256);\\r\\n\\r\\n    function deposit1Max() external view returns (uint256);\\r\\n\\r\\n    function balanceOf(address) external view returns (uint256);\\r\\n\\r\\n    function approve(address, uint256) external returns (bool);\\r\\n\\r\\n    function transferFrom(address, address, uint256) external returns (bool);\\r\\n\\r\\n    function transfer(address, uint256) external returns (bool);\\r\\n\\r\\n    function getTotalAmounts() external view returns (uint256 total0, uint256 total1);\\r\\n\\r\\n    function getBasePosition() external view returns (uint256 liquidity, uint256 total0, uint256 total1);\\r\\n\\r\\n    function totalSupply() external view returns (uint256);\\r\\n\\r\\n    function setWhitelist(address _address) external;\\r\\n\\r\\n    function setFee(uint8 newFee) external;\\r\\n\\r\\n    function removeWhitelisted() external;\\r\\n\\r\\n    function transferOwnership(address newOwner) external;\\r\\n\\r\\n    function toggleDirectDeposit() external;\\r\\n}\\r\\n\\r\\ninterface IWETH {\\r\\n    function deposit() external payable;\\r\\n    function withdraw(uint wad) external;\\r\\n}\\r\\n\\r\\ncontract BaluniV1HyperPoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n    IBaluniV1Swapper public baluniSwapper;\\r\\n    IBaluniV1HyperUniProxy public baluniHyperUniProxy;\\r\\n    address public WETH9;\\r\\n\\r\\n    function initialize(address _registry, address _uniProxy) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ReentrancyGuard_init();\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\\r\\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\\r\\n        WETH9 = registry.getWNATIVE();\\r\\n    }\\r\\n\\r\\n    function changeUniProxy(address _uniProxy) external onlyOwner {\\r\\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\\r\\n    }\\r\\n\\r\\n    function changeSwapper(address _swapper) external onlyOwner {\\r\\n        baluniSwapper = IBaluniV1Swapper(_swapper);\\r\\n    }\\r\\n\\r\\n    function changeRegistry(address _registry) external onlyOwner {\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    receive() external payable {}\\r\\n\\r\\n    function zapIn(\\r\\n        address hypervisor,\\r\\n        address tokenIn,\\r\\n        uint256 amountIn,\\r\\n        uint256 minAmountsOut,\\r\\n        address receiver\\r\\n    ) external payable nonReentrant {\\r\\n        // IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\\r\\n        // address token0 = address(hyperPool.token0());\\r\\n        // address token1 = address(hyperPool.token1());\\r\\n        // address[] memory poolAssets = new address[](2);\\r\\n        // poolAssets[0] = token0;\\r\\n        // poolAssets[1] = token1;\\r\\n        // uint256[] memory amounts = new uint256[](2);\\r\\n        // if (tokenIn == address(0)) {\\r\\n        //     require(msg.value == amountIn, 'Incorrect ETH amount');\\r\\n        //     IWETH(WETH9).deposit{value: amountIn}();\\r\\n        //     tokenIn = WETH9;\\r\\n        // } else {\\r\\n        //     IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\r\\n        // }\\r\\n        // // Ottieni i rapporti di deposito utilizzando il contratto ClearingV2\\r\\n        // IClearingV2 clearingV2 = IClearingV2(baluniHyperUniProxy.clearance());\\r\\n        // (uint256 amount1Min, uint256 amount1Max) = clearingV2.getDepositAmount(hypervisor, token0, amountIn);\\r\\n        // (uint256 amount0Min, uint256 amount0Max) = clearingV2.getDepositAmount(hypervisor, token1, amountIn);\\r\\n        // // Calcola gli importi effettivi da depositare\\r\\n        // uint256 amount0 = amount0Min;\\r\\n        // uint256 amount1 = (amount1Min + amount1Max) / 2;\\r\\n        // // Verifica che gli importi siano sufficienti per il deposito\\r\\n        // require(amount0 > 0 && amount1 > 0, 'Calculated amounts are insufficient');\\r\\n        // // Swap per ottenere i token necessari\\r\\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n        //     if (tokenIn == poolAssets[i]) {\\r\\n        //         amounts[i] = (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1);\\r\\n        //     } else {\\r\\n        //         amounts[i] = _swap(\\r\\n        //             tokenIn,\\r\\n        //             poolAssets[i],\\r\\n        //             (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1),\\r\\n        //             address(this)\\r\\n        //         );\\r\\n        //         require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\\r\\n        //     }\\r\\n        // }\\r\\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n        //     IERC20(poolAssets[i]).approve(address(baluniHyperUniProxy), amounts[i]);\\r\\n        //     IERC20(poolAssets[i]).approve(address(hypervisor), amounts[i]);\\r\\n        // }\\r\\n        // require(amounts[0] > 0 && amounts[1] > 0, 'Insufficient amounts');\\r\\n        // // Verifica dei bilanci dei token\\r\\n        // require(IERC20(token0).balanceOf(address(this)) >= amounts[0], 'Insufficient token0 balance');\\r\\n        // require(IERC20(token1).balanceOf(address(this)) >= amounts[1], 'Insufficient token1 balance');\\r\\n        // // Deposita i token nel proxy\\r\\n        // baluniHyperUniProxy.deposit(amounts[0], amounts[1], receiver, address(this), hypervisor);\\r\\n    }\\r\\n\\r\\n    function zapOut(\\r\\n        address hypervisor,\\r\\n        uint256 share,\\r\\n        address tokenOut,\\r\\n        uint256 minAmountOut,\\r\\n        address receiver\\r\\n    ) external nonReentrant {\\r\\n        IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\\r\\n\\r\\n        address token0 = address(hyperPool.token0());\\r\\n        address token1 = address(hyperPool.token1());\\r\\n\\r\\n        address[] memory poolAssets = new address[](2);\\r\\n        poolAssets[0] = token0;\\r\\n        poolAssets[1] = token1;\\r\\n\\r\\n        uint256[] memory amounts = new uint256[](2);\\r\\n\\r\\n        uint256[] memory balances = new uint256[](poolAssets.length);\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\\r\\n\\r\\n        IERC20(hypervisor).transferFrom(msg.sender, address(this), share);\\r\\n        IERC20(hypervisor).approve(address(hypervisor), share);\\r\\n\\r\\n        uint256[4] memory minAmounts;\\r\\n\\r\\n        minAmounts[0] = 0;\\r\\n        minAmounts[1] = 0;\\r\\n        minAmounts[2] = 0;\\r\\n        minAmounts[3] = 0;\\r\\n\\r\\n        // Withdraw from the pool\\r\\n        hyperPool.withdraw(share, address(this), address(this), minAmounts);\\r\\n\\r\\n        uint256 totalAmountOut = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (poolAssets[i] == tokenOut) {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += amounts[i];\\r\\n            } else {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], address(this));\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\\r\\n        totalAmountOut = balanceAfter - balanceBefore;\\r\\n\\r\\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\\r\\n\\r\\n        if (tokenOut == WETH9) {\\r\\n            IWETH(WETH9).withdraw(totalAmountOut);\\r\\n            payable(receiver).transfer(totalAmountOut);\\r\\n        } else {\\r\\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    function _swap(\\r\\n        address tokenIn,\\r\\n        address tokenOut,\\r\\n        uint256 amountIn,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address WMATIC = registry.getWNATIVE();\\r\\n\\r\\n        if (tokenIn == tokenOut) {\\r\\n            return amountIn;\\r\\n        }\\r\\n\\r\\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\\r\\n\\r\\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\\r\\n            amountOut = _amountOut;\\r\\n        } catch {\\r\\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\\r\\n        }\\r\\n        require(amountOut > 0, 'Swap failed');\\r\\n        return amountOut;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x2f901e80278f3571a5082525d942c54cec110d1970704fe4af66c1985b44b17e\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IClearingV2":{"abi":[{"inputs":[{"internalType":"address","name":"pos","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"total0","type":"uint256"},{"internalType":"uint256","name":"total1","type":"uint256"}],"name":"applyRatio","outputs":[{"internalType":"uint256","name":"ratioStart","type":"uint256"},{"internalType":"uint256","name":"ratioEnd","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pos","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_deposit","type":"uint256"}],"name":"getDepositAmount","outputs":[{"internalType":"uint256","name":"amountStart","type":"uint256"},{"internalType":"uint256","name":"amountEnd","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"applyRatio(address,address,uint256,uint256)":"757c4e1c","getDepositAmount(address,address,uint256)":"5ccfb71d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pos\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"total0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total1\",\"type\":\"uint256\"}],\"name\":\"applyRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratioStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratioEnd\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pos\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_deposit\",\"type\":\"uint256\"}],\"name\":\"getDepositAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountEnd\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1HyperPoolZap.sol\":\"IClearingV2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\nimport './pool/IUniswapV3PoolImmutables.sol';\\nimport './pool/IUniswapV3PoolState.sol';\\nimport './pool/IUniswapV3PoolDerivedState.sol';\\nimport './pool/IUniswapV3PoolActions.sol';\\nimport './pool/IUniswapV3PoolOwnerActions.sol';\\nimport './pool/IUniswapV3PoolEvents.sol';\\n\\n/// @title The interface for a Uniswap V3 Pool\\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\\n/// to the ERC20 specification\\n/// @dev The pool interface is broken up into many smaller pieces\\ninterface IUniswapV3Pool is\\n    IUniswapV3PoolImmutables,\\n    IUniswapV3PoolState,\\n    IUniswapV3PoolDerivedState,\\n    IUniswapV3PoolActions,\\n    IUniswapV3PoolOwnerActions,\\n    IUniswapV3PoolEvents\\n{\\n\\n}\\n\",\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissionless pool actions\\n/// @notice Contains pool methods that can be called by anyone\\ninterface IUniswapV3PoolActions {\\n    /// @notice Sets the initial price for the pool\\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\\n    function initialize(uint160 sqrtPriceX96) external;\\n\\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\\n    /// @param recipient The address for which the liquidity will be created\\n    /// @param tickLower The lower tick of the position in which to add liquidity\\n    /// @param tickUpper The upper tick of the position in which to add liquidity\\n    /// @param amount The amount of liquidity to mint\\n    /// @param data Any data that should be passed through to the callback\\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    function mint(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount,\\n        bytes calldata data\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects tokens owed to a position\\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\\n    /// @param recipient The address which should receive the fees collected\\n    /// @param tickLower The lower tick of the position for which to collect fees\\n    /// @param tickUpper The upper tick of the position for which to collect fees\\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n\\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\\n    /// @dev Fees must be collected separately via a call to #collect\\n    /// @param tickLower The lower tick of the position for which to burn liquidity\\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\\n    /// @param amount How much liquidity to burn\\n    /// @return amount0 The amount of token0 sent to the recipient\\n    /// @return amount1 The amount of token1 sent to the recipient\\n    function burn(\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Swap token0 for token1, or token1 for token0\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\\n    /// @param recipient The address to receive the output of the swap\\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\\n    /// @param data Any data to be passed through to the callback\\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\\n    function swap(\\n        address recipient,\\n        bool zeroForOne,\\n        int256 amountSpecified,\\n        uint160 sqrtPriceLimitX96,\\n        bytes calldata data\\n    ) external returns (int256 amount0, int256 amount1);\\n\\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\\n    /// @param recipient The address which will receive the token0 and token1 amounts\\n    /// @param amount0 The amount of token0 to send\\n    /// @param amount1 The amount of token1 to send\\n    /// @param data Any data to be passed through to the callback\\n    function flash(\\n        address recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        bytes calldata data\\n    ) external;\\n\\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\\n    /// the input observationCardinalityNext.\\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\\n}\\n\",\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that is not stored\\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\\n/// blockchain. The functions here may have variable gas costs.\\ninterface IUniswapV3PoolDerivedState {\\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\\n    /// you must call it with secondsAgos = [3600, 0].\\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\\n    /// timestamp\\n    function observe(uint32[] calldata secondsAgos)\\n        external\\n        view\\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\\n\\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\\n    /// snapshot is taken and the second snapshot is taken.\\n    /// @param tickLower The lower tick of the range\\n    /// @param tickUpper The upper tick of the range\\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\\n        external\\n        view\\n        returns (\\n            int56 tickCumulativeInside,\\n            uint160 secondsPerLiquidityInsideX128,\\n            uint32 secondsInside\\n        );\\n}\\n\",\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Events emitted by a pool\\n/// @notice Contains all events emitted by the pool\\ninterface IUniswapV3PoolEvents {\\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\\n\\n    /// @notice Emitted when liquidity is minted for a given position\\n    /// @param sender The address that minted the liquidity\\n    /// @param owner The owner of the position and recipient of any minted liquidity\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity minted to the position range\\n    /// @param amount0 How much token0 was required for the minted liquidity\\n    /// @param amount1 How much token1 was required for the minted liquidity\\n    event Mint(\\n        address sender,\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted when fees are collected by the owner of a position\\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\\n    /// @param owner The owner of the position for which fees are collected\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount0 The amount of token0 fees collected\\n    /// @param amount1 The amount of token1 fees collected\\n    event Collect(\\n        address indexed owner,\\n        address recipient,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount0,\\n        uint128 amount1\\n    );\\n\\n    /// @notice Emitted when a position's liquidity is removed\\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\\n    /// @param owner The owner of the position for which liquidity is removed\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity to remove\\n    /// @param amount0 The amount of token0 withdrawn\\n    /// @param amount1 The amount of token1 withdrawn\\n    event Burn(\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted by the pool for any swaps between token0 and token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the output of the swap\\n    /// @param amount0 The delta of the token0 balance of the pool\\n    /// @param amount1 The delta of the token1 balance of the pool\\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\\n    /// @param liquidity The liquidity of the pool after the swap\\n    /// @param tick The log base 1.0001 of price of the pool after the swap\\n    event Swap(\\n        address indexed sender,\\n        address indexed recipient,\\n        int256 amount0,\\n        int256 amount1,\\n        uint160 sqrtPriceX96,\\n        uint128 liquidity,\\n        int24 tick\\n    );\\n\\n    /// @notice Emitted by the pool for any flashes of token0/token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the tokens from flash\\n    /// @param amount0 The amount of token0 that was flashed\\n    /// @param amount1 The amount of token1 that was flashed\\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\\n    event Flash(\\n        address indexed sender,\\n        address indexed recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        uint256 paid0,\\n        uint256 paid1\\n    );\\n\\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\\n    /// just before a mint/swap/burn.\\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\\n    event IncreaseObservationCardinalityNext(\\n        uint16 observationCardinalityNextOld,\\n        uint16 observationCardinalityNextNew\\n    );\\n\\n    /// @notice Emitted when the protocol fee is changed by the pool\\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\\n\\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\\n    /// @param sender The address that collects the protocol fees\\n    /// @param recipient The address that receives the collected protocol fees\\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that never changes\\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\\ninterface IUniswapV3PoolImmutables {\\n    /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\\n    /// @return The contract address\\n    function factory() external view returns (address);\\n\\n    /// @notice The first of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token0() external view returns (address);\\n\\n    /// @notice The second of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token1() external view returns (address);\\n\\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\\n    /// @return The fee\\n    function fee() external view returns (uint24);\\n\\n    /// @notice The pool tick spacing\\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\\n    /// This value is an int24 to avoid casting even though it is always positive.\\n    /// @return The tick spacing\\n    function tickSpacing() external view returns (int24);\\n\\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\\n    /// @return The max amount of liquidity per tick\\n    function maxLiquidityPerTick() external view returns (uint128);\\n}\\n\",\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissioned pool actions\\n/// @notice Contains pool methods that may only be called by the factory owner\\ninterface IUniswapV3PoolOwnerActions {\\n    /// @notice Set the denominator of the protocol's % share of the fees\\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\\n\\n    /// @notice Collect the protocol fee accrued to the pool\\n    /// @param recipient The address to which collected protocol fees should be sent\\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\\n    /// @return amount0 The protocol fee collected in token0\\n    /// @return amount1 The protocol fee collected in token1\\n    function collectProtocol(\\n        address recipient,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that can change\\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\\n/// per transaction\\ninterface IUniswapV3PoolState {\\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\\n    /// when accessed externally.\\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\\n    /// boundary.\\n    /// observationIndex The index of the last oracle observation that was written,\\n    /// observationCardinality The current maximum number of observations stored in the pool,\\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\\n    /// feeProtocol The protocol fee for both tokens of the pool.\\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\\n    /// unlocked Whether the pool is currently locked to reentrancy\\n    function slot0()\\n        external\\n        view\\n        returns (\\n            uint160 sqrtPriceX96,\\n            int24 tick,\\n            uint16 observationIndex,\\n            uint16 observationCardinality,\\n            uint16 observationCardinalityNext,\\n            uint8 feeProtocol,\\n            bool unlocked\\n        );\\n\\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal0X128() external view returns (uint256);\\n\\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal1X128() external view returns (uint256);\\n\\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\\n    /// @dev Protocol fees will never exceed uint128 max in either token\\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\\n\\n    /// @notice The currently in range liquidity available to the pool\\n    /// @dev This value has no relationship to the total liquidity across all ticks\\n    function liquidity() external view returns (uint128);\\n\\n    /// @notice Look up information about a specific tick in the pool\\n    /// @param tick The tick to look up\\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\\n    /// tick upper,\\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\\n    /// a specific position.\\n    function ticks(int24 tick)\\n        external\\n        view\\n        returns (\\n            uint128 liquidityGross,\\n            int128 liquidityNet,\\n            uint256 feeGrowthOutside0X128,\\n            uint256 feeGrowthOutside1X128,\\n            int56 tickCumulativeOutside,\\n            uint160 secondsPerLiquidityOutsideX128,\\n            uint32 secondsOutside,\\n            bool initialized\\n        );\\n\\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\\n\\n    /// @notice Returns the information about a position by the position's key\\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\\n    /// @return _liquidity The amount of liquidity in the position,\\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\\n    function positions(bytes32 key)\\n        external\\n        view\\n        returns (\\n            uint128 _liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    /// @notice Returns data about a specific observation index\\n    /// @param index The element of the observations array to fetch\\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\\n    /// ago, rather than at a specific index in the array.\\n    /// @return blockTimestamp The timestamp of the observation,\\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\\n    function observations(uint256 index)\\n        external\\n        view\\n        returns (\\n            uint32 blockTimestamp,\\n            int56 tickCumulative,\\n            uint160 secondsPerLiquidityCumulativeX128,\\n            bool initialized\\n        );\\n}\\n\",\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/IBaluniV1HyperUniProxy.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\ninterface IBaluniV1HyperUniProxy {\\r\\n    function deposit(\\r\\n        uint256 deposit0,\\r\\n        uint256 deposit1,\\r\\n        address to,\\r\\n        address from,\\r\\n        address pos\\r\\n    ) external returns (uint256 shares);\\r\\n\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function clearance() external returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x02f2efa00b8f693dba548171d226f6c916414083906b7ab8c3a8d2ebdb5f4470\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1HyperPoolZap.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1HyperUniProxy.sol';\\r\\n\\r\\ninterface IClearingV2 {\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function applyRatio(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 total0,\\r\\n        uint256 total1\\r\\n    ) external view returns (uint256 ratioStart, uint256 ratioEnd);\\r\\n}\\r\\n\\r\\ninterface IBaluniV1Hypervisor {\\r\\n    function deposit(uint256, uint256, address, address, uint256[4] memory minIn) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256, address, address, uint256[4] memory) external returns (uint256, uint256);\\r\\n\\r\\n    function compound()\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function compound(\\r\\n        uint256[4] memory inMin\\r\\n    )\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function rebalance(\\r\\n        int24 _baseLower,\\r\\n        int24 _baseUpper,\\r\\n        int24 _limitLower,\\r\\n        int24 _limitUpper,\\r\\n        address _feeRecipient,\\r\\n        uint256[4] memory minIn,\\r\\n        uint256[4] memory outMin\\r\\n    ) external;\\r\\n\\r\\n    function addBaseLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function addLimitLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function pullLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint128 shares,\\r\\n        uint256[2] memory amountMin\\r\\n    ) external returns (uint256 base0, uint256 base1);\\r\\n\\r\\n    function pullLiquidity(\\r\\n        uint256 shares,\\r\\n        uint256[4] memory minAmounts\\r\\n    ) external returns (uint256 base0, uint256 base1, uint256 limit0, uint256 limit1);\\r\\n\\r\\n    function addLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint256 amount0,\\r\\n        uint256 amount1,\\r\\n        uint256[2] memory inMin\\r\\n    ) external;\\r\\n\\r\\n    function pool() external view returns (IUniswapV3Pool);\\r\\n\\r\\n    function currentTick() external view returns (int24 tick);\\r\\n\\r\\n    function tickSpacing() external view returns (int24 spacing);\\r\\n\\r\\n    function baseLower() external view returns (int24 tick);\\r\\n\\r\\n    function baseUpper() external view returns (int24 tick);\\r\\n\\r\\n    function limitLower() external view returns (int24 tick);\\r\\n\\r\\n    function limitUpper() external view returns (int24 tick);\\r\\n\\r\\n    function token0() external view returns (IERC20);\\r\\n\\r\\n    function token1() external view returns (IERC20);\\r\\n\\r\\n    function deposit0Max() external view returns (uint256);\\r\\n\\r\\n    function deposit1Max() external view returns (uint256);\\r\\n\\r\\n    function balanceOf(address) external view returns (uint256);\\r\\n\\r\\n    function approve(address, uint256) external returns (bool);\\r\\n\\r\\n    function transferFrom(address, address, uint256) external returns (bool);\\r\\n\\r\\n    function transfer(address, uint256) external returns (bool);\\r\\n\\r\\n    function getTotalAmounts() external view returns (uint256 total0, uint256 total1);\\r\\n\\r\\n    function getBasePosition() external view returns (uint256 liquidity, uint256 total0, uint256 total1);\\r\\n\\r\\n    function totalSupply() external view returns (uint256);\\r\\n\\r\\n    function setWhitelist(address _address) external;\\r\\n\\r\\n    function setFee(uint8 newFee) external;\\r\\n\\r\\n    function removeWhitelisted() external;\\r\\n\\r\\n    function transferOwnership(address newOwner) external;\\r\\n\\r\\n    function toggleDirectDeposit() external;\\r\\n}\\r\\n\\r\\ninterface IWETH {\\r\\n    function deposit() external payable;\\r\\n    function withdraw(uint wad) external;\\r\\n}\\r\\n\\r\\ncontract BaluniV1HyperPoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n    IBaluniV1Swapper public baluniSwapper;\\r\\n    IBaluniV1HyperUniProxy public baluniHyperUniProxy;\\r\\n    address public WETH9;\\r\\n\\r\\n    function initialize(address _registry, address _uniProxy) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ReentrancyGuard_init();\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\\r\\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\\r\\n        WETH9 = registry.getWNATIVE();\\r\\n    }\\r\\n\\r\\n    function changeUniProxy(address _uniProxy) external onlyOwner {\\r\\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\\r\\n    }\\r\\n\\r\\n    function changeSwapper(address _swapper) external onlyOwner {\\r\\n        baluniSwapper = IBaluniV1Swapper(_swapper);\\r\\n    }\\r\\n\\r\\n    function changeRegistry(address _registry) external onlyOwner {\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    receive() external payable {}\\r\\n\\r\\n    function zapIn(\\r\\n        address hypervisor,\\r\\n        address tokenIn,\\r\\n        uint256 amountIn,\\r\\n        uint256 minAmountsOut,\\r\\n        address receiver\\r\\n    ) external payable nonReentrant {\\r\\n        // IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\\r\\n        // address token0 = address(hyperPool.token0());\\r\\n        // address token1 = address(hyperPool.token1());\\r\\n        // address[] memory poolAssets = new address[](2);\\r\\n        // poolAssets[0] = token0;\\r\\n        // poolAssets[1] = token1;\\r\\n        // uint256[] memory amounts = new uint256[](2);\\r\\n        // if (tokenIn == address(0)) {\\r\\n        //     require(msg.value == amountIn, 'Incorrect ETH amount');\\r\\n        //     IWETH(WETH9).deposit{value: amountIn}();\\r\\n        //     tokenIn = WETH9;\\r\\n        // } else {\\r\\n        //     IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\r\\n        // }\\r\\n        // // Ottieni i rapporti di deposito utilizzando il contratto ClearingV2\\r\\n        // IClearingV2 clearingV2 = IClearingV2(baluniHyperUniProxy.clearance());\\r\\n        // (uint256 amount1Min, uint256 amount1Max) = clearingV2.getDepositAmount(hypervisor, token0, amountIn);\\r\\n        // (uint256 amount0Min, uint256 amount0Max) = clearingV2.getDepositAmount(hypervisor, token1, amountIn);\\r\\n        // // Calcola gli importi effettivi da depositare\\r\\n        // uint256 amount0 = amount0Min;\\r\\n        // uint256 amount1 = (amount1Min + amount1Max) / 2;\\r\\n        // // Verifica che gli importi siano sufficienti per il deposito\\r\\n        // require(amount0 > 0 && amount1 > 0, 'Calculated amounts are insufficient');\\r\\n        // // Swap per ottenere i token necessari\\r\\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n        //     if (tokenIn == poolAssets[i]) {\\r\\n        //         amounts[i] = (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1);\\r\\n        //     } else {\\r\\n        //         amounts[i] = _swap(\\r\\n        //             tokenIn,\\r\\n        //             poolAssets[i],\\r\\n        //             (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1),\\r\\n        //             address(this)\\r\\n        //         );\\r\\n        //         require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\\r\\n        //     }\\r\\n        // }\\r\\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n        //     IERC20(poolAssets[i]).approve(address(baluniHyperUniProxy), amounts[i]);\\r\\n        //     IERC20(poolAssets[i]).approve(address(hypervisor), amounts[i]);\\r\\n        // }\\r\\n        // require(amounts[0] > 0 && amounts[1] > 0, 'Insufficient amounts');\\r\\n        // // Verifica dei bilanci dei token\\r\\n        // require(IERC20(token0).balanceOf(address(this)) >= amounts[0], 'Insufficient token0 balance');\\r\\n        // require(IERC20(token1).balanceOf(address(this)) >= amounts[1], 'Insufficient token1 balance');\\r\\n        // // Deposita i token nel proxy\\r\\n        // baluniHyperUniProxy.deposit(amounts[0], amounts[1], receiver, address(this), hypervisor);\\r\\n    }\\r\\n\\r\\n    function zapOut(\\r\\n        address hypervisor,\\r\\n        uint256 share,\\r\\n        address tokenOut,\\r\\n        uint256 minAmountOut,\\r\\n        address receiver\\r\\n    ) external nonReentrant {\\r\\n        IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\\r\\n\\r\\n        address token0 = address(hyperPool.token0());\\r\\n        address token1 = address(hyperPool.token1());\\r\\n\\r\\n        address[] memory poolAssets = new address[](2);\\r\\n        poolAssets[0] = token0;\\r\\n        poolAssets[1] = token1;\\r\\n\\r\\n        uint256[] memory amounts = new uint256[](2);\\r\\n\\r\\n        uint256[] memory balances = new uint256[](poolAssets.length);\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\\r\\n\\r\\n        IERC20(hypervisor).transferFrom(msg.sender, address(this), share);\\r\\n        IERC20(hypervisor).approve(address(hypervisor), share);\\r\\n\\r\\n        uint256[4] memory minAmounts;\\r\\n\\r\\n        minAmounts[0] = 0;\\r\\n        minAmounts[1] = 0;\\r\\n        minAmounts[2] = 0;\\r\\n        minAmounts[3] = 0;\\r\\n\\r\\n        // Withdraw from the pool\\r\\n        hyperPool.withdraw(share, address(this), address(this), minAmounts);\\r\\n\\r\\n        uint256 totalAmountOut = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (poolAssets[i] == tokenOut) {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += amounts[i];\\r\\n            } else {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], address(this));\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\\r\\n        totalAmountOut = balanceAfter - balanceBefore;\\r\\n\\r\\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\\r\\n\\r\\n        if (tokenOut == WETH9) {\\r\\n            IWETH(WETH9).withdraw(totalAmountOut);\\r\\n            payable(receiver).transfer(totalAmountOut);\\r\\n        } else {\\r\\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    function _swap(\\r\\n        address tokenIn,\\r\\n        address tokenOut,\\r\\n        uint256 amountIn,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address WMATIC = registry.getWNATIVE();\\r\\n\\r\\n        if (tokenIn == tokenOut) {\\r\\n            return amountIn;\\r\\n        }\\r\\n\\r\\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\\r\\n\\r\\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\\r\\n            amountOut = _amountOut;\\r\\n        } catch {\\r\\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\\r\\n        }\\r\\n        require(amountOut > 0, 'Swap failed');\\r\\n        return amountOut;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x2f901e80278f3571a5082525d942c54cec110d1970704fe4af66c1985b44b17e\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IWETH":{"abi":[{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"deposit()":"d0e30db0","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1HyperPoolZap.sol\":\"IWETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\nimport './pool/IUniswapV3PoolImmutables.sol';\\nimport './pool/IUniswapV3PoolState.sol';\\nimport './pool/IUniswapV3PoolDerivedState.sol';\\nimport './pool/IUniswapV3PoolActions.sol';\\nimport './pool/IUniswapV3PoolOwnerActions.sol';\\nimport './pool/IUniswapV3PoolEvents.sol';\\n\\n/// @title The interface for a Uniswap V3 Pool\\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\\n/// to the ERC20 specification\\n/// @dev The pool interface is broken up into many smaller pieces\\ninterface IUniswapV3Pool is\\n    IUniswapV3PoolImmutables,\\n    IUniswapV3PoolState,\\n    IUniswapV3PoolDerivedState,\\n    IUniswapV3PoolActions,\\n    IUniswapV3PoolOwnerActions,\\n    IUniswapV3PoolEvents\\n{\\n\\n}\\n\",\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissionless pool actions\\n/// @notice Contains pool methods that can be called by anyone\\ninterface IUniswapV3PoolActions {\\n    /// @notice Sets the initial price for the pool\\n    /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\\n    /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\\n    function initialize(uint160 sqrtPriceX96) external;\\n\\n    /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\\n    /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\\n    /// on tickLower, tickUpper, the amount of liquidity, and the current price.\\n    /// @param recipient The address for which the liquidity will be created\\n    /// @param tickLower The lower tick of the position in which to add liquidity\\n    /// @param tickUpper The upper tick of the position in which to add liquidity\\n    /// @param amount The amount of liquidity to mint\\n    /// @param data Any data that should be passed through to the callback\\n    /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\\n    function mint(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount,\\n        bytes calldata data\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects tokens owed to a position\\n    /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\\n    /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\\n    /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\\n    /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\\n    /// @param recipient The address which should receive the fees collected\\n    /// @param tickLower The lower tick of the position for which to collect fees\\n    /// @param tickUpper The upper tick of the position for which to collect fees\\n    /// @param amount0Requested How much token0 should be withdrawn from the fees owed\\n    /// @param amount1Requested How much token1 should be withdrawn from the fees owed\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(\\n        address recipient,\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n\\n    /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\\n    /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\\n    /// @dev Fees must be collected separately via a call to #collect\\n    /// @param tickLower The lower tick of the position for which to burn liquidity\\n    /// @param tickUpper The upper tick of the position for which to burn liquidity\\n    /// @param amount How much liquidity to burn\\n    /// @return amount0 The amount of token0 sent to the recipient\\n    /// @return amount1 The amount of token1 sent to the recipient\\n    function burn(\\n        int24 tickLower,\\n        int24 tickUpper,\\n        uint128 amount\\n    ) external returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Swap token0 for token1, or token1 for token0\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\\n    /// @param recipient The address to receive the output of the swap\\n    /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\\n    /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\\n    /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\\n    /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\\n    /// @param data Any data to be passed through to the callback\\n    /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\\n    /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\\n    function swap(\\n        address recipient,\\n        bool zeroForOne,\\n        int256 amountSpecified,\\n        uint160 sqrtPriceLimitX96,\\n        bytes calldata data\\n    ) external returns (int256 amount0, int256 amount1);\\n\\n    /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\\n    /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\\n    /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\\n    /// with 0 amount{0,1} and sending the donation amount(s) from the callback\\n    /// @param recipient The address which will receive the token0 and token1 amounts\\n    /// @param amount0 The amount of token0 to send\\n    /// @param amount1 The amount of token1 to send\\n    /// @param data Any data to be passed through to the callback\\n    function flash(\\n        address recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        bytes calldata data\\n    ) external;\\n\\n    /// @notice Increase the maximum number of price and liquidity observations that this pool will store\\n    /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\\n    /// the input observationCardinalityNext.\\n    /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\\n    function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\\n}\\n\",\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that is not stored\\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\\n/// blockchain. The functions here may have variable gas costs.\\ninterface IUniswapV3PoolDerivedState {\\n    /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\\n    /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\\n    /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\\n    /// you must call it with secondsAgos = [3600, 0].\\n    /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\\n    /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\\n    /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\\n    /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\\n    /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\\n    /// timestamp\\n    function observe(uint32[] calldata secondsAgos)\\n        external\\n        view\\n        returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\\n\\n    /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\\n    /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\\n    /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\\n    /// snapshot is taken and the second snapshot is taken.\\n    /// @param tickLower The lower tick of the range\\n    /// @param tickUpper The upper tick of the range\\n    /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\\n    /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\\n    /// @return secondsInside The snapshot of seconds per liquidity for the range\\n    function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\\n        external\\n        view\\n        returns (\\n            int56 tickCumulativeInside,\\n            uint160 secondsPerLiquidityInsideX128,\\n            uint32 secondsInside\\n        );\\n}\\n\",\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Events emitted by a pool\\n/// @notice Contains all events emitted by the pool\\ninterface IUniswapV3PoolEvents {\\n    /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\\n    /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\\n    /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\\n    /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\\n    event Initialize(uint160 sqrtPriceX96, int24 tick);\\n\\n    /// @notice Emitted when liquidity is minted for a given position\\n    /// @param sender The address that minted the liquidity\\n    /// @param owner The owner of the position and recipient of any minted liquidity\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity minted to the position range\\n    /// @param amount0 How much token0 was required for the minted liquidity\\n    /// @param amount1 How much token1 was required for the minted liquidity\\n    event Mint(\\n        address sender,\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted when fees are collected by the owner of a position\\n    /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\\n    /// @param owner The owner of the position for which fees are collected\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount0 The amount of token0 fees collected\\n    /// @param amount1 The amount of token1 fees collected\\n    event Collect(\\n        address indexed owner,\\n        address recipient,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount0,\\n        uint128 amount1\\n    );\\n\\n    /// @notice Emitted when a position's liquidity is removed\\n    /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\\n    /// @param owner The owner of the position for which liquidity is removed\\n    /// @param tickLower The lower tick of the position\\n    /// @param tickUpper The upper tick of the position\\n    /// @param amount The amount of liquidity to remove\\n    /// @param amount0 The amount of token0 withdrawn\\n    /// @param amount1 The amount of token1 withdrawn\\n    event Burn(\\n        address indexed owner,\\n        int24 indexed tickLower,\\n        int24 indexed tickUpper,\\n        uint128 amount,\\n        uint256 amount0,\\n        uint256 amount1\\n    );\\n\\n    /// @notice Emitted by the pool for any swaps between token0 and token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the output of the swap\\n    /// @param amount0 The delta of the token0 balance of the pool\\n    /// @param amount1 The delta of the token1 balance of the pool\\n    /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\\n    /// @param liquidity The liquidity of the pool after the swap\\n    /// @param tick The log base 1.0001 of price of the pool after the swap\\n    event Swap(\\n        address indexed sender,\\n        address indexed recipient,\\n        int256 amount0,\\n        int256 amount1,\\n        uint160 sqrtPriceX96,\\n        uint128 liquidity,\\n        int24 tick\\n    );\\n\\n    /// @notice Emitted by the pool for any flashes of token0/token1\\n    /// @param sender The address that initiated the swap call, and that received the callback\\n    /// @param recipient The address that received the tokens from flash\\n    /// @param amount0 The amount of token0 that was flashed\\n    /// @param amount1 The amount of token1 that was flashed\\n    /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\\n    /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\\n    event Flash(\\n        address indexed sender,\\n        address indexed recipient,\\n        uint256 amount0,\\n        uint256 amount1,\\n        uint256 paid0,\\n        uint256 paid1\\n    );\\n\\n    /// @notice Emitted by the pool for increases to the number of observations that can be stored\\n    /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\\n    /// just before a mint/swap/burn.\\n    /// @param observationCardinalityNextOld The previous value of the next observation cardinality\\n    /// @param observationCardinalityNextNew The updated value of the next observation cardinality\\n    event IncreaseObservationCardinalityNext(\\n        uint16 observationCardinalityNextOld,\\n        uint16 observationCardinalityNextNew\\n    );\\n\\n    /// @notice Emitted when the protocol fee is changed by the pool\\n    /// @param feeProtocol0Old The previous value of the token0 protocol fee\\n    /// @param feeProtocol1Old The previous value of the token1 protocol fee\\n    /// @param feeProtocol0New The updated value of the token0 protocol fee\\n    /// @param feeProtocol1New The updated value of the token1 protocol fee\\n    event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\\n\\n    /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\\n    /// @param sender The address that collects the protocol fees\\n    /// @param recipient The address that receives the collected protocol fees\\n    /// @param amount0 The amount of token0 protocol fees that is withdrawn\\n    /// @param amount0 The amount of token1 protocol fees that is withdrawn\\n    event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that never changes\\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\\ninterface IUniswapV3PoolImmutables {\\n    /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\\n    /// @return The contract address\\n    function factory() external view returns (address);\\n\\n    /// @notice The first of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token0() external view returns (address);\\n\\n    /// @notice The second of the two tokens of the pool, sorted by address\\n    /// @return The token contract address\\n    function token1() external view returns (address);\\n\\n    /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\\n    /// @return The fee\\n    function fee() external view returns (uint24);\\n\\n    /// @notice The pool tick spacing\\n    /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\\n    /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\\n    /// This value is an int24 to avoid casting even though it is always positive.\\n    /// @return The tick spacing\\n    function tickSpacing() external view returns (int24);\\n\\n    /// @notice The maximum amount of position liquidity that can use any tick in the range\\n    /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\\n    /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\\n    /// @return The max amount of liquidity per tick\\n    function maxLiquidityPerTick() external view returns (uint128);\\n}\\n\",\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Permissioned pool actions\\n/// @notice Contains pool methods that may only be called by the factory owner\\ninterface IUniswapV3PoolOwnerActions {\\n    /// @notice Set the denominator of the protocol's % share of the fees\\n    /// @param feeProtocol0 new protocol fee for token0 of the pool\\n    /// @param feeProtocol1 new protocol fee for token1 of the pool\\n    function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\\n\\n    /// @notice Collect the protocol fee accrued to the pool\\n    /// @param recipient The address to which collected protocol fees should be sent\\n    /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\\n    /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\\n    /// @return amount0 The protocol fee collected in token0\\n    /// @return amount1 The protocol fee collected in token1\\n    function collectProtocol(\\n        address recipient,\\n        uint128 amount0Requested,\\n        uint128 amount1Requested\\n    ) external returns (uint128 amount0, uint128 amount1);\\n}\\n\",\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Pool state that can change\\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\\n/// per transaction\\ninterface IUniswapV3PoolState {\\n    /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\\n    /// when accessed externally.\\n    /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\\n    /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\\n    /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\\n    /// boundary.\\n    /// observationIndex The index of the last oracle observation that was written,\\n    /// observationCardinality The current maximum number of observations stored in the pool,\\n    /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\\n    /// feeProtocol The protocol fee for both tokens of the pool.\\n    /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\\n    /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\\n    /// unlocked Whether the pool is currently locked to reentrancy\\n    function slot0()\\n        external\\n        view\\n        returns (\\n            uint160 sqrtPriceX96,\\n            int24 tick,\\n            uint16 observationIndex,\\n            uint16 observationCardinality,\\n            uint16 observationCardinalityNext,\\n            uint8 feeProtocol,\\n            bool unlocked\\n        );\\n\\n    /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal0X128() external view returns (uint256);\\n\\n    /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\\n    /// @dev This value can overflow the uint256\\n    function feeGrowthGlobal1X128() external view returns (uint256);\\n\\n    /// @notice The amounts of token0 and token1 that are owed to the protocol\\n    /// @dev Protocol fees will never exceed uint128 max in either token\\n    function protocolFees() external view returns (uint128 token0, uint128 token1);\\n\\n    /// @notice The currently in range liquidity available to the pool\\n    /// @dev This value has no relationship to the total liquidity across all ticks\\n    function liquidity() external view returns (uint128);\\n\\n    /// @notice Look up information about a specific tick in the pool\\n    /// @param tick The tick to look up\\n    /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\\n    /// tick upper,\\n    /// liquidityNet how much liquidity changes when the pool price crosses the tick,\\n    /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\\n    /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\\n    /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\\n    /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\\n    /// secondsOutside the seconds spent on the other side of the tick from the current tick,\\n    /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\\n    /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\\n    /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\\n    /// a specific position.\\n    function ticks(int24 tick)\\n        external\\n        view\\n        returns (\\n            uint128 liquidityGross,\\n            int128 liquidityNet,\\n            uint256 feeGrowthOutside0X128,\\n            uint256 feeGrowthOutside1X128,\\n            int56 tickCumulativeOutside,\\n            uint160 secondsPerLiquidityOutsideX128,\\n            uint32 secondsOutside,\\n            bool initialized\\n        );\\n\\n    /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\\n    function tickBitmap(int16 wordPosition) external view returns (uint256);\\n\\n    /// @notice Returns the information about a position by the position's key\\n    /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\\n    /// @return _liquidity The amount of liquidity in the position,\\n    /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\\n    /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\\n    /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\\n    /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\\n    function positions(bytes32 key)\\n        external\\n        view\\n        returns (\\n            uint128 _liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    /// @notice Returns data about a specific observation index\\n    /// @param index The element of the observations array to fetch\\n    /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\\n    /// ago, rather than at a specific index in the array.\\n    /// @return blockTimestamp The timestamp of the observation,\\n    /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\\n    /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\\n    /// Returns initialized whether the observation has been initialized and the values are safe to use\\n    function observations(uint256 index)\\n        external\\n        view\\n        returns (\\n            uint32 blockTimestamp,\\n            int56 tickCumulative,\\n            uint160 secondsPerLiquidityCumulativeX128,\\n            bool initialized\\n        );\\n}\\n\",\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/IBaluniV1HyperUniProxy.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\ninterface IBaluniV1HyperUniProxy {\\r\\n    function deposit(\\r\\n        uint256 deposit0,\\r\\n        uint256 deposit1,\\r\\n        address to,\\r\\n        address from,\\r\\n        address pos\\r\\n    ) external returns (uint256 shares);\\r\\n\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function clearance() external returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x02f2efa00b8f693dba548171d226f6c916414083906b7ab8c3a8d2ebdb5f4470\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1HyperPoolZap.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1HyperUniProxy.sol';\\r\\n\\r\\ninterface IClearingV2 {\\r\\n    function getDepositAmount(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 _deposit\\r\\n    ) external view returns (uint256 amountStart, uint256 amountEnd);\\r\\n\\r\\n    function applyRatio(\\r\\n        address pos,\\r\\n        address token,\\r\\n        uint256 total0,\\r\\n        uint256 total1\\r\\n    ) external view returns (uint256 ratioStart, uint256 ratioEnd);\\r\\n}\\r\\n\\r\\ninterface IBaluniV1Hypervisor {\\r\\n    function deposit(uint256, uint256, address, address, uint256[4] memory minIn) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256, address, address, uint256[4] memory) external returns (uint256, uint256);\\r\\n\\r\\n    function compound()\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function compound(\\r\\n        uint256[4] memory inMin\\r\\n    )\\r\\n        external\\r\\n        returns (uint128 baseToken0Owed, uint128 baseToken1Owed, uint128 limitToken0Owed, uint128 limitToken1Owed);\\r\\n\\r\\n    function rebalance(\\r\\n        int24 _baseLower,\\r\\n        int24 _baseUpper,\\r\\n        int24 _limitLower,\\r\\n        int24 _limitUpper,\\r\\n        address _feeRecipient,\\r\\n        uint256[4] memory minIn,\\r\\n        uint256[4] memory outMin\\r\\n    ) external;\\r\\n\\r\\n    function addBaseLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function addLimitLiquidity(uint256 amount0, uint256 amount1, uint256[2] memory minIn) external;\\r\\n\\r\\n    function pullLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint128 shares,\\r\\n        uint256[2] memory amountMin\\r\\n    ) external returns (uint256 base0, uint256 base1);\\r\\n\\r\\n    function pullLiquidity(\\r\\n        uint256 shares,\\r\\n        uint256[4] memory minAmounts\\r\\n    ) external returns (uint256 base0, uint256 base1, uint256 limit0, uint256 limit1);\\r\\n\\r\\n    function addLiquidity(\\r\\n        int24 tickLower,\\r\\n        int24 tickUpper,\\r\\n        uint256 amount0,\\r\\n        uint256 amount1,\\r\\n        uint256[2] memory inMin\\r\\n    ) external;\\r\\n\\r\\n    function pool() external view returns (IUniswapV3Pool);\\r\\n\\r\\n    function currentTick() external view returns (int24 tick);\\r\\n\\r\\n    function tickSpacing() external view returns (int24 spacing);\\r\\n\\r\\n    function baseLower() external view returns (int24 tick);\\r\\n\\r\\n    function baseUpper() external view returns (int24 tick);\\r\\n\\r\\n    function limitLower() external view returns (int24 tick);\\r\\n\\r\\n    function limitUpper() external view returns (int24 tick);\\r\\n\\r\\n    function token0() external view returns (IERC20);\\r\\n\\r\\n    function token1() external view returns (IERC20);\\r\\n\\r\\n    function deposit0Max() external view returns (uint256);\\r\\n\\r\\n    function deposit1Max() external view returns (uint256);\\r\\n\\r\\n    function balanceOf(address) external view returns (uint256);\\r\\n\\r\\n    function approve(address, uint256) external returns (bool);\\r\\n\\r\\n    function transferFrom(address, address, uint256) external returns (bool);\\r\\n\\r\\n    function transfer(address, uint256) external returns (bool);\\r\\n\\r\\n    function getTotalAmounts() external view returns (uint256 total0, uint256 total1);\\r\\n\\r\\n    function getBasePosition() external view returns (uint256 liquidity, uint256 total0, uint256 total1);\\r\\n\\r\\n    function totalSupply() external view returns (uint256);\\r\\n\\r\\n    function setWhitelist(address _address) external;\\r\\n\\r\\n    function setFee(uint8 newFee) external;\\r\\n\\r\\n    function removeWhitelisted() external;\\r\\n\\r\\n    function transferOwnership(address newOwner) external;\\r\\n\\r\\n    function toggleDirectDeposit() external;\\r\\n}\\r\\n\\r\\ninterface IWETH {\\r\\n    function deposit() external payable;\\r\\n    function withdraw(uint wad) external;\\r\\n}\\r\\n\\r\\ncontract BaluniV1HyperPoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n    IBaluniV1Swapper public baluniSwapper;\\r\\n    IBaluniV1HyperUniProxy public baluniHyperUniProxy;\\r\\n    address public WETH9;\\r\\n\\r\\n    function initialize(address _registry, address _uniProxy) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ReentrancyGuard_init();\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\\r\\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\\r\\n        WETH9 = registry.getWNATIVE();\\r\\n    }\\r\\n\\r\\n    function changeUniProxy(address _uniProxy) external onlyOwner {\\r\\n        baluniHyperUniProxy = IBaluniV1HyperUniProxy(_uniProxy);\\r\\n    }\\r\\n\\r\\n    function changeSwapper(address _swapper) external onlyOwner {\\r\\n        baluniSwapper = IBaluniV1Swapper(_swapper);\\r\\n    }\\r\\n\\r\\n    function changeRegistry(address _registry) external onlyOwner {\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    receive() external payable {}\\r\\n\\r\\n    function zapIn(\\r\\n        address hypervisor,\\r\\n        address tokenIn,\\r\\n        uint256 amountIn,\\r\\n        uint256 minAmountsOut,\\r\\n        address receiver\\r\\n    ) external payable nonReentrant {\\r\\n        // IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\\r\\n        // address token0 = address(hyperPool.token0());\\r\\n        // address token1 = address(hyperPool.token1());\\r\\n        // address[] memory poolAssets = new address[](2);\\r\\n        // poolAssets[0] = token0;\\r\\n        // poolAssets[1] = token1;\\r\\n        // uint256[] memory amounts = new uint256[](2);\\r\\n        // if (tokenIn == address(0)) {\\r\\n        //     require(msg.value == amountIn, 'Incorrect ETH amount');\\r\\n        //     IWETH(WETH9).deposit{value: amountIn}();\\r\\n        //     tokenIn = WETH9;\\r\\n        // } else {\\r\\n        //     IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\r\\n        // }\\r\\n        // // Ottieni i rapporti di deposito utilizzando il contratto ClearingV2\\r\\n        // IClearingV2 clearingV2 = IClearingV2(baluniHyperUniProxy.clearance());\\r\\n        // (uint256 amount1Min, uint256 amount1Max) = clearingV2.getDepositAmount(hypervisor, token0, amountIn);\\r\\n        // (uint256 amount0Min, uint256 amount0Max) = clearingV2.getDepositAmount(hypervisor, token1, amountIn);\\r\\n        // // Calcola gli importi effettivi da depositare\\r\\n        // uint256 amount0 = amount0Min;\\r\\n        // uint256 amount1 = (amount1Min + amount1Max) / 2;\\r\\n        // // Verifica che gli importi siano sufficienti per il deposito\\r\\n        // require(amount0 > 0 && amount1 > 0, 'Calculated amounts are insufficient');\\r\\n        // // Swap per ottenere i token necessari\\r\\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n        //     if (tokenIn == poolAssets[i]) {\\r\\n        //         amounts[i] = (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1);\\r\\n        //     } else {\\r\\n        //         amounts[i] = _swap(\\r\\n        //             tokenIn,\\r\\n        //             poolAssets[i],\\r\\n        //             (amountIn * (i == 0 ? amount0 : amount1)) / (amount0 + amount1),\\r\\n        //             address(this)\\r\\n        //         );\\r\\n        //         require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\\r\\n        //     }\\r\\n        // }\\r\\n        // for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n        //     IERC20(poolAssets[i]).approve(address(baluniHyperUniProxy), amounts[i]);\\r\\n        //     IERC20(poolAssets[i]).approve(address(hypervisor), amounts[i]);\\r\\n        // }\\r\\n        // require(amounts[0] > 0 && amounts[1] > 0, 'Insufficient amounts');\\r\\n        // // Verifica dei bilanci dei token\\r\\n        // require(IERC20(token0).balanceOf(address(this)) >= amounts[0], 'Insufficient token0 balance');\\r\\n        // require(IERC20(token1).balanceOf(address(this)) >= amounts[1], 'Insufficient token1 balance');\\r\\n        // // Deposita i token nel proxy\\r\\n        // baluniHyperUniProxy.deposit(amounts[0], amounts[1], receiver, address(this), hypervisor);\\r\\n    }\\r\\n\\r\\n    function zapOut(\\r\\n        address hypervisor,\\r\\n        uint256 share,\\r\\n        address tokenOut,\\r\\n        uint256 minAmountOut,\\r\\n        address receiver\\r\\n    ) external nonReentrant {\\r\\n        IBaluniV1Hypervisor hyperPool = IBaluniV1Hypervisor(hypervisor);\\r\\n\\r\\n        address token0 = address(hyperPool.token0());\\r\\n        address token1 = address(hyperPool.token1());\\r\\n\\r\\n        address[] memory poolAssets = new address[](2);\\r\\n        poolAssets[0] = token0;\\r\\n        poolAssets[1] = token1;\\r\\n\\r\\n        uint256[] memory amounts = new uint256[](2);\\r\\n\\r\\n        uint256[] memory balances = new uint256[](poolAssets.length);\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\\r\\n\\r\\n        IERC20(hypervisor).transferFrom(msg.sender, address(this), share);\\r\\n        IERC20(hypervisor).approve(address(hypervisor), share);\\r\\n\\r\\n        uint256[4] memory minAmounts;\\r\\n\\r\\n        minAmounts[0] = 0;\\r\\n        minAmounts[1] = 0;\\r\\n        minAmounts[2] = 0;\\r\\n        minAmounts[3] = 0;\\r\\n\\r\\n        // Withdraw from the pool\\r\\n        hyperPool.withdraw(share, address(this), address(this), minAmounts);\\r\\n\\r\\n        uint256 totalAmountOut = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (poolAssets[i] == tokenOut) {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += amounts[i];\\r\\n            } else {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], address(this));\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\\r\\n        totalAmountOut = balanceAfter - balanceBefore;\\r\\n\\r\\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\\r\\n\\r\\n        if (tokenOut == WETH9) {\\r\\n            IWETH(WETH9).withdraw(totalAmountOut);\\r\\n            payable(receiver).transfer(totalAmountOut);\\r\\n        } else {\\r\\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    function _swap(\\r\\n        address tokenIn,\\r\\n        address tokenOut,\\r\\n        uint256 amountIn,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address WMATIC = registry.getWNATIVE();\\r\\n\\r\\n        if (tokenIn == tokenOut) {\\r\\n            return amountIn;\\r\\n        }\\r\\n\\r\\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\\r\\n\\r\\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\\r\\n            amountOut = _amountOut;\\r\\n        } catch {\\r\\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\\r\\n        }\\r\\n        require(amountOut > 0, 'Swap failed');\\r\\n        return amountOut;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x2f901e80278f3571a5082525d942c54cec110d1970704fe4af66c1985b44b17e\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/managers/BaluniV1PoolZap.sol":{"BaluniV1PoolZap":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniSwapper","outputs":[{"internalType":"contract IBaluniV1Swapper","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddress","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountsOut","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"zapIn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddress","type":"address"},{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"zapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":79,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1PoolZap":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":135,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":125,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":115,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":93,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":90,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b613331610094823960805181818161249c01528181612521015261271c015261333190f35b6043565b60405190565b5f80fd5b604d6087565b565b60018060a01b031690565b90565b606c6068607092604f565b605a565b604f565b90565b607a90605d565b90565b6084906073565b90565b608e30607d565b60805256fe60806040526004361015610015575b366108a657005b61001f5f356100de565b80634aa4a4fc146100d95780634f1ef286146100d457806352d1902d146100cf578063715018a6146100ca5780637b103999146100c55780637dfb7ea1146100c05780638da5cb5b146100bb578063ad3cb1cc146100b6578063b1aa8cd1146100b1578063b487c54a146100ac578063c4d66de8146100a75763f2fde38b0361000e57610873565b610840565b6107f5565b610768565b6106b7565b610586565b610551565b6104a0565b6103c8565b610393565b610344565b61019a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f9103126100fc57565b6100ee565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61012e9060086101339302610101565b610105565b90565b90610141915461011e565b90565b61015060025f90610136565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61017590610153565b90565b6101819061016c565b9052565b9190610198905f60208501940190610178565b565b346101ca576101aa3660046100f2565b6101c66101b5610144565b6101bd6100e4565b91829182610185565b0390f35b6100ea565b5f80fd5b6101dc8161016c565b036101e357565b5f80fd5b905035906101f4826101d3565b565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061023f906101fe565b810190811067ffffffffffffffff82111761025957604052565b610208565b9061027161026a6100e4565b9283610235565b565b67ffffffffffffffff81116102915761028d6020916101fe565b0190565b610208565b90825f939282370152565b909291926102b66102b182610273565b61025e565b938185526020850190828401116102d2576102d092610296565b565b6101fa565b9080601f830112156102f5578160206102f2933591016102a1565b90565b6101f6565b91909160408184031261033a57610313835f83016101e7565b92602082013567ffffffffffffffff81116103355761033292016102d7565b90565b6101cf565b6100ee565b5f0190565b6103586103523660046102fa565b906108d3565b6103606100e4565b8061036a8161033f565b0390f35b90565b61037a9061036e565b9052565b9190610391905f60208501940190610371565b565b346103c3576103a33660046100f2565b6103bf6103ae610953565b6103b66100e4565b9182918261037e565b0390f35b6100ea565b346103f6576103d83660046100f2565b6103e06109b6565b6103e86100e4565b806103f28161033f565b0390f35b6100ea565b73ffffffffffffffffffffffffffffffffffffffff1690565b6104249060086104299302610101565b6103fb565b90565b906104379154610414565b90565b6104445f8061042c565b90565b90565b61045e61045961046392610153565b610447565b610153565b90565b61046f9061044a565b90565b61047b90610466565b90565b61048790610472565b9052565b919061049e905f6020850194019061047e565b565b346104d0576104b03660046100f2565b6104cc6104bb61043a565b6104c36100e4565b9182918261048b565b0390f35b6100ea565b73ffffffffffffffffffffffffffffffffffffffff1690565b6104fe9060086105039302610101565b6104d5565b90565b9061051191546104ee565b90565b61052060015f90610506565b90565b61052c90610466565b90565b61053890610523565b9052565b919061054f905f6020850194019061052f565b565b34610581576105613660046100f2565b61057d61056c610514565b6105746100e4565b9182918261053c565b0390f35b6100ea565b346105b6576105963660046100f2565b6105b26105a16109ea565b6105a96100e4565b91829182610185565b0390f35b6100ea565b67ffffffffffffffff81116105d9576105d56020916101fe565b0190565b610208565b906105f06105eb836105bb565b61025e565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61062660056105de565b90610633602083016105f5565b565b61063d61061c565b90565b610648610635565b90565b610653610640565b90565b5190565b60209181520190565b90825f9392825e0152565b61068d61069660209361069b9361068481610656565b9384809361065a565b95869101610663565b6101fe565b0190565b6106b49160208201915f81840391015261066e565b90565b346106e7576106c73660046100f2565b6106e36106d261064b565b6106da6100e4565b9182918261069f565b0390f35b6100ea565b90565b6106f8816106ec565b036106ff57565b5f80fd5b90503590610710826106ef565b565b919060a0838203126107635761072a815f85016101e7565b926107388260208301610703565b9261076061074984604085016101e7565b936107578160608601610703565b936080016101e7565b90565b6100ee565b3461079a5761078461077b366004610712565b939290926117f3565b61078c6100e4565b806107968161033f565b0390f35b6100ea565b919060a0838203126107f0576107b7815f85016101e7565b926107c582602083016101e7565b926107ed6107d68460408501610703565b936107e48160608601610703565b936080016101e7565b90565b6100ee565b61080c61080336600461079f565b93929092611e64565b6108146100e4565b8061081e8161033f565b0390f35b9060208282031261083b57610838915f016101e7565b90565b6100ee565b3461086e57610858610853366004610822565b6123e4565b6108606100e4565b8061086a8161033f565b0390f35b6100ea565b346108a15761088b610886366004610822565b612474565b6108936100e4565b8061089d8161033f565b0390f35b6100ea565b5f80fd5b906108bc916108b761248b565b6108be565b565b906108d1916108cc8161255d565b6125cd565b565b906108dd916108aa565b565b5f90565b6108f4906108ef61270b565b610947565b90565b90565b5f1b90565b61091361090e610918926108f7565b6108fa565b61036e565b90565b6109447f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6108ff565b90565b5061095061091b565b90565b61096361095e6108df565b6108e3565b90565b61096e612789565b6109766109a3565b565b90565b61098f61098a61099492610978565b610447565b610153565b90565b6109a09061097b565b90565b6109b46109af5f610997565b6127f7565b565b6109be610966565b565b5f90565b5f1c90565b6109d56109da916109c4565b610105565b90565b6109e790546109c9565b90565b6109f26109c0565b50610a055f6109ff612863565b016109dd565b90565b90610a1d94939291610a1861294b565b610f41565b610a256129f7565b565b90565b610a3e610a39610a4392610a27565b610447565b6106ec565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610a82610a88919392936106ec565b926106ec565b8201809211610a9357565b610a46565b610aa19061044a565b90565b610aad90610a98565b90565b610ab990610466565b90565b5f80fd5b60e01b90565b67ffffffffffffffff8111610ade5760208091020190565b610208565b5f80fd5b90505190610af4826101d3565b565b90929192610b0b610b0682610ac6565b61025e565b9381855260208086019202830192818411610b4857915b838310610b2f5750505050565b60208091610b3d8486610ae7565b815201920191610b22565b610ae3565b9080601f83011215610b6b57816020610b6893519101610af6565b90565b6101f6565b90602082820312610ba0575f82015167ffffffffffffffff8111610b9b57610b989201610b4d565b90565b6101cf565b6100ee565b610bad6100e4565b3d5f823e3d90fd5b5190565b67ffffffffffffffff8111610bd15760208091020190565b610208565b90610be8610be383610bb9565b61025e565b918252565b369037565b90610c17610bff83610bd6565b92602080610c0d8693610bb9565b9201910390610bed565b565b610c2d610c28610c3292610978565b610447565b6106ec565b90565b6001610c4191016106ec565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90610c7b82610bb5565b811015610c8c576020809102010190565b610c44565b610c9b905161016c565b90565b610ca79061044a565b90565b610cb390610c9e565b90565b610cbf90610466565b90565b610ccb90610466565b90565b90505190610cdb826106ef565b565b90602082820312610cf657610cf3915f01610cce565b90565b6100ee565b5190565b90610d0982610cfb565b811015610d1a576020809102010190565b610c44565b90610d29906106ec565b9052565b151590565b610d3b81610d2d565b03610d4257565b5f80fd5b90505190610d5382610d32565b565b90602082820312610d6e57610d6b915f01610d46565b90565b6100ee565b610d7c906106ec565b9052565b604090610da9610db09496959396610d9f60608401985f850190610178565b6020830190610178565b0190610d73565b565b916020610dd3929493610dcc60408201965f830190610178565b0190610d73565b565b604090610dfe610e059496959396610df460608401985f850190610d73565b6020830190610178565b0190610d73565b565b610e1190516106ec565b90565b610e23610e29919392936106ec565b926106ec565b8203918211610e3457565b610a46565b5f7f496e73756666696369656e74206f757470757420616d6f756e74000000000000910152565b610e6d601a60209261065a565b610e7681610e39565b0190565b610e8f9060208101905f818303910152610e60565b90565b15610e9957565b610ea16100e4565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610ed160048201610e7a565b0390fd5b610ede9061044a565b90565b610eea90610ed5565b90565b610ef690610466565b90565b5f910312610f0357565b6100ee565b9190610f1b905f60208501940190610d73565b565b610f269061044a565b90565b610f3290610f1d565b90565b610f3e90610466565b90565b9093610f5842610f5261012c610a2a565b90610a73565b92610f6283610aa4565b96610f865f610f708a610ab0565b6367e4ac2c90610f7e6100e4565b938492610ac0565b82528180610f966004820161033f565b03915afa9081156117ee575f916117cc575b5095610fbb610fb688610bb5565b610bf2565b95610fcd610fc889610bb5565b610bf2565b99610fd75f610c19565b5b80610ff3610fed610fe88d610bb5565b6106ec565b916106ec565b10156110c55761105490602061102261101d6110186110138f8690610c71565b610c91565b610caa565b610cb6565b6370a082319061104961103430610cc2565b9261103d6100e4565b96879485938493610ac0565b835260048301610185565b03915afa9182156110c057611087928e611082925f9261108c575b5061107d9091849092610cff565b610d1f565b610c35565b610fd8565b61107d9192506110b29060203d81116110b9575b6110aa8183610235565b810190610cdd565b919061106f565b503d6110a0565b610ba5565b509091929394969997959861111860206110e66110e189610caa565b610cb6565b6370a082319061110d6110f830610cc2565b926111016100e4565b95869485938493610ac0565b835260048301610185565b03915afa9081156117c7575f91611799575b509961113d61113882610caa565b610cb6565b9060206323b872dd92339061116e5f61115530610cc2565b96611179896111626100e4565b998a9788968795610ac0565b855260048501610d80565b03925af19081156117945761119c9261119792611768575b50610caa565b610cb6565b91602063095ea7b3936111ae83610ab0565b906111cc5f86976111d76111c06100e4565b998a9687958694610ac0565b845260048401610db2565b03925af1908115611763576020936111f492611738575b50610ab0565b61121e5f63e63697c861122961120930610cc2565b976112126100e4565b98899788968795610ac0565b855260048501610dd5565b03925af1801561173357611707575b506112425f610c19565b9461124c5f610c19565b955b8661126961126361125e89610bb5565b6106ec565b916106ec565b10156114c95761128261127d878990610c71565b610c91565b61129461128e8761016c565b9161016c565b145f146113a6576112f560206112c36112be6112b96112b48b8d90610c71565b610c91565b610caa565b610cb6565b6370a08231906112ea6112d530610cc2565b926112de6100e4565b95869485938493610ac0565b835260048301610185565b03915afa9182156113a1576113418c61133c611334611361968d8f61135a985f93611367575b5061132e9161132991610cff565b610e07565b90610e14565b8c9092610cff565b610d1f565b61135461134f8d8b90610cff565b610e07565b90610a73565b965b610c35565b9561124e565b6113299193509161139161132e9360203d811161139a575b6113898183610235565b810190610cdd565b9391509161131b565b503d61137f565b610ba5565b61140060206113ce6113c96113c46113bf8b8d90610c71565b610c91565b610caa565b610cb6565b6370a08231906113f56113e030610cc2565b926113e96100e4565b95869485938493610ac0565b835260048301610185565b03915afa9182156114c45761144c8c61144761143f611361968d8f611484985f9361148a575b506114399161143491610cff565b610e07565b90610e14565b8c9092610cff565b610d1f565b61147e61146261145d8a8c90610c71565b610c91565b8d6114766114718d8c93610cff565b610e07565b903392612b60565b90610a73565b9661135c565b611434919350916114b46114399360203d81116114bd575b6114ac8183610235565b810190610cdd565b93915091611426565b503d6114a2565b610ba5565b5095509592509550915061151b60206114e96114e485610caa565b610cb6565b6370a08231906115106114fb30610cc2565b926115046100e4565b95869485938493610ac0565b835260048301610185565b03915afa918215611702576115569261153b925f916116d4575b50610e14565b9361154f61154986926106ec565b916106ec565b1015610e92565b8061157261156c61156760026109dd565b61016c565b9161016c565b145f1461164b575061159461158f61158a60026109dd565b610ee1565b610eed565b90632e1a7d4d83833b15611646576115cb936115c05f80946115b46100e4565b97889586948593610ac0565b835260048301610f08565b03925af1908115611641575f936115f66115f18695938695948695611615575b50610f29565b610f35565b82821561160c575bf115611607575b565b610ba5565b506108fc6115fe565b61163490863d811161163a575b61162c8183610235565b810190610ef9565b5f6115eb565b503d611622565b610ba5565b610abc565b9161166061165b60209394610caa565b610cb6565b6116835f63a9059cbb95939561168e6116776100e4565b97889687958694610ac0565b845260048401610db2565b03925af180156116cf576116a3575b50611605565b6116c39060203d81116116c8575b6116bb8183610235565b810190610d55565b61169d565b503d6116b1565b610ba5565b6116f5915060203d81116116fb575b6116ed8183610235565b810190610cdd565b5f611535565b503d6116e3565b610ba5565b6117279060203d811161172c575b61171f8183610235565b810190610cdd565b611238565b503d611715565b610ba5565b61175790853d811161175c575b61174f8183610235565b810190610d55565b6111ee565b503d611745565b610ba5565b6117889060203d811161178d575b6117808183610235565b810190610d55565b611191565b503d611776565b610ba5565b6117ba915060203d81116117c0575b6117b28183610235565b810190610cdd565b5f61112a565b503d6117a8565b610ba5565b6117e891503d805f833e6117e08183610235565b810190610b70565b5f610fa8565b610ba5565b9061180094939291610a08565b565b906118179493929161181261294b565b6119c4565b61181f6129f7565b565b5f7f496e636f72726563742045544820616d6f756e74000000000000000000000000910152565b611855601460209261065a565b61185e81611821565b0190565b6118779060208101905f818303910152611848565b90565b1561188157565b6118896100e4565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806118b960048201611862565b0390fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6118f66118fc916106ec565b916106ec565b908115611907570490565b6118bd565b60209181520190565b60200190565b611924906106ec565b9052565b906119358160209361191b565b0190565b60200190565b9061195c61195661194f84610cfb565b809361190c565b92611915565b905f5b81811061196c5750505090565b90919261198561197f6001928651611928565b94611939565b910191909161195f565b9392906119ba6040916119c2946119ad60608901925f8a0190610178565b878203602089015261193f565b940190610d73565b565b93929190916119e76119e1426119db61012c610a2a565b90610a73565b95610aa4565b611a0a5f6119f483610ab0565b6367e4ac2c90611a026100e4565b938492610ac0565b82528180611a1a6004820161033f565b03915afa908115611e5f575f91611e3d575b5094611a3f611a3a87610bb5565b610bf2565b9480611a5b611a55611a505f610997565b61016c565b9161016c565b145f14611daa5750611a7f34611a79611a73876106ec565b916106ec565b1461187a565b611a99611a94611a8f60026109dd565b610ee1565b610eed565b63d0e30db0859190813b15611da5575f91611ac091611ab66100e4565b9485938492610ac0565b825281611acf6004820161033f565b03925af18015611da057611d74575b50611ae960026109dd565b975b611af45f610c19565b5b80611b10611b0a611b058b610bb5565b6106ec565b916106ec565b1015611bfd57611b74908a611b3f611b39611b34611b2f8d8690610c71565b610c91565b61016c565b9161016c565b145f14611b7957611b6e611b5c88611b568c610bb5565b906118ea565b611b698a91849092610cff565b610d1f565b5b610c35565b611af5565b611bc9611bb78c611b93611b8e8d8690610c71565b610c91565b611ba78d611ba18d91610bb5565b906118ea565b90611bb130610cc2565b92612b60565b611bc48a91849092610cff565b610d1f565b611bf8611bdf611bda8a8490610cff565b610e07565b611bf1611beb896106ec565b916106ec565b1015610e92565b611b6f565b509350949650949050611c0f5f610c19565b5b80611c2b611c25611c208a610bb5565b6106ec565b916106ec565b1015611cf157611c54611c4f611c4a611c458a8590610c71565b610c91565b610caa565b610cb6565b90602063095ea7b392611c6689610ab0565b90611c965f611c7e611c798b8890610cff565b610e07565b96611ca1611c8a6100e4565b98899687958694610ac0565b845260048401610db2565b03925af1918215611cec57611cbb92611cc0575b50610c35565b611c10565b611ce09060203d8111611ce5575b611cd88183610235565b810190610d55565b611cb5565b503d611cce565b610ba5565b50936020939195505f611d06611d2692610ab0565b92611d3163b3bf9d32919597611d1a6100e4565b98899788968795610ac0565b85526004850161198f565b03925af18015611d6f57611d43575b50565b611d639060203d8111611d68575b611d5b8183610235565b810190610cdd565b611d40565b503d611d51565b610ba5565b611d93905f3d8111611d99575b611d8b8183610235565b810190610ef9565b5f611ade565b503d611d81565b610ba5565b610abc565b97611dbc611db78a610caa565b610cb6565b60206323b872dd913390611dec5f611dd330610cc2565b95611df78c611de06100e4565b98899788968795610ac0565b855260048501610d80565b03925af18015611e3857611e0c575b50611aeb565b611e2c9060203d8111611e31575b611e248183610235565b810190610d55565b611e06565b503d611e1a565b610ba5565b611e5991503d805f833e611e518183610235565b810190610b70565b5f611a2c565b610ba5565b90611e7194939291611802565b565b60401c90565b60ff1690565b611e8b611e9091611e73565b611e79565b90565b611e9d9054611e7f565b90565b67ffffffffffffffff1690565b611eb9611ebe916109c4565b611ea0565b90565b611ecb9054611ead565b90565b67ffffffffffffffff1690565b611eef611eea611ef492610978565b610447565b611ece565b90565b90565b611f0e611f09611f1392611ef7565b610447565b611ece565b90565b611f1f90610466565b90565b90611f3567ffffffffffffffff916108fa565b9181191691161790565b611f53611f4e611f5892611ece565b610447565b611ece565b90565b90565b90611f73611f6e611f7a92611f3f565b611f5b565b8254611f22565b9055565b60401b90565b90611f9868ff000000000000000091611f7e565b9181191691161790565b611fab90610d2d565b90565b90565b90611fc6611fc1611fcd92611fa2565b611fae565b8254611f84565b9055565b611fda90611efa565b9052565b9190611ff1905f60208501940190611fd1565b565b611ffb612e06565b9061201061200a5f8401611e93565b15610d2d565b9061201c5f8401611ec1565b8061202f6120295f611edb565b91611ece565b1480612169575b9061204a6120446001611efa565b91611ece565b1480612141575b61205c909115610d2d565b9081612130575b506120f45761208c906120816120796001611efa565b5f8601611f5e565b826120e2575b612295565b612094575b50565b6120a1905f809101611fb1565b60016120d97fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916120d06100e4565b91829182611fde565b0390a15f612091565b6120ef60015f8601611fb1565b612087565b6120fc6100e4565b7ff92ee8a90000000000000000000000000000000000000000000000000000000081528061212c6004820161033f565b0390fd5b61213b915015610d2d565b5f612063565b5061205c61214e30611f16565b3b61216161215b5f610c19565b916106ec565b149050612051565b5082612036565b6121799061044a565b90565b61218590612170565b90565b906121a773ffffffffffffffffffffffffffffffffffffffff916108fa565b9181191691161790565b6121ba90612170565b90565b90565b906121d56121d06121dc926121b1565b6121bd565b8254612188565b9055565b6121ec6121f1916109c4565b6103fb565b90565b6121fe90546121e0565b90565b9060208282031261221a57612217915f01610ae7565b90565b6100ee565b6122289061044a565b90565b6122349061221f565b90565b6122409061221f565b90565b90565b9061225b61225661226292612237565b612243565b8254612188565b9055565b61226f90610466565b90565b90565b9061228a61228561229192612266565b612272565b8254612188565b9055565b6122ba6122c0916122a533612e48565b6122ad612e6f565b6122b5612e83565b61217c565b5f6121c0565b6122ec60206122d66122d15f6121f4565b610472565b6382755ebb906122e46100e4565b938492610ac0565b825281806122fc6004820161033f565b03915afa9081156123df576123239161231c915f916123b1575b5061222b565b6001612246565b61234f60206123396123345f6121f4565b610472565b636c9c0078906123476100e4565b938492610ac0565b8252818061235f6004820161033f565b03915afa80156123ac5761237c915f9161237e575b506002612275565b565b61239f915060203d81116123a5575b6123978183610235565b810190612201565b5f612374565b503d61238d565b610ba5565b6123d2915060203d81116123d8575b6123ca8183610235565b810190612201565b5f612316565b503d6123c0565b610ba5565b6123ed90611ff3565b565b612400906123fb612789565b612402565b565b8061241d6124176124125f610997565b61016c565b9161016c565b1461242d5761242b906127f7565b565b6124706124395f610997565b6124416100e4565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b61247d906123ef565b565b61248890610466565b90565b6124943061247f565b6124c66124c07f000000000000000000000000000000000000000000000000000000000000000061016c565b9161016c565b148015612510575b6124d457565b6124dc6100e4565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061250c6004820161033f565b0390fd5b50612519612e8d565b61254b6125457f000000000000000000000000000000000000000000000000000000000000000061016c565b9161016c565b14156124ce565b5061255b612789565b565b61256690612552565b565b6125719061044a565b90565b61257d90612568565b90565b61258990610466565b90565b6125958161036e565b0361259c57565b5f80fd5b905051906125ad8261258c565b565b906020828203126125c8576125c5915f016125a0565b90565b6100ee565b91906125fb60206125e56125e086612574565b612580565b6352d1902d906125f36100e4565b938492610ac0565b8252818061260b6004820161033f565b03915afa80915f926126db575b50155f1461266c57505090600161262d57505b565b612668906126396100e4565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b928361268761268161267c61091b565b61036e565b9161036e565b0361269c57612697929350612eb7565b61262b565b6126d7846126a86100e4565b9182917faa1d49a40000000000000000000000000000000000000000000000000000000083526004830161037e565b0390fd5b6126fd91925060203d8111612704575b6126f58183610235565b8101906125af565b905f612618565b503d6126eb565b6127143061247f565b6127466127407f000000000000000000000000000000000000000000000000000000000000000061016c565b9161016c565b0361274d57565b6127556100e4565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806127856004820161033f565b0390fd5b6127916109ea565b6127aa6127a461279f612f40565b61016c565b9161016c565b036127b157565b6127f36127bc612f40565b6127c46100e4565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b6127ff612863565b61281761280d5f83016109dd565b915f849101612275565b9061284b6128457f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093612266565b91612266565b916128546100e4565b8061285e8161033f565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b90565b61289661289b916109c4565b612887565b90565b6128a8905461288a565b90565b90565b6128c26128bd6128c7926128ab565b610447565b6106ec565b90565b6128d460026128ae565b90565b906129027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916108fa565b9181191691161790565b61292061291b612925926106ec565b610447565b6106ec565b90565b90565b9061294061293b6129479261290c565b612928565b82546128d7565b9055565b612953612f4d565b61295e5f820161289e565b61297761297161296c6128ca565b6106ec565b916106ec565b1461299257612990905f6129896128ca565b910161292b565b565b61299a6100e4565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000008152806129ca6004820161033f565b0390fd5b6129e26129dd6129e792611ef7565b610447565b6106ec565b90565b6129f460016129ce565b90565b612a12612a02612f4d565b5f612a0b6129ea565b910161292b565b565b5f90565b612a24612a29916109c4565b6104d5565b90565b612a369054612a18565b90565b612a6e612a7594612a64606094989795612a5a608086019a5f870190610178565b6020850190610178565b6040830190610d73565b0190610178565b565b90959492612ac294612ab1612abb92612aa7608096612a9d60a088019c5f890190610178565b6020870190610178565b6040850190610178565b6060830190610d73565b0190610178565b565b5f7f53776170206661696c6564000000000000000000000000000000000000000000910152565b612af8600b60209261065a565b612b0181612ac4565b0190565b612b1a9060208101905f818303910152612aeb565b90565b15612b2457565b612b2c6100e4565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612b5c60048201612b05565b0390fd5b92919091612b6c612a14565b93612b996020612b83612b7e5f6121f4565b610472565b636c9c007890612b916100e4565b938492610ac0565b82528180612ba96004820161033f565b03915afa908115612e01575f91612dd3575b509281612bd0612bca8761016c565b9161016c565b14612dca57612be6612be183610caa565b610cb6565b602063095ea7b391612c00612bfb6001612a2c565b610523565b90612c1e5f8695612c29612c126100e4565b97889687958694610ac0565b845260048401610db2565b03925af18015612dc557612d99575b50612c4b612c466001612a2c565b610523565b6020632d6bc8ea918490612c755f8a95612c80888b90612c696100e4565b998a9889978896610ac0565b865260048601612a39565b03925af180915f92612d69575b50155f14612d5d57506001612cc2575b50505050505b612cbf81612cb9612cb35f610c19565b916106ec565b11612b1d565b90565b6020949550612d0291612d0d5f92612ce2612cdd6001612a2c565b610523565b95635efaaebb939799919091612cf66100e4565b9a8b998a988997610ac0565b875260048701612a77565b03925af1908115612d58575f91612d2a575b505f80808080612c9d565b612d4b915060203d8111612d51575b612d438183610235565b810190610cdd565b5f612d1f565b503d612d39565b610ba5565b95505050505050612ca3565b612d8b91925060203d8111612d92575b612d838183610235565b810190610cdd565b905f612c8d565b503d612d79565b612db99060203d8111612dbe575b612db18183610235565b810190610d55565b612c38565b503d612da7565b610ba5565b94505050505090565b612df4915060203d8111612dfa575b612dec8183610235565b810190612201565b5f612bbb565b503d612de2565b610ba5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612e3b90612e36612f71565b612e3d565b565b612e4690613049565b565b612e5190612e2a565b565b612e5b612f71565b612e63612e65565b565b612e6d613083565b565b612e77612e53565b565b612e81612f71565b565b612e8b612e79565b565b612e956109c0565b50612eb05f612eaa612ea561091b565b61308d565b016109dd565b90565b5190565b90612ec182613090565b81612eec7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91612266565b90612ef56100e4565b80612eff8161033f565b0390a2612f0b81612eb3565b612f1d612f175f610c19565b916106ec565b115f14612f3157612f2d916131a0565b505b565b5050612f3b613105565b612f2f565b612f486109c0565b503390565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b612f82612f7c6131d3565b15610d2d565b612f8857565b612f906100e4565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612fc06004820161033f565b0390fd5b612fd590612fd0612f71565b612fd7565b565b80612ff2612fec612fe75f610997565b61016c565b9161016c565b1461300257613000906127f7565b565b61304561300e5f610997565b6130166100e4565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b61305290612fc4565b565b61305c612f71565b613064613066565b565b613081613071612f4d565b5f61307a6129ea565b910161292b565b565b61308b613054565b565b90565b803b6130a461309e5f610c19565b916106ec565b146130c6576130c4905f6130be6130b961091b565b61308d565b01612275565b565b613101906130d26100e4565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b346131186131125f610c19565b916106ec565b1161311f57565b6131276100e4565b7fb398979f000000000000000000000000000000000000000000000000000000008152806131576004820161033f565b0390fd5b606090565b9061317261316d83610273565b61025e565b918252565b3d5f14613192576131873d613160565b903d5f602084013e5b565b61319a61315b565b90613190565b5f806131cc936131ae61315b565b508390602081019051915af4906131c3613177565b909190916131f1565b90565b5f90565b6131db6131cf565b506131ee5f6131e8612e06565b01611e93565b90565b90613205906131fe61315b565b5015610d2d565b5f146132115750613295565b61321a82612eb3565b61322c6132265f610c19565b916106ec565b148061327a575b61323b575090565b613276906132476100e4565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b50803b61328f6132895f610c19565b916106ec565b14613233565b61329e81612eb3565b6132b06132aa5f610c19565b916106ec565b115f146132bf57805190602001fd5b6132c76100e4565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806132f76004820161033f565b0390fdfea2646970667358221220a1058efb432de981fa2fe4ef79521bb6b92bd07801933e12399c68b567fc12f364736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x3331 PUSH2 0x94 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x249C ADD MSTORE DUP2 DUP2 PUSH2 0x2521 ADD MSTORE PUSH2 0x271C ADD MSTORE PUSH2 0x3331 SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x87 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x6C PUSH1 0x68 PUSH1 0x70 SWAP3 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x5A JUMP JUMPDEST PUSH1 0x4F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7A SWAP1 PUSH1 0x5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x73 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8E ADDRESS PUSH1 0x7D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x8A6 JUMPI STOP JUMPDEST PUSH2 0x1F PUSH0 CALLDATALOAD PUSH2 0xDE JUMP JUMPDEST DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0x7DFB7EA1 EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xBB JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xB1AA8CD1 EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xB487C54A EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xA7 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0x873 JUMP JUMPDEST PUSH2 0x840 JUMP JUMPDEST PUSH2 0x7F5 JUMP JUMPDEST PUSH2 0x768 JUMP JUMPDEST PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x586 JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH2 0x4A0 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST PUSH2 0x393 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST PUSH2 0x19A JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0xFC JUMPI JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x12E SWAP1 PUSH1 0x8 PUSH2 0x133 SWAP4 MUL PUSH2 0x101 JUMP JUMPDEST PUSH2 0x105 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x141 SWAP2 SLOAD PUSH2 0x11E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x150 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x136 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x175 SWAP1 PUSH2 0x153 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x181 SWAP1 PUSH2 0x16C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x198 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x1CA JUMPI PUSH2 0x1AA CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1B5 PUSH2 0x144 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1DC DUP2 PUSH2 0x16C JUMP JUMPDEST SUB PUSH2 0x1E3 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1F4 DUP3 PUSH2 0x1D3 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x23F SWAP1 PUSH2 0x1FE JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x259 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST SWAP1 PUSH2 0x271 PUSH2 0x26A PUSH2 0xE4 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x235 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x291 JUMPI PUSH2 0x28D PUSH1 0x20 SWAP2 PUSH2 0x1FE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2B6 PUSH2 0x2B1 DUP3 PUSH2 0x273 JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x2D2 JUMPI PUSH2 0x2D0 SWAP3 PUSH2 0x296 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2F5 JUMPI DUP2 PUSH1 0x20 PUSH2 0x2F2 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x2A1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x33A JUMPI PUSH2 0x313 DUP4 PUSH0 DUP4 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x335 JUMPI PUSH2 0x332 SWAP3 ADD PUSH2 0x2D7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CF JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x358 PUSH2 0x352 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FA JUMP JUMPDEST SWAP1 PUSH2 0x8D3 JUMP JUMPDEST PUSH2 0x360 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x36A DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x37A SWAP1 PUSH2 0x36E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x391 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x371 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x3C3 JUMPI PUSH2 0x3A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x3BF PUSH2 0x3AE PUSH2 0x953 JUMP JUMPDEST PUSH2 0x3B6 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x37E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST CALLVALUE PUSH2 0x3F6 JUMPI PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x3E0 PUSH2 0x9B6 JUMP JUMPDEST PUSH2 0x3E8 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x3F2 DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x424 SWAP1 PUSH1 0x8 PUSH2 0x429 SWAP4 MUL PUSH2 0x101 JUMP JUMPDEST PUSH2 0x3FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x437 SWAP2 SLOAD PUSH2 0x414 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x444 PUSH0 DUP1 PUSH2 0x42C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x45E PUSH2 0x459 PUSH2 0x463 SWAP3 PUSH2 0x153 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x153 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x46F SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47B SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x487 SWAP1 PUSH2 0x472 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x49E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x47E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4D0 JUMPI PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x4CC PUSH2 0x4BB PUSH2 0x43A JUMP JUMPDEST PUSH2 0x4C3 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x48B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4FE SWAP1 PUSH1 0x8 PUSH2 0x503 SWAP4 MUL PUSH2 0x101 JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x511 SWAP2 SLOAD PUSH2 0x4EE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x520 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52C SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x538 SWAP1 PUSH2 0x523 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x54F SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x52F JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x581 JUMPI PUSH2 0x561 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x57D PUSH2 0x56C PUSH2 0x514 JUMP JUMPDEST PUSH2 0x574 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x53C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST CALLVALUE PUSH2 0x5B6 JUMPI PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x5B2 PUSH2 0x5A1 PUSH2 0x9EA JUMP JUMPDEST PUSH2 0x5A9 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x5D9 JUMPI PUSH2 0x5D5 PUSH1 0x20 SWAP2 PUSH2 0x1FE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST SWAP1 PUSH2 0x5F0 PUSH2 0x5EB DUP4 PUSH2 0x5BB JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x626 PUSH1 0x5 PUSH2 0x5DE JUMP JUMPDEST SWAP1 PUSH2 0x633 PUSH1 0x20 DUP4 ADD PUSH2 0x5F5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x63D PUSH2 0x61C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x648 PUSH2 0x635 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x653 PUSH2 0x640 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x68D PUSH2 0x696 PUSH1 0x20 SWAP4 PUSH2 0x69B SWAP4 PUSH2 0x684 DUP2 PUSH2 0x656 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x65A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x663 JUMP JUMPDEST PUSH2 0x1FE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x6B4 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x66E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6E7 JUMPI PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x6E3 PUSH2 0x6D2 PUSH2 0x64B JUMP JUMPDEST PUSH2 0x6DA PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x69F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6F8 DUP2 PUSH2 0x6EC JUMP JUMPDEST SUB PUSH2 0x6FF JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x710 DUP3 PUSH2 0x6EF JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x763 JUMPI PUSH2 0x72A DUP2 PUSH0 DUP6 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP3 PUSH2 0x738 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x703 JUMP JUMPDEST SWAP3 PUSH2 0x760 PUSH2 0x749 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP4 PUSH2 0x757 DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x703 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST CALLVALUE PUSH2 0x79A JUMPI PUSH2 0x784 PUSH2 0x77B CALLDATASIZE PUSH1 0x4 PUSH2 0x712 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x17F3 JUMP JUMPDEST PUSH2 0x78C PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x796 DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x7F0 JUMPI PUSH2 0x7B7 DUP2 PUSH0 DUP6 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP3 PUSH2 0x7C5 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP3 PUSH2 0x7ED PUSH2 0x7D6 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x703 JUMP JUMPDEST SWAP4 PUSH2 0x7E4 DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x703 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH2 0x80C PUSH2 0x803 CALLDATASIZE PUSH1 0x4 PUSH2 0x79F JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x1E64 JUMP JUMPDEST PUSH2 0x814 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x81E DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x83B JUMPI PUSH2 0x838 SWAP2 PUSH0 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST CALLVALUE PUSH2 0x86E JUMPI PUSH2 0x858 PUSH2 0x853 CALLDATASIZE PUSH1 0x4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x23E4 JUMP JUMPDEST PUSH2 0x860 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x86A DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST CALLVALUE PUSH2 0x8A1 JUMPI PUSH2 0x88B PUSH2 0x886 CALLDATASIZE PUSH1 0x4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x2474 JUMP JUMPDEST PUSH2 0x893 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x89D DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0x8BC SWAP2 PUSH2 0x8B7 PUSH2 0x248B JUMP JUMPDEST PUSH2 0x8BE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x8D1 SWAP2 PUSH2 0x8CC DUP2 PUSH2 0x255D JUMP JUMPDEST PUSH2 0x25CD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x8DD SWAP2 PUSH2 0x8AA JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x8F4 SWAP1 PUSH2 0x8EF PUSH2 0x270B JUMP JUMPDEST PUSH2 0x947 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x913 PUSH2 0x90E PUSH2 0x918 SWAP3 PUSH2 0x8F7 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x36E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x944 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x8FF JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x950 PUSH2 0x91B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x963 PUSH2 0x95E PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x8E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x96E PUSH2 0x2789 JUMP JUMPDEST PUSH2 0x976 PUSH2 0x9A3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x98F PUSH2 0x98A PUSH2 0x994 SWAP3 PUSH2 0x978 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x153 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9A0 SWAP1 PUSH2 0x97B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9B4 PUSH2 0x9AF PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x27F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9BE PUSH2 0x966 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x9D5 PUSH2 0x9DA SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x105 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9E7 SWAP1 SLOAD PUSH2 0x9C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9F2 PUSH2 0x9C0 JUMP JUMPDEST POP PUSH2 0xA05 PUSH0 PUSH2 0x9FF PUSH2 0x2863 JUMP JUMPDEST ADD PUSH2 0x9DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA1D SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0xA18 PUSH2 0x294B JUMP JUMPDEST PUSH2 0xF41 JUMP JUMPDEST PUSH2 0xA25 PUSH2 0x29F7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA3E PUSH2 0xA39 PUSH2 0xA43 SWAP3 PUSH2 0xA27 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xA82 PUSH2 0xA88 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x6EC JUMP JUMPDEST SWAP3 PUSH2 0x6EC JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0xA93 JUMPI JUMP JUMPDEST PUSH2 0xA46 JUMP JUMPDEST PUSH2 0xAA1 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAAD SWAP1 PUSH2 0xA98 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAB9 SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xADE JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xAF4 DUP3 PUSH2 0x1D3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xB0B PUSH2 0xB06 DUP3 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0xB48 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0xB2F JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0xB3D DUP5 DUP7 PUSH2 0xAE7 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0xB22 JUMP JUMPDEST PUSH2 0xAE3 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xB6B JUMPI DUP2 PUSH1 0x20 PUSH2 0xB68 SWAP4 MLOAD SWAP2 ADD PUSH2 0xAF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F6 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xBA0 JUMPI PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB9B JUMPI PUSH2 0xB98 SWAP3 ADD PUSH2 0xB4D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CF JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH2 0xBAD PUSH2 0xE4 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBD1 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST SWAP1 PUSH2 0xBE8 PUSH2 0xBE3 DUP4 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0xC17 PUSH2 0xBFF DUP4 PUSH2 0xBD6 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0xC0D DUP7 SWAP4 PUSH2 0xBB9 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0xBED JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC2D PUSH2 0xC28 PUSH2 0xC32 SWAP3 PUSH2 0x978 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC41 SWAP2 ADD PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xC7B DUP3 PUSH2 0xBB5 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xC8C JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xC44 JUMP JUMPDEST PUSH2 0xC9B SWAP1 MLOAD PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA7 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB3 SWAP1 PUSH2 0xC9E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCBF SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCCB SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xCDB DUP3 PUSH2 0x6EF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xCF6 JUMPI PUSH2 0xCF3 SWAP2 PUSH0 ADD PUSH2 0xCCE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD09 DUP3 PUSH2 0xCFB JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xD1A JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xC44 JUMP JUMPDEST SWAP1 PUSH2 0xD29 SWAP1 PUSH2 0x6EC JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xD3B DUP2 PUSH2 0xD2D JUMP JUMPDEST SUB PUSH2 0xD42 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD53 DUP3 PUSH2 0xD32 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xD6E JUMPI PUSH2 0xD6B SWAP2 PUSH0 ADD PUSH2 0xD46 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH2 0xD7C SWAP1 PUSH2 0x6EC JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xDA9 PUSH2 0xDB0 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xD9F PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0xDD3 SWAP3 SWAP5 SWAP4 PUSH2 0xDCC PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xDFE PUSH2 0xE05 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xDF4 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xE11 SWAP1 MLOAD PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE23 PUSH2 0xE29 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x6EC JUMP JUMPDEST SWAP3 PUSH2 0x6EC JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0xE34 JUMPI JUMP JUMPDEST PUSH2 0xA46 JUMP JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E74206F757470757420616D6F756E74000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xE6D PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x65A JUMP JUMPDEST PUSH2 0xE76 DUP2 PUSH2 0xE39 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xE8F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xE60 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xE99 JUMPI JUMP JUMPDEST PUSH2 0xEA1 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xED1 PUSH1 0x4 DUP3 ADD PUSH2 0xE7A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xEDE SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEEA SWAP1 PUSH2 0xED5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEF6 SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0xF03 JUMPI JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF1B SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF26 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF32 SWAP1 PUSH2 0xF1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF3E SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP4 PUSH2 0xF58 TIMESTAMP PUSH2 0xF52 PUSH2 0x12C PUSH2 0xA2A JUMP JUMPDEST SWAP1 PUSH2 0xA73 JUMP JUMPDEST SWAP3 PUSH2 0xF62 DUP4 PUSH2 0xAA4 JUMP JUMPDEST SWAP7 PUSH2 0xF86 PUSH0 PUSH2 0xF70 DUP11 PUSH2 0xAB0 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0xF7E PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xF96 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x17EE JUMPI PUSH0 SWAP2 PUSH2 0x17CC JUMPI JUMPDEST POP SWAP6 PUSH2 0xFBB PUSH2 0xFB6 DUP9 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST SWAP6 PUSH2 0xFCD PUSH2 0xFC8 DUP10 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST SWAP10 PUSH2 0xFD7 PUSH0 PUSH2 0xC19 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFF3 PUSH2 0xFED PUSH2 0xFE8 DUP14 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0x10C5 JUMPI PUSH2 0x1054 SWAP1 PUSH1 0x20 PUSH2 0x1022 PUSH2 0x101D PUSH2 0x1018 PUSH2 0x1013 DUP16 DUP7 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1049 PUSH2 0x1034 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x103D PUSH2 0xE4 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x10C0 JUMPI PUSH2 0x1087 SWAP3 DUP15 PUSH2 0x1082 SWAP3 PUSH0 SWAP3 PUSH2 0x108C JUMPI JUMPDEST POP PUSH2 0x107D SWAP1 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST PUSH2 0xC35 JUMP JUMPDEST PUSH2 0xFD8 JUMP JUMPDEST PUSH2 0x107D SWAP2 SWAP3 POP PUSH2 0x10B2 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x10B9 JUMPI JUMPDEST PUSH2 0x10AA DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x106F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10A0 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP7 SWAP10 SWAP8 SWAP6 SWAP9 PUSH2 0x1118 PUSH1 0x20 PUSH2 0x10E6 PUSH2 0x10E1 DUP10 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x110D PUSH2 0x10F8 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x1101 PUSH2 0xE4 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x17C7 JUMPI PUSH0 SWAP2 PUSH2 0x1799 JUMPI JUMPDEST POP SWAP10 PUSH2 0x113D PUSH2 0x1138 DUP3 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x23B872DD SWAP3 CALLER SWAP1 PUSH2 0x116E PUSH0 PUSH2 0x1155 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP7 PUSH2 0x1179 DUP10 PUSH2 0x1162 PUSH2 0xE4 JUMP JUMPDEST SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xAC0 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xD80 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1794 JUMPI PUSH2 0x119C SWAP3 PUSH2 0x1197 SWAP3 PUSH2 0x1768 JUMPI JUMPDEST POP PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP4 PUSH2 0x11AE DUP4 PUSH2 0xAB0 JUMP JUMPDEST SWAP1 PUSH2 0x11CC PUSH0 DUP7 SWAP8 PUSH2 0x11D7 PUSH2 0x11C0 PUSH2 0xE4 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xAC0 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDB2 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1763 JUMPI PUSH1 0x20 SWAP4 PUSH2 0x11F4 SWAP3 PUSH2 0x1738 JUMPI JUMPDEST POP PUSH2 0xAB0 JUMP JUMPDEST PUSH2 0x121E PUSH0 PUSH4 0xE63697C8 PUSH2 0x1229 PUSH2 0x1209 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP8 PUSH2 0x1212 PUSH2 0xE4 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xAC0 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xDD5 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1733 JUMPI PUSH2 0x1707 JUMPI JUMPDEST POP PUSH2 0x1242 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP5 PUSH2 0x124C PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP6 JUMPDEST DUP7 PUSH2 0x1269 PUSH2 0x1263 PUSH2 0x125E DUP10 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0x14C9 JUMPI PUSH2 0x1282 PUSH2 0x127D DUP8 DUP10 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0x1294 PUSH2 0x128E DUP8 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x13A6 JUMPI PUSH2 0x12F5 PUSH1 0x20 PUSH2 0x12C3 PUSH2 0x12BE PUSH2 0x12B9 PUSH2 0x12B4 DUP12 DUP14 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x12EA PUSH2 0x12D5 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x12DE PUSH2 0xE4 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x13A1 JUMPI PUSH2 0x1341 DUP13 PUSH2 0x133C PUSH2 0x1334 PUSH2 0x1361 SWAP7 DUP14 DUP16 PUSH2 0x135A SWAP9 PUSH0 SWAP4 PUSH2 0x1367 JUMPI JUMPDEST POP PUSH2 0x132E SWAP2 PUSH2 0x1329 SWAP2 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP1 PUSH2 0xE14 JUMP JUMPDEST DUP13 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST PUSH2 0x1354 PUSH2 0x134F DUP14 DUP12 SWAP1 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP1 PUSH2 0xA73 JUMP JUMPDEST SWAP7 JUMPDEST PUSH2 0xC35 JUMP JUMPDEST SWAP6 PUSH2 0x124E JUMP JUMPDEST PUSH2 0x1329 SWAP2 SWAP4 POP SWAP2 PUSH2 0x1391 PUSH2 0x132E SWAP4 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x139A JUMPI JUMPDEST PUSH2 0x1389 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 PUSH2 0x131B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x137F JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1400 PUSH1 0x20 PUSH2 0x13CE PUSH2 0x13C9 PUSH2 0x13C4 PUSH2 0x13BF DUP12 DUP14 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x13F5 PUSH2 0x13E0 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x13E9 PUSH2 0xE4 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x14C4 JUMPI PUSH2 0x144C DUP13 PUSH2 0x1447 PUSH2 0x143F PUSH2 0x1361 SWAP7 DUP14 DUP16 PUSH2 0x1484 SWAP9 PUSH0 SWAP4 PUSH2 0x148A JUMPI JUMPDEST POP PUSH2 0x1439 SWAP2 PUSH2 0x1434 SWAP2 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP1 PUSH2 0xE14 JUMP JUMPDEST DUP13 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST PUSH2 0x147E PUSH2 0x1462 PUSH2 0x145D DUP11 DUP13 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST DUP14 PUSH2 0x1476 PUSH2 0x1471 DUP14 DUP13 SWAP4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP1 CALLER SWAP3 PUSH2 0x2B60 JUMP JUMPDEST SWAP1 PUSH2 0xA73 JUMP JUMPDEST SWAP7 PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1434 SWAP2 SWAP4 POP SWAP2 PUSH2 0x14B4 PUSH2 0x1439 SWAP4 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x14BD JUMPI JUMPDEST PUSH2 0x14AC DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 PUSH2 0x1426 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14A2 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST POP SWAP6 POP SWAP6 SWAP3 POP SWAP6 POP SWAP2 POP PUSH2 0x151B PUSH1 0x20 PUSH2 0x14E9 PUSH2 0x14E4 DUP6 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1510 PUSH2 0x14FB ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x1504 PUSH2 0xE4 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1702 JUMPI PUSH2 0x1556 SWAP3 PUSH2 0x153B SWAP3 PUSH0 SWAP2 PUSH2 0x16D4 JUMPI JUMPDEST POP PUSH2 0xE14 JUMP JUMPDEST SWAP4 PUSH2 0x154F PUSH2 0x1549 DUP7 SWAP3 PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0xE92 JUMP JUMPDEST DUP1 PUSH2 0x1572 PUSH2 0x156C PUSH2 0x1567 PUSH1 0x2 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x164B JUMPI POP PUSH2 0x1594 PUSH2 0x158F PUSH2 0x158A PUSH1 0x2 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST PUSH2 0xEED JUMP JUMPDEST SWAP1 PUSH4 0x2E1A7D4D DUP4 DUP4 EXTCODESIZE ISZERO PUSH2 0x1646 JUMPI PUSH2 0x15CB SWAP4 PUSH2 0x15C0 PUSH0 DUP1 SWAP5 PUSH2 0x15B4 PUSH2 0xE4 JUMP JUMPDEST SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xF08 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1641 JUMPI PUSH0 SWAP4 PUSH2 0x15F6 PUSH2 0x15F1 DUP7 SWAP6 SWAP4 DUP7 SWAP6 SWAP5 DUP7 SWAP6 PUSH2 0x1615 JUMPI JUMPDEST POP PUSH2 0xF29 JUMP JUMPDEST PUSH2 0xF35 JUMP JUMPDEST DUP3 DUP3 ISZERO PUSH2 0x160C JUMPI JUMPDEST CALL ISZERO PUSH2 0x1607 JUMPI JUMPDEST JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST POP PUSH2 0x8FC PUSH2 0x15FE JUMP JUMPDEST PUSH2 0x1634 SWAP1 DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x163A JUMPI JUMPDEST PUSH2 0x162C DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xEF9 JUMP JUMPDEST PUSH0 PUSH2 0x15EB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1622 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST SWAP2 PUSH2 0x1660 PUSH2 0x165B PUSH1 0x20 SWAP4 SWAP5 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH2 0x1683 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x168E PUSH2 0x1677 PUSH2 0xE4 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xAC0 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDB2 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x16CF JUMPI PUSH2 0x16A3 JUMPI JUMPDEST POP PUSH2 0x1605 JUMP JUMPDEST PUSH2 0x16C3 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x16C8 JUMPI JUMPDEST PUSH2 0x16BB DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x16B1 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x16F5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x16FB JUMPI JUMPDEST PUSH2 0x16ED DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH0 PUSH2 0x1535 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x16E3 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1727 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x172C JUMPI JUMPDEST PUSH2 0x171F DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x1238 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1715 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1757 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x175C JUMPI JUMPDEST PUSH2 0x174F DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x11EE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1745 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1788 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x178D JUMPI JUMPDEST PUSH2 0x1780 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x1191 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1776 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x17BA SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x17C0 JUMPI JUMPDEST PUSH2 0x17B2 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH0 PUSH2 0x112A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x17A8 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x17E8 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x17E0 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB70 JUMP JUMPDEST PUSH0 PUSH2 0xFA8 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST SWAP1 PUSH2 0x1800 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0xA08 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1817 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1812 PUSH2 0x294B JUMP JUMPDEST PUSH2 0x19C4 JUMP JUMPDEST PUSH2 0x181F PUSH2 0x29F7 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x496E636F72726563742045544820616D6F756E74000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1855 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x65A JUMP JUMPDEST PUSH2 0x185E DUP2 PUSH2 0x1821 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1877 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1848 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1881 JUMPI JUMP JUMPDEST PUSH2 0x1889 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x18B9 PUSH1 0x4 DUP3 ADD PUSH2 0x1862 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x18F6 PUSH2 0x18FC SWAP2 PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x1907 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x18BD JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1924 SWAP1 PUSH2 0x6EC JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x1935 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x191B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x195C PUSH2 0x1956 PUSH2 0x194F DUP5 PUSH2 0xCFB JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x190C JUMP JUMPDEST SWAP3 PUSH2 0x1915 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x196C JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x1985 PUSH2 0x197F PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x1928 JUMP JUMPDEST SWAP5 PUSH2 0x1939 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x195F JUMP JUMPDEST SWAP4 SWAP3 SWAP1 PUSH2 0x19BA PUSH1 0x40 SWAP2 PUSH2 0x19C2 SWAP5 PUSH2 0x19AD PUSH1 0x60 DUP10 ADD SWAP3 PUSH0 DUP11 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST DUP8 DUP3 SUB PUSH1 0x20 DUP10 ADD MSTORE PUSH2 0x193F JUMP JUMPDEST SWAP5 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x19E7 PUSH2 0x19E1 TIMESTAMP PUSH2 0x19DB PUSH2 0x12C PUSH2 0xA2A JUMP JUMPDEST SWAP1 PUSH2 0xA73 JUMP JUMPDEST SWAP6 PUSH2 0xAA4 JUMP JUMPDEST PUSH2 0x1A0A PUSH0 PUSH2 0x19F4 DUP4 PUSH2 0xAB0 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1A02 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1A1A PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E5F JUMPI PUSH0 SWAP2 PUSH2 0x1E3D JUMPI JUMPDEST POP SWAP5 PUSH2 0x1A3F PUSH2 0x1A3A DUP8 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST SWAP5 DUP1 PUSH2 0x1A5B PUSH2 0x1A55 PUSH2 0x1A50 PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1DAA JUMPI POP PUSH2 0x1A7F CALLVALUE PUSH2 0x1A79 PUSH2 0x1A73 DUP8 PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ PUSH2 0x187A JUMP JUMPDEST PUSH2 0x1A99 PUSH2 0x1A94 PUSH2 0x1A8F PUSH1 0x2 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST PUSH2 0xEED JUMP JUMPDEST PUSH4 0xD0E30DB0 DUP6 SWAP2 SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x1DA5 JUMPI PUSH0 SWAP2 PUSH2 0x1AC0 SWAP2 PUSH2 0x1AB6 PUSH2 0xE4 JUMP JUMPDEST SWAP5 DUP6 SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 PUSH2 0x1ACF PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1DA0 JUMPI PUSH2 0x1D74 JUMPI JUMPDEST POP PUSH2 0x1AE9 PUSH1 0x2 PUSH2 0x9DD JUMP JUMPDEST SWAP8 JUMPDEST PUSH2 0x1AF4 PUSH0 PUSH2 0xC19 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1B10 PUSH2 0x1B0A PUSH2 0x1B05 DUP12 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0x1BFD JUMPI PUSH2 0x1B74 SWAP1 DUP11 PUSH2 0x1B3F PUSH2 0x1B39 PUSH2 0x1B34 PUSH2 0x1B2F DUP14 DUP7 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1B79 JUMPI PUSH2 0x1B6E PUSH2 0x1B5C DUP9 PUSH2 0x1B56 DUP13 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 PUSH2 0x18EA JUMP JUMPDEST PUSH2 0x1B69 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST JUMPDEST PUSH2 0xC35 JUMP JUMPDEST PUSH2 0x1AF5 JUMP JUMPDEST PUSH2 0x1BC9 PUSH2 0x1BB7 DUP13 PUSH2 0x1B93 PUSH2 0x1B8E DUP14 DUP7 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0x1BA7 DUP14 PUSH2 0x1BA1 DUP14 SWAP2 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 PUSH2 0x18EA JUMP JUMPDEST SWAP1 PUSH2 0x1BB1 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x2B60 JUMP JUMPDEST PUSH2 0x1BC4 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST PUSH2 0x1BF8 PUSH2 0x1BDF PUSH2 0x1BDA DUP11 DUP5 SWAP1 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST PUSH2 0x1BF1 PUSH2 0x1BEB DUP10 PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0xE92 JUMP JUMPDEST PUSH2 0x1B6F JUMP JUMPDEST POP SWAP4 POP SWAP5 SWAP7 POP SWAP5 SWAP1 POP PUSH2 0x1C0F PUSH0 PUSH2 0xC19 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1C2B PUSH2 0x1C25 PUSH2 0x1C20 DUP11 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0x1CF1 JUMPI PUSH2 0x1C54 PUSH2 0x1C4F PUSH2 0x1C4A PUSH2 0x1C45 DUP11 DUP6 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x1C66 DUP10 PUSH2 0xAB0 JUMP JUMPDEST SWAP1 PUSH2 0x1C96 PUSH0 PUSH2 0x1C7E PUSH2 0x1C79 DUP12 DUP9 SWAP1 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP7 PUSH2 0x1CA1 PUSH2 0x1C8A PUSH2 0xE4 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xAC0 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDB2 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1CEC JUMPI PUSH2 0x1CBB SWAP3 PUSH2 0x1CC0 JUMPI JUMPDEST POP PUSH2 0xC35 JUMP JUMPDEST PUSH2 0x1C10 JUMP JUMPDEST PUSH2 0x1CE0 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1CE5 JUMPI JUMPDEST PUSH2 0x1CD8 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x1CB5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1CCE JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST POP SWAP4 PUSH1 0x20 SWAP4 SWAP2 SWAP6 POP PUSH0 PUSH2 0x1D06 PUSH2 0x1D26 SWAP3 PUSH2 0xAB0 JUMP JUMPDEST SWAP3 PUSH2 0x1D31 PUSH4 0xB3BF9D32 SWAP2 SWAP6 SWAP8 PUSH2 0x1D1A PUSH2 0xE4 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xAC0 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x198F JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1D6F JUMPI PUSH2 0x1D43 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1D63 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D68 JUMPI JUMPDEST PUSH2 0x1D5B DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x1D40 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D51 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1D93 SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x1D99 JUMPI JUMPDEST PUSH2 0x1D8B DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xEF9 JUMP JUMPDEST PUSH0 PUSH2 0x1ADE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D81 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST SWAP8 PUSH2 0x1DBC PUSH2 0x1DB7 DUP11 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x1DEC PUSH0 PUSH2 0x1DD3 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP6 PUSH2 0x1DF7 DUP13 PUSH2 0x1DE0 PUSH2 0xE4 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xAC0 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xD80 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1E38 JUMPI PUSH2 0x1E0C JUMPI JUMPDEST POP PUSH2 0x1AEB JUMP JUMPDEST PUSH2 0x1E2C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E31 JUMPI JUMPDEST PUSH2 0x1E24 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x1E06 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E1A JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1E59 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1E51 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB70 JUMP JUMPDEST PUSH0 PUSH2 0x1A2C JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST SWAP1 PUSH2 0x1E71 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1802 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1E8B PUSH2 0x1E90 SWAP2 PUSH2 0x1E73 JUMP JUMPDEST PUSH2 0x1E79 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E9D SWAP1 SLOAD PUSH2 0x1E7F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1EB9 PUSH2 0x1EBE SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x1EA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1ECB SWAP1 SLOAD PUSH2 0x1EAD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1EEF PUSH2 0x1EEA PUSH2 0x1EF4 SWAP3 PUSH2 0x978 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F0E PUSH2 0x1F09 PUSH2 0x1F13 SWAP3 PUSH2 0x1EF7 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F1F SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F35 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8FA JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1F53 PUSH2 0x1F4E PUSH2 0x1F58 SWAP3 PUSH2 0x1ECE JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F73 PUSH2 0x1F6E PUSH2 0x1F7A SWAP3 PUSH2 0x1F3F JUMP JUMPDEST PUSH2 0x1F5B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1F22 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F98 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x1F7E JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1FAB SWAP1 PUSH2 0xD2D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1FC6 PUSH2 0x1FC1 PUSH2 0x1FCD SWAP3 PUSH2 0x1FA2 JUMP JUMPDEST PUSH2 0x1FAE JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1F84 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1FDA SWAP1 PUSH2 0x1EFA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1FF1 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1FD1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1FFB PUSH2 0x2E06 JUMP JUMPDEST SWAP1 PUSH2 0x2010 PUSH2 0x200A PUSH0 DUP5 ADD PUSH2 0x1E93 JUMP JUMPDEST ISZERO PUSH2 0xD2D JUMP JUMPDEST SWAP1 PUSH2 0x201C PUSH0 DUP5 ADD PUSH2 0x1EC1 JUMP JUMPDEST DUP1 PUSH2 0x202F PUSH2 0x2029 PUSH0 PUSH2 0x1EDB JUMP JUMPDEST SWAP2 PUSH2 0x1ECE JUMP JUMPDEST EQ DUP1 PUSH2 0x2169 JUMPI JUMPDEST SWAP1 PUSH2 0x204A PUSH2 0x2044 PUSH1 0x1 PUSH2 0x1EFA JUMP JUMPDEST SWAP2 PUSH2 0x1ECE JUMP JUMPDEST EQ DUP1 PUSH2 0x2141 JUMPI JUMPDEST PUSH2 0x205C SWAP1 SWAP2 ISZERO PUSH2 0xD2D JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x2130 JUMPI JUMPDEST POP PUSH2 0x20F4 JUMPI PUSH2 0x208C SWAP1 PUSH2 0x2081 PUSH2 0x2079 PUSH1 0x1 PUSH2 0x1EFA JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x1F5E JUMP JUMPDEST DUP3 PUSH2 0x20E2 JUMPI JUMPDEST PUSH2 0x2295 JUMP JUMPDEST PUSH2 0x2094 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x20A1 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x1FB1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x20D9 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x20D0 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1FDE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x2091 JUMP JUMPDEST PUSH2 0x20EF PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1FB1 JUMP JUMPDEST PUSH2 0x2087 JUMP JUMPDEST PUSH2 0x20FC PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x212C PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x213B SWAP2 POP ISZERO PUSH2 0xD2D JUMP JUMPDEST PUSH0 PUSH2 0x2063 JUMP JUMPDEST POP PUSH2 0x205C PUSH2 0x214E ADDRESS PUSH2 0x1F16 JUMP JUMPDEST EXTCODESIZE PUSH2 0x2161 PUSH2 0x215B PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x2051 JUMP JUMPDEST POP DUP3 PUSH2 0x2036 JUMP JUMPDEST PUSH2 0x2179 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2185 SWAP1 PUSH2 0x2170 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x21A7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8FA JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x21BA SWAP1 PUSH2 0x2170 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x21D5 PUSH2 0x21D0 PUSH2 0x21DC SWAP3 PUSH2 0x21B1 JUMP JUMPDEST PUSH2 0x21BD JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2188 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x21EC PUSH2 0x21F1 SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x3FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21FE SWAP1 SLOAD PUSH2 0x21E0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x221A JUMPI PUSH2 0x2217 SWAP2 PUSH0 ADD PUSH2 0xAE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH2 0x2228 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2234 SWAP1 PUSH2 0x221F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2240 SWAP1 PUSH2 0x221F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x225B PUSH2 0x2256 PUSH2 0x2262 SWAP3 PUSH2 0x2237 JUMP JUMPDEST PUSH2 0x2243 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2188 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x226F SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x228A PUSH2 0x2285 PUSH2 0x2291 SWAP3 PUSH2 0x2266 JUMP JUMPDEST PUSH2 0x2272 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2188 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x22BA PUSH2 0x22C0 SWAP2 PUSH2 0x22A5 CALLER PUSH2 0x2E48 JUMP JUMPDEST PUSH2 0x22AD PUSH2 0x2E6F JUMP JUMPDEST PUSH2 0x22B5 PUSH2 0x2E83 JUMP JUMPDEST PUSH2 0x217C JUMP JUMPDEST PUSH0 PUSH2 0x21C0 JUMP JUMPDEST PUSH2 0x22EC PUSH1 0x20 PUSH2 0x22D6 PUSH2 0x22D1 PUSH0 PUSH2 0x21F4 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x22E4 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x22FC PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x23DF JUMPI PUSH2 0x2323 SWAP2 PUSH2 0x231C SWAP2 PUSH0 SWAP2 PUSH2 0x23B1 JUMPI JUMPDEST POP PUSH2 0x222B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2246 JUMP JUMPDEST PUSH2 0x234F PUSH1 0x20 PUSH2 0x2339 PUSH2 0x2334 PUSH0 PUSH2 0x21F4 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x2347 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x235F PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x23AC JUMPI PUSH2 0x237C SWAP2 PUSH0 SWAP2 PUSH2 0x237E JUMPI JUMPDEST POP PUSH1 0x2 PUSH2 0x2275 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x239F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x23A5 JUMPI JUMPDEST PUSH2 0x2397 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2201 JUMP JUMPDEST PUSH0 PUSH2 0x2374 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x238D JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x23D2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x23D8 JUMPI JUMPDEST PUSH2 0x23CA DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2201 JUMP JUMPDEST PUSH0 PUSH2 0x2316 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x23C0 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x23ED SWAP1 PUSH2 0x1FF3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2400 SWAP1 PUSH2 0x23FB PUSH2 0x2789 JUMP JUMPDEST PUSH2 0x2402 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x241D PUSH2 0x2417 PUSH2 0x2412 PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x242D JUMPI PUSH2 0x242B SWAP1 PUSH2 0x27F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2470 PUSH2 0x2439 PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x2441 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x247D SWAP1 PUSH2 0x23EF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2488 SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2494 ADDRESS PUSH2 0x247F JUMP JUMPDEST PUSH2 0x24C6 PUSH2 0x24C0 PUSH32 0x0 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2510 JUMPI JUMPDEST PUSH2 0x24D4 JUMPI JUMP JUMPDEST PUSH2 0x24DC PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x250C PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2519 PUSH2 0x2E8D JUMP JUMPDEST PUSH2 0x254B PUSH2 0x2545 PUSH32 0x0 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ ISZERO PUSH2 0x24CE JUMP JUMPDEST POP PUSH2 0x255B PUSH2 0x2789 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2566 SWAP1 PUSH2 0x2552 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2571 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x257D SWAP1 PUSH2 0x2568 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2589 SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2595 DUP2 PUSH2 0x36E JUMP JUMPDEST SUB PUSH2 0x259C JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x25AD DUP3 PUSH2 0x258C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x25C8 JUMPI PUSH2 0x25C5 SWAP2 PUSH0 ADD PUSH2 0x25A0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x25FB PUSH1 0x20 PUSH2 0x25E5 PUSH2 0x25E0 DUP7 PUSH2 0x2574 JUMP JUMPDEST PUSH2 0x2580 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x25F3 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x260B PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x26DB JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x266C JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x262D JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x2668 SWAP1 PUSH2 0x2639 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2687 PUSH2 0x2681 PUSH2 0x267C PUSH2 0x91B JUMP JUMPDEST PUSH2 0x36E JUMP JUMPDEST SWAP2 PUSH2 0x36E JUMP JUMPDEST SUB PUSH2 0x269C JUMPI PUSH2 0x2697 SWAP3 SWAP4 POP PUSH2 0x2EB7 JUMP JUMPDEST PUSH2 0x262B JUMP JUMPDEST PUSH2 0x26D7 DUP5 PUSH2 0x26A8 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x37E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x26FD SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2704 JUMPI JUMPDEST PUSH2 0x26F5 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25AF JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2618 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26EB JUMP JUMPDEST PUSH2 0x2714 ADDRESS PUSH2 0x247F JUMP JUMPDEST PUSH2 0x2746 PUSH2 0x2740 PUSH32 0x0 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST SUB PUSH2 0x274D JUMPI JUMP JUMPDEST PUSH2 0x2755 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2785 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2791 PUSH2 0x9EA JUMP JUMPDEST PUSH2 0x27AA PUSH2 0x27A4 PUSH2 0x279F PUSH2 0x2F40 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST SUB PUSH2 0x27B1 JUMPI JUMP JUMPDEST PUSH2 0x27F3 PUSH2 0x27BC PUSH2 0x2F40 JUMP JUMPDEST PUSH2 0x27C4 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27FF PUSH2 0x2863 JUMP JUMPDEST PUSH2 0x2817 PUSH2 0x280D PUSH0 DUP4 ADD PUSH2 0x9DD JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x2275 JUMP JUMPDEST SWAP1 PUSH2 0x284B PUSH2 0x2845 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x2266 JUMP JUMPDEST SWAP2 PUSH2 0x2266 JUMP JUMPDEST SWAP2 PUSH2 0x2854 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x285E DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2896 PUSH2 0x289B SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x2887 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28A8 SWAP1 SLOAD PUSH2 0x288A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C2 PUSH2 0x28BD PUSH2 0x28C7 SWAP3 PUSH2 0x28AB JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28D4 PUSH1 0x2 PUSH2 0x28AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2902 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8FA JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2920 PUSH2 0x291B PUSH2 0x2925 SWAP3 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2940 PUSH2 0x293B PUSH2 0x2947 SWAP3 PUSH2 0x290C JUMP JUMPDEST PUSH2 0x2928 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x28D7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2953 PUSH2 0x2F4D JUMP JUMPDEST PUSH2 0x295E PUSH0 DUP3 ADD PUSH2 0x289E JUMP JUMPDEST PUSH2 0x2977 PUSH2 0x2971 PUSH2 0x296C PUSH2 0x28CA JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ PUSH2 0x2992 JUMPI PUSH2 0x2990 SWAP1 PUSH0 PUSH2 0x2989 PUSH2 0x28CA JUMP JUMPDEST SWAP2 ADD PUSH2 0x292B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x299A PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x29CA PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x29E2 PUSH2 0x29DD PUSH2 0x29E7 SWAP3 PUSH2 0x1EF7 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29F4 PUSH1 0x1 PUSH2 0x29CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A12 PUSH2 0x2A02 PUSH2 0x2F4D JUMP JUMPDEST PUSH0 PUSH2 0x2A0B PUSH2 0x29EA JUMP JUMPDEST SWAP2 ADD PUSH2 0x292B JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2A24 PUSH2 0x2A29 SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A36 SWAP1 SLOAD PUSH2 0x2A18 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A6E PUSH2 0x2A75 SWAP5 PUSH2 0x2A64 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x2A5A PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x2AC2 SWAP5 PUSH2 0x2AB1 PUSH2 0x2ABB SWAP3 PUSH2 0x2AA7 PUSH1 0x80 SWAP7 PUSH2 0x2A9D PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x53776170206661696C6564000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2AF8 PUSH1 0xB PUSH1 0x20 SWAP3 PUSH2 0x65A JUMP JUMPDEST PUSH2 0x2B01 DUP2 PUSH2 0x2AC4 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2B1A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2AEB JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2B24 JUMPI JUMP JUMPDEST PUSH2 0x2B2C PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2B5C PUSH1 0x4 DUP3 ADD PUSH2 0x2B05 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x2B6C PUSH2 0x2A14 JUMP JUMPDEST SWAP4 PUSH2 0x2B99 PUSH1 0x20 PUSH2 0x2B83 PUSH2 0x2B7E PUSH0 PUSH2 0x21F4 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x2B91 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BA9 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E01 JUMPI PUSH0 SWAP2 PUSH2 0x2DD3 JUMPI JUMPDEST POP SWAP3 DUP2 PUSH2 0x2BD0 PUSH2 0x2BCA DUP8 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x2DCA JUMPI PUSH2 0x2BE6 PUSH2 0x2BE1 DUP4 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x2C00 PUSH2 0x2BFB PUSH1 0x1 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST SWAP1 PUSH2 0x2C1E PUSH0 DUP7 SWAP6 PUSH2 0x2C29 PUSH2 0x2C12 PUSH2 0xE4 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xAC0 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDB2 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2DC5 JUMPI PUSH2 0x2D99 JUMPI JUMPDEST POP PUSH2 0x2C4B PUSH2 0x2C46 PUSH1 0x1 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 DUP5 SWAP1 PUSH2 0x2C75 PUSH0 DUP11 SWAP6 PUSH2 0x2C80 DUP9 DUP12 SWAP1 PUSH2 0x2C69 PUSH2 0xE4 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0xAC0 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x2A39 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x2D69 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x2D5D JUMPI POP PUSH1 0x1 PUSH2 0x2CC2 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST PUSH2 0x2CBF DUP2 PUSH2 0x2CB9 PUSH2 0x2CB3 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST GT PUSH2 0x2B1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP5 SWAP6 POP PUSH2 0x2D02 SWAP2 PUSH2 0x2D0D PUSH0 SWAP3 PUSH2 0x2CE2 PUSH2 0x2CDD PUSH1 0x1 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST SWAP6 PUSH4 0x5EFAAEBB SWAP4 SWAP8 SWAP10 SWAP2 SWAP1 SWAP2 PUSH2 0x2CF6 PUSH2 0xE4 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0xAC0 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x2A77 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D58 JUMPI PUSH0 SWAP2 PUSH2 0x2D2A JUMPI JUMPDEST POP PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2C9D JUMP JUMPDEST PUSH2 0x2D4B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D51 JUMPI JUMPDEST PUSH2 0x2D43 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH0 PUSH2 0x2D1F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D39 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x2CA3 JUMP JUMPDEST PUSH2 0x2D8B SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D92 JUMPI JUMPDEST PUSH2 0x2D83 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2C8D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D79 JUMP JUMPDEST PUSH2 0x2DB9 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2DBE JUMPI JUMPDEST PUSH2 0x2DB1 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x2C38 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2DA7 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2DF4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2DFA JUMPI JUMPDEST PUSH2 0x2DEC DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2201 JUMP JUMPDEST PUSH0 PUSH2 0x2BBB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2DE2 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2E3B SWAP1 PUSH2 0x2E36 PUSH2 0x2F71 JUMP JUMPDEST PUSH2 0x2E3D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E46 SWAP1 PUSH2 0x3049 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E51 SWAP1 PUSH2 0x2E2A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E5B PUSH2 0x2F71 JUMP JUMPDEST PUSH2 0x2E63 PUSH2 0x2E65 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E6D PUSH2 0x3083 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E77 PUSH2 0x2E53 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E81 PUSH2 0x2F71 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E8B PUSH2 0x2E79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E95 PUSH2 0x9C0 JUMP JUMPDEST POP PUSH2 0x2EB0 PUSH0 PUSH2 0x2EAA PUSH2 0x2EA5 PUSH2 0x91B JUMP JUMPDEST PUSH2 0x308D JUMP JUMPDEST ADD PUSH2 0x9DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2EC1 DUP3 PUSH2 0x3090 JUMP JUMPDEST DUP2 PUSH2 0x2EEC PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x2266 JUMP JUMPDEST SWAP1 PUSH2 0x2EF5 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x2EFF DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2F0B DUP2 PUSH2 0x2EB3 JUMP JUMPDEST PUSH2 0x2F1D PUSH2 0x2F17 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2F31 JUMPI PUSH2 0x2F2D SWAP2 PUSH2 0x31A0 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2F3B PUSH2 0x3105 JUMP JUMPDEST PUSH2 0x2F2F JUMP JUMPDEST PUSH2 0x2F48 PUSH2 0x9C0 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH2 0x2F82 PUSH2 0x2F7C PUSH2 0x31D3 JUMP JUMPDEST ISZERO PUSH2 0xD2D JUMP JUMPDEST PUSH2 0x2F88 JUMPI JUMP JUMPDEST PUSH2 0x2F90 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2FC0 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2FD5 SWAP1 PUSH2 0x2FD0 PUSH2 0x2F71 JUMP JUMPDEST PUSH2 0x2FD7 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2FF2 PUSH2 0x2FEC PUSH2 0x2FE7 PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x3002 JUMPI PUSH2 0x3000 SWAP1 PUSH2 0x27F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3045 PUSH2 0x300E PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x3016 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3052 SWAP1 PUSH2 0x2FC4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x305C PUSH2 0x2F71 JUMP JUMPDEST PUSH2 0x3064 PUSH2 0x3066 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3081 PUSH2 0x3071 PUSH2 0x2F4D JUMP JUMPDEST PUSH0 PUSH2 0x307A PUSH2 0x29EA JUMP JUMPDEST SWAP2 ADD PUSH2 0x292B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x308B PUSH2 0x3054 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x30A4 PUSH2 0x309E PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ PUSH2 0x30C6 JUMPI PUSH2 0x30C4 SWAP1 PUSH0 PUSH2 0x30BE PUSH2 0x30B9 PUSH2 0x91B JUMP JUMPDEST PUSH2 0x308D JUMP JUMPDEST ADD PUSH2 0x2275 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3101 SWAP1 PUSH2 0x30D2 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x3118 PUSH2 0x3112 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST GT PUSH2 0x311F JUMPI JUMP JUMPDEST PUSH2 0x3127 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3157 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3172 PUSH2 0x316D DUP4 PUSH2 0x273 JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x3192 JUMPI PUSH2 0x3187 RETURNDATASIZE PUSH2 0x3160 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x319A PUSH2 0x315B JUMP JUMPDEST SWAP1 PUSH2 0x3190 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x31CC SWAP4 PUSH2 0x31AE PUSH2 0x315B JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x31C3 PUSH2 0x3177 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x31F1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x31DB PUSH2 0x31CF JUMP JUMPDEST POP PUSH2 0x31EE PUSH0 PUSH2 0x31E8 PUSH2 0x2E06 JUMP JUMPDEST ADD PUSH2 0x1E93 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3205 SWAP1 PUSH2 0x31FE PUSH2 0x315B JUMP JUMPDEST POP ISZERO PUSH2 0xD2D JUMP JUMPDEST PUSH0 EQ PUSH2 0x3211 JUMPI POP PUSH2 0x3295 JUMP JUMPDEST PUSH2 0x321A DUP3 PUSH2 0x2EB3 JUMP JUMPDEST PUSH2 0x322C PUSH2 0x3226 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ DUP1 PUSH2 0x327A JUMPI JUMPDEST PUSH2 0x323B JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x3276 SWAP1 PUSH2 0x3247 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x328F PUSH2 0x3289 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ PUSH2 0x3233 JUMP JUMPDEST PUSH2 0x329E DUP2 PUSH2 0x2EB3 JUMP JUMPDEST PUSH2 0x32B0 PUSH2 0x32AA PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x32BF JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x32C7 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x32F7 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 SDIV DUP15 0xFB NUMBER 0x2D 0xE9 DUP2 STATICCALL 0x2F 0xE4 0xEF PUSH26 0x521BB6B92BD07801933E12399C68B567FC12F364736F6C634300 ADDMOD NOT STOP CALLER ","sourceMap":"1042:4815:50:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":242,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":487,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":2791,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_addresst_uint256t_uint256t_address":{"entryPoint":1951,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_addresst_bytes":{"entryPoint":762,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint256t_addresst_uint256t_address":{"entryPoint":1810,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_array_address_dyn_fromMemory":{"entryPoint":2893,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dyn_memory_ptr_fromMemory":{"entryPoint":2928,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_array_address_dyn_fromMemory":{"entryPoint":2806,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":673,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":3413,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":727,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":9647,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_fromMemory":{"entryPoint":3833,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_t_bool_fromMemory":{"entryPoint":3398,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":9632,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":3278,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":2082,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":8705,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":1795,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":3293,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_uint256":{"entryPoint":6440,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":376,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address_address_uint256_address":{"entryPoint":10871,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":3456,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_address":{"entryPoint":10809,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_array_uint256_dyn_uint256":{"entryPoint":6543,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":3506,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":6463,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32":{"entryPoint":894,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":881,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":1150,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Swapper":{"entryPoint":1340,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IBaluniV1Swapper_to_address":{"entryPoint":1327,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":8158,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":8145,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":1695,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":1646,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":10987,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_6e18":{"entryPoint":3706,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90":{"entryPoint":3680,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_785c":{"entryPoint":6216,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":831,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":389,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":1163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":11013,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_785c":{"entryPoint":6242,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256":{"entryPoint":3848,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_address_uint256":{"entryPoint":3541,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":6427,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_to_uint256_fromStack":{"entryPoint":3443,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":3058,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":606,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_uint256_dyn":{"entryPoint":3030,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":12640,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":1502,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":228,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":2758,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":3001,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":627,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":1467,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_uint256_dyn":{"entryPoint":6421,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":2997,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_uint256_dyn":{"entryPoint":3323,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":11955,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":1622,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_uint256_dyn":{"entryPoint":6457,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_array_uint256_dyn":{"entryPoint":6412,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":1626,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":2675,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":6378,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":3604,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":364,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":3373,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":878,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":261,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":7801,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":1019,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Swapper":{"entryPoint":1237,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":10375,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":7840,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_300_by":{"entryPoint":2599,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":7927,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":2295,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":2424,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":10411,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":339,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":1772,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":7886,"id":null,"parameterSlots":1,"returnSlots":1},"constant_ENTERED":{"entryPoint":10442,"id":null,"parameterSlots":0,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":2331,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NOT_ENTERED":{"entryPoint":10730,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":1600,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_payable_to_address":{"entryPoint":3893,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_address":{"entryPoint":8806,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_address_payable":{"entryPoint":3881,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Pool":{"entryPoint":2724,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":8572,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Swapper":{"entryPoint":8747,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":9588,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":3242,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IWETH":{"entryPoint":3809,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":8098,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1PoolZap_to_address":{"entryPoint":3266,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Pool_to_address":{"entryPoint":2736,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1138,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":8625,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_address":{"entryPoint":1315,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_contract_IBaluniV1Swapper":{"entryPoint":8759,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":9600,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":3254,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IWETH_to_address":{"entryPoint":3821,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":7958,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":9343,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":3097,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":10414,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":2455,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":2303,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":2427,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":2602,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":7930,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":1589,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":10702,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":7899,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1126,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address_payable":{"entryPoint":3869,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Pool":{"entryPoint":2712,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":8560,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Swapper":{"entryPoint":8735,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":9576,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":3230,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IWETH":{"entryPoint":3797,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1098,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":10508,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":7999,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":662,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":1564,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1635,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":1719,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH9":{"entryPoint":410,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniSwapper":{"entryPoint":1361,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2112,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":1414,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":915,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":1184,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":968,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":2163,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":836,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_zapIn":{"entryPoint":2037,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_zapOut":{"entryPoint":1896,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":286,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":1044,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Swapper":{"entryPoint":1262,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":2505,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":7807,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":8672,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Swapper":{"entryPoint":10776,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":10378,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":7853,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":12663,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":565,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":11848,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":11837,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":12361,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":12247,"id":null,"parameterSlots":1,"returnSlots":0},"fun_ReentrancyGuard_init":{"entryPoint":11887,"id":1509,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_inner":{"entryPoint":11877,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained":{"entryPoint":12419,"id":1527,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained_inner":{"entryPoint":12390,"id":null,"parameterSlots":0,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":11907,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":10231,"id":193,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":9565,"id":7615,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":12145,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":12549,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":9995,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":10121,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":9355,"id":562,"parameterSlots":0,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":12704,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":12429,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getImplementation":{"entryPoint":11917,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":11782,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":10339,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getReentrancyGuardStorage":{"entryPoint":12109,"id":1497,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":9188,"id":7606,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":8853,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":12755,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":12096,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":10743,"id":1579,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":10571,"id":1563,"parameterSlots":0,"returnSlots":0},"fun_owner":{"entryPoint":2538,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":2387,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":2375,"id":null,"parameterSlots":1,"returnSlots":1},"fun_renounceOwnership":{"entryPoint":2486,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":2467,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":12949,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":12432,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_swap":{"entryPoint":11104,"id":8161,"parameterSlots":4,"returnSlots":1},"fun_transferOwnership":{"entryPoint":9332,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":9218,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":11959,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":9677,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":2259,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":2238,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":12785,"id":2889,"parameterSlots":3,"returnSlots":1},"fun_zapIn":{"entryPoint":7780,"id":7806,"parameterSlots":5,"returnSlots":0},"fun_zapIn_inner":{"entryPoint":6596,"id":null,"parameterSlots":5,"returnSlots":0},"fun_zapOut":{"entryPoint":6131,"id":8084,"parameterSlots":5,"returnSlots":0},"fun_zapOut_inner":{"entryPoint":3905,"id":null,"parameterSlots":5,"returnSlots":0},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":1611,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH9":{"entryPoint":324,"id":7567,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniSwapper":{"entryPoint":1300,"id":7565,"parameterSlots":0,"returnSlots":1},"getter_fun_registry":{"entryPoint":1082,"id":7562,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":1095,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":3125,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":3185,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":3327,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":8179,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_nonReentrant":{"entryPoint":2568,"id":1538,"parameterSlots":5,"returnSlots":0},"modifier_nonReentrant_7632":{"entryPoint":6146,"id":1538,"parameterSlots":5,"returnSlots":0},"modifier_notDelegated":{"entryPoint":2275,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":12228,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_1503":{"entryPoint":11859,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1512":{"entryPoint":12372,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":11818,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":11897,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":9554,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":2406,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":9199,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":2218,"id":488,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":2630,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":6333,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3140,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":520,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":8818,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":8110,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":8637,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Swapper":{"entryPoint":8771,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":10536,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":8027,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":3217,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_uint256":{"entryPoint":3591,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":310,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":1068,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Swapper":{"entryPoint":1286,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":2525,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":7827,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":8692,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Swapper":{"entryPoint":10796,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":10398,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":7873,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":11037,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_6e18":{"entryPoint":3730,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_785c":{"entryPoint":6266,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_0cc013b6b3b6beabea4e3a74a6d380f0df81852ca99887912475e1f66b2a2c20":{"entryPoint":2748,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":502,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2787,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":506,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":463,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":234,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_d228b4ceac16d8e91d6dc7ca8d4a5394f524b2e550555324088cb23b86b87b98":{"entryPoint":2214,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":238,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":2981,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":510,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":2298,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":2752,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":8062,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":2500,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":7795,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":222,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":257,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69":{"entryPoint":10948,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":1525,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6e185d54b6a4477f06f9d935db5f3f87aa098f61558d7a6d802e1773173b7b90":{"entryPoint":3641,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_785c530545bab4fcd14661de8c26a5985c6bacacb07565e8ecfc83e0a995b60b":{"entryPoint":6177,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":7970,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":10455,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":8584,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":8068,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":8821,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":8113,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":8640,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Swapper_to_contract_IBaluniV1Swapper":{"entryPoint":8774,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":10539,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":8030,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":467,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":3378,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":9612,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":1775,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_uint256":{"entryPoint":3359,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_uint256":{"entryPoint":3053,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":2496,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":12751,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":12635,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":2271,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":10772,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":9372},{"length":32,"start":9505},{"length":32,"start":10012}]},"linkReferences":{},"object":"60806040526004361015610015575b366108a657005b61001f5f356100de565b80634aa4a4fc146100d95780634f1ef286146100d457806352d1902d146100cf578063715018a6146100ca5780637b103999146100c55780637dfb7ea1146100c05780638da5cb5b146100bb578063ad3cb1cc146100b6578063b1aa8cd1146100b1578063b487c54a146100ac578063c4d66de8146100a75763f2fde38b0361000e57610873565b610840565b6107f5565b610768565b6106b7565b610586565b610551565b6104a0565b6103c8565b610393565b610344565b61019a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f9103126100fc57565b6100ee565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61012e9060086101339302610101565b610105565b90565b90610141915461011e565b90565b61015060025f90610136565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61017590610153565b90565b6101819061016c565b9052565b9190610198905f60208501940190610178565b565b346101ca576101aa3660046100f2565b6101c66101b5610144565b6101bd6100e4565b91829182610185565b0390f35b6100ea565b5f80fd5b6101dc8161016c565b036101e357565b5f80fd5b905035906101f4826101d3565b565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061023f906101fe565b810190811067ffffffffffffffff82111761025957604052565b610208565b9061027161026a6100e4565b9283610235565b565b67ffffffffffffffff81116102915761028d6020916101fe565b0190565b610208565b90825f939282370152565b909291926102b66102b182610273565b61025e565b938185526020850190828401116102d2576102d092610296565b565b6101fa565b9080601f830112156102f5578160206102f2933591016102a1565b90565b6101f6565b91909160408184031261033a57610313835f83016101e7565b92602082013567ffffffffffffffff81116103355761033292016102d7565b90565b6101cf565b6100ee565b5f0190565b6103586103523660046102fa565b906108d3565b6103606100e4565b8061036a8161033f565b0390f35b90565b61037a9061036e565b9052565b9190610391905f60208501940190610371565b565b346103c3576103a33660046100f2565b6103bf6103ae610953565b6103b66100e4565b9182918261037e565b0390f35b6100ea565b346103f6576103d83660046100f2565b6103e06109b6565b6103e86100e4565b806103f28161033f565b0390f35b6100ea565b73ffffffffffffffffffffffffffffffffffffffff1690565b6104249060086104299302610101565b6103fb565b90565b906104379154610414565b90565b6104445f8061042c565b90565b90565b61045e61045961046392610153565b610447565b610153565b90565b61046f9061044a565b90565b61047b90610466565b90565b61048790610472565b9052565b919061049e905f6020850194019061047e565b565b346104d0576104b03660046100f2565b6104cc6104bb61043a565b6104c36100e4565b9182918261048b565b0390f35b6100ea565b73ffffffffffffffffffffffffffffffffffffffff1690565b6104fe9060086105039302610101565b6104d5565b90565b9061051191546104ee565b90565b61052060015f90610506565b90565b61052c90610466565b90565b61053890610523565b9052565b919061054f905f6020850194019061052f565b565b34610581576105613660046100f2565b61057d61056c610514565b6105746100e4565b9182918261053c565b0390f35b6100ea565b346105b6576105963660046100f2565b6105b26105a16109ea565b6105a96100e4565b91829182610185565b0390f35b6100ea565b67ffffffffffffffff81116105d9576105d56020916101fe565b0190565b610208565b906105f06105eb836105bb565b61025e565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61062660056105de565b90610633602083016105f5565b565b61063d61061c565b90565b610648610635565b90565b610653610640565b90565b5190565b60209181520190565b90825f9392825e0152565b61068d61069660209361069b9361068481610656565b9384809361065a565b95869101610663565b6101fe565b0190565b6106b49160208201915f81840391015261066e565b90565b346106e7576106c73660046100f2565b6106e36106d261064b565b6106da6100e4565b9182918261069f565b0390f35b6100ea565b90565b6106f8816106ec565b036106ff57565b5f80fd5b90503590610710826106ef565b565b919060a0838203126107635761072a815f85016101e7565b926107388260208301610703565b9261076061074984604085016101e7565b936107578160608601610703565b936080016101e7565b90565b6100ee565b3461079a5761078461077b366004610712565b939290926117f3565b61078c6100e4565b806107968161033f565b0390f35b6100ea565b919060a0838203126107f0576107b7815f85016101e7565b926107c582602083016101e7565b926107ed6107d68460408501610703565b936107e48160608601610703565b936080016101e7565b90565b6100ee565b61080c61080336600461079f565b93929092611e64565b6108146100e4565b8061081e8161033f565b0390f35b9060208282031261083b57610838915f016101e7565b90565b6100ee565b3461086e57610858610853366004610822565b6123e4565b6108606100e4565b8061086a8161033f565b0390f35b6100ea565b346108a15761088b610886366004610822565b612474565b6108936100e4565b8061089d8161033f565b0390f35b6100ea565b5f80fd5b906108bc916108b761248b565b6108be565b565b906108d1916108cc8161255d565b6125cd565b565b906108dd916108aa565b565b5f90565b6108f4906108ef61270b565b610947565b90565b90565b5f1b90565b61091361090e610918926108f7565b6108fa565b61036e565b90565b6109447f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6108ff565b90565b5061095061091b565b90565b61096361095e6108df565b6108e3565b90565b61096e612789565b6109766109a3565b565b90565b61098f61098a61099492610978565b610447565b610153565b90565b6109a09061097b565b90565b6109b46109af5f610997565b6127f7565b565b6109be610966565b565b5f90565b5f1c90565b6109d56109da916109c4565b610105565b90565b6109e790546109c9565b90565b6109f26109c0565b50610a055f6109ff612863565b016109dd565b90565b90610a1d94939291610a1861294b565b610f41565b610a256129f7565b565b90565b610a3e610a39610a4392610a27565b610447565b6106ec565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610a82610a88919392936106ec565b926106ec565b8201809211610a9357565b610a46565b610aa19061044a565b90565b610aad90610a98565b90565b610ab990610466565b90565b5f80fd5b60e01b90565b67ffffffffffffffff8111610ade5760208091020190565b610208565b5f80fd5b90505190610af4826101d3565b565b90929192610b0b610b0682610ac6565b61025e565b9381855260208086019202830192818411610b4857915b838310610b2f5750505050565b60208091610b3d8486610ae7565b815201920191610b22565b610ae3565b9080601f83011215610b6b57816020610b6893519101610af6565b90565b6101f6565b90602082820312610ba0575f82015167ffffffffffffffff8111610b9b57610b989201610b4d565b90565b6101cf565b6100ee565b610bad6100e4565b3d5f823e3d90fd5b5190565b67ffffffffffffffff8111610bd15760208091020190565b610208565b90610be8610be383610bb9565b61025e565b918252565b369037565b90610c17610bff83610bd6565b92602080610c0d8693610bb9565b9201910390610bed565b565b610c2d610c28610c3292610978565b610447565b6106ec565b90565b6001610c4191016106ec565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90610c7b82610bb5565b811015610c8c576020809102010190565b610c44565b610c9b905161016c565b90565b610ca79061044a565b90565b610cb390610c9e565b90565b610cbf90610466565b90565b610ccb90610466565b90565b90505190610cdb826106ef565b565b90602082820312610cf657610cf3915f01610cce565b90565b6100ee565b5190565b90610d0982610cfb565b811015610d1a576020809102010190565b610c44565b90610d29906106ec565b9052565b151590565b610d3b81610d2d565b03610d4257565b5f80fd5b90505190610d5382610d32565b565b90602082820312610d6e57610d6b915f01610d46565b90565b6100ee565b610d7c906106ec565b9052565b604090610da9610db09496959396610d9f60608401985f850190610178565b6020830190610178565b0190610d73565b565b916020610dd3929493610dcc60408201965f830190610178565b0190610d73565b565b604090610dfe610e059496959396610df460608401985f850190610d73565b6020830190610178565b0190610d73565b565b610e1190516106ec565b90565b610e23610e29919392936106ec565b926106ec565b8203918211610e3457565b610a46565b5f7f496e73756666696369656e74206f757470757420616d6f756e74000000000000910152565b610e6d601a60209261065a565b610e7681610e39565b0190565b610e8f9060208101905f818303910152610e60565b90565b15610e9957565b610ea16100e4565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610ed160048201610e7a565b0390fd5b610ede9061044a565b90565b610eea90610ed5565b90565b610ef690610466565b90565b5f910312610f0357565b6100ee565b9190610f1b905f60208501940190610d73565b565b610f269061044a565b90565b610f3290610f1d565b90565b610f3e90610466565b90565b9093610f5842610f5261012c610a2a565b90610a73565b92610f6283610aa4565b96610f865f610f708a610ab0565b6367e4ac2c90610f7e6100e4565b938492610ac0565b82528180610f966004820161033f565b03915afa9081156117ee575f916117cc575b5095610fbb610fb688610bb5565b610bf2565b95610fcd610fc889610bb5565b610bf2565b99610fd75f610c19565b5b80610ff3610fed610fe88d610bb5565b6106ec565b916106ec565b10156110c55761105490602061102261101d6110186110138f8690610c71565b610c91565b610caa565b610cb6565b6370a082319061104961103430610cc2565b9261103d6100e4565b96879485938493610ac0565b835260048301610185565b03915afa9182156110c057611087928e611082925f9261108c575b5061107d9091849092610cff565b610d1f565b610c35565b610fd8565b61107d9192506110b29060203d81116110b9575b6110aa8183610235565b810190610cdd565b919061106f565b503d6110a0565b610ba5565b509091929394969997959861111860206110e66110e189610caa565b610cb6565b6370a082319061110d6110f830610cc2565b926111016100e4565b95869485938493610ac0565b835260048301610185565b03915afa9081156117c7575f91611799575b509961113d61113882610caa565b610cb6565b9060206323b872dd92339061116e5f61115530610cc2565b96611179896111626100e4565b998a9788968795610ac0565b855260048501610d80565b03925af19081156117945761119c9261119792611768575b50610caa565b610cb6565b91602063095ea7b3936111ae83610ab0565b906111cc5f86976111d76111c06100e4565b998a9687958694610ac0565b845260048401610db2565b03925af1908115611763576020936111f492611738575b50610ab0565b61121e5f63e63697c861122961120930610cc2565b976112126100e4565b98899788968795610ac0565b855260048501610dd5565b03925af1801561173357611707575b506112425f610c19565b9461124c5f610c19565b955b8661126961126361125e89610bb5565b6106ec565b916106ec565b10156114c95761128261127d878990610c71565b610c91565b61129461128e8761016c565b9161016c565b145f146113a6576112f560206112c36112be6112b96112b48b8d90610c71565b610c91565b610caa565b610cb6565b6370a08231906112ea6112d530610cc2565b926112de6100e4565b95869485938493610ac0565b835260048301610185565b03915afa9182156113a1576113418c61133c611334611361968d8f61135a985f93611367575b5061132e9161132991610cff565b610e07565b90610e14565b8c9092610cff565b610d1f565b61135461134f8d8b90610cff565b610e07565b90610a73565b965b610c35565b9561124e565b6113299193509161139161132e9360203d811161139a575b6113898183610235565b810190610cdd565b9391509161131b565b503d61137f565b610ba5565b61140060206113ce6113c96113c46113bf8b8d90610c71565b610c91565b610caa565b610cb6565b6370a08231906113f56113e030610cc2565b926113e96100e4565b95869485938493610ac0565b835260048301610185565b03915afa9182156114c45761144c8c61144761143f611361968d8f611484985f9361148a575b506114399161143491610cff565b610e07565b90610e14565b8c9092610cff565b610d1f565b61147e61146261145d8a8c90610c71565b610c91565b8d6114766114718d8c93610cff565b610e07565b903392612b60565b90610a73565b9661135c565b611434919350916114b46114399360203d81116114bd575b6114ac8183610235565b810190610cdd565b93915091611426565b503d6114a2565b610ba5565b5095509592509550915061151b60206114e96114e485610caa565b610cb6565b6370a08231906115106114fb30610cc2565b926115046100e4565b95869485938493610ac0565b835260048301610185565b03915afa918215611702576115569261153b925f916116d4575b50610e14565b9361154f61154986926106ec565b916106ec565b1015610e92565b8061157261156c61156760026109dd565b61016c565b9161016c565b145f1461164b575061159461158f61158a60026109dd565b610ee1565b610eed565b90632e1a7d4d83833b15611646576115cb936115c05f80946115b46100e4565b97889586948593610ac0565b835260048301610f08565b03925af1908115611641575f936115f66115f18695938695948695611615575b50610f29565b610f35565b82821561160c575bf115611607575b565b610ba5565b506108fc6115fe565b61163490863d811161163a575b61162c8183610235565b810190610ef9565b5f6115eb565b503d611622565b610ba5565b610abc565b9161166061165b60209394610caa565b610cb6565b6116835f63a9059cbb95939561168e6116776100e4565b97889687958694610ac0565b845260048401610db2565b03925af180156116cf576116a3575b50611605565b6116c39060203d81116116c8575b6116bb8183610235565b810190610d55565b61169d565b503d6116b1565b610ba5565b6116f5915060203d81116116fb575b6116ed8183610235565b810190610cdd565b5f611535565b503d6116e3565b610ba5565b6117279060203d811161172c575b61171f8183610235565b810190610cdd565b611238565b503d611715565b610ba5565b61175790853d811161175c575b61174f8183610235565b810190610d55565b6111ee565b503d611745565b610ba5565b6117889060203d811161178d575b6117808183610235565b810190610d55565b611191565b503d611776565b610ba5565b6117ba915060203d81116117c0575b6117b28183610235565b810190610cdd565b5f61112a565b503d6117a8565b610ba5565b6117e891503d805f833e6117e08183610235565b810190610b70565b5f610fa8565b610ba5565b9061180094939291610a08565b565b906118179493929161181261294b565b6119c4565b61181f6129f7565b565b5f7f496e636f72726563742045544820616d6f756e74000000000000000000000000910152565b611855601460209261065a565b61185e81611821565b0190565b6118779060208101905f818303910152611848565b90565b1561188157565b6118896100e4565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806118b960048201611862565b0390fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6118f66118fc916106ec565b916106ec565b908115611907570490565b6118bd565b60209181520190565b60200190565b611924906106ec565b9052565b906119358160209361191b565b0190565b60200190565b9061195c61195661194f84610cfb565b809361190c565b92611915565b905f5b81811061196c5750505090565b90919261198561197f6001928651611928565b94611939565b910191909161195f565b9392906119ba6040916119c2946119ad60608901925f8a0190610178565b878203602089015261193f565b940190610d73565b565b93929190916119e76119e1426119db61012c610a2a565b90610a73565b95610aa4565b611a0a5f6119f483610ab0565b6367e4ac2c90611a026100e4565b938492610ac0565b82528180611a1a6004820161033f565b03915afa908115611e5f575f91611e3d575b5094611a3f611a3a87610bb5565b610bf2565b9480611a5b611a55611a505f610997565b61016c565b9161016c565b145f14611daa5750611a7f34611a79611a73876106ec565b916106ec565b1461187a565b611a99611a94611a8f60026109dd565b610ee1565b610eed565b63d0e30db0859190813b15611da5575f91611ac091611ab66100e4565b9485938492610ac0565b825281611acf6004820161033f565b03925af18015611da057611d74575b50611ae960026109dd565b975b611af45f610c19565b5b80611b10611b0a611b058b610bb5565b6106ec565b916106ec565b1015611bfd57611b74908a611b3f611b39611b34611b2f8d8690610c71565b610c91565b61016c565b9161016c565b145f14611b7957611b6e611b5c88611b568c610bb5565b906118ea565b611b698a91849092610cff565b610d1f565b5b610c35565b611af5565b611bc9611bb78c611b93611b8e8d8690610c71565b610c91565b611ba78d611ba18d91610bb5565b906118ea565b90611bb130610cc2565b92612b60565b611bc48a91849092610cff565b610d1f565b611bf8611bdf611bda8a8490610cff565b610e07565b611bf1611beb896106ec565b916106ec565b1015610e92565b611b6f565b509350949650949050611c0f5f610c19565b5b80611c2b611c25611c208a610bb5565b6106ec565b916106ec565b1015611cf157611c54611c4f611c4a611c458a8590610c71565b610c91565b610caa565b610cb6565b90602063095ea7b392611c6689610ab0565b90611c965f611c7e611c798b8890610cff565b610e07565b96611ca1611c8a6100e4565b98899687958694610ac0565b845260048401610db2565b03925af1918215611cec57611cbb92611cc0575b50610c35565b611c10565b611ce09060203d8111611ce5575b611cd88183610235565b810190610d55565b611cb5565b503d611cce565b610ba5565b50936020939195505f611d06611d2692610ab0565b92611d3163b3bf9d32919597611d1a6100e4565b98899788968795610ac0565b85526004850161198f565b03925af18015611d6f57611d43575b50565b611d639060203d8111611d68575b611d5b8183610235565b810190610cdd565b611d40565b503d611d51565b610ba5565b611d93905f3d8111611d99575b611d8b8183610235565b810190610ef9565b5f611ade565b503d611d81565b610ba5565b610abc565b97611dbc611db78a610caa565b610cb6565b60206323b872dd913390611dec5f611dd330610cc2565b95611df78c611de06100e4565b98899788968795610ac0565b855260048501610d80565b03925af18015611e3857611e0c575b50611aeb565b611e2c9060203d8111611e31575b611e248183610235565b810190610d55565b611e06565b503d611e1a565b610ba5565b611e5991503d805f833e611e518183610235565b810190610b70565b5f611a2c565b610ba5565b90611e7194939291611802565b565b60401c90565b60ff1690565b611e8b611e9091611e73565b611e79565b90565b611e9d9054611e7f565b90565b67ffffffffffffffff1690565b611eb9611ebe916109c4565b611ea0565b90565b611ecb9054611ead565b90565b67ffffffffffffffff1690565b611eef611eea611ef492610978565b610447565b611ece565b90565b90565b611f0e611f09611f1392611ef7565b610447565b611ece565b90565b611f1f90610466565b90565b90611f3567ffffffffffffffff916108fa565b9181191691161790565b611f53611f4e611f5892611ece565b610447565b611ece565b90565b90565b90611f73611f6e611f7a92611f3f565b611f5b565b8254611f22565b9055565b60401b90565b90611f9868ff000000000000000091611f7e565b9181191691161790565b611fab90610d2d565b90565b90565b90611fc6611fc1611fcd92611fa2565b611fae565b8254611f84565b9055565b611fda90611efa565b9052565b9190611ff1905f60208501940190611fd1565b565b611ffb612e06565b9061201061200a5f8401611e93565b15610d2d565b9061201c5f8401611ec1565b8061202f6120295f611edb565b91611ece565b1480612169575b9061204a6120446001611efa565b91611ece565b1480612141575b61205c909115610d2d565b9081612130575b506120f45761208c906120816120796001611efa565b5f8601611f5e565b826120e2575b612295565b612094575b50565b6120a1905f809101611fb1565b60016120d97fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916120d06100e4565b91829182611fde565b0390a15f612091565b6120ef60015f8601611fb1565b612087565b6120fc6100e4565b7ff92ee8a90000000000000000000000000000000000000000000000000000000081528061212c6004820161033f565b0390fd5b61213b915015610d2d565b5f612063565b5061205c61214e30611f16565b3b61216161215b5f610c19565b916106ec565b149050612051565b5082612036565b6121799061044a565b90565b61218590612170565b90565b906121a773ffffffffffffffffffffffffffffffffffffffff916108fa565b9181191691161790565b6121ba90612170565b90565b90565b906121d56121d06121dc926121b1565b6121bd565b8254612188565b9055565b6121ec6121f1916109c4565b6103fb565b90565b6121fe90546121e0565b90565b9060208282031261221a57612217915f01610ae7565b90565b6100ee565b6122289061044a565b90565b6122349061221f565b90565b6122409061221f565b90565b90565b9061225b61225661226292612237565b612243565b8254612188565b9055565b61226f90610466565b90565b90565b9061228a61228561229192612266565b612272565b8254612188565b9055565b6122ba6122c0916122a533612e48565b6122ad612e6f565b6122b5612e83565b61217c565b5f6121c0565b6122ec60206122d66122d15f6121f4565b610472565b6382755ebb906122e46100e4565b938492610ac0565b825281806122fc6004820161033f565b03915afa9081156123df576123239161231c915f916123b1575b5061222b565b6001612246565b61234f60206123396123345f6121f4565b610472565b636c9c0078906123476100e4565b938492610ac0565b8252818061235f6004820161033f565b03915afa80156123ac5761237c915f9161237e575b506002612275565b565b61239f915060203d81116123a5575b6123978183610235565b810190612201565b5f612374565b503d61238d565b610ba5565b6123d2915060203d81116123d8575b6123ca8183610235565b810190612201565b5f612316565b503d6123c0565b610ba5565b6123ed90611ff3565b565b612400906123fb612789565b612402565b565b8061241d6124176124125f610997565b61016c565b9161016c565b1461242d5761242b906127f7565b565b6124706124395f610997565b6124416100e4565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b61247d906123ef565b565b61248890610466565b90565b6124943061247f565b6124c66124c07f000000000000000000000000000000000000000000000000000000000000000061016c565b9161016c565b148015612510575b6124d457565b6124dc6100e4565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061250c6004820161033f565b0390fd5b50612519612e8d565b61254b6125457f000000000000000000000000000000000000000000000000000000000000000061016c565b9161016c565b14156124ce565b5061255b612789565b565b61256690612552565b565b6125719061044a565b90565b61257d90612568565b90565b61258990610466565b90565b6125958161036e565b0361259c57565b5f80fd5b905051906125ad8261258c565b565b906020828203126125c8576125c5915f016125a0565b90565b6100ee565b91906125fb60206125e56125e086612574565b612580565b6352d1902d906125f36100e4565b938492610ac0565b8252818061260b6004820161033f565b03915afa80915f926126db575b50155f1461266c57505090600161262d57505b565b612668906126396100e4565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b928361268761268161267c61091b565b61036e565b9161036e565b0361269c57612697929350612eb7565b61262b565b6126d7846126a86100e4565b9182917faa1d49a40000000000000000000000000000000000000000000000000000000083526004830161037e565b0390fd5b6126fd91925060203d8111612704575b6126f58183610235565b8101906125af565b905f612618565b503d6126eb565b6127143061247f565b6127466127407f000000000000000000000000000000000000000000000000000000000000000061016c565b9161016c565b0361274d57565b6127556100e4565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806127856004820161033f565b0390fd5b6127916109ea565b6127aa6127a461279f612f40565b61016c565b9161016c565b036127b157565b6127f36127bc612f40565b6127c46100e4565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b6127ff612863565b61281761280d5f83016109dd565b915f849101612275565b9061284b6128457f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093612266565b91612266565b916128546100e4565b8061285e8161033f565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b90565b61289661289b916109c4565b612887565b90565b6128a8905461288a565b90565b90565b6128c26128bd6128c7926128ab565b610447565b6106ec565b90565b6128d460026128ae565b90565b906129027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916108fa565b9181191691161790565b61292061291b612925926106ec565b610447565b6106ec565b90565b90565b9061294061293b6129479261290c565b612928565b82546128d7565b9055565b612953612f4d565b61295e5f820161289e565b61297761297161296c6128ca565b6106ec565b916106ec565b1461299257612990905f6129896128ca565b910161292b565b565b61299a6100e4565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000008152806129ca6004820161033f565b0390fd5b6129e26129dd6129e792611ef7565b610447565b6106ec565b90565b6129f460016129ce565b90565b612a12612a02612f4d565b5f612a0b6129ea565b910161292b565b565b5f90565b612a24612a29916109c4565b6104d5565b90565b612a369054612a18565b90565b612a6e612a7594612a64606094989795612a5a608086019a5f870190610178565b6020850190610178565b6040830190610d73565b0190610178565b565b90959492612ac294612ab1612abb92612aa7608096612a9d60a088019c5f890190610178565b6020870190610178565b6040850190610178565b6060830190610d73565b0190610178565b565b5f7f53776170206661696c6564000000000000000000000000000000000000000000910152565b612af8600b60209261065a565b612b0181612ac4565b0190565b612b1a9060208101905f818303910152612aeb565b90565b15612b2457565b612b2c6100e4565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612b5c60048201612b05565b0390fd5b92919091612b6c612a14565b93612b996020612b83612b7e5f6121f4565b610472565b636c9c007890612b916100e4565b938492610ac0565b82528180612ba96004820161033f565b03915afa908115612e01575f91612dd3575b509281612bd0612bca8761016c565b9161016c565b14612dca57612be6612be183610caa565b610cb6565b602063095ea7b391612c00612bfb6001612a2c565b610523565b90612c1e5f8695612c29612c126100e4565b97889687958694610ac0565b845260048401610db2565b03925af18015612dc557612d99575b50612c4b612c466001612a2c565b610523565b6020632d6bc8ea918490612c755f8a95612c80888b90612c696100e4565b998a9889978896610ac0565b865260048601612a39565b03925af180915f92612d69575b50155f14612d5d57506001612cc2575b50505050505b612cbf81612cb9612cb35f610c19565b916106ec565b11612b1d565b90565b6020949550612d0291612d0d5f92612ce2612cdd6001612a2c565b610523565b95635efaaebb939799919091612cf66100e4565b9a8b998a988997610ac0565b875260048701612a77565b03925af1908115612d58575f91612d2a575b505f80808080612c9d565b612d4b915060203d8111612d51575b612d438183610235565b810190610cdd565b5f612d1f565b503d612d39565b610ba5565b95505050505050612ca3565b612d8b91925060203d8111612d92575b612d838183610235565b810190610cdd565b905f612c8d565b503d612d79565b612db99060203d8111612dbe575b612db18183610235565b810190610d55565b612c38565b503d612da7565b610ba5565b94505050505090565b612df4915060203d8111612dfa575b612dec8183610235565b810190612201565b5f612bbb565b503d612de2565b610ba5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612e3b90612e36612f71565b612e3d565b565b612e4690613049565b565b612e5190612e2a565b565b612e5b612f71565b612e63612e65565b565b612e6d613083565b565b612e77612e53565b565b612e81612f71565b565b612e8b612e79565b565b612e956109c0565b50612eb05f612eaa612ea561091b565b61308d565b016109dd565b90565b5190565b90612ec182613090565b81612eec7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91612266565b90612ef56100e4565b80612eff8161033f565b0390a2612f0b81612eb3565b612f1d612f175f610c19565b916106ec565b115f14612f3157612f2d916131a0565b505b565b5050612f3b613105565b612f2f565b612f486109c0565b503390565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b612f82612f7c6131d3565b15610d2d565b612f8857565b612f906100e4565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612fc06004820161033f565b0390fd5b612fd590612fd0612f71565b612fd7565b565b80612ff2612fec612fe75f610997565b61016c565b9161016c565b1461300257613000906127f7565b565b61304561300e5f610997565b6130166100e4565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b61305290612fc4565b565b61305c612f71565b613064613066565b565b613081613071612f4d565b5f61307a6129ea565b910161292b565b565b61308b613054565b565b90565b803b6130a461309e5f610c19565b916106ec565b146130c6576130c4905f6130be6130b961091b565b61308d565b01612275565b565b613101906130d26100e4565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b346131186131125f610c19565b916106ec565b1161311f57565b6131276100e4565b7fb398979f000000000000000000000000000000000000000000000000000000008152806131576004820161033f565b0390fd5b606090565b9061317261316d83610273565b61025e565b918252565b3d5f14613192576131873d613160565b903d5f602084013e5b565b61319a61315b565b90613190565b5f806131cc936131ae61315b565b508390602081019051915af4906131c3613177565b909190916131f1565b90565b5f90565b6131db6131cf565b506131ee5f6131e8612e06565b01611e93565b90565b90613205906131fe61315b565b5015610d2d565b5f146132115750613295565b61321a82612eb3565b61322c6132265f610c19565b916106ec565b148061327a575b61323b575090565b613276906132476100e4565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610185565b0390fd5b50803b61328f6132895f610c19565b916106ec565b14613233565b61329e81612eb3565b6132b06132aa5f610c19565b916106ec565b115f146132bf57805190602001fd5b6132c76100e4565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806132f76004820161033f565b0390fdfea2646970667358221220a1058efb432de981fa2fe4ef79521bb6b92bd07801933e12399c68b567fc12f364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x8A6 JUMPI STOP JUMPDEST PUSH2 0x1F PUSH0 CALLDATALOAD PUSH2 0xDE JUMP JUMPDEST DUP1 PUSH4 0x4AA4A4FC EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0x7DFB7EA1 EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xBB JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xB1AA8CD1 EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xB487C54A EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xA7 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0x873 JUMP JUMPDEST PUSH2 0x840 JUMP JUMPDEST PUSH2 0x7F5 JUMP JUMPDEST PUSH2 0x768 JUMP JUMPDEST PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x586 JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH2 0x4A0 JUMP JUMPDEST PUSH2 0x3C8 JUMP JUMPDEST PUSH2 0x393 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST PUSH2 0x19A JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0xFC JUMPI JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x12E SWAP1 PUSH1 0x8 PUSH2 0x133 SWAP4 MUL PUSH2 0x101 JUMP JUMPDEST PUSH2 0x105 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x141 SWAP2 SLOAD PUSH2 0x11E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x150 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x136 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x175 SWAP1 PUSH2 0x153 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x181 SWAP1 PUSH2 0x16C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x198 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x1CA JUMPI PUSH2 0x1AA CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x1B5 PUSH2 0x144 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1DC DUP2 PUSH2 0x16C JUMP JUMPDEST SUB PUSH2 0x1E3 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1F4 DUP3 PUSH2 0x1D3 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x23F SWAP1 PUSH2 0x1FE JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x259 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST SWAP1 PUSH2 0x271 PUSH2 0x26A PUSH2 0xE4 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x235 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x291 JUMPI PUSH2 0x28D PUSH1 0x20 SWAP2 PUSH2 0x1FE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2B6 PUSH2 0x2B1 DUP3 PUSH2 0x273 JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x2D2 JUMPI PUSH2 0x2D0 SWAP3 PUSH2 0x296 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2F5 JUMPI DUP2 PUSH1 0x20 PUSH2 0x2F2 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x2A1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F6 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x33A JUMPI PUSH2 0x313 DUP4 PUSH0 DUP4 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x335 JUMPI PUSH2 0x332 SWAP3 ADD PUSH2 0x2D7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CF JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x358 PUSH2 0x352 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FA JUMP JUMPDEST SWAP1 PUSH2 0x8D3 JUMP JUMPDEST PUSH2 0x360 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x36A DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x37A SWAP1 PUSH2 0x36E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x391 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x371 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x3C3 JUMPI PUSH2 0x3A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x3BF PUSH2 0x3AE PUSH2 0x953 JUMP JUMPDEST PUSH2 0x3B6 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x37E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST CALLVALUE PUSH2 0x3F6 JUMPI PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x3E0 PUSH2 0x9B6 JUMP JUMPDEST PUSH2 0x3E8 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x3F2 DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x424 SWAP1 PUSH1 0x8 PUSH2 0x429 SWAP4 MUL PUSH2 0x101 JUMP JUMPDEST PUSH2 0x3FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x437 SWAP2 SLOAD PUSH2 0x414 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x444 PUSH0 DUP1 PUSH2 0x42C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x45E PUSH2 0x459 PUSH2 0x463 SWAP3 PUSH2 0x153 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x153 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x46F SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47B SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x487 SWAP1 PUSH2 0x472 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x49E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x47E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4D0 JUMPI PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x4CC PUSH2 0x4BB PUSH2 0x43A JUMP JUMPDEST PUSH2 0x4C3 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x48B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4FE SWAP1 PUSH1 0x8 PUSH2 0x503 SWAP4 MUL PUSH2 0x101 JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x511 SWAP2 SLOAD PUSH2 0x4EE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x520 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52C SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x538 SWAP1 PUSH2 0x523 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x54F SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x52F JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x581 JUMPI PUSH2 0x561 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x57D PUSH2 0x56C PUSH2 0x514 JUMP JUMPDEST PUSH2 0x574 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x53C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST CALLVALUE PUSH2 0x5B6 JUMPI PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x5B2 PUSH2 0x5A1 PUSH2 0x9EA JUMP JUMPDEST PUSH2 0x5A9 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x5D9 JUMPI PUSH2 0x5D5 PUSH1 0x20 SWAP2 PUSH2 0x1FE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST SWAP1 PUSH2 0x5F0 PUSH2 0x5EB DUP4 PUSH2 0x5BB JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x626 PUSH1 0x5 PUSH2 0x5DE JUMP JUMPDEST SWAP1 PUSH2 0x633 PUSH1 0x20 DUP4 ADD PUSH2 0x5F5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x63D PUSH2 0x61C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x648 PUSH2 0x635 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x653 PUSH2 0x640 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x68D PUSH2 0x696 PUSH1 0x20 SWAP4 PUSH2 0x69B SWAP4 PUSH2 0x684 DUP2 PUSH2 0x656 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x65A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x663 JUMP JUMPDEST PUSH2 0x1FE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x6B4 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x66E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6E7 JUMPI PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF2 JUMP JUMPDEST PUSH2 0x6E3 PUSH2 0x6D2 PUSH2 0x64B JUMP JUMPDEST PUSH2 0x6DA PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x69F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6F8 DUP2 PUSH2 0x6EC JUMP JUMPDEST SUB PUSH2 0x6FF JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x710 DUP3 PUSH2 0x6EF JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x763 JUMPI PUSH2 0x72A DUP2 PUSH0 DUP6 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP3 PUSH2 0x738 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x703 JUMP JUMPDEST SWAP3 PUSH2 0x760 PUSH2 0x749 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP4 PUSH2 0x757 DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x703 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST CALLVALUE PUSH2 0x79A JUMPI PUSH2 0x784 PUSH2 0x77B CALLDATASIZE PUSH1 0x4 PUSH2 0x712 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x17F3 JUMP JUMPDEST PUSH2 0x78C PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x796 DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x7F0 JUMPI PUSH2 0x7B7 DUP2 PUSH0 DUP6 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP3 PUSH2 0x7C5 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP3 PUSH2 0x7ED PUSH2 0x7D6 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x703 JUMP JUMPDEST SWAP4 PUSH2 0x7E4 DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x703 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH2 0x80C PUSH2 0x803 CALLDATASIZE PUSH1 0x4 PUSH2 0x79F JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x1E64 JUMP JUMPDEST PUSH2 0x814 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x81E DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x83B JUMPI PUSH2 0x838 SWAP2 PUSH0 ADD PUSH2 0x1E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST CALLVALUE PUSH2 0x86E JUMPI PUSH2 0x858 PUSH2 0x853 CALLDATASIZE PUSH1 0x4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x23E4 JUMP JUMPDEST PUSH2 0x860 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x86A DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST CALLVALUE PUSH2 0x8A1 JUMPI PUSH2 0x88B PUSH2 0x886 CALLDATASIZE PUSH1 0x4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x2474 JUMP JUMPDEST PUSH2 0x893 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x89D DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0x8BC SWAP2 PUSH2 0x8B7 PUSH2 0x248B JUMP JUMPDEST PUSH2 0x8BE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x8D1 SWAP2 PUSH2 0x8CC DUP2 PUSH2 0x255D JUMP JUMPDEST PUSH2 0x25CD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x8DD SWAP2 PUSH2 0x8AA JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x8F4 SWAP1 PUSH2 0x8EF PUSH2 0x270B JUMP JUMPDEST PUSH2 0x947 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x913 PUSH2 0x90E PUSH2 0x918 SWAP3 PUSH2 0x8F7 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x36E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x944 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x8FF JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x950 PUSH2 0x91B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x963 PUSH2 0x95E PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x8E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x96E PUSH2 0x2789 JUMP JUMPDEST PUSH2 0x976 PUSH2 0x9A3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x98F PUSH2 0x98A PUSH2 0x994 SWAP3 PUSH2 0x978 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x153 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9A0 SWAP1 PUSH2 0x97B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9B4 PUSH2 0x9AF PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x27F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9BE PUSH2 0x966 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x9D5 PUSH2 0x9DA SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x105 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9E7 SWAP1 SLOAD PUSH2 0x9C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9F2 PUSH2 0x9C0 JUMP JUMPDEST POP PUSH2 0xA05 PUSH0 PUSH2 0x9FF PUSH2 0x2863 JUMP JUMPDEST ADD PUSH2 0x9DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA1D SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0xA18 PUSH2 0x294B JUMP JUMPDEST PUSH2 0xF41 JUMP JUMPDEST PUSH2 0xA25 PUSH2 0x29F7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA3E PUSH2 0xA39 PUSH2 0xA43 SWAP3 PUSH2 0xA27 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xA82 PUSH2 0xA88 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x6EC JUMP JUMPDEST SWAP3 PUSH2 0x6EC JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0xA93 JUMPI JUMP JUMPDEST PUSH2 0xA46 JUMP JUMPDEST PUSH2 0xAA1 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAAD SWAP1 PUSH2 0xA98 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAB9 SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xADE JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xAF4 DUP3 PUSH2 0x1D3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xB0B PUSH2 0xB06 DUP3 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0xB48 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0xB2F JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0xB3D DUP5 DUP7 PUSH2 0xAE7 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0xB22 JUMP JUMPDEST PUSH2 0xAE3 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xB6B JUMPI DUP2 PUSH1 0x20 PUSH2 0xB68 SWAP4 MLOAD SWAP2 ADD PUSH2 0xAF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F6 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xBA0 JUMPI PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB9B JUMPI PUSH2 0xB98 SWAP3 ADD PUSH2 0xB4D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CF JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH2 0xBAD PUSH2 0xE4 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBD1 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x208 JUMP JUMPDEST SWAP1 PUSH2 0xBE8 PUSH2 0xBE3 DUP4 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0xC17 PUSH2 0xBFF DUP4 PUSH2 0xBD6 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0xC0D DUP7 SWAP4 PUSH2 0xBB9 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0xBED JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC2D PUSH2 0xC28 PUSH2 0xC32 SWAP3 PUSH2 0x978 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC41 SWAP2 ADD PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xC7B DUP3 PUSH2 0xBB5 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xC8C JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xC44 JUMP JUMPDEST PUSH2 0xC9B SWAP1 MLOAD PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA7 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB3 SWAP1 PUSH2 0xC9E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCBF SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCCB SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xCDB DUP3 PUSH2 0x6EF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xCF6 JUMPI PUSH2 0xCF3 SWAP2 PUSH0 ADD PUSH2 0xCCE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD09 DUP3 PUSH2 0xCFB JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xD1A JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xC44 JUMP JUMPDEST SWAP1 PUSH2 0xD29 SWAP1 PUSH2 0x6EC JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xD3B DUP2 PUSH2 0xD2D JUMP JUMPDEST SUB PUSH2 0xD42 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD53 DUP3 PUSH2 0xD32 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xD6E JUMPI PUSH2 0xD6B SWAP2 PUSH0 ADD PUSH2 0xD46 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH2 0xD7C SWAP1 PUSH2 0x6EC JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xDA9 PUSH2 0xDB0 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xD9F PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0xDD3 SWAP3 SWAP5 SWAP4 PUSH2 0xDCC PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xDFE PUSH2 0xE05 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xDF4 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xE11 SWAP1 MLOAD PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE23 PUSH2 0xE29 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x6EC JUMP JUMPDEST SWAP3 PUSH2 0x6EC JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0xE34 JUMPI JUMP JUMPDEST PUSH2 0xA46 JUMP JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E74206F757470757420616D6F756E74000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xE6D PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x65A JUMP JUMPDEST PUSH2 0xE76 DUP2 PUSH2 0xE39 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xE8F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xE60 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xE99 JUMPI JUMP JUMPDEST PUSH2 0xEA1 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xED1 PUSH1 0x4 DUP3 ADD PUSH2 0xE7A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xEDE SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEEA SWAP1 PUSH2 0xED5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEF6 SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0xF03 JUMPI JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF1B SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF26 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF32 SWAP1 PUSH2 0xF1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF3E SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP4 PUSH2 0xF58 TIMESTAMP PUSH2 0xF52 PUSH2 0x12C PUSH2 0xA2A JUMP JUMPDEST SWAP1 PUSH2 0xA73 JUMP JUMPDEST SWAP3 PUSH2 0xF62 DUP4 PUSH2 0xAA4 JUMP JUMPDEST SWAP7 PUSH2 0xF86 PUSH0 PUSH2 0xF70 DUP11 PUSH2 0xAB0 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0xF7E PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xF96 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x17EE JUMPI PUSH0 SWAP2 PUSH2 0x17CC JUMPI JUMPDEST POP SWAP6 PUSH2 0xFBB PUSH2 0xFB6 DUP9 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST SWAP6 PUSH2 0xFCD PUSH2 0xFC8 DUP10 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST SWAP10 PUSH2 0xFD7 PUSH0 PUSH2 0xC19 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFF3 PUSH2 0xFED PUSH2 0xFE8 DUP14 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0x10C5 JUMPI PUSH2 0x1054 SWAP1 PUSH1 0x20 PUSH2 0x1022 PUSH2 0x101D PUSH2 0x1018 PUSH2 0x1013 DUP16 DUP7 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1049 PUSH2 0x1034 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x103D PUSH2 0xE4 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x10C0 JUMPI PUSH2 0x1087 SWAP3 DUP15 PUSH2 0x1082 SWAP3 PUSH0 SWAP3 PUSH2 0x108C JUMPI JUMPDEST POP PUSH2 0x107D SWAP1 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST PUSH2 0xC35 JUMP JUMPDEST PUSH2 0xFD8 JUMP JUMPDEST PUSH2 0x107D SWAP2 SWAP3 POP PUSH2 0x10B2 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x10B9 JUMPI JUMPDEST PUSH2 0x10AA DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x106F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10A0 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP7 SWAP10 SWAP8 SWAP6 SWAP9 PUSH2 0x1118 PUSH1 0x20 PUSH2 0x10E6 PUSH2 0x10E1 DUP10 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x110D PUSH2 0x10F8 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x1101 PUSH2 0xE4 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x17C7 JUMPI PUSH0 SWAP2 PUSH2 0x1799 JUMPI JUMPDEST POP SWAP10 PUSH2 0x113D PUSH2 0x1138 DUP3 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x23B872DD SWAP3 CALLER SWAP1 PUSH2 0x116E PUSH0 PUSH2 0x1155 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP7 PUSH2 0x1179 DUP10 PUSH2 0x1162 PUSH2 0xE4 JUMP JUMPDEST SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xAC0 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xD80 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1794 JUMPI PUSH2 0x119C SWAP3 PUSH2 0x1197 SWAP3 PUSH2 0x1768 JUMPI JUMPDEST POP PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP4 PUSH2 0x11AE DUP4 PUSH2 0xAB0 JUMP JUMPDEST SWAP1 PUSH2 0x11CC PUSH0 DUP7 SWAP8 PUSH2 0x11D7 PUSH2 0x11C0 PUSH2 0xE4 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xAC0 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDB2 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1763 JUMPI PUSH1 0x20 SWAP4 PUSH2 0x11F4 SWAP3 PUSH2 0x1738 JUMPI JUMPDEST POP PUSH2 0xAB0 JUMP JUMPDEST PUSH2 0x121E PUSH0 PUSH4 0xE63697C8 PUSH2 0x1229 PUSH2 0x1209 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP8 PUSH2 0x1212 PUSH2 0xE4 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xAC0 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xDD5 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1733 JUMPI PUSH2 0x1707 JUMPI JUMPDEST POP PUSH2 0x1242 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP5 PUSH2 0x124C PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP6 JUMPDEST DUP7 PUSH2 0x1269 PUSH2 0x1263 PUSH2 0x125E DUP10 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0x14C9 JUMPI PUSH2 0x1282 PUSH2 0x127D DUP8 DUP10 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0x1294 PUSH2 0x128E DUP8 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x13A6 JUMPI PUSH2 0x12F5 PUSH1 0x20 PUSH2 0x12C3 PUSH2 0x12BE PUSH2 0x12B9 PUSH2 0x12B4 DUP12 DUP14 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x12EA PUSH2 0x12D5 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x12DE PUSH2 0xE4 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x13A1 JUMPI PUSH2 0x1341 DUP13 PUSH2 0x133C PUSH2 0x1334 PUSH2 0x1361 SWAP7 DUP14 DUP16 PUSH2 0x135A SWAP9 PUSH0 SWAP4 PUSH2 0x1367 JUMPI JUMPDEST POP PUSH2 0x132E SWAP2 PUSH2 0x1329 SWAP2 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP1 PUSH2 0xE14 JUMP JUMPDEST DUP13 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST PUSH2 0x1354 PUSH2 0x134F DUP14 DUP12 SWAP1 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP1 PUSH2 0xA73 JUMP JUMPDEST SWAP7 JUMPDEST PUSH2 0xC35 JUMP JUMPDEST SWAP6 PUSH2 0x124E JUMP JUMPDEST PUSH2 0x1329 SWAP2 SWAP4 POP SWAP2 PUSH2 0x1391 PUSH2 0x132E SWAP4 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x139A JUMPI JUMPDEST PUSH2 0x1389 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 PUSH2 0x131B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x137F JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1400 PUSH1 0x20 PUSH2 0x13CE PUSH2 0x13C9 PUSH2 0x13C4 PUSH2 0x13BF DUP12 DUP14 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x13F5 PUSH2 0x13E0 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x13E9 PUSH2 0xE4 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x14C4 JUMPI PUSH2 0x144C DUP13 PUSH2 0x1447 PUSH2 0x143F PUSH2 0x1361 SWAP7 DUP14 DUP16 PUSH2 0x1484 SWAP9 PUSH0 SWAP4 PUSH2 0x148A JUMPI JUMPDEST POP PUSH2 0x1439 SWAP2 PUSH2 0x1434 SWAP2 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP1 PUSH2 0xE14 JUMP JUMPDEST DUP13 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST PUSH2 0x147E PUSH2 0x1462 PUSH2 0x145D DUP11 DUP13 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST DUP14 PUSH2 0x1476 PUSH2 0x1471 DUP14 DUP13 SWAP4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP1 CALLER SWAP3 PUSH2 0x2B60 JUMP JUMPDEST SWAP1 PUSH2 0xA73 JUMP JUMPDEST SWAP7 PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1434 SWAP2 SWAP4 POP SWAP2 PUSH2 0x14B4 PUSH2 0x1439 SWAP4 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x14BD JUMPI JUMPDEST PUSH2 0x14AC DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 PUSH2 0x1426 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14A2 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST POP SWAP6 POP SWAP6 SWAP3 POP SWAP6 POP SWAP2 POP PUSH2 0x151B PUSH1 0x20 PUSH2 0x14E9 PUSH2 0x14E4 DUP6 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1510 PUSH2 0x14FB ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x1504 PUSH2 0xE4 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1702 JUMPI PUSH2 0x1556 SWAP3 PUSH2 0x153B SWAP3 PUSH0 SWAP2 PUSH2 0x16D4 JUMPI JUMPDEST POP PUSH2 0xE14 JUMP JUMPDEST SWAP4 PUSH2 0x154F PUSH2 0x1549 DUP7 SWAP3 PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0xE92 JUMP JUMPDEST DUP1 PUSH2 0x1572 PUSH2 0x156C PUSH2 0x1567 PUSH1 0x2 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x164B JUMPI POP PUSH2 0x1594 PUSH2 0x158F PUSH2 0x158A PUSH1 0x2 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST PUSH2 0xEED JUMP JUMPDEST SWAP1 PUSH4 0x2E1A7D4D DUP4 DUP4 EXTCODESIZE ISZERO PUSH2 0x1646 JUMPI PUSH2 0x15CB SWAP4 PUSH2 0x15C0 PUSH0 DUP1 SWAP5 PUSH2 0x15B4 PUSH2 0xE4 JUMP JUMPDEST SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0xAC0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xF08 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1641 JUMPI PUSH0 SWAP4 PUSH2 0x15F6 PUSH2 0x15F1 DUP7 SWAP6 SWAP4 DUP7 SWAP6 SWAP5 DUP7 SWAP6 PUSH2 0x1615 JUMPI JUMPDEST POP PUSH2 0xF29 JUMP JUMPDEST PUSH2 0xF35 JUMP JUMPDEST DUP3 DUP3 ISZERO PUSH2 0x160C JUMPI JUMPDEST CALL ISZERO PUSH2 0x1607 JUMPI JUMPDEST JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST POP PUSH2 0x8FC PUSH2 0x15FE JUMP JUMPDEST PUSH2 0x1634 SWAP1 DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x163A JUMPI JUMPDEST PUSH2 0x162C DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xEF9 JUMP JUMPDEST PUSH0 PUSH2 0x15EB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1622 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST SWAP2 PUSH2 0x1660 PUSH2 0x165B PUSH1 0x20 SWAP4 SWAP5 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH2 0x1683 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x168E PUSH2 0x1677 PUSH2 0xE4 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xAC0 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDB2 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x16CF JUMPI PUSH2 0x16A3 JUMPI JUMPDEST POP PUSH2 0x1605 JUMP JUMPDEST PUSH2 0x16C3 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x16C8 JUMPI JUMPDEST PUSH2 0x16BB DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x16B1 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x16F5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x16FB JUMPI JUMPDEST PUSH2 0x16ED DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH0 PUSH2 0x1535 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x16E3 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1727 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x172C JUMPI JUMPDEST PUSH2 0x171F DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x1238 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1715 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1757 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x175C JUMPI JUMPDEST PUSH2 0x174F DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x11EE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1745 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1788 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x178D JUMPI JUMPDEST PUSH2 0x1780 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x1191 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1776 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x17BA SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x17C0 JUMPI JUMPDEST PUSH2 0x17B2 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH0 PUSH2 0x112A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x17A8 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x17E8 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x17E0 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB70 JUMP JUMPDEST PUSH0 PUSH2 0xFA8 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST SWAP1 PUSH2 0x1800 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0xA08 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1817 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1812 PUSH2 0x294B JUMP JUMPDEST PUSH2 0x19C4 JUMP JUMPDEST PUSH2 0x181F PUSH2 0x29F7 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x496E636F72726563742045544820616D6F756E74000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1855 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x65A JUMP JUMPDEST PUSH2 0x185E DUP2 PUSH2 0x1821 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1877 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1848 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1881 JUMPI JUMP JUMPDEST PUSH2 0x1889 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x18B9 PUSH1 0x4 DUP3 ADD PUSH2 0x1862 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x18F6 PUSH2 0x18FC SWAP2 PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x1907 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x18BD JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1924 SWAP1 PUSH2 0x6EC JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x1935 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x191B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x195C PUSH2 0x1956 PUSH2 0x194F DUP5 PUSH2 0xCFB JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x190C JUMP JUMPDEST SWAP3 PUSH2 0x1915 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x196C JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x1985 PUSH2 0x197F PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x1928 JUMP JUMPDEST SWAP5 PUSH2 0x1939 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x195F JUMP JUMPDEST SWAP4 SWAP3 SWAP1 PUSH2 0x19BA PUSH1 0x40 SWAP2 PUSH2 0x19C2 SWAP5 PUSH2 0x19AD PUSH1 0x60 DUP10 ADD SWAP3 PUSH0 DUP11 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST DUP8 DUP3 SUB PUSH1 0x20 DUP10 ADD MSTORE PUSH2 0x193F JUMP JUMPDEST SWAP5 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST JUMP JUMPDEST SWAP4 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x19E7 PUSH2 0x19E1 TIMESTAMP PUSH2 0x19DB PUSH2 0x12C PUSH2 0xA2A JUMP JUMPDEST SWAP1 PUSH2 0xA73 JUMP JUMPDEST SWAP6 PUSH2 0xAA4 JUMP JUMPDEST PUSH2 0x1A0A PUSH0 PUSH2 0x19F4 DUP4 PUSH2 0xAB0 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1A02 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1A1A PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E5F JUMPI PUSH0 SWAP2 PUSH2 0x1E3D JUMPI JUMPDEST POP SWAP5 PUSH2 0x1A3F PUSH2 0x1A3A DUP8 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST SWAP5 DUP1 PUSH2 0x1A5B PUSH2 0x1A55 PUSH2 0x1A50 PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1DAA JUMPI POP PUSH2 0x1A7F CALLVALUE PUSH2 0x1A79 PUSH2 0x1A73 DUP8 PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ PUSH2 0x187A JUMP JUMPDEST PUSH2 0x1A99 PUSH2 0x1A94 PUSH2 0x1A8F PUSH1 0x2 PUSH2 0x9DD JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST PUSH2 0xEED JUMP JUMPDEST PUSH4 0xD0E30DB0 DUP6 SWAP2 SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x1DA5 JUMPI PUSH0 SWAP2 PUSH2 0x1AC0 SWAP2 PUSH2 0x1AB6 PUSH2 0xE4 JUMP JUMPDEST SWAP5 DUP6 SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 PUSH2 0x1ACF PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1DA0 JUMPI PUSH2 0x1D74 JUMPI JUMPDEST POP PUSH2 0x1AE9 PUSH1 0x2 PUSH2 0x9DD JUMP JUMPDEST SWAP8 JUMPDEST PUSH2 0x1AF4 PUSH0 PUSH2 0xC19 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1B10 PUSH2 0x1B0A PUSH2 0x1B05 DUP12 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0x1BFD JUMPI PUSH2 0x1B74 SWAP1 DUP11 PUSH2 0x1B3F PUSH2 0x1B39 PUSH2 0x1B34 PUSH2 0x1B2F DUP14 DUP7 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1B79 JUMPI PUSH2 0x1B6E PUSH2 0x1B5C DUP9 PUSH2 0x1B56 DUP13 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 PUSH2 0x18EA JUMP JUMPDEST PUSH2 0x1B69 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST JUMPDEST PUSH2 0xC35 JUMP JUMPDEST PUSH2 0x1AF5 JUMP JUMPDEST PUSH2 0x1BC9 PUSH2 0x1BB7 DUP13 PUSH2 0x1B93 PUSH2 0x1B8E DUP14 DUP7 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0x1BA7 DUP14 PUSH2 0x1BA1 DUP14 SWAP2 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 PUSH2 0x18EA JUMP JUMPDEST SWAP1 PUSH2 0x1BB1 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP3 PUSH2 0x2B60 JUMP JUMPDEST PUSH2 0x1BC4 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xD1F JUMP JUMPDEST PUSH2 0x1BF8 PUSH2 0x1BDF PUSH2 0x1BDA DUP11 DUP5 SWAP1 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST PUSH2 0x1BF1 PUSH2 0x1BEB DUP10 PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0xE92 JUMP JUMPDEST PUSH2 0x1B6F JUMP JUMPDEST POP SWAP4 POP SWAP5 SWAP7 POP SWAP5 SWAP1 POP PUSH2 0x1C0F PUSH0 PUSH2 0xC19 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1C2B PUSH2 0x1C25 PUSH2 0x1C20 DUP11 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST LT ISZERO PUSH2 0x1CF1 JUMPI PUSH2 0x1C54 PUSH2 0x1C4F PUSH2 0x1C4A PUSH2 0x1C45 DUP11 DUP6 SWAP1 PUSH2 0xC71 JUMP JUMPDEST PUSH2 0xC91 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x1C66 DUP10 PUSH2 0xAB0 JUMP JUMPDEST SWAP1 PUSH2 0x1C96 PUSH0 PUSH2 0x1C7E PUSH2 0x1C79 DUP12 DUP9 SWAP1 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xE07 JUMP JUMPDEST SWAP7 PUSH2 0x1CA1 PUSH2 0x1C8A PUSH2 0xE4 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xAC0 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDB2 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1CEC JUMPI PUSH2 0x1CBB SWAP3 PUSH2 0x1CC0 JUMPI JUMPDEST POP PUSH2 0xC35 JUMP JUMPDEST PUSH2 0x1C10 JUMP JUMPDEST PUSH2 0x1CE0 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1CE5 JUMPI JUMPDEST PUSH2 0x1CD8 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x1CB5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1CCE JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST POP SWAP4 PUSH1 0x20 SWAP4 SWAP2 SWAP6 POP PUSH0 PUSH2 0x1D06 PUSH2 0x1D26 SWAP3 PUSH2 0xAB0 JUMP JUMPDEST SWAP3 PUSH2 0x1D31 PUSH4 0xB3BF9D32 SWAP2 SWAP6 SWAP8 PUSH2 0x1D1A PUSH2 0xE4 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xAC0 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x198F JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1D6F JUMPI PUSH2 0x1D43 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1D63 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D68 JUMPI JUMPDEST PUSH2 0x1D5B DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x1D40 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D51 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1D93 SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x1D99 JUMPI JUMPDEST PUSH2 0x1D8B DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xEF9 JUMP JUMPDEST PUSH0 PUSH2 0x1ADE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D81 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0xABC JUMP JUMPDEST SWAP8 PUSH2 0x1DBC PUSH2 0x1DB7 DUP11 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x1DEC PUSH0 PUSH2 0x1DD3 ADDRESS PUSH2 0xCC2 JUMP JUMPDEST SWAP6 PUSH2 0x1DF7 DUP13 PUSH2 0x1DE0 PUSH2 0xE4 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xAC0 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xD80 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1E38 JUMPI PUSH2 0x1E0C JUMPI JUMPDEST POP PUSH2 0x1AEB JUMP JUMPDEST PUSH2 0x1E2C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E31 JUMPI JUMPDEST PUSH2 0x1E24 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x1E06 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E1A JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x1E59 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1E51 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB70 JUMP JUMPDEST PUSH0 PUSH2 0x1A2C JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST SWAP1 PUSH2 0x1E71 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1802 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1E8B PUSH2 0x1E90 SWAP2 PUSH2 0x1E73 JUMP JUMPDEST PUSH2 0x1E79 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E9D SWAP1 SLOAD PUSH2 0x1E7F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1EB9 PUSH2 0x1EBE SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x1EA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1ECB SWAP1 SLOAD PUSH2 0x1EAD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1EEF PUSH2 0x1EEA PUSH2 0x1EF4 SWAP3 PUSH2 0x978 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F0E PUSH2 0x1F09 PUSH2 0x1F13 SWAP3 PUSH2 0x1EF7 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F1F SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F35 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8FA JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1F53 PUSH2 0x1F4E PUSH2 0x1F58 SWAP3 PUSH2 0x1ECE JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F73 PUSH2 0x1F6E PUSH2 0x1F7A SWAP3 PUSH2 0x1F3F JUMP JUMPDEST PUSH2 0x1F5B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1F22 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F98 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x1F7E JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1FAB SWAP1 PUSH2 0xD2D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1FC6 PUSH2 0x1FC1 PUSH2 0x1FCD SWAP3 PUSH2 0x1FA2 JUMP JUMPDEST PUSH2 0x1FAE JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1F84 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1FDA SWAP1 PUSH2 0x1EFA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1FF1 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1FD1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1FFB PUSH2 0x2E06 JUMP JUMPDEST SWAP1 PUSH2 0x2010 PUSH2 0x200A PUSH0 DUP5 ADD PUSH2 0x1E93 JUMP JUMPDEST ISZERO PUSH2 0xD2D JUMP JUMPDEST SWAP1 PUSH2 0x201C PUSH0 DUP5 ADD PUSH2 0x1EC1 JUMP JUMPDEST DUP1 PUSH2 0x202F PUSH2 0x2029 PUSH0 PUSH2 0x1EDB JUMP JUMPDEST SWAP2 PUSH2 0x1ECE JUMP JUMPDEST EQ DUP1 PUSH2 0x2169 JUMPI JUMPDEST SWAP1 PUSH2 0x204A PUSH2 0x2044 PUSH1 0x1 PUSH2 0x1EFA JUMP JUMPDEST SWAP2 PUSH2 0x1ECE JUMP JUMPDEST EQ DUP1 PUSH2 0x2141 JUMPI JUMPDEST PUSH2 0x205C SWAP1 SWAP2 ISZERO PUSH2 0xD2D JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x2130 JUMPI JUMPDEST POP PUSH2 0x20F4 JUMPI PUSH2 0x208C SWAP1 PUSH2 0x2081 PUSH2 0x2079 PUSH1 0x1 PUSH2 0x1EFA JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x1F5E JUMP JUMPDEST DUP3 PUSH2 0x20E2 JUMPI JUMPDEST PUSH2 0x2295 JUMP JUMPDEST PUSH2 0x2094 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x20A1 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x1FB1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x20D9 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x20D0 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1FDE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x2091 JUMP JUMPDEST PUSH2 0x20EF PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1FB1 JUMP JUMPDEST PUSH2 0x2087 JUMP JUMPDEST PUSH2 0x20FC PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x212C PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x213B SWAP2 POP ISZERO PUSH2 0xD2D JUMP JUMPDEST PUSH0 PUSH2 0x2063 JUMP JUMPDEST POP PUSH2 0x205C PUSH2 0x214E ADDRESS PUSH2 0x1F16 JUMP JUMPDEST EXTCODESIZE PUSH2 0x2161 PUSH2 0x215B PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x2051 JUMP JUMPDEST POP DUP3 PUSH2 0x2036 JUMP JUMPDEST PUSH2 0x2179 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2185 SWAP1 PUSH2 0x2170 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x21A7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8FA JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x21BA SWAP1 PUSH2 0x2170 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x21D5 PUSH2 0x21D0 PUSH2 0x21DC SWAP3 PUSH2 0x21B1 JUMP JUMPDEST PUSH2 0x21BD JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2188 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x21EC PUSH2 0x21F1 SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x3FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21FE SWAP1 SLOAD PUSH2 0x21E0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x221A JUMPI PUSH2 0x2217 SWAP2 PUSH0 ADD PUSH2 0xAE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH2 0x2228 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2234 SWAP1 PUSH2 0x221F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2240 SWAP1 PUSH2 0x221F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x225B PUSH2 0x2256 PUSH2 0x2262 SWAP3 PUSH2 0x2237 JUMP JUMPDEST PUSH2 0x2243 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2188 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x226F SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x228A PUSH2 0x2285 PUSH2 0x2291 SWAP3 PUSH2 0x2266 JUMP JUMPDEST PUSH2 0x2272 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2188 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x22BA PUSH2 0x22C0 SWAP2 PUSH2 0x22A5 CALLER PUSH2 0x2E48 JUMP JUMPDEST PUSH2 0x22AD PUSH2 0x2E6F JUMP JUMPDEST PUSH2 0x22B5 PUSH2 0x2E83 JUMP JUMPDEST PUSH2 0x217C JUMP JUMPDEST PUSH0 PUSH2 0x21C0 JUMP JUMPDEST PUSH2 0x22EC PUSH1 0x20 PUSH2 0x22D6 PUSH2 0x22D1 PUSH0 PUSH2 0x21F4 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x22E4 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x22FC PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x23DF JUMPI PUSH2 0x2323 SWAP2 PUSH2 0x231C SWAP2 PUSH0 SWAP2 PUSH2 0x23B1 JUMPI JUMPDEST POP PUSH2 0x222B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2246 JUMP JUMPDEST PUSH2 0x234F PUSH1 0x20 PUSH2 0x2339 PUSH2 0x2334 PUSH0 PUSH2 0x21F4 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x2347 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x235F PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x23AC JUMPI PUSH2 0x237C SWAP2 PUSH0 SWAP2 PUSH2 0x237E JUMPI JUMPDEST POP PUSH1 0x2 PUSH2 0x2275 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x239F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x23A5 JUMPI JUMPDEST PUSH2 0x2397 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2201 JUMP JUMPDEST PUSH0 PUSH2 0x2374 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x238D JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x23D2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x23D8 JUMPI JUMPDEST PUSH2 0x23CA DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2201 JUMP JUMPDEST PUSH0 PUSH2 0x2316 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x23C0 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH2 0x23ED SWAP1 PUSH2 0x1FF3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2400 SWAP1 PUSH2 0x23FB PUSH2 0x2789 JUMP JUMPDEST PUSH2 0x2402 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x241D PUSH2 0x2417 PUSH2 0x2412 PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x242D JUMPI PUSH2 0x242B SWAP1 PUSH2 0x27F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2470 PUSH2 0x2439 PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x2441 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x247D SWAP1 PUSH2 0x23EF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2488 SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2494 ADDRESS PUSH2 0x247F JUMP JUMPDEST PUSH2 0x24C6 PUSH2 0x24C0 PUSH32 0x0 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2510 JUMPI JUMPDEST PUSH2 0x24D4 JUMPI JUMP JUMPDEST PUSH2 0x24DC PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x250C PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2519 PUSH2 0x2E8D JUMP JUMPDEST PUSH2 0x254B PUSH2 0x2545 PUSH32 0x0 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ ISZERO PUSH2 0x24CE JUMP JUMPDEST POP PUSH2 0x255B PUSH2 0x2789 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2566 SWAP1 PUSH2 0x2552 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2571 SWAP1 PUSH2 0x44A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x257D SWAP1 PUSH2 0x2568 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2589 SWAP1 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2595 DUP2 PUSH2 0x36E JUMP JUMPDEST SUB PUSH2 0x259C JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x25AD DUP3 PUSH2 0x258C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x25C8 JUMPI PUSH2 0x25C5 SWAP2 PUSH0 ADD PUSH2 0x25A0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x25FB PUSH1 0x20 PUSH2 0x25E5 PUSH2 0x25E0 DUP7 PUSH2 0x2574 JUMP JUMPDEST PUSH2 0x2580 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x25F3 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x260B PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x26DB JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x266C JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x262D JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x2668 SWAP1 PUSH2 0x2639 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2687 PUSH2 0x2681 PUSH2 0x267C PUSH2 0x91B JUMP JUMPDEST PUSH2 0x36E JUMP JUMPDEST SWAP2 PUSH2 0x36E JUMP JUMPDEST SUB PUSH2 0x269C JUMPI PUSH2 0x2697 SWAP3 SWAP4 POP PUSH2 0x2EB7 JUMP JUMPDEST PUSH2 0x262B JUMP JUMPDEST PUSH2 0x26D7 DUP5 PUSH2 0x26A8 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x37E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x26FD SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2704 JUMPI JUMPDEST PUSH2 0x26F5 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25AF JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2618 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26EB JUMP JUMPDEST PUSH2 0x2714 ADDRESS PUSH2 0x247F JUMP JUMPDEST PUSH2 0x2746 PUSH2 0x2740 PUSH32 0x0 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST SUB PUSH2 0x274D JUMPI JUMP JUMPDEST PUSH2 0x2755 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2785 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2791 PUSH2 0x9EA JUMP JUMPDEST PUSH2 0x27AA PUSH2 0x27A4 PUSH2 0x279F PUSH2 0x2F40 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST SUB PUSH2 0x27B1 JUMPI JUMP JUMPDEST PUSH2 0x27F3 PUSH2 0x27BC PUSH2 0x2F40 JUMP JUMPDEST PUSH2 0x27C4 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27FF PUSH2 0x2863 JUMP JUMPDEST PUSH2 0x2817 PUSH2 0x280D PUSH0 DUP4 ADD PUSH2 0x9DD JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x2275 JUMP JUMPDEST SWAP1 PUSH2 0x284B PUSH2 0x2845 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x2266 JUMP JUMPDEST SWAP2 PUSH2 0x2266 JUMP JUMPDEST SWAP2 PUSH2 0x2854 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x285E DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2896 PUSH2 0x289B SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x2887 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28A8 SWAP1 SLOAD PUSH2 0x288A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C2 PUSH2 0x28BD PUSH2 0x28C7 SWAP3 PUSH2 0x28AB JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28D4 PUSH1 0x2 PUSH2 0x28AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2902 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8FA JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2920 PUSH2 0x291B PUSH2 0x2925 SWAP3 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2940 PUSH2 0x293B PUSH2 0x2947 SWAP3 PUSH2 0x290C JUMP JUMPDEST PUSH2 0x2928 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x28D7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2953 PUSH2 0x2F4D JUMP JUMPDEST PUSH2 0x295E PUSH0 DUP3 ADD PUSH2 0x289E JUMP JUMPDEST PUSH2 0x2977 PUSH2 0x2971 PUSH2 0x296C PUSH2 0x28CA JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ PUSH2 0x2992 JUMPI PUSH2 0x2990 SWAP1 PUSH0 PUSH2 0x2989 PUSH2 0x28CA JUMP JUMPDEST SWAP2 ADD PUSH2 0x292B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x299A PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x29CA PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x29E2 PUSH2 0x29DD PUSH2 0x29E7 SWAP3 PUSH2 0x1EF7 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29F4 PUSH1 0x1 PUSH2 0x29CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A12 PUSH2 0x2A02 PUSH2 0x2F4D JUMP JUMPDEST PUSH0 PUSH2 0x2A0B PUSH2 0x29EA JUMP JUMPDEST SWAP2 ADD PUSH2 0x292B JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2A24 PUSH2 0x2A29 SWAP2 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A36 SWAP1 SLOAD PUSH2 0x2A18 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A6E PUSH2 0x2A75 SWAP5 PUSH2 0x2A64 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x2A5A PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x2AC2 SWAP5 PUSH2 0x2AB1 PUSH2 0x2ABB SWAP3 PUSH2 0x2AA7 PUSH1 0x80 SWAP7 PUSH2 0x2A9D PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xD73 JUMP JUMPDEST ADD SWAP1 PUSH2 0x178 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x53776170206661696C6564000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2AF8 PUSH1 0xB PUSH1 0x20 SWAP3 PUSH2 0x65A JUMP JUMPDEST PUSH2 0x2B01 DUP2 PUSH2 0x2AC4 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2B1A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2AEB JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2B24 JUMPI JUMP JUMPDEST PUSH2 0x2B2C PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2B5C PUSH1 0x4 DUP3 ADD PUSH2 0x2B05 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x2B6C PUSH2 0x2A14 JUMP JUMPDEST SWAP4 PUSH2 0x2B99 PUSH1 0x20 PUSH2 0x2B83 PUSH2 0x2B7E PUSH0 PUSH2 0x21F4 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x2B91 PUSH2 0xE4 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xAC0 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BA9 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E01 JUMPI PUSH0 SWAP2 PUSH2 0x2DD3 JUMPI JUMPDEST POP SWAP3 DUP2 PUSH2 0x2BD0 PUSH2 0x2BCA DUP8 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x2DCA JUMPI PUSH2 0x2BE6 PUSH2 0x2BE1 DUP4 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x2C00 PUSH2 0x2BFB PUSH1 0x1 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST SWAP1 PUSH2 0x2C1E PUSH0 DUP7 SWAP6 PUSH2 0x2C29 PUSH2 0x2C12 PUSH2 0xE4 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xAC0 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDB2 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2DC5 JUMPI PUSH2 0x2D99 JUMPI JUMPDEST POP PUSH2 0x2C4B PUSH2 0x2C46 PUSH1 0x1 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 DUP5 SWAP1 PUSH2 0x2C75 PUSH0 DUP11 SWAP6 PUSH2 0x2C80 DUP9 DUP12 SWAP1 PUSH2 0x2C69 PUSH2 0xE4 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0xAC0 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x2A39 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x2D69 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x2D5D JUMPI POP PUSH1 0x1 PUSH2 0x2CC2 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST PUSH2 0x2CBF DUP2 PUSH2 0x2CB9 PUSH2 0x2CB3 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST GT PUSH2 0x2B1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP5 SWAP6 POP PUSH2 0x2D02 SWAP2 PUSH2 0x2D0D PUSH0 SWAP3 PUSH2 0x2CE2 PUSH2 0x2CDD PUSH1 0x1 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST SWAP6 PUSH4 0x5EFAAEBB SWAP4 SWAP8 SWAP10 SWAP2 SWAP1 SWAP2 PUSH2 0x2CF6 PUSH2 0xE4 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0xAC0 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x2A77 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D58 JUMPI PUSH0 SWAP2 PUSH2 0x2D2A JUMPI JUMPDEST POP PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2C9D JUMP JUMPDEST PUSH2 0x2D4B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D51 JUMPI JUMPDEST PUSH2 0x2D43 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH0 PUSH2 0x2D1F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D39 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x2CA3 JUMP JUMPDEST PUSH2 0x2D8B SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D92 JUMPI JUMPDEST PUSH2 0x2D83 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xCDD JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2C8D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D79 JUMP JUMPDEST PUSH2 0x2DB9 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2DBE JUMPI JUMPDEST PUSH2 0x2DB1 DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x2C38 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2DA7 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2DF4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2DFA JUMPI JUMPDEST PUSH2 0x2DEC DUP2 DUP4 PUSH2 0x235 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2201 JUMP JUMPDEST PUSH0 PUSH2 0x2BBB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2DE2 JUMP JUMPDEST PUSH2 0xBA5 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2E3B SWAP1 PUSH2 0x2E36 PUSH2 0x2F71 JUMP JUMPDEST PUSH2 0x2E3D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E46 SWAP1 PUSH2 0x3049 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E51 SWAP1 PUSH2 0x2E2A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E5B PUSH2 0x2F71 JUMP JUMPDEST PUSH2 0x2E63 PUSH2 0x2E65 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E6D PUSH2 0x3083 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E77 PUSH2 0x2E53 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E81 PUSH2 0x2F71 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E8B PUSH2 0x2E79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E95 PUSH2 0x9C0 JUMP JUMPDEST POP PUSH2 0x2EB0 PUSH0 PUSH2 0x2EAA PUSH2 0x2EA5 PUSH2 0x91B JUMP JUMPDEST PUSH2 0x308D JUMP JUMPDEST ADD PUSH2 0x9DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2EC1 DUP3 PUSH2 0x3090 JUMP JUMPDEST DUP2 PUSH2 0x2EEC PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x2266 JUMP JUMPDEST SWAP1 PUSH2 0x2EF5 PUSH2 0xE4 JUMP JUMPDEST DUP1 PUSH2 0x2EFF DUP2 PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2F0B DUP2 PUSH2 0x2EB3 JUMP JUMPDEST PUSH2 0x2F1D PUSH2 0x2F17 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2F31 JUMPI PUSH2 0x2F2D SWAP2 PUSH2 0x31A0 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2F3B PUSH2 0x3105 JUMP JUMPDEST PUSH2 0x2F2F JUMP JUMPDEST PUSH2 0x2F48 PUSH2 0x9C0 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH2 0x2F82 PUSH2 0x2F7C PUSH2 0x31D3 JUMP JUMPDEST ISZERO PUSH2 0xD2D JUMP JUMPDEST PUSH2 0x2F88 JUMPI JUMP JUMPDEST PUSH2 0x2F90 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2FC0 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2FD5 SWAP1 PUSH2 0x2FD0 PUSH2 0x2F71 JUMP JUMPDEST PUSH2 0x2FD7 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2FF2 PUSH2 0x2FEC PUSH2 0x2FE7 PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x3002 JUMPI PUSH2 0x3000 SWAP1 PUSH2 0x27F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3045 PUSH2 0x300E PUSH0 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x3016 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3052 SWAP1 PUSH2 0x2FC4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x305C PUSH2 0x2F71 JUMP JUMPDEST PUSH2 0x3064 PUSH2 0x3066 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3081 PUSH2 0x3071 PUSH2 0x2F4D JUMP JUMPDEST PUSH0 PUSH2 0x307A PUSH2 0x29EA JUMP JUMPDEST SWAP2 ADD PUSH2 0x292B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x308B PUSH2 0x3054 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x30A4 PUSH2 0x309E PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ PUSH2 0x30C6 JUMPI PUSH2 0x30C4 SWAP1 PUSH0 PUSH2 0x30BE PUSH2 0x30B9 PUSH2 0x91B JUMP JUMPDEST PUSH2 0x308D JUMP JUMPDEST ADD PUSH2 0x2275 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3101 SWAP1 PUSH2 0x30D2 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x3118 PUSH2 0x3112 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST GT PUSH2 0x311F JUMPI JUMP JUMPDEST PUSH2 0x3127 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3157 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3172 PUSH2 0x316D DUP4 PUSH2 0x273 JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x3192 JUMPI PUSH2 0x3187 RETURNDATASIZE PUSH2 0x3160 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x319A PUSH2 0x315B JUMP JUMPDEST SWAP1 PUSH2 0x3190 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x31CC SWAP4 PUSH2 0x31AE PUSH2 0x315B JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x31C3 PUSH2 0x3177 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x31F1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x31DB PUSH2 0x31CF JUMP JUMPDEST POP PUSH2 0x31EE PUSH0 PUSH2 0x31E8 PUSH2 0x2E06 JUMP JUMPDEST ADD PUSH2 0x1E93 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3205 SWAP1 PUSH2 0x31FE PUSH2 0x315B JUMP JUMPDEST POP ISZERO PUSH2 0xD2D JUMP JUMPDEST PUSH0 EQ PUSH2 0x3211 JUMPI POP PUSH2 0x3295 JUMP JUMPDEST PUSH2 0x321A DUP3 PUSH2 0x2EB3 JUMP JUMPDEST PUSH2 0x322C PUSH2 0x3226 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ DUP1 PUSH2 0x327A JUMPI JUMPDEST PUSH2 0x323B JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x3276 SWAP1 PUSH2 0x3247 PUSH2 0xE4 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x185 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x328F PUSH2 0x3289 PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST EQ PUSH2 0x3233 JUMP JUMPDEST PUSH2 0x329E DUP2 PUSH2 0x2EB3 JUMP JUMPDEST PUSH2 0x32B0 PUSH2 0x32AA PUSH0 PUSH2 0xC19 JUMP JUMPDEST SWAP2 PUSH2 0x6EC JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x32BF JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x32C7 PUSH2 0xE4 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x32F7 PUSH1 0x4 DUP3 ADD PUSH2 0x33F JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 SDIV DUP15 0xFB NUMBER 0x2D 0xE9 DUP2 STATICCALL 0x2F 0xE4 0xEF PUSH26 0x521BB6B92BD07801933E12399C68B567FC12F364736F6C634300 ADDMOD NOT STOP CALLER ","sourceMap":"1042:4815:50:-:0;;;;;;;;;-1:-1:-1;1042:4815:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1240:20::-;;;;;;:::i;:::-;;:::o;1042:4815::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1156:33::-;;;;;:::i;:::-;;:::o;1042:4815::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1196:37::-;;;;;;:::i;:::-;;:::o;1042:4815::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1042:4815:50:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;2622:62:2;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;1042:4815:50:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;1042:4815:50:-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;1042:4815:50:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;1042:4815:50:-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;3217:103:6:-;;3282:1;3217:103;;;;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;1042:4815:50:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3121:2003::-;;;3335:21;:15;:21;3353:3;3335:21;:::i;:::-;;;:::i;:::-;3410:11;3396:26;3410:11;3396:26;:::i;:::-;3465:10;:22;;:20;:10;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3121:2003;3435:52;3539:10;3525:32;3539:17;:10;:17;:::i;:::-;3525:32;:::i;:::-;3612:10;3598:32;3612:17;:10;:17;:::i;:::-;3598:32;:::i;:::-;3658:1;3646:13;3658:1;3646:13;:::i;:::-;3684:3;3661:1;:21;;3665:17;:10;:17;:::i;:::-;3661:21;:::i;:::-;;;:::i;:::-;;;;;3718:46;3725:10;3718:46;:31;:21;3725:13;;:10;3736:1;3725:13;;:::i;:::-;;:::i;:::-;3718:21;:::i;:::-;:31;:::i;:::-;;3758:4;3718:46;3750:13;3758:4;3750:13;:::i;:::-;3718:46;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;3684:3;3718:46;;3704:60;3718:46;;;;;3684:3;3704:8;:60;:8;3713:1;;3704:60;;;:::i;:::-;;:::i;:::-;3684:3;:::i;:::-;3646:13;;3718:46;3704:60;3718:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3661:21::-;;;;;;;;;;;;3860:41;;:26;:16;3867:8;3860:16;:::i;:::-;:26;:::i;:::-;;3895:4;3860:41;3887:13;3895:4;3887:13;:::i;:::-;3860:41;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;3641:135;3836:65;3921:11;3914:32;:19;3921:11;3914:19;:::i;:::-;:32;:::i;:::-;;:66;:32;3947:10;;3967:4;3914:66;;3959:13;3967:4;3959:13;:::i;:::-;3974:5;3914:66;3974:5;3914:66;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;3991:27;3914:66;3991:19;3914:66;;;3641:135;3998:11;3991:19;:::i;:::-;:27;:::i;:::-;;:55;:27;4027:10;4019:19;4027:10;4019:19;:::i;:::-;4040:5;3991:55;;4040:5;3991:55;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4094:51;3991:55;4094:19;3991:55;;;3641:135;4094:10;:19;:::i;:::-;:51;;:19;:51;4121:13;4129:4;4121:13;:::i;:::-;4136:8;4094:51;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;3641:135;4183:1;4158:26;4183:1;4158:26;:::i;:::-;4214:1;4202:13;4214:1;4202:13;:::i;:::-;4197:465;4240:3;4217:1;:21;;4221:17;:10;:17;:::i;:::-;4217:21;:::i;:::-;;;:::i;:::-;;;;;4264:13;;:10;4275:1;4264:13;;:::i;:::-;;:::i;:::-;:25;;4281:8;4264:25;:::i;:::-;;;:::i;:::-;;4260:391;;;;4323:46;;:31;:21;4330:13;;:10;4341:1;4330:13;;:::i;:::-;;:::i;:::-;4323:21;:::i;:::-;:31;:::i;:::-;;4363:4;4323:46;4355:13;4363:4;4355:13;:::i;:::-;4323:46;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4310:73;4323:46;4310:73;4323:60;4240:3;4323:46;;;4402:28;4323:46;;;;;4260:391;4372:8;:11;:8;:11;:8;:11;:::i;:::-;;:::i;:::-;4323:60;;:::i;:::-;4318:1;4310:73;;;:::i;:::-;;:::i;:::-;4420:10;;:7;4428:1;4420:10;;:::i;:::-;;:::i;:::-;4402:28;;:::i;:::-;4260:391;;4240:3;:::i;:::-;4202:13;;;4323:46;4372:11;4323:46;;;;;4372:11;4323:46;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;4260:391::-;4484:46;;:31;:21;4491:13;;:10;4502:1;4491:13;;:::i;:::-;;:::i;:::-;4484:21;:::i;:::-;:31;:::i;:::-;;4524:4;4484:46;4516:13;4524:4;4516:13;:::i;:::-;4484:46;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4471:73;4484:46;4471:73;4484:60;4240:3;4484:46;;;4563:72;4484:46;;;;;4260:391;4533:8;:11;:8;:11;:8;:11;:::i;:::-;;:::i;:::-;4484:60;;:::i;:::-;4479:1;4471:73;;;:::i;:::-;;:::i;:::-;4581:54;4587:13;;:10;4598:1;4587:13;;:::i;:::-;;:::i;:::-;4602:8;4612:10;;4602:8;;4612:7;:10;:::i;:::-;;:::i;:::-;4624;;4581:54;;:::i;:::-;4563:72;;:::i;:::-;4260:391;;;4484:46;4533:11;4484:46;;;;;4533:11;4484:46;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;4217:21::-;;;;;;;;;;;4697:41;;:26;:16;4704:8;4697:16;:::i;:::-;:26;:::i;:::-;;4732:4;4697:41;4724:13;4732:4;4724:13;:::i;:::-;4697:41;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4807:69;4697:41;4766:28;4697:41;;;;;4197:465;4674:64;4766:28;:::i;:::-;4815:14;:30;;:14;4833:12;4815:30;:::i;:::-;;;:::i;:::-;;;4807:69;:::i;:::-;4893:8;:17;;4905:5;;;:::i;:::-;4893:17;:::i;:::-;;;:::i;:::-;;4889:228;;;;4933:5;4927:21;:12;4933:5;;;:::i;:::-;4927:12;:::i;:::-;:21;:::i;:::-;;;4949:14;4927:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4979:42;4927:37;4979:26;:17;4927:37;;;;;;;;;;4889:228;4987:8;4979:17;:::i;:::-;:26;:::i;:::-;:42;;;;;4889:228;4979:42;;;;4889:228;3121:2003::o;4979:42::-;;:::i;:::-;;;;;4927:37;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;4889:228::-;5061:8;5054:25;:16;:51;5061:8;;5054:16;:::i;:::-;:25;:::i;:::-;:51;;:25;5080:8;5090:14;5054:51;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;4889:228;;;;5054:51;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;4697:41::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4094:51::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3991:55::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3914:66::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3860:41::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3465:22::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;3121:2003::-;;;;;;;;:::i;:::-;:::o;3217:103:6:-;;3282:1;3217:103;;;;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;1042:4815:50:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;1743:1370::-;;;;;;2028:26;1967:21;:15;:21;1985:3;1967:21;:::i;:::-;;;:::i;:::-;2042:11;2028:26;:::i;:::-;2097:22;;:20;:10;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1743:1370;2067:52;2171:10;2157:32;2171:17;:10;:17;:::i;:::-;2157:32;:::i;:::-;2206:7;;:21;;2217:10;2225:1;2217:10;:::i;:::-;2206:21;:::i;:::-;;;:::i;:::-;;2202:290;;;;2252:9;2244:54;2252:9;:21;;2265:8;2252:21;:::i;:::-;;;:::i;:::-;;2244:54;:::i;:::-;2313:20;:12;2319:5;;;:::i;:::-;2313:12;:::i;:::-;:20;:::i;:::-;;2341:8;2313:37;;:39;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;2202:290;2377:5;;;;:::i;:::-;2202:290;;2509:13;2521:1;2509:13;:::i;:::-;2547:3;2524:1;:21;;2528:17;:10;:17;:::i;:::-;2524:21;:::i;:::-;;;:::i;:::-;;;;;2547:3;2571:7;;:24;;2582:13;;:10;2593:1;2582:13;;:::i;:::-;;:::i;:::-;2571:24;:::i;:::-;;;:::i;:::-;;2567:319;;;;2616:41;2629:28;:8;2640:17;:10;:17;:::i;:::-;2629:28;;:::i;:::-;2616:41;:7;2624:1;;2616:41;;;:::i;:::-;;:::i;:::-;2567:319;2547:3;:::i;:::-;2509:13;;2567:319;2698:87;2711:74;2717:7;2726:13;;:10;2737:1;2726:13;;:::i;:::-;;:::i;:::-;2741:28;:8;2752:17;2741:8;2752:10;:17;:::i;:::-;2741:28;;:::i;:::-;2779:4;2771:13;2779:4;2771:13;:::i;:::-;2711:74;;:::i;:::-;2698:87;:7;2706:1;;2698:87;;;:::i;:::-;;:::i;:::-;2804:66;2812:10;;:7;2820:1;2812:10;;:::i;:::-;;:::i;:::-;:27;;2826:13;2812:27;:::i;:::-;;;:::i;:::-;;;2804:66;:::i;:::-;2567:319;;2524:21;;;;;;;;;;2914:13;2926:1;2914:13;:::i;:::-;2952:3;2929:1;:21;;2933:17;:10;:17;:::i;:::-;2929:21;:::i;:::-;;;:::i;:::-;;;;;2972:29;:21;2979:13;;:10;2990:1;2979:13;;:::i;:::-;;:::i;:::-;2972:21;:::i;:::-;:29;:::i;:::-;;:62;:29;3010:10;3002:19;3010:10;3002:19;:::i;:::-;3023:7;2972:62;;3023:10;;:7;3031:1;3023:10;;:::i;:::-;;:::i;:::-;2972:62;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;2952:3;2972:62;;;2952:3;;;:::i;:::-;2914:13;;2972:62;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;2929:21::-;;;3058:47;2929:21;;;;3058:47;:18;:47;2929:21;3058:18;:::i;:::-;;:47;:18;3077:8;3087:7;3096:8;3058:47;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;2909:137;1743:1370;:::o;3058:47::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;2313:39::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;2202:290::-;2422:7;2415:28;:15;2422:7;2415:15;:::i;:::-;:28;:::i;:::-;:65;:28;2444:10;;2464:4;2415:65;;2456:13;2464:4;2456:13;:::i;:::-;2471:8;2415:65;2471:8;2415:65;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;2202:290;;;;2415:65;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;2097:22::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1743:1370::-;;;;;;;;:::i;:::-;:::o;1042:4815::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1042:4815:50;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;1269:337::-;1458:28;1447:39;1269:337;1353:10;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;1458:28;:::i;:::-;1447:39;;:::i;:::-;1530:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;1497:61;1530:27;1513:45;1530:27;;;;;1269:337;1513:45;;:::i;:::-;1497:61;;:::i;:::-;1577:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;1569:29;1577:21;;;;;1269:337;1569:29;;;:::i;:::-;1269:337::o;1577:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1530:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1269:337::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;1042:4815:50:-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;1614:84:50:-;;;;:::i;:::-;:::o;1042:4815::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2658:162:0;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3774:248;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;1042:4815:50:-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1812:36:6:-;1847:1;;;:::i;:::-;1812:36;:::o;1847:1::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3326:384::-;3410:28;;:::i;:::-;3526:9;;:1;:9;;:::i;:::-;:20;;3539:7;;:::i;:::-;3526:20;:::i;:::-;;;:::i;:::-;;3522:88;;3684:19;3696:7;3684:9;3696:7;;:::i;:::-;3684:1;:9;:19;:::i;:::-;3326:384::o;3522:88::-;3569:30;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1042:4815:50;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1766:40:6:-;1805:1;;;:::i;:::-;1766:40;:::o;3716:283::-;3969:23;3799:28;;:::i;:::-;3969:9;3981:11;;:::i;:::-;3969:1;:9;:23;:::i;:::-;3716:283::o;1042:4815:50:-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;5132:722;;;;;5279:17;;:::i;:::-;5326:8;:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5132:722;5309:38;5362:7;;:19;;5373:8;5362:19;:::i;:::-;;;:::i;:::-;;5358:67;;5437:23;:15;5444:7;5437:15;:::i;:::-;:23;:::i;:::-;:57;:23;5469:13;5461:22;5469:13;;;:::i;:::-;5461:22;:::i;:::-;5485:8;5437:57;;5485:8;5437:57;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;5132:722;5511:13;:24;:13;;;:::i;:::-;:24;:::i;:::-;:63;:24;5536:7;;5545:8;5511:63;;5545:8;5555;5511:63;5555:8;5565;5511:63;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;5132:722;5507:265;;;;;;;;;;;;;;;;;5782:37;5790:9;:13;;5802:1;5790:13;:::i;:::-;;;:::i;:::-;;5782:37;:::i;:::-;5830:16;:::o;5507:265::-;5687:73;:13;;;:73;:13;:73;;:13;:26;:13;;;:::i;:::-;:26;:::i;:::-;;;5714:7;5723:6;5731:8;5741;5751;5687:73;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;5507:265;5675:85;5507:265;;;;;;;5687:73;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5507:265::-;;;;;;;;;;5511:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5437:57;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5358:67::-;5405:8;;;;;;5398:15;:::o;5326:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2540:111:6:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;1042:4815:50:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;887:96:4;940:7;;:::i;:::-;966:10;;959:17;:::o;2251:183:6:-;2355:73;2251:183;:::o;7084:141:1:-;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2657:183:6:-;2810:23;2772:28;;:::i;:::-;2810:9;2822:11;;:::i;:::-;2810:1;:9;:23;:::i;:::-;2657:183::o;:::-;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1042:4815:50;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;1042:4815:50:-;;;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2621000","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","WETH9()":"2662","baluniSwapper()":"infinite","initialize(address)":"infinite","owner()":"2840","proxiableUUID()":"infinite","registry()":"infinite","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite","zapIn(address,address,uint256,uint256,address)":"infinite","zapOut(address,uint256,address,uint256,address)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_swap(address,address,uint256,address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","WETH9()":"4aa4a4fc","baluniSwapper()":"7dfb7ea1","initialize(address)":"c4d66de8","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registry()":"7b103999","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","zapIn(address,address,uint256,uint256,address)":"b487c54a","zapOut(address,uint256,address,uint256,address)":"b1aa8cd1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniSwapper\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Swapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountsOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"zapIn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"zapOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1PoolZap.sol\":\"BaluniV1PoolZap\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1PoolZap.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\n\\r\\ninterface IBaluniV1Pool {\\r\\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\\r\\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\\r\\n    function getAssets() external view returns (address[] memory);\\r\\n    function getReserves() external view returns (uint256[] memory);\\r\\n}\\r\\n\\r\\ninterface IWETH {\\r\\n    function deposit() external payable;\\r\\n    function withdraw(uint wad) external;\\r\\n}\\r\\n\\r\\ncontract BaluniV1PoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n    IBaluniV1Swapper public baluniSwapper;\\r\\n    address public WETH9;\\r\\n\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ReentrancyGuard_init();\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\\r\\n        WETH9 = registry.getWNATIVE();\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    receive() external payable {}\\r\\n\\r\\n    function zapIn(\\r\\n        address poolAddress,\\r\\n        address tokenIn,\\r\\n        uint256 amountIn,\\r\\n        uint256 minAmountsOut,\\r\\n        address receiver\\r\\n    ) external payable nonReentrant {\\r\\n        uint256 deadline = block.timestamp + 300;\\r\\n\\r\\n        IBaluniV1Pool baluniPool = IBaluniV1Pool(poolAddress);\\r\\n\\r\\n        address[] memory poolAssets = baluniPool.getAssets();\\r\\n        uint256[] memory amounts = new uint256[](poolAssets.length);\\r\\n\\r\\n        if (tokenIn == address(0)) {\\r\\n            require(msg.value == amountIn, 'Incorrect ETH amount');\\r\\n            IWETH(WETH9).deposit{value: amountIn}();\\r\\n            tokenIn = WETH9;\\r\\n        } else {\\r\\n            IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\r\\n        }\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (tokenIn == poolAssets[i]) {\\r\\n                amounts[i] = amountIn / poolAssets.length;\\r\\n            } else {\\r\\n                amounts[i] = _swap(tokenIn, poolAssets[i], amountIn / poolAssets.length, address(this));\\r\\n                require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\\r\\n            }\\r\\n        }\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            IERC20(poolAssets[i]).approve(address(baluniPool), amounts[i]);\\r\\n        }\\r\\n\\r\\n        baluniPool.deposit(receiver, amounts, deadline);\\r\\n    }\\r\\n\\r\\n    function zapOut(\\r\\n        address poolAddress,\\r\\n        uint256 share,\\r\\n        address tokenOut,\\r\\n        uint256 minAmountOut,\\r\\n        address receiver\\r\\n    ) external nonReentrant {\\r\\n        uint256 deadline = block.timestamp + 300;\\r\\n\\r\\n        IBaluniV1Pool baluniPool = IBaluniV1Pool(poolAddress);\\r\\n\\r\\n        address[] memory poolAssets = baluniPool.getAssets();\\r\\n        uint256[] memory amounts = new uint256[](poolAssets.length);\\r\\n\\r\\n        uint256[] memory balances = new uint256[](poolAssets.length);\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        // Retrieve balances before withdrawal\\r\\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\\r\\n\\r\\n        IERC20(poolAddress).transferFrom(msg.sender, address(this), share);\\r\\n        IERC20(poolAddress).approve(address(baluniPool), share);\\r\\n\\r\\n        // Withdraw from the pool\\r\\n        baluniPool.withdraw(share, address(this), deadline);\\r\\n\\r\\n        uint256 totalAmountOut = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (poolAssets[i] == tokenOut) {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += amounts[i];\\r\\n            } else {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], msg.sender);\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\\r\\n        totalAmountOut = balanceAfter - balanceBefore;\\r\\n\\r\\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\\r\\n\\r\\n        if (tokenOut == WETH9) {\\r\\n            IWETH(WETH9).withdraw(totalAmountOut);\\r\\n            payable(receiver).transfer(totalAmountOut);\\r\\n        } else {\\r\\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    function _swap(\\r\\n        address tokenIn,\\r\\n        address tokenOut,\\r\\n        uint256 amountIn,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address WMATIC = registry.getWNATIVE();\\r\\n        if (tokenIn == tokenOut) {\\r\\n            return amountIn;\\r\\n        }\\r\\n\\r\\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\\r\\n\\r\\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\\r\\n            amountOut = _amountOut;\\r\\n        } catch {\\r\\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\\r\\n        }\\r\\n        require(amountOut > 0, 'Swap failed');\\r\\n        return amountOut;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x4fa91b1775fe0f5c03596cd003595cb03c940266c0dfdf33e21fa43081345c73\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7562,"contract":"contracts/managers/BaluniV1PoolZap.sol:BaluniV1PoolZap","label":"registry","offset":0,"slot":"0","type":"t_contract(IBaluniV1Registry)4909"},{"astId":7565,"contract":"contracts/managers/BaluniV1PoolZap.sol:BaluniV1PoolZap","label":"baluniSwapper","offset":0,"slot":"1","type":"t_contract(IBaluniV1Swapper)5208"},{"astId":7567,"contract":"contracts/managers/BaluniV1PoolZap.sol:BaluniV1PoolZap","label":"WETH9","offset":0,"slot":"2","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_contract(IBaluniV1Swapper)5208":{"encoding":"inplace","label":"contract IBaluniV1Swapper","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}},"IBaluniV1Pool":{"abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAssets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"deposit(address,uint256[],uint256)":"b3bf9d32","getAssets()":"67e4ac2c","getReserves()":"0902f1ac","withdraw(uint256,address,uint256)":"e63697c8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1PoolZap.sol\":\"IBaluniV1Pool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1PoolZap.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\n\\r\\ninterface IBaluniV1Pool {\\r\\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\\r\\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\\r\\n    function getAssets() external view returns (address[] memory);\\r\\n    function getReserves() external view returns (uint256[] memory);\\r\\n}\\r\\n\\r\\ninterface IWETH {\\r\\n    function deposit() external payable;\\r\\n    function withdraw(uint wad) external;\\r\\n}\\r\\n\\r\\ncontract BaluniV1PoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n    IBaluniV1Swapper public baluniSwapper;\\r\\n    address public WETH9;\\r\\n\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ReentrancyGuard_init();\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\\r\\n        WETH9 = registry.getWNATIVE();\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    receive() external payable {}\\r\\n\\r\\n    function zapIn(\\r\\n        address poolAddress,\\r\\n        address tokenIn,\\r\\n        uint256 amountIn,\\r\\n        uint256 minAmountsOut,\\r\\n        address receiver\\r\\n    ) external payable nonReentrant {\\r\\n        uint256 deadline = block.timestamp + 300;\\r\\n\\r\\n        IBaluniV1Pool baluniPool = IBaluniV1Pool(poolAddress);\\r\\n\\r\\n        address[] memory poolAssets = baluniPool.getAssets();\\r\\n        uint256[] memory amounts = new uint256[](poolAssets.length);\\r\\n\\r\\n        if (tokenIn == address(0)) {\\r\\n            require(msg.value == amountIn, 'Incorrect ETH amount');\\r\\n            IWETH(WETH9).deposit{value: amountIn}();\\r\\n            tokenIn = WETH9;\\r\\n        } else {\\r\\n            IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\r\\n        }\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (tokenIn == poolAssets[i]) {\\r\\n                amounts[i] = amountIn / poolAssets.length;\\r\\n            } else {\\r\\n                amounts[i] = _swap(tokenIn, poolAssets[i], amountIn / poolAssets.length, address(this));\\r\\n                require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\\r\\n            }\\r\\n        }\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            IERC20(poolAssets[i]).approve(address(baluniPool), amounts[i]);\\r\\n        }\\r\\n\\r\\n        baluniPool.deposit(receiver, amounts, deadline);\\r\\n    }\\r\\n\\r\\n    function zapOut(\\r\\n        address poolAddress,\\r\\n        uint256 share,\\r\\n        address tokenOut,\\r\\n        uint256 minAmountOut,\\r\\n        address receiver\\r\\n    ) external nonReentrant {\\r\\n        uint256 deadline = block.timestamp + 300;\\r\\n\\r\\n        IBaluniV1Pool baluniPool = IBaluniV1Pool(poolAddress);\\r\\n\\r\\n        address[] memory poolAssets = baluniPool.getAssets();\\r\\n        uint256[] memory amounts = new uint256[](poolAssets.length);\\r\\n\\r\\n        uint256[] memory balances = new uint256[](poolAssets.length);\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        // Retrieve balances before withdrawal\\r\\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\\r\\n\\r\\n        IERC20(poolAddress).transferFrom(msg.sender, address(this), share);\\r\\n        IERC20(poolAddress).approve(address(baluniPool), share);\\r\\n\\r\\n        // Withdraw from the pool\\r\\n        baluniPool.withdraw(share, address(this), deadline);\\r\\n\\r\\n        uint256 totalAmountOut = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (poolAssets[i] == tokenOut) {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += amounts[i];\\r\\n            } else {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], msg.sender);\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\\r\\n        totalAmountOut = balanceAfter - balanceBefore;\\r\\n\\r\\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\\r\\n\\r\\n        if (tokenOut == WETH9) {\\r\\n            IWETH(WETH9).withdraw(totalAmountOut);\\r\\n            payable(receiver).transfer(totalAmountOut);\\r\\n        } else {\\r\\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    function _swap(\\r\\n        address tokenIn,\\r\\n        address tokenOut,\\r\\n        uint256 amountIn,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address WMATIC = registry.getWNATIVE();\\r\\n        if (tokenIn == tokenOut) {\\r\\n            return amountIn;\\r\\n        }\\r\\n\\r\\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\\r\\n\\r\\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\\r\\n            amountOut = _amountOut;\\r\\n        } catch {\\r\\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\\r\\n        }\\r\\n        require(amountOut > 0, 'Swap failed');\\r\\n        return amountOut;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x4fa91b1775fe0f5c03596cd003595cb03c940266c0dfdf33e21fa43081345c73\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IWETH":{"abi":[{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"deposit()":"d0e30db0","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1PoolZap.sol\":\"IWETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1PoolZap.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\n\\r\\ninterface IBaluniV1Pool {\\r\\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\\r\\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\\r\\n    function getAssets() external view returns (address[] memory);\\r\\n    function getReserves() external view returns (uint256[] memory);\\r\\n}\\r\\n\\r\\ninterface IWETH {\\r\\n    function deposit() external payable;\\r\\n    function withdraw(uint wad) external;\\r\\n}\\r\\n\\r\\ncontract BaluniV1PoolZap is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n    IBaluniV1Swapper public baluniSwapper;\\r\\n    address public WETH9;\\r\\n\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ReentrancyGuard_init();\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        baluniSwapper = IBaluniV1Swapper(registry.getBaluniSwapper());\\r\\n        WETH9 = registry.getWNATIVE();\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    receive() external payable {}\\r\\n\\r\\n    function zapIn(\\r\\n        address poolAddress,\\r\\n        address tokenIn,\\r\\n        uint256 amountIn,\\r\\n        uint256 minAmountsOut,\\r\\n        address receiver\\r\\n    ) external payable nonReentrant {\\r\\n        uint256 deadline = block.timestamp + 300;\\r\\n\\r\\n        IBaluniV1Pool baluniPool = IBaluniV1Pool(poolAddress);\\r\\n\\r\\n        address[] memory poolAssets = baluniPool.getAssets();\\r\\n        uint256[] memory amounts = new uint256[](poolAssets.length);\\r\\n\\r\\n        if (tokenIn == address(0)) {\\r\\n            require(msg.value == amountIn, 'Incorrect ETH amount');\\r\\n            IWETH(WETH9).deposit{value: amountIn}();\\r\\n            tokenIn = WETH9;\\r\\n        } else {\\r\\n            IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\r\\n        }\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (tokenIn == poolAssets[i]) {\\r\\n                amounts[i] = amountIn / poolAssets.length;\\r\\n            } else {\\r\\n                amounts[i] = _swap(tokenIn, poolAssets[i], amountIn / poolAssets.length, address(this));\\r\\n                require(amounts[i] >= minAmountsOut, 'Insufficient output amount');\\r\\n            }\\r\\n        }\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            IERC20(poolAssets[i]).approve(address(baluniPool), amounts[i]);\\r\\n        }\\r\\n\\r\\n        baluniPool.deposit(receiver, amounts, deadline);\\r\\n    }\\r\\n\\r\\n    function zapOut(\\r\\n        address poolAddress,\\r\\n        uint256 share,\\r\\n        address tokenOut,\\r\\n        uint256 minAmountOut,\\r\\n        address receiver\\r\\n    ) external nonReentrant {\\r\\n        uint256 deadline = block.timestamp + 300;\\r\\n\\r\\n        IBaluniV1Pool baluniPool = IBaluniV1Pool(poolAddress);\\r\\n\\r\\n        address[] memory poolAssets = baluniPool.getAssets();\\r\\n        uint256[] memory amounts = new uint256[](poolAssets.length);\\r\\n\\r\\n        uint256[] memory balances = new uint256[](poolAssets.length);\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            balances[i] = IERC20(poolAssets[i]).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        // Retrieve balances before withdrawal\\r\\n        uint256 balanceBefore = IERC20(tokenOut).balanceOf(address(this));\\r\\n\\r\\n        IERC20(poolAddress).transferFrom(msg.sender, address(this), share);\\r\\n        IERC20(poolAddress).approve(address(baluniPool), share);\\r\\n\\r\\n        // Withdraw from the pool\\r\\n        baluniPool.withdraw(share, address(this), deadline);\\r\\n\\r\\n        uint256 totalAmountOut = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < poolAssets.length; i++) {\\r\\n            if (poolAssets[i] == tokenOut) {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += amounts[i];\\r\\n            } else {\\r\\n                amounts[i] = IERC20(poolAssets[i]).balanceOf(address(this)) - balances[i];\\r\\n                totalAmountOut += _swap(poolAssets[i], tokenOut, amounts[i], msg.sender);\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256 balanceAfter = IERC20(tokenOut).balanceOf(address(this));\\r\\n        totalAmountOut = balanceAfter - balanceBefore;\\r\\n\\r\\n        require(totalAmountOut >= minAmountOut, 'Insufficient output amount');\\r\\n\\r\\n        if (tokenOut == WETH9) {\\r\\n            IWETH(WETH9).withdraw(totalAmountOut);\\r\\n            payable(receiver).transfer(totalAmountOut);\\r\\n        } else {\\r\\n            IERC20(tokenOut).transfer(receiver, totalAmountOut);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    function _swap(\\r\\n        address tokenIn,\\r\\n        address tokenOut,\\r\\n        uint256 amountIn,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address WMATIC = registry.getWNATIVE();\\r\\n        if (tokenIn == tokenOut) {\\r\\n            return amountIn;\\r\\n        }\\r\\n\\r\\n        IERC20(tokenIn).approve(address(baluniSwapper), amountIn);\\r\\n\\r\\n        try baluniSwapper.singleSwap(tokenIn, tokenOut, amountIn, receiver) returns (uint256 _amountOut) {\\r\\n            amountOut = _amountOut;\\r\\n        } catch {\\r\\n            amountOut = baluniSwapper.multiHopSwap(tokenIn, WMATIC, tokenOut, amountIn, receiver);\\r\\n        }\\r\\n        require(amountOut > 0, 'Swap failed');\\r\\n        return amountOut;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x4fa91b1775fe0f5c03596cd003595cb03c940266c0dfdf33e21fa43081345c73\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/managers/BaluniV1Rebalancer.sol":{"BaluniV1Rebalancer":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"baseAsset","type":"address"}],"name":"checkRebalance","outputs":[{"components":[{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"uint256","name":"totalValue","type":"uint256"},{"internalType":"uint256[]","name":"valuations","type":"uint256[]"},{"internalType":"uint256","name":"finalUsdBalance","type":"uint256"},{"internalType":"uint256","name":"overweightVaultsLength","type":"uint256"},{"internalType":"uint256","name":"underweightVaultsLength","type":"uint256"},{"internalType":"uint256","name":"totalActiveWeight","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256[]","name":"overweightVaults","type":"uint256[]"},{"internalType":"uint256[]","name":"overweightAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"underweightVaults","type":"uint256[]"},{"internalType":"uint256[]","name":"underweightAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"internalType":"struct BaluniV1Rebalancer.RebalanceVars","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"baseAsset","type":"address"}],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"uint64","name":"version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"checkRebalance(uint256[],address[],uint256[],uint256,address,address)":{"details":"Checks if a rebalance is needed based on the given parameters.","params":{"assets":"An array of token addresses.","balances":"An array of token balances.","baseAsset":"The address of the base asset.","limit":"The maximum allowed difference between the current and target weights.","sender":"The address of the caller.","weights":"An array of token weights."},"returns":{"_0":"A struct containing the rebalance variables."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"rebalance(uint256[],address[],uint256[],uint256,address,address,address)":{"details":"Rebalances the portfolio by buying and selling assets based on their weights.","params":{"assets":"An array of asset addresses.","balances":"An array of current asset balances.","baseAsset":"The base asset used for rebalancing.","limit":"The maximum amount of assets to be rebalanced.","receiver":"The address to which the assets will be transferred.","sender":"The address from which the assets will be transferred.","weights":"An array of asset weights."}},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":79,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1Rebalancer":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":135,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":125,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":115,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":93,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":90,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b6149c1610094823960805181818161325a015281816132df01526134da01526149c190f35b6043565b60405190565b5f80fd5b604d6087565b565b60018060a01b031690565b90565b606c6068607092604f565b605a565b604f565b90565b607a90605d565b90565b6084906073565b90565b608e30607d565b60805256fe60806040526004361015610013575b610b93565b61001d5f356100cc565b80634f1ef286146100c757806352d1902d146100c2578063715018a6146100bd5780637b103999146100b85780638da5cb5b146100b35780638f2248bc146100ae578063997146f5146100a9578063ad3cb1cc146100a4578063c4d66de81461009f578063f0bf77141461009a5763f2fde38b0361000e57610b60565b610b23565b610a32565b6109df565b6108a4565b6104d2565b610440565b6103e9565b61030d565b6102d8565b610276565b60e01c90565b60405190565b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b610102906100e0565b90565b61010e816100f9565b0361011557565b5f80fd5b9050359061012682610105565b565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061017190610130565b810190811067ffffffffffffffff82111761018b57604052565b61013a565b906101a361019c6100d2565b9283610167565b565b67ffffffffffffffff81116101c3576101bf602091610130565b0190565b61013a565b90825f939282370152565b909291926101e86101e3826101a5565b610190565b9381855260208501908284011161020457610202926101c8565b565b61012c565b9080601f8301121561022757816020610224933591016101d3565b90565b610128565b91909160408184031261026c57610245835f8301610119565b92602082013567ffffffffffffffff8111610267576102649201610209565b90565b6100dc565b6100d8565b5f0190565b61028a61028436600461022c565b90610bc0565b6102926100d2565b8061029c81610271565b0390f35b5f80fd5b5f9103126102ae57565b6100d8565b90565b6102bf906102b3565b9052565b91906102d6905f602085019401906102b6565b565b34610308576102e83660046102a4565b6103046102f3610c40565b6102fb6100d2565b918291826102c3565b0390f35b6102a0565b3461033b5761031d3660046102a4565b610325610ca3565b61032d6100d2565b8061033781610271565b0390f35b6102a0565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61036d9060086103729302610340565b610344565b90565b90610380915461035d565b90565b61038d5f80610375565b90565b90565b6103a76103a26103ac926100e0565b610390565b6100e0565b90565b6103b890610393565b90565b6103c4906103af565b90565b6103d0906103bb565b9052565b91906103e7905f602085019401906103c7565b565b34610419576103f93660046102a4565b610415610404610383565b61040c6100d2565b918291826103d4565b0390f35b6102a0565b610427906100f9565b9052565b919061043e905f6020850194019061041e565b565b34610470576104503660046102a4565b61046c61045b610cf0565b6104636100d2565b9182918261042b565b0390f35b6102a0565b67ffffffffffffffff1690565b61048b81610475565b0361049257565b5f80fd5b905035906104a382610482565b565b91906040838203126104cd57806104c16104ca925f8601610119565b93602001610496565b90565b6100d8565b34610501576104eb6104e53660046104a5565b90610fb2565b6104f36100d2565b806104fd81610271565b0390f35b6102a0565b67ffffffffffffffff811161051e5760208091020190565b61013a565b5f80fd5b90565b61053381610527565b0361053a57565b5f80fd5b9050359061054b8261052a565b565b9092919261056261055d82610506565b610190565b938185526020808601920283019281841161059f57915b8383106105865750505050565b60208091610594848661053e565b815201920191610579565b610523565b9080601f830112156105c2578160206105bf9335910161054d565b90565b610128565b5f80fd5b909182601f830112156106055781359167ffffffffffffffff83116106005760200192602083028401116105fb57565b610523565b6105c7565b610128565b909182601f830112156106445781359167ffffffffffffffff831161063f57602001926020830284011161063a57565b610523565b6105c7565b610128565b60c0818303126106f2575f81013567ffffffffffffffff81116106ed57826106729183016105a4565b92602082013567ffffffffffffffff81116106e857836106939184016105cb565b929093604082013567ffffffffffffffff81116106e357816106b691840161060a565b9290936106e06106c9846060850161053e565b936106d78160808601610119565b9360a001610119565b90565b6100dc565b6100dc565b6100dc565b6100d8565b61070090610527565b9052565b5190565b60209181520190565b60200190565b90610724816020936106f7565b0190565b60200190565b9061074b61074561073e84610704565b8093610708565b92610711565b905f5b81811061075b5750505090565b90919261077461076e6001928651610717565b94610728565b910191909161074e565b6108899161018061087761086361084f61083b6107cd6101a087016107a95f8a01515f8a01906106f7565b6107bb60208a015160208a01906106f7565b604089015188820360408a015261072e565b6107df606089015160608901906106f7565b6107f1608089015160808901906106f7565b61080360a089015160a08901906106f7565b61081560c089015160c08901906106f7565b61082760e089015160e08901906106f7565b61010088015187820361010089015261072e565b61012087015186820361012088015261072e565b61014086015185820361014087015261072e565b61016085015184820361016086015261072e565b9201519061018081840391015261072e565b90565b6108a19160208201915f81840391015261077e565b90565b346108de576108da6108c96108ba366004610649565b969590959491949392936111e1565b6108d16100d2565b9182918261088c565b0390f35b6102a0565b67ffffffffffffffff8111610901576108fd602091610130565b0190565b61013a565b90610918610913836108e3565b610190565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61094e6005610906565b9061095b6020830161091d565b565b610965610944565b90565b61097061095d565b90565b61097b610968565b90565b5190565b60209181520190565b90825f9392825e0152565b6109b56109be6020936109c3936109ac8161097e565b93848093610982565b9586910161098b565b610130565b0190565b6109dc9160208201915f818403910152610996565b90565b34610a0f576109ef3660046102a4565b610a0b6109fa610973565b610a026100d2565b918291826109c7565b0390f35b6102a0565b90602082820312610a2d57610a2a915f01610119565b90565b6100d8565b34610a6057610a4a610a45366004610a14565b61154e565b610a526100d2565b80610a5c81610271565b0390f35b6102a0565b919060e083820312610b1e575f83013567ffffffffffffffff8111610b195781610a909185016105a4565b92602081013567ffffffffffffffff8111610b145782610ab19183016105cb565b929093604083013567ffffffffffffffff8111610b0f5782610ad491850161060a565b929093610ae4826060830161053e565b92610b0c610af58460808501610119565b93610b038160a08601610119565b9360c001610119565b90565b6100dc565b6100dc565b6100dc565b6100d8565b34610b5b57610b45610b36366004610a65565b97969096959195949294611f96565b610b4d6100d2565b80610b5781610271565b0390f35b6102a0565b34610b8e57610b78610b73366004610a14565b613232565b610b806100d2565b80610b8a81610271565b0390f35b6102a0565b5f80fd5b90610ba991610ba4613249565b610bab565b565b90610bbe91610bb98161331b565b61338b565b565b90610bca91610b97565b565b5f90565b610be190610bdc6134c9565b610c34565b90565b90565b5f1b90565b610c00610bfb610c0592610be4565b610be7565b6102b3565b90565b610c317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610bec565b90565b50610c3d610c08565b90565b610c50610c4b610bcc565b610bd0565b90565b610c5b613547565b610c63610c90565b565b90565b610c7c610c77610c8192610c65565b610390565b6100e0565b90565b610c8d90610c68565b90565b610ca1610c9c5f610c84565b6135e4565b565b610cab610c53565b565b5f90565b5f1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b610cdb610ce091610cb1565b610cb6565b90565b610ced9054610ccf565b90565b610cf8610cad565b50610d0b5f610d05613650565b01610ce3565b90565b60401c90565b60ff1690565b610d26610d2b91610d0e565b610d14565b90565b610d389054610d1a565b90565b67ffffffffffffffff1690565b610d54610d5991610cb1565b610d3b565b90565b610d669054610d48565b90565b90610d7c67ffffffffffffffff91610be7565b9181191691161790565b610d9a610d95610d9f92610475565b610390565b610475565b90565b90565b90610dba610db5610dc192610d86565b610da2565b8254610d69565b9055565b60401b90565b90610ddf68ff000000000000000091610dc5565b9181191691161790565b151590565b610df790610de9565b90565b90565b90610e12610e0d610e1992610dee565b610dfa565b8254610dcb565b9055565b610e2690610475565b9052565b9190610e3d905f60208501940190610e1d565b565b908091610e4a613674565b90610e565f8301610d2e565b8015610f07575b610ecb57610e9092610e8791610e75865f8601610da5565b610e8260015f8601610dfd565b610f9c565b5f809101610dfd565b610ec67fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291610ebd6100d2565b91829182610e2a565b0390a1565b610ed36100d2565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280610f0360048201610271565b0390fd5b50610f135f8301610d5c565b610f25610f1f86610475565b91610475565b1015610e5d565b610f3590610393565b90565b610f4190610f2c565b90565b90610f6373ffffffffffffffffffffffffffffffffffffffff91610be7565b9181191691161790565b610f7690610f2c565b90565b90565b90610f91610f8c610f9892610f6d565b610f79565b8254610f44565b9055565b610fb09150610faa90610f38565b5f610f7c565b565b90610fbc91610e3f565b565b610fc96101a0610190565b90565b5f90565b606090565b602090818080808080808080808080610fec610fbe565b9d8e610ff6610fcc565b815201611001610fcc565b81520161100c610fd0565b815201611017610fcc565b815201611022610fcc565b81520161102d610fcc565b815201611038610fcc565b815201611043610fcc565b81520161104e610fd0565b815201611059610fd0565b815201611064610fd0565b81520161106f610fd0565b81520161107a610fd0565b81525050565b611088610fd5565b90565b5090565b906110a161109c83610506565b610190565b918252565b369037565b906110d06110b88361108f565b926020806110c68693610506565b92019103906110a6565b565b6110e66110e16110eb92610c65565b610390565b610527565b90565b60016110fa9101610527565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919081101561113a576020020190565b6110fd565b3561114981610105565b90565b61115590610393565b90565b6111619061114c565b90565b61116d906103af565b90565b60e01b90565b905051906111838261052a565b565b9060208282031261119e5761119b915f01611176565b90565b6100d8565b6111ab6100d2565b3d5f823e3d90fd5b906111bd82610704565b8110156111ce576020809102010190565b6110fd565b906111dd90610527565b9052565b979296919490936111f0611080565b506112046111ff86889061108b565b6110ab565b9861120e81610704565b61122061121a5f6110d2565b91610527565b145f1461133057506112315f6110d2565b5b8061124f611249611244898b9061108b565b610527565b91610527565b1015611313576112a990602061127f61127a6112756112708b8d879161112a565b61113f565b611158565b611164565b6370a082319061129e8c926112926100d2565b96879485938493611170565b83526004830161042b565b03915afa91821561130e576112db926112d6915f916112e0575b506112d18d918490926111b3565b6111d3565b6110ee565b611232565b611301915060203d8111611307575b6112f98183610167565b810190611185565b5f6112c3565b503d6112ef565b6111a3565b50929761132d979295919496505b959091929394956137d0565b90565b9093985061132d97929591949650611321565b61135761135261135c92610c65565b610390565b610475565b90565b90565b61137661137161137b9261135f565b610390565b610475565b90565b611387906103af565b90565b61139390611362565b9052565b91906113aa905f6020850194019061138a565b565b6113b4613674565b906113c96113c35f8401610d2e565b15610de9565b906113d55f8401610d5c565b806113e86113e25f611343565b91610475565b1480611522575b906114036113fd6001611362565b91610475565b14806114fa575b611415909115610de9565b90816114e9575b506114ad576114459061143a6114326001611362565b5f8601610da5565b8261149b575b611529565b61144d575b50565b61145a905f809101610dfd565b60016114927fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916114896100d2565b91829182611397565b0390a15f61144a565b6114a860015f8601610dfd565b611440565b6114b56100d2565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806114e560048201610271565b0390fd5b6114f4915015610de9565b5f61141c565b506114156115073061137e565b3b61151a6115145f6110d2565b91610527565b14905061140a565b50826113ef565b61154661154c91611538614014565b6115413361403c565b610f38565b5f610f7c565b565b611557906113ac565b565b61156561156a91610cb1565b610344565b90565b6115779054611559565b90565b9050519061158782610105565b565b906020828203126115a25761159f915f0161157a565b90565b6100d8565b5f7f4e6f206173736574732070726f76696465640000000000000000000000000000910152565b6115db6012602092610982565b6115e4816115a7565b0190565b6115fd9060208101905f8183039101526115ce565b90565b1561160757565b61160f6100d2565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061163f600482016115e8565b0390fd5b60207f656e677468000000000000000000000000000000000000000000000000000000917f4d69736d6174636865642062616c616e63657320616e6420617373657473206c5f8201520152565b61169d6025604092610982565b6116a681611643565b0190565b6116bf9060208101905f818303910152611690565b90565b156116c957565b6116d16100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611701600482016116aa565b0390fd5b5090565b60207f6e67746800000000000000000000000000000000000000000000000000000000917f4d69736d617463686564207765696768747320616e6420617373657473206c655f8201520152565b6117636024604092610982565b61176c81611709565b0190565b6117859060208101905f818303910152611756565b90565b1561178f57565b6117976100d2565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806117c760048201611770565b0390fd5b6117d59051610527565b90565b6117e1906103af565b90565b6117ed81610de9565b036117f457565b5f80fd5b90505190611805826117e4565b565b906020828203126118205761181d915f016117f8565b90565b6100d8565b61182e90610527565b9052565b60409061185b611862949695939661185160608401985f85019061041e565b602083019061041e565b0190611825565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6118a06118a691939293610527565b92610527565b82018092116118b157565b611864565b60207f6967687420416d6f756e74212100000000000000000000000000000000000000917f42616c756e695631526562616c616e6365723a20556e646572204f76657277655f8201520152565b611910602d604092610982565b611919816118b6565b0190565b6119329060208101905f818303910152611903565b90565b1561193c57565b6119446100d2565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806119746004820161191d565b0390fd5b91602061199992949361199260408201965f83019061041e565b019061041e565b565b60207f646572204f76657277656967687420416d6f756e740000000000000000000000917f42616c756e695631526562616c616e6365723a20416c6c6f77616e636520756e5f8201520152565b6119f56035604092610982565b6119fe8161199b565b0190565b611a179060208101905f8183039101526119e8565b90565b15611a2157565b611a296100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611a5960048201611a02565b0390fd5b916020611a7e929493611a7760408201965f83019061041e565b0190611825565b565b611a8990610393565b90565b611a9590611a80565b90565b611aa1906103af565b90565b90959492611aef94611ade611ae892611ad4608096611aca60a088019c5f89019061041e565b602087019061041e565b604085019061041e565b6060830190611825565b019061041e565b565b611b26611b2d94611b1c606094989795611b12608086019a5f87019061041e565b602085019061041e565b6040830190611825565b019061041e565b565b60207f7420626173652061737365742062616c616e6365000000000000000000000000917f42616c756e695631526562616c616e6365723a2020496e73756666696369656e5f8201520152565b611b896034604092610982565b611b9281611b2f565b0190565b611bab9060208101905f818303910152611b7c565b90565b15611bb557565b611bbd6100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611bed60048201611b96565b0390fd5b67ffffffffffffffff8111611c095760208091020190565b61013a565b90929192611c23611c1e82611bf1565b610190565b9381855260208086019202830192818411611c6057915b838310611c475750505050565b60208091611c558486610119565b815201920191611c3a565b610523565b611c70913691611c0e565b90565b5190565b90611c8182611c73565b811015611c92576020809102010190565b6110fd565b611ca190516100f9565b90565b611cb3611cb991939293610527565b92610527565b91611cc5838202610527565b928184041490151715611cd457565b611864565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b611d12611d1891610527565b91610527565b908115611d23570490565b611cd9565b60207f79207175616e74697479206973207a65726f0000000000000000000000000000917f42616c756e695631526562616c616e6365723a20526562616c616e63652062755f8201520152565b611d826032604092610982565b611d8b81611d28565b0190565b611da49060208101905f818303910152611d75565b90565b15611dae57565b611db66100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611de660048201611d8f565b0390fd5b60407f6c616e6365000000000000000000000000000000000000000000000000000000917f42616c756e695631526562616c616e6365723a20526562616c616e63652062755f8201527f79207175616e746974792065786365656473206261736520617373657420626160208201520152565b611e6a6045606092610982565b611e7381611dea565b0190565b611e8c9060208101905f818303910152611e5d565b90565b15611e9657565b611e9e6100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611ece60048201611e77565b0390fd5b5f90565b611ee5611eeb91939293610527565b92610527565b8203918211611ef657565b611864565b5f7f42616c616e636520756e64657220616d6f756e7420746f207472616e73666572910152565b611f2e60208092610982565b611f3781611efb565b0190565b611f509060208101905f818303910152611f22565b90565b15611f5a57565b611f626100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611f9260048201611f3b565b0390fd5b969593919290989794611fcb6020611fb5611fb05f61156d565b6103bb565b636c9c007890611fc36100d2565b938492611170565b82528180611fdb60048201610271565b03915afa9081156131a8575f9161317a575b5097612015611ffd8c879061108b565b61200f6120095f6110d2565b91610527565b11611600565b6120448b61203e61203861203361202b86610704565b938a9061108b565b610527565b91610527565b146116c2565b6120758b61206f61206961206461205c888a90611705565b938a9061108b565b610527565b91610527565b14611788565b61207e81610704565b61209061208a5f6110d2565b91610527565b14613065575b906120ac939291928b92869091929389956137d0565b966120b65f6110d2565b5b806120d76120d16120cc6101008d0151610704565b610527565b91610527565b1015612763576120f56120f06101208b015183906111b3565b6117cb565b6121076121015f6110d2565b91610527565b1161211c575b612117905b6110ee565b6120b7565b612148612143838b61213d6121386101008993015187906111b3565b6117cb565b9161112a565b61113f565b90898261215d612157896100f9565b916100f9565b1461267e57806121be6121b86121b36121ae6101206121a461219f6101806121c59901516121996121946101008b01518d906111b3565b6117cb565b906111b3565b6117cb565b95015187906111b3565b6117cb565b610527565b91610527565b1015611935565b6121d66121d183611158565b611164565b602063dd62ed3e9187906122046121ec306117d8565b9461220f6121f86100d2565b96879586948594611170565b845260048401611978565b03915afa80156126795761225161224b6122466122418f9461012090612258975f9161264b575b5095015187906111b3565b6117cb565b610527565b91610527565b1015611a1a565b89602061226c61226785611158565b611164565b6323b872dd906122b05f8a936122bb61229c61229761012061228d306117d8565b9a01518b906111b3565b6117cb565b6122a46100d2565b98899788968795611170565b855260048501611832565b03925af180156126465761261a575b506122f760206122e16122dc5f61156d565b6103bb565b6382755ebb906122ef6100d2565b938492611170565b8252818061230760048201610271565b03915afa908115612615575f916125e7575b5061232b61232684611158565b611164565b9260208c63095ea7b39561236a5f61235261234d610120899601518a906111b3565b6117cb565b9861237561235e6100d2565b9a8b9687958694611170565b845260048401611a5d565b03925af19182156125e25789948d936125b6575b50888b8361239f612399836100f9565b916100f9565b145f146124af575050906124225f6123c16123bc60209695611a8c565b611a98565b9261242d632d6bc8ea91958d996123f36101406123eb6123e68d6101208701516111b3565b6117cb565b930151610704565b6124056123ff876110d2565b91610527565b14851461249f57905b6124166100d2565b9a8b9889978896611170565b865260048601611af1565b03925af191821561249a5761211792612464915f9161246c575b5061245e60e08d0191612459836117cb565b611891565b906111d3565b5b905061210d565b61248d915060203d8111612493575b6124858183610167565b810190611185565b5f612447565b503d61247b565b6111a3565b506124a9306117d8565b9061240e565b925f90612537876020976124cf6124ca61252c979c98611a8c565b611a98565b966124fd6101406124f56124f0635efaaebb989c9f966101208701516111b3565b6117cb565b930151610704565b61250f612509886110d2565b91610527565b1486146125a657915b6125206100d2565b9b8c998a988997611170565b875260048701611aa4565b03925af19182156125a1576121179261256e915f91612573575b5061256860e08d0191612563836117cb565b611891565b906111d3565b612465565b612594915060203d811161259a575b61258c8183610167565b810190611185565b5f612551565b503d612582565b6111a3565b506125b0306117d8565b91612518565b6125d69060203d81116125db575b6125ce8183610167565b810190611807565b612389565b503d6125c4565b6111a3565b612608915060203d811161260e575b6126008183610167565b810190611589565b5f612319565b503d6125f6565b6111a3565b61263a9060203d811161263f575b6126328183610167565b810190611807565b6122ca565b503d612628565b6111a3565b61266c915060203d8111612672575b6126648183610167565b810190611185565b5f612236565b503d61265a565b6111a3565b9161269261268d602092611158565b611164565b6323b872dd906126d65f89936126e16126c26126bd6101206126b3306117d8565b9b01518a906111b3565b6117cb565b6126ca6100d2565b998a9788968795611170565b855260048501611832565b03925af191821561275e5761211792612732575b5061272d61271161270c6101208d015184906111b3565b6117cb565b61272760e08d0191612722836117cb565b611891565b906111d3565b612112565b6127529060203d8111612757575b61274a8183610167565b810190611807565b6126f5565b503d612740565b6111a3565b509392969491506127b390602061278161277c8a611158565b611164565b6370a08231906127a8612793306117d8565b9261279c6100d2565b96879485938493611170565b83526004830161042b565b03915afa8015613060576127f7925f91613032575b50946127f2866127eb6127e56127e060e08c016117cb565b610527565b91610527565b1015611bae565b611c65565b95612824602061280e6128095f61156d565b6103bb565b634f4608a29061281c6100d2565b938492611170565b8252818061283460048201610271565b03915afa90811561302d575f91612fff575b50966128515f6110d2565b5b8061287261286c6128676101408b0151610704565b610527565b91610527565b1015612ff4578690898361289461288f61016086015185906111b3565b6117cb565b6128a66128a05f6110d2565b91610527565b116128be575b50506128b991505b6110ee565b612852565b61292461291261293d9361290d6129086101606128fe6128f98b6128f36128ee8d6101406129369d9401516111b3565b6117cb565b90611c77565b611c97565b99015188906111b3565b6117cb565b611ca4565b61291e60c08d016117cb565b90611d06565b61293060e08c016117cb565b90611ca4565b8b90611d06565b9186928161295361294d886100f9565b916100f9565b14612f66576129748161296e6129685f6110d2565b91610527565b11611da7565b6129918161298a6129848c610527565b91610527565b1115611e8f565b6129bd60206129a76129a25f61156d565b6103bb565b6382755ebb906129b56100d2565b938492611170565b825281806129cd60048201610271565b03915afa908115612f61575f91612f33575b506129f16129ec88611158565b611164565b90602063095ea7b3928290612a195f8796612a24612a0d6100d2565b98899687958694611170565b845260048401611a5d565b03925af1918215612f2e57602092612f03575b50612a40611ed2565b5083612a54612a4e8b6100f9565b916100f9565b145f14612e6a57612a67612a6c91611a8c565b611a98565b632d6bc8ea90612a9b5f8a93612aa68897612a86306117d8565b90612a8f6100d2565b998a9889978896611170565b865260048601611af1565b03925af1908115612e65575f91612e37575b50925b612ac88460e08c016111d3565b612adc612ad485614047565b948590611ed6565b612af0612ae882614047565b918290611ed6565b91612b396020612b07612b0287611158565b611164565b6370a0823190612b2e612b19306117d8565b92612b226100d2565b95869485938493611170565b83526004830161042b565b03915afa8015612e3257612b68915f91612e04575b50612b61612b5b89610527565b91610527565b1015611f53565b612b946020612b7e612b795f61156d565b6103bb565b6304cc732590612b8c6100d2565b938492611170565b82528180612ba460048201610271565b03915afa908115612dff575f91612dd1575b5091612be46020612bce612bc95f61156d565b6103bb565b633b19e84a90612bdc6100d2565b938492611170565b82528180612bf460048201610271565b03915afa8015612dcc576020915f91612d9f575b5097612c1b612c1688611158565b611164565b612c3e5f63a9059cbb969396612c49612c326100d2565b98899687958694611170565b845260048401611a5d565b03925af1918215612d9a57602092612d6f575b50612c6e612c6986611158565b611164565b612c915f63a9059cbb959395612c9c612c856100d2565b97889687958694611170565b845260048401611a5d565b03925af18015612d6a57602093612cc192612cbc92612d3f575b50611158565b611164565b612ce45f63a9059cbb969396612cef612cd86100d2565b98899687958694611170565b845260048401611a5d565b03925af1918215612d3a576128b992612d0e575b5087915089836128ac565b612d2e9060203d8111612d33575b612d268183610167565b810190611807565b612d03565b503d612d1c565b6111a3565b612d5e90863d8111612d63575b612d568183610167565b810190611807565b612cb6565b503d612d4c565b6111a3565b612d8e90833d8111612d93575b612d868183610167565b810190611807565b612c5c565b503d612d7c565b6111a3565b612dbf9150823d8111612dc5575b612db78183610167565b810190611589565b5f612c08565b503d612dad565b6111a3565b612df2915060203d8111612df8575b612dea8183610167565b810190611589565b5f612bb6565b503d612de0565b6111a3565b612e25915060203d8111612e2b575b612e1d8183610167565b810190611185565b5f612b4e565b503d612e13565b6111a3565b612e58915060203d8111612e5e575b612e508183610167565b810190611185565b5f612ab8565b503d612e46565b6111a3565b612e76612e7b91611a8c565b611a98565b635efaaebb90612eac5f8a93612eb78d978990612e97306117d8565b91612ea06100d2565b9a8b998a988997611170565b875260048701611aa4565b03925af1908115612efe575f91612ed0575b5092612abb565b612ef1915060203d8111612ef7575b612ee98183610167565b810190611185565b5f612ec9565b503d612edf565b6111a3565b612f2290833d8111612f27575b612f1a8183610167565b810190611807565b612a37565b503d612f10565b6111a3565b612f54915060203d8111612f5a575b612f4c8183610167565b810190611589565b5f6129df565b503d612f42565b6111a3565b60209150612f7b612f7687611158565b611164565b612f9e5f63a9059cbb969396612fa9612f926100d2565b98899687958694611170565b845260048401611a5d565b03925af1918215612fef576128b992612fc3575b506128b4565b612fe39060203d8111612fe8575b612fdb8183610167565b810190611807565b612fbd565b503d612fd1565b6111a3565b505050505050509050565b613020915060203d8111613026575b6130188183610167565b810190611185565b5f612846565b503d61300e565b6111a3565b613053915060203d8111613059575b61304b8183610167565b810190611185565b5f6127c8565b503d613041565b6111a3565b9995916130795f9a9699959894929a6110d2565b5b8061309761309161308c8b8d9061108b565b610527565b91610527565b1015613161576130f09060208b6130c96130c46130bf6130ba8f8f90889161112a565b61113f565b611158565b611164565b6130e56370a082316130d96100d2565b96879485938493611170565b83526004830161042b565b03915afa91821561315c57613123928e61311e925f92613128575b5061311990918490926111b3565b6111d3565b6110ee565b61307a565b61311991925061314e9060203d8111613155575b6131468183610167565b810190611185565b919061310b565b503d61313c565b6111a3565b5090919599986120ac9397949895999091929350612096565b61319b915060203d81116131a1575b6131938183610167565b810190611589565b5f611fed565b503d613189565b6111a3565b6131be906131b9613547565b6131c0565b565b806131db6131d56131d05f610c84565b6100f9565b916100f9565b146131eb576131e9906135e4565b565b61322e6131f75f610c84565b6131ff6100d2565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b61323b906131ad565b565b613246906103af565b90565b6132523061323d565b61328461327e7f00000000000000000000000000000000000000000000000000000000000000006100f9565b916100f9565b1480156132ce575b61329257565b61329a6100d2565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806132ca60048201610271565b0390fd5b506132d7614175565b6133096133037f00000000000000000000000000000000000000000000000000000000000000006100f9565b916100f9565b141561328c565b50613319613547565b565b61332490613310565b565b61332f90610393565b90565b61333b90613326565b90565b613347906103af565b90565b613353816102b3565b0361335a57565b5f80fd5b9050519061336b8261334a565b565b9060208282031261338657613383915f0161335e565b90565b6100d8565b91906133b960206133a361339e86613332565b61333e565b6352d1902d906133b16100d2565b938492611170565b825281806133c960048201610271565b03915afa80915f92613499575b50155f1461342a5750509060016133eb57505b565b613426906133f76100d2565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b928361344561343f61343a610c08565b6102b3565b916102b3565b0361345a5761345592935061419f565b6133e9565b613495846134666100d2565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016102c3565b0390fd5b6134bb91925060203d81116134c2575b6134b38183610167565b81019061336d565b905f6133d6565b503d6134a9565b6134d23061323d565b6135046134fe7f00000000000000000000000000000000000000000000000000000000000000006100f9565b916100f9565b0361350b57565b6135136100d2565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061354360048201610271565b0390fd5b61354f610cf0565b61356861356261355d614228565b6100f9565b916100f9565b0361356f57565b6135b161357a614228565b6135826100d2565b9182917f118cdaa70000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b6135be906103af565b90565b90565b906135d96135d46135e0926135b5565b6135c1565b8254610f44565b9055565b6135ec613650565b6136046135fa5f8301610ce3565b915f8491016135c4565b906136386136327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936135b5565b916135b5565b916136416100d2565b8061364b81610271565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b90565b6136af6136aa6136b492613698565b610390565b610527565b90565b6136c26101a0610190565b90565b52565b6136d190610393565b90565b6136dd906136c8565b90565b91908110156136f0576020020190565b6110fd565b356136ff8161052a565b90565b61370b90610527565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146137385760010190565b611864565b613746906103af565b90565b61375290610393565b90565b61375e90613749565b90565b61376a906103af565b90565b60ff1690565b61377c8161376d565b0361378357565b5f80fd5b9050519061379482613773565b565b906020828203126137af576137ac915f01613787565b90565b6100d8565b6137c86137c36137cd9261376d565b610390565b610527565b90565b909695939491946137df611080565b508188879087916137ef91611c65565b6137f89261423a565b9190919289886138079161108b565b9083908b8a875f805f80915f93878761381f9161108b565b600261382a9061369b565b61383391611ca4565b61383c906110ab565b9588886138489161108b565b60026138539061369b565b61385c91611ca4565b613865906110ab565b9789816138719161108b565b600261387c9061369b565b61388591611ca4565b61388e906110ab565b99906138999161108b565b60026138a49061369b565b6138ad91611ca4565b6138b6906110ab565b999a6138c06136b7565b9c5f8e01906138ce916111d3565b60208d01906138dc916111d3565b60408c01906138ea916136c5565b6138f3906110d2565b60608b0190613901916111d3565b61390a906110d2565b60808a0190613918916111d3565b613921906110d2565b60a089019061392f916111d3565b613938906110d2565b60c0880190613946916111d3565b61394f906110d2565b60e087019061395d916111d3565b61010086019061396c916136c5565b61012085019061397b916136c5565b61014084019061398a916136c5565b610160830190613999916136c5565b6101808201906139a8916136c5565b939193965f6139b6906110d2565b5b8a6139d56139cf6139ca8493869061108b565b610527565b91610527565b1015613f7857613a0760206139f16139ec5f61156d565b6103bb565b63bb3ba04c906139ff6100d2565b938492611170565b82528180613a1760048201610271565b03915afa8015613f7357613a32915f91613f45575b506136d4565b90613a47613a428d85849161112a565b61113f565b89613a5c613a578b8886916136e0565b6136f5565b613a9b613a72613a6d8b87906111b3565b6117cb565b6020613a85613a805f61156d565b6103bb565b634f4608a290613a936100d2565b948592611170565b82528180613aab60048201610271565b03915afa918215613f40578f92613ad492613acd925f92613f10575b50611ca4565b8c90611d06565b9182613ae8613ae283610527565b91610527565b1192835f14613f025790613afb91611ed6565b5b918080613ee8575b5f14613e18575050613b1a613b43918b90611ca4565b6020613b2d613b285f61156d565b6103bb565b634f4608a290613b3b6100d2565b948592611170565b82528180613b5360048201610271565b03915afa908115613e1357613b6f925f92613de3575b50611d06565b93613b918d613b8b606088920191613b86836117cb565b611891565b906111d3565b82613ba4613b9e846100f9565b916100f9565b145f14613cbc5750506020613bc4613bbf613bda9593613755565b613761565b63313ce56790613bd26100d2565b958692611170565b82528180613bea60048201610271565b03915afa908115613cb757613c5b613c1b8d92613c15613c6095613c84985f91613c89575b506137b4565b90614561565b5b613c4285613c3d61010086015191613c36608088016117cb565b90926111b3565b6111d3565b613c54608061012085015194016117cb565b90926111b3565b6111d3565b613c7e60808b01613c78613c73826117cb565b613702565b906111d3565b5b6110ee565b6139b7565b613caa915060203d8111613cb0575b613ca28183610167565b810190613796565b5f613c0f565b503d613c98565b6111a3565b90613cca613cfc939261373d565b9063248391ff6020613ce6613ce184969994613755565b613761565b63313ce56790613cf46100d2565b978892611170565b82528180613d0c60048201610271565b03915afa948515613dde57613d3b613d4f93613d35602098613d5a945f91613db1575b506137b4565b90614561565b613d436100d2565b98899687958695611170565b855260048501611832565b03915afa918215613dac578a613c5b613c8494613c60935f91613d7e575b50613c1c565b613d9f915060203d8111613da5575b613d978183610167565b810190611185565b5f613d78565b503d613d8d565b6111a3565b613dd191508a3d8111613dd7575b613dc98183610167565b810190613796565b5f613d2f565b503d613dbf565b6111a3565b613e0591925060203d8111613e0c575b613dfd8183610167565b810190611185565b905f613b69565b503d613df3565b6111a3565b909250613c849550613e2c91935015610de9565b80613ece575b613e3e575b5050613c7f565b613ea482613e65613ea994613e5f60c0860191613e5a836117cb565b611891565b906111d3565b613e8b85613e8661014086015191613e7f60a088016117cb565b90926111b3565b6111d3565b613e9d60a061016085015194016117cb565b90926111b3565b6111d3565b613ec760a08b01613ec1613ebc826117cb565b613702565b906111d3565b5f8a613e37565b5081613ee2613edc89610527565b91610527565b11613e32565b5082613efc613ef68c610527565b91610527565b11613b04565b613f0b91611ed6565b613afc565b613f3291925060203d8111613f39575b613f2a8183610167565b810190611185565b905f613ac7565b503d613f20565b6111a3565b613f66915060203d8111613f6c575b613f5e8183610167565b810190611589565b5f613a2c565b503d613f54565b6111a3565b5050505050505050909150613f9e610100820151613f98608084016117cb565b90614593565b610100820152613fbf610120820151613fb9608084016117cb565b90614593565b610120820152613fe0610140820151613fda60a084016117cb565b90614593565b610140820152614001610160820151613ffb60a084016117cb565b90614593565b61016082015290565b614012614608565b565b61401c61400a565b565b61402f9061402a614608565b614031565b565b61403a906146e0565b565b6140459061401e565b565b61407d90614053611ed2565b5060206140676140625f61156d565b6103bb565b634f4608a2906140756100d2565b948592611170565b8252818061408d60048201610271565b03915afa8015614170576140cd925f91614142575b509060206140b76140b25f61156d565b6103bb565b6385462d6f906140c56100d2565b958692611170565b825281806140dd60048201610271565b03915afa90811561413d576141016141079261410c955f9161410f575b5084611ed6565b90611ca4565b611d06565b90565b614130915060203d8111614136575b6141288183610167565b810190611185565b5f6140fa565b503d61411e565b6111a3565b614163915060203d8111614169575b61415b8183610167565b810190611185565b5f6140a2565b503d614151565b6111a3565b61417d610cad565b506141985f61419261418d610c08565b6146eb565b01610ce3565b90565b5190565b906141a9826146ee565b816141d47fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916135b5565b906141dd6100d2565b806141e781610271565b0390a26141f38161419b565b6142056141ff5f6110d2565b91610527565b115f1461421957614215916147fe565b505b565b5050614223614763565b614217565b614230610cad565b503390565b606090565b929192614245611ed2565b5061424e614235565b5061427b602061426561426087613755565b613761565b63313ce567906142736100d2565b938492611170565b8252818061428b60048201610271565b03915afa908115614521575f916144f3575b50906142a85f6110d2565b946142d560206142bf6142ba5f61156d565b6103bb565b63bb3ba04c906142cd6100d2565b938492611170565b825281806142e560048201610271565b03915afa80156144ee57614300915f916144c0575b506136d4565b9361431261430d82611c73565b6110ab565b9461431c5f6110d2565b975b8861433961433361432e86611c73565b610527565b91610527565b10156144b45761435261434d848b90611c77565b611c97565b61436461435e866100f9565b916100f9565b145f146143e35761439c6143dd916143966143876143828d8a6111b3565b6117cb565b6143908a6137b4565b9061482d565b90611891565b986143d76143c56143b66143b18985906111b3565b6117cb565b6143bf8a6137b4565b9061482d565b6143d28a918490926111b3565b6111d3565b5b6110ee565b9761431e565b976143ed8261373d565b90602063b27b5e7592614409614404878590611c77565b611c97565b9061443988956144446144256144208d89906111b3565b6117cb565b61442d6100d2565b98899687958695611170565b855260048501611832565b03915afa80156144af5761446961447c916143dd945f91614481575b509b8c90611891565b9a6144778a918490926111b3565b6111d3565b6143d8565b6144a2915060203d81116144a8575b61449a8183610167565b810190611185565b5f614460565b503d614490565b6111a3565b95975050505050509190565b6144e1915060203d81116144e7575b6144d98183610167565b810190611589565b5f6142fa565b503d6144cf565b6111a3565b614514915060203d811161451a575b61450c8183610167565b810190613796565b5f61429d565b503d614502565b6111a3565b90565b61453d61453861454292614526565b610390565b610527565b90565b61454e90610527565b604d811161455c57600a0a90565b611864565b9061458a61458561459093614574611ed2565b50926145806012614529565b611ed6565b614545565b90611d06565b90565b91909161459e614235565b506145a8836110ab565b916145b1611ed2565b5b806145c56145bf87610527565b91610527565b1015614601576145fc906145f76145e56145e08684906111b3565b6117cb565b6145f287918490926111b3565b6111d3565b6110ee565b6145b2565b5092505090565b614619614613614863565b15610de9565b61461f57565b6146276100d2565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061465760048201610271565b0390fd5b61466c90614667614608565b61466e565b565b8061468961468361467e5f610c84565b6100f9565b916100f9565b1461469957614697906135e4565b565b6146dc6146a55f610c84565b6146ad6100d2565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b6146e99061465b565b565b90565b803b6147026146fc5f6110d2565b91610527565b1461472457614722905f61471c614717610c08565b6146eb565b016135c4565b565b61475f906147306100d2565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b346147766147705f6110d2565b91610527565b1161477d57565b6147856100d2565b7fb398979f000000000000000000000000000000000000000000000000000000008152806147b560048201610271565b0390fd5b606090565b906147d06147cb836101a5565b610190565b918252565b3d5f146147f0576147e53d6147be565b903d5f602084013e5b565b6147f86147b9565b906147ee565b5f8061482a9361480c6147b9565b508390602081019051915af4906148216147d5565b90919091614881565b90565b9061485661485161485c93614840611ed2565b509261484c6012614529565b611ed6565b614545565b90611ca4565b90565b5f90565b61486b61485f565b5061487e5f614878613674565b01610d2e565b90565b906148959061488e6147b9565b5015610de9565b5f146148a15750614925565b6148aa8261419b565b6148bc6148b65f6110d2565b91610527565b148061490a575b6148cb575090565b614906906148d76100d2565b9182917f9996b3150000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b50803b61491f6149195f6110d2565b91610527565b146148c3565b61492e8161419b565b61494061493a5f6110d2565b91610527565b115f1461494f57805190602001fd5b6149576100d2565b7f1425ea420000000000000000000000000000000000000000000000000000000081528061498760048201610271565b0390fdfea26469706673582212203af8038aa7e59838023878cb80cd8bcada06c979107d1413dee9eda6be8a489664736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x49C1 PUSH2 0x94 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x325A ADD MSTORE DUP2 DUP2 PUSH2 0x32DF ADD MSTORE PUSH2 0x34DA ADD MSTORE PUSH2 0x49C1 SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x87 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x6C PUSH1 0x68 PUSH1 0x70 SWAP3 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x5A JUMP JUMPDEST PUSH1 0x4F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7A SWAP1 PUSH1 0x5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x73 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8E ADDRESS PUSH1 0x7D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xB93 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0xCC JUMP JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x997146F5 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA4 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xF0BF7714 EQ PUSH2 0x9A JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xB60 JUMP JUMPDEST PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x8A4 JUMP JUMPDEST PUSH2 0x4D2 JUMP JUMPDEST PUSH2 0x440 JUMP JUMPDEST PUSH2 0x3E9 JUMP JUMPDEST PUSH2 0x30D JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST PUSH2 0x276 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x102 SWAP1 PUSH2 0xE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10E DUP2 PUSH2 0xF9 JUMP JUMPDEST SUB PUSH2 0x115 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x126 DUP3 PUSH2 0x105 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x171 SWAP1 PUSH2 0x130 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x18B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST SWAP1 PUSH2 0x1A3 PUSH2 0x19C PUSH2 0xD2 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x167 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C3 JUMPI PUSH2 0x1BF PUSH1 0x20 SWAP2 PUSH2 0x130 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x1E8 PUSH2 0x1E3 DUP3 PUSH2 0x1A5 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x204 JUMPI PUSH2 0x202 SWAP3 PUSH2 0x1C8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x227 JUMPI DUP2 PUSH1 0x20 PUSH2 0x224 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x1D3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x26C JUMPI PUSH2 0x245 DUP4 PUSH0 DUP4 ADD PUSH2 0x119 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x267 JUMPI PUSH2 0x264 SWAP3 ADD PUSH2 0x209 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x28A PUSH2 0x284 CALLDATASIZE PUSH1 0x4 PUSH2 0x22C JUMP JUMPDEST SWAP1 PUSH2 0xBC0 JUMP JUMPDEST PUSH2 0x292 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x29C DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x2AE JUMPI JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2BF SWAP1 PUSH2 0x2B3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2D6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x2B6 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x308 JUMPI PUSH2 0x2E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0x304 PUSH2 0x2F3 PUSH2 0xC40 JUMP JUMPDEST PUSH2 0x2FB PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2C3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST CALLVALUE PUSH2 0x33B JUMPI PUSH2 0x31D CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0x325 PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0x32D PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x337 DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x36D SWAP1 PUSH1 0x8 PUSH2 0x372 SWAP4 MUL PUSH2 0x340 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x380 SWAP2 SLOAD PUSH2 0x35D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38D PUSH0 DUP1 PUSH2 0x375 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3A7 PUSH2 0x3A2 PUSH2 0x3AC SWAP3 PUSH2 0xE0 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0xE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B8 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3C4 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3D0 SWAP1 PUSH2 0x3BB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3E7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3C7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x419 JUMPI PUSH2 0x3F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0x415 PUSH2 0x404 PUSH2 0x383 JUMP JUMPDEST PUSH2 0x40C PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH2 0x427 SWAP1 PUSH2 0xF9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x43E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x470 JUMPI PUSH2 0x450 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0x46C PUSH2 0x45B PUSH2 0xCF0 JUMP JUMPDEST PUSH2 0x463 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x475 JUMP JUMPDEST SUB PUSH2 0x492 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x4A3 DUP3 PUSH2 0x482 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x4CD JUMPI DUP1 PUSH2 0x4C1 PUSH2 0x4CA SWAP3 PUSH0 DUP7 ADD PUSH2 0x119 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x496 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST CALLVALUE PUSH2 0x501 JUMPI PUSH2 0x4EB PUSH2 0x4E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST SWAP1 PUSH2 0xFB2 JUMP JUMPDEST PUSH2 0x4F3 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x4FD DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x51E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x533 DUP2 PUSH2 0x527 JUMP JUMPDEST SUB PUSH2 0x53A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x54B DUP3 PUSH2 0x52A JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x562 PUSH2 0x55D DUP3 PUSH2 0x506 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x59F JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x586 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x594 DUP5 DUP7 PUSH2 0x53E JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x579 JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x5C2 JUMPI DUP2 PUSH1 0x20 PUSH2 0x5BF SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x54D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x605 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x600 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x5FB JUMPI JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH2 0x5C7 JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x644 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x63F JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x63A JUMPI JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH2 0x5C7 JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH1 0xC0 DUP2 DUP4 SUB SLT PUSH2 0x6F2 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6ED JUMPI DUP3 PUSH2 0x672 SWAP2 DUP4 ADD PUSH2 0x5A4 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6E8 JUMPI DUP4 PUSH2 0x693 SWAP2 DUP5 ADD PUSH2 0x5CB JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6E3 JUMPI DUP2 PUSH2 0x6B6 SWAP2 DUP5 ADD PUSH2 0x60A JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0x6E0 PUSH2 0x6C9 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x53E JUMP JUMPDEST SWAP4 PUSH2 0x6D7 DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x119 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x119 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x700 SWAP1 PUSH2 0x527 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x724 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x6F7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x74B PUSH2 0x745 PUSH2 0x73E DUP5 PUSH2 0x704 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x708 JUMP JUMPDEST SWAP3 PUSH2 0x711 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x75B JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x774 PUSH2 0x76E PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x717 JUMP JUMPDEST SWAP5 PUSH2 0x728 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x74E JUMP JUMPDEST PUSH2 0x889 SWAP2 PUSH2 0x180 PUSH2 0x877 PUSH2 0x863 PUSH2 0x84F PUSH2 0x83B PUSH2 0x7CD PUSH2 0x1A0 DUP8 ADD PUSH2 0x7A9 PUSH0 DUP11 ADD MLOAD PUSH0 DUP11 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x7BB PUSH1 0x20 DUP11 ADD MLOAD PUSH1 0x20 DUP11 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD DUP9 DUP3 SUB PUSH1 0x40 DUP11 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST PUSH2 0x7DF PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x60 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x7F1 PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x80 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x803 PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0xA0 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x815 PUSH1 0xC0 DUP10 ADD MLOAD PUSH1 0xC0 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x827 PUSH1 0xE0 DUP10 ADD MLOAD PUSH1 0xE0 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD DUP8 DUP3 SUB PUSH2 0x100 DUP10 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST PUSH2 0x120 DUP8 ADD MLOAD DUP7 DUP3 SUB PUSH2 0x120 DUP9 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST PUSH2 0x140 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH2 0x140 DUP8 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x160 DUP7 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 PUSH2 0x180 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8A1 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x77E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8DE JUMPI PUSH2 0x8DA PUSH2 0x8C9 PUSH2 0x8BA CALLDATASIZE PUSH1 0x4 PUSH2 0x649 JUMP JUMPDEST SWAP7 SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP5 SWAP4 SWAP3 SWAP4 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0x8D1 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x88C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x901 JUMPI PUSH2 0x8FD PUSH1 0x20 SWAP2 PUSH2 0x130 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST SWAP1 PUSH2 0x918 PUSH2 0x913 DUP4 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x94E PUSH1 0x5 PUSH2 0x906 JUMP JUMPDEST SWAP1 PUSH2 0x95B PUSH1 0x20 DUP4 ADD PUSH2 0x91D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x965 PUSH2 0x944 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x970 PUSH2 0x95D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x97B PUSH2 0x968 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x9B5 PUSH2 0x9BE PUSH1 0x20 SWAP4 PUSH2 0x9C3 SWAP4 PUSH2 0x9AC DUP2 PUSH2 0x97E JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x982 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x98B JUMP JUMPDEST PUSH2 0x130 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x9DC SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x996 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA0F JUMPI PUSH2 0x9EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0xA0B PUSH2 0x9FA PUSH2 0x973 JUMP JUMPDEST PUSH2 0xA02 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x9C7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xA2D JUMPI PUSH2 0xA2A SWAP2 PUSH0 ADD PUSH2 0x119 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST CALLVALUE PUSH2 0xA60 JUMPI PUSH2 0xA4A PUSH2 0xA45 CALLDATASIZE PUSH1 0x4 PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH2 0xA52 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0xA5C DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xE0 DUP4 DUP3 SUB SLT PUSH2 0xB1E JUMPI PUSH0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB19 JUMPI DUP2 PUSH2 0xA90 SWAP2 DUP6 ADD PUSH2 0x5A4 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB14 JUMPI DUP3 PUSH2 0xAB1 SWAP2 DUP4 ADD PUSH2 0x5CB JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB0F JUMPI DUP3 PUSH2 0xAD4 SWAP2 DUP6 ADD PUSH2 0x60A JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0xAE4 DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x53E JUMP JUMPDEST SWAP3 PUSH2 0xB0C PUSH2 0xAF5 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x119 JUMP JUMPDEST SWAP4 PUSH2 0xB03 DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x119 JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0x119 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST CALLVALUE PUSH2 0xB5B JUMPI PUSH2 0xB45 PUSH2 0xB36 CALLDATASIZE PUSH1 0x4 PUSH2 0xA65 JUMP JUMPDEST SWAP8 SWAP7 SWAP1 SWAP7 SWAP6 SWAP2 SWAP6 SWAP5 SWAP3 SWAP5 PUSH2 0x1F96 JUMP JUMPDEST PUSH2 0xB4D PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0xB57 DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST CALLVALUE PUSH2 0xB8E JUMPI PUSH2 0xB78 PUSH2 0xB73 CALLDATASIZE PUSH1 0x4 PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x3232 JUMP JUMPDEST PUSH2 0xB80 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0xB8A DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0xBA9 SWAP2 PUSH2 0xBA4 PUSH2 0x3249 JUMP JUMPDEST PUSH2 0xBAB JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xBBE SWAP2 PUSH2 0xBB9 DUP2 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x338B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xBCA SWAP2 PUSH2 0xB97 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xBE1 SWAP1 PUSH2 0xBDC PUSH2 0x34C9 JUMP JUMPDEST PUSH2 0xC34 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0xC00 PUSH2 0xBFB PUSH2 0xC05 SWAP3 PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0xBE7 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC31 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0xBEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0xC3D PUSH2 0xC08 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC50 PUSH2 0xC4B PUSH2 0xBCC JUMP JUMPDEST PUSH2 0xBD0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC5B PUSH2 0x3547 JUMP JUMPDEST PUSH2 0xC63 PUSH2 0xC90 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC7C PUSH2 0xC77 PUSH2 0xC81 SWAP3 PUSH2 0xC65 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0xE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC8D SWAP1 PUSH2 0xC68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA1 PUSH2 0xC9C PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x35E4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCAB PUSH2 0xC53 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xCDB PUSH2 0xCE0 SWAP2 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCED SWAP1 SLOAD PUSH2 0xCCF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCF8 PUSH2 0xCAD JUMP JUMPDEST POP PUSH2 0xD0B PUSH0 PUSH2 0xD05 PUSH2 0x3650 JUMP JUMPDEST ADD PUSH2 0xCE3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD26 PUSH2 0xD2B SWAP2 PUSH2 0xD0E JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD38 SWAP1 SLOAD PUSH2 0xD1A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD54 PUSH2 0xD59 SWAP2 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0xD3B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD66 SWAP1 SLOAD PUSH2 0xD48 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD7C PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xBE7 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xD9A PUSH2 0xD95 PUSH2 0xD9F SWAP3 PUSH2 0x475 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x475 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xDBA PUSH2 0xDB5 PUSH2 0xDC1 SWAP3 PUSH2 0xD86 JUMP JUMPDEST PUSH2 0xDA2 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xD69 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xDDF PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0xDC5 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xDF7 SWAP1 PUSH2 0xDE9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE12 PUSH2 0xE0D PUSH2 0xE19 SWAP3 PUSH2 0xDEE JUMP JUMPDEST PUSH2 0xDFA JUMP JUMPDEST DUP3 SLOAD PUSH2 0xDCB JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE26 SWAP1 PUSH2 0x475 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xE3D SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xE1D JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0xE4A PUSH2 0x3674 JUMP JUMPDEST SWAP1 PUSH2 0xE56 PUSH0 DUP4 ADD PUSH2 0xD2E JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF07 JUMPI JUMPDEST PUSH2 0xECB JUMPI PUSH2 0xE90 SWAP3 PUSH2 0xE87 SWAP2 PUSH2 0xE75 DUP7 PUSH0 DUP7 ADD PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0xE82 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0xDFD JUMP JUMPDEST PUSH2 0xF9C JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0xDFD JUMP JUMPDEST PUSH2 0xEC6 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0xEBD PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xE2A JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0xED3 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xF03 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0xF13 PUSH0 DUP4 ADD PUSH2 0xD5C JUMP JUMPDEST PUSH2 0xF25 PUSH2 0xF1F DUP7 PUSH2 0x475 JUMP JUMPDEST SWAP2 PUSH2 0x475 JUMP JUMPDEST LT ISZERO PUSH2 0xE5D JUMP JUMPDEST PUSH2 0xF35 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF41 SWAP1 PUSH2 0xF2C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF63 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xBE7 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xF76 SWAP1 PUSH2 0xF2C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF91 PUSH2 0xF8C PUSH2 0xF98 SWAP3 PUSH2 0xF6D JUMP JUMPDEST PUSH2 0xF79 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xF44 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xFB0 SWAP2 POP PUSH2 0xFAA SWAP1 PUSH2 0xF38 JUMP JUMPDEST PUSH0 PUSH2 0xF7C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xFBC SWAP2 PUSH2 0xE3F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xFC9 PUSH2 0x1A0 PUSH2 0x190 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0xFEC PUSH2 0xFBE JUMP JUMPDEST SWAP14 DUP15 PUSH2 0xFF6 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1001 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x100C PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1017 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1022 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x102D PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1038 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1043 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x104E PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1059 PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1064 PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x106F PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x107A PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1088 PUSH2 0xFD5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x10A1 PUSH2 0x109C DUP4 PUSH2 0x506 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x10D0 PUSH2 0x10B8 DUP4 PUSH2 0x108F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x10C6 DUP7 SWAP4 PUSH2 0x506 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x10A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x10E6 PUSH2 0x10E1 PUSH2 0x10EB SWAP3 PUSH2 0xC65 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x10FA SWAP2 ADD PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x113A JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST CALLDATALOAD PUSH2 0x1149 DUP2 PUSH2 0x105 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1155 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1161 SWAP1 PUSH2 0x114C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x116D SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1183 DUP3 PUSH2 0x52A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x119E JUMPI PUSH2 0x119B SWAP2 PUSH0 ADD PUSH2 0x1176 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x11AB PUSH2 0xD2 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x11BD DUP3 PUSH2 0x704 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x11CE JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST SWAP1 PUSH2 0x11DD SWAP1 PUSH2 0x527 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP8 SWAP3 SWAP7 SWAP2 SWAP5 SWAP1 SWAP4 PUSH2 0x11F0 PUSH2 0x1080 JUMP JUMPDEST POP PUSH2 0x1204 PUSH2 0x11FF DUP7 DUP9 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x10AB JUMP JUMPDEST SWAP9 PUSH2 0x120E DUP2 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x1220 PUSH2 0x121A PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1330 JUMPI POP PUSH2 0x1231 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x124F PUSH2 0x1249 PUSH2 0x1244 DUP10 DUP12 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1313 JUMPI PUSH2 0x12A9 SWAP1 PUSH1 0x20 PUSH2 0x127F PUSH2 0x127A PUSH2 0x1275 PUSH2 0x1270 DUP12 DUP14 DUP8 SWAP2 PUSH2 0x112A JUMP JUMPDEST PUSH2 0x113F JUMP JUMPDEST PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x129E DUP13 SWAP3 PUSH2 0x1292 PUSH2 0xD2 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1170 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x130E JUMPI PUSH2 0x12DB SWAP3 PUSH2 0x12D6 SWAP2 PUSH0 SWAP2 PUSH2 0x12E0 JUMPI JUMPDEST POP PUSH2 0x12D1 DUP14 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x1232 JUMP JUMPDEST PUSH2 0x1301 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1307 JUMPI JUMPDEST PUSH2 0x12F9 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x12C3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP SWAP3 SWAP8 PUSH2 0x132D SWAP8 SWAP3 SWAP6 SWAP2 SWAP5 SWAP7 POP JUMPDEST SWAP6 SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH2 0x37D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP4 SWAP9 POP PUSH2 0x132D SWAP8 SWAP3 SWAP6 SWAP2 SWAP5 SWAP7 POP PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x1357 PUSH2 0x1352 PUSH2 0x135C SWAP3 PUSH2 0xC65 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x475 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1376 PUSH2 0x1371 PUSH2 0x137B SWAP3 PUSH2 0x135F JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x475 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1387 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1393 SWAP1 PUSH2 0x1362 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x13AA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x138A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x13B4 PUSH2 0x3674 JUMP JUMPDEST SWAP1 PUSH2 0x13C9 PUSH2 0x13C3 PUSH0 DUP5 ADD PUSH2 0xD2E JUMP JUMPDEST ISZERO PUSH2 0xDE9 JUMP JUMPDEST SWAP1 PUSH2 0x13D5 PUSH0 DUP5 ADD PUSH2 0xD5C JUMP JUMPDEST DUP1 PUSH2 0x13E8 PUSH2 0x13E2 PUSH0 PUSH2 0x1343 JUMP JUMPDEST SWAP2 PUSH2 0x475 JUMP JUMPDEST EQ DUP1 PUSH2 0x1522 JUMPI JUMPDEST SWAP1 PUSH2 0x1403 PUSH2 0x13FD PUSH1 0x1 PUSH2 0x1362 JUMP JUMPDEST SWAP2 PUSH2 0x475 JUMP JUMPDEST EQ DUP1 PUSH2 0x14FA JUMPI JUMPDEST PUSH2 0x1415 SWAP1 SWAP2 ISZERO PUSH2 0xDE9 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x14E9 JUMPI JUMPDEST POP PUSH2 0x14AD JUMPI PUSH2 0x1445 SWAP1 PUSH2 0x143A PUSH2 0x1432 PUSH1 0x1 PUSH2 0x1362 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0xDA5 JUMP JUMPDEST DUP3 PUSH2 0x149B JUMPI JUMPDEST PUSH2 0x1529 JUMP JUMPDEST PUSH2 0x144D JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x145A SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0xDFD JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1492 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1489 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1397 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14A8 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0xDFD JUMP JUMPDEST PUSH2 0x1440 JUMP JUMPDEST PUSH2 0x14B5 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14E5 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x14F4 SWAP2 POP ISZERO PUSH2 0xDE9 JUMP JUMPDEST PUSH0 PUSH2 0x141C JUMP JUMPDEST POP PUSH2 0x1415 PUSH2 0x1507 ADDRESS PUSH2 0x137E JUMP JUMPDEST EXTCODESIZE PUSH2 0x151A PUSH2 0x1514 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x140A JUMP JUMPDEST POP DUP3 PUSH2 0x13EF JUMP JUMPDEST PUSH2 0x1546 PUSH2 0x154C SWAP2 PUSH2 0x1538 PUSH2 0x4014 JUMP JUMPDEST PUSH2 0x1541 CALLER PUSH2 0x403C JUMP JUMPDEST PUSH2 0xF38 JUMP JUMPDEST PUSH0 PUSH2 0xF7C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1557 SWAP1 PUSH2 0x13AC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1565 PUSH2 0x156A SWAP2 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1577 SWAP1 SLOAD PUSH2 0x1559 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1587 DUP3 PUSH2 0x105 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x15A2 JUMPI PUSH2 0x159F SWAP2 PUSH0 ADD PUSH2 0x157A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH0 PUSH32 0x4E6F206173736574732070726F76696465640000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x15DB PUSH1 0x12 PUSH1 0x20 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x15E4 DUP2 PUSH2 0x15A7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x15FD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x15CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1607 JUMPI JUMP JUMPDEST PUSH2 0x160F PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x163F PUSH1 0x4 DUP3 ADD PUSH2 0x15E8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x656E677468000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x4D69736D6174636865642062616C616E63657320616E6420617373657473206C PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x169D PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x16A6 DUP2 PUSH2 0x1643 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x16BF SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1690 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x16C9 JUMPI JUMP JUMPDEST PUSH2 0x16D1 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1701 PUSH1 0x4 DUP3 ADD PUSH2 0x16AA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6E67746800000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x4D69736D617463686564207765696768747320616E6420617373657473206C65 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1763 PUSH1 0x24 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x176C DUP2 PUSH2 0x1709 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1785 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1756 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x178F JUMPI JUMP JUMPDEST PUSH2 0x1797 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x17C7 PUSH1 0x4 DUP3 ADD PUSH2 0x1770 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x17D5 SWAP1 MLOAD PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17E1 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17ED DUP2 PUSH2 0xDE9 JUMP JUMPDEST SUB PUSH2 0x17F4 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1805 DUP3 PUSH2 0x17E4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1820 JUMPI PUSH2 0x181D SWAP2 PUSH0 ADD PUSH2 0x17F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x182E SWAP1 PUSH2 0x527 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x185B PUSH2 0x1862 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x1851 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST ADD SWAP1 PUSH2 0x1825 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x18A0 PUSH2 0x18A6 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x527 JUMP JUMPDEST SWAP3 PUSH2 0x527 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x18B1 JUMPI JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6967687420416D6F756E74212100000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A20556E646572204F7665727765 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1910 PUSH1 0x2D PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1919 DUP2 PUSH2 0x18B6 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1932 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1903 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x193C JUMPI JUMP JUMPDEST PUSH2 0x1944 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1974 PUSH1 0x4 DUP3 ADD PUSH2 0x191D JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1999 SWAP3 SWAP5 SWAP4 PUSH2 0x1992 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x646572204F76657277656967687420416D6F756E740000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A20416C6C6F77616E636520756E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x19F5 PUSH1 0x35 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x19FE DUP2 PUSH2 0x199B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1A17 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x19E8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1A21 JUMPI JUMP JUMPDEST PUSH2 0x1A29 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1A59 PUSH1 0x4 DUP3 ADD PUSH2 0x1A02 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1A7E SWAP3 SWAP5 SWAP4 PUSH2 0x1A77 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST ADD SWAP1 PUSH2 0x1825 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A89 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A95 SWAP1 PUSH2 0x1A80 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1AA1 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x1AEF SWAP5 PUSH2 0x1ADE PUSH2 0x1AE8 SWAP3 PUSH2 0x1AD4 PUSH1 0x80 SWAP7 PUSH2 0x1ACA PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x1825 JUMP JUMPDEST ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B26 PUSH2 0x1B2D SWAP5 PUSH2 0x1B1C PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x1B12 PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x1825 JUMP JUMPDEST ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x7420626173652061737365742062616C616E6365000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A2020496E73756666696369656E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1B89 PUSH1 0x34 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1B92 DUP2 PUSH2 0x1B2F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1BAB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1B7C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1BB5 JUMPI JUMP JUMPDEST PUSH2 0x1BBD PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1BED PUSH1 0x4 DUP3 ADD PUSH2 0x1B96 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C09 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x1C23 PUSH2 0x1C1E DUP3 PUSH2 0x1BF1 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x1C60 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x1C47 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x1C55 DUP5 DUP7 PUSH2 0x119 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1C3A JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH2 0x1C70 SWAP2 CALLDATASIZE SWAP2 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1C81 DUP3 PUSH2 0x1C73 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1C92 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST PUSH2 0x1CA1 SWAP1 MLOAD PUSH2 0xF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CB3 PUSH2 0x1CB9 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x527 JUMP JUMPDEST SWAP3 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x1CC5 DUP4 DUP3 MUL PUSH2 0x527 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1CD4 JUMPI JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1D12 PUSH2 0x1D18 SWAP2 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x1D23 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x1CD9 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x79207175616E74697479206973207A65726F0000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A20526562616C616E6365206275 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1D82 PUSH1 0x32 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1D8B DUP2 PUSH2 0x1D28 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1DA4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1D75 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1DAE JUMPI JUMP JUMPDEST PUSH2 0x1DB6 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1DE6 PUSH1 0x4 DUP3 ADD PUSH2 0x1D8F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 PUSH32 0x6C616E6365000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A20526562616C616E6365206275 PUSH0 DUP3 ADD MSTORE PUSH32 0x79207175616E7469747920657863656564732062617365206173736574206261 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1E6A PUSH1 0x45 PUSH1 0x60 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1E73 DUP2 PUSH2 0x1DEA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1E8C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1E5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1E96 JUMPI JUMP JUMPDEST PUSH2 0x1E9E PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1ECE PUSH1 0x4 DUP3 ADD PUSH2 0x1E77 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1EE5 PUSH2 0x1EEB SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x527 JUMP JUMPDEST SWAP3 PUSH2 0x527 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1EF6 JUMPI JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST PUSH0 PUSH32 0x42616C616E636520756E64657220616D6F756E7420746F207472616E73666572 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1F2E PUSH1 0x20 DUP1 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1F37 DUP2 PUSH2 0x1EFB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1F50 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1F22 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1F5A JUMPI JUMP JUMPDEST PUSH2 0x1F62 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1F92 PUSH1 0x4 DUP3 ADD PUSH2 0x1F3B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP7 SWAP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP9 SWAP8 SWAP5 PUSH2 0x1FCB PUSH1 0x20 PUSH2 0x1FB5 PUSH2 0x1FB0 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x1FC3 PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1FDB PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x31A8 JUMPI PUSH0 SWAP2 PUSH2 0x317A JUMPI JUMPDEST POP SWAP8 PUSH2 0x2015 PUSH2 0x1FFD DUP13 DUP8 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x200F PUSH2 0x2009 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x1600 JUMP JUMPDEST PUSH2 0x2044 DUP12 PUSH2 0x203E PUSH2 0x2038 PUSH2 0x2033 PUSH2 0x202B DUP7 PUSH2 0x704 JUMP JUMPDEST SWAP4 DUP11 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x16C2 JUMP JUMPDEST PUSH2 0x2075 DUP12 PUSH2 0x206F PUSH2 0x2069 PUSH2 0x2064 PUSH2 0x205C DUP9 DUP11 SWAP1 PUSH2 0x1705 JUMP JUMPDEST SWAP4 DUP11 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x1788 JUMP JUMPDEST PUSH2 0x207E DUP2 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x2090 PUSH2 0x208A PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x3065 JUMPI JUMPDEST SWAP1 PUSH2 0x20AC SWAP4 SWAP3 SWAP2 SWAP3 DUP12 SWAP3 DUP7 SWAP1 SWAP2 SWAP3 SWAP4 DUP10 SWAP6 PUSH2 0x37D0 JUMP JUMPDEST SWAP7 PUSH2 0x20B6 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x20D7 PUSH2 0x20D1 PUSH2 0x20CC PUSH2 0x100 DUP14 ADD MLOAD PUSH2 0x704 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x2763 JUMPI PUSH2 0x20F5 PUSH2 0x20F0 PUSH2 0x120 DUP12 ADD MLOAD DUP4 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x2107 PUSH2 0x2101 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x211C JUMPI JUMPDEST PUSH2 0x2117 SWAP1 JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x20B7 JUMP JUMPDEST PUSH2 0x2148 PUSH2 0x2143 DUP4 DUP12 PUSH2 0x213D PUSH2 0x2138 PUSH2 0x100 DUP10 SWAP4 ADD MLOAD DUP8 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP2 PUSH2 0x112A JUMP JUMPDEST PUSH2 0x113F JUMP JUMPDEST SWAP1 DUP10 DUP3 PUSH2 0x215D PUSH2 0x2157 DUP10 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH2 0x267E JUMPI DUP1 PUSH2 0x21BE PUSH2 0x21B8 PUSH2 0x21B3 PUSH2 0x21AE PUSH2 0x120 PUSH2 0x21A4 PUSH2 0x219F PUSH2 0x180 PUSH2 0x21C5 SWAP10 ADD MLOAD PUSH2 0x2199 PUSH2 0x2194 PUSH2 0x100 DUP12 ADD MLOAD DUP14 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP6 ADD MLOAD DUP8 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1935 JUMP JUMPDEST PUSH2 0x21D6 PUSH2 0x21D1 DUP4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 DUP8 SWAP1 PUSH2 0x2204 PUSH2 0x21EC ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP5 PUSH2 0x220F PUSH2 0x21F8 PUSH2 0xD2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1978 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2679 JUMPI PUSH2 0x2251 PUSH2 0x224B PUSH2 0x2246 PUSH2 0x2241 DUP16 SWAP5 PUSH2 0x120 SWAP1 PUSH2 0x2258 SWAP8 PUSH0 SWAP2 PUSH2 0x264B JUMPI JUMPDEST POP SWAP6 ADD MLOAD DUP8 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1A1A JUMP JUMPDEST DUP10 PUSH1 0x20 PUSH2 0x226C PUSH2 0x2267 DUP6 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x23B872DD SWAP1 PUSH2 0x22B0 PUSH0 DUP11 SWAP4 PUSH2 0x22BB PUSH2 0x229C PUSH2 0x2297 PUSH2 0x120 PUSH2 0x228D ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP11 ADD MLOAD DUP12 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x22A4 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1170 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x1832 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2646 JUMPI PUSH2 0x261A JUMPI JUMPDEST POP PUSH2 0x22F7 PUSH1 0x20 PUSH2 0x22E1 PUSH2 0x22DC PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x22EF PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2307 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2615 JUMPI PUSH0 SWAP2 PUSH2 0x25E7 JUMPI JUMPDEST POP PUSH2 0x232B PUSH2 0x2326 DUP5 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP13 PUSH4 0x95EA7B3 SWAP6 PUSH2 0x236A PUSH0 PUSH2 0x2352 PUSH2 0x234D PUSH2 0x120 DUP10 SWAP7 ADD MLOAD DUP11 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP9 PUSH2 0x2375 PUSH2 0x235E PUSH2 0xD2 JUMP JUMPDEST SWAP11 DUP12 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x25E2 JUMPI DUP10 SWAP5 DUP14 SWAP4 PUSH2 0x25B6 JUMPI JUMPDEST POP DUP9 DUP12 DUP4 PUSH2 0x239F PUSH2 0x2399 DUP4 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x24AF JUMPI POP POP SWAP1 PUSH2 0x2422 PUSH0 PUSH2 0x23C1 PUSH2 0x23BC PUSH1 0x20 SWAP7 SWAP6 PUSH2 0x1A8C JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST SWAP3 PUSH2 0x242D PUSH4 0x2D6BC8EA SWAP2 SWAP6 DUP14 SWAP10 PUSH2 0x23F3 PUSH2 0x140 PUSH2 0x23EB PUSH2 0x23E6 DUP14 PUSH2 0x120 DUP8 ADD MLOAD PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP4 ADD MLOAD PUSH2 0x704 JUMP JUMPDEST PUSH2 0x2405 PUSH2 0x23FF DUP8 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ DUP6 EQ PUSH2 0x249F JUMPI SWAP1 JUMPDEST PUSH2 0x2416 PUSH2 0xD2 JUMP JUMPDEST SWAP11 DUP12 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x1170 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x1AF1 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x249A JUMPI PUSH2 0x2117 SWAP3 PUSH2 0x2464 SWAP2 PUSH0 SWAP2 PUSH2 0x246C JUMPI JUMPDEST POP PUSH2 0x245E PUSH1 0xE0 DUP14 ADD SWAP2 PUSH2 0x2459 DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH2 0x210D JUMP JUMPDEST PUSH2 0x248D SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2493 JUMPI JUMPDEST PUSH2 0x2485 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2447 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x247B JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP PUSH2 0x24A9 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP1 PUSH2 0x240E JUMP JUMPDEST SWAP3 PUSH0 SWAP1 PUSH2 0x2537 DUP8 PUSH1 0x20 SWAP8 PUSH2 0x24CF PUSH2 0x24CA PUSH2 0x252C SWAP8 SWAP13 SWAP9 PUSH2 0x1A8C JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST SWAP7 PUSH2 0x24FD PUSH2 0x140 PUSH2 0x24F5 PUSH2 0x24F0 PUSH4 0x5EFAAEBB SWAP9 SWAP13 SWAP16 SWAP7 PUSH2 0x120 DUP8 ADD MLOAD PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP4 ADD MLOAD PUSH2 0x704 JUMP JUMPDEST PUSH2 0x250F PUSH2 0x2509 DUP9 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ DUP7 EQ PUSH2 0x25A6 JUMPI SWAP2 JUMPDEST PUSH2 0x2520 PUSH2 0xD2 JUMP JUMPDEST SWAP12 DUP13 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0x1170 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x1AA4 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x25A1 JUMPI PUSH2 0x2117 SWAP3 PUSH2 0x256E SWAP2 PUSH0 SWAP2 PUSH2 0x2573 JUMPI JUMPDEST POP PUSH2 0x2568 PUSH1 0xE0 DUP14 ADD SWAP2 PUSH2 0x2563 DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2465 JUMP JUMPDEST PUSH2 0x2594 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x259A JUMPI JUMPDEST PUSH2 0x258C DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2551 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2582 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP PUSH2 0x25B0 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP2 PUSH2 0x2518 JUMP JUMPDEST PUSH2 0x25D6 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x25DB JUMPI JUMPDEST PUSH2 0x25CE DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2389 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25C4 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2608 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x260E JUMPI JUMPDEST PUSH2 0x2600 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x2319 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25F6 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x263A SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x263F JUMPI JUMPDEST PUSH2 0x2632 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x22CA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x266C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2672 JUMPI JUMPDEST PUSH2 0x2664 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2236 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x265A JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP2 PUSH2 0x2692 PUSH2 0x268D PUSH1 0x20 SWAP3 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x23B872DD SWAP1 PUSH2 0x26D6 PUSH0 DUP10 SWAP4 PUSH2 0x26E1 PUSH2 0x26C2 PUSH2 0x26BD PUSH2 0x120 PUSH2 0x26B3 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP12 ADD MLOAD DUP11 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x26CA PUSH2 0xD2 JUMP JUMPDEST SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1170 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x1832 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x275E JUMPI PUSH2 0x2117 SWAP3 PUSH2 0x2732 JUMPI JUMPDEST POP PUSH2 0x272D PUSH2 0x2711 PUSH2 0x270C PUSH2 0x120 DUP14 ADD MLOAD DUP5 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x2727 PUSH1 0xE0 DUP14 ADD SWAP2 PUSH2 0x2722 DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2112 JUMP JUMPDEST PUSH2 0x2752 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2757 JUMPI JUMPDEST PUSH2 0x274A DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x26F5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2740 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP SWAP4 SWAP3 SWAP7 SWAP5 SWAP2 POP PUSH2 0x27B3 SWAP1 PUSH1 0x20 PUSH2 0x2781 PUSH2 0x277C DUP11 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x27A8 PUSH2 0x2793 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP3 PUSH2 0x279C PUSH2 0xD2 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1170 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3060 JUMPI PUSH2 0x27F7 SWAP3 PUSH0 SWAP2 PUSH2 0x3032 JUMPI JUMPDEST POP SWAP5 PUSH2 0x27F2 DUP7 PUSH2 0x27EB PUSH2 0x27E5 PUSH2 0x27E0 PUSH1 0xE0 DUP13 ADD PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1BAE JUMP JUMPDEST PUSH2 0x1C65 JUMP JUMPDEST SWAP6 PUSH2 0x2824 PUSH1 0x20 PUSH2 0x280E PUSH2 0x2809 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x281C PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2834 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x302D JUMPI PUSH0 SWAP2 PUSH2 0x2FFF JUMPI JUMPDEST POP SWAP7 PUSH2 0x2851 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x2872 PUSH2 0x286C PUSH2 0x2867 PUSH2 0x140 DUP12 ADD MLOAD PUSH2 0x704 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x2FF4 JUMPI DUP7 SWAP1 DUP10 DUP4 PUSH2 0x2894 PUSH2 0x288F PUSH2 0x160 DUP7 ADD MLOAD DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x28A6 PUSH2 0x28A0 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x28BE JUMPI JUMPDEST POP POP PUSH2 0x28B9 SWAP2 POP JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x2852 JUMP JUMPDEST PUSH2 0x2924 PUSH2 0x2912 PUSH2 0x293D SWAP4 PUSH2 0x290D PUSH2 0x2908 PUSH2 0x160 PUSH2 0x28FE PUSH2 0x28F9 DUP12 PUSH2 0x28F3 PUSH2 0x28EE DUP14 PUSH2 0x140 PUSH2 0x2936 SWAP14 SWAP5 ADD MLOAD PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x1C77 JUMP JUMPDEST PUSH2 0x1C97 JUMP JUMPDEST SWAP10 ADD MLOAD DUP9 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x291E PUSH1 0xC0 DUP14 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x1D06 JUMP JUMPDEST PUSH2 0x2930 PUSH1 0xE0 DUP13 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x1CA4 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x1D06 JUMP JUMPDEST SWAP2 DUP7 SWAP3 DUP2 PUSH2 0x2953 PUSH2 0x294D DUP9 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH2 0x2F66 JUMPI PUSH2 0x2974 DUP2 PUSH2 0x296E PUSH2 0x2968 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x1DA7 JUMP JUMPDEST PUSH2 0x2991 DUP2 PUSH2 0x298A PUSH2 0x2984 DUP13 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT ISZERO PUSH2 0x1E8F JUMP JUMPDEST PUSH2 0x29BD PUSH1 0x20 PUSH2 0x29A7 PUSH2 0x29A2 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x29B5 PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x29CD PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2F61 JUMPI PUSH0 SWAP2 PUSH2 0x2F33 JUMPI JUMPDEST POP PUSH2 0x29F1 PUSH2 0x29EC DUP9 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 DUP3 SWAP1 PUSH2 0x2A19 PUSH0 DUP8 SWAP7 PUSH2 0x2A24 PUSH2 0x2A0D PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2F2E JUMPI PUSH1 0x20 SWAP3 PUSH2 0x2F03 JUMPI JUMPDEST POP PUSH2 0x2A40 PUSH2 0x1ED2 JUMP JUMPDEST POP DUP4 PUSH2 0x2A54 PUSH2 0x2A4E DUP12 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x2E6A JUMPI PUSH2 0x2A67 PUSH2 0x2A6C SWAP2 PUSH2 0x1A8C JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST PUSH4 0x2D6BC8EA SWAP1 PUSH2 0x2A9B PUSH0 DUP11 SWAP4 PUSH2 0x2AA6 DUP9 SWAP8 PUSH2 0x2A86 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP1 PUSH2 0x2A8F PUSH2 0xD2 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x1170 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x1AF1 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E65 JUMPI PUSH0 SWAP2 PUSH2 0x2E37 JUMPI JUMPDEST POP SWAP3 JUMPDEST PUSH2 0x2AC8 DUP5 PUSH1 0xE0 DUP13 ADD PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2ADC PUSH2 0x2AD4 DUP6 PUSH2 0x4047 JUMP JUMPDEST SWAP5 DUP6 SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x2AF0 PUSH2 0x2AE8 DUP3 PUSH2 0x4047 JUMP JUMPDEST SWAP2 DUP3 SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST SWAP2 PUSH2 0x2B39 PUSH1 0x20 PUSH2 0x2B07 PUSH2 0x2B02 DUP8 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2B2E PUSH2 0x2B19 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP3 PUSH2 0x2B22 PUSH2 0xD2 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1170 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2E32 JUMPI PUSH2 0x2B68 SWAP2 PUSH0 SWAP2 PUSH2 0x2E04 JUMPI JUMPDEST POP PUSH2 0x2B61 PUSH2 0x2B5B DUP10 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1F53 JUMP JUMPDEST PUSH2 0x2B94 PUSH1 0x20 PUSH2 0x2B7E PUSH2 0x2B79 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x2B8C PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BA4 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2DFF JUMPI PUSH0 SWAP2 PUSH2 0x2DD1 JUMPI JUMPDEST POP SWAP2 PUSH2 0x2BE4 PUSH1 0x20 PUSH2 0x2BCE PUSH2 0x2BC9 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x2BDC PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BF4 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2DCC JUMPI PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x2D9F JUMPI JUMPDEST POP SWAP8 PUSH2 0x2C1B PUSH2 0x2C16 DUP9 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x2C3E PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x2C49 PUSH2 0x2C32 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2D9A JUMPI PUSH1 0x20 SWAP3 PUSH2 0x2D6F JUMPI JUMPDEST POP PUSH2 0x2C6E PUSH2 0x2C69 DUP7 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x2C91 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x2C9C PUSH2 0x2C85 PUSH2 0xD2 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2D6A JUMPI PUSH1 0x20 SWAP4 PUSH2 0x2CC1 SWAP3 PUSH2 0x2CBC SWAP3 PUSH2 0x2D3F JUMPI JUMPDEST POP PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x2CE4 PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x2CEF PUSH2 0x2CD8 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2D3A JUMPI PUSH2 0x28B9 SWAP3 PUSH2 0x2D0E JUMPI JUMPDEST POP DUP8 SWAP2 POP DUP10 DUP4 PUSH2 0x28AC JUMP JUMPDEST PUSH2 0x2D2E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D33 JUMPI JUMPDEST PUSH2 0x2D26 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2D03 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D1C JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2D5E SWAP1 DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x2D63 JUMPI JUMPDEST PUSH2 0x2D56 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2CB6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D4C JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2D8E SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x2D93 JUMPI JUMPDEST PUSH2 0x2D86 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2C5C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D7C JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2DBF SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x2DC5 JUMPI JUMPDEST PUSH2 0x2DB7 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x2C08 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2DAD JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2DF2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2DF8 JUMPI JUMPDEST PUSH2 0x2DEA DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x2BB6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2DE0 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2E25 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2E2B JUMPI JUMPDEST PUSH2 0x2E1D DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2B4E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E13 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2E58 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2E5E JUMPI JUMPDEST PUSH2 0x2E50 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2AB8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E46 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2E76 PUSH2 0x2E7B SWAP2 PUSH2 0x1A8C JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST PUSH4 0x5EFAAEBB SWAP1 PUSH2 0x2EAC PUSH0 DUP11 SWAP4 PUSH2 0x2EB7 DUP14 SWAP8 DUP10 SWAP1 PUSH2 0x2E97 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP2 PUSH2 0x2EA0 PUSH2 0xD2 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0x1170 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x1AA4 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EFE JUMPI PUSH0 SWAP2 PUSH2 0x2ED0 JUMPI JUMPDEST POP SWAP3 PUSH2 0x2ABB JUMP JUMPDEST PUSH2 0x2EF1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2EF7 JUMPI JUMPDEST PUSH2 0x2EE9 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2EC9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2EDF JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2F22 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x2F27 JUMPI JUMPDEST PUSH2 0x2F1A DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2A37 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F10 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2F54 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2F5A JUMPI JUMPDEST PUSH2 0x2F4C DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x29DF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F42 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH2 0x2F7B PUSH2 0x2F76 DUP8 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x2F9E PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x2FA9 PUSH2 0x2F92 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2FEF JUMPI PUSH2 0x28B9 SWAP3 PUSH2 0x2FC3 JUMPI JUMPDEST POP PUSH2 0x28B4 JUMP JUMPDEST PUSH2 0x2FE3 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2FE8 JUMPI JUMPDEST PUSH2 0x2FDB DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2FBD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2FD1 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP POP POP POP POP POP POP SWAP1 POP JUMP JUMPDEST PUSH2 0x3020 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3026 JUMPI JUMPDEST PUSH2 0x3018 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2846 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x300E JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x3053 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3059 JUMPI JUMPDEST PUSH2 0x304B DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x27C8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3041 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP10 SWAP6 SWAP2 PUSH2 0x3079 PUSH0 SWAP11 SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP3 SWAP11 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x3097 PUSH2 0x3091 PUSH2 0x308C DUP12 DUP14 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x3161 JUMPI PUSH2 0x30F0 SWAP1 PUSH1 0x20 DUP12 PUSH2 0x30C9 PUSH2 0x30C4 PUSH2 0x30BF PUSH2 0x30BA DUP16 DUP16 SWAP1 DUP9 SWAP2 PUSH2 0x112A JUMP JUMPDEST PUSH2 0x113F JUMP JUMPDEST PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x30E5 PUSH4 0x70A08231 PUSH2 0x30D9 PUSH2 0xD2 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1170 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x315C JUMPI PUSH2 0x3123 SWAP3 DUP15 PUSH2 0x311E SWAP3 PUSH0 SWAP3 PUSH2 0x3128 JUMPI JUMPDEST POP PUSH2 0x3119 SWAP1 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x307A JUMP JUMPDEST PUSH2 0x3119 SWAP2 SWAP3 POP PUSH2 0x314E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3155 JUMPI JUMPDEST PUSH2 0x3146 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x310B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x313C JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP6 SWAP10 SWAP9 PUSH2 0x20AC SWAP4 SWAP8 SWAP5 SWAP9 SWAP6 SWAP10 SWAP1 SWAP2 SWAP3 SWAP4 POP PUSH2 0x2096 JUMP JUMPDEST PUSH2 0x319B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x31A1 JUMPI JUMPDEST PUSH2 0x3193 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x1FED JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3189 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x31BE SWAP1 PUSH2 0x31B9 PUSH2 0x3547 JUMP JUMPDEST PUSH2 0x31C0 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x31DB PUSH2 0x31D5 PUSH2 0x31D0 PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH2 0x31EB JUMPI PUSH2 0x31E9 SWAP1 PUSH2 0x35E4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x322E PUSH2 0x31F7 PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x31FF PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x323B SWAP1 PUSH2 0x31AD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3246 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3252 ADDRESS PUSH2 0x323D JUMP JUMPDEST PUSH2 0x3284 PUSH2 0x327E PUSH32 0x0 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x32CE JUMPI JUMPDEST PUSH2 0x3292 JUMPI JUMP JUMPDEST PUSH2 0x329A PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x32CA PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x32D7 PUSH2 0x4175 JUMP JUMPDEST PUSH2 0x3309 PUSH2 0x3303 PUSH32 0x0 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ ISZERO PUSH2 0x328C JUMP JUMPDEST POP PUSH2 0x3319 PUSH2 0x3547 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3324 SWAP1 PUSH2 0x3310 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x332F SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x333B SWAP1 PUSH2 0x3326 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3347 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3353 DUP2 PUSH2 0x2B3 JUMP JUMPDEST SUB PUSH2 0x335A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x336B DUP3 PUSH2 0x334A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x3386 JUMPI PUSH2 0x3383 SWAP2 PUSH0 ADD PUSH2 0x335E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x33B9 PUSH1 0x20 PUSH2 0x33A3 PUSH2 0x339E DUP7 PUSH2 0x3332 JUMP JUMPDEST PUSH2 0x333E JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x33B1 PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x33C9 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x3499 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x342A JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x33EB JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x3426 SWAP1 PUSH2 0x33F7 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x3445 PUSH2 0x343F PUSH2 0x343A PUSH2 0xC08 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST SWAP2 PUSH2 0x2B3 JUMP JUMPDEST SUB PUSH2 0x345A JUMPI PUSH2 0x3455 SWAP3 SWAP4 POP PUSH2 0x419F JUMP JUMPDEST PUSH2 0x33E9 JUMP JUMPDEST PUSH2 0x3495 DUP5 PUSH2 0x3466 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x2C3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x34BB SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x34C2 JUMPI JUMPDEST PUSH2 0x34B3 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x336D JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x33D6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34A9 JUMP JUMPDEST PUSH2 0x34D2 ADDRESS PUSH2 0x323D JUMP JUMPDEST PUSH2 0x3504 PUSH2 0x34FE PUSH32 0x0 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST SUB PUSH2 0x350B JUMPI JUMP JUMPDEST PUSH2 0x3513 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3543 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x354F PUSH2 0xCF0 JUMP JUMPDEST PUSH2 0x3568 PUSH2 0x3562 PUSH2 0x355D PUSH2 0x4228 JUMP JUMPDEST PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST SUB PUSH2 0x356F JUMPI JUMP JUMPDEST PUSH2 0x35B1 PUSH2 0x357A PUSH2 0x4228 JUMP JUMPDEST PUSH2 0x3582 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x35BE SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x35D9 PUSH2 0x35D4 PUSH2 0x35E0 SWAP3 PUSH2 0x35B5 JUMP JUMPDEST PUSH2 0x35C1 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xF44 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x35EC PUSH2 0x3650 JUMP JUMPDEST PUSH2 0x3604 PUSH2 0x35FA PUSH0 DUP4 ADD PUSH2 0xCE3 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x35C4 JUMP JUMPDEST SWAP1 PUSH2 0x3638 PUSH2 0x3632 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x35B5 JUMP JUMPDEST SWAP2 PUSH2 0x35B5 JUMP JUMPDEST SWAP2 PUSH2 0x3641 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x364B DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36AF PUSH2 0x36AA PUSH2 0x36B4 SWAP3 PUSH2 0x3698 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36C2 PUSH2 0x1A0 PUSH2 0x190 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MSTORE JUMP JUMPDEST PUSH2 0x36D1 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36DD SWAP1 PUSH2 0x36C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x36F0 JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST CALLDATALOAD PUSH2 0x36FF DUP2 PUSH2 0x52A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x370B SWAP1 PUSH2 0x527 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x3738 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST PUSH2 0x3746 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3752 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x375E SWAP1 PUSH2 0x3749 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x376A SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x377C DUP2 PUSH2 0x376D JUMP JUMPDEST SUB PUSH2 0x3783 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x3794 DUP3 PUSH2 0x3773 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x37AF JUMPI PUSH2 0x37AC SWAP2 PUSH0 ADD PUSH2 0x3787 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x37C8 PUSH2 0x37C3 PUSH2 0x37CD SWAP3 PUSH2 0x376D JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP7 SWAP6 SWAP4 SWAP5 SWAP2 SWAP5 PUSH2 0x37DF PUSH2 0x1080 JUMP JUMPDEST POP DUP2 DUP9 DUP8 SWAP1 DUP8 SWAP2 PUSH2 0x37EF SWAP2 PUSH2 0x1C65 JUMP JUMPDEST PUSH2 0x37F8 SWAP3 PUSH2 0x423A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SWAP3 DUP10 DUP9 PUSH2 0x3807 SWAP2 PUSH2 0x108B JUMP JUMPDEST SWAP1 DUP4 SWAP1 DUP12 DUP11 DUP8 PUSH0 DUP1 PUSH0 DUP1 SWAP2 PUSH0 SWAP4 DUP8 DUP8 PUSH2 0x381F SWAP2 PUSH2 0x108B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x382A SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH2 0x3833 SWAP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x383C SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP6 DUP9 DUP9 PUSH2 0x3848 SWAP2 PUSH2 0x108B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3853 SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH2 0x385C SWAP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x3865 SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP8 DUP10 DUP2 PUSH2 0x3871 SWAP2 PUSH2 0x108B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x387C SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH2 0x3885 SWAP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x388E SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP10 SWAP1 PUSH2 0x3899 SWAP2 PUSH2 0x108B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x38A4 SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH2 0x38AD SWAP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x38B6 SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP10 SWAP11 PUSH2 0x38C0 PUSH2 0x36B7 JUMP JUMPDEST SWAP13 PUSH0 DUP15 ADD SWAP1 PUSH2 0x38CE SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH1 0x20 DUP14 ADD SWAP1 PUSH2 0x38DC SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x38EA SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x38F3 SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0x60 DUP12 ADD SWAP1 PUSH2 0x3901 SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x390A SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0x80 DUP11 ADD SWAP1 PUSH2 0x3918 SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3921 SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD SWAP1 PUSH2 0x392F SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3938 SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0xC0 DUP9 ADD SWAP1 PUSH2 0x3946 SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x394F SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x395D SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x100 DUP7 ADD SWAP1 PUSH2 0x396C SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x120 DUP6 ADD SWAP1 PUSH2 0x397B SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD SWAP1 PUSH2 0x398A SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD SWAP1 PUSH2 0x3999 SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD SWAP1 PUSH2 0x39A8 SWAP2 PUSH2 0x36C5 JUMP JUMPDEST SWAP4 SWAP2 SWAP4 SWAP7 PUSH0 PUSH2 0x39B6 SWAP1 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP11 PUSH2 0x39D5 PUSH2 0x39CF PUSH2 0x39CA DUP5 SWAP4 DUP7 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x3F78 JUMPI PUSH2 0x3A07 PUSH1 0x20 PUSH2 0x39F1 PUSH2 0x39EC PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x39FF PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3A17 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3F73 JUMPI PUSH2 0x3A32 SWAP2 PUSH0 SWAP2 PUSH2 0x3F45 JUMPI JUMPDEST POP PUSH2 0x36D4 JUMP JUMPDEST SWAP1 PUSH2 0x3A47 PUSH2 0x3A42 DUP14 DUP6 DUP5 SWAP2 PUSH2 0x112A JUMP JUMPDEST PUSH2 0x113F JUMP JUMPDEST DUP10 PUSH2 0x3A5C PUSH2 0x3A57 DUP12 DUP9 DUP7 SWAP2 PUSH2 0x36E0 JUMP JUMPDEST PUSH2 0x36F5 JUMP JUMPDEST PUSH2 0x3A9B PUSH2 0x3A72 PUSH2 0x3A6D DUP12 DUP8 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH1 0x20 PUSH2 0x3A85 PUSH2 0x3A80 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x3A93 PUSH2 0xD2 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3AAB PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3F40 JUMPI DUP16 SWAP3 PUSH2 0x3AD4 SWAP3 PUSH2 0x3ACD SWAP3 PUSH0 SWAP3 PUSH2 0x3F10 JUMPI JUMPDEST POP PUSH2 0x1CA4 JUMP JUMPDEST DUP13 SWAP1 PUSH2 0x1D06 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x3AE8 PUSH2 0x3AE2 DUP4 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT SWAP3 DUP4 PUSH0 EQ PUSH2 0x3F02 JUMPI SWAP1 PUSH2 0x3AFB SWAP2 PUSH2 0x1ED6 JUMP JUMPDEST JUMPDEST SWAP2 DUP1 DUP1 PUSH2 0x3EE8 JUMPI JUMPDEST PUSH0 EQ PUSH2 0x3E18 JUMPI POP POP PUSH2 0x3B1A PUSH2 0x3B43 SWAP2 DUP12 SWAP1 PUSH2 0x1CA4 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x3B2D PUSH2 0x3B28 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x3B3B PUSH2 0xD2 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3B53 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3E13 JUMPI PUSH2 0x3B6F SWAP3 PUSH0 SWAP3 PUSH2 0x3DE3 JUMPI JUMPDEST POP PUSH2 0x1D06 JUMP JUMPDEST SWAP4 PUSH2 0x3B91 DUP14 PUSH2 0x3B8B PUSH1 0x60 DUP9 SWAP3 ADD SWAP2 PUSH2 0x3B86 DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST DUP3 PUSH2 0x3BA4 PUSH2 0x3B9E DUP5 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x3CBC JUMPI POP POP PUSH1 0x20 PUSH2 0x3BC4 PUSH2 0x3BBF PUSH2 0x3BDA SWAP6 SWAP4 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x3761 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3BD2 PUSH2 0xD2 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3BEA PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3CB7 JUMPI PUSH2 0x3C5B PUSH2 0x3C1B DUP14 SWAP3 PUSH2 0x3C15 PUSH2 0x3C60 SWAP6 PUSH2 0x3C84 SWAP9 PUSH0 SWAP2 PUSH2 0x3C89 JUMPI JUMPDEST POP PUSH2 0x37B4 JUMP JUMPDEST SWAP1 PUSH2 0x4561 JUMP JUMPDEST JUMPDEST PUSH2 0x3C42 DUP6 PUSH2 0x3C3D PUSH2 0x100 DUP7 ADD MLOAD SWAP2 PUSH2 0x3C36 PUSH1 0x80 DUP9 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3C54 PUSH1 0x80 PUSH2 0x120 DUP6 ADD MLOAD SWAP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3C7E PUSH1 0x80 DUP12 ADD PUSH2 0x3C78 PUSH2 0x3C73 DUP3 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x3702 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x39B7 JUMP JUMPDEST PUSH2 0x3CAA SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3CB0 JUMPI JUMPDEST PUSH2 0x3CA2 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 PUSH2 0x3C0F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3C98 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP1 PUSH2 0x3CCA PUSH2 0x3CFC SWAP4 SWAP3 PUSH2 0x373D JUMP JUMPDEST SWAP1 PUSH4 0x248391FF PUSH1 0x20 PUSH2 0x3CE6 PUSH2 0x3CE1 DUP5 SWAP7 SWAP10 SWAP5 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x3761 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3CF4 PUSH2 0xD2 JUMP JUMPDEST SWAP8 DUP9 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3D0C PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x3DDE JUMPI PUSH2 0x3D3B PUSH2 0x3D4F SWAP4 PUSH2 0x3D35 PUSH1 0x20 SWAP9 PUSH2 0x3D5A SWAP5 PUSH0 SWAP2 PUSH2 0x3DB1 JUMPI JUMPDEST POP PUSH2 0x37B4 JUMP JUMPDEST SWAP1 PUSH2 0x4561 JUMP JUMPDEST PUSH2 0x3D43 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1170 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x1832 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3DAC JUMPI DUP11 PUSH2 0x3C5B PUSH2 0x3C84 SWAP5 PUSH2 0x3C60 SWAP4 PUSH0 SWAP2 PUSH2 0x3D7E JUMPI JUMPDEST POP PUSH2 0x3C1C JUMP JUMPDEST PUSH2 0x3D9F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3DA5 JUMPI JUMPDEST PUSH2 0x3D97 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x3D78 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3D8D JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x3DD1 SWAP2 POP DUP11 RETURNDATASIZE DUP2 GT PUSH2 0x3DD7 JUMPI JUMPDEST PUSH2 0x3DC9 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 PUSH2 0x3D2F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DBF JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x3E05 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3E0C JUMPI JUMPDEST PUSH2 0x3DFD DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x3B69 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DF3 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH2 0x3C84 SWAP6 POP PUSH2 0x3E2C SWAP2 SWAP4 POP ISZERO PUSH2 0xDE9 JUMP JUMPDEST DUP1 PUSH2 0x3ECE JUMPI JUMPDEST PUSH2 0x3E3E JUMPI JUMPDEST POP POP PUSH2 0x3C7F JUMP JUMPDEST PUSH2 0x3EA4 DUP3 PUSH2 0x3E65 PUSH2 0x3EA9 SWAP5 PUSH2 0x3E5F PUSH1 0xC0 DUP7 ADD SWAP2 PUSH2 0x3E5A DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3E8B DUP6 PUSH2 0x3E86 PUSH2 0x140 DUP7 ADD MLOAD SWAP2 PUSH2 0x3E7F PUSH1 0xA0 DUP9 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3E9D PUSH1 0xA0 PUSH2 0x160 DUP6 ADD MLOAD SWAP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3EC7 PUSH1 0xA0 DUP12 ADD PUSH2 0x3EC1 PUSH2 0x3EBC DUP3 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x3702 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH0 DUP11 PUSH2 0x3E37 JUMP JUMPDEST POP DUP2 PUSH2 0x3EE2 PUSH2 0x3EDC DUP10 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x3E32 JUMP JUMPDEST POP DUP3 PUSH2 0x3EFC PUSH2 0x3EF6 DUP13 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x3B04 JUMP JUMPDEST PUSH2 0x3F0B SWAP2 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x3AFC JUMP JUMPDEST PUSH2 0x3F32 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3F39 JUMPI JUMPDEST PUSH2 0x3F2A DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x3AC7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F20 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x3F66 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3F6C JUMPI JUMPDEST PUSH2 0x3F5E DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x3A2C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F54 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP POP POP POP POP POP POP POP SWAP1 SWAP2 POP PUSH2 0x3F9E PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x3F98 PUSH1 0x80 DUP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x4593 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x3FBF PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x3FB9 PUSH1 0x80 DUP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x4593 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x3FE0 PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x3FDA PUSH1 0xA0 DUP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x4593 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0x4001 PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x3FFB PUSH1 0xA0 DUP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x4593 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x4012 PUSH2 0x4608 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x401C PUSH2 0x400A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x402F SWAP1 PUSH2 0x402A PUSH2 0x4608 JUMP JUMPDEST PUSH2 0x4031 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x403A SWAP1 PUSH2 0x46E0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4045 SWAP1 PUSH2 0x401E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x407D SWAP1 PUSH2 0x4053 PUSH2 0x1ED2 JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x4067 PUSH2 0x4062 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x4075 PUSH2 0xD2 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x408D PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x4170 JUMPI PUSH2 0x40CD SWAP3 PUSH0 SWAP2 PUSH2 0x4142 JUMPI JUMPDEST POP SWAP1 PUSH1 0x20 PUSH2 0x40B7 PUSH2 0x40B2 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x40C5 PUSH2 0xD2 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x40DD PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x413D JUMPI PUSH2 0x4101 PUSH2 0x4107 SWAP3 PUSH2 0x410C SWAP6 PUSH0 SWAP2 PUSH2 0x410F JUMPI JUMPDEST POP DUP5 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x1D06 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4130 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4136 JUMPI JUMPDEST PUSH2 0x4128 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x40FA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x411E JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x4163 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4169 JUMPI JUMPDEST PUSH2 0x415B DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x40A2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4151 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x417D PUSH2 0xCAD JUMP JUMPDEST POP PUSH2 0x4198 PUSH0 PUSH2 0x4192 PUSH2 0x418D PUSH2 0xC08 JUMP JUMPDEST PUSH2 0x46EB JUMP JUMPDEST ADD PUSH2 0xCE3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x41A9 DUP3 PUSH2 0x46EE JUMP JUMPDEST DUP2 PUSH2 0x41D4 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x35B5 JUMP JUMPDEST SWAP1 PUSH2 0x41DD PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x41E7 DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x41F3 DUP2 PUSH2 0x419B JUMP JUMPDEST PUSH2 0x4205 PUSH2 0x41FF PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x4219 JUMPI PUSH2 0x4215 SWAP2 PUSH2 0x47FE JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x4223 PUSH2 0x4763 JUMP JUMPDEST PUSH2 0x4217 JUMP JUMPDEST PUSH2 0x4230 PUSH2 0xCAD JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x4245 PUSH2 0x1ED2 JUMP JUMPDEST POP PUSH2 0x424E PUSH2 0x4235 JUMP JUMPDEST POP PUSH2 0x427B PUSH1 0x20 PUSH2 0x4265 PUSH2 0x4260 DUP8 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x3761 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x4273 PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x428B PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4521 JUMPI PUSH0 SWAP2 PUSH2 0x44F3 JUMPI JUMPDEST POP SWAP1 PUSH2 0x42A8 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP5 PUSH2 0x42D5 PUSH1 0x20 PUSH2 0x42BF PUSH2 0x42BA PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x42CD PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x42E5 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x44EE JUMPI PUSH2 0x4300 SWAP2 PUSH0 SWAP2 PUSH2 0x44C0 JUMPI JUMPDEST POP PUSH2 0x36D4 JUMP JUMPDEST SWAP4 PUSH2 0x4312 PUSH2 0x430D DUP3 PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x10AB JUMP JUMPDEST SWAP5 PUSH2 0x431C PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP8 JUMPDEST DUP9 PUSH2 0x4339 PUSH2 0x4333 PUSH2 0x432E DUP7 PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x44B4 JUMPI PUSH2 0x4352 PUSH2 0x434D DUP5 DUP12 SWAP1 PUSH2 0x1C77 JUMP JUMPDEST PUSH2 0x1C97 JUMP JUMPDEST PUSH2 0x4364 PUSH2 0x435E DUP7 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x43E3 JUMPI PUSH2 0x439C PUSH2 0x43DD SWAP2 PUSH2 0x4396 PUSH2 0x4387 PUSH2 0x4382 DUP14 DUP11 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x4390 DUP11 PUSH2 0x37B4 JUMP JUMPDEST SWAP1 PUSH2 0x482D JUMP JUMPDEST SWAP1 PUSH2 0x1891 JUMP JUMPDEST SWAP9 PUSH2 0x43D7 PUSH2 0x43C5 PUSH2 0x43B6 PUSH2 0x43B1 DUP10 DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x43BF DUP11 PUSH2 0x37B4 JUMP JUMPDEST SWAP1 PUSH2 0x482D JUMP JUMPDEST PUSH2 0x43D2 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST JUMPDEST PUSH2 0x10EE JUMP JUMPDEST SWAP8 PUSH2 0x431E JUMP JUMPDEST SWAP8 PUSH2 0x43ED DUP3 PUSH2 0x373D JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0xB27B5E75 SWAP3 PUSH2 0x4409 PUSH2 0x4404 DUP8 DUP6 SWAP1 PUSH2 0x1C77 JUMP JUMPDEST PUSH2 0x1C97 JUMP JUMPDEST SWAP1 PUSH2 0x4439 DUP9 SWAP6 PUSH2 0x4444 PUSH2 0x4425 PUSH2 0x4420 DUP14 DUP10 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x442D PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1170 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x1832 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x44AF JUMPI PUSH2 0x4469 PUSH2 0x447C SWAP2 PUSH2 0x43DD SWAP5 PUSH0 SWAP2 PUSH2 0x4481 JUMPI JUMPDEST POP SWAP12 DUP13 SWAP1 PUSH2 0x1891 JUMP JUMPDEST SWAP11 PUSH2 0x4477 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x43D8 JUMP JUMPDEST PUSH2 0x44A2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x44A8 JUMPI JUMPDEST PUSH2 0x449A DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x4460 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4490 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP6 SWAP8 POP POP POP POP POP POP SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x44E1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x44E7 JUMPI JUMPDEST PUSH2 0x44D9 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x42FA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x44CF JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x4514 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x451A JUMPI JUMPDEST PUSH2 0x450C DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 PUSH2 0x429D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4502 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x453D PUSH2 0x4538 PUSH2 0x4542 SWAP3 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x454E SWAP1 PUSH2 0x527 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x455C JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST SWAP1 PUSH2 0x458A PUSH2 0x4585 PUSH2 0x4590 SWAP4 PUSH2 0x4574 PUSH2 0x1ED2 JUMP JUMPDEST POP SWAP3 PUSH2 0x4580 PUSH1 0x12 PUSH2 0x4529 JUMP JUMPDEST PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x4545 JUMP JUMPDEST SWAP1 PUSH2 0x1D06 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x459E PUSH2 0x4235 JUMP JUMPDEST POP PUSH2 0x45A8 DUP4 PUSH2 0x10AB JUMP JUMPDEST SWAP2 PUSH2 0x45B1 PUSH2 0x1ED2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x45C5 PUSH2 0x45BF DUP8 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x4601 JUMPI PUSH2 0x45FC SWAP1 PUSH2 0x45F7 PUSH2 0x45E5 PUSH2 0x45E0 DUP7 DUP5 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x45F2 DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x45B2 JUMP JUMPDEST POP SWAP3 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x4619 PUSH2 0x4613 PUSH2 0x4863 JUMP JUMPDEST ISZERO PUSH2 0xDE9 JUMP JUMPDEST PUSH2 0x461F JUMPI JUMP JUMPDEST PUSH2 0x4627 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4657 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x466C SWAP1 PUSH2 0x4667 PUSH2 0x4608 JUMP JUMPDEST PUSH2 0x466E JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x4689 PUSH2 0x4683 PUSH2 0x467E PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH2 0x4699 JUMPI PUSH2 0x4697 SWAP1 PUSH2 0x35E4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x46DC PUSH2 0x46A5 PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x46AD PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x46E9 SWAP1 PUSH2 0x465B JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x4702 PUSH2 0x46FC PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x4724 JUMPI PUSH2 0x4722 SWAP1 PUSH0 PUSH2 0x471C PUSH2 0x4717 PUSH2 0xC08 JUMP JUMPDEST PUSH2 0x46EB JUMP JUMPDEST ADD PUSH2 0x35C4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x475F SWAP1 PUSH2 0x4730 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x4776 PUSH2 0x4770 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x477D JUMPI JUMP JUMPDEST PUSH2 0x4785 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x47B5 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x47D0 PUSH2 0x47CB DUP4 PUSH2 0x1A5 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x47F0 JUMPI PUSH2 0x47E5 RETURNDATASIZE PUSH2 0x47BE JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x47F8 PUSH2 0x47B9 JUMP JUMPDEST SWAP1 PUSH2 0x47EE JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x482A SWAP4 PUSH2 0x480C PUSH2 0x47B9 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x4821 PUSH2 0x47D5 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x4881 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4856 PUSH2 0x4851 PUSH2 0x485C SWAP4 PUSH2 0x4840 PUSH2 0x1ED2 JUMP JUMPDEST POP SWAP3 PUSH2 0x484C PUSH1 0x12 PUSH2 0x4529 JUMP JUMPDEST PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x4545 JUMP JUMPDEST SWAP1 PUSH2 0x1CA4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x486B PUSH2 0x485F JUMP JUMPDEST POP PUSH2 0x487E PUSH0 PUSH2 0x4878 PUSH2 0x3674 JUMP JUMPDEST ADD PUSH2 0xD2E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4895 SWAP1 PUSH2 0x488E PUSH2 0x47B9 JUMP JUMPDEST POP ISZERO PUSH2 0xDE9 JUMP JUMPDEST PUSH0 EQ PUSH2 0x48A1 JUMPI POP PUSH2 0x4925 JUMP JUMPDEST PUSH2 0x48AA DUP3 PUSH2 0x419B JUMP JUMPDEST PUSH2 0x48BC PUSH2 0x48B6 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ DUP1 PUSH2 0x490A JUMPI JUMPDEST PUSH2 0x48CB JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x4906 SWAP1 PUSH2 0x48D7 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x491F PUSH2 0x4919 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x48C3 JUMP JUMPDEST PUSH2 0x492E DUP2 PUSH2 0x419B JUMP JUMPDEST PUSH2 0x4940 PUSH2 0x493A PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x494F JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x4957 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4987 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xF8 SUB DUP11 0xA7 0xE5 SWAP9 CODESIZE MUL CODESIZE PUSH25 0xCB80CD8BCADA06C979107D1413DEE9EDA6BE8A489664736F6C PUSH4 0x43000819 STOP CALLER ","sourceMap":"2025:15474:51:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":676,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":5498,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_bytes":{"entryPoint":556,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":1189,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn_calldata":{"entryPoint":1483,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":1444,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_calldata":{"entryPoint":1546,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dynt_array_address_dyn_calldatat_array_uint256_dyn_calldatat_uint256t_addresst_address":{"entryPoint":1609,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_array_uint256_dynt_array_address_dyn_calldatat_array_uint256_dyn_calldatat_uint256t_addresst_addresst_address":{"entryPoint":2661,"id":null,"parameterSlots":2,"returnSlots":9},"abi_decode_available_length_array_address_dyn":{"entryPoint":7182,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_array_uint256_dyn":{"entryPoint":1357,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":467,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":6151,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":13165,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":6136,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":13150,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":4470,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":2580,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":5513,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":14230,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":1342,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":4485,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint64":{"entryPoint":1174,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":14215,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_uint256":{"entryPoint":1815,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":1054,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address":{"entryPoint":6520,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_address_uint256_address":{"entryPoint":6820,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":6194,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_address":{"entryPoint":6897,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":6749,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":1838,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32":{"entryPoint":707,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":694,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":967,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":5015,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":5002,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":2503,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":2454,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":6429,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_22e0":{"entryPoint":5974,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_3cfb":{"entryPoint":5802,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_3cfb8101ffb5b45d1fee438528d7c8b153342283cee4b5e0538ea281cf95efb6":{"entryPoint":5776,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_3df6":{"entryPoint":6658,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_3df622853d9993d00e3fc5cc3d6f05263ebe97c7953035690743a7c747a7eb15":{"entryPoint":6632,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_75938c37f2a197ee5a2d1c505157a5d50819cdc8fe37defeedd9f9da093a4a4d":{"entryPoint":6403,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_a431":{"entryPoint":5582,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bdc4":{"entryPoint":7799,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bdc4d1b5a34635db1950964d6ea0da8459119701fc9f5c687727f465a93a3cc8":{"entryPoint":7773,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_d638":{"entryPoint":7062,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_d638665e4ee5189a83a0d01e12fed339d580f1aefbc38b719d5d7db0431d7d14":{"entryPoint":7036,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ed07":{"entryPoint":7970,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_fa3f":{"entryPoint":7541,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_struct_RebalanceVars":{"entryPoint":1918,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_RebalanceVars_memory_ptr":{"entryPoint":2188,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple":{"entryPoint":625,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":1067,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":980,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral_22e0":{"entryPoint":6000,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_a431":{"entryPoint":5608,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_ed07":{"entryPoint":7995,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_fa3f":{"entryPoint":7567,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":3626,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":1783,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_to_uint256":{"entryPoint":6181,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint64":{"entryPoint":3613,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":4267,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_struct_struct_RebalanceVars":{"entryPoint":4053,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory":{"entryPoint":400,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_uint256_dyn":{"entryPoint":4239,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":18366,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":2310,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_struct_struct_RebalanceVars":{"entryPoint":4030,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_struct_struct_RebalanceVars_storage_ptr":{"entryPoint":14007,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_unbounded":{"entryPoint":210,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":7153,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":1286,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":421,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2275,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_uint256_dyn":{"entryPoint":1809,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":7283,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn_calldata":{"entryPoint":4235,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_array_uint256_dyn":{"entryPoint":1796,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_uint256_dyn_calldata":{"entryPoint":5893,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_bytes":{"entryPoint":16795,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":2430,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_uint256_dyn":{"entryPoint":1832,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_array_uint256_dyn":{"entryPoint":1800,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":2434,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_array_index_access_address_dyn_calldata":{"entryPoint":4394,"id":null,"parameterSlots":3,"returnSlots":1},"calldata_array_index_access_uint256_dyn_calldata":{"entryPoint":14048,"id":null,"parameterSlots":3,"returnSlots":1},"checked_add_uint256":{"entryPoint":6289,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":7430,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint256":{"entryPoint":17733,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":7332,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":7894,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":249,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":3561,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":691,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":3254,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":3348,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":836,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":3387,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_2_by":{"entryPoint":13976,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":17702,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":3173,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":4959,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":3044,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":224,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":1319,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":1141,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":14189,"id":null,"parameterSlots":1,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":3080,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":2408,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":13749,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Oracle":{"entryPoint":14036,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":3896,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Swapper":{"entryPoint":6796,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":13106,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":4440,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":14165,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_address_dyn_calldata_to_array_address_dyn":{"entryPoint":7269,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":3566,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1Rebalancer_to_address":{"entryPoint":6104,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Oracle_to_address":{"entryPoint":14141,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":955,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":3949,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_address":{"entryPoint":6808,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":13118,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":14177,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":4452,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":4990,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":12861,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":4306,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":3204,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":3052,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":3176,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":13979,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":4962,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":2397,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":17705,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":4931,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":943,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Oracle":{"entryPoint":14024,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":3884,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Swapper":{"entryPoint":6784,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":13094,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":4428,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":14153,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":915,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":3462,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint8_to_uint256":{"entryPoint":14260,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":456,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2372,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2443,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2527,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_checkRebalance":{"entryPoint":2212,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2610,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":1088,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":728,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_rebalance":{"entryPoint":2851,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":1001,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":1234,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":781,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":2912,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":630,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":861,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":3279,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":3354,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":5465,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":3400,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":18389,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":359,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":16444,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":16433,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":18144,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":18030,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":16404,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":13796,"id":193,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":13083,"id":8263,"parameterSlots":1,"returnSlots":0},"fun_calculateNetAmountAfterFee":{"entryPoint":16455,"id":9308,"parameterSlots":1,"returnSlots":1},"fun_calculateTotalValueScaled":{"entryPoint":16954,"id":9427,"parameterSlots":3,"returnSlots":2},"fun_checkInitializing":{"entryPoint":17928,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":18275,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":13513,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":13639,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":12873,"id":562,"parameterSlots":0,"returnSlots":0},"fun_checkRebalance":{"entryPoint":14288,"id":9227,"parameterSlots":7,"returnSlots":1},"fun_checkRebalance_8899":{"entryPoint":4577,"id":8899,"parameterSlots":8,"returnSlots":1},"fun_functionDelegateCall":{"entryPoint":18430,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":18155,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getImplementation":{"entryPoint":16757,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":13940,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":13904,"id":25,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":5454,"id":8237,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":5417,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":18531,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":16936,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_owner":{"entryPoint":3312,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":3136,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":3124,"id":null,"parameterSlots":1,"returnSlots":1},"fun_rebalance":{"entryPoint":8086,"id":8819,"parameterSlots":9,"returnSlots":0},"fun_reinitialize":{"entryPoint":4018,"id":8254,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":3996,"id":null,"parameterSlots":2,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":3235,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":3216,"id":null,"parameterSlots":0,"returnSlots":0},"fun_resize":{"entryPoint":17811,"id":9272,"parameterSlots":2,"returnSlots":1},"fun_revert":{"entryPoint":18725,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_scaleDown":{"entryPoint":17761,"id":9469,"parameterSlots":2,"returnSlots":1},"fun_scaleUp":{"entryPoint":18477,"id":9448,"parameterSlots":2,"returnSlots":1},"fun_setImplementation":{"entryPoint":18158,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership":{"entryPoint":12850,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":12736,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":16799,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":13195,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":3008,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":2987,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":18561,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2419,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_registry":{"entryPoint":899,"id":8182,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":912,"id":null,"parameterSlots":1,"returnSlots":1},"increment_uint256":{"entryPoint":14082,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":4334,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":7287,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":4531,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":5036,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_notDelegated":{"entryPoint":3024,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":18011,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":16414,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":16394,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":13072,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":3155,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":12717,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":2967,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":3647,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":6244,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":7385,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4349,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":314,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":13761,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":3578,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":3961,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":3490,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":4415,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_uint256":{"entryPoint":14069,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":7319,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_uint256":{"entryPoint":6091,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":885,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":3299,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":3374,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":5485,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":3420,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":6453,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_22e0":{"entryPoint":6024,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_3cfb":{"entryPoint":5826,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_3df6":{"entryPoint":6682,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_a431":{"entryPoint":5632,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_bdc4":{"entryPoint":7823,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_d638":{"entryPoint":7086,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ed07":{"entryPoint":8019,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_fa3f":{"entryPoint":7591,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":1479,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":296,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":2963,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":1315,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":300,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":220,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":672,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":216,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":4515,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":304,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":3047,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":4464,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":3525,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":3249,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":3342,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":204,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":832,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_22e0bc82af7552ff09569e32b077c5e658042efbf4a0a12c0f4aa0941cd09973":{"entryPoint":5897,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2333,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3cfb8101ffb5b45d1fee438528d7c8b153342283cee4b5e0538ea281cf95efb6":{"entryPoint":5699,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3df622853d9993d00e3fc5cc3d6f05263ebe97c7953035690743a7c747a7eb15":{"entryPoint":6555,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_75938c37f2a197ee5a2d1c505157a5d50819cdc8fe37defeedd9f9da093a4a4d":{"entryPoint":6326,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_a4318adf7f04cc498a1800af589aaef22c18cab0fcf5793a53cc1d7c1f15eddd":{"entryPoint":5543,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_bdc4d1b5a34635db1950964d6ea0da8459119701fc9f5c687727f465a93a3cc8":{"entryPoint":7658,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d638665e4ee5189a83a0d01e12fed339d580f1aefbc38b719d5d7db0431d7d14":{"entryPoint":6959,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ed0717930e92357ad775d5bd33d822fac3af124d34d31006ec65eb453f0b8735":{"entryPoint":7931,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_fa3ff9055d43007e19f71d67cbd181cc9389823de020de302cf03a989eafc123":{"entryPoint":7464,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":3433,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":3531,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":3908,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":13764,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":3581,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":3964,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":3493,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":261,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":6116,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":13130,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":1322,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":1154,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":14195,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_array_uint256_dyn":{"entryPoint":14021,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint256":{"entryPoint":4563,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_uint256":{"entryPoint":4262,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_array_uint256_dyn":{"entryPoint":4048,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_address":{"entryPoint":3245,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_uint256_dyn":{"entryPoint":16949,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":18527,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":18361,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":3020,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_struct_RebalanceVars":{"entryPoint":4224,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":7890,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_uint256":{"entryPoint":4044,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":12890},{"length":32,"start":13023},{"length":32,"start":13530}]},"linkReferences":{},"object":"60806040526004361015610013575b610b93565b61001d5f356100cc565b80634f1ef286146100c757806352d1902d146100c2578063715018a6146100bd5780637b103999146100b85780638da5cb5b146100b35780638f2248bc146100ae578063997146f5146100a9578063ad3cb1cc146100a4578063c4d66de81461009f578063f0bf77141461009a5763f2fde38b0361000e57610b60565b610b23565b610a32565b6109df565b6108a4565b6104d2565b610440565b6103e9565b61030d565b6102d8565b610276565b60e01c90565b60405190565b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b610102906100e0565b90565b61010e816100f9565b0361011557565b5f80fd5b9050359061012682610105565b565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061017190610130565b810190811067ffffffffffffffff82111761018b57604052565b61013a565b906101a361019c6100d2565b9283610167565b565b67ffffffffffffffff81116101c3576101bf602091610130565b0190565b61013a565b90825f939282370152565b909291926101e86101e3826101a5565b610190565b9381855260208501908284011161020457610202926101c8565b565b61012c565b9080601f8301121561022757816020610224933591016101d3565b90565b610128565b91909160408184031261026c57610245835f8301610119565b92602082013567ffffffffffffffff8111610267576102649201610209565b90565b6100dc565b6100d8565b5f0190565b61028a61028436600461022c565b90610bc0565b6102926100d2565b8061029c81610271565b0390f35b5f80fd5b5f9103126102ae57565b6100d8565b90565b6102bf906102b3565b9052565b91906102d6905f602085019401906102b6565b565b34610308576102e83660046102a4565b6103046102f3610c40565b6102fb6100d2565b918291826102c3565b0390f35b6102a0565b3461033b5761031d3660046102a4565b610325610ca3565b61032d6100d2565b8061033781610271565b0390f35b6102a0565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61036d9060086103729302610340565b610344565b90565b90610380915461035d565b90565b61038d5f80610375565b90565b90565b6103a76103a26103ac926100e0565b610390565b6100e0565b90565b6103b890610393565b90565b6103c4906103af565b90565b6103d0906103bb565b9052565b91906103e7905f602085019401906103c7565b565b34610419576103f93660046102a4565b610415610404610383565b61040c6100d2565b918291826103d4565b0390f35b6102a0565b610427906100f9565b9052565b919061043e905f6020850194019061041e565b565b34610470576104503660046102a4565b61046c61045b610cf0565b6104636100d2565b9182918261042b565b0390f35b6102a0565b67ffffffffffffffff1690565b61048b81610475565b0361049257565b5f80fd5b905035906104a382610482565b565b91906040838203126104cd57806104c16104ca925f8601610119565b93602001610496565b90565b6100d8565b34610501576104eb6104e53660046104a5565b90610fb2565b6104f36100d2565b806104fd81610271565b0390f35b6102a0565b67ffffffffffffffff811161051e5760208091020190565b61013a565b5f80fd5b90565b61053381610527565b0361053a57565b5f80fd5b9050359061054b8261052a565b565b9092919261056261055d82610506565b610190565b938185526020808601920283019281841161059f57915b8383106105865750505050565b60208091610594848661053e565b815201920191610579565b610523565b9080601f830112156105c2578160206105bf9335910161054d565b90565b610128565b5f80fd5b909182601f830112156106055781359167ffffffffffffffff83116106005760200192602083028401116105fb57565b610523565b6105c7565b610128565b909182601f830112156106445781359167ffffffffffffffff831161063f57602001926020830284011161063a57565b610523565b6105c7565b610128565b60c0818303126106f2575f81013567ffffffffffffffff81116106ed57826106729183016105a4565b92602082013567ffffffffffffffff81116106e857836106939184016105cb565b929093604082013567ffffffffffffffff81116106e357816106b691840161060a565b9290936106e06106c9846060850161053e565b936106d78160808601610119565b9360a001610119565b90565b6100dc565b6100dc565b6100dc565b6100d8565b61070090610527565b9052565b5190565b60209181520190565b60200190565b90610724816020936106f7565b0190565b60200190565b9061074b61074561073e84610704565b8093610708565b92610711565b905f5b81811061075b5750505090565b90919261077461076e6001928651610717565b94610728565b910191909161074e565b6108899161018061087761086361084f61083b6107cd6101a087016107a95f8a01515f8a01906106f7565b6107bb60208a015160208a01906106f7565b604089015188820360408a015261072e565b6107df606089015160608901906106f7565b6107f1608089015160808901906106f7565b61080360a089015160a08901906106f7565b61081560c089015160c08901906106f7565b61082760e089015160e08901906106f7565b61010088015187820361010089015261072e565b61012087015186820361012088015261072e565b61014086015185820361014087015261072e565b61016085015184820361016086015261072e565b9201519061018081840391015261072e565b90565b6108a19160208201915f81840391015261077e565b90565b346108de576108da6108c96108ba366004610649565b969590959491949392936111e1565b6108d16100d2565b9182918261088c565b0390f35b6102a0565b67ffffffffffffffff8111610901576108fd602091610130565b0190565b61013a565b90610918610913836108e3565b610190565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61094e6005610906565b9061095b6020830161091d565b565b610965610944565b90565b61097061095d565b90565b61097b610968565b90565b5190565b60209181520190565b90825f9392825e0152565b6109b56109be6020936109c3936109ac8161097e565b93848093610982565b9586910161098b565b610130565b0190565b6109dc9160208201915f818403910152610996565b90565b34610a0f576109ef3660046102a4565b610a0b6109fa610973565b610a026100d2565b918291826109c7565b0390f35b6102a0565b90602082820312610a2d57610a2a915f01610119565b90565b6100d8565b34610a6057610a4a610a45366004610a14565b61154e565b610a526100d2565b80610a5c81610271565b0390f35b6102a0565b919060e083820312610b1e575f83013567ffffffffffffffff8111610b195781610a909185016105a4565b92602081013567ffffffffffffffff8111610b145782610ab19183016105cb565b929093604083013567ffffffffffffffff8111610b0f5782610ad491850161060a565b929093610ae4826060830161053e565b92610b0c610af58460808501610119565b93610b038160a08601610119565b9360c001610119565b90565b6100dc565b6100dc565b6100dc565b6100d8565b34610b5b57610b45610b36366004610a65565b97969096959195949294611f96565b610b4d6100d2565b80610b5781610271565b0390f35b6102a0565b34610b8e57610b78610b73366004610a14565b613232565b610b806100d2565b80610b8a81610271565b0390f35b6102a0565b5f80fd5b90610ba991610ba4613249565b610bab565b565b90610bbe91610bb98161331b565b61338b565b565b90610bca91610b97565b565b5f90565b610be190610bdc6134c9565b610c34565b90565b90565b5f1b90565b610c00610bfb610c0592610be4565b610be7565b6102b3565b90565b610c317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610bec565b90565b50610c3d610c08565b90565b610c50610c4b610bcc565b610bd0565b90565b610c5b613547565b610c63610c90565b565b90565b610c7c610c77610c8192610c65565b610390565b6100e0565b90565b610c8d90610c68565b90565b610ca1610c9c5f610c84565b6135e4565b565b610cab610c53565b565b5f90565b5f1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b610cdb610ce091610cb1565b610cb6565b90565b610ced9054610ccf565b90565b610cf8610cad565b50610d0b5f610d05613650565b01610ce3565b90565b60401c90565b60ff1690565b610d26610d2b91610d0e565b610d14565b90565b610d389054610d1a565b90565b67ffffffffffffffff1690565b610d54610d5991610cb1565b610d3b565b90565b610d669054610d48565b90565b90610d7c67ffffffffffffffff91610be7565b9181191691161790565b610d9a610d95610d9f92610475565b610390565b610475565b90565b90565b90610dba610db5610dc192610d86565b610da2565b8254610d69565b9055565b60401b90565b90610ddf68ff000000000000000091610dc5565b9181191691161790565b151590565b610df790610de9565b90565b90565b90610e12610e0d610e1992610dee565b610dfa565b8254610dcb565b9055565b610e2690610475565b9052565b9190610e3d905f60208501940190610e1d565b565b908091610e4a613674565b90610e565f8301610d2e565b8015610f07575b610ecb57610e9092610e8791610e75865f8601610da5565b610e8260015f8601610dfd565b610f9c565b5f809101610dfd565b610ec67fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291610ebd6100d2565b91829182610e2a565b0390a1565b610ed36100d2565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280610f0360048201610271565b0390fd5b50610f135f8301610d5c565b610f25610f1f86610475565b91610475565b1015610e5d565b610f3590610393565b90565b610f4190610f2c565b90565b90610f6373ffffffffffffffffffffffffffffffffffffffff91610be7565b9181191691161790565b610f7690610f2c565b90565b90565b90610f91610f8c610f9892610f6d565b610f79565b8254610f44565b9055565b610fb09150610faa90610f38565b5f610f7c565b565b90610fbc91610e3f565b565b610fc96101a0610190565b90565b5f90565b606090565b602090818080808080808080808080610fec610fbe565b9d8e610ff6610fcc565b815201611001610fcc565b81520161100c610fd0565b815201611017610fcc565b815201611022610fcc565b81520161102d610fcc565b815201611038610fcc565b815201611043610fcc565b81520161104e610fd0565b815201611059610fd0565b815201611064610fd0565b81520161106f610fd0565b81520161107a610fd0565b81525050565b611088610fd5565b90565b5090565b906110a161109c83610506565b610190565b918252565b369037565b906110d06110b88361108f565b926020806110c68693610506565b92019103906110a6565b565b6110e66110e16110eb92610c65565b610390565b610527565b90565b60016110fa9101610527565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919081101561113a576020020190565b6110fd565b3561114981610105565b90565b61115590610393565b90565b6111619061114c565b90565b61116d906103af565b90565b60e01b90565b905051906111838261052a565b565b9060208282031261119e5761119b915f01611176565b90565b6100d8565b6111ab6100d2565b3d5f823e3d90fd5b906111bd82610704565b8110156111ce576020809102010190565b6110fd565b906111dd90610527565b9052565b979296919490936111f0611080565b506112046111ff86889061108b565b6110ab565b9861120e81610704565b61122061121a5f6110d2565b91610527565b145f1461133057506112315f6110d2565b5b8061124f611249611244898b9061108b565b610527565b91610527565b1015611313576112a990602061127f61127a6112756112708b8d879161112a565b61113f565b611158565b611164565b6370a082319061129e8c926112926100d2565b96879485938493611170565b83526004830161042b565b03915afa91821561130e576112db926112d6915f916112e0575b506112d18d918490926111b3565b6111d3565b6110ee565b611232565b611301915060203d8111611307575b6112f98183610167565b810190611185565b5f6112c3565b503d6112ef565b6111a3565b50929761132d979295919496505b959091929394956137d0565b90565b9093985061132d97929591949650611321565b61135761135261135c92610c65565b610390565b610475565b90565b90565b61137661137161137b9261135f565b610390565b610475565b90565b611387906103af565b90565b61139390611362565b9052565b91906113aa905f6020850194019061138a565b565b6113b4613674565b906113c96113c35f8401610d2e565b15610de9565b906113d55f8401610d5c565b806113e86113e25f611343565b91610475565b1480611522575b906114036113fd6001611362565b91610475565b14806114fa575b611415909115610de9565b90816114e9575b506114ad576114459061143a6114326001611362565b5f8601610da5565b8261149b575b611529565b61144d575b50565b61145a905f809101610dfd565b60016114927fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916114896100d2565b91829182611397565b0390a15f61144a565b6114a860015f8601610dfd565b611440565b6114b56100d2565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806114e560048201610271565b0390fd5b6114f4915015610de9565b5f61141c565b506114156115073061137e565b3b61151a6115145f6110d2565b91610527565b14905061140a565b50826113ef565b61154661154c91611538614014565b6115413361403c565b610f38565b5f610f7c565b565b611557906113ac565b565b61156561156a91610cb1565b610344565b90565b6115779054611559565b90565b9050519061158782610105565b565b906020828203126115a25761159f915f0161157a565b90565b6100d8565b5f7f4e6f206173736574732070726f76696465640000000000000000000000000000910152565b6115db6012602092610982565b6115e4816115a7565b0190565b6115fd9060208101905f8183039101526115ce565b90565b1561160757565b61160f6100d2565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061163f600482016115e8565b0390fd5b60207f656e677468000000000000000000000000000000000000000000000000000000917f4d69736d6174636865642062616c616e63657320616e6420617373657473206c5f8201520152565b61169d6025604092610982565b6116a681611643565b0190565b6116bf9060208101905f818303910152611690565b90565b156116c957565b6116d16100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611701600482016116aa565b0390fd5b5090565b60207f6e67746800000000000000000000000000000000000000000000000000000000917f4d69736d617463686564207765696768747320616e6420617373657473206c655f8201520152565b6117636024604092610982565b61176c81611709565b0190565b6117859060208101905f818303910152611756565b90565b1561178f57565b6117976100d2565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806117c760048201611770565b0390fd5b6117d59051610527565b90565b6117e1906103af565b90565b6117ed81610de9565b036117f457565b5f80fd5b90505190611805826117e4565b565b906020828203126118205761181d915f016117f8565b90565b6100d8565b61182e90610527565b9052565b60409061185b611862949695939661185160608401985f85019061041e565b602083019061041e565b0190611825565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6118a06118a691939293610527565b92610527565b82018092116118b157565b611864565b60207f6967687420416d6f756e74212100000000000000000000000000000000000000917f42616c756e695631526562616c616e6365723a20556e646572204f76657277655f8201520152565b611910602d604092610982565b611919816118b6565b0190565b6119329060208101905f818303910152611903565b90565b1561193c57565b6119446100d2565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806119746004820161191d565b0390fd5b91602061199992949361199260408201965f83019061041e565b019061041e565b565b60207f646572204f76657277656967687420416d6f756e740000000000000000000000917f42616c756e695631526562616c616e6365723a20416c6c6f77616e636520756e5f8201520152565b6119f56035604092610982565b6119fe8161199b565b0190565b611a179060208101905f8183039101526119e8565b90565b15611a2157565b611a296100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611a5960048201611a02565b0390fd5b916020611a7e929493611a7760408201965f83019061041e565b0190611825565b565b611a8990610393565b90565b611a9590611a80565b90565b611aa1906103af565b90565b90959492611aef94611ade611ae892611ad4608096611aca60a088019c5f89019061041e565b602087019061041e565b604085019061041e565b6060830190611825565b019061041e565b565b611b26611b2d94611b1c606094989795611b12608086019a5f87019061041e565b602085019061041e565b6040830190611825565b019061041e565b565b60207f7420626173652061737365742062616c616e6365000000000000000000000000917f42616c756e695631526562616c616e6365723a2020496e73756666696369656e5f8201520152565b611b896034604092610982565b611b9281611b2f565b0190565b611bab9060208101905f818303910152611b7c565b90565b15611bb557565b611bbd6100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611bed60048201611b96565b0390fd5b67ffffffffffffffff8111611c095760208091020190565b61013a565b90929192611c23611c1e82611bf1565b610190565b9381855260208086019202830192818411611c6057915b838310611c475750505050565b60208091611c558486610119565b815201920191611c3a565b610523565b611c70913691611c0e565b90565b5190565b90611c8182611c73565b811015611c92576020809102010190565b6110fd565b611ca190516100f9565b90565b611cb3611cb991939293610527565b92610527565b91611cc5838202610527565b928184041490151715611cd457565b611864565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b611d12611d1891610527565b91610527565b908115611d23570490565b611cd9565b60207f79207175616e74697479206973207a65726f0000000000000000000000000000917f42616c756e695631526562616c616e6365723a20526562616c616e63652062755f8201520152565b611d826032604092610982565b611d8b81611d28565b0190565b611da49060208101905f818303910152611d75565b90565b15611dae57565b611db66100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611de660048201611d8f565b0390fd5b60407f6c616e6365000000000000000000000000000000000000000000000000000000917f42616c756e695631526562616c616e6365723a20526562616c616e63652062755f8201527f79207175616e746974792065786365656473206261736520617373657420626160208201520152565b611e6a6045606092610982565b611e7381611dea565b0190565b611e8c9060208101905f818303910152611e5d565b90565b15611e9657565b611e9e6100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611ece60048201611e77565b0390fd5b5f90565b611ee5611eeb91939293610527565b92610527565b8203918211611ef657565b611864565b5f7f42616c616e636520756e64657220616d6f756e7420746f207472616e73666572910152565b611f2e60208092610982565b611f3781611efb565b0190565b611f509060208101905f818303910152611f22565b90565b15611f5a57565b611f626100d2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611f9260048201611f3b565b0390fd5b969593919290989794611fcb6020611fb5611fb05f61156d565b6103bb565b636c9c007890611fc36100d2565b938492611170565b82528180611fdb60048201610271565b03915afa9081156131a8575f9161317a575b5097612015611ffd8c879061108b565b61200f6120095f6110d2565b91610527565b11611600565b6120448b61203e61203861203361202b86610704565b938a9061108b565b610527565b91610527565b146116c2565b6120758b61206f61206961206461205c888a90611705565b938a9061108b565b610527565b91610527565b14611788565b61207e81610704565b61209061208a5f6110d2565b91610527565b14613065575b906120ac939291928b92869091929389956137d0565b966120b65f6110d2565b5b806120d76120d16120cc6101008d0151610704565b610527565b91610527565b1015612763576120f56120f06101208b015183906111b3565b6117cb565b6121076121015f6110d2565b91610527565b1161211c575b612117905b6110ee565b6120b7565b612148612143838b61213d6121386101008993015187906111b3565b6117cb565b9161112a565b61113f565b90898261215d612157896100f9565b916100f9565b1461267e57806121be6121b86121b36121ae6101206121a461219f6101806121c59901516121996121946101008b01518d906111b3565b6117cb565b906111b3565b6117cb565b95015187906111b3565b6117cb565b610527565b91610527565b1015611935565b6121d66121d183611158565b611164565b602063dd62ed3e9187906122046121ec306117d8565b9461220f6121f86100d2565b96879586948594611170565b845260048401611978565b03915afa80156126795761225161224b6122466122418f9461012090612258975f9161264b575b5095015187906111b3565b6117cb565b610527565b91610527565b1015611a1a565b89602061226c61226785611158565b611164565b6323b872dd906122b05f8a936122bb61229c61229761012061228d306117d8565b9a01518b906111b3565b6117cb565b6122a46100d2565b98899788968795611170565b855260048501611832565b03925af180156126465761261a575b506122f760206122e16122dc5f61156d565b6103bb565b6382755ebb906122ef6100d2565b938492611170565b8252818061230760048201610271565b03915afa908115612615575f916125e7575b5061232b61232684611158565b611164565b9260208c63095ea7b39561236a5f61235261234d610120899601518a906111b3565b6117cb565b9861237561235e6100d2565b9a8b9687958694611170565b845260048401611a5d565b03925af19182156125e25789948d936125b6575b50888b8361239f612399836100f9565b916100f9565b145f146124af575050906124225f6123c16123bc60209695611a8c565b611a98565b9261242d632d6bc8ea91958d996123f36101406123eb6123e68d6101208701516111b3565b6117cb565b930151610704565b6124056123ff876110d2565b91610527565b14851461249f57905b6124166100d2565b9a8b9889978896611170565b865260048601611af1565b03925af191821561249a5761211792612464915f9161246c575b5061245e60e08d0191612459836117cb565b611891565b906111d3565b5b905061210d565b61248d915060203d8111612493575b6124858183610167565b810190611185565b5f612447565b503d61247b565b6111a3565b506124a9306117d8565b9061240e565b925f90612537876020976124cf6124ca61252c979c98611a8c565b611a98565b966124fd6101406124f56124f0635efaaebb989c9f966101208701516111b3565b6117cb565b930151610704565b61250f612509886110d2565b91610527565b1486146125a657915b6125206100d2565b9b8c998a988997611170565b875260048701611aa4565b03925af19182156125a1576121179261256e915f91612573575b5061256860e08d0191612563836117cb565b611891565b906111d3565b612465565b612594915060203d811161259a575b61258c8183610167565b810190611185565b5f612551565b503d612582565b6111a3565b506125b0306117d8565b91612518565b6125d69060203d81116125db575b6125ce8183610167565b810190611807565b612389565b503d6125c4565b6111a3565b612608915060203d811161260e575b6126008183610167565b810190611589565b5f612319565b503d6125f6565b6111a3565b61263a9060203d811161263f575b6126328183610167565b810190611807565b6122ca565b503d612628565b6111a3565b61266c915060203d8111612672575b6126648183610167565b810190611185565b5f612236565b503d61265a565b6111a3565b9161269261268d602092611158565b611164565b6323b872dd906126d65f89936126e16126c26126bd6101206126b3306117d8565b9b01518a906111b3565b6117cb565b6126ca6100d2565b998a9788968795611170565b855260048501611832565b03925af191821561275e5761211792612732575b5061272d61271161270c6101208d015184906111b3565b6117cb565b61272760e08d0191612722836117cb565b611891565b906111d3565b612112565b6127529060203d8111612757575b61274a8183610167565b810190611807565b6126f5565b503d612740565b6111a3565b509392969491506127b390602061278161277c8a611158565b611164565b6370a08231906127a8612793306117d8565b9261279c6100d2565b96879485938493611170565b83526004830161042b565b03915afa8015613060576127f7925f91613032575b50946127f2866127eb6127e56127e060e08c016117cb565b610527565b91610527565b1015611bae565b611c65565b95612824602061280e6128095f61156d565b6103bb565b634f4608a29061281c6100d2565b938492611170565b8252818061283460048201610271565b03915afa90811561302d575f91612fff575b50966128515f6110d2565b5b8061287261286c6128676101408b0151610704565b610527565b91610527565b1015612ff4578690898361289461288f61016086015185906111b3565b6117cb565b6128a66128a05f6110d2565b91610527565b116128be575b50506128b991505b6110ee565b612852565b61292461291261293d9361290d6129086101606128fe6128f98b6128f36128ee8d6101406129369d9401516111b3565b6117cb565b90611c77565b611c97565b99015188906111b3565b6117cb565b611ca4565b61291e60c08d016117cb565b90611d06565b61293060e08c016117cb565b90611ca4565b8b90611d06565b9186928161295361294d886100f9565b916100f9565b14612f66576129748161296e6129685f6110d2565b91610527565b11611da7565b6129918161298a6129848c610527565b91610527565b1115611e8f565b6129bd60206129a76129a25f61156d565b6103bb565b6382755ebb906129b56100d2565b938492611170565b825281806129cd60048201610271565b03915afa908115612f61575f91612f33575b506129f16129ec88611158565b611164565b90602063095ea7b3928290612a195f8796612a24612a0d6100d2565b98899687958694611170565b845260048401611a5d565b03925af1918215612f2e57602092612f03575b50612a40611ed2565b5083612a54612a4e8b6100f9565b916100f9565b145f14612e6a57612a67612a6c91611a8c565b611a98565b632d6bc8ea90612a9b5f8a93612aa68897612a86306117d8565b90612a8f6100d2565b998a9889978896611170565b865260048601611af1565b03925af1908115612e65575f91612e37575b50925b612ac88460e08c016111d3565b612adc612ad485614047565b948590611ed6565b612af0612ae882614047565b918290611ed6565b91612b396020612b07612b0287611158565b611164565b6370a0823190612b2e612b19306117d8565b92612b226100d2565b95869485938493611170565b83526004830161042b565b03915afa8015612e3257612b68915f91612e04575b50612b61612b5b89610527565b91610527565b1015611f53565b612b946020612b7e612b795f61156d565b6103bb565b6304cc732590612b8c6100d2565b938492611170565b82528180612ba460048201610271565b03915afa908115612dff575f91612dd1575b5091612be46020612bce612bc95f61156d565b6103bb565b633b19e84a90612bdc6100d2565b938492611170565b82528180612bf460048201610271565b03915afa8015612dcc576020915f91612d9f575b5097612c1b612c1688611158565b611164565b612c3e5f63a9059cbb969396612c49612c326100d2565b98899687958694611170565b845260048401611a5d565b03925af1918215612d9a57602092612d6f575b50612c6e612c6986611158565b611164565b612c915f63a9059cbb959395612c9c612c856100d2565b97889687958694611170565b845260048401611a5d565b03925af18015612d6a57602093612cc192612cbc92612d3f575b50611158565b611164565b612ce45f63a9059cbb969396612cef612cd86100d2565b98899687958694611170565b845260048401611a5d565b03925af1918215612d3a576128b992612d0e575b5087915089836128ac565b612d2e9060203d8111612d33575b612d268183610167565b810190611807565b612d03565b503d612d1c565b6111a3565b612d5e90863d8111612d63575b612d568183610167565b810190611807565b612cb6565b503d612d4c565b6111a3565b612d8e90833d8111612d93575b612d868183610167565b810190611807565b612c5c565b503d612d7c565b6111a3565b612dbf9150823d8111612dc5575b612db78183610167565b810190611589565b5f612c08565b503d612dad565b6111a3565b612df2915060203d8111612df8575b612dea8183610167565b810190611589565b5f612bb6565b503d612de0565b6111a3565b612e25915060203d8111612e2b575b612e1d8183610167565b810190611185565b5f612b4e565b503d612e13565b6111a3565b612e58915060203d8111612e5e575b612e508183610167565b810190611185565b5f612ab8565b503d612e46565b6111a3565b612e76612e7b91611a8c565b611a98565b635efaaebb90612eac5f8a93612eb78d978990612e97306117d8565b91612ea06100d2565b9a8b998a988997611170565b875260048701611aa4565b03925af1908115612efe575f91612ed0575b5092612abb565b612ef1915060203d8111612ef7575b612ee98183610167565b810190611185565b5f612ec9565b503d612edf565b6111a3565b612f2290833d8111612f27575b612f1a8183610167565b810190611807565b612a37565b503d612f10565b6111a3565b612f54915060203d8111612f5a575b612f4c8183610167565b810190611589565b5f6129df565b503d612f42565b6111a3565b60209150612f7b612f7687611158565b611164565b612f9e5f63a9059cbb969396612fa9612f926100d2565b98899687958694611170565b845260048401611a5d565b03925af1918215612fef576128b992612fc3575b506128b4565b612fe39060203d8111612fe8575b612fdb8183610167565b810190611807565b612fbd565b503d612fd1565b6111a3565b505050505050509050565b613020915060203d8111613026575b6130188183610167565b810190611185565b5f612846565b503d61300e565b6111a3565b613053915060203d8111613059575b61304b8183610167565b810190611185565b5f6127c8565b503d613041565b6111a3565b9995916130795f9a9699959894929a6110d2565b5b8061309761309161308c8b8d9061108b565b610527565b91610527565b1015613161576130f09060208b6130c96130c46130bf6130ba8f8f90889161112a565b61113f565b611158565b611164565b6130e56370a082316130d96100d2565b96879485938493611170565b83526004830161042b565b03915afa91821561315c57613123928e61311e925f92613128575b5061311990918490926111b3565b6111d3565b6110ee565b61307a565b61311991925061314e9060203d8111613155575b6131468183610167565b810190611185565b919061310b565b503d61313c565b6111a3565b5090919599986120ac9397949895999091929350612096565b61319b915060203d81116131a1575b6131938183610167565b810190611589565b5f611fed565b503d613189565b6111a3565b6131be906131b9613547565b6131c0565b565b806131db6131d56131d05f610c84565b6100f9565b916100f9565b146131eb576131e9906135e4565b565b61322e6131f75f610c84565b6131ff6100d2565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b61323b906131ad565b565b613246906103af565b90565b6132523061323d565b61328461327e7f00000000000000000000000000000000000000000000000000000000000000006100f9565b916100f9565b1480156132ce575b61329257565b61329a6100d2565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806132ca60048201610271565b0390fd5b506132d7614175565b6133096133037f00000000000000000000000000000000000000000000000000000000000000006100f9565b916100f9565b141561328c565b50613319613547565b565b61332490613310565b565b61332f90610393565b90565b61333b90613326565b90565b613347906103af565b90565b613353816102b3565b0361335a57565b5f80fd5b9050519061336b8261334a565b565b9060208282031261338657613383915f0161335e565b90565b6100d8565b91906133b960206133a361339e86613332565b61333e565b6352d1902d906133b16100d2565b938492611170565b825281806133c960048201610271565b03915afa80915f92613499575b50155f1461342a5750509060016133eb57505b565b613426906133f76100d2565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b928361344561343f61343a610c08565b6102b3565b916102b3565b0361345a5761345592935061419f565b6133e9565b613495846134666100d2565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016102c3565b0390fd5b6134bb91925060203d81116134c2575b6134b38183610167565b81019061336d565b905f6133d6565b503d6134a9565b6134d23061323d565b6135046134fe7f00000000000000000000000000000000000000000000000000000000000000006100f9565b916100f9565b0361350b57565b6135136100d2565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061354360048201610271565b0390fd5b61354f610cf0565b61356861356261355d614228565b6100f9565b916100f9565b0361356f57565b6135b161357a614228565b6135826100d2565b9182917f118cdaa70000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b6135be906103af565b90565b90565b906135d96135d46135e0926135b5565b6135c1565b8254610f44565b9055565b6135ec613650565b6136046135fa5f8301610ce3565b915f8491016135c4565b906136386136327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936135b5565b916135b5565b916136416100d2565b8061364b81610271565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b90565b6136af6136aa6136b492613698565b610390565b610527565b90565b6136c26101a0610190565b90565b52565b6136d190610393565b90565b6136dd906136c8565b90565b91908110156136f0576020020190565b6110fd565b356136ff8161052a565b90565b61370b90610527565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146137385760010190565b611864565b613746906103af565b90565b61375290610393565b90565b61375e90613749565b90565b61376a906103af565b90565b60ff1690565b61377c8161376d565b0361378357565b5f80fd5b9050519061379482613773565b565b906020828203126137af576137ac915f01613787565b90565b6100d8565b6137c86137c36137cd9261376d565b610390565b610527565b90565b909695939491946137df611080565b508188879087916137ef91611c65565b6137f89261423a565b9190919289886138079161108b565b9083908b8a875f805f80915f93878761381f9161108b565b600261382a9061369b565b61383391611ca4565b61383c906110ab565b9588886138489161108b565b60026138539061369b565b61385c91611ca4565b613865906110ab565b9789816138719161108b565b600261387c9061369b565b61388591611ca4565b61388e906110ab565b99906138999161108b565b60026138a49061369b565b6138ad91611ca4565b6138b6906110ab565b999a6138c06136b7565b9c5f8e01906138ce916111d3565b60208d01906138dc916111d3565b60408c01906138ea916136c5565b6138f3906110d2565b60608b0190613901916111d3565b61390a906110d2565b60808a0190613918916111d3565b613921906110d2565b60a089019061392f916111d3565b613938906110d2565b60c0880190613946916111d3565b61394f906110d2565b60e087019061395d916111d3565b61010086019061396c916136c5565b61012085019061397b916136c5565b61014084019061398a916136c5565b610160830190613999916136c5565b6101808201906139a8916136c5565b939193965f6139b6906110d2565b5b8a6139d56139cf6139ca8493869061108b565b610527565b91610527565b1015613f7857613a0760206139f16139ec5f61156d565b6103bb565b63bb3ba04c906139ff6100d2565b938492611170565b82528180613a1760048201610271565b03915afa8015613f7357613a32915f91613f45575b506136d4565b90613a47613a428d85849161112a565b61113f565b89613a5c613a578b8886916136e0565b6136f5565b613a9b613a72613a6d8b87906111b3565b6117cb565b6020613a85613a805f61156d565b6103bb565b634f4608a290613a936100d2565b948592611170565b82528180613aab60048201610271565b03915afa918215613f40578f92613ad492613acd925f92613f10575b50611ca4565b8c90611d06565b9182613ae8613ae283610527565b91610527565b1192835f14613f025790613afb91611ed6565b5b918080613ee8575b5f14613e18575050613b1a613b43918b90611ca4565b6020613b2d613b285f61156d565b6103bb565b634f4608a290613b3b6100d2565b948592611170565b82528180613b5360048201610271565b03915afa908115613e1357613b6f925f92613de3575b50611d06565b93613b918d613b8b606088920191613b86836117cb565b611891565b906111d3565b82613ba4613b9e846100f9565b916100f9565b145f14613cbc5750506020613bc4613bbf613bda9593613755565b613761565b63313ce56790613bd26100d2565b958692611170565b82528180613bea60048201610271565b03915afa908115613cb757613c5b613c1b8d92613c15613c6095613c84985f91613c89575b506137b4565b90614561565b5b613c4285613c3d61010086015191613c36608088016117cb565b90926111b3565b6111d3565b613c54608061012085015194016117cb565b90926111b3565b6111d3565b613c7e60808b01613c78613c73826117cb565b613702565b906111d3565b5b6110ee565b6139b7565b613caa915060203d8111613cb0575b613ca28183610167565b810190613796565b5f613c0f565b503d613c98565b6111a3565b90613cca613cfc939261373d565b9063248391ff6020613ce6613ce184969994613755565b613761565b63313ce56790613cf46100d2565b978892611170565b82528180613d0c60048201610271565b03915afa948515613dde57613d3b613d4f93613d35602098613d5a945f91613db1575b506137b4565b90614561565b613d436100d2565b98899687958695611170565b855260048501611832565b03915afa918215613dac578a613c5b613c8494613c60935f91613d7e575b50613c1c565b613d9f915060203d8111613da5575b613d978183610167565b810190611185565b5f613d78565b503d613d8d565b6111a3565b613dd191508a3d8111613dd7575b613dc98183610167565b810190613796565b5f613d2f565b503d613dbf565b6111a3565b613e0591925060203d8111613e0c575b613dfd8183610167565b810190611185565b905f613b69565b503d613df3565b6111a3565b909250613c849550613e2c91935015610de9565b80613ece575b613e3e575b5050613c7f565b613ea482613e65613ea994613e5f60c0860191613e5a836117cb565b611891565b906111d3565b613e8b85613e8661014086015191613e7f60a088016117cb565b90926111b3565b6111d3565b613e9d60a061016085015194016117cb565b90926111b3565b6111d3565b613ec760a08b01613ec1613ebc826117cb565b613702565b906111d3565b5f8a613e37565b5081613ee2613edc89610527565b91610527565b11613e32565b5082613efc613ef68c610527565b91610527565b11613b04565b613f0b91611ed6565b613afc565b613f3291925060203d8111613f39575b613f2a8183610167565b810190611185565b905f613ac7565b503d613f20565b6111a3565b613f66915060203d8111613f6c575b613f5e8183610167565b810190611589565b5f613a2c565b503d613f54565b6111a3565b5050505050505050909150613f9e610100820151613f98608084016117cb565b90614593565b610100820152613fbf610120820151613fb9608084016117cb565b90614593565b610120820152613fe0610140820151613fda60a084016117cb565b90614593565b610140820152614001610160820151613ffb60a084016117cb565b90614593565b61016082015290565b614012614608565b565b61401c61400a565b565b61402f9061402a614608565b614031565b565b61403a906146e0565b565b6140459061401e565b565b61407d90614053611ed2565b5060206140676140625f61156d565b6103bb565b634f4608a2906140756100d2565b948592611170565b8252818061408d60048201610271565b03915afa8015614170576140cd925f91614142575b509060206140b76140b25f61156d565b6103bb565b6385462d6f906140c56100d2565b958692611170565b825281806140dd60048201610271565b03915afa90811561413d576141016141079261410c955f9161410f575b5084611ed6565b90611ca4565b611d06565b90565b614130915060203d8111614136575b6141288183610167565b810190611185565b5f6140fa565b503d61411e565b6111a3565b614163915060203d8111614169575b61415b8183610167565b810190611185565b5f6140a2565b503d614151565b6111a3565b61417d610cad565b506141985f61419261418d610c08565b6146eb565b01610ce3565b90565b5190565b906141a9826146ee565b816141d47fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916135b5565b906141dd6100d2565b806141e781610271565b0390a26141f38161419b565b6142056141ff5f6110d2565b91610527565b115f1461421957614215916147fe565b505b565b5050614223614763565b614217565b614230610cad565b503390565b606090565b929192614245611ed2565b5061424e614235565b5061427b602061426561426087613755565b613761565b63313ce567906142736100d2565b938492611170565b8252818061428b60048201610271565b03915afa908115614521575f916144f3575b50906142a85f6110d2565b946142d560206142bf6142ba5f61156d565b6103bb565b63bb3ba04c906142cd6100d2565b938492611170565b825281806142e560048201610271565b03915afa80156144ee57614300915f916144c0575b506136d4565b9361431261430d82611c73565b6110ab565b9461431c5f6110d2565b975b8861433961433361432e86611c73565b610527565b91610527565b10156144b45761435261434d848b90611c77565b611c97565b61436461435e866100f9565b916100f9565b145f146143e35761439c6143dd916143966143876143828d8a6111b3565b6117cb565b6143908a6137b4565b9061482d565b90611891565b986143d76143c56143b66143b18985906111b3565b6117cb565b6143bf8a6137b4565b9061482d565b6143d28a918490926111b3565b6111d3565b5b6110ee565b9761431e565b976143ed8261373d565b90602063b27b5e7592614409614404878590611c77565b611c97565b9061443988956144446144256144208d89906111b3565b6117cb565b61442d6100d2565b98899687958695611170565b855260048501611832565b03915afa80156144af5761446961447c916143dd945f91614481575b509b8c90611891565b9a6144778a918490926111b3565b6111d3565b6143d8565b6144a2915060203d81116144a8575b61449a8183610167565b810190611185565b5f614460565b503d614490565b6111a3565b95975050505050509190565b6144e1915060203d81116144e7575b6144d98183610167565b810190611589565b5f6142fa565b503d6144cf565b6111a3565b614514915060203d811161451a575b61450c8183610167565b810190613796565b5f61429d565b503d614502565b6111a3565b90565b61453d61453861454292614526565b610390565b610527565b90565b61454e90610527565b604d811161455c57600a0a90565b611864565b9061458a61458561459093614574611ed2565b50926145806012614529565b611ed6565b614545565b90611d06565b90565b91909161459e614235565b506145a8836110ab565b916145b1611ed2565b5b806145c56145bf87610527565b91610527565b1015614601576145fc906145f76145e56145e08684906111b3565b6117cb565b6145f287918490926111b3565b6111d3565b6110ee565b6145b2565b5092505090565b614619614613614863565b15610de9565b61461f57565b6146276100d2565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061465760048201610271565b0390fd5b61466c90614667614608565b61466e565b565b8061468961468361467e5f610c84565b6100f9565b916100f9565b1461469957614697906135e4565b565b6146dc6146a55f610c84565b6146ad6100d2565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b6146e99061465b565b565b90565b803b6147026146fc5f6110d2565b91610527565b1461472457614722905f61471c614717610c08565b6146eb565b016135c4565b565b61475f906147306100d2565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b346147766147705f6110d2565b91610527565b1161477d57565b6147856100d2565b7fb398979f000000000000000000000000000000000000000000000000000000008152806147b560048201610271565b0390fd5b606090565b906147d06147cb836101a5565b610190565b918252565b3d5f146147f0576147e53d6147be565b903d5f602084013e5b565b6147f86147b9565b906147ee565b5f8061482a9361480c6147b9565b508390602081019051915af4906148216147d5565b90919091614881565b90565b9061485661485161485c93614840611ed2565b509261484c6012614529565b611ed6565b614545565b90611ca4565b90565b5f90565b61486b61485f565b5061487e5f614878613674565b01610d2e565b90565b906148959061488e6147b9565b5015610de9565b5f146148a15750614925565b6148aa8261419b565b6148bc6148b65f6110d2565b91610527565b148061490a575b6148cb575090565b614906906148d76100d2565b9182917f9996b3150000000000000000000000000000000000000000000000000000000083526004830161042b565b0390fd5b50803b61491f6149195f6110d2565b91610527565b146148c3565b61492e8161419b565b61494061493a5f6110d2565b91610527565b115f1461494f57805190602001fd5b6149576100d2565b7f1425ea420000000000000000000000000000000000000000000000000000000081528061498760048201610271565b0390fdfea26469706673582212203af8038aa7e59838023878cb80cd8bcada06c979107d1413dee9eda6be8a489664736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xB93 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0xCC JUMP JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x997146F5 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA4 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xF0BF7714 EQ PUSH2 0x9A JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xB60 JUMP JUMPDEST PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x8A4 JUMP JUMPDEST PUSH2 0x4D2 JUMP JUMPDEST PUSH2 0x440 JUMP JUMPDEST PUSH2 0x3E9 JUMP JUMPDEST PUSH2 0x30D JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST PUSH2 0x276 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x102 SWAP1 PUSH2 0xE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10E DUP2 PUSH2 0xF9 JUMP JUMPDEST SUB PUSH2 0x115 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x126 DUP3 PUSH2 0x105 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x171 SWAP1 PUSH2 0x130 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x18B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST SWAP1 PUSH2 0x1A3 PUSH2 0x19C PUSH2 0xD2 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x167 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C3 JUMPI PUSH2 0x1BF PUSH1 0x20 SWAP2 PUSH2 0x130 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x1E8 PUSH2 0x1E3 DUP3 PUSH2 0x1A5 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x204 JUMPI PUSH2 0x202 SWAP3 PUSH2 0x1C8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x227 JUMPI DUP2 PUSH1 0x20 PUSH2 0x224 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x1D3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x26C JUMPI PUSH2 0x245 DUP4 PUSH0 DUP4 ADD PUSH2 0x119 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x267 JUMPI PUSH2 0x264 SWAP3 ADD PUSH2 0x209 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x28A PUSH2 0x284 CALLDATASIZE PUSH1 0x4 PUSH2 0x22C JUMP JUMPDEST SWAP1 PUSH2 0xBC0 JUMP JUMPDEST PUSH2 0x292 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x29C DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x2AE JUMPI JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2BF SWAP1 PUSH2 0x2B3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2D6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x2B6 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x308 JUMPI PUSH2 0x2E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0x304 PUSH2 0x2F3 PUSH2 0xC40 JUMP JUMPDEST PUSH2 0x2FB PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2C3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST CALLVALUE PUSH2 0x33B JUMPI PUSH2 0x31D CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0x325 PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0x32D PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x337 DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x36D SWAP1 PUSH1 0x8 PUSH2 0x372 SWAP4 MUL PUSH2 0x340 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x380 SWAP2 SLOAD PUSH2 0x35D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38D PUSH0 DUP1 PUSH2 0x375 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3A7 PUSH2 0x3A2 PUSH2 0x3AC SWAP3 PUSH2 0xE0 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0xE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B8 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3C4 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3D0 SWAP1 PUSH2 0x3BB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3E7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3C7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x419 JUMPI PUSH2 0x3F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0x415 PUSH2 0x404 PUSH2 0x383 JUMP JUMPDEST PUSH2 0x40C PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH2 0x427 SWAP1 PUSH2 0xF9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x43E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x470 JUMPI PUSH2 0x450 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0x46C PUSH2 0x45B PUSH2 0xCF0 JUMP JUMPDEST PUSH2 0x463 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x475 JUMP JUMPDEST SUB PUSH2 0x492 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x4A3 DUP3 PUSH2 0x482 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x4CD JUMPI DUP1 PUSH2 0x4C1 PUSH2 0x4CA SWAP3 PUSH0 DUP7 ADD PUSH2 0x119 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x496 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST CALLVALUE PUSH2 0x501 JUMPI PUSH2 0x4EB PUSH2 0x4E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST SWAP1 PUSH2 0xFB2 JUMP JUMPDEST PUSH2 0x4F3 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x4FD DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x51E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x533 DUP2 PUSH2 0x527 JUMP JUMPDEST SUB PUSH2 0x53A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x54B DUP3 PUSH2 0x52A JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x562 PUSH2 0x55D DUP3 PUSH2 0x506 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x59F JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x586 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x594 DUP5 DUP7 PUSH2 0x53E JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x579 JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x5C2 JUMPI DUP2 PUSH1 0x20 PUSH2 0x5BF SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x54D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x605 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x600 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x5FB JUMPI JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH2 0x5C7 JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x644 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x63F JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x63A JUMPI JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH2 0x5C7 JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH1 0xC0 DUP2 DUP4 SUB SLT PUSH2 0x6F2 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6ED JUMPI DUP3 PUSH2 0x672 SWAP2 DUP4 ADD PUSH2 0x5A4 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6E8 JUMPI DUP4 PUSH2 0x693 SWAP2 DUP5 ADD PUSH2 0x5CB JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6E3 JUMPI DUP2 PUSH2 0x6B6 SWAP2 DUP5 ADD PUSH2 0x60A JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0x6E0 PUSH2 0x6C9 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x53E JUMP JUMPDEST SWAP4 PUSH2 0x6D7 DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x119 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x119 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x700 SWAP1 PUSH2 0x527 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x724 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x6F7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x74B PUSH2 0x745 PUSH2 0x73E DUP5 PUSH2 0x704 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x708 JUMP JUMPDEST SWAP3 PUSH2 0x711 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x75B JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x774 PUSH2 0x76E PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x717 JUMP JUMPDEST SWAP5 PUSH2 0x728 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x74E JUMP JUMPDEST PUSH2 0x889 SWAP2 PUSH2 0x180 PUSH2 0x877 PUSH2 0x863 PUSH2 0x84F PUSH2 0x83B PUSH2 0x7CD PUSH2 0x1A0 DUP8 ADD PUSH2 0x7A9 PUSH0 DUP11 ADD MLOAD PUSH0 DUP11 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x7BB PUSH1 0x20 DUP11 ADD MLOAD PUSH1 0x20 DUP11 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD DUP9 DUP3 SUB PUSH1 0x40 DUP11 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST PUSH2 0x7DF PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x60 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x7F1 PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x80 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x803 PUSH1 0xA0 DUP10 ADD MLOAD PUSH1 0xA0 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x815 PUSH1 0xC0 DUP10 ADD MLOAD PUSH1 0xC0 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x827 PUSH1 0xE0 DUP10 ADD MLOAD PUSH1 0xE0 DUP10 ADD SWAP1 PUSH2 0x6F7 JUMP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD DUP8 DUP3 SUB PUSH2 0x100 DUP10 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST PUSH2 0x120 DUP8 ADD MLOAD DUP7 DUP3 SUB PUSH2 0x120 DUP9 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST PUSH2 0x140 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH2 0x140 DUP8 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x160 DUP7 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 PUSH2 0x180 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x72E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8A1 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x77E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8DE JUMPI PUSH2 0x8DA PUSH2 0x8C9 PUSH2 0x8BA CALLDATASIZE PUSH1 0x4 PUSH2 0x649 JUMP JUMPDEST SWAP7 SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP5 SWAP4 SWAP3 SWAP4 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0x8D1 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x88C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x901 JUMPI PUSH2 0x8FD PUSH1 0x20 SWAP2 PUSH2 0x130 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST SWAP1 PUSH2 0x918 PUSH2 0x913 DUP4 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x94E PUSH1 0x5 PUSH2 0x906 JUMP JUMPDEST SWAP1 PUSH2 0x95B PUSH1 0x20 DUP4 ADD PUSH2 0x91D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x965 PUSH2 0x944 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x970 PUSH2 0x95D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x97B PUSH2 0x968 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x9B5 PUSH2 0x9BE PUSH1 0x20 SWAP4 PUSH2 0x9C3 SWAP4 PUSH2 0x9AC DUP2 PUSH2 0x97E JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x982 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x98B JUMP JUMPDEST PUSH2 0x130 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x9DC SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x996 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA0F JUMPI PUSH2 0x9EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2A4 JUMP JUMPDEST PUSH2 0xA0B PUSH2 0x9FA PUSH2 0x973 JUMP JUMPDEST PUSH2 0xA02 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x9C7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xA2D JUMPI PUSH2 0xA2A SWAP2 PUSH0 ADD PUSH2 0x119 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST CALLVALUE PUSH2 0xA60 JUMPI PUSH2 0xA4A PUSH2 0xA45 CALLDATASIZE PUSH1 0x4 PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH2 0xA52 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0xA5C DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xE0 DUP4 DUP3 SUB SLT PUSH2 0xB1E JUMPI PUSH0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB19 JUMPI DUP2 PUSH2 0xA90 SWAP2 DUP6 ADD PUSH2 0x5A4 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB14 JUMPI DUP3 PUSH2 0xAB1 SWAP2 DUP4 ADD PUSH2 0x5CB JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB0F JUMPI DUP3 PUSH2 0xAD4 SWAP2 DUP6 ADD PUSH2 0x60A JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0xAE4 DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x53E JUMP JUMPDEST SWAP3 PUSH2 0xB0C PUSH2 0xAF5 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x119 JUMP JUMPDEST SWAP4 PUSH2 0xB03 DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x119 JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0x119 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST CALLVALUE PUSH2 0xB5B JUMPI PUSH2 0xB45 PUSH2 0xB36 CALLDATASIZE PUSH1 0x4 PUSH2 0xA65 JUMP JUMPDEST SWAP8 SWAP7 SWAP1 SWAP7 SWAP6 SWAP2 SWAP6 SWAP5 SWAP3 SWAP5 PUSH2 0x1F96 JUMP JUMPDEST PUSH2 0xB4D PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0xB57 DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST CALLVALUE PUSH2 0xB8E JUMPI PUSH2 0xB78 PUSH2 0xB73 CALLDATASIZE PUSH1 0x4 PUSH2 0xA14 JUMP JUMPDEST PUSH2 0x3232 JUMP JUMPDEST PUSH2 0xB80 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0xB8A DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0xBA9 SWAP2 PUSH2 0xBA4 PUSH2 0x3249 JUMP JUMPDEST PUSH2 0xBAB JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xBBE SWAP2 PUSH2 0xBB9 DUP2 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x338B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xBCA SWAP2 PUSH2 0xB97 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xBE1 SWAP1 PUSH2 0xBDC PUSH2 0x34C9 JUMP JUMPDEST PUSH2 0xC34 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0xC00 PUSH2 0xBFB PUSH2 0xC05 SWAP3 PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0xBE7 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC31 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0xBEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0xC3D PUSH2 0xC08 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC50 PUSH2 0xC4B PUSH2 0xBCC JUMP JUMPDEST PUSH2 0xBD0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC5B PUSH2 0x3547 JUMP JUMPDEST PUSH2 0xC63 PUSH2 0xC90 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC7C PUSH2 0xC77 PUSH2 0xC81 SWAP3 PUSH2 0xC65 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0xE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC8D SWAP1 PUSH2 0xC68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA1 PUSH2 0xC9C PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x35E4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCAB PUSH2 0xC53 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xCDB PUSH2 0xCE0 SWAP2 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0xCB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCED SWAP1 SLOAD PUSH2 0xCCF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCF8 PUSH2 0xCAD JUMP JUMPDEST POP PUSH2 0xD0B PUSH0 PUSH2 0xD05 PUSH2 0x3650 JUMP JUMPDEST ADD PUSH2 0xCE3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD26 PUSH2 0xD2B SWAP2 PUSH2 0xD0E JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD38 SWAP1 SLOAD PUSH2 0xD1A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD54 PUSH2 0xD59 SWAP2 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0xD3B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD66 SWAP1 SLOAD PUSH2 0xD48 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD7C PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xBE7 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xD9A PUSH2 0xD95 PUSH2 0xD9F SWAP3 PUSH2 0x475 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x475 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xDBA PUSH2 0xDB5 PUSH2 0xDC1 SWAP3 PUSH2 0xD86 JUMP JUMPDEST PUSH2 0xDA2 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xD69 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xDDF PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0xDC5 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xDF7 SWAP1 PUSH2 0xDE9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE12 PUSH2 0xE0D PUSH2 0xE19 SWAP3 PUSH2 0xDEE JUMP JUMPDEST PUSH2 0xDFA JUMP JUMPDEST DUP3 SLOAD PUSH2 0xDCB JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE26 SWAP1 PUSH2 0x475 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xE3D SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xE1D JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0xE4A PUSH2 0x3674 JUMP JUMPDEST SWAP1 PUSH2 0xE56 PUSH0 DUP4 ADD PUSH2 0xD2E JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF07 JUMPI JUMPDEST PUSH2 0xECB JUMPI PUSH2 0xE90 SWAP3 PUSH2 0xE87 SWAP2 PUSH2 0xE75 DUP7 PUSH0 DUP7 ADD PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0xE82 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0xDFD JUMP JUMPDEST PUSH2 0xF9C JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0xDFD JUMP JUMPDEST PUSH2 0xEC6 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0xEBD PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xE2A JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0xED3 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xF03 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0xF13 PUSH0 DUP4 ADD PUSH2 0xD5C JUMP JUMPDEST PUSH2 0xF25 PUSH2 0xF1F DUP7 PUSH2 0x475 JUMP JUMPDEST SWAP2 PUSH2 0x475 JUMP JUMPDEST LT ISZERO PUSH2 0xE5D JUMP JUMPDEST PUSH2 0xF35 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF41 SWAP1 PUSH2 0xF2C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF63 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xBE7 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xF76 SWAP1 PUSH2 0xF2C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF91 PUSH2 0xF8C PUSH2 0xF98 SWAP3 PUSH2 0xF6D JUMP JUMPDEST PUSH2 0xF79 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xF44 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xFB0 SWAP2 POP PUSH2 0xFAA SWAP1 PUSH2 0xF38 JUMP JUMPDEST PUSH0 PUSH2 0xF7C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xFBC SWAP2 PUSH2 0xE3F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xFC9 PUSH2 0x1A0 PUSH2 0x190 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0xFEC PUSH2 0xFBE JUMP JUMPDEST SWAP14 DUP15 PUSH2 0xFF6 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1001 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x100C PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1017 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1022 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x102D PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1038 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1043 PUSH2 0xFCC JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x104E PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1059 PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x1064 PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x106F PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE ADD PUSH2 0x107A PUSH2 0xFD0 JUMP JUMPDEST DUP2 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1088 PUSH2 0xFD5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x10A1 PUSH2 0x109C DUP4 PUSH2 0x506 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x10D0 PUSH2 0x10B8 DUP4 PUSH2 0x108F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x10C6 DUP7 SWAP4 PUSH2 0x506 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x10A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x10E6 PUSH2 0x10E1 PUSH2 0x10EB SWAP3 PUSH2 0xC65 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x10FA SWAP2 ADD PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x113A JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST CALLDATALOAD PUSH2 0x1149 DUP2 PUSH2 0x105 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1155 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1161 SWAP1 PUSH2 0x114C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x116D SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1183 DUP3 PUSH2 0x52A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x119E JUMPI PUSH2 0x119B SWAP2 PUSH0 ADD PUSH2 0x1176 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x11AB PUSH2 0xD2 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x11BD DUP3 PUSH2 0x704 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x11CE JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST SWAP1 PUSH2 0x11DD SWAP1 PUSH2 0x527 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP8 SWAP3 SWAP7 SWAP2 SWAP5 SWAP1 SWAP4 PUSH2 0x11F0 PUSH2 0x1080 JUMP JUMPDEST POP PUSH2 0x1204 PUSH2 0x11FF DUP7 DUP9 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x10AB JUMP JUMPDEST SWAP9 PUSH2 0x120E DUP2 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x1220 PUSH2 0x121A PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1330 JUMPI POP PUSH2 0x1231 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x124F PUSH2 0x1249 PUSH2 0x1244 DUP10 DUP12 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1313 JUMPI PUSH2 0x12A9 SWAP1 PUSH1 0x20 PUSH2 0x127F PUSH2 0x127A PUSH2 0x1275 PUSH2 0x1270 DUP12 DUP14 DUP8 SWAP2 PUSH2 0x112A JUMP JUMPDEST PUSH2 0x113F JUMP JUMPDEST PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x129E DUP13 SWAP3 PUSH2 0x1292 PUSH2 0xD2 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1170 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x130E JUMPI PUSH2 0x12DB SWAP3 PUSH2 0x12D6 SWAP2 PUSH0 SWAP2 PUSH2 0x12E0 JUMPI JUMPDEST POP PUSH2 0x12D1 DUP14 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x1232 JUMP JUMPDEST PUSH2 0x1301 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1307 JUMPI JUMPDEST PUSH2 0x12F9 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x12C3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP SWAP3 SWAP8 PUSH2 0x132D SWAP8 SWAP3 SWAP6 SWAP2 SWAP5 SWAP7 POP JUMPDEST SWAP6 SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH2 0x37D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP4 SWAP9 POP PUSH2 0x132D SWAP8 SWAP3 SWAP6 SWAP2 SWAP5 SWAP7 POP PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x1357 PUSH2 0x1352 PUSH2 0x135C SWAP3 PUSH2 0xC65 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x475 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1376 PUSH2 0x1371 PUSH2 0x137B SWAP3 PUSH2 0x135F JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x475 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1387 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1393 SWAP1 PUSH2 0x1362 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x13AA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x138A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x13B4 PUSH2 0x3674 JUMP JUMPDEST SWAP1 PUSH2 0x13C9 PUSH2 0x13C3 PUSH0 DUP5 ADD PUSH2 0xD2E JUMP JUMPDEST ISZERO PUSH2 0xDE9 JUMP JUMPDEST SWAP1 PUSH2 0x13D5 PUSH0 DUP5 ADD PUSH2 0xD5C JUMP JUMPDEST DUP1 PUSH2 0x13E8 PUSH2 0x13E2 PUSH0 PUSH2 0x1343 JUMP JUMPDEST SWAP2 PUSH2 0x475 JUMP JUMPDEST EQ DUP1 PUSH2 0x1522 JUMPI JUMPDEST SWAP1 PUSH2 0x1403 PUSH2 0x13FD PUSH1 0x1 PUSH2 0x1362 JUMP JUMPDEST SWAP2 PUSH2 0x475 JUMP JUMPDEST EQ DUP1 PUSH2 0x14FA JUMPI JUMPDEST PUSH2 0x1415 SWAP1 SWAP2 ISZERO PUSH2 0xDE9 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x14E9 JUMPI JUMPDEST POP PUSH2 0x14AD JUMPI PUSH2 0x1445 SWAP1 PUSH2 0x143A PUSH2 0x1432 PUSH1 0x1 PUSH2 0x1362 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0xDA5 JUMP JUMPDEST DUP3 PUSH2 0x149B JUMPI JUMPDEST PUSH2 0x1529 JUMP JUMPDEST PUSH2 0x144D JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x145A SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0xDFD JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1492 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1489 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1397 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14A8 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0xDFD JUMP JUMPDEST PUSH2 0x1440 JUMP JUMPDEST PUSH2 0x14B5 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14E5 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x14F4 SWAP2 POP ISZERO PUSH2 0xDE9 JUMP JUMPDEST PUSH0 PUSH2 0x141C JUMP JUMPDEST POP PUSH2 0x1415 PUSH2 0x1507 ADDRESS PUSH2 0x137E JUMP JUMPDEST EXTCODESIZE PUSH2 0x151A PUSH2 0x1514 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x140A JUMP JUMPDEST POP DUP3 PUSH2 0x13EF JUMP JUMPDEST PUSH2 0x1546 PUSH2 0x154C SWAP2 PUSH2 0x1538 PUSH2 0x4014 JUMP JUMPDEST PUSH2 0x1541 CALLER PUSH2 0x403C JUMP JUMPDEST PUSH2 0xF38 JUMP JUMPDEST PUSH0 PUSH2 0xF7C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1557 SWAP1 PUSH2 0x13AC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1565 PUSH2 0x156A SWAP2 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1577 SWAP1 SLOAD PUSH2 0x1559 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1587 DUP3 PUSH2 0x105 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x15A2 JUMPI PUSH2 0x159F SWAP2 PUSH0 ADD PUSH2 0x157A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH0 PUSH32 0x4E6F206173736574732070726F76696465640000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x15DB PUSH1 0x12 PUSH1 0x20 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x15E4 DUP2 PUSH2 0x15A7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x15FD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x15CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1607 JUMPI JUMP JUMPDEST PUSH2 0x160F PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x163F PUSH1 0x4 DUP3 ADD PUSH2 0x15E8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x656E677468000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x4D69736D6174636865642062616C616E63657320616E6420617373657473206C PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x169D PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x16A6 DUP2 PUSH2 0x1643 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x16BF SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1690 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x16C9 JUMPI JUMP JUMPDEST PUSH2 0x16D1 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1701 PUSH1 0x4 DUP3 ADD PUSH2 0x16AA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6E67746800000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x4D69736D617463686564207765696768747320616E6420617373657473206C65 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1763 PUSH1 0x24 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x176C DUP2 PUSH2 0x1709 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1785 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1756 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x178F JUMPI JUMP JUMPDEST PUSH2 0x1797 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x17C7 PUSH1 0x4 DUP3 ADD PUSH2 0x1770 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x17D5 SWAP1 MLOAD PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17E1 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17ED DUP2 PUSH2 0xDE9 JUMP JUMPDEST SUB PUSH2 0x17F4 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1805 DUP3 PUSH2 0x17E4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1820 JUMPI PUSH2 0x181D SWAP2 PUSH0 ADD PUSH2 0x17F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x182E SWAP1 PUSH2 0x527 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x185B PUSH2 0x1862 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x1851 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST ADD SWAP1 PUSH2 0x1825 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x18A0 PUSH2 0x18A6 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x527 JUMP JUMPDEST SWAP3 PUSH2 0x527 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x18B1 JUMPI JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6967687420416D6F756E74212100000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A20556E646572204F7665727765 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1910 PUSH1 0x2D PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1919 DUP2 PUSH2 0x18B6 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1932 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1903 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x193C JUMPI JUMP JUMPDEST PUSH2 0x1944 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1974 PUSH1 0x4 DUP3 ADD PUSH2 0x191D JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1999 SWAP3 SWAP5 SWAP4 PUSH2 0x1992 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x646572204F76657277656967687420416D6F756E740000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A20416C6C6F77616E636520756E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x19F5 PUSH1 0x35 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x19FE DUP2 PUSH2 0x199B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1A17 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x19E8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1A21 JUMPI JUMP JUMPDEST PUSH2 0x1A29 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1A59 PUSH1 0x4 DUP3 ADD PUSH2 0x1A02 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1A7E SWAP3 SWAP5 SWAP4 PUSH2 0x1A77 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST ADD SWAP1 PUSH2 0x1825 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A89 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A95 SWAP1 PUSH2 0x1A80 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1AA1 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x1AEF SWAP5 PUSH2 0x1ADE PUSH2 0x1AE8 SWAP3 PUSH2 0x1AD4 PUSH1 0x80 SWAP7 PUSH2 0x1ACA PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x1825 JUMP JUMPDEST ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B26 PUSH2 0x1B2D SWAP5 PUSH2 0x1B1C PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x1B12 PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x1825 JUMP JUMPDEST ADD SWAP1 PUSH2 0x41E JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x7420626173652061737365742062616C616E6365000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A2020496E73756666696369656E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1B89 PUSH1 0x34 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1B92 DUP2 PUSH2 0x1B2F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1BAB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1B7C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1BB5 JUMPI JUMP JUMPDEST PUSH2 0x1BBD PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1BED PUSH1 0x4 DUP3 ADD PUSH2 0x1B96 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C09 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x1C23 PUSH2 0x1C1E DUP3 PUSH2 0x1BF1 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x1C60 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x1C47 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x1C55 DUP5 DUP7 PUSH2 0x119 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1C3A JUMP JUMPDEST PUSH2 0x523 JUMP JUMPDEST PUSH2 0x1C70 SWAP2 CALLDATASIZE SWAP2 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1C81 DUP3 PUSH2 0x1C73 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1C92 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST PUSH2 0x1CA1 SWAP1 MLOAD PUSH2 0xF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CB3 PUSH2 0x1CB9 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x527 JUMP JUMPDEST SWAP3 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x1CC5 DUP4 DUP3 MUL PUSH2 0x527 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1CD4 JUMPI JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1D12 PUSH2 0x1D18 SWAP2 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x1D23 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x1CD9 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x79207175616E74697479206973207A65726F0000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A20526562616C616E6365206275 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1D82 PUSH1 0x32 PUSH1 0x40 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1D8B DUP2 PUSH2 0x1D28 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1DA4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1D75 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1DAE JUMPI JUMP JUMPDEST PUSH2 0x1DB6 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1DE6 PUSH1 0x4 DUP3 ADD PUSH2 0x1D8F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 PUSH32 0x6C616E6365000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631526562616C616E6365723A20526562616C616E6365206275 PUSH0 DUP3 ADD MSTORE PUSH32 0x79207175616E7469747920657863656564732062617365206173736574206261 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1E6A PUSH1 0x45 PUSH1 0x60 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1E73 DUP2 PUSH2 0x1DEA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1E8C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1E5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1E96 JUMPI JUMP JUMPDEST PUSH2 0x1E9E PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1ECE PUSH1 0x4 DUP3 ADD PUSH2 0x1E77 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1EE5 PUSH2 0x1EEB SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x527 JUMP JUMPDEST SWAP3 PUSH2 0x527 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1EF6 JUMPI JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST PUSH0 PUSH32 0x42616C616E636520756E64657220616D6F756E7420746F207472616E73666572 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1F2E PUSH1 0x20 DUP1 SWAP3 PUSH2 0x982 JUMP JUMPDEST PUSH2 0x1F37 DUP2 PUSH2 0x1EFB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1F50 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1F22 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1F5A JUMPI JUMP JUMPDEST PUSH2 0x1F62 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1F92 PUSH1 0x4 DUP3 ADD PUSH2 0x1F3B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP7 SWAP6 SWAP4 SWAP2 SWAP3 SWAP1 SWAP9 SWAP8 SWAP5 PUSH2 0x1FCB PUSH1 0x20 PUSH2 0x1FB5 PUSH2 0x1FB0 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x1FC3 PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1FDB PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x31A8 JUMPI PUSH0 SWAP2 PUSH2 0x317A JUMPI JUMPDEST POP SWAP8 PUSH2 0x2015 PUSH2 0x1FFD DUP13 DUP8 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x200F PUSH2 0x2009 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x1600 JUMP JUMPDEST PUSH2 0x2044 DUP12 PUSH2 0x203E PUSH2 0x2038 PUSH2 0x2033 PUSH2 0x202B DUP7 PUSH2 0x704 JUMP JUMPDEST SWAP4 DUP11 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x16C2 JUMP JUMPDEST PUSH2 0x2075 DUP12 PUSH2 0x206F PUSH2 0x2069 PUSH2 0x2064 PUSH2 0x205C DUP9 DUP11 SWAP1 PUSH2 0x1705 JUMP JUMPDEST SWAP4 DUP11 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x1788 JUMP JUMPDEST PUSH2 0x207E DUP2 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x2090 PUSH2 0x208A PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x3065 JUMPI JUMPDEST SWAP1 PUSH2 0x20AC SWAP4 SWAP3 SWAP2 SWAP3 DUP12 SWAP3 DUP7 SWAP1 SWAP2 SWAP3 SWAP4 DUP10 SWAP6 PUSH2 0x37D0 JUMP JUMPDEST SWAP7 PUSH2 0x20B6 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x20D7 PUSH2 0x20D1 PUSH2 0x20CC PUSH2 0x100 DUP14 ADD MLOAD PUSH2 0x704 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x2763 JUMPI PUSH2 0x20F5 PUSH2 0x20F0 PUSH2 0x120 DUP12 ADD MLOAD DUP4 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x2107 PUSH2 0x2101 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x211C JUMPI JUMPDEST PUSH2 0x2117 SWAP1 JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x20B7 JUMP JUMPDEST PUSH2 0x2148 PUSH2 0x2143 DUP4 DUP12 PUSH2 0x213D PUSH2 0x2138 PUSH2 0x100 DUP10 SWAP4 ADD MLOAD DUP8 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP2 PUSH2 0x112A JUMP JUMPDEST PUSH2 0x113F JUMP JUMPDEST SWAP1 DUP10 DUP3 PUSH2 0x215D PUSH2 0x2157 DUP10 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH2 0x267E JUMPI DUP1 PUSH2 0x21BE PUSH2 0x21B8 PUSH2 0x21B3 PUSH2 0x21AE PUSH2 0x120 PUSH2 0x21A4 PUSH2 0x219F PUSH2 0x180 PUSH2 0x21C5 SWAP10 ADD MLOAD PUSH2 0x2199 PUSH2 0x2194 PUSH2 0x100 DUP12 ADD MLOAD DUP14 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP6 ADD MLOAD DUP8 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1935 JUMP JUMPDEST PUSH2 0x21D6 PUSH2 0x21D1 DUP4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 DUP8 SWAP1 PUSH2 0x2204 PUSH2 0x21EC ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP5 PUSH2 0x220F PUSH2 0x21F8 PUSH2 0xD2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1978 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2679 JUMPI PUSH2 0x2251 PUSH2 0x224B PUSH2 0x2246 PUSH2 0x2241 DUP16 SWAP5 PUSH2 0x120 SWAP1 PUSH2 0x2258 SWAP8 PUSH0 SWAP2 PUSH2 0x264B JUMPI JUMPDEST POP SWAP6 ADD MLOAD DUP8 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1A1A JUMP JUMPDEST DUP10 PUSH1 0x20 PUSH2 0x226C PUSH2 0x2267 DUP6 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x23B872DD SWAP1 PUSH2 0x22B0 PUSH0 DUP11 SWAP4 PUSH2 0x22BB PUSH2 0x229C PUSH2 0x2297 PUSH2 0x120 PUSH2 0x228D ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP11 ADD MLOAD DUP12 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x22A4 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1170 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x1832 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2646 JUMPI PUSH2 0x261A JUMPI JUMPDEST POP PUSH2 0x22F7 PUSH1 0x20 PUSH2 0x22E1 PUSH2 0x22DC PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x22EF PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2307 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2615 JUMPI PUSH0 SWAP2 PUSH2 0x25E7 JUMPI JUMPDEST POP PUSH2 0x232B PUSH2 0x2326 DUP5 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP13 PUSH4 0x95EA7B3 SWAP6 PUSH2 0x236A PUSH0 PUSH2 0x2352 PUSH2 0x234D PUSH2 0x120 DUP10 SWAP7 ADD MLOAD DUP11 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP9 PUSH2 0x2375 PUSH2 0x235E PUSH2 0xD2 JUMP JUMPDEST SWAP11 DUP12 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x25E2 JUMPI DUP10 SWAP5 DUP14 SWAP4 PUSH2 0x25B6 JUMPI JUMPDEST POP DUP9 DUP12 DUP4 PUSH2 0x239F PUSH2 0x2399 DUP4 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x24AF JUMPI POP POP SWAP1 PUSH2 0x2422 PUSH0 PUSH2 0x23C1 PUSH2 0x23BC PUSH1 0x20 SWAP7 SWAP6 PUSH2 0x1A8C JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST SWAP3 PUSH2 0x242D PUSH4 0x2D6BC8EA SWAP2 SWAP6 DUP14 SWAP10 PUSH2 0x23F3 PUSH2 0x140 PUSH2 0x23EB PUSH2 0x23E6 DUP14 PUSH2 0x120 DUP8 ADD MLOAD PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP4 ADD MLOAD PUSH2 0x704 JUMP JUMPDEST PUSH2 0x2405 PUSH2 0x23FF DUP8 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ DUP6 EQ PUSH2 0x249F JUMPI SWAP1 JUMPDEST PUSH2 0x2416 PUSH2 0xD2 JUMP JUMPDEST SWAP11 DUP12 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x1170 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x1AF1 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x249A JUMPI PUSH2 0x2117 SWAP3 PUSH2 0x2464 SWAP2 PUSH0 SWAP2 PUSH2 0x246C JUMPI JUMPDEST POP PUSH2 0x245E PUSH1 0xE0 DUP14 ADD SWAP2 PUSH2 0x2459 DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH2 0x210D JUMP JUMPDEST PUSH2 0x248D SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2493 JUMPI JUMPDEST PUSH2 0x2485 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2447 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x247B JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP PUSH2 0x24A9 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP1 PUSH2 0x240E JUMP JUMPDEST SWAP3 PUSH0 SWAP1 PUSH2 0x2537 DUP8 PUSH1 0x20 SWAP8 PUSH2 0x24CF PUSH2 0x24CA PUSH2 0x252C SWAP8 SWAP13 SWAP9 PUSH2 0x1A8C JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST SWAP7 PUSH2 0x24FD PUSH2 0x140 PUSH2 0x24F5 PUSH2 0x24F0 PUSH4 0x5EFAAEBB SWAP9 SWAP13 SWAP16 SWAP7 PUSH2 0x120 DUP8 ADD MLOAD PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP4 ADD MLOAD PUSH2 0x704 JUMP JUMPDEST PUSH2 0x250F PUSH2 0x2509 DUP9 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ DUP7 EQ PUSH2 0x25A6 JUMPI SWAP2 JUMPDEST PUSH2 0x2520 PUSH2 0xD2 JUMP JUMPDEST SWAP12 DUP13 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0x1170 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x1AA4 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x25A1 JUMPI PUSH2 0x2117 SWAP3 PUSH2 0x256E SWAP2 PUSH0 SWAP2 PUSH2 0x2573 JUMPI JUMPDEST POP PUSH2 0x2568 PUSH1 0xE0 DUP14 ADD SWAP2 PUSH2 0x2563 DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2465 JUMP JUMPDEST PUSH2 0x2594 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x259A JUMPI JUMPDEST PUSH2 0x258C DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2551 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2582 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP PUSH2 0x25B0 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP2 PUSH2 0x2518 JUMP JUMPDEST PUSH2 0x25D6 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x25DB JUMPI JUMPDEST PUSH2 0x25CE DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2389 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25C4 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2608 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x260E JUMPI JUMPDEST PUSH2 0x2600 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x2319 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25F6 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x263A SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x263F JUMPI JUMPDEST PUSH2 0x2632 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x22CA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x266C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2672 JUMPI JUMPDEST PUSH2 0x2664 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2236 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x265A JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP2 PUSH2 0x2692 PUSH2 0x268D PUSH1 0x20 SWAP3 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x23B872DD SWAP1 PUSH2 0x26D6 PUSH0 DUP10 SWAP4 PUSH2 0x26E1 PUSH2 0x26C2 PUSH2 0x26BD PUSH2 0x120 PUSH2 0x26B3 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP12 ADD MLOAD DUP11 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x26CA PUSH2 0xD2 JUMP JUMPDEST SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1170 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x1832 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x275E JUMPI PUSH2 0x2117 SWAP3 PUSH2 0x2732 JUMPI JUMPDEST POP PUSH2 0x272D PUSH2 0x2711 PUSH2 0x270C PUSH2 0x120 DUP14 ADD MLOAD DUP5 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x2727 PUSH1 0xE0 DUP14 ADD SWAP2 PUSH2 0x2722 DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2112 JUMP JUMPDEST PUSH2 0x2752 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2757 JUMPI JUMPDEST PUSH2 0x274A DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x26F5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2740 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP SWAP4 SWAP3 SWAP7 SWAP5 SWAP2 POP PUSH2 0x27B3 SWAP1 PUSH1 0x20 PUSH2 0x2781 PUSH2 0x277C DUP11 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x27A8 PUSH2 0x2793 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP3 PUSH2 0x279C PUSH2 0xD2 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1170 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3060 JUMPI PUSH2 0x27F7 SWAP3 PUSH0 SWAP2 PUSH2 0x3032 JUMPI JUMPDEST POP SWAP5 PUSH2 0x27F2 DUP7 PUSH2 0x27EB PUSH2 0x27E5 PUSH2 0x27E0 PUSH1 0xE0 DUP13 ADD PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1BAE JUMP JUMPDEST PUSH2 0x1C65 JUMP JUMPDEST SWAP6 PUSH2 0x2824 PUSH1 0x20 PUSH2 0x280E PUSH2 0x2809 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x281C PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2834 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x302D JUMPI PUSH0 SWAP2 PUSH2 0x2FFF JUMPI JUMPDEST POP SWAP7 PUSH2 0x2851 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x2872 PUSH2 0x286C PUSH2 0x2867 PUSH2 0x140 DUP12 ADD MLOAD PUSH2 0x704 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x2FF4 JUMPI DUP7 SWAP1 DUP10 DUP4 PUSH2 0x2894 PUSH2 0x288F PUSH2 0x160 DUP7 ADD MLOAD DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x28A6 PUSH2 0x28A0 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x28BE JUMPI JUMPDEST POP POP PUSH2 0x28B9 SWAP2 POP JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x2852 JUMP JUMPDEST PUSH2 0x2924 PUSH2 0x2912 PUSH2 0x293D SWAP4 PUSH2 0x290D PUSH2 0x2908 PUSH2 0x160 PUSH2 0x28FE PUSH2 0x28F9 DUP12 PUSH2 0x28F3 PUSH2 0x28EE DUP14 PUSH2 0x140 PUSH2 0x2936 SWAP14 SWAP5 ADD MLOAD PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x1C77 JUMP JUMPDEST PUSH2 0x1C97 JUMP JUMPDEST SWAP10 ADD MLOAD DUP9 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x291E PUSH1 0xC0 DUP14 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x1D06 JUMP JUMPDEST PUSH2 0x2930 PUSH1 0xE0 DUP13 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x1CA4 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x1D06 JUMP JUMPDEST SWAP2 DUP7 SWAP3 DUP2 PUSH2 0x2953 PUSH2 0x294D DUP9 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH2 0x2F66 JUMPI PUSH2 0x2974 DUP2 PUSH2 0x296E PUSH2 0x2968 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x1DA7 JUMP JUMPDEST PUSH2 0x2991 DUP2 PUSH2 0x298A PUSH2 0x2984 DUP13 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT ISZERO PUSH2 0x1E8F JUMP JUMPDEST PUSH2 0x29BD PUSH1 0x20 PUSH2 0x29A7 PUSH2 0x29A2 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x29B5 PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x29CD PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2F61 JUMPI PUSH0 SWAP2 PUSH2 0x2F33 JUMPI JUMPDEST POP PUSH2 0x29F1 PUSH2 0x29EC DUP9 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 DUP3 SWAP1 PUSH2 0x2A19 PUSH0 DUP8 SWAP7 PUSH2 0x2A24 PUSH2 0x2A0D PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2F2E JUMPI PUSH1 0x20 SWAP3 PUSH2 0x2F03 JUMPI JUMPDEST POP PUSH2 0x2A40 PUSH2 0x1ED2 JUMP JUMPDEST POP DUP4 PUSH2 0x2A54 PUSH2 0x2A4E DUP12 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x2E6A JUMPI PUSH2 0x2A67 PUSH2 0x2A6C SWAP2 PUSH2 0x1A8C JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST PUSH4 0x2D6BC8EA SWAP1 PUSH2 0x2A9B PUSH0 DUP11 SWAP4 PUSH2 0x2AA6 DUP9 SWAP8 PUSH2 0x2A86 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP1 PUSH2 0x2A8F PUSH2 0xD2 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x1170 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x1AF1 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E65 JUMPI PUSH0 SWAP2 PUSH2 0x2E37 JUMPI JUMPDEST POP SWAP3 JUMPDEST PUSH2 0x2AC8 DUP5 PUSH1 0xE0 DUP13 ADD PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2ADC PUSH2 0x2AD4 DUP6 PUSH2 0x4047 JUMP JUMPDEST SWAP5 DUP6 SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x2AF0 PUSH2 0x2AE8 DUP3 PUSH2 0x4047 JUMP JUMPDEST SWAP2 DUP3 SWAP1 PUSH2 0x1ED6 JUMP JUMPDEST SWAP2 PUSH2 0x2B39 PUSH1 0x20 PUSH2 0x2B07 PUSH2 0x2B02 DUP8 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2B2E PUSH2 0x2B19 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP3 PUSH2 0x2B22 PUSH2 0xD2 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1170 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2E32 JUMPI PUSH2 0x2B68 SWAP2 PUSH0 SWAP2 PUSH2 0x2E04 JUMPI JUMPDEST POP PUSH2 0x2B61 PUSH2 0x2B5B DUP10 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x1F53 JUMP JUMPDEST PUSH2 0x2B94 PUSH1 0x20 PUSH2 0x2B7E PUSH2 0x2B79 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x2B8C PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BA4 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2DFF JUMPI PUSH0 SWAP2 PUSH2 0x2DD1 JUMPI JUMPDEST POP SWAP2 PUSH2 0x2BE4 PUSH1 0x20 PUSH2 0x2BCE PUSH2 0x2BC9 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x2BDC PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BF4 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2DCC JUMPI PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x2D9F JUMPI JUMPDEST POP SWAP8 PUSH2 0x2C1B PUSH2 0x2C16 DUP9 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x2C3E PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x2C49 PUSH2 0x2C32 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2D9A JUMPI PUSH1 0x20 SWAP3 PUSH2 0x2D6F JUMPI JUMPDEST POP PUSH2 0x2C6E PUSH2 0x2C69 DUP7 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x2C91 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x2C9C PUSH2 0x2C85 PUSH2 0xD2 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2D6A JUMPI PUSH1 0x20 SWAP4 PUSH2 0x2CC1 SWAP3 PUSH2 0x2CBC SWAP3 PUSH2 0x2D3F JUMPI JUMPDEST POP PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x2CE4 PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x2CEF PUSH2 0x2CD8 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2D3A JUMPI PUSH2 0x28B9 SWAP3 PUSH2 0x2D0E JUMPI JUMPDEST POP DUP8 SWAP2 POP DUP10 DUP4 PUSH2 0x28AC JUMP JUMPDEST PUSH2 0x2D2E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D33 JUMPI JUMPDEST PUSH2 0x2D26 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2D03 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D1C JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2D5E SWAP1 DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x2D63 JUMPI JUMPDEST PUSH2 0x2D56 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2CB6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D4C JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2D8E SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x2D93 JUMPI JUMPDEST PUSH2 0x2D86 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2C5C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D7C JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2DBF SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x2DC5 JUMPI JUMPDEST PUSH2 0x2DB7 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x2C08 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2DAD JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2DF2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2DF8 JUMPI JUMPDEST PUSH2 0x2DEA DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x2BB6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2DE0 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2E25 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2E2B JUMPI JUMPDEST PUSH2 0x2E1D DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2B4E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E13 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2E58 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2E5E JUMPI JUMPDEST PUSH2 0x2E50 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2AB8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E46 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2E76 PUSH2 0x2E7B SWAP2 PUSH2 0x1A8C JUMP JUMPDEST PUSH2 0x1A98 JUMP JUMPDEST PUSH4 0x5EFAAEBB SWAP1 PUSH2 0x2EAC PUSH0 DUP11 SWAP4 PUSH2 0x2EB7 DUP14 SWAP8 DUP10 SWAP1 PUSH2 0x2E97 ADDRESS PUSH2 0x17D8 JUMP JUMPDEST SWAP2 PUSH2 0x2EA0 PUSH2 0xD2 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0x1170 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x1AA4 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EFE JUMPI PUSH0 SWAP2 PUSH2 0x2ED0 JUMPI JUMPDEST POP SWAP3 PUSH2 0x2ABB JUMP JUMPDEST PUSH2 0x2EF1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2EF7 JUMPI JUMPDEST PUSH2 0x2EE9 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2EC9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2EDF JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2F22 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x2F27 JUMPI JUMPDEST PUSH2 0x2F1A DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2A37 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F10 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x2F54 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2F5A JUMPI JUMPDEST PUSH2 0x2F4C DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x29DF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F42 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH2 0x2F7B PUSH2 0x2F76 DUP8 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x2F9E PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x2FA9 PUSH2 0x2F92 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1170 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A5D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2FEF JUMPI PUSH2 0x28B9 SWAP3 PUSH2 0x2FC3 JUMPI JUMPDEST POP PUSH2 0x28B4 JUMP JUMPDEST PUSH2 0x2FE3 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2FE8 JUMPI JUMPDEST PUSH2 0x2FDB DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x2FBD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2FD1 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP POP POP POP POP POP POP SWAP1 POP JUMP JUMPDEST PUSH2 0x3020 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3026 JUMPI JUMPDEST PUSH2 0x3018 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x2846 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x300E JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x3053 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3059 JUMPI JUMPDEST PUSH2 0x304B DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x27C8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3041 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP10 SWAP6 SWAP2 PUSH2 0x3079 PUSH0 SWAP11 SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP3 SWAP11 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x3097 PUSH2 0x3091 PUSH2 0x308C DUP12 DUP14 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x3161 JUMPI PUSH2 0x30F0 SWAP1 PUSH1 0x20 DUP12 PUSH2 0x30C9 PUSH2 0x30C4 PUSH2 0x30BF PUSH2 0x30BA DUP16 DUP16 SWAP1 DUP9 SWAP2 PUSH2 0x112A JUMP JUMPDEST PUSH2 0x113F JUMP JUMPDEST PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x30E5 PUSH4 0x70A08231 PUSH2 0x30D9 PUSH2 0xD2 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1170 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x315C JUMPI PUSH2 0x3123 SWAP3 DUP15 PUSH2 0x311E SWAP3 PUSH0 SWAP3 PUSH2 0x3128 JUMPI JUMPDEST POP PUSH2 0x3119 SWAP1 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x307A JUMP JUMPDEST PUSH2 0x3119 SWAP2 SWAP3 POP PUSH2 0x314E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3155 JUMPI JUMPDEST PUSH2 0x3146 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x310B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x313C JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP6 SWAP10 SWAP9 PUSH2 0x20AC SWAP4 SWAP8 SWAP5 SWAP9 SWAP6 SWAP10 SWAP1 SWAP2 SWAP3 SWAP4 POP PUSH2 0x2096 JUMP JUMPDEST PUSH2 0x319B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x31A1 JUMPI JUMPDEST PUSH2 0x3193 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x1FED JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3189 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x31BE SWAP1 PUSH2 0x31B9 PUSH2 0x3547 JUMP JUMPDEST PUSH2 0x31C0 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x31DB PUSH2 0x31D5 PUSH2 0x31D0 PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH2 0x31EB JUMPI PUSH2 0x31E9 SWAP1 PUSH2 0x35E4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x322E PUSH2 0x31F7 PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x31FF PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x323B SWAP1 PUSH2 0x31AD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3246 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3252 ADDRESS PUSH2 0x323D JUMP JUMPDEST PUSH2 0x3284 PUSH2 0x327E PUSH32 0x0 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x32CE JUMPI JUMPDEST PUSH2 0x3292 JUMPI JUMP JUMPDEST PUSH2 0x329A PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x32CA PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x32D7 PUSH2 0x4175 JUMP JUMPDEST PUSH2 0x3309 PUSH2 0x3303 PUSH32 0x0 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ ISZERO PUSH2 0x328C JUMP JUMPDEST POP PUSH2 0x3319 PUSH2 0x3547 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3324 SWAP1 PUSH2 0x3310 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x332F SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x333B SWAP1 PUSH2 0x3326 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3347 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3353 DUP2 PUSH2 0x2B3 JUMP JUMPDEST SUB PUSH2 0x335A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x336B DUP3 PUSH2 0x334A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x3386 JUMPI PUSH2 0x3383 SWAP2 PUSH0 ADD PUSH2 0x335E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x33B9 PUSH1 0x20 PUSH2 0x33A3 PUSH2 0x339E DUP7 PUSH2 0x3332 JUMP JUMPDEST PUSH2 0x333E JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x33B1 PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x33C9 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x3499 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x342A JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x33EB JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x3426 SWAP1 PUSH2 0x33F7 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x3445 PUSH2 0x343F PUSH2 0x343A PUSH2 0xC08 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST SWAP2 PUSH2 0x2B3 JUMP JUMPDEST SUB PUSH2 0x345A JUMPI PUSH2 0x3455 SWAP3 SWAP4 POP PUSH2 0x419F JUMP JUMPDEST PUSH2 0x33E9 JUMP JUMPDEST PUSH2 0x3495 DUP5 PUSH2 0x3466 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x2C3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x34BB SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x34C2 JUMPI JUMPDEST PUSH2 0x34B3 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x336D JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x33D6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34A9 JUMP JUMPDEST PUSH2 0x34D2 ADDRESS PUSH2 0x323D JUMP JUMPDEST PUSH2 0x3504 PUSH2 0x34FE PUSH32 0x0 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST SUB PUSH2 0x350B JUMPI JUMP JUMPDEST PUSH2 0x3513 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3543 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x354F PUSH2 0xCF0 JUMP JUMPDEST PUSH2 0x3568 PUSH2 0x3562 PUSH2 0x355D PUSH2 0x4228 JUMP JUMPDEST PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST SUB PUSH2 0x356F JUMPI JUMP JUMPDEST PUSH2 0x35B1 PUSH2 0x357A PUSH2 0x4228 JUMP JUMPDEST PUSH2 0x3582 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x35BE SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x35D9 PUSH2 0x35D4 PUSH2 0x35E0 SWAP3 PUSH2 0x35B5 JUMP JUMPDEST PUSH2 0x35C1 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xF44 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x35EC PUSH2 0x3650 JUMP JUMPDEST PUSH2 0x3604 PUSH2 0x35FA PUSH0 DUP4 ADD PUSH2 0xCE3 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x35C4 JUMP JUMPDEST SWAP1 PUSH2 0x3638 PUSH2 0x3632 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x35B5 JUMP JUMPDEST SWAP2 PUSH2 0x35B5 JUMP JUMPDEST SWAP2 PUSH2 0x3641 PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x364B DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36AF PUSH2 0x36AA PUSH2 0x36B4 SWAP3 PUSH2 0x3698 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36C2 PUSH2 0x1A0 PUSH2 0x190 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MSTORE JUMP JUMPDEST PUSH2 0x36D1 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36DD SWAP1 PUSH2 0x36C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x36F0 JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x10FD JUMP JUMPDEST CALLDATALOAD PUSH2 0x36FF DUP2 PUSH2 0x52A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x370B SWAP1 PUSH2 0x527 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x3738 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST PUSH2 0x3746 SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3752 SWAP1 PUSH2 0x393 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x375E SWAP1 PUSH2 0x3749 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x376A SWAP1 PUSH2 0x3AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x377C DUP2 PUSH2 0x376D JUMP JUMPDEST SUB PUSH2 0x3783 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x3794 DUP3 PUSH2 0x3773 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x37AF JUMPI PUSH2 0x37AC SWAP2 PUSH0 ADD PUSH2 0x3787 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST PUSH2 0x37C8 PUSH2 0x37C3 PUSH2 0x37CD SWAP3 PUSH2 0x376D JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP7 SWAP6 SWAP4 SWAP5 SWAP2 SWAP5 PUSH2 0x37DF PUSH2 0x1080 JUMP JUMPDEST POP DUP2 DUP9 DUP8 SWAP1 DUP8 SWAP2 PUSH2 0x37EF SWAP2 PUSH2 0x1C65 JUMP JUMPDEST PUSH2 0x37F8 SWAP3 PUSH2 0x423A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SWAP3 DUP10 DUP9 PUSH2 0x3807 SWAP2 PUSH2 0x108B JUMP JUMPDEST SWAP1 DUP4 SWAP1 DUP12 DUP11 DUP8 PUSH0 DUP1 PUSH0 DUP1 SWAP2 PUSH0 SWAP4 DUP8 DUP8 PUSH2 0x381F SWAP2 PUSH2 0x108B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x382A SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH2 0x3833 SWAP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x383C SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP6 DUP9 DUP9 PUSH2 0x3848 SWAP2 PUSH2 0x108B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3853 SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH2 0x385C SWAP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x3865 SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP8 DUP10 DUP2 PUSH2 0x3871 SWAP2 PUSH2 0x108B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x387C SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH2 0x3885 SWAP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x388E SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP10 SWAP1 PUSH2 0x3899 SWAP2 PUSH2 0x108B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x38A4 SWAP1 PUSH2 0x369B JUMP JUMPDEST PUSH2 0x38AD SWAP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x38B6 SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP10 SWAP11 PUSH2 0x38C0 PUSH2 0x36B7 JUMP JUMPDEST SWAP13 PUSH0 DUP15 ADD SWAP1 PUSH2 0x38CE SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH1 0x20 DUP14 ADD SWAP1 PUSH2 0x38DC SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x38EA SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x38F3 SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0x60 DUP12 ADD SWAP1 PUSH2 0x3901 SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x390A SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0x80 DUP11 ADD SWAP1 PUSH2 0x3918 SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3921 SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD SWAP1 PUSH2 0x392F SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3938 SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0xC0 DUP9 ADD SWAP1 PUSH2 0x3946 SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x394F SWAP1 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x395D SWAP2 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x100 DUP7 ADD SWAP1 PUSH2 0x396C SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x120 DUP6 ADD SWAP1 PUSH2 0x397B SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD SWAP1 PUSH2 0x398A SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD SWAP1 PUSH2 0x3999 SWAP2 PUSH2 0x36C5 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD SWAP1 PUSH2 0x39A8 SWAP2 PUSH2 0x36C5 JUMP JUMPDEST SWAP4 SWAP2 SWAP4 SWAP7 PUSH0 PUSH2 0x39B6 SWAP1 PUSH2 0x10D2 JUMP JUMPDEST JUMPDEST DUP11 PUSH2 0x39D5 PUSH2 0x39CF PUSH2 0x39CA DUP5 SWAP4 DUP7 SWAP1 PUSH2 0x108B JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x3F78 JUMPI PUSH2 0x3A07 PUSH1 0x20 PUSH2 0x39F1 PUSH2 0x39EC PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x39FF PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3A17 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3F73 JUMPI PUSH2 0x3A32 SWAP2 PUSH0 SWAP2 PUSH2 0x3F45 JUMPI JUMPDEST POP PUSH2 0x36D4 JUMP JUMPDEST SWAP1 PUSH2 0x3A47 PUSH2 0x3A42 DUP14 DUP6 DUP5 SWAP2 PUSH2 0x112A JUMP JUMPDEST PUSH2 0x113F JUMP JUMPDEST DUP10 PUSH2 0x3A5C PUSH2 0x3A57 DUP12 DUP9 DUP7 SWAP2 PUSH2 0x36E0 JUMP JUMPDEST PUSH2 0x36F5 JUMP JUMPDEST PUSH2 0x3A9B PUSH2 0x3A72 PUSH2 0x3A6D DUP12 DUP8 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH1 0x20 PUSH2 0x3A85 PUSH2 0x3A80 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x3A93 PUSH2 0xD2 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3AAB PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3F40 JUMPI DUP16 SWAP3 PUSH2 0x3AD4 SWAP3 PUSH2 0x3ACD SWAP3 PUSH0 SWAP3 PUSH2 0x3F10 JUMPI JUMPDEST POP PUSH2 0x1CA4 JUMP JUMPDEST DUP13 SWAP1 PUSH2 0x1D06 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x3AE8 PUSH2 0x3AE2 DUP4 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT SWAP3 DUP4 PUSH0 EQ PUSH2 0x3F02 JUMPI SWAP1 PUSH2 0x3AFB SWAP2 PUSH2 0x1ED6 JUMP JUMPDEST JUMPDEST SWAP2 DUP1 DUP1 PUSH2 0x3EE8 JUMPI JUMPDEST PUSH0 EQ PUSH2 0x3E18 JUMPI POP POP PUSH2 0x3B1A PUSH2 0x3B43 SWAP2 DUP12 SWAP1 PUSH2 0x1CA4 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x3B2D PUSH2 0x3B28 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x3B3B PUSH2 0xD2 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3B53 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3E13 JUMPI PUSH2 0x3B6F SWAP3 PUSH0 SWAP3 PUSH2 0x3DE3 JUMPI JUMPDEST POP PUSH2 0x1D06 JUMP JUMPDEST SWAP4 PUSH2 0x3B91 DUP14 PUSH2 0x3B8B PUSH1 0x60 DUP9 SWAP3 ADD SWAP2 PUSH2 0x3B86 DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST DUP3 PUSH2 0x3BA4 PUSH2 0x3B9E DUP5 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x3CBC JUMPI POP POP PUSH1 0x20 PUSH2 0x3BC4 PUSH2 0x3BBF PUSH2 0x3BDA SWAP6 SWAP4 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x3761 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3BD2 PUSH2 0xD2 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3BEA PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3CB7 JUMPI PUSH2 0x3C5B PUSH2 0x3C1B DUP14 SWAP3 PUSH2 0x3C15 PUSH2 0x3C60 SWAP6 PUSH2 0x3C84 SWAP9 PUSH0 SWAP2 PUSH2 0x3C89 JUMPI JUMPDEST POP PUSH2 0x37B4 JUMP JUMPDEST SWAP1 PUSH2 0x4561 JUMP JUMPDEST JUMPDEST PUSH2 0x3C42 DUP6 PUSH2 0x3C3D PUSH2 0x100 DUP7 ADD MLOAD SWAP2 PUSH2 0x3C36 PUSH1 0x80 DUP9 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3C54 PUSH1 0x80 PUSH2 0x120 DUP6 ADD MLOAD SWAP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3C7E PUSH1 0x80 DUP12 ADD PUSH2 0x3C78 PUSH2 0x3C73 DUP3 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x3702 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x39B7 JUMP JUMPDEST PUSH2 0x3CAA SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3CB0 JUMPI JUMPDEST PUSH2 0x3CA2 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 PUSH2 0x3C0F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3C98 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP1 PUSH2 0x3CCA PUSH2 0x3CFC SWAP4 SWAP3 PUSH2 0x373D JUMP JUMPDEST SWAP1 PUSH4 0x248391FF PUSH1 0x20 PUSH2 0x3CE6 PUSH2 0x3CE1 DUP5 SWAP7 SWAP10 SWAP5 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x3761 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3CF4 PUSH2 0xD2 JUMP JUMPDEST SWAP8 DUP9 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3D0C PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x3DDE JUMPI PUSH2 0x3D3B PUSH2 0x3D4F SWAP4 PUSH2 0x3D35 PUSH1 0x20 SWAP9 PUSH2 0x3D5A SWAP5 PUSH0 SWAP2 PUSH2 0x3DB1 JUMPI JUMPDEST POP PUSH2 0x37B4 JUMP JUMPDEST SWAP1 PUSH2 0x4561 JUMP JUMPDEST PUSH2 0x3D43 PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1170 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x1832 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3DAC JUMPI DUP11 PUSH2 0x3C5B PUSH2 0x3C84 SWAP5 PUSH2 0x3C60 SWAP4 PUSH0 SWAP2 PUSH2 0x3D7E JUMPI JUMPDEST POP PUSH2 0x3C1C JUMP JUMPDEST PUSH2 0x3D9F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3DA5 JUMPI JUMPDEST PUSH2 0x3D97 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x3D78 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3D8D JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x3DD1 SWAP2 POP DUP11 RETURNDATASIZE DUP2 GT PUSH2 0x3DD7 JUMPI JUMPDEST PUSH2 0x3DC9 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 PUSH2 0x3D2F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DBF JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x3E05 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3E0C JUMPI JUMPDEST PUSH2 0x3DFD DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x3B69 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DF3 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH2 0x3C84 SWAP6 POP PUSH2 0x3E2C SWAP2 SWAP4 POP ISZERO PUSH2 0xDE9 JUMP JUMPDEST DUP1 PUSH2 0x3ECE JUMPI JUMPDEST PUSH2 0x3E3E JUMPI JUMPDEST POP POP PUSH2 0x3C7F JUMP JUMPDEST PUSH2 0x3EA4 DUP3 PUSH2 0x3E65 PUSH2 0x3EA9 SWAP5 PUSH2 0x3E5F PUSH1 0xC0 DUP7 ADD SWAP2 PUSH2 0x3E5A DUP4 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3E8B DUP6 PUSH2 0x3E86 PUSH2 0x140 DUP7 ADD MLOAD SWAP2 PUSH2 0x3E7F PUSH1 0xA0 DUP9 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3E9D PUSH1 0xA0 PUSH2 0x160 DUP6 ADD MLOAD SWAP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3EC7 PUSH1 0xA0 DUP12 ADD PUSH2 0x3EC1 PUSH2 0x3EBC DUP3 PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x3702 JUMP JUMPDEST SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH0 DUP11 PUSH2 0x3E37 JUMP JUMPDEST POP DUP2 PUSH2 0x3EE2 PUSH2 0x3EDC DUP10 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x3E32 JUMP JUMPDEST POP DUP3 PUSH2 0x3EFC PUSH2 0x3EF6 DUP13 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x3B04 JUMP JUMPDEST PUSH2 0x3F0B SWAP2 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x3AFC JUMP JUMPDEST PUSH2 0x3F32 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3F39 JUMPI JUMPDEST PUSH2 0x3F2A DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x3AC7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F20 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x3F66 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3F6C JUMPI JUMPDEST PUSH2 0x3F5E DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x3A2C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F54 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST POP POP POP POP POP POP POP POP SWAP1 SWAP2 POP PUSH2 0x3F9E PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x3F98 PUSH1 0x80 DUP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x4593 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x3FBF PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x3FB9 PUSH1 0x80 DUP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x4593 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x3FE0 PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x3FDA PUSH1 0xA0 DUP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x4593 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0x4001 PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x3FFB PUSH1 0xA0 DUP5 ADD PUSH2 0x17CB JUMP JUMPDEST SWAP1 PUSH2 0x4593 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x4012 PUSH2 0x4608 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x401C PUSH2 0x400A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x402F SWAP1 PUSH2 0x402A PUSH2 0x4608 JUMP JUMPDEST PUSH2 0x4031 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x403A SWAP1 PUSH2 0x46E0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4045 SWAP1 PUSH2 0x401E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x407D SWAP1 PUSH2 0x4053 PUSH2 0x1ED2 JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x4067 PUSH2 0x4062 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x4075 PUSH2 0xD2 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x408D PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x4170 JUMPI PUSH2 0x40CD SWAP3 PUSH0 SWAP2 PUSH2 0x4142 JUMPI JUMPDEST POP SWAP1 PUSH1 0x20 PUSH2 0x40B7 PUSH2 0x40B2 PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x40C5 PUSH2 0xD2 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x40DD PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x413D JUMPI PUSH2 0x4101 PUSH2 0x4107 SWAP3 PUSH2 0x410C SWAP6 PUSH0 SWAP2 PUSH2 0x410F JUMPI JUMPDEST POP DUP5 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 PUSH2 0x1CA4 JUMP JUMPDEST PUSH2 0x1D06 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4130 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4136 JUMPI JUMPDEST PUSH2 0x4128 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x40FA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x411E JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x4163 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4169 JUMPI JUMPDEST PUSH2 0x415B DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x40A2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4151 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x417D PUSH2 0xCAD JUMP JUMPDEST POP PUSH2 0x4198 PUSH0 PUSH2 0x4192 PUSH2 0x418D PUSH2 0xC08 JUMP JUMPDEST PUSH2 0x46EB JUMP JUMPDEST ADD PUSH2 0xCE3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x41A9 DUP3 PUSH2 0x46EE JUMP JUMPDEST DUP2 PUSH2 0x41D4 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x35B5 JUMP JUMPDEST SWAP1 PUSH2 0x41DD PUSH2 0xD2 JUMP JUMPDEST DUP1 PUSH2 0x41E7 DUP2 PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x41F3 DUP2 PUSH2 0x419B JUMP JUMPDEST PUSH2 0x4205 PUSH2 0x41FF PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x4219 JUMPI PUSH2 0x4215 SWAP2 PUSH2 0x47FE JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x4223 PUSH2 0x4763 JUMP JUMPDEST PUSH2 0x4217 JUMP JUMPDEST PUSH2 0x4230 PUSH2 0xCAD JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x4245 PUSH2 0x1ED2 JUMP JUMPDEST POP PUSH2 0x424E PUSH2 0x4235 JUMP JUMPDEST POP PUSH2 0x427B PUSH1 0x20 PUSH2 0x4265 PUSH2 0x4260 DUP8 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x3761 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x4273 PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x428B PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4521 JUMPI PUSH0 SWAP2 PUSH2 0x44F3 JUMPI JUMPDEST POP SWAP1 PUSH2 0x42A8 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP5 PUSH2 0x42D5 PUSH1 0x20 PUSH2 0x42BF PUSH2 0x42BA PUSH0 PUSH2 0x156D JUMP JUMPDEST PUSH2 0x3BB JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x42CD PUSH2 0xD2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1170 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x42E5 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x44EE JUMPI PUSH2 0x4300 SWAP2 PUSH0 SWAP2 PUSH2 0x44C0 JUMPI JUMPDEST POP PUSH2 0x36D4 JUMP JUMPDEST SWAP4 PUSH2 0x4312 PUSH2 0x430D DUP3 PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x10AB JUMP JUMPDEST SWAP5 PUSH2 0x431C PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP8 JUMPDEST DUP9 PUSH2 0x4339 PUSH2 0x4333 PUSH2 0x432E DUP7 PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x44B4 JUMPI PUSH2 0x4352 PUSH2 0x434D DUP5 DUP12 SWAP1 PUSH2 0x1C77 JUMP JUMPDEST PUSH2 0x1C97 JUMP JUMPDEST PUSH2 0x4364 PUSH2 0x435E DUP7 PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x43E3 JUMPI PUSH2 0x439C PUSH2 0x43DD SWAP2 PUSH2 0x4396 PUSH2 0x4387 PUSH2 0x4382 DUP14 DUP11 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x4390 DUP11 PUSH2 0x37B4 JUMP JUMPDEST SWAP1 PUSH2 0x482D JUMP JUMPDEST SWAP1 PUSH2 0x1891 JUMP JUMPDEST SWAP9 PUSH2 0x43D7 PUSH2 0x43C5 PUSH2 0x43B6 PUSH2 0x43B1 DUP10 DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x43BF DUP11 PUSH2 0x37B4 JUMP JUMPDEST SWAP1 PUSH2 0x482D JUMP JUMPDEST PUSH2 0x43D2 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST JUMPDEST PUSH2 0x10EE JUMP JUMPDEST SWAP8 PUSH2 0x431E JUMP JUMPDEST SWAP8 PUSH2 0x43ED DUP3 PUSH2 0x373D JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0xB27B5E75 SWAP3 PUSH2 0x4409 PUSH2 0x4404 DUP8 DUP6 SWAP1 PUSH2 0x1C77 JUMP JUMPDEST PUSH2 0x1C97 JUMP JUMPDEST SWAP1 PUSH2 0x4439 DUP9 SWAP6 PUSH2 0x4444 PUSH2 0x4425 PUSH2 0x4420 DUP14 DUP10 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x442D PUSH2 0xD2 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1170 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x1832 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x44AF JUMPI PUSH2 0x4469 PUSH2 0x447C SWAP2 PUSH2 0x43DD SWAP5 PUSH0 SWAP2 PUSH2 0x4481 JUMPI JUMPDEST POP SWAP12 DUP13 SWAP1 PUSH2 0x1891 JUMP JUMPDEST SWAP11 PUSH2 0x4477 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x43D8 JUMP JUMPDEST PUSH2 0x44A2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x44A8 JUMPI JUMPDEST PUSH2 0x449A DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1185 JUMP JUMPDEST PUSH0 PUSH2 0x4460 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4490 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP6 SWAP8 POP POP POP POP POP POP SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x44E1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x44E7 JUMPI JUMPDEST PUSH2 0x44D9 DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1589 JUMP JUMPDEST PUSH0 PUSH2 0x42FA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x44CF JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x4514 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x451A JUMPI JUMPDEST PUSH2 0x450C DUP2 DUP4 PUSH2 0x167 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 PUSH2 0x429D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4502 JUMP JUMPDEST PUSH2 0x11A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x453D PUSH2 0x4538 PUSH2 0x4542 SWAP3 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x390 JUMP JUMPDEST PUSH2 0x527 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x454E SWAP1 PUSH2 0x527 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x455C JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST SWAP1 PUSH2 0x458A PUSH2 0x4585 PUSH2 0x4590 SWAP4 PUSH2 0x4574 PUSH2 0x1ED2 JUMP JUMPDEST POP SWAP3 PUSH2 0x4580 PUSH1 0x12 PUSH2 0x4529 JUMP JUMPDEST PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x4545 JUMP JUMPDEST SWAP1 PUSH2 0x1D06 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x459E PUSH2 0x4235 JUMP JUMPDEST POP PUSH2 0x45A8 DUP4 PUSH2 0x10AB JUMP JUMPDEST SWAP2 PUSH2 0x45B1 PUSH2 0x1ED2 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x45C5 PUSH2 0x45BF DUP8 PUSH2 0x527 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST LT ISZERO PUSH2 0x4601 JUMPI PUSH2 0x45FC SWAP1 PUSH2 0x45F7 PUSH2 0x45E5 PUSH2 0x45E0 DUP7 DUP5 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x17CB JUMP JUMPDEST PUSH2 0x45F2 DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x45B2 JUMP JUMPDEST POP SWAP3 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x4619 PUSH2 0x4613 PUSH2 0x4863 JUMP JUMPDEST ISZERO PUSH2 0xDE9 JUMP JUMPDEST PUSH2 0x461F JUMPI JUMP JUMPDEST PUSH2 0x4627 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4657 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x466C SWAP1 PUSH2 0x4667 PUSH2 0x4608 JUMP JUMPDEST PUSH2 0x466E JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x4689 PUSH2 0x4683 PUSH2 0x467E PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xF9 JUMP JUMPDEST SWAP2 PUSH2 0xF9 JUMP JUMPDEST EQ PUSH2 0x4699 JUMPI PUSH2 0x4697 SWAP1 PUSH2 0x35E4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x46DC PUSH2 0x46A5 PUSH0 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x46AD PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x46E9 SWAP1 PUSH2 0x465B JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x4702 PUSH2 0x46FC PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x4724 JUMPI PUSH2 0x4722 SWAP1 PUSH0 PUSH2 0x471C PUSH2 0x4717 PUSH2 0xC08 JUMP JUMPDEST PUSH2 0x46EB JUMP JUMPDEST ADD PUSH2 0x35C4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x475F SWAP1 PUSH2 0x4730 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x4776 PUSH2 0x4770 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH2 0x477D JUMPI JUMP JUMPDEST PUSH2 0x4785 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x47B5 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x47D0 PUSH2 0x47CB DUP4 PUSH2 0x1A5 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x47F0 JUMPI PUSH2 0x47E5 RETURNDATASIZE PUSH2 0x47BE JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x47F8 PUSH2 0x47B9 JUMP JUMPDEST SWAP1 PUSH2 0x47EE JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x482A SWAP4 PUSH2 0x480C PUSH2 0x47B9 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x4821 PUSH2 0x47D5 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x4881 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4856 PUSH2 0x4851 PUSH2 0x485C SWAP4 PUSH2 0x4840 PUSH2 0x1ED2 JUMP JUMPDEST POP SWAP3 PUSH2 0x484C PUSH1 0x12 PUSH2 0x4529 JUMP JUMPDEST PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x4545 JUMP JUMPDEST SWAP1 PUSH2 0x1CA4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x486B PUSH2 0x485F JUMP JUMPDEST POP PUSH2 0x487E PUSH0 PUSH2 0x4878 PUSH2 0x3674 JUMP JUMPDEST ADD PUSH2 0xD2E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4895 SWAP1 PUSH2 0x488E PUSH2 0x47B9 JUMP JUMPDEST POP ISZERO PUSH2 0xDE9 JUMP JUMPDEST PUSH0 EQ PUSH2 0x48A1 JUMPI POP PUSH2 0x4925 JUMP JUMPDEST PUSH2 0x48AA DUP3 PUSH2 0x419B JUMP JUMPDEST PUSH2 0x48BC PUSH2 0x48B6 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ DUP1 PUSH2 0x490A JUMPI JUMPDEST PUSH2 0x48CB JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x4906 SWAP1 PUSH2 0x48D7 PUSH2 0xD2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x42B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x491F PUSH2 0x4919 PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST EQ PUSH2 0x48C3 JUMP JUMPDEST PUSH2 0x492E DUP2 PUSH2 0x419B JUMP JUMPDEST PUSH2 0x4940 PUSH2 0x493A PUSH0 PUSH2 0x10D2 JUMP JUMPDEST SWAP2 PUSH2 0x527 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x494F JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x4957 PUSH2 0xD2 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4987 PUSH1 0x4 DUP3 ADD PUSH2 0x271 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xF8 SUB DUP11 0xA7 0xE5 SWAP9 CODESIZE MUL CODESIZE PUSH25 0xCB80CD8BCADA06C979107D1413DEE9EDA6BE8A489664736F6C PUSH4 0x43000819 STOP CALLER ","sourceMap":"2025:15474:51:-:0;;;;;;;;;-1:-1:-1;2025:15474:51;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2114:33::-;;;;;:::i;:::-;;:::o;2025:15474::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;2025:15474:51:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;2622:62:2;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;2025:15474:51:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;2025:15474:51:-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;2025:15474:51:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;2025:15474:51:-;;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;2025:15474:51:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;2914:7:51;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;2025:15474:51;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2836:145::-;2934:39;2836:145;;2945:28;2836:145;2945:28;:::i;:::-;2934:39;;:::i;:::-;2836:145::o;:::-;;;;;:::i;:::-;:::o;2025:15474::-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;9703:663::-;;;;;;;;9941:20;;:::i;:::-;10017:6;10003:28;10017:13;:6;;:13;;:::i;:::-;10003:28;:::i;:::-;10048:8;:15;:8;:15;:::i;:::-;:20;;10067:1;10048:20;:::i;:::-;;;:::i;:::-;;10044:234;;;;10102:1;10090:13;10102:1;10090:13;:::i;:::-;10124:3;10105:1;:17;;10109:13;:6;;:13;;:::i;:::-;10105:17;:::i;:::-;;;:::i;:::-;;;;;10163:35;10170:6;10163:35;:27;:17;10170:9;;:6;;10177:1;10170:9;;:::i;:::-;;:::i;:::-;10163:17;:::i;:::-;:27;:::i;:::-;;10191:6;10163:35;10191:6;10163:35;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10124:3;10163:35;10148:50;10163:35;;;;;10124:3;10148:9;:50;:9;10158:1;;10148:50;;;:::i;:::-;;:::i;:::-;10124:3;:::i;:::-;10090:13;;10163:35;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10105:17::-;;;;10297:61;10105:17;;;;;;;10044:234;10324:6;;10332:7;;10341:5;10348:9;10297:61;;:::i;:::-;10290:68;:::o;10044:234::-;10258:8;;;;10297:61;10258:8;;;;;;;10044:234;;2025:15474;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2640:188:51;2792:28;2781:39;2640:188;;;:::i;:::-;2759:10;;;:::i;:::-;2792:28;:::i;:::-;2781:39;;:::i;:::-;2640:188::o;:::-;;;;:::i;:::-;:::o;2025:15474::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3635:5555;;;;;;;;;;3912:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3635:5555;3894:39;3954:6;3946:48;3954:13;:6;;:13;;:::i;:::-;:17;;3970:1;3954:17;:::i;:::-;;;:::i;:::-;;3946:48;:::i;:::-;4005:82;4013:8;:32;;4032:13;4013:15;:8;:15;:::i;:::-;4032:6;;:13;;:::i;:::-;4013:32;:::i;:::-;;;:::i;:::-;;4005:82;:::i;:::-;4098:80;4106:7;:31;;4124:13;4106:14;:7;;:14;;:::i;:::-;4124:6;;:13;;:::i;:::-;4106:31;:::i;:::-;;;:::i;:::-;;4098:80;:::i;:::-;4195:15;:8;:15;:::i;:::-;:20;;4214:1;4195:20;:::i;:::-;;;:::i;:::-;;4191:180;;3635:5555;4427:8;4411:60;4427:8;;;4437:6;;;;4445:7;;4454:5;4461:9;;4411:60;;:::i;:::-;4501:1;4489:13;4501:1;4489:13;:::i;:::-;4538:3;4504:1;:32;;4508:28;:21;:4;:21;;:28;:::i;:::-;4504:32;:::i;:::-;;;:::i;:::-;;;;;4562:25;;:22;:4;:22;;4585:1;4562:25;;:::i;:::-;;:::i;:::-;:29;;4590:1;4562:29;:::i;:::-;;;:::i;:::-;;4558:1878;;4538:3;;;4489:13;4538:3;:::i;:::-;4489:13;;4558:1878;4628:32;;:6;;4635:24;;:21;4628:6;4635:4;:21;;4657:1;4635:24;;:::i;:::-;;:::i;:::-;4628:32;;:::i;:::-;;:::i;:::-;4685:5;;;:18;;4694:9;4685:18;:::i;:::-;;;:::i;:::-;;4681:240;;4971:4;:68;;5014:25;;:22;4971:39;;:13;4941:187;4971:4;:13;;4985:24;;:21;:4;:21;;5007:1;4985:24;;:::i;:::-;;:::i;:::-;4971:39;;:::i;:::-;;:::i;:::-;5014:4;:22;;5037:1;5014:25;;:::i;:::-;;:::i;:::-;4971:68;:::i;:::-;;;:::i;:::-;;;4941:187;:::i;:::-;5169:23;:13;5176:5;5169:13;:::i;:::-;:23;:::i;:::-;:46;:23;5193:6;;5209:4;5169:46;5201:13;5209:4;5201:13;:::i;:::-;5169:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;5264:38;;5277:25;;5169:46;;5277:22;5169:46;5234:165;5169:46;;;;;4558:1878;5149:66;5277:4;:22;;5300:1;5277:25;;:::i;:::-;;:::i;:::-;5264:38;:::i;:::-;;;:::i;:::-;;;5234:165;:::i;:::-;5427:5;5420:76;:26;:13;5427:5;5420:13;:::i;:::-;:26;:::i;:::-;;5447:6;5420:76;;5447:6;5463:4;5420:76;5470:25;;:22;5455:13;5463:4;5455:13;:::i;:::-;5470:4;:22;;5493:1;5470:25;;:::i;:::-;;:::i;:::-;5420:76;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;4558:1878;5541:8;:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4558:1878;5517:51;5587:21;:13;5594:5;5587:13;:::i;:::-;:21;:::i;:::-;;:63;:21;;5609:13;5587:63;;5624:25;;:22;5609:13;5624:4;:22;;5647:1;5624:25;;:::i;:::-;;:::i;:::-;5587:63;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4558:1878;5675:5;;;;:25;;5692:7;5675:25;:::i;:::-;;;:::i;:::-;;5671:750;;;;5760:13;;;5743:273;;:42;:31;:273;5760:13;;5743:31;:::i;:::-;:42;:::i;:::-;;:273;:42;5812:5;5844:9;;5880:4;5932:29;:22;5880:25;;:4;:22;:4;:22;;:25;:::i;:::-;;:::i;:::-;5932:4;:22;;:29;:::i;:::-;:34;;5965:1;5932:34;:::i;:::-;;;:::i;:::-;;:61;;;;;;5743:273;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4538:3;5743:273;5725:291;5743:273;;;;;5932:61;5725:4;:291;:14;:4;:14;:291;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;5671:750;4558:1878;;;;5743:273;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5932:61::-;5988:4;5980:13;5988:4;5980:13;:::i;:::-;5932:61;;;5671:750;6100:13;6083:318;6100:13;6083:318;6100:13;6083:318;6100:13;6083:44;:31;:318;6100:13;;;6083:31;:::i;:::-;:44;:::i;:::-;;6317:29;:22;6265:25;;6083:44;6154:5;6194:7;6229:9;6265:4;:22;:4;:22;;:25;:::i;:::-;;:::i;:::-;6317:4;:22;;:29;:::i;:::-;:34;;6350:1;6317:34;:::i;:::-;;;:::i;:::-;;:61;;;;;;6083:318;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4538:3;6083:318;6065:336;6083:318;;;;;6317:61;6065:4;:336;:14;:4;:14;:336;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;5671:750;;6083:318;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6317:61::-;6373:4;6365:13;6373:4;6365:13;:::i;:::-;6317:61;;;5587:63;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5541:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5420:76::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5169:46::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4681:240::-;4735:5;4728:26;:13;:76;4735:5;4728:13;:::i;:::-;:26;:::i;:::-;;4755:6;4728:76;;4755:6;4771:4;4728:76;4778:25;;:22;4763:13;4771:4;4763:13;:::i;:::-;4778:4;:22;;4801:1;4778:25;;:::i;:::-;;:::i;:::-;4728:76;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4538:3;4728:76;;;4681:240;4845:4;4827:43;4845:25;;:22;:4;:22;;4868:1;4845:25;;:::i;:::-;;:::i;:::-;4827:43;:14;:4;:14;:43;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;4893:8;;4728:76;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;4504:32::-;;;;;;;;6486:42;4504:32;6486:42;:27;:17;6493:9;6486:17;:::i;:::-;:27;:::i;:::-;;6522:4;6486:42;6514:13;6522:4;6514:13;:::i;:::-;6486:42;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;6651:33;6486:42;;;;;4484:1963;6459:69;6547:16;6539:99;6547:16;:34;;6567:14;;:4;:14;;:::i;:::-;6547:34;:::i;:::-;;;:::i;:::-;;;6539:99;:::i;:::-;6651:33;:::i;:::-;6714:8;:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4484:1963;6695:41;6766:1;6754:13;6766:1;6754:13;:::i;:::-;6804:3;6769:1;:33;;6773:29;:22;:4;:22;;:29;:::i;:::-;6769:33;:::i;:::-;;;:::i;:::-;;;;;6828:4;;;;:26;;:23;:4;:23;;6852:1;6828:26;;:::i;:::-;;:::i;:::-;:30;;6857:1;6828:30;:::i;:::-;;;:::i;:::-;;6824:2348;;6804:3;;;;;;6754:13;6804:3;:::i;:::-;6754:13;;6824:2348;6976:64;6977:37;7079:45;6895:7;6977:26;;:23;6895:34;;:7;6903:25;;6895:7;6903:22;7080:32;6895:7;6903:4;:22;;:25;:::i;:::-;;:::i;:::-;6895:34;;:::i;:::-;;:::i;:::-;6977:4;:23;;7001:1;6977:26;;:::i;:::-;;:::i;:::-;:37;:::i;:::-;7018:22;;:4;:22;;:::i;:::-;6976:64;;:::i;:::-;7098:14;;:4;:14;;:::i;:::-;7080:32;;:::i;:::-;7116:8;7079:45;;:::i;:::-;7163:8;;7196:5;;:18;;7205:9;7196:18;:::i;:::-;;;:::i;:::-;;7192:146;;7358:76;7366:9;:13;;7378:1;7366:13;:::i;:::-;;;:::i;:::-;;7358:76;:::i;:::-;7455:172;7485:9;:29;;7498:16;7485:29;:::i;:::-;;;:::i;:::-;;;7455:172;:::i;:::-;7672:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;6824:2348;7648:51;7718:25;:17;7725:9;7718:17;:::i;:::-;:25;:::i;:::-;;:51;:25;7744:13;;7759:9;7718:51;;7759:9;7718:51;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;7892:86;7718:51;;;6824:2348;7790:17;;;:::i;:::-;7830:5;;:25;;7847:7;7830:25;:::i;:::-;;;:::i;:::-;;7826:487;;;;7892:31;:42;7909:13;7892:31;:::i;:::-;:42;:::i;:::-;;7935:9;7892:86;;7935:9;7946:5;7892:86;7946:5;7953:9;7964:13;7972:4;7964:13;:::i;:::-;7892:86;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;7826:487;7880:98;7826:487;;8333:26;8350:9;8333:14;:4;:14;:26;:::i;:::-;8491:28;8405:37;8432:9;8405:37;:::i;:::-;8491:9;8503:16;8491:28;;:::i;:::-;8656:36;8563:47;8590:19;8563:47;:::i;:::-;8656:19;8678:14;8656:36;;:::i;:::-;8728:5;8721:38;;:23;:13;8728:5;8721:13;:::i;:::-;:23;:::i;:::-;;8753:4;8721:38;8745:13;8753:4;8745:13;:::i;:::-;8721:38;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;8713:103;8721:38;;;;;7826:487;8763:16;8721:58;;8763:16;8721:58;:::i;:::-;;;:::i;:::-;;;8713:103;:::i;:::-;8858:26;;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;7826:487;8835:49;8922:8;:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;8965:51;8922:22;;;;;7826:487;8903:41;8972:5;8965:22;:13;8972:5;8965:13;:::i;:::-;:22;:::i;:::-;:51;;:22;8988:9;8999:16;8965:51;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;9035:52;8965:51;;;7826:487;9042:5;9035:22;:13;9042:5;9035:13;:::i;:::-;:22;:::i;:::-;:52;;:22;9058:12;9072:14;9035:52;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9106:50;9035:52;9106:22;9035:52;9106:13;9035:52;;;7826:487;9113:5;9106:13;:::i;:::-;:22;:::i;:::-;:50;;:22;9129:8;9139:16;9106:50;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6804:3;9106:50;;;7826:487;6824:2348;;;;;;;;9106:50;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;9035:52::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;8965:51::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;8922:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8858:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8721:38::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7892:86::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7826:487::-;8039:31;:44;8056:13;8039:31;:::i;:::-;:44;:::i;:::-;;8110:9;8039:254;;8110:9;8154:7;8039:254;8154:7;8189:5;;8221:9;8257:13;8265:4;8257:13;:::i;:::-;8039:254;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;7826:487;8027:266;7826:487;;;8039:254;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7718:51::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;7672:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7192:146::-;7239:48;7246:9;;7239:26;:17;7246:9;7239:17;:::i;:::-;:26;:::i;:::-;:48;;:26;7266:9;7277;7239:48;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6804:3;7239:48;;;7192:146;7310:8;;;7239:48;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;6769:33::-;;;;;;;;;;3635:5555::o;6714:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6486:42::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4191:180::-;4249:1;;;4237:13;4249:1;;;;;;;;;4237:13;:::i;:::-;4271:3;4252:1;:17;;4256:13;:6;;:13;;:::i;:::-;4252:17;:::i;:::-;;;:::i;:::-;;;;;4309:35;4316:6;4309:35;4316:6;4309:27;:17;4316:9;;:6;;;4323:1;4316:9;;:::i;:::-;;:::i;:::-;4309:17;:::i;:::-;:27;:::i;:::-;:35;:27;:35;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4271:3;4309:35;;4295:49;4309:35;;;;;4271:3;4295:8;:49;:8;4304:1;;4295:49;;;:::i;:::-;;:::i;:::-;4271:3;:::i;:::-;4237:13;;4309:35;4295:49;4309:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;4252:17::-;;;;;;;4411:60;4252:17;;;;;;4191:180;;;;;;;3912:21;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2025:15474:51:-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;2989:84:51:-;;;;:::i;:::-;:::o;2025:15474::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2658:162:0;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2025:15474:51;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3774:248:0:-;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;2025:15474:51:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;10861:3208::-;;;;;;;;11077:20;;:::i;:::-;11188:8;;11198:6;;11206:9;;11162:54;;;;:::i;:::-;;;;:::i;:::-;11110:106;;;11283:6;;;:13;;;:::i;:::-;11311:10;;11336;;;;11361:1;11377;11393;11409;11425;;11455:6;;;:13;;;:::i;:::-;11471:1;11455:17;;;:::i;:::-;;;;:::i;:::-;11441:32;;;:::i;:::-;11502:6;;;:13;;;:::i;:::-;11518:1;11502:17;;;:::i;:::-;;;;:::i;:::-;11488:32;;;:::i;:::-;11549:6;;;:13;;;:::i;:::-;11565:1;11549:17;;;:::i;:::-;;;;:::i;:::-;11535:32;;;:::i;:::-;11596:6;;:13;;;:::i;:::-;11612:1;11596:17;;;:::i;:::-;;;;:::i;:::-;11582:32;;;:::i;:::-;11629:8;11255:393;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;11678:5;11714:10;11766:4;11800:1;;11788:13;;;:::i;:::-;11822:3;11803:1;:17;;11807:13;11803:1;11807:6;;:13;;:::i;:::-;11803:17;:::i;:::-;;;:::i;:::-;;;;;11889:26;;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;11873:43;11889:26;;;;;11822:3;11873:43;;:::i;:::-;11947:6;:9;;:6;;11954:1;11947:9;;:::i;:::-;;:::i;:::-;11992;12039:10;;:7;;12047:1;12039:10;;:::i;:::-;;:::i;:::-;12105:22;12089:13;;:10;12100:1;12089:13;;:::i;:::-;;:::i;:::-;12105:22;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;12088:52;12105:22;12089:38;12105:22;;;;;11822:3;12089:38;;:::i;:::-;12131:9;12088:52;;:::i;:::-;12173:13;;:28;;12189:12;12173:28;:::i;:::-;;;:::i;:::-;;12244:10;;:72;;;;12257:13;:28;:13;:28;:::i;:::-;12244:72;12337:10;;:40;;;12244:72;12333:1293;;;;12426:17;;:29;12459:22;12426:17;12446:9;12426:29;;:::i;:::-;12459:22;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;12425:56;12459:22;;;;;12333:1293;12425:56;;:::i;:::-;12525:16;12500:41;12525:16;12500:41;:21;12525:16;12500:5;:21;:41;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;12566:5;:19;;12575:10;12566:19;:::i;:::-;;;:::i;:::-;;12562:479;;;;12629:16;;12715:32;:30;:21;:32;12629:16;12730:5;12715:21;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;13136:72;12687:61;12715:32;;12687:61;13136:72;12715:32;11822:3;12715:32;;;;;12562:479;12687:61;;:::i;:::-;;;:::i;:::-;12562:479;13061:56;13116:1;13061:56;:22;:5;:22;;13084:5;:28;;:5;:28;;:::i;:::-;13061:56;;;:::i;:::-;;:::i;:::-;13160:28;;13136:23;:5;:23;;13160:5;:28;;:::i;:::-;13136:72;;;:::i;:::-;;:::i;:::-;13227:30;:28;:5;:28;:30;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;12333:1293;11822:3;:::i;:::-;11788:13;;12715:32;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;12562:479::-;12816:12;:20;12960:37;12816:12;;:20;:::i;:::-;;;12960:37;:35;:26;12863:10;12900:5;12942:16;12975:10;12960:26;:::i;:::-;:35;:::i;:::-;;:37;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;12932:66;12816:205;12960:37;12932:66;12816:205;12960:37;12816:205;12960:37;;;;;12562:479;12932:66;;:::i;:::-;;;:::i;:::-;12816:205;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;13136:72;11822:3;12816:205;13136:72;12816:205;;;;;12562:479;12797:224;12562:479;;12816:205;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;12960:37::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;12459:22::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;12333:1293::-;13284:10;;;11822:3;13284:10;;13283:11;13284:10;;;13283:11;;:::i;:::-;:41;;;12333:1293;13279:347;;12333:1293;;;;;13279:347;13485:75;13372:17;13345:44;13485:75;13372:17;13345:44;:23;:5;:23;:44;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;13408:58;13465:1;13408:58;:23;:5;:23;;13432:5;:29;;:5;:29;;:::i;:::-;13408:58;;;:::i;:::-;;:::i;:::-;13510:29;;13485:24;:5;:24;;13510:5;:29;;:::i;:::-;13485:75;;;:::i;:::-;;:::i;:::-;13579:31;:29;:5;:29;:31;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;13279:347;;;;13283:41;13298:17;;:26;;13318:6;13298:26;:::i;:::-;;;:::i;:::-;;13283:41;;12337:40;12351:17;;:26;;12371:6;12351:26;:::i;:::-;;;:::i;:::-;;12337:40;;12244:72;12288:28;:12;:28;:::i;:::-;12244:72;;12105:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;11889:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11803:17::-;;;;;;;;;;;;13674:61;13682:22;:5;:22;;13706:28;;:5;:28;;:::i;:::-;13674:61;;:::i;:::-;13649:22;:5;:22;:86;13772:62;13780:23;:5;:23;;13805:28;;:5;:28;;:::i;:::-;13772:62;;:::i;:::-;13746:23;:5;:23;:88;13871:63;13879:23;:5;:23;;13904:29;;:5;:29;;:::i;:::-;13871:63;;:::i;:::-;13845:23;:5;:23;:89;13972:64;13980:24;:5;:24;;14006:29;;:5;:29;;:::i;:::-;13972:64;;:::i;:::-;13945:24;:5;:24;:91;14049:12;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;15195:315:51:-;15311:22;15195:315;15271:7;;:::i;:::-;15311:8;:22;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;15363:21;15311:22;;;;;15195:315;15291:42;15363:8;:21;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;15433:22;15422:34;15363:21;15421:48;15363:21;;;;;15195:315;15344:40;15433:9;:22;:::i;:::-;15422:34;;:::i;:::-;15421:48;:::i;:::-;15480:22;:::o;15363:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;15311:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;2025:15474:51:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;887:96:4;940:7;;:::i;:::-;966:10;;959:17;:::o;2025:15474:51:-;;;:::o;15727:947::-;;;;15889:7;;:::i;:::-;15898:16;;;:::i;:::-;15962:9;15947:36;;:34;:25;15962:9;15947:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;15727:947;15927:56;16011:1;15994:18;16011:1;15994:18;:::i;:::-;16070:8;:26;;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;16054:43;16070:26;;;;;15727:947;16054:43;;:::i;:::-;16152:6;16138:28;16152:13;:6;:13;:::i;:::-;16138:28;:::i;:::-;16196:1;16184:13;16196:1;16184:13;:::i;:::-;16179:448;16218:3;16199:1;:17;;16203:13;:6;:13;:::i;:::-;16199:17;:::i;:::-;;;:::i;:::-;;;;;16242:9;;:6;16249:1;16242:9;;:::i;:::-;;:::i;:::-;:22;;16255:9;16242:22;:::i;:::-;;;:::i;:::-;;16238:378;;;;16285:43;16218:3;16303:8;16295:33;16303:11;;:8;;:11;:::i;:::-;;:::i;:::-;16295:33;16316:11;16295:33;:::i;:::-;;;:::i;:::-;16285:43;;:::i;:::-;16371:8;16347:49;16363:33;16371:11;;:8;16380:1;16371:11;;:::i;:::-;;:::i;:::-;16363:33;16384:11;16363:33;:::i;:::-;;;:::i;:::-;16347:49;:10;16358:1;;16347:49;;;:::i;:::-;;:::i;:::-;16238:378;16218:3;:::i;:::-;16184:13;;;16238:378;16457:12;:26;:12;:26;:::i;:::-;;:61;:26;16484:6;:9;;:6;16491:1;16484:9;;:::i;:::-;;:::i;:::-;16495;16457:61;16495:9;16506:8;16457:61;16506:11;;:8;16515:1;16506:11;;:::i;:::-;;:::i;:::-;16457:61;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;16537:19;16575:25;16457:61;16218:3;16457:61;;;;;16238:378;16437:81;16547:9;;16537:19;;:::i;:::-;16591:9;16575:25;:10;16586:1;;16575:25;;;:::i;:::-;;:::i;:::-;16238:378;;16457:61;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;16199:17::-;;;;;;;;;16639:27;;:::o;16070:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;15947:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2025:15474::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;17353:143::-;;17466:21;17473:13;17456:32;17353:143;17429:7;;:::i;:::-;17456:6;17473:2;:13;:2;:13;:::i;:::-;;:::i;:::-;17466:21;:::i;:::-;17456:32;;:::i;:::-;17449:39;:::o;14286:259::-;;;;14362:16;;:::i;:::-;14428:4;14414:19;14428:4;14414:19;:::i;:::-;14449:9;;;:::i;:::-;14470:3;14460:1;:8;;14464:4;14460:8;:::i;:::-;;;:::i;:::-;;;;;14470:3;14499;14490:15;14499:6;;:3;14503:1;14499:6;;:::i;:::-;;:::i;:::-;14490:15;:3;14494:1;;14490:15;;;:::i;:::-;;:::i;:::-;14470:3;:::i;:::-;14449:9;;14460:8;;;;;14527:10;:::o;7084:141:1:-;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2025:15474:51;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;16922:141:51:-;;17033:21;17040:13;17023:32;16922:141;16996:7;;:::i;:::-;17023:6;17040:2;:13;:2;:13;:::i;:::-;;:::i;:::-;17033:21;:::i;:::-;17023:32;;:::i;:::-;17016:39;:::o;2025:15474::-;;;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"3776200","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","checkRebalance(uint256[],address[],uint256[],uint256,address,address)":"infinite","initialize(address)":"infinite","owner()":"2796","proxiableUUID()":"infinite","rebalance(uint256[],address[],uint256[],uint256,address,address,address)":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_checkRebalance(uint256[] memory,address[] calldata,uint256[] calldata,uint256,address)":"infinite","_resize(uint256[] memory,uint256)":"infinite","calculateNetAmountAfterFee(uint256)":"infinite","calculateTotalValueScaled(uint256[] memory,address[] memory,address)":"infinite","scaleDown(uint256,uint256)":"infinite","scaleUp(uint256,uint256)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","checkRebalance(uint256[],address[],uint256[],uint256,address,address)":"997146f5","initialize(address)":"c4d66de8","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","rebalance(uint256[],address[],uint256[],uint256,address,address,address)":"f0bf7714","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"weights\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseAsset\",\"type\":\"address\"}],\"name\":\"checkRebalance\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"valuations\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"finalUsdBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"overweightVaultsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underweightVaultsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalActiveWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"overweightVaults\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"overweightAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"underweightVaults\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"underweightAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"}],\"internalType\":\"struct BaluniV1Rebalancer.RebalanceVars\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"weights\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseAsset\",\"type\":\"address\"}],\"name\":\"rebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"checkRebalance(uint256[],address[],uint256[],uint256,address,address)\":{\"details\":\"Checks if a rebalance is needed based on the given parameters.\",\"params\":{\"assets\":\"An array of token addresses.\",\"balances\":\"An array of token balances.\",\"baseAsset\":\"The address of the base asset.\",\"limit\":\"The maximum allowed difference between the current and target weights.\",\"sender\":\"The address of the caller.\",\"weights\":\"An array of token weights.\"},\"returns\":{\"_0\":\"A struct containing the rebalance variables.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"rebalance(uint256[],address[],uint256[],uint256,address,address,address)\":{\"details\":\"Rebalances the portfolio by buying and selling assets based on their weights.\",\"params\":{\"assets\":\"An array of asset addresses.\",\"balances\":\"An array of current asset balances.\",\"baseAsset\":\"The base asset used for rebalancing.\",\"limit\":\"The maximum amount of assets to be rebalanced.\",\"receiver\":\"The address to which the assets will be transferred.\",\"sender\":\"The address from which the assets will be transferred.\",\"weights\":\"An array of asset weights.\"}},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1Rebalancer.sol\":\"BaluniV1Rebalancer\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title The interface for the Uniswap V3 Factory\\n/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\\ninterface IUniswapV3Factory {\\n    /// @notice Emitted when the owner of the factory is changed\\n    /// @param oldOwner The owner before the owner was changed\\n    /// @param newOwner The owner after the owner was changed\\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\\n\\n    /// @notice Emitted when a pool is created\\n    /// @param token0 The first token of the pool by address sort order\\n    /// @param token1 The second token of the pool by address sort order\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\\n    /// @param pool The address of the created pool\\n    event PoolCreated(\\n        address indexed token0,\\n        address indexed token1,\\n        uint24 indexed fee,\\n        int24 tickSpacing,\\n        address pool\\n    );\\n\\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\\n    /// @param fee The enabled fee, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\\n\\n    /// @notice Returns the current owner of the factory\\n    /// @dev Can be changed by the current owner via setOwner\\n    /// @return The address of the factory owner\\n    function owner() external view returns (address);\\n\\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\\n    /// @return The tick spacing\\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\\n\\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\\n    /// @param tokenA The contract address of either token0 or token1\\n    /// @param tokenB The contract address of the other token\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @return pool The pool address\\n    function getPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external view returns (address pool);\\n\\n    /// @notice Creates a pool for the given two tokens and fee\\n    /// @param tokenA One of the two tokens in the desired pool\\n    /// @param tokenB The other of the two tokens in the desired pool\\n    /// @param fee The desired fee for the pool\\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\\n    /// are invalid.\\n    /// @return pool The address of the newly created pool\\n    function createPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external returns (address pool);\\n\\n    /// @notice Updates the owner of the factory\\n    /// @dev Must be called by the current owner\\n    /// @param _owner The new owner of the factory\\n    function setOwner(address _owner) external;\\n\\n    /// @notice Enables a fee amount with the given tickSpacing\\n    /// @dev Fee amounts may never be removed once enabled\\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\\n}\\n\",\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Callback for IUniswapV3PoolActions#swap\\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\\ninterface IUniswapV3SwapCallback {\\n    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\\n    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\\n    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\\n    function uniswapV3SwapCallback(\\n        int256 amount0Delta,\\n        int256 amount1Delta,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.7.5;\\npragma abicoder v2;\\n\\nimport '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';\\n\\n/// @title Router token swapping functionality\\n/// @notice Functions for swapping tokens via Uniswap V3\\ninterface ISwapRouter is IUniswapV3SwapCallback {\\n    struct ExactInputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Swaps `amountIn` of one token for as much as possible of another token\\n    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\\n    /// @return amountOut The amount of the received token\\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\\n\\n    struct ExactInputParams {\\n        bytes path;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n    }\\n\\n    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\\n    /// @return amountOut The amount of the received token\\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\\n\\n    struct ExactOutputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountOut;\\n        uint256 amountInMaximum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Swaps as little as possible of one token for `amountOut` of another token\\n    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\\n    /// @return amountIn The amount of the input token\\n    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\\n\\n    struct ExactOutputParams {\\n        bytes path;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountOut;\\n        uint256 amountInMaximum;\\n    }\\n\\n    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\\n    /// @return amountIn The amount of the input token\\n    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\\n}\\n\",\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/I1inchSpotAgg.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\n\\r\\ninterface I1inchSpotAgg {\\r\\n  function getRate(IERC20 srcToken, IERC20 dstToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n\\r\\n  function getRateToEth(IERC20 srcToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n}\\r\\n\",\"keccak256\":\"0x29417a441b068263f01adb36906270f1b76431d3017d214f506824ee41ada1b3\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Agent.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Agent {\\r\\n  struct Call {\\r\\n    address to;\\r\\n    uint256 value;\\r\\n    bytes data;\\r\\n  }\\r\\n\\r\\n  function execute(Call[] memory calls, address[] memory tokensReturn) external;\\r\\n}\\r\\n\",\"keccak256\":\"0x1bbf5ddbc4f525451e727d6997e6a20a6238d69232b58b3813760a16e7f60bbe\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Router.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\nimport '@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol';\\r\\nimport './I1inchSpotAgg.sol';\\r\\nimport './IBaluniV1Agent.sol';\\r\\n\\r\\ninterface IBaluniV1Router {\\r\\n    struct Call {\\r\\n        address to;\\r\\n        uint256 value;\\r\\n        bytes data;\\r\\n    }\\r\\n\\r\\n    // Variables\\r\\n    function _MAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function _BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function _BPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getTokens() external view returns (address[] memory);\\r\\n\\r\\n    function USDC() external view returns (IERC20);\\r\\n\\r\\n    function WNATIVE() external view returns (address);\\r\\n\\r\\n    function oracle() external view returns (address);\\r\\n\\r\\n    function uniswapRouter() external view returns (address);\\r\\n\\r\\n    function uniswapFactory() external view returns (address);\\r\\n\\r\\n    function baluniFactory() external view returns (address);\\r\\n\\r\\n    function baluniPeriphery() external view returns (address);\\r\\n\\r\\n    function agentFactory() external view returns (address);\\r\\n\\r\\n    function marketOracle() external view returns (address);\\r\\n\\r\\n    function rebalancer() external view returns (address);\\r\\n\\r\\n    function treasury() external view returns (address);\\r\\n\\r\\n    // Functions\\r\\n    function initialize(\\r\\n        address _usdc,\\r\\n        address _wnative,\\r\\n        address _1inchSpotAgg,\\r\\n        address _uniRouter,\\r\\n        address _uniFactory,\\r\\n        address _rebalancer\\r\\n    ) external;\\r\\n\\r\\n    function reinitialize(\\r\\n        address _usdc,\\r\\n        address _wnative,\\r\\n        address _1inchSpotAgg,\\r\\n        address _uniRouter,\\r\\n        address _uniFactory,\\r\\n        address _rebalancer,\\r\\n        uint64 version\\r\\n    ) external;\\r\\n\\r\\n    function initializeMarketOracle(address _marketOracle) external;\\r\\n\\r\\n    function changeMarketOracle(address _marketOracle) external;\\r\\n\\r\\n    function changeBpsFee(uint256 _newFee) external;\\r\\n\\r\\n    function changeTreasury(address _newTreasury) external;\\r\\n\\r\\n    function changeRebalancer(address _newRebalancer) external;\\r\\n\\r\\n    function changeAgentFactory(address _agentFactory) external;\\r\\n\\r\\n    function execute(IBaluniV1Agent.Call[] memory calls, address[] memory tokensReturn) external;\\r\\n\\r\\n    function liquidate(address token) external;\\r\\n\\r\\n    function liquidateAll() external;\\r\\n\\r\\n    function burnERC20(uint256 burnAmount) external;\\r\\n\\r\\n    function burnUSDC(uint256 burnAmount) external;\\r\\n\\r\\n    function getAgentAddress(address _user) external view returns (address);\\r\\n\\r\\n    function mintWithUSDC(uint256 balAmountToMint) external;\\r\\n\\r\\n    function callRebalance(\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        address sender,\\r\\n        address receiver,\\r\\n        uint256 limit,\\r\\n        address baseAsset\\r\\n    ) external;\\r\\n\\r\\n    function requiredUSDCtoMint(uint256 balAmountToMint) external view returns (uint256);\\r\\n\\r\\n    function calculateTokenShare(\\r\\n        uint256 totalBaluni,\\r\\n        uint256 totalERC20Balance,\\r\\n        uint256 baluniAmount,\\r\\n        uint256 tokenDecimals\\r\\n    ) external pure returns (uint256);\\r\\n\\r\\n    function tokenValuation(uint256 amount, address token) external view returns (uint256);\\r\\n\\r\\n    function totalValuation() external view returns (uint256);\\r\\n\\r\\n    function getUSDCShareValue(uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function fetchMarketPrices() external view returns (uint256, uint256);\\r\\n\\r\\n    function getVersion() external view returns (uint64);\\r\\n\\r\\n    function unitPrice() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x22f26eeb4b0b0e9d2a8f95fc5072c3d3bfd43bc55a2368c333fd91cebf5195ce\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1Rebalancer.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '../interfaces/IBaluniV1Router.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Oracle.sol';\\r\\n\\r\\ncontract BaluniV1Rebalancer is Initializable, OwnableUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    struct RebalanceVars {\\r\\n        uint256 length;\\r\\n        uint256 totalValue;\\r\\n        uint256[] valuations;\\r\\n        uint256 finalUsdBalance;\\r\\n        uint256 overweightVaultsLength;\\r\\n        uint256 underweightVaultsLength;\\r\\n        uint256 totalActiveWeight;\\r\\n        uint256 amountOut;\\r\\n        uint256[] overweightVaults;\\r\\n        uint256[] overweightAmounts;\\r\\n        uint256[] underweightVaults;\\r\\n        uint256[] underweightAmounts;\\r\\n        uint256[] balances;\\r\\n    }\\r\\n\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __UUPSUpgradeable_init();\\r\\n        __Ownable_init(msg.sender);\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    /**\\r\\n     * @dev Rebalances the portfolio by buying and selling assets based on their weights.\\r\\n     * @param balances An array of current asset balances.\\r\\n     * @param assets An array of asset addresses.\\r\\n     * @param weights An array of asset weights.\\r\\n     * @param limit The maximum amount of assets to be rebalanced.\\r\\n     * @param sender The address from which the assets will be transferred.\\r\\n     * @param receiver The address to which the assets will be transferred.\\r\\n     * @param baseAsset The base asset used for rebalancing.\\r\\n     */\\r\\n    function rebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address receiver,\\r\\n        address baseAsset\\r\\n    ) external {\\r\\n        address WNATIVE = registry.getWNATIVE();\\r\\n\\r\\n        require(assets.length > 0, 'No assets provided');\\r\\n        require(balances.length == assets.length, 'Mismatched balances and assets length');\\r\\n        require(weights.length == assets.length, 'Mismatched weights and assets length');\\r\\n\\r\\n        if (balances.length == 0) {\\r\\n            for (uint256 i = 0; i < assets.length; i++) {\\r\\n                balances[i] = IERC20(assets[i]).balanceOf(sender);\\r\\n            }\\r\\n        }\\r\\n\\r\\n        RebalanceVars memory vars = _checkRebalance(balances, assets, weights, limit, baseAsset);\\r\\n\\r\\n        for (uint256 i = 0; i < vars.overweightVaults.length; i++) {\\r\\n            if (vars.overweightAmounts[i] > 0) {\\r\\n                address asset = assets[vars.overweightVaults[i]];\\r\\n\\r\\n                if (asset == baseAsset) {\\r\\n                    IERC20(asset).transferFrom(sender, address(this), vars.overweightAmounts[i]);\\r\\n                    vars.amountOut += vars.overweightAmounts[i];\\r\\n                    continue;\\r\\n                }\\r\\n\\r\\n                require(\\r\\n                    vars.balances[vars.overweightVaults[i]] >= vars.overweightAmounts[i],\\r\\n                    'BaluniV1Rebalancer: Under Overweight Amount!!'\\r\\n                );\\r\\n\\r\\n                uint256 allowance = IERC20(asset).allowance(sender, address(this));\\r\\n                require(\\r\\n                    allowance >= vars.overweightAmounts[i],\\r\\n                    'BaluniV1Rebalancer: Allowance under Overweight Amount'\\r\\n                );\\r\\n\\r\\n                IERC20(asset).transferFrom(sender, address(this), vars.overweightAmounts[i]);\\r\\n\\r\\n                address baluniSwapper = registry.getBaluniSwapper();\\r\\n                IERC20(asset).approve(baluniSwapper, vars.overweightAmounts[i]);\\r\\n\\r\\n                if (asset == address(WNATIVE)) {\\r\\n                    vars.amountOut += IBaluniV1Swapper(baluniSwapper).singleSwap(\\r\\n                        asset,\\r\\n                        baseAsset,\\r\\n                        vars.overweightAmounts[i],\\r\\n                        vars.underweightVaults.length == 0 ? receiver : address(this)\\r\\n                    );\\r\\n                } else {\\r\\n                    vars.amountOut += IBaluniV1Swapper(baluniSwapper).multiHopSwap(\\r\\n                        asset,\\r\\n                        address(WNATIVE),\\r\\n                        baseAsset,\\r\\n                        vars.overweightAmounts[i],\\r\\n                        vars.underweightVaults.length == 0 ? receiver : address(this)\\r\\n                    );\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256 baseAssetBalance = IERC20(baseAsset).balanceOf(address(this));\\r\\n        require(baseAssetBalance >= vars.amountOut, 'BaluniV1Rebalancer:  Insufficient base asset balance');\\r\\n\\r\\n        address[] memory _assets = assets;\\r\\n        uint256 BPS_BASE = registry.getBPS_BASE();\\r\\n\\r\\n        for (uint256 i = 0; i < vars.underweightVaults.length; i++) {\\r\\n            if (vars.underweightAmounts[i] > 0) {\\r\\n                address asset = _assets[vars.underweightVaults[i]];\\r\\n\\r\\n                uint256 rebaseActiveWgt = (vars.underweightAmounts[i] * BPS_BASE) / vars.totalActiveWeight;\\r\\n                uint256 rebBuyQty = (rebaseActiveWgt * vars.amountOut) / BPS_BASE;\\r\\n                address _receiver = receiver;\\r\\n\\r\\n                if (asset == baseAsset) {\\r\\n                    IERC20(baseAsset).transfer(_receiver, rebBuyQty);\\r\\n                    continue;\\r\\n                }\\r\\n\\r\\n                require(rebBuyQty > 0, 'BaluniV1Rebalancer: Rebalance buy quantity is zero');\\r\\n\\r\\n                require(\\r\\n                    rebBuyQty <= baseAssetBalance,\\r\\n                    'BaluniV1Rebalancer: Rebalance buy quantity exceeds base asset balance'\\r\\n                );\\r\\n\\r\\n                address baluniSwapper = registry.getBaluniSwapper();\\r\\n                IERC20(baseAsset).approve(baluniSwapper, rebBuyQty);\\r\\n\\r\\n                uint256 amountOut;\\r\\n                if (asset == address(WNATIVE)) {\\r\\n                    amountOut = IBaluniV1Swapper(baluniSwapper).singleSwap(baseAsset, asset, rebBuyQty, address(this));\\r\\n                } else {\\r\\n                    amountOut = IBaluniV1Swapper(baluniSwapper).multiHopSwap(\\r\\n                        baseAsset,\\r\\n                        address(WNATIVE),\\r\\n                        asset,\\r\\n                        rebBuyQty,\\r\\n                        address(this)\\r\\n                    );\\r\\n                }\\r\\n\\r\\n                vars.amountOut = amountOut;\\r\\n                uint256 amountToReceiver = calculateNetAmountAfterFee(amountOut);\\r\\n                uint256 remainingToReceiver = amountOut - amountToReceiver;\\r\\n                uint256 amountToRouter = calculateNetAmountAfterFee(remainingToReceiver);\\r\\n                uint256 amountToTreasury = remainingToReceiver - amountToRouter;\\r\\n\\r\\n                require(IERC20(asset).balanceOf(address(this)) >= amountToReceiver, 'Balance under amount to transfer');\\r\\n                address baluniRouter = registry.getBaluniRouter();\\r\\n                address treasury = registry.getTreasury();\\r\\n\\r\\n                IERC20(asset).transfer(_receiver, amountToReceiver);\\r\\n                IERC20(asset).transfer(baluniRouter, amountToRouter);\\r\\n                IERC20(asset).transfer(treasury, amountToTreasury);\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Checks if a rebalance is needed based on the given parameters.\\r\\n     * @param balances An array of token balances.\\r\\n     * @param assets An array of token addresses.\\r\\n     * @param weights An array of token weights.\\r\\n     * @param limit The maximum allowed difference between the current and target weights.\\r\\n     * @param sender The address of the caller.\\r\\n     * @param baseAsset The address of the base asset.\\r\\n     * @return A struct containing the rebalance variables.\\r\\n     */\\r\\n    function checkRebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address baseAsset\\r\\n    ) public view returns (RebalanceVars memory) {\\r\\n        uint256[] memory _balances = new uint256[](assets.length);\\r\\n\\r\\n        if (balances.length == 0) {\\r\\n            for (uint256 i = 0; i < assets.length; i++) {\\r\\n                _balances[i] = IERC20(assets[i]).balanceOf(sender);\\r\\n            }\\r\\n        } else {\\r\\n            _balances = balances;\\r\\n        }\\r\\n\\r\\n        return _checkRebalance(_balances, assets, weights, limit, baseAsset);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to check if rebalancing is required based on the given parameters.\\r\\n     * @param balances An array of token balances.\\r\\n     * @param assets An array of token addresses.\\r\\n     * @param weights An array of target weights for each token.\\r\\n     * @param limit The maximum allowed deviation from the target weight.\\r\\n     * @param baseAsset The address of the base asset.\\r\\n     * @return rebalanceVars A struct containing rebalance variables.\\r\\n     */\\r\\n    function _checkRebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address baseAsset\\r\\n    ) internal view returns (RebalanceVars memory) {\\r\\n        (uint256 totalValue, uint256[] memory valuations) = calculateTotalValueScaled(balances, assets, baseAsset);\\r\\n        RebalanceVars memory vars = RebalanceVars(\\r\\n            assets.length,\\r\\n            totalValue,\\r\\n            valuations,\\r\\n            0,\\r\\n            0,\\r\\n            0,\\r\\n            0,\\r\\n            0,\\r\\n            new uint256[](assets.length * 2),\\r\\n            new uint256[](assets.length * 2),\\r\\n            new uint256[](assets.length * 2),\\r\\n            new uint256[](assets.length * 2),\\r\\n            balances\\r\\n        );\\r\\n\\r\\n        uint256 _limit = limit;\\r\\n        uint256 _totalVal = totalValue;\\r\\n\\r\\n        RebalanceVars memory _vars = vars;\\r\\n\\r\\n        for (uint256 i = 0; i < assets.length; i++) {\\r\\n            IBaluniV1Oracle baluniOracle = IBaluniV1Oracle(registry.getBaluniOracle());\\r\\n            address asset = assets[i];\\r\\n            address _baseAsset = baseAsset;\\r\\n            uint256 targetWeight = weights[i];\\r\\n            uint256 currentWeight = (valuations[i] * registry.getBPS_BASE()) / _totalVal;\\r\\n            bool overweight = currentWeight > targetWeight;\\r\\n            uint256 overweightPercent = overweight ? currentWeight - targetWeight : targetWeight - currentWeight;\\r\\n\\r\\n            if (overweight && overweightPercent > _limit) {\\r\\n                uint256 overweightAmount = (overweightPercent * _totalVal) / registry.getBPS_BASE();\\r\\n                _vars.finalUsdBalance += overweightAmount;\\r\\n\\r\\n                if (asset == _baseAsset) {\\r\\n                    overweightAmount = overweightAmount;\\r\\n                    overweightAmount = scaleDown(overweightAmount, IERC20Metadata(asset).decimals());\\r\\n                } else {\\r\\n                    overweightAmount = baluniOracle.convert(\\r\\n                        _baseAsset,\\r\\n                        asset,\\r\\n                        scaleDown(overweightAmount, IERC20Metadata(_baseAsset).decimals())\\r\\n                    );\\r\\n                }\\r\\n\\r\\n                _vars.overweightVaults[_vars.overweightVaultsLength] = i;\\r\\n                _vars.overweightAmounts[_vars.overweightVaultsLength] = overweightAmount;\\r\\n                _vars.overweightVaultsLength++;\\r\\n            } else if (!overweight && overweightPercent > _limit) {\\r\\n                _vars.totalActiveWeight += overweightPercent;\\r\\n                _vars.underweightVaults[_vars.underweightVaultsLength] = i;\\r\\n                _vars.underweightAmounts[_vars.underweightVaultsLength] = overweightPercent;\\r\\n                _vars.underweightVaultsLength++;\\r\\n            }\\r\\n        }\\r\\n\\r\\n        _vars.overweightVaults = _resize(_vars.overweightVaults, _vars.overweightVaultsLength);\\r\\n        _vars.overweightAmounts = _resize(_vars.overweightAmounts, _vars.overweightVaultsLength);\\r\\n        _vars.underweightVaults = _resize(_vars.underweightVaults, _vars.underweightVaultsLength);\\r\\n        _vars.underweightAmounts = _resize(_vars.underweightAmounts, _vars.underweightVaultsLength);\\r\\n\\r\\n        return _vars;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Resizes an array to a specified size.\\r\\n     * @param arr The original array to be resized.\\r\\n     * @param size The new size for the array.\\r\\n     * @return ret The resized array.\\r\\n     */\\r\\n    function _resize(uint256[] memory arr, uint256 size) internal pure returns (uint256[] memory) {\\r\\n        uint256[] memory ret = new uint256[](size);\\r\\n        for (uint256 i; i < size; i++) {\\r\\n            ret[i] = arr[i];\\r\\n        }\\r\\n        return ret;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the net amount after applying a fee.\\r\\n     * @param _amount The initial amount before the fee is applied.\\r\\n     * @return The net amount after the fee has been applied.\\r\\n     *\\r\\n     * The function uses the Basis Point (BPS) system for fee calculation.\\r\\n     * 1 BPS is 1/100 of a percent or 0.01% hence the BPS base is 10000.\\r\\n     * The function retrieves the BPS fee from the baluniRouter and calculates the net amount.\\r\\n     * The fee is subtracted from the BPS base and the result is multiplied with the initial amount.\\r\\n     * The product is then divided by the BPS base to get the net amount.\\r\\n     */\\r\\n    function calculateNetAmountAfterFee(uint256 _amount) internal view returns (uint256) {\\r\\n        uint256 _BPS_BASE = registry.getBPS_BASE();\\r\\n        uint256 _BPS_FEE = registry.getBPS_FEE();\\r\\n        uint256 amountInWithFee = (_amount * (_BPS_BASE - (_BPS_FEE))) / _BPS_BASE;\\r\\n        return amountInWithFee;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the total value of the assets held by the caller.\\r\\n     * @param assets An array of asset addresses.\\r\\n     * @return The total value of the assets held by the caller.\\r\\n     */\\r\\n    function calculateTotalValueScaled(\\r\\n        uint256[] memory balances,\\r\\n        address[] memory assets,\\r\\n        address baseAsset\\r\\n    ) private view returns (uint256, uint256[] memory) {\\r\\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\\r\\n        uint256 totVal = 0;\\r\\n        IBaluniV1Oracle baluniOracle = IBaluniV1Oracle(registry.getBaluniOracle());\\r\\n        uint256[] memory valuations = new uint256[](assets.length);\\r\\n\\r\\n        for (uint256 i = 0; i < assets.length; i++) {\\r\\n            if (assets[i] == baseAsset) {\\r\\n                totVal += scaleUp(balances[i], baseDecimal);\\r\\n                valuations[i] = scaleUp(balances[i], baseDecimal);\\r\\n            } else {\\r\\n                uint256 valuation = baluniOracle.convertScaled(assets[i], baseAsset, balances[i]);\\r\\n                totVal += valuation;\\r\\n                valuations[i] = valuation;\\r\\n            }\\r\\n        }\\r\\n\\r\\n        return (totVal, valuations);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Scales up the given amount by subtracting the decimals.\\r\\n     * @param amount The amount to be scaled up.\\r\\n     * @param decimals The number of decimals to be subtracted.\\r\\n     * @return The scaled up amount.\\r\\n     */\\r\\n    function scaleUp(uint256 amount, uint256 decimals) internal pure returns (uint256) {\\r\\n        return amount * (10 ** (18 - decimals));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Scales down the given amount by dividing it by the difference between 10^18 and the decimals.\\r\\n     * @param amount The amount to be scaled down.\\r\\n     * @param decimals The number of decimals to be subtracted.\\r\\n     * @return The scaled down amount.\\r\\n     */\\r\\n    function scaleDown(uint256 amount, uint256 decimals) internal pure returns (uint256) {\\r\\n        return amount / (10 ** (18 - decimals));\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0xa1aae60988195150f8d52393d95a5c567f0c1aad5bc22acaaa74bb5f849003bb\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":8182,"contract":"contracts/managers/BaluniV1Rebalancer.sol:BaluniV1Rebalancer","label":"registry","offset":0,"slot":"0","type":"t_contract(IBaluniV1Registry)4909"}],"types":{"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/managers/BaluniV1Swapper.sol":{"BaluniV1Swapper":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSlippagePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"token2","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"multiHopSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"uint64","name":"version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_slippagePercentage","type":"uint256"}],"name":"setSlippagePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"singleSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"multiHopSwap(address,address,address,uint256,address)":{"details":"Executes a multi-hop swap between three tokens using Uniswap.","params":{"amount":"The amount of token0 to be swapped.","receiver":"The address that will receive the swapped tokens.","token0":"The address of the token to be swapped.","token1":"The address of the intermediate token to be used for the swap.","token2":"The address of the final token to be received."},"returns":{"amountOut":"The amount of token2 received from the swap. The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0. Also, the caller must have approved this contract to spend the amount of token0. The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap. The swapped tokens are sent to the receiver's address. The function returns the amount of token2 received from the swap."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"singleSwap(address,address,uint256,address)":{"details":"Executes a single swap between two tokens using Uniswap.","params":{"amount":"The amount of token0 to be swapped.","receiver":"The address that will receive the swapped tokens.","token0":"The address of the token to be swapped.","token1":"The address of the token to be received."},"returns":{"amountOut":"The amount of token1 received from the swap. The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0. Also, the caller must have approved this contract to spend the amount of token0. The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap. The swapped tokens are sent to the receiver's address. The function returns the amount of token1 received from the swap."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":79,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1Swapper":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":135,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":125,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":115,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":93,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":90,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b613127610094823960805181818161210c01528181612191015261238c015261312790f35b6043565b60405190565b5f80fd5b604d6087565b565b60018060a01b031690565b90565b606c6068607092604f565b605a565b604f565b90565b607a90605d565b90565b6084906073565b90565b608e30607d565b60805256fe60806040526004361015610013575b6108b7565b61001d5f356100ec565b806303baf066146100e757806325635dbe146100e25780632d6bc8ea146100dd5780634f1ef286146100d857806352d1902d146100d35780635efaaebb146100ce578063715018a6146100c95780637b103999146100c45780638da5cb5b146100bf5780638f2248bc146100ba578063ad3cb1cc146100b5578063c4d66de8146100b05763f2fde38b0361000e57610884565b610851565b6107fe565b6106ce565b61063c565b6105e5565b610509565b6104d0565b610445565b6103f6565b610274565b6101b1565b61014d565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b61011081610104565b0361011757565b5f80fd5b9050359061012882610107565b565b9060208282031261014357610140915f0161011b565b90565b6100fc565b5f0190565b3461017b5761016561016036600461012a565b610954565b61016d6100f2565b8061017781610148565b0390f35b6100f8565b5f91031261018a57565b6100fc565b61019890610104565b9052565b91906101af905f6020850194019061018f565b565b346101e1576101c1366004610180565b6101dd6101cc61098c565b6101d46100f2565b9182918261019c565b0390f35b6100f8565b73ffffffffffffffffffffffffffffffffffffffff1690565b610208906101e6565b90565b610214816101ff565b0361021b57565b5f80fd5b9050359061022c8261020b565b565b60808183031261026f57610244825f830161021f565b9261026c610255846020850161021f565b93610263816040860161011b565b9360600161021f565b90565b6100fc565b346102a8576102a461029361028a36600461022e565b92919091610d65565b61029b6100f2565b9182918261019c565b0390f35b6100f8565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906102f6906102b5565b810190811067ffffffffffffffff82111761031057604052565b6102bf565b906103286103216100f2565b92836102ec565b565b67ffffffffffffffff8111610348576103446020916102b5565b0190565b6102bf565b90825f939282370152565b9092919261036d6103688261032a565b610315565b93818552602085019082840111610389576103879261034d565b565b6102b1565b9080601f830112156103ac578160206103a993359101610358565b90565b6102ad565b9190916040818403126103f1576103ca835f830161021f565b92602082013567ffffffffffffffff81116103ec576103e9920161038e565b90565b610100565b6100fc565b61040a6104043660046103b1565b90610fc8565b6104126100f2565b8061041c81610148565b0390f35b90565b61042c90610420565b9052565b9190610443905f60208501940190610423565b565b3461047557610455366004610180565b610471610460611043565b6104686100f2565b91829182610430565b0390f35b6100f8565b919060a0838203126104cb57610492815f850161021f565b926104a0826020830161021f565b926104c86104b1846040850161021f565b936104bf816060860161011b565b9360800161021f565b90565b6100fc565b34610504576105006104ef6104e636600461047a565b93929092611056565b6104f76100f2565b9182918261019c565b0390f35b6100f8565b3461053757610519366004610180565b6105216112e0565b6105296100f2565b8061053381610148565b0390f35b6100f8565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61056990600861056e930261053c565b610540565b90565b9061057c9154610559565b90565b6105895f80610571565b90565b90565b6105a361059e6105a8926101e6565b61058c565b6101e6565b90565b6105b49061058f565b90565b6105c0906105ab565b90565b6105cc906105b7565b9052565b91906105e3905f602085019401906105c3565b565b34610615576105f5366004610180565b61061161060061057f565b6106086100f2565b918291826105d0565b0390f35b6100f8565b610623906101ff565b9052565b919061063a905f6020850194019061061a565b565b3461066c5761064c366004610180565b610668610657611328565b61065f6100f2565b91829182610627565b0390f35b6100f8565b67ffffffffffffffff1690565b61068781610671565b0361068e57565b5f80fd5b9050359061069f8261067e565b565b91906040838203126106c957806106bd6106c6925f860161021f565b93602001610692565b90565b6100fc565b346106fd576106e76106e13660046106a1565b906115f6565b6106ef6100f2565b806106f981610148565b0390f35b6100f8565b67ffffffffffffffff81116107205761071c6020916102b5565b0190565b6102bf565b9061073761073283610702565b610315565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61076d6005610725565b9061077a6020830161073c565b565b610784610763565b90565b61078f61077c565b90565b61079a610787565b90565b5190565b60209181520190565b90825f9392825e0152565b6107d46107dd6020936107e2936107cb8161079d565b938480936107a1565b958691016107aa565b6102b5565b0190565b6107fb9160208201915f8184039101526107b5565b90565b3461082e5761080e366004610180565b61082a610819610792565b6108216100f2565b918291826107e6565b0390f35b6100f8565b9060208282031261084c57610849915f0161021f565b90565b6100fc565b3461087f57610869610864366004610833565b61180d565b6108716100f2565b8061087b81610148565b0390f35b6100f8565b346108b25761089c610897366004610833565b61189d565b6108a46100f2565b806108ae81610148565b0390f35b6100f8565b5f80fd5b6108cc906108c76118a8565b610947565b565b5f1b90565b906108fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916108ce565b9181191691161790565b61091c61091761092192610104565b61058c565b610104565b90565b90565b9061093c61093761094392610908565b610924565b82546108d3565b9055565b610952906001610927565b565b61095d906108bb565b565b5f90565b5f1c90565b90565b61097761097c91610963565b610968565b90565b610989905461096b565b90565b61099461095f565b5061099f600161097f565b90565b6109ab906105ab565b90565b5f7f57726f6e672073656e6465720000000000000000000000000000000000000000910152565b6109e2600c6020926107a1565b6109eb816109ae565b0190565b610a049060208101905f8183039101526109d5565b90565b15610a0e57565b610a166100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610a46600482016109ef565b0390fd5b90565b610a61610a5c610a6692610a4a565b61058c565b610104565b90565b5f7f416d6f756e742069732030000000000000000000000000000000000000000000910152565b610a9d600b6020926107a1565b610aa681610a69565b0190565b610abf9060208101905f818303910152610a90565b90565b15610ac957565b610ad16100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610b0160048201610aaa565b0390fd5b610b0e9061058f565b90565b610b1a90610b05565b90565b610b26906105ab565b90565b60e01b90565b90505190610b3c82610107565b565b90602082820312610b5757610b54915f01610b2f565b90565b6100fc565b610b646100f2565b3d5f823e3d90fd5b5f7f496e73756666696369656e742042616c616e6365000000000000000000000000910152565b610ba060146020926107a1565b610ba981610b6c565b0190565b610bc29060208101905f818303910152610b93565b90565b15610bcc57565b610bd46100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610c0460048201610bad565b0390fd5b916020610c29929493610c2260408201965f83019061061a565b019061061a565b565b60207f77616e6365000000000000000000000000000000000000000000000000000000917f42616c756e69537761707065723a20496e73756666696369656e7420416c6c6f5f8201520152565b610c8560256040926107a1565b610c8e81610c2b565b0190565b610ca79060208101905f818303910152610c78565b90565b15610cb157565b610cb96100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610ce960048201610c92565b0390fd5b151590565b610cfb81610ced565b03610d0257565b5f80fd5b90505190610d1382610cf2565b565b90602082820312610d2e57610d2b915f01610d06565b90565b6100fc565b604090610d5c610d639496959396610d5260608401985f85019061061a565b602083019061061a565b019061018f565b565b929091610d7061095f565b50610d9633610d8f610d89610d84306109a2565b6101ff565b916101ff565b1415610a07565b610db281610dac610da65f610a4d565b91610104565b11610ac2565b610df26020610dc8610dc387610b11565b610b1d565b6370a0823190610de73392610ddb6100f2565b95869485938493610b29565b835260048301610627565b03915afa8015610f9a57610e21915f91610f6c575b50610e1a610e1484610104565b91610104565b1015610bc5565b610e32610e2d85610b11565b610b1d565b602063dd62ed3e913390610e60610e48306109a2565b94610e6b610e546100f2565b96879586948594610b29565b845260048401610c08565b03915afa8015610f6757610e9a915f91610f39575b50610e93610e8d84610104565b91610104565b1015610caa565b610eab610ea685610b11565b610b1d565b9360206323b872dd953390610edc5f610ec3306109a2565b99610ee788610ed06100f2565b9c8d9788968795610b29565b855260048501610d33565b03925af1948515610f3457610f0595610f08575b5092909192611dad565b90565b610f289060203d8111610f2d575b610f2081836102ec565b810190610d15565b610efb565b503d610f16565b610b5c565b610f5a915060203d8111610f60575b610f5281836102ec565b810190610b3e565b5f610e80565b503d610f48565b610b5c565b610f8d915060203d8111610f93575b610f8581836102ec565b810190610b3e565b5f610e07565b503d610f7b565b610b5c565b90610fb191610fac6120fb565b610fb3565b565b90610fc691610fc1816121cd565b61223d565b565b90610fd291610f9f565b565b5f90565b610fe990610fe461237b565b611037565b90565b90565b611003610ffe61100892610fec565b6108ce565b610420565b90565b6110347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610fef565b90565b5061104061100b565b90565b61105361104e610fd4565b610fd8565b90565b939192909261106361095f565b506110893361108261107c611077306109a2565b6101ff565b916101ff565b1415610a07565b6110a58261109f6110995f610a4d565b91610104565b11610ac2565b6110e560206110bb6110b688610b11565b610b1d565b6370a08231906110da33926110ce6100f2565b95869485938493610b29565b835260048301610627565b03915afa801561128e57611114915f91611260575b5061110d61110785610104565b91610104565b1015610bc5565b61112561112086610b11565b610b1d565b602063dd62ed3e91339061115361113b306109a2565b9461115e6111476100f2565b96879586948594610b29565b845260048401610c08565b03915afa801561125b5761118d915f9161122d575b5061118661118085610104565b91610104565b1015610caa565b61119e61119986610b11565b610b1d565b9460206323b872dd9633906111cf5f6111b6306109a2565b9a6111da896111c36100f2565b9d8e9788968795610b29565b855260048501610d33565b03925af1958615611228576111f9966111fc575b5093909192936123f9565b90565b61121c9060203d8111611221575b61121481836102ec565b810190610d15565b6111ee565b503d61120a565b610b5c565b61124e915060203d8111611254575b61124681836102ec565b810190610b3e565b5f611173565b503d61123c565b610b5c565b611281915060203d8111611287575b61127981836102ec565b810190610b3e565b5f6110fa565b503d61126f565b610b5c565b61129b6118a8565b6112a36112cd565b565b6112b96112b46112be92610a4a565b61058c565b6101e6565b90565b6112ca906112a5565b90565b6112de6112d95f6112c1565b6124d7565b565b6112e8611293565b565b5f90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61131361131891610963565b6112ee565b90565b6113259054611307565b90565b6113306112ea565b506113435f61133d612543565b0161131b565b90565b60401c90565b60ff1690565b61135e61136391611346565b61134c565b90565b6113709054611352565b90565b67ffffffffffffffff1690565b61138c61139191610963565b611373565b90565b61139e9054611380565b90565b906113b467ffffffffffffffff916108ce565b9181191691161790565b6113d26113cd6113d792610671565b61058c565b610671565b90565b90565b906113f26113ed6113f9926113be565b6113da565b82546113a1565b9055565b60401b90565b9061141768ff0000000000000000916113fd565b9181191691161790565b61142a90610ced565b90565b90565b9061144561144061144c92611421565b61142d565b8254611403565b9055565b61145990610671565b9052565b9190611470905f60208501940190611450565b565b90809161147d612567565b906114895f8301611366565b801561153a575b6114fe576114c3926114ba916114a8865f86016113dd565b6114b560015f8601611430565b6115cf565b5f809101611430565b6114f97fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916114f06100f2565b9182918261145d565b0390a1565b6115066100f2565b7ff92ee8a90000000000000000000000000000000000000000000000000000000081528061153660048201610148565b0390fd5b506115465f8301611394565b61155861155286610671565b91610671565b1015611490565b6115689061058f565b90565b6115749061155f565b90565b9061159673ffffffffffffffffffffffffffffffffffffffff916108ce565b9181191691161790565b6115a99061155f565b90565b90565b906115c46115bf6115cb926115a0565b6115ac565b8254611577565b9055565b6115f491506115ee906115e1336125a9565b6115e96125be565b61156b565b5f6115af565b565b9061160091611472565b565b61161661161161161b92610a4a565b61058c565b610671565b90565b90565b61163561163061163a9261161e565b61058c565b610671565b90565b611646906105ab565b90565b61165290611621565b9052565b9190611669905f60208501940190611649565b565b611673612567565b906116886116825f8401611366565b15610ced565b906116945f8401611394565b806116a76116a15f611602565b91610671565b14806117e1575b906116c26116bc6001611621565b91610671565b14806117b9575b6116d4909115610ced565b90816117a8575b5061176c57611704906116f96116f16001611621565b5f86016113dd565b8261175a575b6117e8565b61170c575b50565b611719905f809101611430565b60016117517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916117486100f2565b91829182611656565b0390a15f611709565b61176760015f8601611430565b6116ff565b6117746100f2565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806117a460048201610148565b0390fd5b6117b3915015610ced565b5f6116db565b506116d46117c63061163d565b3b6117d96117d35f610a4d565b91610104565b1490506116c9565b50826116ae565b61180561180b916117f8336125a9565b6118006125be565b61156b565b5f6115af565b565b6118169061166b565b565b611829906118246118a8565b61182b565b565b8061184661184061183b5f6112c1565b6101ff565b916101ff565b1461185657611854906124d7565b565b6118996118625f6112c1565b61186a6100f2565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b6118a690611818565b565b6118b0611328565b6118c96118c36118be6125c8565b6101ff565b916101ff565b036118d057565b6119126118db6125c8565b6118e36100f2565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b61192261192791610963565b610540565b90565b6119349054611916565b90565b905051906119448261020b565b565b9060208282031261195f5761195c915f01611937565b90565b6100fc565b5f7f42616c756e69537761707065723a2041646472657373206e6f74207365740000910152565b611998601e6020926107a1565b6119a181611964565b0190565b6119ba9060208101905f81830391015261198b565b90565b156119c457565b6119cc6100f2565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806119fc600482016119a5565b0390fd5b611a099061058f565b90565b611a1590611a00565b90565b611a21906105ab565b90565b90565b62ffffff1690565b611a43611a3e611a4892611a24565b61058c565b611a27565b90565b611a5490611a2f565b9052565b611a61906112a5565b9052565b90959492611ab094611a9f611aa992611a95608096611a8b60a088019c5f89019061061a565b602087019061061a565b6040850190611a4b565b606083019061018f565b0190611a58565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b611aee611af491939293610104565b92610104565b91611b00838202610104565b928184041490151715611b0f57565b611ab2565b90565b611b2b611b26611b3092611b14565b61058c565b610104565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b611b6c611b7291610104565b91610104565b908115611b7d570490565b611b33565b611b91611b9791939293610104565b92610104565b8203918211611ba257565b611ab2565b611bb2610100610315565b90565b90611bbf906101ff565b9052565b90611bcd90611a27565b9052565b90611bdb90610104565b9052565b90611be9906101e6565b9052565b611bf69061058f565b90565b611c0290611bed565b90565b611c0e906105ab565b90565b611c1a906101ff565b9052565b611c2790611a27565b9052565b611c3490610104565b9052565b611c41906101e6565b9052565b9060e080611cd393611c5d5f8201515f860190611c11565b611c6f60208201516020860190611c11565b611c8160408201516040860190611c1e565b611c9360608201516060860190611c11565b611ca560808201516080860190611c2b565b611cb760a082015160a0860190611c2b565b611cc960c082015160c0860190611c2b565b0151910190611c38565b565b9190611ce9905f6101008501940190611c45565b565b60207f7320300000000000000000000000000000000000000000000000000000000000917f42616c756e69537761707065723a20416d6f756e7420526563656976656420695f8201520152565b611d4560236040926107a1565b611d4e81611ceb565b0190565b611d679060208101905f818303910152611d38565b90565b15611d7157565b611d796100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611da960048201611d52565b0390fd5b92919091611db961095f565b50611de66020611dd0611dcb5f61192a565b6105b7565b63524900b590611dde6100f2565b938492610b29565b82528180611df660048201610148565b03915afa9081156120ea575f916120bc575b5093611e2f85611e28611e22611e1d5f6112c1565b6101ff565b916101ff565b14156119bd565b611e3b81868591612628565b611e676020611e51611e4c5f61192a565b6105b7565b63b0a7097590611e5f6100f2565b938492610b29565b82528180611e7760048201610148565b03915afa9081156120b757611e9c91611e97915f91612089575b50611a0c565b611a18565b602063f7729d43918390611ec95f8995611ed4610bb88b8491611ebd6100f2565b9a8b998a988997610b29565b875260048701611a65565b03925af1908115612084575f91612056575b5080611ef2600161097f565b611efb91611adf565b612710611f0790611b17565b611f1091611b60565b611f1991611b82565b909392610bb892429192935f95611f2e611ba7565b975f890190611f3c91611bb5565b6020880190611f4a91611bb5565b611f5390611a2f565b6040870190611f6191611bc3565b6060860190611f6f91611bb5565b6080850190611f7d91611bd1565b60a0840190611f8b91611bd1565b60c0830190611f9991611bd1565b611fa2906112a5565b60e0820190611fb091611bdf565b90611fba90611bf9565b611fc390611c05565b63414bf389611fd06100f2565b8093611fdc8293610b29565b82526004820190611fec91611cd5565b03815a6020945f91f1908115612051575f91612023575b506120208161201a6120145f610a4d565b91610104565b11611d6a565b90565b612044915060203d811161204a575b61203c81836102ec565b810190610b3e565b5f612003565b503d612032565b610b5c565b612077915060203d811161207d575b61206f81836102ec565b810190610b3e565b5f611ee6565b503d612065565b610b5c565b6120aa915060203d81116120b0575b6120a281836102ec565b810190611946565b5f611e91565b503d612098565b610b5c565b6120dd915060203d81116120e3575b6120d581836102ec565b810190611946565b5f611e08565b503d6120cb565b610b5c565b6120f8906105ab565b90565b612104306120ef565b6121366121307f00000000000000000000000000000000000000000000000000000000000000006101ff565b916101ff565b148015612180575b61214457565b61214c6100f2565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061217c60048201610148565b0390fd5b506121896127d8565b6121bb6121b57f00000000000000000000000000000000000000000000000000000000000000006101ff565b916101ff565b141561213e565b506121cb6118a8565b565b6121d6906121c2565b565b6121e19061058f565b90565b6121ed906121d8565b90565b6121f9906105ab565b90565b61220581610420565b0361220c57565b5f80fd5b9050519061221d826121fc565b565b9060208282031261223857612235915f01612210565b90565b6100fc565b919061226b6020612255612250866121e4565b6121f0565b6352d1902d906122636100f2565b938492610b29565b8252818061227b60048201610148565b03915afa80915f9261234b575b50155f146122dc57505090600161229d57505b565b6122d8906122a96100f2565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b92836122f76122f16122ec61100b565b610420565b91610420565b0361230c57612307929350612802565b61229b565b612347846123186100f2565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610430565b0390fd5b61236d91925060203d8111612374575b61236581836102ec565b81019061221f565b905f612288565b503d61235b565b612384306120ef565b6123b66123b07f00000000000000000000000000000000000000000000000000000000000000006101ff565b916101ff565b036123bd57565b6123c56100f2565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806123f560048201610148565b0390fd5b91612434949293919361240a61095f565b50602061241e6124195f61192a565b6105b7565b63524900b59061242c6100f2565b988992610b29565b8252818061244460048201610148565b03915afa9586156124a35761247296612468915f91612475575b5082908591612628565b9390919293612a50565b90565b612496915060203d811161249c575b61248e81836102ec565b810190611946565b5f61245e565b503d612484565b610b5c565b6124b1906105ab565b90565b90565b906124cc6124c76124d3926124a8565b6124b4565b8254611577565b9055565b6124df612543565b6124f76124ed5f830161131b565b915f8491016124b7565b9061252b6125257f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936124a8565b916124a8565b916125346100f2565b8061253e81610148565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61259c90612597612da0565b61259e565b565b6125a790612e78565b565b6125b29061258b565b565b6125bc612da0565b565b6125c66125b4565b565b6125d06112ea565b503390565b6125de90610a4d565b9052565b9160206126039294936125fc60408201965f83019061061a565b01906125d5565b565b91602061262692949361261f60408201965f83019061061a565b019061018f565b565b61263490929192610b11565b9061263e82610b1d565b602063dd62ed3e9161264f306109a2565b9061266c87946126776126606100f2565b96879586948594610b29565b845260048401610c08565b03915afa9081156127d3575f916127a5575b5061269c61269683610104565b91610104565b106126a7575b505050565b6126b082610b1d565b91602063095ea7b39385906126d85f80976126e36126cc6100f2565b998a9687958694610b29565b8452600484016125e2565b03925af19081156127a05760209361270092612775575b50610b1d565b6127235f63095ea7b395939561272e6127176100f2565b97889687958694610b29565b845260048401612605565b03925af1801561277057612744575b80806126a2565b6127649060203d8111612769575b61275c81836102ec565b810190610d15565b61273d565b503d612752565b610b5c565b61279490853d8111612799575b61278c81836102ec565b810190610d15565b6126fa565b503d612782565b610b5c565b6127c6915060203d81116127cc575b6127be81836102ec565b810190610b3e565b5f612689565b503d6127b4565b610b5c565b6127e06112ea565b506127fb5f6127f56127f061100b565b612e83565b0161131b565b90565b5190565b9061280c82612e86565b816128377fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916124a8565b906128406100f2565b8061284a81610148565b0390a2612856816127fe565b6128686128625f610a4d565b91610104565b115f1461287c5761287891612f96565b505b565b5050612886612efb565b61287a565b60601b90565b61289a9061288b565b90565b6128a690612891565b90565b6128b56128ba916101ff565b61289d565b9052565b60e81b90565b6128cd906128be565b90565b6128dc6128e191611a27565b6128c4565b9052565b6014612927946129176003809661290f858761290761291f99839f9e9b6128a9565b0180926128d0565b0180926128a9565b0180926128d0565b0180926128a9565b0190565b60209181520190565b61295361295c6020936129619361294a816127fe565b9384809361292b565b958691016107aa565b6102b5565b0190565b929160206129816129899360408701908782035f890152612934565b94019061018f565b565b61299560a0610315565b90565b52565b60209181520190565b6129c36129cc6020936129d1936129ba816127fe565b9384809361299b565b958691016107aa565b6102b5565b0190565b90612a35906080806129f460a084015f8701518582035f8701526129a4565b94612a0760208201516020860190611c11565b612a1960408201516040860190611c2b565b612a2b60608201516060860190611c2b565b0151910190611c2b565b90565b612a4d9160208201915f8184039101526129d5565b90565b92909193612a5c61095f565b50612a896020612a73612a6e5f61192a565b6105b7565b63524900b590612a816100f2565b938492610b29565b82528180612a9960048201610148565b03915afa908115612d9b575f91612d6d575b5092612ab985858591612628565b612ae56020612acf612aca5f61192a565b6105b7565b63b0a7097590612add6100f2565b938492610b29565b82528180612af560048201610148565b03915afa908115612d68575f91612d3a575b506020612b5f612b5a88612b54612b1f610bb8611a2f565b91612b468d8990612b31610bb8611a2f565b9091612b3b6100f2565b9687958b87016128e5565b8682018103825203826102ec565b93611a0c565b611a18565b63cdca17539290612b835f8895612b8e612b776100f2565b97889687958694610b29565b845260048401612965565b03925af1938415612d3557612c66602097612c5d612c7596612c30612ca29c612c22612bf1612c7a9c612c6f9a5f91612d07575b50612beb612bda82612bd4600161097f565b90611adf565b612be5612710611b17565b90611b60565b90611b82565b9591612bfe610bb8611a2f565b9a90612c0b610bb8611a2f565b9091612c156100f2565b9c6020958e9687016128e5565b8d82018103825203886102ec565b93612c5442919395612c4c612c4361298b565b995f8b01612998565b8c8901611bb5565b60408701611bd1565b60608501611bd1565b60808301611bd1565b92611bf9565b611c05565b612c975f63c04b8d59612c8b6100f2565b96879586948593610b29565b835260048301612a38565b03925af1908115612d02575f91612cd4575b50612cd181612ccb612cc55f610a4d565b91610104565b11611d6a565b90565b612cf5915060203d8111612cfb575b612ced81836102ec565b810190610b3e565b5f612cb4565b503d612ce3565b610b5c565b6020612d2892503d8111612d2e575b612d2081836102ec565b810190610b3e565b5f612bc2565b503d612d16565b610b5c565b612d5b915060203d8111612d61575b612d5381836102ec565b810190611946565b5f612b07565b503d612d49565b610b5c565b612d8e915060203d8111612d94575b612d8681836102ec565b810190611946565b5f612aab565b503d612d7c565b610b5c565b612db1612dab612fc9565b15610ced565b612db757565b612dbf6100f2565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612def60048201610148565b0390fd5b612e0490612dff612da0565b612e06565b565b80612e21612e1b612e165f6112c1565b6101ff565b916101ff565b14612e3157612e2f906124d7565b565b612e74612e3d5f6112c1565b612e456100f2565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b612e8190612df3565b565b90565b803b612e9a612e945f610a4d565b91610104565b14612ebc57612eba905f612eb4612eaf61100b565b612e83565b016124b7565b565b612ef790612ec86100f2565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b34612f0e612f085f610a4d565b91610104565b11612f1557565b612f1d6100f2565b7fb398979f00000000000000000000000000000000000000000000000000000000815280612f4d60048201610148565b0390fd5b606090565b90612f68612f638361032a565b610315565b918252565b3d5f14612f8857612f7d3d612f56565b903d5f602084013e5b565b612f90612f51565b90612f86565b5f80612fc293612fa4612f51565b508390602081019051915af490612fb9612f6d565b90919091612fe7565b90565b5f90565b612fd1612fc5565b50612fe45f612fde612567565b01611366565b90565b90612ffb90612ff4612f51565b5015610ced565b5f14613007575061308b565b613010826127fe565b61302261301c5f610a4d565b91610104565b1480613070575b613031575090565b61306c9061303d6100f2565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b50803b61308561307f5f610a4d565b91610104565b14613029565b613094816127fe565b6130a66130a05f610a4d565b91610104565b115f146130b557805190602001fd5b6130bd6100f2565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806130ed60048201610148565b0390fdfea264697066735822122055749730b427dca3d0ab855d099d42e33226deaf9e13d73653adc03ff987b5dc64736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x3127 PUSH2 0x94 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x210C ADD MSTORE DUP2 DUP2 PUSH2 0x2191 ADD MSTORE PUSH2 0x238C ADD MSTORE PUSH2 0x3127 SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x87 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x6C PUSH1 0x68 PUSH1 0x70 SWAP3 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x5A JUMP JUMPDEST PUSH1 0x4F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7A SWAP1 PUSH1 0x5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x73 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8E ADDRESS PUSH1 0x7D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x8B7 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0xEC JUMP JUMPDEST DUP1 PUSH4 0x3BAF066 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x25635DBE EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x2D6BC8EA EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x5EFAAEBB EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xB0 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0x884 JUMP JUMPDEST PUSH2 0x851 JUMP JUMPDEST PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x6CE JUMP JUMPDEST PUSH2 0x63C JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x509 JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST PUSH2 0x445 JUMP JUMPDEST PUSH2 0x3F6 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH2 0x1B1 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x104 JUMP JUMPDEST SUB PUSH2 0x117 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x128 DUP3 PUSH2 0x107 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x143 JUMPI PUSH2 0x140 SWAP2 PUSH0 ADD PUSH2 0x11B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x17B JUMPI PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0x12A JUMP JUMPDEST PUSH2 0x954 JUMP JUMPDEST PUSH2 0x16D PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x177 DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x18A JUMPI JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH2 0x198 SWAP1 PUSH2 0x104 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1AF SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x1CC PUSH2 0x98C JUMP JUMPDEST PUSH2 0x1D4 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x208 SWAP1 PUSH2 0x1E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x214 DUP2 PUSH2 0x1FF JUMP JUMPDEST SUB PUSH2 0x21B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x22C DUP3 PUSH2 0x20B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x80 DUP2 DUP4 SUB SLT PUSH2 0x26F JUMPI PUSH2 0x244 DUP3 PUSH0 DUP4 ADD PUSH2 0x21F JUMP JUMPDEST SWAP3 PUSH2 0x26C PUSH2 0x255 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x21F JUMP JUMPDEST SWAP4 PUSH2 0x263 DUP2 PUSH1 0x40 DUP7 ADD PUSH2 0x11B JUMP JUMPDEST SWAP4 PUSH1 0x60 ADD PUSH2 0x21F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST CALLVALUE PUSH2 0x2A8 JUMPI PUSH2 0x2A4 PUSH2 0x293 PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x22E JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0xD65 JUMP JUMPDEST PUSH2 0x29B PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x2F6 SWAP1 PUSH2 0x2B5 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x310 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x2BF JUMP JUMPDEST SWAP1 PUSH2 0x328 PUSH2 0x321 PUSH2 0xF2 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x2EC JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x348 JUMPI PUSH2 0x344 PUSH1 0x20 SWAP2 PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2BF JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x36D PUSH2 0x368 DUP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x389 JUMPI PUSH2 0x387 SWAP3 PUSH2 0x34D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2B1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 PUSH2 0x3A9 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x358 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x3F1 JUMPI PUSH2 0x3CA DUP4 PUSH0 DUP4 ADD PUSH2 0x21F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3EC JUMPI PUSH2 0x3E9 SWAP3 ADD PUSH2 0x38E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH2 0x40A PUSH2 0x404 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST SWAP1 PUSH2 0xFC8 JUMP JUMPDEST PUSH2 0x412 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x41C DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x42C SWAP1 PUSH2 0x420 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x443 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x423 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x475 JUMPI PUSH2 0x455 CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x471 PUSH2 0x460 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x468 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x430 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x4CB JUMPI PUSH2 0x492 DUP2 PUSH0 DUP6 ADD PUSH2 0x21F JUMP JUMPDEST SWAP3 PUSH2 0x4A0 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x21F JUMP JUMPDEST SWAP3 PUSH2 0x4C8 PUSH2 0x4B1 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x21F JUMP JUMPDEST SWAP4 PUSH2 0x4BF DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x11B JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x21F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST CALLVALUE PUSH2 0x504 JUMPI PUSH2 0x500 PUSH2 0x4EF PUSH2 0x4E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x47A JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x1056 JUMP JUMPDEST PUSH2 0x4F7 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST CALLVALUE PUSH2 0x537 JUMPI PUSH2 0x519 CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x521 PUSH2 0x12E0 JUMP JUMPDEST PUSH2 0x529 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x533 DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x569 SWAP1 PUSH1 0x8 PUSH2 0x56E SWAP4 MUL PUSH2 0x53C JUMP JUMPDEST PUSH2 0x540 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x57C SWAP2 SLOAD PUSH2 0x559 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x589 PUSH0 DUP1 PUSH2 0x571 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5A3 PUSH2 0x59E PUSH2 0x5A8 SWAP3 PUSH2 0x1E6 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5B4 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C0 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5CC SWAP1 PUSH2 0x5B7 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5E3 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5C3 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x615 JUMPI PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x611 PUSH2 0x600 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x608 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH2 0x623 SWAP1 PUSH2 0x1FF JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x63A SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x66C JUMPI PUSH2 0x64C CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x668 PUSH2 0x657 PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x65F PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x687 DUP2 PUSH2 0x671 JUMP JUMPDEST SUB PUSH2 0x68E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x69F DUP3 PUSH2 0x67E JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x6C9 JUMPI DUP1 PUSH2 0x6BD PUSH2 0x6C6 SWAP3 PUSH0 DUP7 ADD PUSH2 0x21F JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x692 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST CALLVALUE PUSH2 0x6FD JUMPI PUSH2 0x6E7 PUSH2 0x6E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A1 JUMP JUMPDEST SWAP1 PUSH2 0x15F6 JUMP JUMPDEST PUSH2 0x6EF PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x6F9 DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x720 JUMPI PUSH2 0x71C PUSH1 0x20 SWAP2 PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2BF JUMP JUMPDEST SWAP1 PUSH2 0x737 PUSH2 0x732 DUP4 PUSH2 0x702 JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x76D PUSH1 0x5 PUSH2 0x725 JUMP JUMPDEST SWAP1 PUSH2 0x77A PUSH1 0x20 DUP4 ADD PUSH2 0x73C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x784 PUSH2 0x763 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x78F PUSH2 0x77C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x79A PUSH2 0x787 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x7D4 PUSH2 0x7DD PUSH1 0x20 SWAP4 PUSH2 0x7E2 SWAP4 PUSH2 0x7CB DUP2 PUSH2 0x79D JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x7A1 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7FB SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x7B5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x82E JUMPI PUSH2 0x80E CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x82A PUSH2 0x819 PUSH2 0x792 JUMP JUMPDEST PUSH2 0x821 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x84C JUMPI PUSH2 0x849 SWAP2 PUSH0 ADD PUSH2 0x21F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST CALLVALUE PUSH2 0x87F JUMPI PUSH2 0x869 PUSH2 0x864 CALLDATASIZE PUSH1 0x4 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x180D JUMP JUMPDEST PUSH2 0x871 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x87B DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST CALLVALUE PUSH2 0x8B2 JUMPI PUSH2 0x89C PUSH2 0x897 CALLDATASIZE PUSH1 0x4 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x189D JUMP JUMPDEST PUSH2 0x8A4 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x8AE DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x8CC SWAP1 PUSH2 0x8C7 PUSH2 0x18A8 JUMP JUMPDEST PUSH2 0x947 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8FE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8CE JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x91C PUSH2 0x917 PUSH2 0x921 SWAP3 PUSH2 0x104 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x104 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x93C PUSH2 0x937 PUSH2 0x943 SWAP3 PUSH2 0x908 JUMP JUMPDEST PUSH2 0x924 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x8D3 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x952 SWAP1 PUSH1 0x1 PUSH2 0x927 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x95D SWAP1 PUSH2 0x8BB JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x977 PUSH2 0x97C SWAP2 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x968 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x989 SWAP1 SLOAD PUSH2 0x96B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x994 PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0x99F PUSH1 0x1 PUSH2 0x97F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9AB SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x57726F6E672073656E6465720000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x9E2 PUSH1 0xC PUSH1 0x20 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x9EB DUP2 PUSH2 0x9AE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xA04 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x9D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xA0E JUMPI JUMP JUMPDEST PUSH2 0xA16 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xA46 PUSH1 0x4 DUP3 ADD PUSH2 0x9EF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA61 PUSH2 0xA5C PUSH2 0xA66 SWAP3 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x104 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E742069732030000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xA9D PUSH1 0xB PUSH1 0x20 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0xAA6 DUP2 PUSH2 0xA69 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xABF SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xA90 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xAC9 JUMPI JUMP JUMPDEST PUSH2 0xAD1 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xB01 PUSH1 0x4 DUP3 ADD PUSH2 0xAAA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xB0E SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB1A SWAP1 PUSH2 0xB05 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB26 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xB3C DUP3 PUSH2 0x107 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xB57 JUMPI PUSH2 0xB54 SWAP2 PUSH0 ADD PUSH2 0xB2F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH2 0xB64 PUSH2 0xF2 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742042616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xBA0 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0xBA9 DUP2 PUSH2 0xB6C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xBC2 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xB93 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xBCC JUMPI JUMP JUMPDEST PUSH2 0xBD4 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xC04 PUSH1 0x4 DUP3 ADD PUSH2 0xBAD JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0xC29 SWAP3 SWAP5 SWAP4 PUSH2 0xC22 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x77616E6365000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E69537761707065723A20496E73756666696369656E7420416C6C6F PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0xC85 PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0xC8E DUP2 PUSH2 0xC2B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xCA7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xC78 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xCB1 JUMPI JUMP JUMPDEST PUSH2 0xCB9 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xCE9 PUSH1 0x4 DUP3 ADD PUSH2 0xC92 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xCFB DUP2 PUSH2 0xCED JUMP JUMPDEST SUB PUSH2 0xD02 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD13 DUP3 PUSH2 0xCF2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xD2E JUMPI PUSH2 0xD2B SWAP2 PUSH0 ADD PUSH2 0xD06 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xD5C PUSH2 0xD63 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xD52 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0xD70 PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0xD96 CALLER PUSH2 0xD8F PUSH2 0xD89 PUSH2 0xD84 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ ISZERO PUSH2 0xA07 JUMP JUMPDEST PUSH2 0xDB2 DUP2 PUSH2 0xDAC PUSH2 0xDA6 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0xAC2 JUMP JUMPDEST PUSH2 0xDF2 PUSH1 0x20 PUSH2 0xDC8 PUSH2 0xDC3 DUP8 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0xDE7 CALLER SWAP3 PUSH2 0xDDB PUSH2 0xF2 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xB29 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0xF9A JUMPI PUSH2 0xE21 SWAP2 PUSH0 SWAP2 PUSH2 0xF6C JUMPI JUMPDEST POP PUSH2 0xE1A PUSH2 0xE14 DUP5 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT ISZERO PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xE32 PUSH2 0xE2D DUP6 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 CALLER SWAP1 PUSH2 0xE60 PUSH2 0xE48 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP5 PUSH2 0xE6B PUSH2 0xE54 PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xC08 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0xF67 JUMPI PUSH2 0xE9A SWAP2 PUSH0 SWAP2 PUSH2 0xF39 JUMPI JUMPDEST POP PUSH2 0xE93 PUSH2 0xE8D DUP5 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT ISZERO PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xEAB PUSH2 0xEA6 DUP6 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST SWAP4 PUSH1 0x20 PUSH4 0x23B872DD SWAP6 CALLER SWAP1 PUSH2 0xEDC PUSH0 PUSH2 0xEC3 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP10 PUSH2 0xEE7 DUP9 PUSH2 0xED0 PUSH2 0xF2 JUMP JUMPDEST SWAP13 DUP14 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xB29 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xD33 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0xF34 JUMPI PUSH2 0xF05 SWAP6 PUSH2 0xF08 JUMPI JUMPDEST POP SWAP3 SWAP1 SWAP2 SWAP3 PUSH2 0x1DAD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF28 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xF2D JUMPI JUMPDEST PUSH2 0xF20 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH2 0xEFB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF16 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0xF5A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xF60 JUMPI JUMPDEST PUSH2 0xF52 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0xE80 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF48 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0xF8D SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xF93 JUMPI JUMPDEST PUSH2 0xF85 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0xE07 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF7B JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST SWAP1 PUSH2 0xFB1 SWAP2 PUSH2 0xFAC PUSH2 0x20FB JUMP JUMPDEST PUSH2 0xFB3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xFC6 SWAP2 PUSH2 0xFC1 DUP2 PUSH2 0x21CD JUMP JUMPDEST PUSH2 0x223D JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xFD2 SWAP2 PUSH2 0xF9F JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xFE9 SWAP1 PUSH2 0xFE4 PUSH2 0x237B JUMP JUMPDEST PUSH2 0x1037 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1003 PUSH2 0xFFE PUSH2 0x1008 SWAP3 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1034 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0xFEF JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x1040 PUSH2 0x100B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1053 PUSH2 0x104E PUSH2 0xFD4 JUMP JUMPDEST PUSH2 0xFD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP4 SWAP2 SWAP3 SWAP1 SWAP3 PUSH2 0x1063 PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0x1089 CALLER PUSH2 0x1082 PUSH2 0x107C PUSH2 0x1077 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ ISZERO PUSH2 0xA07 JUMP JUMPDEST PUSH2 0x10A5 DUP3 PUSH2 0x109F PUSH2 0x1099 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0xAC2 JUMP JUMPDEST PUSH2 0x10E5 PUSH1 0x20 PUSH2 0x10BB PUSH2 0x10B6 DUP9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x10DA CALLER SWAP3 PUSH2 0x10CE PUSH2 0xF2 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xB29 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x128E JUMPI PUSH2 0x1114 SWAP2 PUSH0 SWAP2 PUSH2 0x1260 JUMPI JUMPDEST POP PUSH2 0x110D PUSH2 0x1107 DUP6 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT ISZERO PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0x1125 PUSH2 0x1120 DUP7 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 CALLER SWAP1 PUSH2 0x1153 PUSH2 0x113B ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP5 PUSH2 0x115E PUSH2 0x1147 PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xC08 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x125B JUMPI PUSH2 0x118D SWAP2 PUSH0 SWAP2 PUSH2 0x122D JUMPI JUMPDEST POP PUSH2 0x1186 PUSH2 0x1180 DUP6 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT ISZERO PUSH2 0xCAA JUMP JUMPDEST PUSH2 0x119E PUSH2 0x1199 DUP7 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST SWAP5 PUSH1 0x20 PUSH4 0x23B872DD SWAP7 CALLER SWAP1 PUSH2 0x11CF PUSH0 PUSH2 0x11B6 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP11 PUSH2 0x11DA DUP10 PUSH2 0x11C3 PUSH2 0xF2 JUMP JUMPDEST SWAP14 DUP15 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xB29 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xD33 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP6 DUP7 ISZERO PUSH2 0x1228 JUMPI PUSH2 0x11F9 SWAP7 PUSH2 0x11FC JUMPI JUMPDEST POP SWAP4 SWAP1 SWAP2 SWAP3 SWAP4 PUSH2 0x23F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x121C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1221 JUMPI JUMPDEST PUSH2 0x1214 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH2 0x11EE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x120A JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x124E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1254 JUMPI JUMPDEST PUSH2 0x1246 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x1173 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x123C JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x1281 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1287 JUMPI JUMPDEST PUSH2 0x1279 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x10FA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x126F JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x129B PUSH2 0x18A8 JUMP JUMPDEST PUSH2 0x12A3 PUSH2 0x12CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12B9 PUSH2 0x12B4 PUSH2 0x12BE SWAP3 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12CA SWAP1 PUSH2 0x12A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12DE PUSH2 0x12D9 PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x24D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12E8 PUSH2 0x1293 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1313 PUSH2 0x1318 SWAP2 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x12EE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1325 SWAP1 SLOAD PUSH2 0x1307 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1330 PUSH2 0x12EA JUMP JUMPDEST POP PUSH2 0x1343 PUSH0 PUSH2 0x133D PUSH2 0x2543 JUMP JUMPDEST ADD PUSH2 0x131B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x135E PUSH2 0x1363 SWAP2 PUSH2 0x1346 JUMP JUMPDEST PUSH2 0x134C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1370 SWAP1 SLOAD PUSH2 0x1352 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x138C PUSH2 0x1391 SWAP2 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x1373 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x139E SWAP1 SLOAD PUSH2 0x1380 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x13B4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8CE JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x13D2 PUSH2 0x13CD PUSH2 0x13D7 SWAP3 PUSH2 0x671 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x13F2 PUSH2 0x13ED PUSH2 0x13F9 SWAP3 PUSH2 0x13BE JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST DUP3 SLOAD PUSH2 0x13A1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1417 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x13FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x142A SWAP1 PUSH2 0xCED JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1445 PUSH2 0x1440 PUSH2 0x144C SWAP3 PUSH2 0x1421 JUMP JUMPDEST PUSH2 0x142D JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1403 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1459 SWAP1 PUSH2 0x671 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1470 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1450 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x147D PUSH2 0x2567 JUMP JUMPDEST SWAP1 PUSH2 0x1489 PUSH0 DUP4 ADD PUSH2 0x1366 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x153A JUMPI JUMPDEST PUSH2 0x14FE JUMPI PUSH2 0x14C3 SWAP3 PUSH2 0x14BA SWAP2 PUSH2 0x14A8 DUP7 PUSH0 DUP7 ADD PUSH2 0x13DD JUMP JUMPDEST PUSH2 0x14B5 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x15CF JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x14F9 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x14F0 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x145D JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1506 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1536 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x1546 PUSH0 DUP4 ADD PUSH2 0x1394 JUMP JUMPDEST PUSH2 0x1558 PUSH2 0x1552 DUP7 PUSH2 0x671 JUMP JUMPDEST SWAP2 PUSH2 0x671 JUMP JUMPDEST LT ISZERO PUSH2 0x1490 JUMP JUMPDEST PUSH2 0x1568 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1574 SWAP1 PUSH2 0x155F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1596 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8CE JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x15A9 SWAP1 PUSH2 0x155F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15C4 PUSH2 0x15BF PUSH2 0x15CB SWAP3 PUSH2 0x15A0 JUMP JUMPDEST PUSH2 0x15AC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1577 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x15F4 SWAP2 POP PUSH2 0x15EE SWAP1 PUSH2 0x15E1 CALLER PUSH2 0x25A9 JUMP JUMPDEST PUSH2 0x15E9 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x156B JUMP JUMPDEST PUSH0 PUSH2 0x15AF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1600 SWAP2 PUSH2 0x1472 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1616 PUSH2 0x1611 PUSH2 0x161B SWAP3 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1635 PUSH2 0x1630 PUSH2 0x163A SWAP3 PUSH2 0x161E JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1646 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1652 SWAP1 PUSH2 0x1621 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1669 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1649 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1673 PUSH2 0x2567 JUMP JUMPDEST SWAP1 PUSH2 0x1688 PUSH2 0x1682 PUSH0 DUP5 ADD PUSH2 0x1366 JUMP JUMPDEST ISZERO PUSH2 0xCED JUMP JUMPDEST SWAP1 PUSH2 0x1694 PUSH0 DUP5 ADD PUSH2 0x1394 JUMP JUMPDEST DUP1 PUSH2 0x16A7 PUSH2 0x16A1 PUSH0 PUSH2 0x1602 JUMP JUMPDEST SWAP2 PUSH2 0x671 JUMP JUMPDEST EQ DUP1 PUSH2 0x17E1 JUMPI JUMPDEST SWAP1 PUSH2 0x16C2 PUSH2 0x16BC PUSH1 0x1 PUSH2 0x1621 JUMP JUMPDEST SWAP2 PUSH2 0x671 JUMP JUMPDEST EQ DUP1 PUSH2 0x17B9 JUMPI JUMPDEST PUSH2 0x16D4 SWAP1 SWAP2 ISZERO PUSH2 0xCED JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x17A8 JUMPI JUMPDEST POP PUSH2 0x176C JUMPI PUSH2 0x1704 SWAP1 PUSH2 0x16F9 PUSH2 0x16F1 PUSH1 0x1 PUSH2 0x1621 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x13DD JUMP JUMPDEST DUP3 PUSH2 0x175A JUMPI JUMPDEST PUSH2 0x17E8 JUMP JUMPDEST PUSH2 0x170C JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1719 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x1430 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1751 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1748 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1656 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x1767 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x1774 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x17A4 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x17B3 SWAP2 POP ISZERO PUSH2 0xCED JUMP JUMPDEST PUSH0 PUSH2 0x16DB JUMP JUMPDEST POP PUSH2 0x16D4 PUSH2 0x17C6 ADDRESS PUSH2 0x163D JUMP JUMPDEST EXTCODESIZE PUSH2 0x17D9 PUSH2 0x17D3 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x16C9 JUMP JUMPDEST POP DUP3 PUSH2 0x16AE JUMP JUMPDEST PUSH2 0x1805 PUSH2 0x180B SWAP2 PUSH2 0x17F8 CALLER PUSH2 0x25A9 JUMP JUMPDEST PUSH2 0x1800 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x156B JUMP JUMPDEST PUSH0 PUSH2 0x15AF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1816 SWAP1 PUSH2 0x166B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1829 SWAP1 PUSH2 0x1824 PUSH2 0x18A8 JUMP JUMPDEST PUSH2 0x182B JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x1846 PUSH2 0x1840 PUSH2 0x183B PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ PUSH2 0x1856 JUMPI PUSH2 0x1854 SWAP1 PUSH2 0x24D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1899 PUSH2 0x1862 PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x186A PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x18A6 SWAP1 PUSH2 0x1818 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x18B0 PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x18C9 PUSH2 0x18C3 PUSH2 0x18BE PUSH2 0x25C8 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST SUB PUSH2 0x18D0 JUMPI JUMP JUMPDEST PUSH2 0x1912 PUSH2 0x18DB PUSH2 0x25C8 JUMP JUMPDEST PUSH2 0x18E3 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1922 PUSH2 0x1927 SWAP2 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x540 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1934 SWAP1 SLOAD PUSH2 0x1916 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1944 DUP3 PUSH2 0x20B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x195F JUMPI PUSH2 0x195C SWAP2 PUSH0 ADD PUSH2 0x1937 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH0 PUSH32 0x42616C756E69537761707065723A2041646472657373206E6F74207365740000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1998 PUSH1 0x1E PUSH1 0x20 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x19A1 DUP2 PUSH2 0x1964 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x19BA SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x198B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x19C4 JUMPI JUMP JUMPDEST PUSH2 0x19CC PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19FC PUSH1 0x4 DUP3 ADD PUSH2 0x19A5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A09 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A15 SWAP1 PUSH2 0x1A00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A21 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1A43 PUSH2 0x1A3E PUSH2 0x1A48 SWAP3 PUSH2 0x1A24 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x1A27 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A54 SWAP1 PUSH2 0x1A2F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1A61 SWAP1 PUSH2 0x12A5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x1AB0 SWAP5 PUSH2 0x1A9F PUSH2 0x1AA9 SWAP3 PUSH2 0x1A95 PUSH1 0x80 SWAP7 PUSH2 0x1A8B PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x1A4B JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST ADD SWAP1 PUSH2 0x1A58 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1AEE PUSH2 0x1AF4 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x104 JUMP JUMPDEST SWAP3 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x1B00 DUP4 DUP3 MUL PUSH2 0x104 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1B0F JUMPI JUMP JUMPDEST PUSH2 0x1AB2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B2B PUSH2 0x1B26 PUSH2 0x1B30 SWAP3 PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x104 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1B6C PUSH2 0x1B72 SWAP2 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x1B7D JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x1B33 JUMP JUMPDEST PUSH2 0x1B91 PUSH2 0x1B97 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x104 JUMP JUMPDEST SWAP3 PUSH2 0x104 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1BA2 JUMPI JUMP JUMPDEST PUSH2 0x1AB2 JUMP JUMPDEST PUSH2 0x1BB2 PUSH2 0x100 PUSH2 0x315 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1BBF SWAP1 PUSH2 0x1FF JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x1BCD SWAP1 PUSH2 0x1A27 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x1BDB SWAP1 PUSH2 0x104 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x1BE9 SWAP1 PUSH2 0x1E6 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1BF6 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C02 SWAP1 PUSH2 0x1BED JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C0E SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C1A SWAP1 PUSH2 0x1FF JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1C27 SWAP1 PUSH2 0x1A27 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1C34 SWAP1 PUSH2 0x104 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1C41 SWAP1 PUSH2 0x1E6 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0xE0 DUP1 PUSH2 0x1CD3 SWAP4 PUSH2 0x1C5D PUSH0 DUP3 ADD MLOAD PUSH0 DUP7 ADD SWAP1 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x1C6F PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x1C81 PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x1C1E JUMP JUMPDEST PUSH2 0x1C93 PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x1CA5 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x80 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST PUSH2 0x1CB7 PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST PUSH2 0x1CC9 PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0xC0 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST ADD MLOAD SWAP2 ADD SWAP1 PUSH2 0x1C38 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1CE9 SWAP1 PUSH0 PUSH2 0x100 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1C45 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x7320300000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E69537761707065723A20416D6F756E742052656365697665642069 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1D45 PUSH1 0x23 PUSH1 0x40 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x1D4E DUP2 PUSH2 0x1CEB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1D67 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1D38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1D71 JUMPI JUMP JUMPDEST PUSH2 0x1D79 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1DA9 PUSH1 0x4 DUP3 ADD PUSH2 0x1D52 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x1DB9 PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0x1DE6 PUSH1 0x20 PUSH2 0x1DD0 PUSH2 0x1DCB PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0x524900B5 SWAP1 PUSH2 0x1DDE PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1DF6 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x20EA JUMPI PUSH0 SWAP2 PUSH2 0x20BC JUMPI JUMPDEST POP SWAP4 PUSH2 0x1E2F DUP6 PUSH2 0x1E28 PUSH2 0x1E22 PUSH2 0x1E1D PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ ISZERO PUSH2 0x19BD JUMP JUMPDEST PUSH2 0x1E3B DUP2 DUP7 DUP6 SWAP2 PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x1E67 PUSH1 0x20 PUSH2 0x1E51 PUSH2 0x1E4C PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0xB0A70975 SWAP1 PUSH2 0x1E5F PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1E77 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x20B7 JUMPI PUSH2 0x1E9C SWAP2 PUSH2 0x1E97 SWAP2 PUSH0 SWAP2 PUSH2 0x2089 JUMPI JUMPDEST POP PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x1A18 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xF7729D43 SWAP2 DUP4 SWAP1 PUSH2 0x1EC9 PUSH0 DUP10 SWAP6 PUSH2 0x1ED4 PUSH2 0xBB8 DUP12 DUP5 SWAP2 PUSH2 0x1EBD PUSH2 0xF2 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0xB29 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x1A65 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2084 JUMPI PUSH0 SWAP2 PUSH2 0x2056 JUMPI JUMPDEST POP DUP1 PUSH2 0x1EF2 PUSH1 0x1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x1EFB SWAP2 PUSH2 0x1ADF JUMP JUMPDEST PUSH2 0x2710 PUSH2 0x1F07 SWAP1 PUSH2 0x1B17 JUMP JUMPDEST PUSH2 0x1F10 SWAP2 PUSH2 0x1B60 JUMP JUMPDEST PUSH2 0x1F19 SWAP2 PUSH2 0x1B82 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 PUSH2 0xBB8 SWAP3 TIMESTAMP SWAP2 SWAP3 SWAP4 PUSH0 SWAP6 PUSH2 0x1F2E PUSH2 0x1BA7 JUMP JUMPDEST SWAP8 PUSH0 DUP10 ADD SWAP1 PUSH2 0x1F3C SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x1F4A SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x1F53 SWAP1 PUSH2 0x1A2F JUMP JUMPDEST PUSH1 0x40 DUP8 ADD SWAP1 PUSH2 0x1F61 SWAP2 PUSH2 0x1BC3 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0x1F6F SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0x1F7D SWAP2 PUSH2 0x1BD1 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD SWAP1 PUSH2 0x1F8B SWAP2 PUSH2 0x1BD1 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD SWAP1 PUSH2 0x1F99 SWAP2 PUSH2 0x1BD1 JUMP JUMPDEST PUSH2 0x1FA2 SWAP1 PUSH2 0x12A5 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD SWAP1 PUSH2 0x1FB0 SWAP2 PUSH2 0x1BDF JUMP JUMPDEST SWAP1 PUSH2 0x1FBA SWAP1 PUSH2 0x1BF9 JUMP JUMPDEST PUSH2 0x1FC3 SWAP1 PUSH2 0x1C05 JUMP JUMPDEST PUSH4 0x414BF389 PUSH2 0x1FD0 PUSH2 0xF2 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x1FDC DUP3 SWAP4 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x4 DUP3 ADD SWAP1 PUSH2 0x1FEC SWAP2 PUSH2 0x1CD5 JUMP JUMPDEST SUB DUP2 GAS PUSH1 0x20 SWAP5 PUSH0 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x2051 JUMPI PUSH0 SWAP2 PUSH2 0x2023 JUMPI JUMPDEST POP PUSH2 0x2020 DUP2 PUSH2 0x201A PUSH2 0x2014 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0x1D6A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2044 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x204A JUMPI JUMPDEST PUSH2 0x203C DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x2003 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2032 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2077 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x207D JUMPI JUMPDEST PUSH2 0x206F DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x1EE6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2065 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x20AA SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x20B0 JUMPI JUMPDEST PUSH2 0x20A2 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x1E91 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2098 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x20DD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x20E3 JUMPI JUMPDEST PUSH2 0x20D5 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x1E08 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x20CB JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x20F8 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2104 ADDRESS PUSH2 0x20EF JUMP JUMPDEST PUSH2 0x2136 PUSH2 0x2130 PUSH32 0x0 PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2180 JUMPI JUMPDEST PUSH2 0x2144 JUMPI JUMP JUMPDEST PUSH2 0x214C PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x217C PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2189 PUSH2 0x27D8 JUMP JUMPDEST PUSH2 0x21BB PUSH2 0x21B5 PUSH32 0x0 PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ ISZERO PUSH2 0x213E JUMP JUMPDEST POP PUSH2 0x21CB PUSH2 0x18A8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21D6 SWAP1 PUSH2 0x21C2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21E1 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21ED SWAP1 PUSH2 0x21D8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21F9 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2205 DUP2 PUSH2 0x420 JUMP JUMPDEST SUB PUSH2 0x220C JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x221D DUP3 PUSH2 0x21FC JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2238 JUMPI PUSH2 0x2235 SWAP2 PUSH0 ADD PUSH2 0x2210 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x226B PUSH1 0x20 PUSH2 0x2255 PUSH2 0x2250 DUP7 PUSH2 0x21E4 JUMP JUMPDEST PUSH2 0x21F0 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x2263 PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x227B PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x234B JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x22DC JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x229D JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x22D8 SWAP1 PUSH2 0x22A9 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x22F7 PUSH2 0x22F1 PUSH2 0x22EC PUSH2 0x100B JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST SWAP2 PUSH2 0x420 JUMP JUMPDEST SUB PUSH2 0x230C JUMPI PUSH2 0x2307 SWAP3 SWAP4 POP PUSH2 0x2802 JUMP JUMPDEST PUSH2 0x229B JUMP JUMPDEST PUSH2 0x2347 DUP5 PUSH2 0x2318 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x430 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x236D SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2374 JUMPI JUMPDEST PUSH2 0x2365 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x221F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2288 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x235B JUMP JUMPDEST PUSH2 0x2384 ADDRESS PUSH2 0x20EF JUMP JUMPDEST PUSH2 0x23B6 PUSH2 0x23B0 PUSH32 0x0 PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST SUB PUSH2 0x23BD JUMPI JUMP JUMPDEST PUSH2 0x23C5 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x23F5 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH2 0x2434 SWAP5 SWAP3 SWAP4 SWAP2 SWAP4 PUSH2 0x240A PUSH2 0x95F JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x241E PUSH2 0x2419 PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0x524900B5 SWAP1 PUSH2 0x242C PUSH2 0xF2 JUMP JUMPDEST SWAP9 DUP10 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2444 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x24A3 JUMPI PUSH2 0x2472 SWAP7 PUSH2 0x2468 SWAP2 PUSH0 SWAP2 PUSH2 0x2475 JUMPI JUMPDEST POP DUP3 SWAP1 DUP6 SWAP2 PUSH2 0x2628 JUMP JUMPDEST SWAP4 SWAP1 SWAP2 SWAP3 SWAP4 PUSH2 0x2A50 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2496 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x249C JUMPI JUMPDEST PUSH2 0x248E DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x245E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2484 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x24B1 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x24CC PUSH2 0x24C7 PUSH2 0x24D3 SWAP3 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x24B4 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1577 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x24DF PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x24F7 PUSH2 0x24ED PUSH0 DUP4 ADD PUSH2 0x131B JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x24B7 JUMP JUMPDEST SWAP1 PUSH2 0x252B PUSH2 0x2525 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x24A8 JUMP JUMPDEST SWAP2 PUSH2 0x24A8 JUMP JUMPDEST SWAP2 PUSH2 0x2534 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x253E DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x259C SWAP1 PUSH2 0x2597 PUSH2 0x2DA0 JUMP JUMPDEST PUSH2 0x259E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25A7 SWAP1 PUSH2 0x2E78 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25B2 SWAP1 PUSH2 0x258B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25BC PUSH2 0x2DA0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25C6 PUSH2 0x25B4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25D0 PUSH2 0x12EA JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x25DE SWAP1 PUSH2 0xA4D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x2603 SWAP3 SWAP5 SWAP4 PUSH2 0x25FC PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST ADD SWAP1 PUSH2 0x25D5 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x2626 SWAP3 SWAP5 SWAP4 PUSH2 0x261F PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2634 SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xB11 JUMP JUMPDEST SWAP1 PUSH2 0x263E DUP3 PUSH2 0xB1D JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 PUSH2 0x264F ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP1 PUSH2 0x266C DUP8 SWAP5 PUSH2 0x2677 PUSH2 0x2660 PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xC08 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x27D3 JUMPI PUSH0 SWAP2 PUSH2 0x27A5 JUMPI JUMPDEST POP PUSH2 0x269C PUSH2 0x2696 DUP4 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT PUSH2 0x26A7 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B0 DUP3 PUSH2 0xB1D JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP4 DUP6 SWAP1 PUSH2 0x26D8 PUSH0 DUP1 SWAP8 PUSH2 0x26E3 PUSH2 0x26CC PUSH2 0xF2 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x25E2 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x27A0 JUMPI PUSH1 0x20 SWAP4 PUSH2 0x2700 SWAP3 PUSH2 0x2775 JUMPI JUMPDEST POP PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x2723 PUSH0 PUSH4 0x95EA7B3 SWAP6 SWAP4 SWAP6 PUSH2 0x272E PUSH2 0x2717 PUSH2 0xF2 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x2605 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2770 JUMPI PUSH2 0x2744 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x26A2 JUMP JUMPDEST PUSH2 0x2764 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2769 JUMPI JUMPDEST PUSH2 0x275C DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH2 0x273D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2752 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2794 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x2799 JUMPI JUMPDEST PUSH2 0x278C DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH2 0x26FA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2782 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x27C6 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x27CC JUMPI JUMPDEST PUSH2 0x27BE DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x2689 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x27B4 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x27E0 PUSH2 0x12EA JUMP JUMPDEST POP PUSH2 0x27FB PUSH0 PUSH2 0x27F5 PUSH2 0x27F0 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x2E83 JUMP JUMPDEST ADD PUSH2 0x131B JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x280C DUP3 PUSH2 0x2E86 JUMP JUMPDEST DUP2 PUSH2 0x2837 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x24A8 JUMP JUMPDEST SWAP1 PUSH2 0x2840 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x284A DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2856 DUP2 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x2868 PUSH2 0x2862 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x287C JUMPI PUSH2 0x2878 SWAP2 PUSH2 0x2F96 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2886 PUSH2 0x2EFB JUMP JUMPDEST PUSH2 0x287A JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x289A SWAP1 PUSH2 0x288B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28A6 SWAP1 PUSH2 0x2891 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28B5 PUSH2 0x28BA SWAP2 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x289D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xE8 SHL SWAP1 JUMP JUMPDEST PUSH2 0x28CD SWAP1 PUSH2 0x28BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28DC PUSH2 0x28E1 SWAP2 PUSH2 0x1A27 JUMP JUMPDEST PUSH2 0x28C4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x14 PUSH2 0x2927 SWAP5 PUSH2 0x2917 PUSH1 0x3 DUP1 SWAP7 PUSH2 0x290F DUP6 DUP8 PUSH2 0x2907 PUSH2 0x291F SWAP10 DUP4 SWAP16 SWAP15 SWAP12 PUSH2 0x28A9 JUMP JUMPDEST ADD DUP1 SWAP3 PUSH2 0x28D0 JUMP JUMPDEST ADD DUP1 SWAP3 PUSH2 0x28A9 JUMP JUMPDEST ADD DUP1 SWAP3 PUSH2 0x28D0 JUMP JUMPDEST ADD DUP1 SWAP3 PUSH2 0x28A9 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x2953 PUSH2 0x295C PUSH1 0x20 SWAP4 PUSH2 0x2961 SWAP4 PUSH2 0x294A DUP2 PUSH2 0x27FE JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x292B JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH1 0x20 PUSH2 0x2981 PUSH2 0x2989 SWAP4 PUSH1 0x40 DUP8 ADD SWAP1 DUP8 DUP3 SUB PUSH0 DUP10 ADD MSTORE PUSH2 0x2934 JUMP JUMPDEST SWAP5 ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2995 PUSH1 0xA0 PUSH2 0x315 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x29C3 PUSH2 0x29CC PUSH1 0x20 SWAP4 PUSH2 0x29D1 SWAP4 PUSH2 0x29BA DUP2 PUSH2 0x27FE JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x299B JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2A35 SWAP1 PUSH1 0x80 DUP1 PUSH2 0x29F4 PUSH1 0xA0 DUP5 ADD PUSH0 DUP8 ADD MLOAD DUP6 DUP3 SUB PUSH0 DUP8 ADD MSTORE PUSH2 0x29A4 JUMP JUMPDEST SWAP5 PUSH2 0x2A07 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x2A19 PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST PUSH2 0x2A2B PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST ADD MLOAD SWAP2 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A4D SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x29D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP4 PUSH2 0x2A5C PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0x2A89 PUSH1 0x20 PUSH2 0x2A73 PUSH2 0x2A6E PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0x524900B5 SWAP1 PUSH2 0x2A81 PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2A99 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2D9B JUMPI PUSH0 SWAP2 PUSH2 0x2D6D JUMPI JUMPDEST POP SWAP3 PUSH2 0x2AB9 DUP6 DUP6 DUP6 SWAP2 PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x2AE5 PUSH1 0x20 PUSH2 0x2ACF PUSH2 0x2ACA PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0xB0A70975 SWAP1 PUSH2 0x2ADD PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2AF5 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2D68 JUMPI PUSH0 SWAP2 PUSH2 0x2D3A JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x2B5F PUSH2 0x2B5A DUP9 PUSH2 0x2B54 PUSH2 0x2B1F PUSH2 0xBB8 PUSH2 0x1A2F JUMP JUMPDEST SWAP2 PUSH2 0x2B46 DUP14 DUP10 SWAP1 PUSH2 0x2B31 PUSH2 0xBB8 PUSH2 0x1A2F JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x2B3B PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP12 DUP8 ADD PUSH2 0x28E5 JUMP JUMPDEST DUP7 DUP3 ADD DUP2 SUB DUP3 MSTORE SUB DUP3 PUSH2 0x2EC JUMP JUMPDEST SWAP4 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x1A18 JUMP JUMPDEST PUSH4 0xCDCA1753 SWAP3 SWAP1 PUSH2 0x2B83 PUSH0 DUP9 SWAP6 PUSH2 0x2B8E PUSH2 0x2B77 PUSH2 0xF2 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x2965 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2D35 JUMPI PUSH2 0x2C66 PUSH1 0x20 SWAP8 PUSH2 0x2C5D PUSH2 0x2C75 SWAP7 PUSH2 0x2C30 PUSH2 0x2CA2 SWAP13 PUSH2 0x2C22 PUSH2 0x2BF1 PUSH2 0x2C7A SWAP13 PUSH2 0x2C6F SWAP11 PUSH0 SWAP2 PUSH2 0x2D07 JUMPI JUMPDEST POP PUSH2 0x2BEB PUSH2 0x2BDA DUP3 PUSH2 0x2BD4 PUSH1 0x1 PUSH2 0x97F JUMP JUMPDEST SWAP1 PUSH2 0x1ADF JUMP JUMPDEST PUSH2 0x2BE5 PUSH2 0x2710 PUSH2 0x1B17 JUMP JUMPDEST SWAP1 PUSH2 0x1B60 JUMP JUMPDEST SWAP1 PUSH2 0x1B82 JUMP JUMPDEST SWAP6 SWAP2 PUSH2 0x2BFE PUSH2 0xBB8 PUSH2 0x1A2F JUMP JUMPDEST SWAP11 SWAP1 PUSH2 0x2C0B PUSH2 0xBB8 PUSH2 0x1A2F JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x2C15 PUSH2 0xF2 JUMP JUMPDEST SWAP13 PUSH1 0x20 SWAP6 DUP15 SWAP7 DUP8 ADD PUSH2 0x28E5 JUMP JUMPDEST DUP14 DUP3 ADD DUP2 SUB DUP3 MSTORE SUB DUP9 PUSH2 0x2EC JUMP JUMPDEST SWAP4 PUSH2 0x2C54 TIMESTAMP SWAP2 SWAP4 SWAP6 PUSH2 0x2C4C PUSH2 0x2C43 PUSH2 0x298B JUMP JUMPDEST SWAP10 PUSH0 DUP12 ADD PUSH2 0x2998 JUMP JUMPDEST DUP13 DUP10 ADD PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD PUSH2 0x1BD1 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD PUSH2 0x1BD1 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD PUSH2 0x1BD1 JUMP JUMPDEST SWAP3 PUSH2 0x1BF9 JUMP JUMPDEST PUSH2 0x1C05 JUMP JUMPDEST PUSH2 0x2C97 PUSH0 PUSH4 0xC04B8D59 PUSH2 0x2C8B PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0xB29 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x2A38 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D02 JUMPI PUSH0 SWAP2 PUSH2 0x2CD4 JUMPI JUMPDEST POP PUSH2 0x2CD1 DUP2 PUSH2 0x2CCB PUSH2 0x2CC5 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0x1D6A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CF5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2CFB JUMPI JUMPDEST PUSH2 0x2CED DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x2CB4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2CE3 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2D28 SWAP3 POP RETURNDATASIZE DUP2 GT PUSH2 0x2D2E JUMPI JUMPDEST PUSH2 0x2D20 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x2BC2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2D5B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D61 JUMPI JUMPDEST PUSH2 0x2D53 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x2B07 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D49 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2D8E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D94 JUMPI JUMPDEST PUSH2 0x2D86 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x2AAB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D7C JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2DB1 PUSH2 0x2DAB PUSH2 0x2FC9 JUMP JUMPDEST ISZERO PUSH2 0xCED JUMP JUMPDEST PUSH2 0x2DB7 JUMPI JUMP JUMPDEST PUSH2 0x2DBF PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2DEF PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E04 SWAP1 PUSH2 0x2DFF PUSH2 0x2DA0 JUMP JUMPDEST PUSH2 0x2E06 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2E21 PUSH2 0x2E1B PUSH2 0x2E16 PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ PUSH2 0x2E31 JUMPI PUSH2 0x2E2F SWAP1 PUSH2 0x24D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E74 PUSH2 0x2E3D PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x2E45 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E81 SWAP1 PUSH2 0x2DF3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x2E9A PUSH2 0x2E94 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST EQ PUSH2 0x2EBC JUMPI PUSH2 0x2EBA SWAP1 PUSH0 PUSH2 0x2EB4 PUSH2 0x2EAF PUSH2 0x100B JUMP JUMPDEST PUSH2 0x2E83 JUMP JUMPDEST ADD PUSH2 0x24B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2EF7 SWAP1 PUSH2 0x2EC8 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2F0E PUSH2 0x2F08 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0x2F15 JUMPI JUMP JUMPDEST PUSH2 0x2F1D PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2F4D PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F68 PUSH2 0x2F63 DUP4 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x2F88 JUMPI PUSH2 0x2F7D RETURNDATASIZE PUSH2 0x2F56 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x2F90 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 PUSH2 0x2F86 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2FC2 SWAP4 PUSH2 0x2FA4 PUSH2 0x2F51 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x2FB9 PUSH2 0x2F6D JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x2FE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2FD1 PUSH2 0x2FC5 JUMP JUMPDEST POP PUSH2 0x2FE4 PUSH0 PUSH2 0x2FDE PUSH2 0x2567 JUMP JUMPDEST ADD PUSH2 0x1366 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2FFB SWAP1 PUSH2 0x2FF4 PUSH2 0x2F51 JUMP JUMPDEST POP ISZERO PUSH2 0xCED JUMP JUMPDEST PUSH0 EQ PUSH2 0x3007 JUMPI POP PUSH2 0x308B JUMP JUMPDEST PUSH2 0x3010 DUP3 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x3022 PUSH2 0x301C PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST EQ DUP1 PUSH2 0x3070 JUMPI JUMPDEST PUSH2 0x3031 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x306C SWAP1 PUSH2 0x303D PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x3085 PUSH2 0x307F PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST EQ PUSH2 0x3029 JUMP JUMPDEST PUSH2 0x3094 DUP2 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x30A6 PUSH2 0x30A0 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x30B5 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x30BD PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x30ED PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE PUSH21 0x9730B427DCA3D0AB855D099D42E33226DEAF9E13D7 CALLDATASIZE MSTORE8 0xAD 0xC0 EXTCODEHASH 0xF9 DUP8 0xB5 0xDC PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"2226:8768:52:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":384,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":543,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":6455,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_addresst_addresst_uint256t_address":{"entryPoint":1146,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_addresst_addresst_uint256t_address":{"entryPoint":558,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_addresst_bytes":{"entryPoint":945,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":1697,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":856,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":3349,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":910,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":8735,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":3334,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":8720,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":2863,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":2099,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":6470,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint256":{"entryPoint":298,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":283,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":2878,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint64":{"entryPoint":1682,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":1562,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address":{"entryPoint":3080,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_rational_by_uint256_rational_by":{"entryPoint":6757,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":3379,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_rational_by":{"entryPoint":9698,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_to_address":{"entryPoint":7185,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_to_address_nonPadded_inplace":{"entryPoint":10409,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_uint256":{"entryPoint":9733,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_bytes":{"entryPoint":10548,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32":{"entryPoint":1072,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":1059,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes_memory_ptr":{"entryPoint":10660,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_uint256":{"entryPoint":10597,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":1475,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_packed_address_uint24_address_uint24_address":{"entryPoint":10469,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_rational_by":{"entryPoint":9685,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by_to_uint160":{"entryPoint":6744,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by_to_uint24":{"entryPoint":6731,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by_to_uint64":{"entryPoint":5705,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":2022,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":1973,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":7480,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_366a":{"entryPoint":6539,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_3e75":{"entryPoint":3192,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_a1c5":{"entryPoint":2517,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b80e":{"entryPoint":2989,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82":{"entryPoint":2963,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bd1d":{"entryPoint":2704,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_struct_ExactInputParams":{"entryPoint":10808,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_ExactInputParams_memory_ptr":{"entryPoint":10709,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_ExactInputSingleParams":{"entryPoint":7237,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_ExactInputSingleParams_memory_ptr":{"entryPoint":7381,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple":{"entryPoint":328,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":1575,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":1488,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_rational_by":{"entryPoint":5718,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":7506,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_366a":{"entryPoint":6565,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_3e75":{"entryPoint":3218,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_a1c5":{"entryPoint":2543,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_bd1d":{"entryPoint":2730,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":5213,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint160":{"entryPoint":7224,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint24":{"entryPoint":10448,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint24_to_uint24":{"entryPoint":7198,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256":{"entryPoint":412,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":7211,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_to_uint256_fromStack":{"entryPoint":399,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint64":{"entryPoint":5200,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_memory":{"entryPoint":789,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":12118,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":1829,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_struct_struct_ExactInputParams_storage_ptr":{"entryPoint":10635,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_struct_struct_ExactInputSingleParams_storage_ptr":{"entryPoint":7079,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_unbounded":{"entryPoint":242,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":810,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":1794,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":10238,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":1949,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_bytes":{"entryPoint":10539,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_bytes_memory_ptr":{"entryPoint":10651,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":1953,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":7008,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":6879,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":7042,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":511,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":3309,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":1056,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":4846,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":4940,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":1344,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":2408,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":4979,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3000_by":{"entryPoint":6692,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":6932,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":2634,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":5662,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":4076,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":486,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint24":{"entryPoint":6695,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":260,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":1649,"id":null,"parameterSlots":1,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":4107,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":1927,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":9384,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":5483,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":8676,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":2833,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IQuoter":{"entryPoint":6668,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_ISwapRouter":{"entryPoint":7161,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":5153,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1Swapper_to_address":{"entryPoint":2466,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1463,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":5536,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":8688,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":2845,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IQuoter_to_address":{"entryPoint":6680,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_ISwapRouter_to_address":{"entryPoint":7173,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":5693,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":8431,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":4801,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":4079,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":4773,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint24":{"entryPoint":6703,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":6935,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":5665,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":1916,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":2637,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":5634,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1451,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":5471,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":8664,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":2821,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IQuoter":{"entryPoint":6656,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_ISwapRouter":{"entryPoint":7149,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1423,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":2312,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":5054,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":845,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":1891,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1962,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2046,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getSlippagePercentage":{"entryPoint":433,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2129,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_multiHopSwap":{"entryPoint":1232,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":1596,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":1093,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":1509,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":1742,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":1289,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setSlippagePercentage":{"entryPoint":333,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_singleSwap":{"entryPoint":628,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":2180,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":1014,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":1369,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":4871,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":4946,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":6422,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":2411,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":4992,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":12141,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":748,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":9641,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":9630,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":11896,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":11782,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":9662,"id":502,"parameterSlots":0,"returnSlots":0},"fun__multiHopSwap":{"entryPoint":9209,"id":9868,"parameterSlots":5,"returnSlots":1},"fun__singleSwap":{"entryPoint":7597,"id":9831,"parameterSlots":4,"returnSlots":1},"fun__transferOwnership":{"entryPoint":9431,"id":193,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":8653,"id":9548,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":11680,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":12027,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":9083,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":6312,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":8443,"id":562,"parameterSlots":0,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":12182,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":11907,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getImplementation":{"entryPoint":10200,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":9575,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":9539,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getSlippagePercentage":{"entryPoint":2444,"id":10055,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":6157,"id":9514,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":6120,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":12233,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":9672,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_multiHopSwap":{"entryPoint":4182,"id":9725,"parameterSlots":5,"returnSlots":1},"fun_multiHopSwapFallback":{"entryPoint":10832,"id":9989,"parameterSlots":5,"returnSlots":1},"fun_owner":{"entryPoint":4904,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":4163,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":4151,"id":null,"parameterSlots":1,"returnSlots":1},"fun_reinitialize":{"entryPoint":5622,"id":9539,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":5583,"id":null,"parameterSlots":2,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":4832,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":4813,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":12427,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_secureApproval":{"entryPoint":9768,"id":10033,"parameterSlots":3,"returnSlots":0},"fun_setImplementation":{"entryPoint":11910,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_setSlippagePercentage":{"entryPoint":2388,"id":10047,"parameterSlots":1,"returnSlots":0},"fun_setSlippagePercentage_inner":{"entryPoint":2375,"id":null,"parameterSlots":1,"returnSlots":0},"fun_singleSwap":{"entryPoint":3429,"id":9635,"parameterSlots":4,"returnSlots":1},"fun_transferOwnership":{"entryPoint":6301,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":6187,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":10242,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":8765,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":4040,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":4019,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":12263,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":1938,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_registry":{"entryPoint":1407,"id":9492,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":1420,"id":null,"parameterSlots":1,"returnSlots":1},"leftAlign_address":{"entryPoint":10397,"id":null,"parameterSlots":1,"returnSlots":1},"leftAlign_uint160":{"entryPoint":10385,"id":null,"parameterSlots":1,"returnSlots":1},"leftAlign_uint24":{"entryPoint":10436,"id":null,"parameterSlots":1,"returnSlots":1},"modifier_initializer":{"entryPoint":5739,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_notDelegated":{"entryPoint":4056,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":11763,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":9611,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":9652,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":8642,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_10040":{"entryPoint":2235,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":4755,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":6168,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":3999,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":5234,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":6834,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":6963,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":703,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":9396,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":5165,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":5548,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":2340,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":5082,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":1393,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":4891,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":4966,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":6442,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":2431,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":5012,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":7530,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_366a":{"entryPoint":6589,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_3e75":{"entryPoint":3242,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_a1c5":{"entryPoint":2567,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b80e":{"entryPoint":3013,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_bd1d":{"entryPoint":2754,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":685,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":2231,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":689,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":256,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":248,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":252,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":2908,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":693,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":2254,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":2857,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_232":{"entryPoint":10430,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":5117,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_96":{"entryPoint":10379,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":2403,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":4934,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":236,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1340,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_2601c1289f85cc52da697c8044dc03da4e3dc6d60e9ab8691ebe3fb6f68c0d70":{"entryPoint":7403,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":1852,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_366ad2f8ce1116696b9a39a6ccd9666bbb3d9b0dcfcd28cb08ca11287b5c6cf0":{"entryPoint":6500,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3e759cc98968ace3978596fc8205d76d2e0dcb1069b8ed202b03d188eb59c779":{"entryPoint":3115,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_a1c5b09ace4f934886aa0d095bd2558e481071e5ba1b5ae5575a30022a93dc30":{"entryPoint":2478,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82":{"entryPoint":2924,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_bd1df39dd36f1e6eb64f323d42a553c2ee107dd1993af0ddd848a4eaeb8b679f":{"entryPoint":2665,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":5025,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":2259,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":5495,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":5123,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":9399,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":5168,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":5551,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":2343,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":5085,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":523,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":3314,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":8700,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":263,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":1662,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_address":{"entryPoint":7093,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_bytes":{"entryPoint":10648,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint160":{"entryPoint":7135,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint24":{"entryPoint":7107,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint256":{"entryPoint":7121,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":4842,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":12229,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":12113,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":4052,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":2399,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":8460},{"length":32,"start":8593},{"length":32,"start":9100}]},"linkReferences":{},"object":"60806040526004361015610013575b6108b7565b61001d5f356100ec565b806303baf066146100e757806325635dbe146100e25780632d6bc8ea146100dd5780634f1ef286146100d857806352d1902d146100d35780635efaaebb146100ce578063715018a6146100c95780637b103999146100c45780638da5cb5b146100bf5780638f2248bc146100ba578063ad3cb1cc146100b5578063c4d66de8146100b05763f2fde38b0361000e57610884565b610851565b6107fe565b6106ce565b61063c565b6105e5565b610509565b6104d0565b610445565b6103f6565b610274565b6101b1565b61014d565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b61011081610104565b0361011757565b5f80fd5b9050359061012882610107565b565b9060208282031261014357610140915f0161011b565b90565b6100fc565b5f0190565b3461017b5761016561016036600461012a565b610954565b61016d6100f2565b8061017781610148565b0390f35b6100f8565b5f91031261018a57565b6100fc565b61019890610104565b9052565b91906101af905f6020850194019061018f565b565b346101e1576101c1366004610180565b6101dd6101cc61098c565b6101d46100f2565b9182918261019c565b0390f35b6100f8565b73ffffffffffffffffffffffffffffffffffffffff1690565b610208906101e6565b90565b610214816101ff565b0361021b57565b5f80fd5b9050359061022c8261020b565b565b60808183031261026f57610244825f830161021f565b9261026c610255846020850161021f565b93610263816040860161011b565b9360600161021f565b90565b6100fc565b346102a8576102a461029361028a36600461022e565b92919091610d65565b61029b6100f2565b9182918261019c565b0390f35b6100f8565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906102f6906102b5565b810190811067ffffffffffffffff82111761031057604052565b6102bf565b906103286103216100f2565b92836102ec565b565b67ffffffffffffffff8111610348576103446020916102b5565b0190565b6102bf565b90825f939282370152565b9092919261036d6103688261032a565b610315565b93818552602085019082840111610389576103879261034d565b565b6102b1565b9080601f830112156103ac578160206103a993359101610358565b90565b6102ad565b9190916040818403126103f1576103ca835f830161021f565b92602082013567ffffffffffffffff81116103ec576103e9920161038e565b90565b610100565b6100fc565b61040a6104043660046103b1565b90610fc8565b6104126100f2565b8061041c81610148565b0390f35b90565b61042c90610420565b9052565b9190610443905f60208501940190610423565b565b3461047557610455366004610180565b610471610460611043565b6104686100f2565b91829182610430565b0390f35b6100f8565b919060a0838203126104cb57610492815f850161021f565b926104a0826020830161021f565b926104c86104b1846040850161021f565b936104bf816060860161011b565b9360800161021f565b90565b6100fc565b34610504576105006104ef6104e636600461047a565b93929092611056565b6104f76100f2565b9182918261019c565b0390f35b6100f8565b3461053757610519366004610180565b6105216112e0565b6105296100f2565b8061053381610148565b0390f35b6100f8565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61056990600861056e930261053c565b610540565b90565b9061057c9154610559565b90565b6105895f80610571565b90565b90565b6105a361059e6105a8926101e6565b61058c565b6101e6565b90565b6105b49061058f565b90565b6105c0906105ab565b90565b6105cc906105b7565b9052565b91906105e3905f602085019401906105c3565b565b34610615576105f5366004610180565b61061161060061057f565b6106086100f2565b918291826105d0565b0390f35b6100f8565b610623906101ff565b9052565b919061063a905f6020850194019061061a565b565b3461066c5761064c366004610180565b610668610657611328565b61065f6100f2565b91829182610627565b0390f35b6100f8565b67ffffffffffffffff1690565b61068781610671565b0361068e57565b5f80fd5b9050359061069f8261067e565b565b91906040838203126106c957806106bd6106c6925f860161021f565b93602001610692565b90565b6100fc565b346106fd576106e76106e13660046106a1565b906115f6565b6106ef6100f2565b806106f981610148565b0390f35b6100f8565b67ffffffffffffffff81116107205761071c6020916102b5565b0190565b6102bf565b9061073761073283610702565b610315565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61076d6005610725565b9061077a6020830161073c565b565b610784610763565b90565b61078f61077c565b90565b61079a610787565b90565b5190565b60209181520190565b90825f9392825e0152565b6107d46107dd6020936107e2936107cb8161079d565b938480936107a1565b958691016107aa565b6102b5565b0190565b6107fb9160208201915f8184039101526107b5565b90565b3461082e5761080e366004610180565b61082a610819610792565b6108216100f2565b918291826107e6565b0390f35b6100f8565b9060208282031261084c57610849915f0161021f565b90565b6100fc565b3461087f57610869610864366004610833565b61180d565b6108716100f2565b8061087b81610148565b0390f35b6100f8565b346108b25761089c610897366004610833565b61189d565b6108a46100f2565b806108ae81610148565b0390f35b6100f8565b5f80fd5b6108cc906108c76118a8565b610947565b565b5f1b90565b906108fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916108ce565b9181191691161790565b61091c61091761092192610104565b61058c565b610104565b90565b90565b9061093c61093761094392610908565b610924565b82546108d3565b9055565b610952906001610927565b565b61095d906108bb565b565b5f90565b5f1c90565b90565b61097761097c91610963565b610968565b90565b610989905461096b565b90565b61099461095f565b5061099f600161097f565b90565b6109ab906105ab565b90565b5f7f57726f6e672073656e6465720000000000000000000000000000000000000000910152565b6109e2600c6020926107a1565b6109eb816109ae565b0190565b610a049060208101905f8183039101526109d5565b90565b15610a0e57565b610a166100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610a46600482016109ef565b0390fd5b90565b610a61610a5c610a6692610a4a565b61058c565b610104565b90565b5f7f416d6f756e742069732030000000000000000000000000000000000000000000910152565b610a9d600b6020926107a1565b610aa681610a69565b0190565b610abf9060208101905f818303910152610a90565b90565b15610ac957565b610ad16100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610b0160048201610aaa565b0390fd5b610b0e9061058f565b90565b610b1a90610b05565b90565b610b26906105ab565b90565b60e01b90565b90505190610b3c82610107565b565b90602082820312610b5757610b54915f01610b2f565b90565b6100fc565b610b646100f2565b3d5f823e3d90fd5b5f7f496e73756666696369656e742042616c616e6365000000000000000000000000910152565b610ba060146020926107a1565b610ba981610b6c565b0190565b610bc29060208101905f818303910152610b93565b90565b15610bcc57565b610bd46100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610c0460048201610bad565b0390fd5b916020610c29929493610c2260408201965f83019061061a565b019061061a565b565b60207f77616e6365000000000000000000000000000000000000000000000000000000917f42616c756e69537761707065723a20496e73756666696369656e7420416c6c6f5f8201520152565b610c8560256040926107a1565b610c8e81610c2b565b0190565b610ca79060208101905f818303910152610c78565b90565b15610cb157565b610cb96100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610ce960048201610c92565b0390fd5b151590565b610cfb81610ced565b03610d0257565b5f80fd5b90505190610d1382610cf2565b565b90602082820312610d2e57610d2b915f01610d06565b90565b6100fc565b604090610d5c610d639496959396610d5260608401985f85019061061a565b602083019061061a565b019061018f565b565b929091610d7061095f565b50610d9633610d8f610d89610d84306109a2565b6101ff565b916101ff565b1415610a07565b610db281610dac610da65f610a4d565b91610104565b11610ac2565b610df26020610dc8610dc387610b11565b610b1d565b6370a0823190610de73392610ddb6100f2565b95869485938493610b29565b835260048301610627565b03915afa8015610f9a57610e21915f91610f6c575b50610e1a610e1484610104565b91610104565b1015610bc5565b610e32610e2d85610b11565b610b1d565b602063dd62ed3e913390610e60610e48306109a2565b94610e6b610e546100f2565b96879586948594610b29565b845260048401610c08565b03915afa8015610f6757610e9a915f91610f39575b50610e93610e8d84610104565b91610104565b1015610caa565b610eab610ea685610b11565b610b1d565b9360206323b872dd953390610edc5f610ec3306109a2565b99610ee788610ed06100f2565b9c8d9788968795610b29565b855260048501610d33565b03925af1948515610f3457610f0595610f08575b5092909192611dad565b90565b610f289060203d8111610f2d575b610f2081836102ec565b810190610d15565b610efb565b503d610f16565b610b5c565b610f5a915060203d8111610f60575b610f5281836102ec565b810190610b3e565b5f610e80565b503d610f48565b610b5c565b610f8d915060203d8111610f93575b610f8581836102ec565b810190610b3e565b5f610e07565b503d610f7b565b610b5c565b90610fb191610fac6120fb565b610fb3565b565b90610fc691610fc1816121cd565b61223d565b565b90610fd291610f9f565b565b5f90565b610fe990610fe461237b565b611037565b90565b90565b611003610ffe61100892610fec565b6108ce565b610420565b90565b6110347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610fef565b90565b5061104061100b565b90565b61105361104e610fd4565b610fd8565b90565b939192909261106361095f565b506110893361108261107c611077306109a2565b6101ff565b916101ff565b1415610a07565b6110a58261109f6110995f610a4d565b91610104565b11610ac2565b6110e560206110bb6110b688610b11565b610b1d565b6370a08231906110da33926110ce6100f2565b95869485938493610b29565b835260048301610627565b03915afa801561128e57611114915f91611260575b5061110d61110785610104565b91610104565b1015610bc5565b61112561112086610b11565b610b1d565b602063dd62ed3e91339061115361113b306109a2565b9461115e6111476100f2565b96879586948594610b29565b845260048401610c08565b03915afa801561125b5761118d915f9161122d575b5061118661118085610104565b91610104565b1015610caa565b61119e61119986610b11565b610b1d565b9460206323b872dd9633906111cf5f6111b6306109a2565b9a6111da896111c36100f2565b9d8e9788968795610b29565b855260048501610d33565b03925af1958615611228576111f9966111fc575b5093909192936123f9565b90565b61121c9060203d8111611221575b61121481836102ec565b810190610d15565b6111ee565b503d61120a565b610b5c565b61124e915060203d8111611254575b61124681836102ec565b810190610b3e565b5f611173565b503d61123c565b610b5c565b611281915060203d8111611287575b61127981836102ec565b810190610b3e565b5f6110fa565b503d61126f565b610b5c565b61129b6118a8565b6112a36112cd565b565b6112b96112b46112be92610a4a565b61058c565b6101e6565b90565b6112ca906112a5565b90565b6112de6112d95f6112c1565b6124d7565b565b6112e8611293565b565b5f90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61131361131891610963565b6112ee565b90565b6113259054611307565b90565b6113306112ea565b506113435f61133d612543565b0161131b565b90565b60401c90565b60ff1690565b61135e61136391611346565b61134c565b90565b6113709054611352565b90565b67ffffffffffffffff1690565b61138c61139191610963565b611373565b90565b61139e9054611380565b90565b906113b467ffffffffffffffff916108ce565b9181191691161790565b6113d26113cd6113d792610671565b61058c565b610671565b90565b90565b906113f26113ed6113f9926113be565b6113da565b82546113a1565b9055565b60401b90565b9061141768ff0000000000000000916113fd565b9181191691161790565b61142a90610ced565b90565b90565b9061144561144061144c92611421565b61142d565b8254611403565b9055565b61145990610671565b9052565b9190611470905f60208501940190611450565b565b90809161147d612567565b906114895f8301611366565b801561153a575b6114fe576114c3926114ba916114a8865f86016113dd565b6114b560015f8601611430565b6115cf565b5f809101611430565b6114f97fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916114f06100f2565b9182918261145d565b0390a1565b6115066100f2565b7ff92ee8a90000000000000000000000000000000000000000000000000000000081528061153660048201610148565b0390fd5b506115465f8301611394565b61155861155286610671565b91610671565b1015611490565b6115689061058f565b90565b6115749061155f565b90565b9061159673ffffffffffffffffffffffffffffffffffffffff916108ce565b9181191691161790565b6115a99061155f565b90565b90565b906115c46115bf6115cb926115a0565b6115ac565b8254611577565b9055565b6115f491506115ee906115e1336125a9565b6115e96125be565b61156b565b5f6115af565b565b9061160091611472565b565b61161661161161161b92610a4a565b61058c565b610671565b90565b90565b61163561163061163a9261161e565b61058c565b610671565b90565b611646906105ab565b90565b61165290611621565b9052565b9190611669905f60208501940190611649565b565b611673612567565b906116886116825f8401611366565b15610ced565b906116945f8401611394565b806116a76116a15f611602565b91610671565b14806117e1575b906116c26116bc6001611621565b91610671565b14806117b9575b6116d4909115610ced565b90816117a8575b5061176c57611704906116f96116f16001611621565b5f86016113dd565b8261175a575b6117e8565b61170c575b50565b611719905f809101611430565b60016117517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916117486100f2565b91829182611656565b0390a15f611709565b61176760015f8601611430565b6116ff565b6117746100f2565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806117a460048201610148565b0390fd5b6117b3915015610ced565b5f6116db565b506116d46117c63061163d565b3b6117d96117d35f610a4d565b91610104565b1490506116c9565b50826116ae565b61180561180b916117f8336125a9565b6118006125be565b61156b565b5f6115af565b565b6118169061166b565b565b611829906118246118a8565b61182b565b565b8061184661184061183b5f6112c1565b6101ff565b916101ff565b1461185657611854906124d7565b565b6118996118625f6112c1565b61186a6100f2565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b6118a690611818565b565b6118b0611328565b6118c96118c36118be6125c8565b6101ff565b916101ff565b036118d057565b6119126118db6125c8565b6118e36100f2565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b61192261192791610963565b610540565b90565b6119349054611916565b90565b905051906119448261020b565b565b9060208282031261195f5761195c915f01611937565b90565b6100fc565b5f7f42616c756e69537761707065723a2041646472657373206e6f74207365740000910152565b611998601e6020926107a1565b6119a181611964565b0190565b6119ba9060208101905f81830391015261198b565b90565b156119c457565b6119cc6100f2565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806119fc600482016119a5565b0390fd5b611a099061058f565b90565b611a1590611a00565b90565b611a21906105ab565b90565b90565b62ffffff1690565b611a43611a3e611a4892611a24565b61058c565b611a27565b90565b611a5490611a2f565b9052565b611a61906112a5565b9052565b90959492611ab094611a9f611aa992611a95608096611a8b60a088019c5f89019061061a565b602087019061061a565b6040850190611a4b565b606083019061018f565b0190611a58565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b611aee611af491939293610104565b92610104565b91611b00838202610104565b928184041490151715611b0f57565b611ab2565b90565b611b2b611b26611b3092611b14565b61058c565b610104565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b611b6c611b7291610104565b91610104565b908115611b7d570490565b611b33565b611b91611b9791939293610104565b92610104565b8203918211611ba257565b611ab2565b611bb2610100610315565b90565b90611bbf906101ff565b9052565b90611bcd90611a27565b9052565b90611bdb90610104565b9052565b90611be9906101e6565b9052565b611bf69061058f565b90565b611c0290611bed565b90565b611c0e906105ab565b90565b611c1a906101ff565b9052565b611c2790611a27565b9052565b611c3490610104565b9052565b611c41906101e6565b9052565b9060e080611cd393611c5d5f8201515f860190611c11565b611c6f60208201516020860190611c11565b611c8160408201516040860190611c1e565b611c9360608201516060860190611c11565b611ca560808201516080860190611c2b565b611cb760a082015160a0860190611c2b565b611cc960c082015160c0860190611c2b565b0151910190611c38565b565b9190611ce9905f6101008501940190611c45565b565b60207f7320300000000000000000000000000000000000000000000000000000000000917f42616c756e69537761707065723a20416d6f756e7420526563656976656420695f8201520152565b611d4560236040926107a1565b611d4e81611ceb565b0190565b611d679060208101905f818303910152611d38565b90565b15611d7157565b611d796100f2565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611da960048201611d52565b0390fd5b92919091611db961095f565b50611de66020611dd0611dcb5f61192a565b6105b7565b63524900b590611dde6100f2565b938492610b29565b82528180611df660048201610148565b03915afa9081156120ea575f916120bc575b5093611e2f85611e28611e22611e1d5f6112c1565b6101ff565b916101ff565b14156119bd565b611e3b81868591612628565b611e676020611e51611e4c5f61192a565b6105b7565b63b0a7097590611e5f6100f2565b938492610b29565b82528180611e7760048201610148565b03915afa9081156120b757611e9c91611e97915f91612089575b50611a0c565b611a18565b602063f7729d43918390611ec95f8995611ed4610bb88b8491611ebd6100f2565b9a8b998a988997610b29565b875260048701611a65565b03925af1908115612084575f91612056575b5080611ef2600161097f565b611efb91611adf565b612710611f0790611b17565b611f1091611b60565b611f1991611b82565b909392610bb892429192935f95611f2e611ba7565b975f890190611f3c91611bb5565b6020880190611f4a91611bb5565b611f5390611a2f565b6040870190611f6191611bc3565b6060860190611f6f91611bb5565b6080850190611f7d91611bd1565b60a0840190611f8b91611bd1565b60c0830190611f9991611bd1565b611fa2906112a5565b60e0820190611fb091611bdf565b90611fba90611bf9565b611fc390611c05565b63414bf389611fd06100f2565b8093611fdc8293610b29565b82526004820190611fec91611cd5565b03815a6020945f91f1908115612051575f91612023575b506120208161201a6120145f610a4d565b91610104565b11611d6a565b90565b612044915060203d811161204a575b61203c81836102ec565b810190610b3e565b5f612003565b503d612032565b610b5c565b612077915060203d811161207d575b61206f81836102ec565b810190610b3e565b5f611ee6565b503d612065565b610b5c565b6120aa915060203d81116120b0575b6120a281836102ec565b810190611946565b5f611e91565b503d612098565b610b5c565b6120dd915060203d81116120e3575b6120d581836102ec565b810190611946565b5f611e08565b503d6120cb565b610b5c565b6120f8906105ab565b90565b612104306120ef565b6121366121307f00000000000000000000000000000000000000000000000000000000000000006101ff565b916101ff565b148015612180575b61214457565b61214c6100f2565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061217c60048201610148565b0390fd5b506121896127d8565b6121bb6121b57f00000000000000000000000000000000000000000000000000000000000000006101ff565b916101ff565b141561213e565b506121cb6118a8565b565b6121d6906121c2565b565b6121e19061058f565b90565b6121ed906121d8565b90565b6121f9906105ab565b90565b61220581610420565b0361220c57565b5f80fd5b9050519061221d826121fc565b565b9060208282031261223857612235915f01612210565b90565b6100fc565b919061226b6020612255612250866121e4565b6121f0565b6352d1902d906122636100f2565b938492610b29565b8252818061227b60048201610148565b03915afa80915f9261234b575b50155f146122dc57505090600161229d57505b565b6122d8906122a96100f2565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b92836122f76122f16122ec61100b565b610420565b91610420565b0361230c57612307929350612802565b61229b565b612347846123186100f2565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610430565b0390fd5b61236d91925060203d8111612374575b61236581836102ec565b81019061221f565b905f612288565b503d61235b565b612384306120ef565b6123b66123b07f00000000000000000000000000000000000000000000000000000000000000006101ff565b916101ff565b036123bd57565b6123c56100f2565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806123f560048201610148565b0390fd5b91612434949293919361240a61095f565b50602061241e6124195f61192a565b6105b7565b63524900b59061242c6100f2565b988992610b29565b8252818061244460048201610148565b03915afa9586156124a35761247296612468915f91612475575b5082908591612628565b9390919293612a50565b90565b612496915060203d811161249c575b61248e81836102ec565b810190611946565b5f61245e565b503d612484565b610b5c565b6124b1906105ab565b90565b90565b906124cc6124c76124d3926124a8565b6124b4565b8254611577565b9055565b6124df612543565b6124f76124ed5f830161131b565b915f8491016124b7565b9061252b6125257f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936124a8565b916124a8565b916125346100f2565b8061253e81610148565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61259c90612597612da0565b61259e565b565b6125a790612e78565b565b6125b29061258b565b565b6125bc612da0565b565b6125c66125b4565b565b6125d06112ea565b503390565b6125de90610a4d565b9052565b9160206126039294936125fc60408201965f83019061061a565b01906125d5565b565b91602061262692949361261f60408201965f83019061061a565b019061018f565b565b61263490929192610b11565b9061263e82610b1d565b602063dd62ed3e9161264f306109a2565b9061266c87946126776126606100f2565b96879586948594610b29565b845260048401610c08565b03915afa9081156127d3575f916127a5575b5061269c61269683610104565b91610104565b106126a7575b505050565b6126b082610b1d565b91602063095ea7b39385906126d85f80976126e36126cc6100f2565b998a9687958694610b29565b8452600484016125e2565b03925af19081156127a05760209361270092612775575b50610b1d565b6127235f63095ea7b395939561272e6127176100f2565b97889687958694610b29565b845260048401612605565b03925af1801561277057612744575b80806126a2565b6127649060203d8111612769575b61275c81836102ec565b810190610d15565b61273d565b503d612752565b610b5c565b61279490853d8111612799575b61278c81836102ec565b810190610d15565b6126fa565b503d612782565b610b5c565b6127c6915060203d81116127cc575b6127be81836102ec565b810190610b3e565b5f612689565b503d6127b4565b610b5c565b6127e06112ea565b506127fb5f6127f56127f061100b565b612e83565b0161131b565b90565b5190565b9061280c82612e86565b816128377fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916124a8565b906128406100f2565b8061284a81610148565b0390a2612856816127fe565b6128686128625f610a4d565b91610104565b115f1461287c5761287891612f96565b505b565b5050612886612efb565b61287a565b60601b90565b61289a9061288b565b90565b6128a690612891565b90565b6128b56128ba916101ff565b61289d565b9052565b60e81b90565b6128cd906128be565b90565b6128dc6128e191611a27565b6128c4565b9052565b6014612927946129176003809661290f858761290761291f99839f9e9b6128a9565b0180926128d0565b0180926128a9565b0180926128d0565b0180926128a9565b0190565b60209181520190565b61295361295c6020936129619361294a816127fe565b9384809361292b565b958691016107aa565b6102b5565b0190565b929160206129816129899360408701908782035f890152612934565b94019061018f565b565b61299560a0610315565b90565b52565b60209181520190565b6129c36129cc6020936129d1936129ba816127fe565b9384809361299b565b958691016107aa565b6102b5565b0190565b90612a35906080806129f460a084015f8701518582035f8701526129a4565b94612a0760208201516020860190611c11565b612a1960408201516040860190611c2b565b612a2b60608201516060860190611c2b565b0151910190611c2b565b90565b612a4d9160208201915f8184039101526129d5565b90565b92909193612a5c61095f565b50612a896020612a73612a6e5f61192a565b6105b7565b63524900b590612a816100f2565b938492610b29565b82528180612a9960048201610148565b03915afa908115612d9b575f91612d6d575b5092612ab985858591612628565b612ae56020612acf612aca5f61192a565b6105b7565b63b0a7097590612add6100f2565b938492610b29565b82528180612af560048201610148565b03915afa908115612d68575f91612d3a575b506020612b5f612b5a88612b54612b1f610bb8611a2f565b91612b468d8990612b31610bb8611a2f565b9091612b3b6100f2565b9687958b87016128e5565b8682018103825203826102ec565b93611a0c565b611a18565b63cdca17539290612b835f8895612b8e612b776100f2565b97889687958694610b29565b845260048401612965565b03925af1938415612d3557612c66602097612c5d612c7596612c30612ca29c612c22612bf1612c7a9c612c6f9a5f91612d07575b50612beb612bda82612bd4600161097f565b90611adf565b612be5612710611b17565b90611b60565b90611b82565b9591612bfe610bb8611a2f565b9a90612c0b610bb8611a2f565b9091612c156100f2565b9c6020958e9687016128e5565b8d82018103825203886102ec565b93612c5442919395612c4c612c4361298b565b995f8b01612998565b8c8901611bb5565b60408701611bd1565b60608501611bd1565b60808301611bd1565b92611bf9565b611c05565b612c975f63c04b8d59612c8b6100f2565b96879586948593610b29565b835260048301612a38565b03925af1908115612d02575f91612cd4575b50612cd181612ccb612cc55f610a4d565b91610104565b11611d6a565b90565b612cf5915060203d8111612cfb575b612ced81836102ec565b810190610b3e565b5f612cb4565b503d612ce3565b610b5c565b6020612d2892503d8111612d2e575b612d2081836102ec565b810190610b3e565b5f612bc2565b503d612d16565b610b5c565b612d5b915060203d8111612d61575b612d5381836102ec565b810190611946565b5f612b07565b503d612d49565b610b5c565b612d8e915060203d8111612d94575b612d8681836102ec565b810190611946565b5f612aab565b503d612d7c565b610b5c565b612db1612dab612fc9565b15610ced565b612db757565b612dbf6100f2565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612def60048201610148565b0390fd5b612e0490612dff612da0565b612e06565b565b80612e21612e1b612e165f6112c1565b6101ff565b916101ff565b14612e3157612e2f906124d7565b565b612e74612e3d5f6112c1565b612e456100f2565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b612e8190612df3565b565b90565b803b612e9a612e945f610a4d565b91610104565b14612ebc57612eba905f612eb4612eaf61100b565b612e83565b016124b7565b565b612ef790612ec86100f2565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b34612f0e612f085f610a4d565b91610104565b11612f1557565b612f1d6100f2565b7fb398979f00000000000000000000000000000000000000000000000000000000815280612f4d60048201610148565b0390fd5b606090565b90612f68612f638361032a565b610315565b918252565b3d5f14612f8857612f7d3d612f56565b903d5f602084013e5b565b612f90612f51565b90612f86565b5f80612fc293612fa4612f51565b508390602081019051915af490612fb9612f6d565b90919091612fe7565b90565b5f90565b612fd1612fc5565b50612fe45f612fde612567565b01611366565b90565b90612ffb90612ff4612f51565b5015610ced565b5f14613007575061308b565b613010826127fe565b61302261301c5f610a4d565b91610104565b1480613070575b613031575090565b61306c9061303d6100f2565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610627565b0390fd5b50803b61308561307f5f610a4d565b91610104565b14613029565b613094816127fe565b6130a66130a05f610a4d565b91610104565b115f146130b557805190602001fd5b6130bd6100f2565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806130ed60048201610148565b0390fdfea264697066735822122055749730b427dca3d0ab855d099d42e33226deaf9e13d73653adc03ff987b5dc64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x8B7 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0xEC JUMP JUMPDEST DUP1 PUSH4 0x3BAF066 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x25635DBE EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x2D6BC8EA EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x5EFAAEBB EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xB0 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0x884 JUMP JUMPDEST PUSH2 0x851 JUMP JUMPDEST PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x6CE JUMP JUMPDEST PUSH2 0x63C JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x509 JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST PUSH2 0x445 JUMP JUMPDEST PUSH2 0x3F6 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH2 0x1B1 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x110 DUP2 PUSH2 0x104 JUMP JUMPDEST SUB PUSH2 0x117 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x128 DUP3 PUSH2 0x107 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x143 JUMPI PUSH2 0x140 SWAP2 PUSH0 ADD PUSH2 0x11B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x17B JUMPI PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0x12A JUMP JUMPDEST PUSH2 0x954 JUMP JUMPDEST PUSH2 0x16D PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x177 DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x18A JUMPI JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH2 0x198 SWAP1 PUSH2 0x104 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1AF SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x1DD PUSH2 0x1CC PUSH2 0x98C JUMP JUMPDEST PUSH2 0x1D4 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x208 SWAP1 PUSH2 0x1E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x214 DUP2 PUSH2 0x1FF JUMP JUMPDEST SUB PUSH2 0x21B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x22C DUP3 PUSH2 0x20B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x80 DUP2 DUP4 SUB SLT PUSH2 0x26F JUMPI PUSH2 0x244 DUP3 PUSH0 DUP4 ADD PUSH2 0x21F JUMP JUMPDEST SWAP3 PUSH2 0x26C PUSH2 0x255 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x21F JUMP JUMPDEST SWAP4 PUSH2 0x263 DUP2 PUSH1 0x40 DUP7 ADD PUSH2 0x11B JUMP JUMPDEST SWAP4 PUSH1 0x60 ADD PUSH2 0x21F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST CALLVALUE PUSH2 0x2A8 JUMPI PUSH2 0x2A4 PUSH2 0x293 PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x22E JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0xD65 JUMP JUMPDEST PUSH2 0x29B PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x2F6 SWAP1 PUSH2 0x2B5 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x310 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x2BF JUMP JUMPDEST SWAP1 PUSH2 0x328 PUSH2 0x321 PUSH2 0xF2 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x2EC JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x348 JUMPI PUSH2 0x344 PUSH1 0x20 SWAP2 PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2BF JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x36D PUSH2 0x368 DUP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x389 JUMPI PUSH2 0x387 SWAP3 PUSH2 0x34D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2B1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 PUSH2 0x3A9 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x358 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x3F1 JUMPI PUSH2 0x3CA DUP4 PUSH0 DUP4 ADD PUSH2 0x21F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3EC JUMPI PUSH2 0x3E9 SWAP3 ADD PUSH2 0x38E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH2 0x40A PUSH2 0x404 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST SWAP1 PUSH2 0xFC8 JUMP JUMPDEST PUSH2 0x412 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x41C DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x42C SWAP1 PUSH2 0x420 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x443 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x423 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x475 JUMPI PUSH2 0x455 CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x471 PUSH2 0x460 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x468 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x430 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x4CB JUMPI PUSH2 0x492 DUP2 PUSH0 DUP6 ADD PUSH2 0x21F JUMP JUMPDEST SWAP3 PUSH2 0x4A0 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0x21F JUMP JUMPDEST SWAP3 PUSH2 0x4C8 PUSH2 0x4B1 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x21F JUMP JUMPDEST SWAP4 PUSH2 0x4BF DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x11B JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x21F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST CALLVALUE PUSH2 0x504 JUMPI PUSH2 0x500 PUSH2 0x4EF PUSH2 0x4E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x47A JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x1056 JUMP JUMPDEST PUSH2 0x4F7 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x19C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST CALLVALUE PUSH2 0x537 JUMPI PUSH2 0x519 CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x521 PUSH2 0x12E0 JUMP JUMPDEST PUSH2 0x529 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x533 DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x569 SWAP1 PUSH1 0x8 PUSH2 0x56E SWAP4 MUL PUSH2 0x53C JUMP JUMPDEST PUSH2 0x540 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x57C SWAP2 SLOAD PUSH2 0x559 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x589 PUSH0 DUP1 PUSH2 0x571 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5A3 PUSH2 0x59E PUSH2 0x5A8 SWAP3 PUSH2 0x1E6 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5B4 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C0 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5CC SWAP1 PUSH2 0x5B7 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5E3 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5C3 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x615 JUMPI PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x611 PUSH2 0x600 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x608 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH2 0x623 SWAP1 PUSH2 0x1FF JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x63A SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x66C JUMPI PUSH2 0x64C CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x668 PUSH2 0x657 PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x65F PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x687 DUP2 PUSH2 0x671 JUMP JUMPDEST SUB PUSH2 0x68E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x69F DUP3 PUSH2 0x67E JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x6C9 JUMPI DUP1 PUSH2 0x6BD PUSH2 0x6C6 SWAP3 PUSH0 DUP7 ADD PUSH2 0x21F JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x692 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST CALLVALUE PUSH2 0x6FD JUMPI PUSH2 0x6E7 PUSH2 0x6E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A1 JUMP JUMPDEST SWAP1 PUSH2 0x15F6 JUMP JUMPDEST PUSH2 0x6EF PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x6F9 DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x720 JUMPI PUSH2 0x71C PUSH1 0x20 SWAP2 PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2BF JUMP JUMPDEST SWAP1 PUSH2 0x737 PUSH2 0x732 DUP4 PUSH2 0x702 JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x76D PUSH1 0x5 PUSH2 0x725 JUMP JUMPDEST SWAP1 PUSH2 0x77A PUSH1 0x20 DUP4 ADD PUSH2 0x73C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x784 PUSH2 0x763 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x78F PUSH2 0x77C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x79A PUSH2 0x787 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x7D4 PUSH2 0x7DD PUSH1 0x20 SWAP4 PUSH2 0x7E2 SWAP4 PUSH2 0x7CB DUP2 PUSH2 0x79D JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x7A1 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7FB SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x7B5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x82E JUMPI PUSH2 0x80E CALLDATASIZE PUSH1 0x4 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x82A PUSH2 0x819 PUSH2 0x792 JUMP JUMPDEST PUSH2 0x821 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x84C JUMPI PUSH2 0x849 SWAP2 PUSH0 ADD PUSH2 0x21F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST CALLVALUE PUSH2 0x87F JUMPI PUSH2 0x869 PUSH2 0x864 CALLDATASIZE PUSH1 0x4 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x180D JUMP JUMPDEST PUSH2 0x871 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x87B DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST CALLVALUE PUSH2 0x8B2 JUMPI PUSH2 0x89C PUSH2 0x897 CALLDATASIZE PUSH1 0x4 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x189D JUMP JUMPDEST PUSH2 0x8A4 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x8AE DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x8CC SWAP1 PUSH2 0x8C7 PUSH2 0x18A8 JUMP JUMPDEST PUSH2 0x947 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8FE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8CE JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x91C PUSH2 0x917 PUSH2 0x921 SWAP3 PUSH2 0x104 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x104 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x93C PUSH2 0x937 PUSH2 0x943 SWAP3 PUSH2 0x908 JUMP JUMPDEST PUSH2 0x924 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x8D3 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x952 SWAP1 PUSH1 0x1 PUSH2 0x927 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x95D SWAP1 PUSH2 0x8BB JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x977 PUSH2 0x97C SWAP2 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x968 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x989 SWAP1 SLOAD PUSH2 0x96B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x994 PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0x99F PUSH1 0x1 PUSH2 0x97F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9AB SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x57726F6E672073656E6465720000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x9E2 PUSH1 0xC PUSH1 0x20 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x9EB DUP2 PUSH2 0x9AE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xA04 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x9D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xA0E JUMPI JUMP JUMPDEST PUSH2 0xA16 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xA46 PUSH1 0x4 DUP3 ADD PUSH2 0x9EF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA61 PUSH2 0xA5C PUSH2 0xA66 SWAP3 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x104 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E742069732030000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xA9D PUSH1 0xB PUSH1 0x20 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0xAA6 DUP2 PUSH2 0xA69 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xABF SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xA90 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xAC9 JUMPI JUMP JUMPDEST PUSH2 0xAD1 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xB01 PUSH1 0x4 DUP3 ADD PUSH2 0xAAA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xB0E SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB1A SWAP1 PUSH2 0xB05 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB26 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xB3C DUP3 PUSH2 0x107 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xB57 JUMPI PUSH2 0xB54 SWAP2 PUSH0 ADD PUSH2 0xB2F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH2 0xB64 PUSH2 0xF2 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742042616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xBA0 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0xBA9 DUP2 PUSH2 0xB6C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xBC2 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xB93 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xBCC JUMPI JUMP JUMPDEST PUSH2 0xBD4 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xC04 PUSH1 0x4 DUP3 ADD PUSH2 0xBAD JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0xC29 SWAP3 SWAP5 SWAP4 PUSH2 0xC22 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x77616E6365000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E69537761707065723A20496E73756666696369656E7420416C6C6F PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0xC85 PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0xC8E DUP2 PUSH2 0xC2B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xCA7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xC78 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xCB1 JUMPI JUMP JUMPDEST PUSH2 0xCB9 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xCE9 PUSH1 0x4 DUP3 ADD PUSH2 0xC92 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xCFB DUP2 PUSH2 0xCED JUMP JUMPDEST SUB PUSH2 0xD02 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD13 DUP3 PUSH2 0xCF2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xD2E JUMPI PUSH2 0xD2B SWAP2 PUSH0 ADD PUSH2 0xD06 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xD5C PUSH2 0xD63 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xD52 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0xD70 PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0xD96 CALLER PUSH2 0xD8F PUSH2 0xD89 PUSH2 0xD84 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ ISZERO PUSH2 0xA07 JUMP JUMPDEST PUSH2 0xDB2 DUP2 PUSH2 0xDAC PUSH2 0xDA6 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0xAC2 JUMP JUMPDEST PUSH2 0xDF2 PUSH1 0x20 PUSH2 0xDC8 PUSH2 0xDC3 DUP8 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0xDE7 CALLER SWAP3 PUSH2 0xDDB PUSH2 0xF2 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xB29 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0xF9A JUMPI PUSH2 0xE21 SWAP2 PUSH0 SWAP2 PUSH2 0xF6C JUMPI JUMPDEST POP PUSH2 0xE1A PUSH2 0xE14 DUP5 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT ISZERO PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xE32 PUSH2 0xE2D DUP6 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 CALLER SWAP1 PUSH2 0xE60 PUSH2 0xE48 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP5 PUSH2 0xE6B PUSH2 0xE54 PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xC08 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0xF67 JUMPI PUSH2 0xE9A SWAP2 PUSH0 SWAP2 PUSH2 0xF39 JUMPI JUMPDEST POP PUSH2 0xE93 PUSH2 0xE8D DUP5 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT ISZERO PUSH2 0xCAA JUMP JUMPDEST PUSH2 0xEAB PUSH2 0xEA6 DUP6 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST SWAP4 PUSH1 0x20 PUSH4 0x23B872DD SWAP6 CALLER SWAP1 PUSH2 0xEDC PUSH0 PUSH2 0xEC3 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP10 PUSH2 0xEE7 DUP9 PUSH2 0xED0 PUSH2 0xF2 JUMP JUMPDEST SWAP13 DUP14 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xB29 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xD33 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0xF34 JUMPI PUSH2 0xF05 SWAP6 PUSH2 0xF08 JUMPI JUMPDEST POP SWAP3 SWAP1 SWAP2 SWAP3 PUSH2 0x1DAD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF28 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xF2D JUMPI JUMPDEST PUSH2 0xF20 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH2 0xEFB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF16 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0xF5A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xF60 JUMPI JUMPDEST PUSH2 0xF52 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0xE80 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF48 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0xF8D SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xF93 JUMPI JUMPDEST PUSH2 0xF85 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0xE07 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF7B JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST SWAP1 PUSH2 0xFB1 SWAP2 PUSH2 0xFAC PUSH2 0x20FB JUMP JUMPDEST PUSH2 0xFB3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xFC6 SWAP2 PUSH2 0xFC1 DUP2 PUSH2 0x21CD JUMP JUMPDEST PUSH2 0x223D JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xFD2 SWAP2 PUSH2 0xF9F JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xFE9 SWAP1 PUSH2 0xFE4 PUSH2 0x237B JUMP JUMPDEST PUSH2 0x1037 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1003 PUSH2 0xFFE PUSH2 0x1008 SWAP3 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1034 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0xFEF JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x1040 PUSH2 0x100B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1053 PUSH2 0x104E PUSH2 0xFD4 JUMP JUMPDEST PUSH2 0xFD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP4 SWAP2 SWAP3 SWAP1 SWAP3 PUSH2 0x1063 PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0x1089 CALLER PUSH2 0x1082 PUSH2 0x107C PUSH2 0x1077 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ ISZERO PUSH2 0xA07 JUMP JUMPDEST PUSH2 0x10A5 DUP3 PUSH2 0x109F PUSH2 0x1099 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0xAC2 JUMP JUMPDEST PUSH2 0x10E5 PUSH1 0x20 PUSH2 0x10BB PUSH2 0x10B6 DUP9 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x10DA CALLER SWAP3 PUSH2 0x10CE PUSH2 0xF2 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0xB29 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x128E JUMPI PUSH2 0x1114 SWAP2 PUSH0 SWAP2 PUSH2 0x1260 JUMPI JUMPDEST POP PUSH2 0x110D PUSH2 0x1107 DUP6 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT ISZERO PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0x1125 PUSH2 0x1120 DUP7 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 CALLER SWAP1 PUSH2 0x1153 PUSH2 0x113B ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP5 PUSH2 0x115E PUSH2 0x1147 PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xC08 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x125B JUMPI PUSH2 0x118D SWAP2 PUSH0 SWAP2 PUSH2 0x122D JUMPI JUMPDEST POP PUSH2 0x1186 PUSH2 0x1180 DUP6 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT ISZERO PUSH2 0xCAA JUMP JUMPDEST PUSH2 0x119E PUSH2 0x1199 DUP7 PUSH2 0xB11 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST SWAP5 PUSH1 0x20 PUSH4 0x23B872DD SWAP7 CALLER SWAP1 PUSH2 0x11CF PUSH0 PUSH2 0x11B6 ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP11 PUSH2 0x11DA DUP10 PUSH2 0x11C3 PUSH2 0xF2 JUMP JUMPDEST SWAP14 DUP15 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0xB29 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xD33 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP6 DUP7 ISZERO PUSH2 0x1228 JUMPI PUSH2 0x11F9 SWAP7 PUSH2 0x11FC JUMPI JUMPDEST POP SWAP4 SWAP1 SWAP2 SWAP3 SWAP4 PUSH2 0x23F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x121C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1221 JUMPI JUMPDEST PUSH2 0x1214 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH2 0x11EE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x120A JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x124E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1254 JUMPI JUMPDEST PUSH2 0x1246 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x1173 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x123C JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x1281 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1287 JUMPI JUMPDEST PUSH2 0x1279 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x10FA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x126F JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x129B PUSH2 0x18A8 JUMP JUMPDEST PUSH2 0x12A3 PUSH2 0x12CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12B9 PUSH2 0x12B4 PUSH2 0x12BE SWAP3 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12CA SWAP1 PUSH2 0x12A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12DE PUSH2 0x12D9 PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x24D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12E8 PUSH2 0x1293 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1313 PUSH2 0x1318 SWAP2 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x12EE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1325 SWAP1 SLOAD PUSH2 0x1307 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1330 PUSH2 0x12EA JUMP JUMPDEST POP PUSH2 0x1343 PUSH0 PUSH2 0x133D PUSH2 0x2543 JUMP JUMPDEST ADD PUSH2 0x131B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x135E PUSH2 0x1363 SWAP2 PUSH2 0x1346 JUMP JUMPDEST PUSH2 0x134C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1370 SWAP1 SLOAD PUSH2 0x1352 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x138C PUSH2 0x1391 SWAP2 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x1373 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x139E SWAP1 SLOAD PUSH2 0x1380 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x13B4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8CE JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x13D2 PUSH2 0x13CD PUSH2 0x13D7 SWAP3 PUSH2 0x671 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x13F2 PUSH2 0x13ED PUSH2 0x13F9 SWAP3 PUSH2 0x13BE JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST DUP3 SLOAD PUSH2 0x13A1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1417 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x13FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x142A SWAP1 PUSH2 0xCED JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1445 PUSH2 0x1440 PUSH2 0x144C SWAP3 PUSH2 0x1421 JUMP JUMPDEST PUSH2 0x142D JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1403 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1459 SWAP1 PUSH2 0x671 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1470 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1450 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x147D PUSH2 0x2567 JUMP JUMPDEST SWAP1 PUSH2 0x1489 PUSH0 DUP4 ADD PUSH2 0x1366 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x153A JUMPI JUMPDEST PUSH2 0x14FE JUMPI PUSH2 0x14C3 SWAP3 PUSH2 0x14BA SWAP2 PUSH2 0x14A8 DUP7 PUSH0 DUP7 ADD PUSH2 0x13DD JUMP JUMPDEST PUSH2 0x14B5 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x15CF JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x14F9 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x14F0 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x145D JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1506 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1536 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x1546 PUSH0 DUP4 ADD PUSH2 0x1394 JUMP JUMPDEST PUSH2 0x1558 PUSH2 0x1552 DUP7 PUSH2 0x671 JUMP JUMPDEST SWAP2 PUSH2 0x671 JUMP JUMPDEST LT ISZERO PUSH2 0x1490 JUMP JUMPDEST PUSH2 0x1568 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1574 SWAP1 PUSH2 0x155F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1596 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x8CE JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x15A9 SWAP1 PUSH2 0x155F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15C4 PUSH2 0x15BF PUSH2 0x15CB SWAP3 PUSH2 0x15A0 JUMP JUMPDEST PUSH2 0x15AC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1577 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x15F4 SWAP2 POP PUSH2 0x15EE SWAP1 PUSH2 0x15E1 CALLER PUSH2 0x25A9 JUMP JUMPDEST PUSH2 0x15E9 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x156B JUMP JUMPDEST PUSH0 PUSH2 0x15AF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1600 SWAP2 PUSH2 0x1472 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1616 PUSH2 0x1611 PUSH2 0x161B SWAP3 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1635 PUSH2 0x1630 PUSH2 0x163A SWAP3 PUSH2 0x161E JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1646 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1652 SWAP1 PUSH2 0x1621 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1669 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1649 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1673 PUSH2 0x2567 JUMP JUMPDEST SWAP1 PUSH2 0x1688 PUSH2 0x1682 PUSH0 DUP5 ADD PUSH2 0x1366 JUMP JUMPDEST ISZERO PUSH2 0xCED JUMP JUMPDEST SWAP1 PUSH2 0x1694 PUSH0 DUP5 ADD PUSH2 0x1394 JUMP JUMPDEST DUP1 PUSH2 0x16A7 PUSH2 0x16A1 PUSH0 PUSH2 0x1602 JUMP JUMPDEST SWAP2 PUSH2 0x671 JUMP JUMPDEST EQ DUP1 PUSH2 0x17E1 JUMPI JUMPDEST SWAP1 PUSH2 0x16C2 PUSH2 0x16BC PUSH1 0x1 PUSH2 0x1621 JUMP JUMPDEST SWAP2 PUSH2 0x671 JUMP JUMPDEST EQ DUP1 PUSH2 0x17B9 JUMPI JUMPDEST PUSH2 0x16D4 SWAP1 SWAP2 ISZERO PUSH2 0xCED JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x17A8 JUMPI JUMPDEST POP PUSH2 0x176C JUMPI PUSH2 0x1704 SWAP1 PUSH2 0x16F9 PUSH2 0x16F1 PUSH1 0x1 PUSH2 0x1621 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x13DD JUMP JUMPDEST DUP3 PUSH2 0x175A JUMPI JUMPDEST PUSH2 0x17E8 JUMP JUMPDEST PUSH2 0x170C JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1719 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x1430 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1751 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1748 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1656 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x1767 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x1774 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x17A4 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x17B3 SWAP2 POP ISZERO PUSH2 0xCED JUMP JUMPDEST PUSH0 PUSH2 0x16DB JUMP JUMPDEST POP PUSH2 0x16D4 PUSH2 0x17C6 ADDRESS PUSH2 0x163D JUMP JUMPDEST EXTCODESIZE PUSH2 0x17D9 PUSH2 0x17D3 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x16C9 JUMP JUMPDEST POP DUP3 PUSH2 0x16AE JUMP JUMPDEST PUSH2 0x1805 PUSH2 0x180B SWAP2 PUSH2 0x17F8 CALLER PUSH2 0x25A9 JUMP JUMPDEST PUSH2 0x1800 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x156B JUMP JUMPDEST PUSH0 PUSH2 0x15AF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1816 SWAP1 PUSH2 0x166B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1829 SWAP1 PUSH2 0x1824 PUSH2 0x18A8 JUMP JUMPDEST PUSH2 0x182B JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x1846 PUSH2 0x1840 PUSH2 0x183B PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ PUSH2 0x1856 JUMPI PUSH2 0x1854 SWAP1 PUSH2 0x24D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1899 PUSH2 0x1862 PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x186A PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x18A6 SWAP1 PUSH2 0x1818 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x18B0 PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x18C9 PUSH2 0x18C3 PUSH2 0x18BE PUSH2 0x25C8 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST SUB PUSH2 0x18D0 JUMPI JUMP JUMPDEST PUSH2 0x1912 PUSH2 0x18DB PUSH2 0x25C8 JUMP JUMPDEST PUSH2 0x18E3 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1922 PUSH2 0x1927 SWAP2 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x540 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1934 SWAP1 SLOAD PUSH2 0x1916 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1944 DUP3 PUSH2 0x20B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x195F JUMPI PUSH2 0x195C SWAP2 PUSH0 ADD PUSH2 0x1937 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST PUSH0 PUSH32 0x42616C756E69537761707065723A2041646472657373206E6F74207365740000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1998 PUSH1 0x1E PUSH1 0x20 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x19A1 DUP2 PUSH2 0x1964 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x19BA SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x198B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x19C4 JUMPI JUMP JUMPDEST PUSH2 0x19CC PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19FC PUSH1 0x4 DUP3 ADD PUSH2 0x19A5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A09 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A15 SWAP1 PUSH2 0x1A00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A21 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1A43 PUSH2 0x1A3E PUSH2 0x1A48 SWAP3 PUSH2 0x1A24 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x1A27 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A54 SWAP1 PUSH2 0x1A2F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1A61 SWAP1 PUSH2 0x12A5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x1AB0 SWAP5 PUSH2 0x1A9F PUSH2 0x1AA9 SWAP3 PUSH2 0x1A95 PUSH1 0x80 SWAP7 PUSH2 0x1A8B PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x1A4B JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST ADD SWAP1 PUSH2 0x1A58 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1AEE PUSH2 0x1AF4 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x104 JUMP JUMPDEST SWAP3 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x1B00 DUP4 DUP3 MUL PUSH2 0x104 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1B0F JUMPI JUMP JUMPDEST PUSH2 0x1AB2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B2B PUSH2 0x1B26 PUSH2 0x1B30 SWAP3 PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH2 0x104 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1B6C PUSH2 0x1B72 SWAP2 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x1B7D JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x1B33 JUMP JUMPDEST PUSH2 0x1B91 PUSH2 0x1B97 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x104 JUMP JUMPDEST SWAP3 PUSH2 0x104 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1BA2 JUMPI JUMP JUMPDEST PUSH2 0x1AB2 JUMP JUMPDEST PUSH2 0x1BB2 PUSH2 0x100 PUSH2 0x315 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1BBF SWAP1 PUSH2 0x1FF JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x1BCD SWAP1 PUSH2 0x1A27 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x1BDB SWAP1 PUSH2 0x104 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x1BE9 SWAP1 PUSH2 0x1E6 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1BF6 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C02 SWAP1 PUSH2 0x1BED JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C0E SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C1A SWAP1 PUSH2 0x1FF JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1C27 SWAP1 PUSH2 0x1A27 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1C34 SWAP1 PUSH2 0x104 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1C41 SWAP1 PUSH2 0x1E6 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0xE0 DUP1 PUSH2 0x1CD3 SWAP4 PUSH2 0x1C5D PUSH0 DUP3 ADD MLOAD PUSH0 DUP7 ADD SWAP1 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x1C6F PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x1C81 PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x1C1E JUMP JUMPDEST PUSH2 0x1C93 PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x1CA5 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x80 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST PUSH2 0x1CB7 PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST PUSH2 0x1CC9 PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0xC0 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST ADD MLOAD SWAP2 ADD SWAP1 PUSH2 0x1C38 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1CE9 SWAP1 PUSH0 PUSH2 0x100 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1C45 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x7320300000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E69537761707065723A20416D6F756E742052656365697665642069 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1D45 PUSH1 0x23 PUSH1 0x40 SWAP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH2 0x1D4E DUP2 PUSH2 0x1CEB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1D67 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1D38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1D71 JUMPI JUMP JUMPDEST PUSH2 0x1D79 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1DA9 PUSH1 0x4 DUP3 ADD PUSH2 0x1D52 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x1DB9 PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0x1DE6 PUSH1 0x20 PUSH2 0x1DD0 PUSH2 0x1DCB PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0x524900B5 SWAP1 PUSH2 0x1DDE PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1DF6 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x20EA JUMPI PUSH0 SWAP2 PUSH2 0x20BC JUMPI JUMPDEST POP SWAP4 PUSH2 0x1E2F DUP6 PUSH2 0x1E28 PUSH2 0x1E22 PUSH2 0x1E1D PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ ISZERO PUSH2 0x19BD JUMP JUMPDEST PUSH2 0x1E3B DUP2 DUP7 DUP6 SWAP2 PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x1E67 PUSH1 0x20 PUSH2 0x1E51 PUSH2 0x1E4C PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0xB0A70975 SWAP1 PUSH2 0x1E5F PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1E77 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x20B7 JUMPI PUSH2 0x1E9C SWAP2 PUSH2 0x1E97 SWAP2 PUSH0 SWAP2 PUSH2 0x2089 JUMPI JUMPDEST POP PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x1A18 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xF7729D43 SWAP2 DUP4 SWAP1 PUSH2 0x1EC9 PUSH0 DUP10 SWAP6 PUSH2 0x1ED4 PUSH2 0xBB8 DUP12 DUP5 SWAP2 PUSH2 0x1EBD PUSH2 0xF2 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0xB29 JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x1A65 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2084 JUMPI PUSH0 SWAP2 PUSH2 0x2056 JUMPI JUMPDEST POP DUP1 PUSH2 0x1EF2 PUSH1 0x1 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x1EFB SWAP2 PUSH2 0x1ADF JUMP JUMPDEST PUSH2 0x2710 PUSH2 0x1F07 SWAP1 PUSH2 0x1B17 JUMP JUMPDEST PUSH2 0x1F10 SWAP2 PUSH2 0x1B60 JUMP JUMPDEST PUSH2 0x1F19 SWAP2 PUSH2 0x1B82 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 PUSH2 0xBB8 SWAP3 TIMESTAMP SWAP2 SWAP3 SWAP4 PUSH0 SWAP6 PUSH2 0x1F2E PUSH2 0x1BA7 JUMP JUMPDEST SWAP8 PUSH0 DUP10 ADD SWAP1 PUSH2 0x1F3C SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD SWAP1 PUSH2 0x1F4A SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x1F53 SWAP1 PUSH2 0x1A2F JUMP JUMPDEST PUSH1 0x40 DUP8 ADD SWAP1 PUSH2 0x1F61 SWAP2 PUSH2 0x1BC3 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0x1F6F SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0x1F7D SWAP2 PUSH2 0x1BD1 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD SWAP1 PUSH2 0x1F8B SWAP2 PUSH2 0x1BD1 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD SWAP1 PUSH2 0x1F99 SWAP2 PUSH2 0x1BD1 JUMP JUMPDEST PUSH2 0x1FA2 SWAP1 PUSH2 0x12A5 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD SWAP1 PUSH2 0x1FB0 SWAP2 PUSH2 0x1BDF JUMP JUMPDEST SWAP1 PUSH2 0x1FBA SWAP1 PUSH2 0x1BF9 JUMP JUMPDEST PUSH2 0x1FC3 SWAP1 PUSH2 0x1C05 JUMP JUMPDEST PUSH4 0x414BF389 PUSH2 0x1FD0 PUSH2 0xF2 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x1FDC DUP3 SWAP4 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x4 DUP3 ADD SWAP1 PUSH2 0x1FEC SWAP2 PUSH2 0x1CD5 JUMP JUMPDEST SUB DUP2 GAS PUSH1 0x20 SWAP5 PUSH0 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x2051 JUMPI PUSH0 SWAP2 PUSH2 0x2023 JUMPI JUMPDEST POP PUSH2 0x2020 DUP2 PUSH2 0x201A PUSH2 0x2014 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0x1D6A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2044 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x204A JUMPI JUMPDEST PUSH2 0x203C DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x2003 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2032 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2077 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x207D JUMPI JUMPDEST PUSH2 0x206F DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x1EE6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2065 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x20AA SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x20B0 JUMPI JUMPDEST PUSH2 0x20A2 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x1E91 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2098 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x20DD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x20E3 JUMPI JUMPDEST PUSH2 0x20D5 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x1E08 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x20CB JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x20F8 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2104 ADDRESS PUSH2 0x20EF JUMP JUMPDEST PUSH2 0x2136 PUSH2 0x2130 PUSH32 0x0 PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2180 JUMPI JUMPDEST PUSH2 0x2144 JUMPI JUMP JUMPDEST PUSH2 0x214C PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x217C PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2189 PUSH2 0x27D8 JUMP JUMPDEST PUSH2 0x21BB PUSH2 0x21B5 PUSH32 0x0 PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ ISZERO PUSH2 0x213E JUMP JUMPDEST POP PUSH2 0x21CB PUSH2 0x18A8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21D6 SWAP1 PUSH2 0x21C2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21E1 SWAP1 PUSH2 0x58F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21ED SWAP1 PUSH2 0x21D8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21F9 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2205 DUP2 PUSH2 0x420 JUMP JUMPDEST SUB PUSH2 0x220C JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x221D DUP3 PUSH2 0x21FC JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2238 JUMPI PUSH2 0x2235 SWAP2 PUSH0 ADD PUSH2 0x2210 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x226B PUSH1 0x20 PUSH2 0x2255 PUSH2 0x2250 DUP7 PUSH2 0x21E4 JUMP JUMPDEST PUSH2 0x21F0 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x2263 PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x227B PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x234B JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x22DC JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x229D JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x22D8 SWAP1 PUSH2 0x22A9 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x22F7 PUSH2 0x22F1 PUSH2 0x22EC PUSH2 0x100B JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST SWAP2 PUSH2 0x420 JUMP JUMPDEST SUB PUSH2 0x230C JUMPI PUSH2 0x2307 SWAP3 SWAP4 POP PUSH2 0x2802 JUMP JUMPDEST PUSH2 0x229B JUMP JUMPDEST PUSH2 0x2347 DUP5 PUSH2 0x2318 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x430 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x236D SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2374 JUMPI JUMPDEST PUSH2 0x2365 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x221F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2288 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x235B JUMP JUMPDEST PUSH2 0x2384 ADDRESS PUSH2 0x20EF JUMP JUMPDEST PUSH2 0x23B6 PUSH2 0x23B0 PUSH32 0x0 PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST SUB PUSH2 0x23BD JUMPI JUMP JUMPDEST PUSH2 0x23C5 PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x23F5 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH2 0x2434 SWAP5 SWAP3 SWAP4 SWAP2 SWAP4 PUSH2 0x240A PUSH2 0x95F JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x241E PUSH2 0x2419 PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0x524900B5 SWAP1 PUSH2 0x242C PUSH2 0xF2 JUMP JUMPDEST SWAP9 DUP10 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2444 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x24A3 JUMPI PUSH2 0x2472 SWAP7 PUSH2 0x2468 SWAP2 PUSH0 SWAP2 PUSH2 0x2475 JUMPI JUMPDEST POP DUP3 SWAP1 DUP6 SWAP2 PUSH2 0x2628 JUMP JUMPDEST SWAP4 SWAP1 SWAP2 SWAP3 SWAP4 PUSH2 0x2A50 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2496 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x249C JUMPI JUMPDEST PUSH2 0x248E DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x245E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2484 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x24B1 SWAP1 PUSH2 0x5AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x24CC PUSH2 0x24C7 PUSH2 0x24D3 SWAP3 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x24B4 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1577 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x24DF PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x24F7 PUSH2 0x24ED PUSH0 DUP4 ADD PUSH2 0x131B JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x24B7 JUMP JUMPDEST SWAP1 PUSH2 0x252B PUSH2 0x2525 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x24A8 JUMP JUMPDEST SWAP2 PUSH2 0x24A8 JUMP JUMPDEST SWAP2 PUSH2 0x2534 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x253E DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x259C SWAP1 PUSH2 0x2597 PUSH2 0x2DA0 JUMP JUMPDEST PUSH2 0x259E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25A7 SWAP1 PUSH2 0x2E78 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25B2 SWAP1 PUSH2 0x258B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25BC PUSH2 0x2DA0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25C6 PUSH2 0x25B4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25D0 PUSH2 0x12EA JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x25DE SWAP1 PUSH2 0xA4D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x2603 SWAP3 SWAP5 SWAP4 PUSH2 0x25FC PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST ADD SWAP1 PUSH2 0x25D5 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x2626 SWAP3 SWAP5 SWAP4 PUSH2 0x261F PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x61A JUMP JUMPDEST ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2634 SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xB11 JUMP JUMPDEST SWAP1 PUSH2 0x263E DUP3 PUSH2 0xB1D JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 PUSH2 0x264F ADDRESS PUSH2 0x9A2 JUMP JUMPDEST SWAP1 PUSH2 0x266C DUP8 SWAP5 PUSH2 0x2677 PUSH2 0x2660 PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xC08 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x27D3 JUMPI PUSH0 SWAP2 PUSH2 0x27A5 JUMPI JUMPDEST POP PUSH2 0x269C PUSH2 0x2696 DUP4 PUSH2 0x104 JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST LT PUSH2 0x26A7 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B0 DUP3 PUSH2 0xB1D JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP4 DUP6 SWAP1 PUSH2 0x26D8 PUSH0 DUP1 SWAP8 PUSH2 0x26E3 PUSH2 0x26CC PUSH2 0xF2 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x25E2 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x27A0 JUMPI PUSH1 0x20 SWAP4 PUSH2 0x2700 SWAP3 PUSH2 0x2775 JUMPI JUMPDEST POP PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x2723 PUSH0 PUSH4 0x95EA7B3 SWAP6 SWAP4 SWAP6 PUSH2 0x272E PUSH2 0x2717 PUSH2 0xF2 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x2605 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2770 JUMPI PUSH2 0x2744 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x26A2 JUMP JUMPDEST PUSH2 0x2764 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2769 JUMPI JUMPDEST PUSH2 0x275C DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH2 0x273D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2752 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2794 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x2799 JUMPI JUMPDEST PUSH2 0x278C DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD15 JUMP JUMPDEST PUSH2 0x26FA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2782 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x27C6 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x27CC JUMPI JUMPDEST PUSH2 0x27BE DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x2689 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x27B4 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x27E0 PUSH2 0x12EA JUMP JUMPDEST POP PUSH2 0x27FB PUSH0 PUSH2 0x27F5 PUSH2 0x27F0 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x2E83 JUMP JUMPDEST ADD PUSH2 0x131B JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x280C DUP3 PUSH2 0x2E86 JUMP JUMPDEST DUP2 PUSH2 0x2837 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x24A8 JUMP JUMPDEST SWAP1 PUSH2 0x2840 PUSH2 0xF2 JUMP JUMPDEST DUP1 PUSH2 0x284A DUP2 PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2856 DUP2 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x2868 PUSH2 0x2862 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x287C JUMPI PUSH2 0x2878 SWAP2 PUSH2 0x2F96 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2886 PUSH2 0x2EFB JUMP JUMPDEST PUSH2 0x287A JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x289A SWAP1 PUSH2 0x288B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28A6 SWAP1 PUSH2 0x2891 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28B5 PUSH2 0x28BA SWAP2 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x289D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xE8 SHL SWAP1 JUMP JUMPDEST PUSH2 0x28CD SWAP1 PUSH2 0x28BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28DC PUSH2 0x28E1 SWAP2 PUSH2 0x1A27 JUMP JUMPDEST PUSH2 0x28C4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x14 PUSH2 0x2927 SWAP5 PUSH2 0x2917 PUSH1 0x3 DUP1 SWAP7 PUSH2 0x290F DUP6 DUP8 PUSH2 0x2907 PUSH2 0x291F SWAP10 DUP4 SWAP16 SWAP15 SWAP12 PUSH2 0x28A9 JUMP JUMPDEST ADD DUP1 SWAP3 PUSH2 0x28D0 JUMP JUMPDEST ADD DUP1 SWAP3 PUSH2 0x28A9 JUMP JUMPDEST ADD DUP1 SWAP3 PUSH2 0x28D0 JUMP JUMPDEST ADD DUP1 SWAP3 PUSH2 0x28A9 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x2953 PUSH2 0x295C PUSH1 0x20 SWAP4 PUSH2 0x2961 SWAP4 PUSH2 0x294A DUP2 PUSH2 0x27FE JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x292B JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH1 0x20 PUSH2 0x2981 PUSH2 0x2989 SWAP4 PUSH1 0x40 DUP8 ADD SWAP1 DUP8 DUP3 SUB PUSH0 DUP10 ADD MSTORE PUSH2 0x2934 JUMP JUMPDEST SWAP5 ADD SWAP1 PUSH2 0x18F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2995 PUSH1 0xA0 PUSH2 0x315 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x29C3 PUSH2 0x29CC PUSH1 0x20 SWAP4 PUSH2 0x29D1 SWAP4 PUSH2 0x29BA DUP2 PUSH2 0x27FE JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x299B JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2A35 SWAP1 PUSH1 0x80 DUP1 PUSH2 0x29F4 PUSH1 0xA0 DUP5 ADD PUSH0 DUP8 ADD MLOAD DUP6 DUP3 SUB PUSH0 DUP8 ADD MSTORE PUSH2 0x29A4 JUMP JUMPDEST SWAP5 PUSH2 0x2A07 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x2A19 PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST PUSH2 0x2A2B PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST ADD MLOAD SWAP2 ADD SWAP1 PUSH2 0x1C2B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A4D SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x29D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP4 PUSH2 0x2A5C PUSH2 0x95F JUMP JUMPDEST POP PUSH2 0x2A89 PUSH1 0x20 PUSH2 0x2A73 PUSH2 0x2A6E PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0x524900B5 SWAP1 PUSH2 0x2A81 PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2A99 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2D9B JUMPI PUSH0 SWAP2 PUSH2 0x2D6D JUMPI JUMPDEST POP SWAP3 PUSH2 0x2AB9 DUP6 DUP6 DUP6 SWAP2 PUSH2 0x2628 JUMP JUMPDEST PUSH2 0x2AE5 PUSH1 0x20 PUSH2 0x2ACF PUSH2 0x2ACA PUSH0 PUSH2 0x192A JUMP JUMPDEST PUSH2 0x5B7 JUMP JUMPDEST PUSH4 0xB0A70975 SWAP1 PUSH2 0x2ADD PUSH2 0xF2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xB29 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2AF5 PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2D68 JUMPI PUSH0 SWAP2 PUSH2 0x2D3A JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x2B5F PUSH2 0x2B5A DUP9 PUSH2 0x2B54 PUSH2 0x2B1F PUSH2 0xBB8 PUSH2 0x1A2F JUMP JUMPDEST SWAP2 PUSH2 0x2B46 DUP14 DUP10 SWAP1 PUSH2 0x2B31 PUSH2 0xBB8 PUSH2 0x1A2F JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x2B3B PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP12 DUP8 ADD PUSH2 0x28E5 JUMP JUMPDEST DUP7 DUP3 ADD DUP2 SUB DUP3 MSTORE SUB DUP3 PUSH2 0x2EC JUMP JUMPDEST SWAP4 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x1A18 JUMP JUMPDEST PUSH4 0xCDCA1753 SWAP3 SWAP1 PUSH2 0x2B83 PUSH0 DUP9 SWAP6 PUSH2 0x2B8E PUSH2 0x2B77 PUSH2 0xF2 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0xB29 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x2965 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2D35 JUMPI PUSH2 0x2C66 PUSH1 0x20 SWAP8 PUSH2 0x2C5D PUSH2 0x2C75 SWAP7 PUSH2 0x2C30 PUSH2 0x2CA2 SWAP13 PUSH2 0x2C22 PUSH2 0x2BF1 PUSH2 0x2C7A SWAP13 PUSH2 0x2C6F SWAP11 PUSH0 SWAP2 PUSH2 0x2D07 JUMPI JUMPDEST POP PUSH2 0x2BEB PUSH2 0x2BDA DUP3 PUSH2 0x2BD4 PUSH1 0x1 PUSH2 0x97F JUMP JUMPDEST SWAP1 PUSH2 0x1ADF JUMP JUMPDEST PUSH2 0x2BE5 PUSH2 0x2710 PUSH2 0x1B17 JUMP JUMPDEST SWAP1 PUSH2 0x1B60 JUMP JUMPDEST SWAP1 PUSH2 0x1B82 JUMP JUMPDEST SWAP6 SWAP2 PUSH2 0x2BFE PUSH2 0xBB8 PUSH2 0x1A2F JUMP JUMPDEST SWAP11 SWAP1 PUSH2 0x2C0B PUSH2 0xBB8 PUSH2 0x1A2F JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x2C15 PUSH2 0xF2 JUMP JUMPDEST SWAP13 PUSH1 0x20 SWAP6 DUP15 SWAP7 DUP8 ADD PUSH2 0x28E5 JUMP JUMPDEST DUP14 DUP3 ADD DUP2 SUB DUP3 MSTORE SUB DUP9 PUSH2 0x2EC JUMP JUMPDEST SWAP4 PUSH2 0x2C54 TIMESTAMP SWAP2 SWAP4 SWAP6 PUSH2 0x2C4C PUSH2 0x2C43 PUSH2 0x298B JUMP JUMPDEST SWAP10 PUSH0 DUP12 ADD PUSH2 0x2998 JUMP JUMPDEST DUP13 DUP10 ADD PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD PUSH2 0x1BD1 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD PUSH2 0x1BD1 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD PUSH2 0x1BD1 JUMP JUMPDEST SWAP3 PUSH2 0x1BF9 JUMP JUMPDEST PUSH2 0x1C05 JUMP JUMPDEST PUSH2 0x2C97 PUSH0 PUSH4 0xC04B8D59 PUSH2 0x2C8B PUSH2 0xF2 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0xB29 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x2A38 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D02 JUMPI PUSH0 SWAP2 PUSH2 0x2CD4 JUMPI JUMPDEST POP PUSH2 0x2CD1 DUP2 PUSH2 0x2CCB PUSH2 0x2CC5 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0x1D6A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CF5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2CFB JUMPI JUMPDEST PUSH2 0x2CED DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x2CB4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2CE3 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2D28 SWAP3 POP RETURNDATASIZE DUP2 GT PUSH2 0x2D2E JUMPI JUMPDEST PUSH2 0x2D20 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH0 PUSH2 0x2BC2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2D5B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D61 JUMPI JUMPDEST PUSH2 0x2D53 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x2B07 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D49 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2D8E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D94 JUMPI JUMPDEST PUSH2 0x2D86 DUP2 DUP4 PUSH2 0x2EC JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1946 JUMP JUMPDEST PUSH0 PUSH2 0x2AAB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D7C JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST PUSH2 0x2DB1 PUSH2 0x2DAB PUSH2 0x2FC9 JUMP JUMPDEST ISZERO PUSH2 0xCED JUMP JUMPDEST PUSH2 0x2DB7 JUMPI JUMP JUMPDEST PUSH2 0x2DBF PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2DEF PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E04 SWAP1 PUSH2 0x2DFF PUSH2 0x2DA0 JUMP JUMPDEST PUSH2 0x2E06 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2E21 PUSH2 0x2E1B PUSH2 0x2E16 PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST SWAP2 PUSH2 0x1FF JUMP JUMPDEST EQ PUSH2 0x2E31 JUMPI PUSH2 0x2E2F SWAP1 PUSH2 0x24D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E74 PUSH2 0x2E3D PUSH0 PUSH2 0x12C1 JUMP JUMPDEST PUSH2 0x2E45 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E81 SWAP1 PUSH2 0x2DF3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x2E9A PUSH2 0x2E94 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST EQ PUSH2 0x2EBC JUMPI PUSH2 0x2EBA SWAP1 PUSH0 PUSH2 0x2EB4 PUSH2 0x2EAF PUSH2 0x100B JUMP JUMPDEST PUSH2 0x2E83 JUMP JUMPDEST ADD PUSH2 0x24B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2EF7 SWAP1 PUSH2 0x2EC8 PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2F0E PUSH2 0x2F08 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH2 0x2F15 JUMPI JUMP JUMPDEST PUSH2 0x2F1D PUSH2 0xF2 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2F4D PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F68 PUSH2 0x2F63 DUP4 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x2F88 JUMPI PUSH2 0x2F7D RETURNDATASIZE PUSH2 0x2F56 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x2F90 PUSH2 0x2F51 JUMP JUMPDEST SWAP1 PUSH2 0x2F86 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2FC2 SWAP4 PUSH2 0x2FA4 PUSH2 0x2F51 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x2FB9 PUSH2 0x2F6D JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x2FE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2FD1 PUSH2 0x2FC5 JUMP JUMPDEST POP PUSH2 0x2FE4 PUSH0 PUSH2 0x2FDE PUSH2 0x2567 JUMP JUMPDEST ADD PUSH2 0x1366 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2FFB SWAP1 PUSH2 0x2FF4 PUSH2 0x2F51 JUMP JUMPDEST POP ISZERO PUSH2 0xCED JUMP JUMPDEST PUSH0 EQ PUSH2 0x3007 JUMPI POP PUSH2 0x308B JUMP JUMPDEST PUSH2 0x3010 DUP3 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x3022 PUSH2 0x301C PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST EQ DUP1 PUSH2 0x3070 JUMPI JUMPDEST PUSH2 0x3031 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x306C SWAP1 PUSH2 0x303D PUSH2 0xF2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x627 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x3085 PUSH2 0x307F PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST EQ PUSH2 0x3029 JUMP JUMPDEST PUSH2 0x3094 DUP2 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x30A6 PUSH2 0x30A0 PUSH0 PUSH2 0xA4D JUMP JUMPDEST SWAP2 PUSH2 0x104 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x30B5 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x30BD PUSH2 0xF2 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x30ED PUSH1 0x4 DUP3 ADD PUSH2 0x148 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE PUSH21 0x9730B427DCA3D0AB855D099D42E33226DEAF9E13D7 CALLDATASIZE MSTORE8 0xAD 0xC0 EXTCODEHASH 0xF9 DUP8 0xB5 0xDC PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"2226:8768:52:-:0;;;;;;;;;-1:-1:-1;2226:8768:52;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2312:33::-;;;;;:::i;:::-;;:::o;2226:8768::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;2226:8768:52:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;2303:62:0;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;2226:8768:52:-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;10750:131::-;10840:33;10750:131;10840:33;;:::i;:::-;10750:131::o;:::-;;;;:::i;:::-;:::o;2226:8768::-;;;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10889:102::-;10945:7;;:::i;:::-;10972:11;;;;:::i;:::-;10965:18;:::o;2226:8768::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;3789:670::-;;;;3936:17;;:::i;:::-;3974:10;3966:52;3974:10;:27;;3988:13;3996:4;3988:13;:::i;:::-;3974:27;:::i;:::-;;;:::i;:::-;;;3966:52;:::i;:::-;4029:34;4037:6;:10;;4046:1;4037:10;:::i;:::-;;;:::i;:::-;;4029:34;:::i;:::-;4082:36;;:24;:14;4089:6;4082:14;:::i;:::-;:24;:::i;:::-;;4107:10;4082:36;4107:10;4082:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;4074:79;4082:36;;;;;3789:670;4122:6;4082:46;;4122:6;4082:46;:::i;:::-;;;:::i;:::-;;;4074:79;:::i;:::-;4184:24;:14;4191:6;4184:14;:::i;:::-;:24;:::i;:::-;:51;:24;4209:10;;4229:4;4184:51;4221:13;4229:4;4221:13;:::i;:::-;4184:51;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;4246:69;4184:51;;;;;3789:670;4164:71;4254:19;;4267:6;4254:19;:::i;:::-;;;:::i;:::-;;;4246:69;:::i;:::-;4326:27;:14;4333:6;4326:14;:::i;:::-;:27;:::i;:::-;;:62;:27;4354:10;;4374:4;4326:62;;4366:13;4374:4;4366:13;:::i;:::-;4381:6;4326:62;4381:6;4326:62;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4406:45;4326:62;;;3789:670;4418:6;4426;4434;4442:8;4406:45;;:::i;:::-;4399:52;:::o;4326:62::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;4184:51::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4082:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;2226:8768:52:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;2226:8768:52:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;5485:707:52:-;;;;;;5659:17;;:::i;:::-;5697:10;5689:52;5697:10;:27;;5711:13;5719:4;5711:13;:::i;:::-;5697:27;:::i;:::-;;;:::i;:::-;;;5689:52;:::i;:::-;5752:34;5760:6;:10;;5769:1;5760:10;:::i;:::-;;;:::i;:::-;;5752:34;:::i;:::-;5805:36;;:24;:14;5812:6;5805:14;:::i;:::-;:24;:::i;:::-;;5830:10;5805:36;5830:10;5805:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;5797:79;5805:36;;;;;5485:707;5845:6;5805:46;;5845:6;5805:46;:::i;:::-;;;:::i;:::-;;;5797:79;:::i;:::-;5907:24;:14;5914:6;5907:14;:::i;:::-;:24;:::i;:::-;:51;:24;5932:10;;5952:4;5907:51;5944:13;5952:4;5944:13;:::i;:::-;5907:51;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;5969:69;5907:51;;;;;5485:707;5887:71;5977:19;;5990:6;5977:19;:::i;:::-;;;:::i;:::-;;;5969:69;:::i;:::-;6049:27;:14;6056:6;6049:14;:::i;:::-;:27;:::i;:::-;;:62;:27;6077:10;;6097:4;6049:62;;6089:13;6097:4;6089:13;:::i;:::-;6104:6;6049:62;6104:6;6049:62;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6129:55;6049:62;;;5485:707;6143:6;6151;6159;6167;6175:8;6129:55;;:::i;:::-;6122:62;:::o;6049:::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5907:51::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5805:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;2226:8768:52:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;2226:8768:52:-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;2226:8768:52:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;2628:7:52;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;2226:8768:52;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2550:217::-;2720:39;2550:217;;2731:28;2550:217;2663:10;;;:::i;:::-;;;:::i;:::-;2731:28;:::i;:::-;2720:39;;:::i;:::-;2550:217::o;:::-;;;;;:::i;:::-;:::o;2226:8768::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2354:188:52;2506:28;2495:39;2354:188;2438:10;;;:::i;:::-;;;:::i;:::-;2506:28;:::i;:::-;2495:39;;:::i;:::-;2354:188::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2658:162::-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2226:8768:52;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6576:1199;;;;;6724:17;;:::i;:::-;6778:8;:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;6576:1199;6754:51;6824:13;6816:70;6824:13;:27;;6841:10;6849:1;6841:10;:::i;:::-;6824:27;:::i;:::-;;;:::i;:::-;;;6816:70;:::i;:::-;6936:6;6913;6921:13;6936:6;;;:::i;:::-;6973:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;7034:37;6973:27;7034:15;6973:27;;;;;6576:1199;6956:44;7034:15;:::i;:::-;:37;:::i;:::-;:70;:37;7072:6;;7080;7034:70;;7080:6;7088:4;7034:70;7088:4;7094:6;7102:1;7034:70;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6576:1199;7011:93;7130:12;7161:11;;;:::i;:::-;7146:26;;;:::i;:::-;7176:5;7145:36;;;:::i;:::-;;;;:::i;:::-;7130:51;;;:::i;:::-;7304:6;7335;7361:4;;7399:8;7433:15;7473:6;7512:12;7558:1;;7245:326;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;7619:13;7607:26;;;:::i;:::-;:43;;;:::i;:::-;;:51;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;6576:1199;7582:76;7669:66;7677:14;:18;;7694:1;7677:18;:::i;:::-;;;:::i;:::-;;7669:66;:::i;:::-;7746:21;:::o;7607:51::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7034:70::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6973:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6778:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2226:8768::-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;2775:84:52:-;;;;:::i;:::-;:::o;2226:8768::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;8290:424:52;;8525:27;8290:424;;;;;8471:17;;:::i;:::-;8525:8;:27;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;8637:69;8525:27;8604:12;8525:27;;;;;8290:424;8501:51;8581:6;8589:13;8604:12;;;:::i;:::-;8667:6;8675;8683:12;8697:8;8637:69;;:::i;:::-;8630:76;:::o;8525:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2226:8768::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3774:248:0:-;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;2226:8768:52:-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;10381:335::-;10490:13;10381:335;;;;10490:13;:::i;:::-;10559:6;:16;:6;:16;:::i;:::-;:40;:16;10584:4;10576:13;10584:4;10576:13;:::i;:::-;10591:7;10559:40;10591:7;10559:40;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;10381:335;10602:6;10559:49;;10602:6;10559:49;:::i;:::-;;;:::i;:::-;;10555:154;;10381:335;;;;:::o;10555:154::-;10625:14;:6;:14;:::i;:::-;;:26;:14;10640:7;;10649:1;10625:26;;10649:1;10625:26;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10666:31;10625:26;10666:14;10625:26;;;10555:154;10666:6;:14;:::i;:::-;:31;;:14;10681:7;10690:6;10666:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;10555:154;;;;;10666:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;10625:26::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;10559:40::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;2226:8768:52:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;2226:8768:52;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;8722:1180::-;;;;;8905:17;;:::i;:::-;8959:8;:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8722:1180;8935:51;9013:6;9036;9013;9021:13;9036:6;;;:::i;:::-;9073:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8722:1180;9056:44;9235:45;:31;:15;9148:6;9131:68;9156:12;9163:4;9156:12;:::i;:::-;9170:6;9131:68;9170:6;;9185:4;9178:12;9185:4;9178:12;:::i;:::-;9192:6;9131:68;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;9243:6;9235:15;:::i;:::-;:31;:::i;:::-;;9267:4;9273:6;9235:45;;9273:6;9235:45;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;9415:289;9740:45;9235;9415:289;9740:26;9235:45;9465:68;9740:45;9235;9465:68;9306:51;9740:37;9235:45;9415:289;9235:45;;;;;8722:1180;9212:68;9321:36;9322:26;9306:12;9337:11;;;:::i;:::-;9322:26;;:::i;:::-;9321:36;9352:5;9321:36;:::i;:::-;;;:::i;:::-;9306:51;;:::i;:::-;9482:6;9497:4;9490:12;9497:4;9490:12;:::i;:::-;9504:6;9519:4;9512:12;9519:4;9512:12;:::i;:::-;9526:6;9465:68;;;:::i;:::-;;9740:45;9465:68;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;9601:15;9415:289;9601:15;9641:6;9680:12;9415:289;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;9752:13;9740:26;:::i;:::-;:37;:::i;:::-;:45;;:37;:45;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8722:1180;9715:70;9796:66;9804:14;:18;;9821:1;9804:18;:::i;:::-;;;:::i;:::-;;9796:66;:::i;:::-;9873:21;:::o;9740:45::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9235:::-;9740;9235;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9073:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8959:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7084:141:1:-;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2226:8768:52;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;2226:8768:52:-;;;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2516600","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","getSlippagePercentage()":"2656","initialize(address)":"infinite","multiHopSwap(address,address,address,uint256,address)":"infinite","owner()":"2884","proxiableUUID()":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","renounceOwnership()":"infinite","setSlippagePercentage(uint256)":"infinite","singleSwap(address,address,uint256,address)":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_multiHopSwap(address,address,address,uint256,address)":"infinite","_multiHopSwapFallback(address,address,address,uint256,address)":"infinite","_secureApproval(address,address,uint256)":"infinite","_singleSwap(address,address,uint256,address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","getSlippagePercentage()":"25635dbe","initialize(address)":"c4d66de8","multiHopSwap(address,address,address,uint256,address)":"5efaaebb","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","renounceOwnership()":"715018a6","setSlippagePercentage(uint256)":"03baf066","singleSwap(address,address,uint256,address)":"2d6bc8ea","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlippagePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token2\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"multiHopSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_slippagePercentage\",\"type\":\"uint256\"}],\"name\":\"setSlippagePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"singleSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"multiHopSwap(address,address,address,uint256,address)\":{\"details\":\"Executes a multi-hop swap between three tokens using Uniswap.\",\"params\":{\"amount\":\"The amount of token0 to be swapped.\",\"receiver\":\"The address that will receive the swapped tokens.\",\"token0\":\"The address of the token to be swapped.\",\"token1\":\"The address of the intermediate token to be used for the swap.\",\"token2\":\"The address of the final token to be received.\"},\"returns\":{\"amountOut\":\"The amount of token2 received from the swap. The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0. Also, the caller must have approved this contract to spend the amount of token0. The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap. The swapped tokens are sent to the receiver's address. The function returns the amount of token2 received from the swap.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"singleSwap(address,address,uint256,address)\":{\"details\":\"Executes a single swap between two tokens using Uniswap.\",\"params\":{\"amount\":\"The amount of token0 to be swapped.\",\"receiver\":\"The address that will receive the swapped tokens.\",\"token0\":\"The address of the token to be swapped.\",\"token1\":\"The address of the token to be received.\"},\"returns\":{\"amountOut\":\"The amount of token1 received from the swap. The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0. Also, the caller must have approved this contract to spend the amount of token0. The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap. The swapped tokens are sent to the receiver's address. The function returns the amount of token1 received from the swap.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/managers/BaluniV1Swapper.sol\":\"BaluniV1Swapper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title The interface for the Uniswap V3 Factory\\n/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\\ninterface IUniswapV3Factory {\\n    /// @notice Emitted when the owner of the factory is changed\\n    /// @param oldOwner The owner before the owner was changed\\n    /// @param newOwner The owner after the owner was changed\\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\\n\\n    /// @notice Emitted when a pool is created\\n    /// @param token0 The first token of the pool by address sort order\\n    /// @param token1 The second token of the pool by address sort order\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\\n    /// @param pool The address of the created pool\\n    event PoolCreated(\\n        address indexed token0,\\n        address indexed token1,\\n        uint24 indexed fee,\\n        int24 tickSpacing,\\n        address pool\\n    );\\n\\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\\n    /// @param fee The enabled fee, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\\n\\n    /// @notice Returns the current owner of the factory\\n    /// @dev Can be changed by the current owner via setOwner\\n    /// @return The address of the factory owner\\n    function owner() external view returns (address);\\n\\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\\n    /// @return The tick spacing\\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\\n\\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\\n    /// @param tokenA The contract address of either token0 or token1\\n    /// @param tokenB The contract address of the other token\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @return pool The pool address\\n    function getPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external view returns (address pool);\\n\\n    /// @notice Creates a pool for the given two tokens and fee\\n    /// @param tokenA One of the two tokens in the desired pool\\n    /// @param tokenB The other of the two tokens in the desired pool\\n    /// @param fee The desired fee for the pool\\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\\n    /// are invalid.\\n    /// @return pool The address of the newly created pool\\n    function createPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external returns (address pool);\\n\\n    /// @notice Updates the owner of the factory\\n    /// @dev Must be called by the current owner\\n    /// @param _owner The new owner of the factory\\n    function setOwner(address _owner) external;\\n\\n    /// @notice Enables a fee amount with the given tickSpacing\\n    /// @dev Fee amounts may never be removed once enabled\\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\\n}\\n\",\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Callback for IUniswapV3PoolActions#swap\\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\\ninterface IUniswapV3SwapCallback {\\n    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\\n    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\\n    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\\n    function uniswapV3SwapCallback(\\n        int256 amount0Delta,\\n        int256 amount1Delta,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.7.5;\\npragma abicoder v2;\\n\\n/// @title Quoter Interface\\n/// @notice Supports quoting the calculated amounts from exact input or exact output swaps\\n/// @dev These functions are not marked view because they rely on calling non-view functions and reverting\\n/// to compute the result. They are also not gas efficient and should not be called on-chain.\\ninterface IQuoter {\\n    /// @notice Returns the amount out received for a given exact input swap without executing the swap\\n    /// @param path The path of the swap, i.e. each token pair and the pool fee\\n    /// @param amountIn The amount of the first token to swap\\n    /// @return amountOut The amount of the last token that would be received\\n    function quoteExactInput(bytes memory path, uint256 amountIn) external returns (uint256 amountOut);\\n\\n    /// @notice Returns the amount out received for a given exact input but for a swap of a single pool\\n    /// @param tokenIn The token being swapped in\\n    /// @param tokenOut The token being swapped out\\n    /// @param fee The fee of the token pool to consider for the pair\\n    /// @param amountIn The desired input amount\\n    /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\\n    /// @return amountOut The amount of `tokenOut` that would be received\\n    function quoteExactInputSingle(\\n        address tokenIn,\\n        address tokenOut,\\n        uint24 fee,\\n        uint256 amountIn,\\n        uint160 sqrtPriceLimitX96\\n    ) external returns (uint256 amountOut);\\n\\n    /// @notice Returns the amount in required for a given exact output swap without executing the swap\\n    /// @param path The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order\\n    /// @param amountOut The amount of the last token to receive\\n    /// @return amountIn The amount of first token required to be paid\\n    function quoteExactOutput(bytes memory path, uint256 amountOut) external returns (uint256 amountIn);\\n\\n    /// @notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\\n    /// @param tokenIn The token being swapped in\\n    /// @param tokenOut The token being swapped out\\n    /// @param fee The fee of the token pool to consider for the pair\\n    /// @param amountOut The desired output amount\\n    /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\\n    /// @return amountIn The amount required as the input for the swap in order to receive `amountOut`\\n    function quoteExactOutputSingle(\\n        address tokenIn,\\n        address tokenOut,\\n        uint24 fee,\\n        uint256 amountOut,\\n        uint160 sqrtPriceLimitX96\\n    ) external returns (uint256 amountIn);\\n}\\n\",\"keccak256\":\"0x124b4334f058f70afd8f3b04315cc0812961d400957225d0875872b2a31afbff\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.7.5;\\npragma abicoder v2;\\n\\nimport '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';\\n\\n/// @title Router token swapping functionality\\n/// @notice Functions for swapping tokens via Uniswap V3\\ninterface ISwapRouter is IUniswapV3SwapCallback {\\n    struct ExactInputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Swaps `amountIn` of one token for as much as possible of another token\\n    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\\n    /// @return amountOut The amount of the received token\\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\\n\\n    struct ExactInputParams {\\n        bytes path;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n    }\\n\\n    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\\n    /// @return amountOut The amount of the received token\\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\\n\\n    struct ExactOutputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountOut;\\n        uint256 amountInMaximum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Swaps as little as possible of one token for `amountOut` of another token\\n    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\\n    /// @return amountIn The amount of the input token\\n    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\\n\\n    struct ExactOutputParams {\\n        bytes path;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountOut;\\n        uint256 amountInMaximum;\\n    }\\n\\n    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\\n    /// @return amountIn The amount of the input token\\n    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\\n}\\n\",\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/IBaluniV1PoolPeriphery.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1PoolPeriphery\\r\\n * @dev Interface for the BaluniV1PoolPeriphery contract\\r\\n */\\r\\ninterface IBaluniV1PoolPeriphery {\\r\\n    function initialize(address _registry) external;\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) external;\\r\\n\\r\\n    function swapTokenForToken(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minAmount,\\r\\n        address from,\\r\\n        address to,\\r\\n        uint deadline\\r\\n    ) external returns (uint256 amountOut, uint256 haircut);\\r\\n\\r\\n    function swapTokensForTokens(\\r\\n        address[] calldata tokenPath,\\r\\n        address[] calldata poolPath,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minimumToAmount,\\r\\n        address to,\\r\\n        uint256 deadline\\r\\n    ) external returns (uint256 amountOut, uint256 haircut);\\r\\n\\r\\n    function batchSwap(\\r\\n        address[] calldata fromTokens,\\r\\n        address[] calldata toTokens,\\r\\n        uint256[] calldata amounts,\\r\\n        address[] calldata receivers\\r\\n    ) external returns (uint256[] memory);\\r\\n\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function getPoolsContainingToken(address token) external view returns (address[] memory);\\r\\n\\r\\n    function getVersion() external view returns (uint64);\\r\\n}\\r\\n\",\"keccak256\":\"0xb2419b790831f69d82667bc962bb0d13d94014f47a99024153fcb0455e6e70b4\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1PoolRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1PoolRegistry {\\r\\n    function getPoolByAssets(address asset1, address asset2) external view returns (address);\\r\\n    function getPoolsByAsset(address token) external view returns (address[] memory);\\r\\n    function poolExist(address _pool) external view returns (bool);\\r\\n    function getAllPools() external view returns (address[] memory);\\r\\n}\\r\\n\",\"keccak256\":\"0x584696ac6736f57a477f4d23de280e68263942472ee88f7f2f6965e4dea53661\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/managers/BaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\\r\\nimport '@uniswap/v3-periphery/contracts/interfaces/IQuoter.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1PoolPeriphery.sol';\\r\\nimport '../interfaces/IBaluniV1PoolRegistry.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\n\\r\\ncontract BaluniV1Swapper is Initializable, OwnableUpgradeable, UUPSUpgradeable {\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __UUPSUpgradeable_init();\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __UUPSUpgradeable_init();\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    /**\\r\\n     * @dev Executes a single swap between two tokens using Uniswap.\\r\\n     * @param token0 The address of the token to be swapped.\\r\\n     * @param token1 The address of the token to be received.\\r\\n     * @param amount The amount of token0 to be swapped.\\r\\n     * @param receiver The address that will receive the swapped tokens.\\r\\n     * @return amountOut The amount of token1 received from the swap.\\r\\n     *\\r\\n     * The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0.\\r\\n     * Also, the caller must have approved this contract to spend the amount of token0.\\r\\n     * The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap.\\r\\n     * The swapped tokens are sent to the receiver's address.\\r\\n     * The function returns the amount of token1 received from the swap.\\r\\n     */\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut) {\\r\\n        require(msg.sender != address(this), 'Wrong sender');\\r\\n        require(amount > 0, 'Amount is 0');\\r\\n        require(IERC20(token0).balanceOf(msg.sender) >= amount, 'Insufficient Balance');\\r\\n        uint256 allowance = IERC20(token0).allowance(msg.sender, address(this));\\r\\n        require(allowance >= amount, 'BaluniSwapper: Insufficient Allowance');\\r\\n        IERC20(token0).transferFrom(msg.sender, address(this), amount);\\r\\n        return _singleSwap(token0, token1, amount, receiver);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Executes a multi-hop swap between three tokens using Uniswap.\\r\\n     * @param token0 The address of the token to be swapped.\\r\\n     * @param token1 The address of the intermediate token to be used for the swap.\\r\\n     * @param token2 The address of the final token to be received.\\r\\n     * @param amount The amount of token0 to be swapped.\\r\\n     * @param receiver The address that will receive the swapped tokens.\\r\\n     * @return amountOut The amount of token2 received from the swap.\\r\\n     *\\r\\n     * The function requires that the caller has a sufficient balance of token0 and that the amount to be swapped is greater than 0.\\r\\n     * Also, the caller must have approved this contract to spend the amount of token0.\\r\\n     * The function transfers the amount of token0 to be swapped from the caller to this contract, then performs the swap using Uniswap.\\r\\n     * The swapped tokens are sent to the receiver's address.\\r\\n     * The function returns the amount of token2 received from the swap.\\r\\n     */\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut) {\\r\\n        require(msg.sender != address(this), 'Wrong sender');\\r\\n        require(amount > 0, 'Amount is 0');\\r\\n        require(IERC20(token0).balanceOf(msg.sender) >= amount, 'Insufficient Balance');\\r\\n        uint256 allowance = IERC20(token0).allowance(msg.sender, address(this));\\r\\n        require(allowance >= amount, 'BaluniSwapper: Insufficient Allowance');\\r\\n        IERC20(token0).transferFrom(msg.sender, address(this), amount);\\r\\n        return _multiHopSwap(token0, token1, token2, amount, receiver);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Executes a single swap on Uniswap.\\r\\n     * @param token0 The address of the input token.\\r\\n     * @param token1 The address of the output token.\\r\\n     * @param amount The amount of input token to be swapped.\\r\\n     * @param receiver The address that will receive the swapped tokens.\\r\\n     * @return amountOut The amount of output tokens received.\\r\\n     */\\r\\n    function _singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address uniswapRouter = registry.getUniswapRouter();\\r\\n        require(uniswapRouter != address(0), 'BaluniSwapper: Address not set');\\r\\n        _secureApproval(token0, uniswapRouter, amount);\\r\\n\\r\\n        address quoter = registry.getUniswapQuoter();\\r\\n        uint256 amountOutMin = IQuoter(quoter).quoteExactInputSingle(token0, token1, 3000, amount, 0);\\r\\n        amountOutMin = amountOutMin - (amountOutMin * slippagePct) / 10000;\\r\\n\\r\\n        ISwapRouter.ExactInputSingleParams memory params = ISwapRouter.ExactInputSingleParams({\\r\\n            tokenIn: token0,\\r\\n            tokenOut: token1,\\r\\n            fee: 3000,\\r\\n            recipient: address(receiver),\\r\\n            deadline: block.timestamp,\\r\\n            amountIn: amount,\\r\\n            amountOutMinimum: amountOutMin,\\r\\n            sqrtPriceLimitX96: 0\\r\\n        });\\r\\n        uint256 amountReceived = ISwapRouter(uniswapRouter).exactInputSingle(params);\\r\\n        require(amountReceived > 0, 'BaluniSwapper: Amount Received is 0');\\r\\n        return amountReceived;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Executes a multi-hop swap using the Uniswap router.\\r\\n     * @param token0 The address of the first token in the swap path.\\r\\n     * @param token1 The address of the second token in the swap path.\\r\\n     * @param token2 The address of the third token in the swap path.\\r\\n     * @param tokenBalance The amount of tokens to be swapped.\\r\\n     * @param receiver The address that will receive the swapped tokens.\\r\\n     * @return amountOut The amount of tokens received after the swap.\\r\\n     */\\r\\n    function _multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 tokenBalance,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address uniswapRouter = registry.getUniswapRouter();\\r\\n\\r\\n        _secureApproval(token0, uniswapRouter, tokenBalance);\\r\\n\\r\\n        return _multiHopSwapFallback(token0, token1, token2, tokenBalance, receiver);\\r\\n    }\\r\\n\\r\\n    function _multiHopSwapFallback(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) internal returns (uint256 amountOut) {\\r\\n        address uniswapRouter = registry.getUniswapRouter();\\r\\n        _secureApproval(token0, uniswapRouter, amount);\\r\\n\\r\\n        address quoter = registry.getUniswapQuoter();\\r\\n        bytes memory path = abi.encodePacked(token0, uint24(3000), token1, uint24(3000), token2);\\r\\n\\r\\n        uint256 amountOutMin = IQuoter(quoter).quoteExactInput(path, amount);\\r\\n        amountOutMin = amountOutMin - (amountOutMin * slippagePct) / 10000;\\r\\n\\r\\n        ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({\\r\\n            path: abi.encodePacked(token0, uint24(3000), token1, uint24(3000), token2),\\r\\n            recipient: address(receiver),\\r\\n            deadline: block.timestamp,\\r\\n            amountIn: amount,\\r\\n            amountOutMinimum: amountOutMin\\r\\n        });\\r\\n        uint256 amountReceived = ISwapRouter(uniswapRouter).exactInput(params);\\r\\n        require(amountReceived > 0, 'BaluniSwapper: Amount Received is 0');\\r\\n        return amountReceived;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Ensures that the contract has the necessary approval for a token to be spent by a spender.\\r\\n     * If the current allowance is not equal to the desired amount, it updates the allowance accordingly.\\r\\n     * @param token The address of the token to be approved.\\r\\n     * @param spender The address of the spender.\\r\\n     * @param amount The desired allowance amount.\\r\\n     * @notice This function is internal and should not be called directly.\\r\\n     */\\r\\n    function _secureApproval(address token, address spender, uint256 amount) internal {\\r\\n        IERC20 _token = IERC20(token);\\r\\n        // check allowance thena pprove\\r\\n        if (_token.allowance(address(this), spender) < amount) {\\r\\n            _token.approve(spender, 0);\\r\\n            _token.approve(spender, amount);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    uint256 slippagePct;\\r\\n    function setSlippagePercentage(uint256 _slippagePercentage) external onlyOwner {\\r\\n        slippagePct = _slippagePercentage;\\r\\n    }\\r\\n\\r\\n    function getSlippagePercentage() external view returns (uint256) {\\r\\n        return slippagePct;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x1e4b49ab22ea2b6cf7899cf0bfa74d6c99297c9a3e87e9664cc993097762b1b0\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":9492,"contract":"contracts/managers/BaluniV1Swapper.sol:BaluniV1Swapper","label":"registry","offset":0,"slot":"0","type":"t_contract(IBaluniV1Registry)4909"},{"astId":10035,"contract":"contracts/managers/BaluniV1Swapper.sol:BaluniV1Swapper","label":"slippagePct","offset":0,"slot":"1","type":"t_uint256"}],"types":{"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/mock/MockOracle.sol":{"MockOracle":{"abi":[{"inputs":[{"internalType":"address","name":"usdt","type":"address"},{"internalType":"address","name":"_usdc","type":"address"},{"internalType":"address","name":"_wmatic","type":"address"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"address","name":"wbtc","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TO_USDT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TO_WBTC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TO_WETH_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TO_WMATIC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_TO_USDC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_TO_WBTC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_TO_WETH_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_TO_WMATIC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC_TO_USDC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC_TO_USDT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC_TO_WETH_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC_TO_WMATIC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_TO_USDC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_TO_USDT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_TO_WBTC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_TO_WMATIC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC_TO_USDC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC_TO_USDT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC_TO_WBTC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC_TO_WETH_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convert","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertScaled","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"rates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"convert(address,address,uint256)":{"details":"Converts an amount of tokens from one token to another based on the current exchange rate.","params":{"amount":"The amount of tokens to convert.","fromToken":"The address of the token to convert from.","toToken":"The address of the token to convert to."},"returns":{"valuation":"The converted amount of tokens."}},"convertScaled(address,address,uint256)":{"details":"Converts the given amount of tokens from one token to another using the 1inch exchange rate.","params":{"amount":"The amount of tokens to convert.","fromToken":"The address of the token to convert from.","toToken":"The address of the token to convert to."},"returns":{"valuation":"The converted amount of tokens."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":203,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_addresst_addresst_addresst_address_fromMemory":{"entryPoint":218,"id":null,"parameterSlots":2,"returnSlots":5},"allocate_memory":{"entryPoint":135,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":56,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_address":{"entryPoint":171,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":544,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1000983989838925640_by":{"entryPoint":1072,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1457844841452943_by":{"entryPoint":751,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1463657468947761_by":{"entryPoint":1123,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_175476470939493533556108593598_by":{"entryPoint":1016,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_189625582664100_by":{"entryPoint":1328,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_256884484348670192973112135_by":{"entryPoint":801,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_256897185735855109411507118_by":{"entryPoint":1229,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3781382154_by":{"entryPoint":1522,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_5273576410685072782753_by":{"entryPoint":1469,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_5561821_by":{"entryPoint":1569,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_681360233243484009138_by":{"entryPoint":855,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_683003374554512029990_by":{"entryPoint":964,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_733905_by":{"entryPoint":1377,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_924778033538811846038762973579739_by":{"entryPoint":907,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_998840977600189233_by":{"entryPoint":463,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":695,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":1173,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":1423,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":1283,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":160,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":466,"id":null,"parameterSlots":1,"returnSlots":1},"constant_USDC_TO_USDT_RATE":{"entryPoint":1103,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WBTC_RATE":{"entryPoint":1154,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WETH_RATE":{"entryPoint":1260,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WMATIC_RATE":{"entryPoint":1204,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_USDC_RATE":{"entryPoint":497,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WBTC_RATE":{"entryPoint":782,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WETH_RATE":{"entryPoint":832,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WMATIC_RATE":{"entryPoint":726,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_USDC_RATE":{"entryPoint":995,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_USDT_RATE":{"entryPoint":886,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_WETH_RATE":{"entryPoint":1047,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_WMATIC_RATE":{"entryPoint":938,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_USDC_RATE":{"entryPoint":1553,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_WBTC_RATE":{"entryPoint":1600,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_WMATIC_RATE":{"entryPoint":1500,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_USDC_RATE":{"entryPoint":1408,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_USDT_RATE":{"entryPoint":1454,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_WBTC_RATE":{"entryPoint":1314,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_WETH_RATE":{"entryPoint":1359,"id":null,"parameterSlots":0,"returnSlots":1},"constructor_MockOracle":{"entryPoint":1615,"id":10322,"parameterSlots":5,"returnSlots":0},"convert_address_to_address":{"entryPoint":416,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1000983989838925640_by_1_to_uint256":{"entryPoint":1075,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1080_by_1_to_uint256":{"entryPoint":1286,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1351148249095651365340914098616_by_1_to_uint256":{"entryPoint":1176,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1351542478738482785523886658083_by_1_to_uint256":{"entryPoint":698,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1457844841452943_by_1_to_uint256":{"entryPoint":754,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1463657468947761_by_1_to_uint256":{"entryPoint":1126,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_175476470939493533556108593598_by_1_to_uint256":{"entryPoint":1019,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_189625582664100_by_1_to_uint256":{"entryPoint":1331,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_256884484348670192973112135_by_1_to_uint256":{"entryPoint":804,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_256897185735855109411507118_by_1_to_uint256":{"entryPoint":1232,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_5561821_by_1_to_uint256":{"entryPoint":1572,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_681360233243484009138_by_1_to_uint256":{"entryPoint":858,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_683003374554512029990_by_1_to_uint256":{"entryPoint":967,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_733905_by_1_to_uint256":{"entryPoint":1380,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_747767_by_1_to_uint256":{"entryPoint":1426,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_924778033538811846038762973579739_by_1_to_uint256":{"entryPoint":910,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_998840977600189233_by_1_to_uint256":{"entryPoint":469,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":1525,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":1472,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":404,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":376,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":632,"id":null,"parameterSlots":1,"returnSlots":1},"copy_arguments_for_constructor_object_MockOracle":{"entryPoint":304,"id":null,"parameterSlots":0,"returnSlots":5},"extract_from_storage_value_offsett_address":{"entryPoint":555,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":96,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":373,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":517,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":588,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":76,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":428,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":660,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":575,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":62,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":156,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":66,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":341,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":539,"id":null,"parameterSlots":1,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":610,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":346,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":431,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":663,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":183,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"6080604052346100335761001d610014610130565b9392909261064f565b610025610038565b6115476109e5823961154790f35b61003e565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061006a90610042565b810190811060018060401b0382111761008257604052565b61004c565b9061009a610093610038565b9283610060565b565b5f80fd5b60018060a01b031690565b6100b4906100a0565b90565b6100c0816100ab565b036100c757565b5f80fd5b905051906100d8826100b7565b565b919060a08382031261012b576100f2815f85016100cb565b9261010082602083016100cb565b9261012861011184604085016100cb565b9361011f81606086016100cb565b936080016100cb565b90565b61009c565b61014e611f2c8038038061014381610087565b9283398101906100da565b9091929394565b5f1b90565b9061016b60018060a01b0391610155565b9181191691161790565b90565b61018c610187610191926100a0565b610175565b6100a0565b90565b61019d90610178565b90565b6101a990610194565b90565b90565b906101c46101bf6101cb926101a0565b6101ac565b825461015a565b9055565b90565b90565b6101e96101e46101ee926101cf565b610175565b6101d2565b90565b610202670ddc9893b8f693316101d5565b90565b9061020f906101a0565b5f5260205260405f2090565b5f1c90565b60018060a01b031690565b61023761023c9161021b565b610220565b90565b610249905461022b565b90565b90610256906101a0565b5f5260205260405f2090565b9061026e5f1991610155565b9181191691161790565b61028c610287610291926101d2565b610175565b6101d2565b90565b90565b906102ac6102a76102b392610278565b610294565b8254610262565b9055565b90565b6102ce6102c96102d3926102b7565b610175565b6101d2565b90565b6102ec6c110f11bc46bc3efcc5b8ff12236102ba565b90565b90565b61030661030161030b926102ef565b610175565b6101d2565b90565b61031e66052de6f3e9958f6102f2565b90565b90565b61033861033361033d92610321565b610175565b6101d2565b90565b6103546ad47d67cce9223fad7de347610324565b90565b90565b61036e61036961037392610357565b610175565b6101d2565b90565b6103886824efc5d2223b2ab2b261035a565b90565b90565b6103a261039d6103a79261038b565b610175565b6101d2565b90565b6103c16d2d9856fc421a9fd095f8b44c49db61038e565b90565b90565b6103db6103d66103e0926103c4565b610175565b6101d2565b90565b6103f5682506936e734ac2f9266103c7565b90565b90565b61040f61040a610414926103f8565b610175565b6101d2565b90565b61042d6c0236febc16a26943df322289be6103fb565b90565b90565b61044761044261044c92610430565b610175565b6101d2565b90565b610460670de435a2a433cf48610433565b90565b90565b61047a61047561047f92610463565b610175565b6101d2565b90565b610492660533304f826d31610466565b90565b90565b6104ac6104a76104b192610495565b610175565b6101d2565b90565b6104ca6c110dcba2e6f97b2a41a7eba1b8610498565b90565b90565b6104e46104df6104e9926104cd565b610175565b6101d2565b90565b6105006ad4801858112018c8850bae6104d0565b90565b90565b61051a61051561051f92610503565b610175565b6101d2565b90565b61052d610438610506565b90565b90565b61054761054261054c92610530565b610175565b6101d2565b90565b61055e65ac76a57eb9a4610533565b90565b90565b61057861057361057d92610561565b610175565b6101d2565b90565b61058c620b32d1610564565b90565b90565b6105a66105a16105ab9261058f565b610175565b6101d2565b90565b6105ba620b68f7610592565b90565b90565b6105d46105cf6105d9926105bd565b610175565b6101d2565b90565b6105ef69011de1930ce9ab44b5a16105c0565b90565b90565b61060961060461060e926105f2565b610175565b6101d2565b90565b61061e63e163500a6105f5565b90565b90565b61063861063361063d92610621565b610175565b6101d2565b90565b61064c6254dddd610624565b90565b6109c6906106706109e296936106696109dd9660026101af565b60016101af565b61067b3360036101af565b6106a96106866101f1565b6106a46106945f8590610205565b61069e600161023f565b9061024c565b610297565b6106d76106b46102d6565b6106d26106c25f8590610205565b6106cc600261023f565b9061024c565b610297565b6106fc6106e261030e565b6106f76106f05f8590610205565b869061024c565b610297565b610721610707610340565b61071c6107155f8590610205565b889061024c565b610297565b61074661072c610376565b61074161073a5f8790610205565b849061024c565b610297565b6107746107516103aa565b61076f61075f5f8790610205565b610769600261023f565b9061024c565b610297565b6107a261077f6103e3565b61079d61078d5f8790610205565b610797600161023f565b9061024c565b610297565b6107c76107ad610417565b6107c26107bb5f8790610205565b889061024c565b610297565b6107f56107d261044f565b6107f06107e95f6107e3600161023f565b90610205565b849061024c565b610297565b610823610800610482565b61081e6108175f610811600161023f565b90610205565b869061024c565b610297565b61085a61082e6104b4565b6108556108455f61083f600161023f565b90610205565b61084f600261023f565b9061024c565b610297565b6108886108656104ec565b61088361087c5f610876600161023f565b90610205565b889061024c565b610297565b6108b6610893610522565b6108b16108aa5f6108a4600261023f565b90610205565b869061024c565b610297565b6108e46108c161054f565b6108df6108d85f6108d2600261023f565b90610205565b889061024c565b610297565b61091b6108ef610580565b6109166109065f610900600261023f565b90610205565b610910600161023f565b9061024c565b610297565b6109496109266105ae565b61094461093d5f610937600261023f565b90610205565b849061024c565b610297565b6109776109546105dc565b6109726109625f8990610205565b61096c600261023f565b9061024c565b610297565b6109a5610982610611565b6109a06109905f8990610205565b61099a600161023f565b9061024c565b610297565b6109c16109b0610611565b916109bc5f8890610205565b61024c565b610297565b6109d86109d1610640565b935f610205565b61024c565b610297565b56fe60806040526004361015610013575b610e4f565b61001d5f356101bc565b806302098719146101b75780630e091762146101b2578063187029b8146101ad5780631a1e4a1f146101a8578063248391ff146101a35780634039e6871461019e5780634314639914610199578063443dc789146101945780635107e94e1461018f57806353ff493e1461018a5780635fc8cd691461018557806361d027b3146101805780637b0cf44d1461017b57806389a30271146101765780638e5139ed1461017157806397db8e021461016c578063a58a7f8a14610167578063ae3bcc9614610162578063b27b5e751461015d578063b381cf4014610158578063b537d24b14610153578063b9e938101461014e578063c018498314610149578063d135e3be14610144578063e2338e721461013f5763e30f68920361000e57610e1a565b610da5565b610d2f565b610cbb565b610c4d565b610bd5565b610b62565b610b1d565b610ae8565b610a77565b610a04565b610992565b610919565b6108d4565b6107c9565b610720565b6106b1565b61063d565b6105c5565b61054f565b6104e1565b610471565b610397565b61031f565b6102b2565b610244565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f9103126101da57565b6101cc565b90565b90565b90565b6101fc6101f7610201926101df565b6101e5565b6101e2565b90565b610214660533304f826d316101e8565b90565b61021f610204565b90565b61022b906101e2565b9052565b9190610242905f60208501940190610222565b565b34610274576102543660046101d0565b61027061025f610217565b6102676101c2565b9182918261022f565b0390f35b6101c8565b90565b61029061028b61029592610279565b6101e5565b6101e2565b90565b6102a4620b68f761027c565b90565b6102af610298565b90565b346102e2576102c23660046101d0565b6102de6102cd6102a7565b6102d56101c2565b9182918261022f565b0390f35b6101c8565b90565b6102fe6102f9610303926102e7565b6101e5565b6101e2565b90565b6103116104386102ea565b90565b61031c610306565b90565b3461034f5761032f3660046101d0565b61034b61033a610314565b6103426101c2565b9182918261022f565b0390f35b6101c8565b90565b61036b61036661037092610354565b6101e5565b6101e2565b90565b6103896c110f11bc46bc3efcc5b8ff1223610357565b90565b610394610373565b90565b346103c7576103a73660046101d0565b6103c36103b261038c565b6103ba6101c2565b9182918261022f565b0390f35b6101c8565b73ffffffffffffffffffffffffffffffffffffffff1690565b6103ee906103cc565b90565b6103fa816103e5565b0361040157565b5f80fd5b90503590610412826103f1565b565b61041d816101e2565b0361042457565b5f80fd5b9050359061043582610414565b565b909160608284031261046c57610469610452845f8501610405565b936104608160208601610405565b93604001610428565b90565b6101cc565b346104a25761049e61048d610487366004610437565b91611073565b6104956101c2565b9182918261022f565b0390f35b6101c8565b90565b6104be6104b96104c3926104a7565b6101e5565b6101e2565b90565b6104d363e163500a6104aa565b90565b6104de6104c6565b90565b34610511576104f13660046101d0565b61050d6104fc6104d6565b6105046101c2565b9182918261022f565b0390f35b6101c8565b90565b61052d61052861053292610516565b6101e5565b6101e2565b90565b6105416254dddd610519565b90565b61054c610535565b90565b3461057f5761055f3660046101d0565b61057b61056a610544565b6105726101c2565b9182918261022f565b0390f35b6101c8565b90565b61059b6105966105a092610584565b6101e5565b6101e2565b90565b6105b76ad47d67cce9223fad7de347610587565b90565b6105c26105a3565b90565b346105f5576105d53660046101d0565b6105f16105e06105ba565b6105e86101c2565b9182918261022f565b0390f35b6101c8565b90565b61061161060c610616926105fa565b6101e5565b6101e2565b90565b61062f6c110dcba2e6f97b2a41a7eba1b86105fd565b90565b61063a610619565b90565b3461066d5761064d3660046101d0565b610669610658610632565b6106606101c2565b9182918261022f565b0390f35b6101c8565b90565b61068961068461068e92610672565b6101e5565b6101e2565b90565b6106a3682506936e734ac2f926610675565b90565b6106ae610691565b90565b346106e1576106c13660046101d0565b6106dd6106cc6106a6565b6106d46101c2565b9182918261022f565b0390f35b6101c8565b90565b6106fd6106f8610702926106e6565b6101e5565b6101e2565b90565b61071263df77b36f6106e9565b90565b61071d610705565b90565b34610750576107303660046101d0565b61074c61073b610715565b6107436101c2565b9182918261022f565b0390f35b6101c8565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6107829060086107879302610755565b610759565b90565b906107959154610772565b90565b6107a460035f9061078a565b90565b6107b0906103e5565b9052565b91906107c7905f602085019401906107a7565b565b346107f9576107d93660046101d0565b6107f56107e4610798565b6107ec6101c2565b918291826107b4565b0390f35b6101c8565b9190604083820312610826578061081a610823925f8601610405565b93602001610405565b90565b6101cc565b61083f61083a610844926103cc565b6101e5565b6103cc565b90565b6108509061082b565b90565b61085c90610847565b90565b9061086990610853565b5f5260205260405f2090565b9061087f90610853565b5f5260205260405f2090565b90565b61089e9060086108a39302610755565b61088b565b90565b906108b1915461088e565b90565b6108cc6108d1926108c75f935f9461085f565b610875565b6108a6565b90565b34610905576109016108f06108ea3660046107fe565b906108b4565b6108f86101c2565b9182918261022f565b0390f35b6101c8565b61091660015f9061078a565b90565b34610949576109293660046101d0565b61094561093461090a565b61093c6101c2565b918291826107b4565b0390f35b6101c8565b90565b61096561096061096a9261094e565b6101e5565b6101e2565b90565b6109846d2d9856fc421a9fd095f8b44c49db610951565b90565b61098f61096d565b90565b346109c2576109a23660046101d0565b6109be6109ad610987565b6109b56101c2565b9182918261022f565b0390f35b6101c8565b90565b6109de6109d96109e3926109c7565b6101e5565b6101e2565b90565b6109f666052de6f3e9958f6109ca565b90565b610a016109e6565b90565b34610a3457610a143660046101d0565b610a30610a1f6109f9565b610a276101c2565b9182918261022f565b0390f35b6101c8565b90565b610a50610a4b610a5592610a39565b6101e5565b6101e2565b90565b610a69670ddc9893b8f69331610a3c565b90565b610a74610a58565b90565b34610aa757610a873660046101d0565b610aa3610a92610a6c565b610a9a6101c2565b9182918261022f565b0390f35b6101c8565b90565b610ac3610abe610ac892610aac565b6101e5565b6101e2565b90565b610ada65ac76a57eb9a4610aaf565b90565b610ae5610acb565b90565b34610b1857610af83660046101d0565b610b14610b03610add565b610b0b6101c2565b9182918261022f565b0390f35b6101c8565b34610b4e57610b4a610b39610b33366004610437565b91611299565b610b416101c2565b9182918261022f565b0390f35b6101c8565b610b5f60025f9061078a565b90565b34610b9257610b723660046101d0565b610b8e610b7d610b53565b610b856101c2565b918291826107b4565b0390f35b6101c8565b90565b610bae610ba9610bb392610b97565b6101e5565b6101e2565b90565b610bc7670de435a2a433cf48610b9a565b90565b610bd2610bb6565b90565b34610c0557610be53660046101d0565b610c01610bf0610bca565b610bf86101c2565b9182918261022f565b0390f35b6101c8565b90565b610c21610c1c610c2692610c0a565b6101e5565b6101e2565b90565b610c3f6c0236febc16a26943df322289be610c0d565b90565b610c4a610c29565b90565b34610c7d57610c5d3660046101d0565b610c79610c68610c42565b610c706101c2565b9182918261022f565b0390f35b6101c8565b90565b610c99610c94610c9e92610c82565b6101e5565b6101e2565b90565b610cad620b32d1610c85565b90565b610cb8610ca1565b90565b34610ceb57610ccb3660046101d0565b610ce7610cd6610cb0565b610cde6101c2565b9182918261022f565b0390f35b6101c8565b90565b610d07610d02610d0c92610cf0565b6101e5565b6101e2565b90565b610d216824efc5d2223b2ab2b2610cf3565b90565b610d2c610d0f565b90565b34610d5f57610d3f3660046101d0565b610d5b610d4a610d24565b610d526101c2565b9182918261022f565b0390f35b6101c8565b90565b610d7b610d76610d8092610d64565b6101e5565b6101e2565b90565b610d976ad4801858112018c8850bae610d67565b90565b610da2610d83565b90565b34610dd557610db53660046101d0565b610dd1610dc0610d9a565b610dc86101c2565b9182918261022f565b0390f35b6101c8565b90565b610df1610dec610df692610dda565b6101e5565b6101e2565b90565b610e0c69011de1930ce9ab44b5a1610ddd565b90565b610e17610df9565b90565b34610e4a57610e2a3660046101d0565b610e46610e35610e0f565b610e3d6101c2565b9182918261022f565b0390f35b6101c8565b5f80fd5b5f90565b610e609061082b565b90565b610e6c90610e57565b90565b610e7890610847565b90565b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90610ebc90610e7b565b810190811067ffffffffffffffff821117610ed657604052565b610e85565b60e01b90565b60ff1690565b610ef081610ee1565b03610ef757565b5f80fd5b90505190610f0882610ee7565b565b90602082820312610f2357610f20915f01610efb565b90565b6101cc565b5f0190565b610f356101c2565b3d5f823e3d90fd5b5f1c90565b610f4e610f5391610f3d565b61088b565b90565b610f609054610f42565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610f9990610ee1565b604d8111610fa757600a0a90565b610f63565b610fbb610fc1919392936101e2565b926101e2565b91610fcd8382026101e2565b928184041490151715610fdc57565b610f63565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61101a611020916101e2565b916101e2565b90811561102b570490565b610fe1565b61103c61104291610ee1565b91610ee1565b90039060ff821161104f57565b610f63565b90565b61106b61106661107092611054565b6101e5565b6101e2565b90565b91909161107e610e53565b50611087610e53565b506110b4602061109e61109984610e63565b610e6f565b63313ce567906110ac6101c2565b938492610edb565b825281806110c460048201610f28565b03915afa801561127557611104915f91611247575b509360206110ee6110e983610e63565b610e6f565b63313ce567906110fc6101c2565b948592610edb565b8252818061111460048201610f28565b03915afa91821561124257611145611159926111406111689561114a945f91611214575b50965f61085f565b610875565b610f56565b61115386610f90565b90610fac565b61116283610f90565b9061100e565b92611171610e53565b508061118561117f84610ee1565b91610ee1565b10155f146111d0576111b5926111aa6111a56111cc96946111b094611030565b610f90565b9061100e565b610fac565b6111c6670de0b6b3a7640000611057565b9061100e565b5b90565b6111f8926111ed6111e86111f39361120f9795611030565b610f90565b90610fac565b610fac565b611209670de0b6b3a7640000611057565b9061100e565b6111cd565b611235915060203d811161123b575b61122d8183610eb2565b810190610f0a565b5f611138565b503d611223565b610f2d565b611268915060203d811161126e575b6112608183610eb2565b810190610f0a565b5f6110d9565b503d611256565b610f2d565b90565b61129161128c6112969261127a565b6101e5565b610ee1565b90565b6112d8926112a5610e53565b506112ae610e53565b5060206112c26112bd84610e63565b610e6f565b63313ce567906112d06101c2565b968792610edb565b825281806112e860048201610f28565b03915afa801561150c57611328945f916114de575b5092602061131261130d83610e63565b610e6f565b63313ce567906113206101c2565b978892610edb565b8252818061133860048201610f28565b03915afa9081156114d95761137161136c6113809261136761138f956114059a5f916114ab575b50975f61085f565b610875565b610f56565b61137a86610f90565b90610fac565b61138984610f90565b9061100e565b91611398610e53565b506113a1610e53565b506113be6113b960126113b4849161127d565b611030565b610f90565b93806113d26113cc84610ee1565b91610ee1565b145f146114085750506113ff916113e891610fac565b6113f9670de0b6b3a7640000611057565b9061100e565b5b610fac565b90565b8061141b61141584610ee1565b91610ee1565b115f146114675761144a9261143f61143a611461969461144594611030565b610f90565b9061100e565b610fac565b61145b670de0b6b3a7640000611057565b9061100e565b5b611400565b61148f9261148461147f61148a936114a69795611030565b610f90565b90610fac565b610fac565b6114a0670de0b6b3a7640000611057565b9061100e565b611462565b6114cc915060203d81116114d2575b6114c48183610eb2565b810190610f0a565b5f61135f565b503d6114ba565b610f2d565b6114ff915060203d8111611505575b6114f78183610eb2565b810190610f0a565b5f6112fd565b503d6114ed565b610f2d56fea2646970667358221220b174cb9554b3d690fb93594256dd7cc922c6f287ed8936198d565cbb69e106a964736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x33 JUMPI PUSH2 0x1D PUSH2 0x14 PUSH2 0x130 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x25 PUSH2 0x38 JUMP JUMPDEST PUSH2 0x1547 PUSH2 0x9E5 DUP3 CODECOPY PUSH2 0x1547 SWAP1 RETURN JUMPDEST PUSH2 0x3E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x6A SWAP1 PUSH2 0x42 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x82 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST SWAP1 PUSH2 0x9A PUSH2 0x93 PUSH2 0x38 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x60 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xB4 SWAP1 PUSH2 0xA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC0 DUP2 PUSH2 0xAB JUMP JUMPDEST SUB PUSH2 0xC7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD8 DUP3 PUSH2 0xB7 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x12B JUMPI PUSH2 0xF2 DUP2 PUSH0 DUP6 ADD PUSH2 0xCB JUMP JUMPDEST SWAP3 PUSH2 0x100 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0xCB JUMP JUMPDEST SWAP3 PUSH2 0x128 PUSH2 0x111 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0xCB JUMP JUMPDEST SWAP4 PUSH2 0x11F DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0xCB JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0xCB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9C JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1F2C DUP1 CODESIZE SUB DUP1 PUSH2 0x143 DUP2 PUSH2 0x87 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH2 0xDA JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x16B PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 PUSH2 0x155 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18C PUSH2 0x187 PUSH2 0x191 SWAP3 PUSH2 0xA0 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0xA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x19D SWAP1 PUSH2 0x178 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A9 SWAP1 PUSH2 0x194 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1C4 PUSH2 0x1BF PUSH2 0x1CB SWAP3 PUSH2 0x1A0 JUMP JUMPDEST PUSH2 0x1AC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15A JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E9 PUSH2 0x1E4 PUSH2 0x1EE SWAP3 PUSH2 0x1CF JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x202 PUSH8 0xDDC9893B8F69331 PUSH2 0x1D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20F SWAP1 PUSH2 0x1A0 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x237 PUSH2 0x23C SWAP2 PUSH2 0x21B JUMP JUMPDEST PUSH2 0x220 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x249 SWAP1 SLOAD PUSH2 0x22B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x256 SWAP1 PUSH2 0x1A0 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x26E PUSH0 NOT SWAP2 PUSH2 0x155 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x28C PUSH2 0x287 PUSH2 0x291 SWAP3 PUSH2 0x1D2 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2AC PUSH2 0x2A7 PUSH2 0x2B3 SWAP3 PUSH2 0x278 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x262 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CE PUSH2 0x2C9 PUSH2 0x2D3 SWAP3 PUSH2 0x2B7 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2EC PUSH13 0x110F11BC46BC3EFCC5B8FF1223 PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x306 PUSH2 0x301 PUSH2 0x30B SWAP3 PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31E PUSH7 0x52DE6F3E9958F PUSH2 0x2F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x338 PUSH2 0x333 PUSH2 0x33D SWAP3 PUSH2 0x321 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x354 PUSH11 0xD47D67CCE9223FAD7DE347 PUSH2 0x324 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36E PUSH2 0x369 PUSH2 0x373 SWAP3 PUSH2 0x357 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x388 PUSH9 0x24EFC5D2223B2AB2B2 PUSH2 0x35A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3A2 PUSH2 0x39D PUSH2 0x3A7 SWAP3 PUSH2 0x38B JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3C1 PUSH14 0x2D9856FC421A9FD095F8B44C49DB PUSH2 0x38E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DB PUSH2 0x3D6 PUSH2 0x3E0 SWAP3 PUSH2 0x3C4 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3F5 PUSH9 0x2506936E734AC2F926 PUSH2 0x3C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x40F PUSH2 0x40A PUSH2 0x414 SWAP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x42D PUSH13 0x236FEBC16A26943DF322289BE PUSH2 0x3FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x447 PUSH2 0x442 PUSH2 0x44C SWAP3 PUSH2 0x430 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x460 PUSH8 0xDE435A2A433CF48 PUSH2 0x433 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47A PUSH2 0x475 PUSH2 0x47F SWAP3 PUSH2 0x463 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x492 PUSH7 0x533304F826D31 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4AC PUSH2 0x4A7 PUSH2 0x4B1 SWAP3 PUSH2 0x495 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4CA PUSH13 0x110DCBA2E6F97B2A41A7EBA1B8 PUSH2 0x498 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4E4 PUSH2 0x4DF PUSH2 0x4E9 SWAP3 PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x500 PUSH11 0xD4801858112018C8850BAE PUSH2 0x4D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x51A PUSH2 0x515 PUSH2 0x51F SWAP3 PUSH2 0x503 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52D PUSH2 0x438 PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x547 PUSH2 0x542 PUSH2 0x54C SWAP3 PUSH2 0x530 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x55E PUSH6 0xAC76A57EB9A4 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x578 PUSH2 0x573 PUSH2 0x57D SWAP3 PUSH2 0x561 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x58C PUSH3 0xB32D1 PUSH2 0x564 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x5A1 PUSH2 0x5AB SWAP3 PUSH2 0x58F JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5BA PUSH3 0xB68F7 PUSH2 0x592 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D4 PUSH2 0x5CF PUSH2 0x5D9 SWAP3 PUSH2 0x5BD JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EF PUSH10 0x11DE1930CE9AB44B5A1 PUSH2 0x5C0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x609 PUSH2 0x604 PUSH2 0x60E SWAP3 PUSH2 0x5F2 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x61E PUSH4 0xE163500A PUSH2 0x5F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x638 PUSH2 0x633 PUSH2 0x63D SWAP3 PUSH2 0x621 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x64C PUSH3 0x54DDDD PUSH2 0x624 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9C6 SWAP1 PUSH2 0x670 PUSH2 0x9E2 SWAP7 SWAP4 PUSH2 0x669 PUSH2 0x9DD SWAP7 PUSH1 0x2 PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x67B CALLER PUSH1 0x3 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x6A9 PUSH2 0x686 PUSH2 0x1F1 JUMP JUMPDEST PUSH2 0x6A4 PUSH2 0x694 PUSH0 DUP6 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x69E PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x6D7 PUSH2 0x6B4 PUSH2 0x2D6 JUMP JUMPDEST PUSH2 0x6D2 PUSH2 0x6C2 PUSH0 DUP6 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x6CC PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x6E2 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x6F7 PUSH2 0x6F0 PUSH0 DUP6 SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x721 PUSH2 0x707 PUSH2 0x340 JUMP JUMPDEST PUSH2 0x71C PUSH2 0x715 PUSH0 DUP6 SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x746 PUSH2 0x72C PUSH2 0x376 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x73A PUSH0 DUP8 SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x774 PUSH2 0x751 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x76F PUSH2 0x75F PUSH0 DUP8 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x769 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x7A2 PUSH2 0x77F PUSH2 0x3E3 JUMP JUMPDEST PUSH2 0x79D PUSH2 0x78D PUSH0 DUP8 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x797 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x7C7 PUSH2 0x7AD PUSH2 0x417 JUMP JUMPDEST PUSH2 0x7C2 PUSH2 0x7BB PUSH0 DUP8 SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x7F5 PUSH2 0x7D2 PUSH2 0x44F JUMP JUMPDEST PUSH2 0x7F0 PUSH2 0x7E9 PUSH0 PUSH2 0x7E3 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x823 PUSH2 0x800 PUSH2 0x482 JUMP JUMPDEST PUSH2 0x81E PUSH2 0x817 PUSH0 PUSH2 0x811 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x85A PUSH2 0x82E PUSH2 0x4B4 JUMP JUMPDEST PUSH2 0x855 PUSH2 0x845 PUSH0 PUSH2 0x83F PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x84F PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x888 PUSH2 0x865 PUSH2 0x4EC JUMP JUMPDEST PUSH2 0x883 PUSH2 0x87C PUSH0 PUSH2 0x876 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x8B6 PUSH2 0x893 PUSH2 0x522 JUMP JUMPDEST PUSH2 0x8B1 PUSH2 0x8AA PUSH0 PUSH2 0x8A4 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x8E4 PUSH2 0x8C1 PUSH2 0x54F JUMP JUMPDEST PUSH2 0x8DF PUSH2 0x8D8 PUSH0 PUSH2 0x8D2 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x91B PUSH2 0x8EF PUSH2 0x580 JUMP JUMPDEST PUSH2 0x916 PUSH2 0x906 PUSH0 PUSH2 0x900 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x910 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x949 PUSH2 0x926 PUSH2 0x5AE JUMP JUMPDEST PUSH2 0x944 PUSH2 0x93D PUSH0 PUSH2 0x937 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x977 PUSH2 0x954 PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x972 PUSH2 0x962 PUSH0 DUP10 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x96C PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x9A5 PUSH2 0x982 PUSH2 0x611 JUMP JUMPDEST PUSH2 0x9A0 PUSH2 0x990 PUSH0 DUP10 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x99A PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x9C1 PUSH2 0x9B0 PUSH2 0x611 JUMP JUMPDEST SWAP2 PUSH2 0x9BC PUSH0 DUP9 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x9D8 PUSH2 0x9D1 PUSH2 0x640 JUMP JUMPDEST SWAP4 PUSH0 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xE4F JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x1BC JUMP JUMPDEST DUP1 PUSH4 0x2098719 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xE091762 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x187029B8 EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x1A1E4A1F EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x248391FF EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x4039E687 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x43146399 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x443DC789 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x5107E94E EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0x53FF493E EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x5FC8CD69 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x61D027B3 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x7B0CF44D EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x89A30271 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x8E5139ED EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x97DB8E02 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0xA58A7F8A EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xAE3BCC96 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0xB27B5E75 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0xB381CF40 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0xB537D24B EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xB9E93810 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xC0184983 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0xD135E3BE EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xE2338E72 EQ PUSH2 0x13F JUMPI PUSH4 0xE30F6892 SUB PUSH2 0xE JUMPI PUSH2 0xE1A JUMP JUMPDEST PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0xD2F JUMP JUMPDEST PUSH2 0xCBB JUMP JUMPDEST PUSH2 0xC4D JUMP JUMPDEST PUSH2 0xBD5 JUMP JUMPDEST PUSH2 0xB62 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH2 0xAE8 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST PUSH2 0xA04 JUMP JUMPDEST PUSH2 0x992 JUMP JUMPDEST PUSH2 0x919 JUMP JUMPDEST PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0x720 JUMP JUMPDEST PUSH2 0x6B1 JUMP JUMPDEST PUSH2 0x63D JUMP JUMPDEST PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x54F JUMP JUMPDEST PUSH2 0x4E1 JUMP JUMPDEST PUSH2 0x471 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST PUSH2 0x31F JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x244 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x1DA JUMPI JUMP JUMPDEST PUSH2 0x1CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x1F7 PUSH2 0x201 SWAP3 PUSH2 0x1DF JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x214 PUSH7 0x533304F826D31 PUSH2 0x1E8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x204 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22B SWAP1 PUSH2 0x1E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x242 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x222 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x274 JUMPI PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x270 PUSH2 0x25F PUSH2 0x217 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x290 PUSH2 0x28B PUSH2 0x295 SWAP3 PUSH2 0x279 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A4 PUSH3 0xB68F7 PUSH2 0x27C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0x298 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2E2 JUMPI PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x2DE PUSH2 0x2CD PUSH2 0x2A7 JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x2F9 PUSH2 0x303 SWAP3 PUSH2 0x2E7 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x311 PUSH2 0x438 PUSH2 0x2EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C PUSH2 0x306 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x34F JUMPI PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x34B PUSH2 0x33A PUSH2 0x314 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x366 PUSH2 0x370 SWAP3 PUSH2 0x354 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x389 PUSH13 0x110F11BC46BC3EFCC5B8FF1223 PUSH2 0x357 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x394 PUSH2 0x373 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3C7 JUMPI PUSH2 0x3A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x3B2 PUSH2 0x38C JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3EE SWAP1 PUSH2 0x3CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3FA DUP2 PUSH2 0x3E5 JUMP JUMPDEST SUB PUSH2 0x401 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x412 DUP3 PUSH2 0x3F1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x41D DUP2 PUSH2 0x1E2 JUMP JUMPDEST SUB PUSH2 0x424 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x435 DUP3 PUSH2 0x414 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x46C JUMPI PUSH2 0x469 PUSH2 0x452 DUP5 PUSH0 DUP6 ADD PUSH2 0x405 JUMP JUMPDEST SWAP4 PUSH2 0x460 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x405 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x428 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CC JUMP JUMPDEST CALLVALUE PUSH2 0x4A2 JUMPI PUSH2 0x49E PUSH2 0x48D PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x437 JUMP JUMPDEST SWAP2 PUSH2 0x1073 JUMP JUMPDEST PUSH2 0x495 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4BE PUSH2 0x4B9 PUSH2 0x4C3 SWAP3 PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4D3 PUSH4 0xE163500A PUSH2 0x4AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4DE PUSH2 0x4C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x511 JUMPI PUSH2 0x4F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x50D PUSH2 0x4FC PUSH2 0x4D6 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52D PUSH2 0x528 PUSH2 0x532 SWAP3 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x541 PUSH3 0x54DDDD PUSH2 0x519 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x54C PUSH2 0x535 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x57F JUMPI PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x57B PUSH2 0x56A PUSH2 0x544 JUMP JUMPDEST PUSH2 0x572 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x59B PUSH2 0x596 PUSH2 0x5A0 SWAP3 PUSH2 0x584 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5B7 PUSH11 0xD47D67CCE9223FAD7DE347 PUSH2 0x587 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C2 PUSH2 0x5A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x5F5 JUMPI PUSH2 0x5D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x5F1 PUSH2 0x5E0 PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x5E8 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x611 PUSH2 0x60C PUSH2 0x616 SWAP3 PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x62F PUSH13 0x110DCBA2E6F97B2A41A7EBA1B8 PUSH2 0x5FD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x63A PUSH2 0x619 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x66D JUMPI PUSH2 0x64D CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x669 PUSH2 0x658 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x660 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x689 PUSH2 0x684 PUSH2 0x68E SWAP3 PUSH2 0x672 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A3 PUSH9 0x2506936E734AC2F926 PUSH2 0x675 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6AE PUSH2 0x691 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6E1 JUMPI PUSH2 0x6C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x6DD PUSH2 0x6CC PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x6D4 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6FD PUSH2 0x6F8 PUSH2 0x702 SWAP3 PUSH2 0x6E6 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x712 PUSH4 0xDF77B36F PUSH2 0x6E9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x71D PUSH2 0x705 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x750 JUMPI PUSH2 0x730 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x74C PUSH2 0x73B PUSH2 0x715 JUMP JUMPDEST PUSH2 0x743 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x782 SWAP1 PUSH1 0x8 PUSH2 0x787 SWAP4 MUL PUSH2 0x755 JUMP JUMPDEST PUSH2 0x759 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x795 SWAP2 SLOAD PUSH2 0x772 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7A4 PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x78A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7B0 SWAP1 PUSH2 0x3E5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x7C7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7A7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x7F9 JUMPI PUSH2 0x7D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x7F5 PUSH2 0x7E4 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x7EC PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7B4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x826 JUMPI DUP1 PUSH2 0x81A PUSH2 0x823 SWAP3 PUSH0 DUP7 ADD PUSH2 0x405 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x405 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x83F PUSH2 0x83A PUSH2 0x844 SWAP3 PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x3CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x850 SWAP1 PUSH2 0x82B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x85C SWAP1 PUSH2 0x847 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x869 SWAP1 PUSH2 0x853 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x87F SWAP1 PUSH2 0x853 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x89E SWAP1 PUSH1 0x8 PUSH2 0x8A3 SWAP4 MUL PUSH2 0x755 JUMP JUMPDEST PUSH2 0x88B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8B1 SWAP2 SLOAD PUSH2 0x88E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8CC PUSH2 0x8D1 SWAP3 PUSH2 0x8C7 PUSH0 SWAP4 PUSH0 SWAP5 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x875 JUMP JUMPDEST PUSH2 0x8A6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x905 JUMPI PUSH2 0x901 PUSH2 0x8F0 PUSH2 0x8EA CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST SWAP1 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0x8F8 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH2 0x916 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x78A JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x949 JUMPI PUSH2 0x929 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x945 PUSH2 0x934 PUSH2 0x90A JUMP JUMPDEST PUSH2 0x93C PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7B4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x965 PUSH2 0x960 PUSH2 0x96A SWAP3 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x984 PUSH14 0x2D9856FC421A9FD095F8B44C49DB PUSH2 0x951 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x98F PUSH2 0x96D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x9C2 JUMPI PUSH2 0x9A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x9BE PUSH2 0x9AD PUSH2 0x987 JUMP JUMPDEST PUSH2 0x9B5 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9DE PUSH2 0x9D9 PUSH2 0x9E3 SWAP3 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9F6 PUSH7 0x52DE6F3E9958F PUSH2 0x9CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA01 PUSH2 0x9E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA34 JUMPI PUSH2 0xA14 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xA30 PUSH2 0xA1F PUSH2 0x9F9 JUMP JUMPDEST PUSH2 0xA27 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA50 PUSH2 0xA4B PUSH2 0xA55 SWAP3 PUSH2 0xA39 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA69 PUSH8 0xDDC9893B8F69331 PUSH2 0xA3C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA74 PUSH2 0xA58 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xAA7 JUMPI PUSH2 0xA87 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xAA3 PUSH2 0xA92 PUSH2 0xA6C JUMP JUMPDEST PUSH2 0xA9A PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAC3 PUSH2 0xABE PUSH2 0xAC8 SWAP3 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xADA PUSH6 0xAC76A57EB9A4 PUSH2 0xAAF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAE5 PUSH2 0xACB JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB18 JUMPI PUSH2 0xAF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xB14 PUSH2 0xB03 PUSH2 0xADD JUMP JUMPDEST PUSH2 0xB0B PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST CALLVALUE PUSH2 0xB4E JUMPI PUSH2 0xB4A PUSH2 0xB39 PUSH2 0xB33 CALLDATASIZE PUSH1 0x4 PUSH2 0x437 JUMP JUMPDEST SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH2 0xB41 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH2 0xB5F PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x78A JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB92 JUMPI PUSH2 0xB72 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xB8E PUSH2 0xB7D PUSH2 0xB53 JUMP JUMPDEST PUSH2 0xB85 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7B4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBAE PUSH2 0xBA9 PUSH2 0xBB3 SWAP3 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBC7 PUSH8 0xDE435A2A433CF48 PUSH2 0xB9A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBD2 PUSH2 0xBB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xC05 JUMPI PUSH2 0xBE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xC01 PUSH2 0xBF0 PUSH2 0xBCA JUMP JUMPDEST PUSH2 0xBF8 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC21 PUSH2 0xC1C PUSH2 0xC26 SWAP3 PUSH2 0xC0A JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC3F PUSH13 0x236FEBC16A26943DF322289BE PUSH2 0xC0D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC4A PUSH2 0xC29 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xC7D JUMPI PUSH2 0xC5D CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xC79 PUSH2 0xC68 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0xC70 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC99 PUSH2 0xC94 PUSH2 0xC9E SWAP3 PUSH2 0xC82 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCAD PUSH3 0xB32D1 PUSH2 0xC85 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB8 PUSH2 0xCA1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xCEB JUMPI PUSH2 0xCCB CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xCE7 PUSH2 0xCD6 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xCDE PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD07 PUSH2 0xD02 PUSH2 0xD0C SWAP3 PUSH2 0xCF0 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD21 PUSH9 0x24EFC5D2223B2AB2B2 PUSH2 0xCF3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD2C PUSH2 0xD0F JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD5F JUMPI PUSH2 0xD3F CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xD5B PUSH2 0xD4A PUSH2 0xD24 JUMP JUMPDEST PUSH2 0xD52 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD7B PUSH2 0xD76 PUSH2 0xD80 SWAP3 PUSH2 0xD64 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD97 PUSH11 0xD4801858112018C8850BAE PUSH2 0xD67 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDA2 PUSH2 0xD83 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDD5 JUMPI PUSH2 0xDB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xDD1 PUSH2 0xDC0 PUSH2 0xD9A JUMP JUMPDEST PUSH2 0xDC8 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDF1 PUSH2 0xDEC PUSH2 0xDF6 SWAP3 PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE0C PUSH10 0x11DE1930CE9AB44B5A1 PUSH2 0xDDD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0xDF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE4A JUMPI PUSH2 0xE2A CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xE46 PUSH2 0xE35 PUSH2 0xE0F JUMP JUMPDEST PUSH2 0xE3D PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xE60 SWAP1 PUSH2 0x82B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE6C SWAP1 PUSH2 0xE57 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE78 SWAP1 PUSH2 0x847 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xEBC SWAP1 PUSH2 0xE7B JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xED6 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xE85 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xEF0 DUP2 PUSH2 0xEE1 JUMP JUMPDEST SUB PUSH2 0xEF7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xF08 DUP3 PUSH2 0xEE7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xF23 JUMPI PUSH2 0xF20 SWAP2 PUSH0 ADD PUSH2 0xEFB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CC JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0xF35 PUSH2 0x1C2 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0xF4E PUSH2 0xF53 SWAP2 PUSH2 0xF3D JUMP JUMPDEST PUSH2 0x88B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF60 SWAP1 SLOAD PUSH2 0xF42 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xF99 SWAP1 PUSH2 0xEE1 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0xFA7 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0xF63 JUMP JUMPDEST PUSH2 0xFBB PUSH2 0xFC1 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x1E2 JUMP JUMPDEST SWAP3 PUSH2 0x1E2 JUMP JUMPDEST SWAP2 PUSH2 0xFCD DUP4 DUP3 MUL PUSH2 0x1E2 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xFDC JUMPI JUMP JUMPDEST PUSH2 0xF63 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x101A PUSH2 0x1020 SWAP2 PUSH2 0x1E2 JUMP JUMPDEST SWAP2 PUSH2 0x1E2 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x102B JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x103C PUSH2 0x1042 SWAP2 PUSH2 0xEE1 JUMP JUMPDEST SWAP2 PUSH2 0xEE1 JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x104F JUMPI JUMP JUMPDEST PUSH2 0xF63 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x106B PUSH2 0x1066 PUSH2 0x1070 SWAP3 PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x107E PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x1087 PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x10B4 PUSH1 0x20 PUSH2 0x109E PUSH2 0x1099 DUP5 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x10AC PUSH2 0x1C2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xEDB JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x10C4 PUSH1 0x4 DUP3 ADD PUSH2 0xF28 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1275 JUMPI PUSH2 0x1104 SWAP2 PUSH0 SWAP2 PUSH2 0x1247 JUMPI JUMPDEST POP SWAP4 PUSH1 0x20 PUSH2 0x10EE PUSH2 0x10E9 DUP4 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x10FC PUSH2 0x1C2 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xEDB JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1114 PUSH1 0x4 DUP3 ADD PUSH2 0xF28 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1242 JUMPI PUSH2 0x1145 PUSH2 0x1159 SWAP3 PUSH2 0x1140 PUSH2 0x1168 SWAP6 PUSH2 0x114A SWAP5 PUSH0 SWAP2 PUSH2 0x1214 JUMPI JUMPDEST POP SWAP7 PUSH0 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x875 JUMP JUMPDEST PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x1153 DUP7 PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x1162 DUP4 PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST SWAP3 PUSH2 0x1171 PUSH2 0xE53 JUMP JUMPDEST POP DUP1 PUSH2 0x1185 PUSH2 0x117F DUP5 PUSH2 0xEE1 JUMP JUMPDEST SWAP2 PUSH2 0xEE1 JUMP JUMPDEST LT ISZERO PUSH0 EQ PUSH2 0x11D0 JUMPI PUSH2 0x11B5 SWAP3 PUSH2 0x11AA PUSH2 0x11A5 PUSH2 0x11CC SWAP7 SWAP5 PUSH2 0x11B0 SWAP5 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x11C6 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11F8 SWAP3 PUSH2 0x11ED PUSH2 0x11E8 PUSH2 0x11F3 SWAP4 PUSH2 0x120F SWAP8 SWAP6 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x1209 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0x11CD JUMP JUMPDEST PUSH2 0x1235 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x123B JUMPI JUMPDEST PUSH2 0x122D DUP2 DUP4 PUSH2 0xEB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF0A JUMP JUMPDEST PUSH0 PUSH2 0x1138 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1223 JUMP JUMPDEST PUSH2 0xF2D JUMP JUMPDEST PUSH2 0x1268 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x126E JUMPI JUMPDEST PUSH2 0x1260 DUP2 DUP4 PUSH2 0xEB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF0A JUMP JUMPDEST PUSH0 PUSH2 0x10D9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1256 JUMP JUMPDEST PUSH2 0xF2D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1291 PUSH2 0x128C PUSH2 0x1296 SWAP3 PUSH2 0x127A JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12D8 SWAP3 PUSH2 0x12A5 PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x12AE PUSH2 0xE53 JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x12C2 PUSH2 0x12BD DUP5 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x12D0 PUSH2 0x1C2 JUMP JUMPDEST SWAP7 DUP8 SWAP3 PUSH2 0xEDB JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x12E8 PUSH1 0x4 DUP3 ADD PUSH2 0xF28 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x150C JUMPI PUSH2 0x1328 SWAP5 PUSH0 SWAP2 PUSH2 0x14DE JUMPI JUMPDEST POP SWAP3 PUSH1 0x20 PUSH2 0x1312 PUSH2 0x130D DUP4 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1320 PUSH2 0x1C2 JUMP JUMPDEST SWAP8 DUP9 SWAP3 PUSH2 0xEDB JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1338 PUSH1 0x4 DUP3 ADD PUSH2 0xF28 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x14D9 JUMPI PUSH2 0x1371 PUSH2 0x136C PUSH2 0x1380 SWAP3 PUSH2 0x1367 PUSH2 0x138F SWAP6 PUSH2 0x1405 SWAP11 PUSH0 SWAP2 PUSH2 0x14AB JUMPI JUMPDEST POP SWAP8 PUSH0 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x875 JUMP JUMPDEST PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x137A DUP7 PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x1389 DUP5 PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST SWAP2 PUSH2 0x1398 PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x13A1 PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x13BE PUSH2 0x13B9 PUSH1 0x12 PUSH2 0x13B4 DUP5 SWAP2 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP4 DUP1 PUSH2 0x13D2 PUSH2 0x13CC DUP5 PUSH2 0xEE1 JUMP JUMPDEST SWAP2 PUSH2 0xEE1 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1408 JUMPI POP POP PUSH2 0x13FF SWAP2 PUSH2 0x13E8 SWAP2 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x13F9 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST JUMPDEST PUSH2 0xFAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x141B PUSH2 0x1415 DUP5 PUSH2 0xEE1 JUMP JUMPDEST SWAP2 PUSH2 0xEE1 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x1467 JUMPI PUSH2 0x144A SWAP3 PUSH2 0x143F PUSH2 0x143A PUSH2 0x1461 SWAP7 SWAP5 PUSH2 0x1445 SWAP5 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x145B PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST JUMPDEST PUSH2 0x1400 JUMP JUMPDEST PUSH2 0x148F SWAP3 PUSH2 0x1484 PUSH2 0x147F PUSH2 0x148A SWAP4 PUSH2 0x14A6 SWAP8 SWAP6 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x14A0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x14CC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x14D2 JUMPI JUMPDEST PUSH2 0x14C4 DUP2 DUP4 PUSH2 0xEB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF0A JUMP JUMPDEST PUSH0 PUSH2 0x135F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14BA JUMP JUMPDEST PUSH2 0xF2D JUMP JUMPDEST PUSH2 0x14FF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1505 JUMPI JUMPDEST PUSH2 0x14F7 DUP2 DUP4 PUSH2 0xEB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF0A JUMP JUMPDEST PUSH0 PUSH2 0x12FD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14ED JUMP JUMPDEST PUSH2 0xF2D JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 PUSH21 0xCB9554B3D690FB93594256DD7CC922C6F287ED8936 NOT DUP14 JUMP TLOAD 0xBB PUSH10 0xE106A964736F6C634300 ADDMOD NOT STOP CALLER ","sourceMap":"249:5548:53:-:0;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1314:62::-;1358:18;;;:::i;:::-;1314:62;:::o;1358:18::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;249:5548;;;;;1358:18;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1461:77::-;1507:31;;;:::i;:::-;1461:77;:::o;1507:31::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1247:60::-;1291:16;;;:::i;:::-;1247:60;:::o;1291:16::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1383:71::-;1427:27;;;:::i;:::-;1383:71;:::o;1427:27::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1020:65::-;1064:21;;;:::i;:::-;1020:65;:::o;1064:21::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;934:79::-;980:33;;;:::i;:::-;934:79;:::o;980:33::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1173:65::-;1217:21;;;:::i;:::-;1173:65;:::o;1217:21::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1092:74::-;1136:30;;;:::i;:::-;1092:74;:::o;1136:30::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;466:63::-;510:19;;;:::i;:::-;466:63;:::o;510:19::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;536:60::-;580:16;;;:::i;:::-;536:60;:::o;580:16::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;603:77::-;649:31;;;:::i;:::-;603:77;:::o;649:31::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;388:71::-;432:27;;;:::i;:::-;388:71;:::o;432:27::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;807:50::-;853:4;;;:::i;:::-;807:50;:::o;853:4::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;864:61::-;910:15;;;:::i;:::-;864:61;:::o;910:15::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;748:52::-;794:6;;;:::i;:::-;748:52;:::o;794:6::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;689:52::-;735:6;;;:::i;:::-;689:52;:::o;735:6::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1547:68::-;1593:22;;;:::i;:::-;1547:68;:::o;1593:22::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1622:54::-;1666:10;;;:::i;:::-;1622:54;:::o;1666:10::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1744:51::-;1788:7;;;:::i;:::-;1744:51;:::o;1893:1187::-;2987:37;1893:1187;2018:12;3035:37;1893:1187;;1990:17;3035;1893:1187;1990:17;;:::i;:::-;2018:12;;:::i;:::-;2041:21;2052:10;2041:21;;:::i;:::-;2075:37;2095:17;;:::i;:::-;2075;:11;:5;2081:4;2075:11;;:::i;:::-;2087:4;;;:::i;:::-;2075:17;;:::i;:::-;:37;:::i;:::-;2123:42;2146:19;;:::i;:::-;2123:20;:11;:5;2129:4;2123:11;;:::i;:::-;2135:7;;;:::i;:::-;2123:20;;:::i;:::-;:42;:::i;:::-;2176:37;2196:17;;:::i;:::-;2176;:11;:5;2182:4;2176:11;;:::i;:::-;2188:4;2176:17;;:::i;:::-;:37;:::i;:::-;2224;2244:17;;:::i;:::-;2224;:11;:5;2230:4;2224:11;;:::i;:::-;2236:4;2224:17;;:::i;:::-;:37;:::i;:::-;2274;2294:17;;:::i;:::-;2274;:11;:5;2280:4;2274:11;;:::i;:::-;2286:4;2274:17;;:::i;:::-;:37;:::i;:::-;2322:42;2345:19;;:::i;:::-;2322:20;:11;:5;2328:4;2322:11;;:::i;:::-;2334:7;;;:::i;:::-;2322:20;;:::i;:::-;:42;:::i;:::-;2375:37;2395:17;;:::i;:::-;2375;:11;:5;2381:4;2375:11;;:::i;:::-;2387:4;;;:::i;:::-;2375:17;;:::i;:::-;:37;:::i;:::-;2423;2443:17;;:::i;:::-;2423;:11;:5;2429:4;2423:11;;:::i;:::-;2435:4;2423:17;;:::i;:::-;:37;:::i;:::-;2473;2493:17;;:::i;:::-;2473;:11;:5;2479:4;;;:::i;:::-;2473:11;;:::i;:::-;2485:4;2473:17;;:::i;:::-;:37;:::i;:::-;2521;2541:17;;:::i;:::-;2521;:11;:5;2527:4;;;:::i;:::-;2521:11;;:::i;:::-;2533:4;2521:17;;:::i;:::-;:37;:::i;:::-;2569:42;2592:19;;:::i;:::-;2569:20;:11;:5;2575:4;;;:::i;:::-;2569:11;;:::i;:::-;2581:7;;;:::i;:::-;2569:20;;:::i;:::-;:42;:::i;:::-;2622:37;2642:17;;:::i;:::-;2622;:11;:5;2628:4;;;:::i;:::-;2622:11;;:::i;:::-;2634:4;2622:17;;:::i;:::-;:37;:::i;:::-;2672:42;2695:19;;:::i;:::-;2672:20;:14;:5;2678:7;;;:::i;:::-;2672:14;;:::i;:::-;2687:4;2672:20;;:::i;:::-;:42;:::i;:::-;2725;2748:19;;:::i;:::-;2725:20;:14;:5;2731:7;;;:::i;:::-;2725:14;;:::i;:::-;2740:4;2725:20;;:::i;:::-;:42;:::i;:::-;2778;2801:19;;:::i;:::-;2778:20;:14;:5;2784:7;;;:::i;:::-;2778:14;;:::i;:::-;2793:4;;;:::i;:::-;2778:20;;:::i;:::-;:42;:::i;:::-;2831;2854:19;;:::i;:::-;2831:20;:14;:5;2837:7;;;:::i;:::-;2831:14;;:::i;:::-;2846:4;2831:20;;:::i;:::-;:42;:::i;:::-;2886;2909:19;;:::i;:::-;2886:20;:11;:5;2892:4;2886:11;;:::i;:::-;2898:7;;;:::i;:::-;2886:20;;:::i;:::-;:42;:::i;:::-;2939:37;2959:17;;:::i;:::-;2939;:11;:5;2945:4;2939:11;;:::i;:::-;2951:4;;;:::i;:::-;2939:17;;:::i;:::-;:37;:::i;:::-;2987:17;3007;;:::i;:::-;2987:5;:11;:5;2993:4;2987:11;;:::i;:::-;:17;:::i;:::-;:37;:::i;:::-;3035:11;3055:17;;:::i;:::-;3035:5;;:11;:::i;:::-;:17;:::i;:::-;:37;:::i;:::-;1893:1187::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":464,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":1029,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":2046,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":1079,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":3850,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":1064,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":3835,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":1959,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple":{"entryPoint":3880,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":1972,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":559,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":546,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_unbounded":{"entryPoint":450,"id":null,"parameterSlots":0,"returnSlots":1},"checked_div_uint256":{"entryPoint":4110,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint8":{"entryPoint":3984,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":4012,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint8":{"entryPoint":4144,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":997,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":1881,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":2187,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1000000000000000000_by":{"entryPoint":4180,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1000983989838925640_by":{"entryPoint":2967,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1080_by":{"entryPoint":743,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1457844841452943_by":{"entryPoint":2503,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1463657468947761_by":{"entryPoint":479,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_175476470939493533556108593598_by":{"entryPoint":3082,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_189625582664100_by":{"entryPoint":2732,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_256884484348670192973112135_by":{"entryPoint":1412,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_256897185735855109411507118_by":{"entryPoint":3428,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3749163887_by":{"entryPoint":1766,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3781382154_by":{"entryPoint":1191,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_5273576410685072782753_by":{"entryPoint":3546,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_5561821_by":{"entryPoint":1302,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_681360233243484009138_by":{"entryPoint":3312,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_683003374554512029990_by":{"entryPoint":1650,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_733905_by":{"entryPoint":3202,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_924778033538811846038762973579739_by":{"entryPoint":2382,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_998840977600189233_by":{"entryPoint":2617,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":852,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":1530,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":633,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":4730,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":972,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":482,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":3809,"id":null,"parameterSlots":1,"returnSlots":1},"constant_USDC_TO_USDT_RATE":{"entryPoint":2998,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WBTC_RATE":{"entryPoint":516,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WETH_RATE":{"entryPoint":3459,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WMATIC_RATE":{"entryPoint":1561,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_USDC_RATE":{"entryPoint":2648,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WBTC_RATE":{"entryPoint":2534,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WETH_RATE":{"entryPoint":1443,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WMATIC_RATE":{"entryPoint":883,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_USDC_RATE":{"entryPoint":1681,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_USDT_RATE":{"entryPoint":3343,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_WETH_RATE":{"entryPoint":3113,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_WMATIC_RATE":{"entryPoint":2413,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_USDC_RATE":{"entryPoint":1222,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_USDT_RATE":{"entryPoint":1797,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_WBTC_RATE":{"entryPoint":1333,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_WMATIC_RATE":{"entryPoint":3577,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_USDC_RATE":{"entryPoint":3233,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_USDT_RATE":{"entryPoint":664,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_WBTC_RATE":{"entryPoint":774,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_WETH_RATE":{"entryPoint":2763,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":2131,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":3683,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":3695,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1000983989838925640_by_1_to_uint256":{"entryPoint":2970,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1080_by_1_to_uint256":{"entryPoint":746,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1351148249095651365340914098616_by_1_to_uint256":{"entryPoint":1533,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1351542478738482785523886658083_by_1_to_uint256":{"entryPoint":855,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1457844841452943_by_1_to_uint256":{"entryPoint":2506,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1463657468947761_by_1_to_uint256":{"entryPoint":488,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_175476470939493533556108593598_by_1_to_uint256":{"entryPoint":3085,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_189625582664100_by_1_to_uint256":{"entryPoint":2735,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_256884484348670192973112135_by_1_to_uint256":{"entryPoint":1415,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_256897185735855109411507118_by_1_to_uint256":{"entryPoint":3431,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_3749163887_by_1_to_uint256":{"entryPoint":1769,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_3781382154_by_1_to_uint256":{"entryPoint":1194,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_5273576410685072782753_by_1_to_uint256":{"entryPoint":3549,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_5561821_by_1_to_uint256":{"entryPoint":1305,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_681360233243484009138_by_1_to_uint256":{"entryPoint":3315,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_683003374554512029990_by_1_to_uint256":{"entryPoint":1653,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_733905_by_1_to_uint256":{"entryPoint":3205,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_747767_by_1_to_uint256":{"entryPoint":636,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_924778033538811846038762973579739_by_1_to_uint256":{"entryPoint":2385,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_998840977600189233_by_1_to_uint256":{"entryPoint":2620,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":4183,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint8":{"entryPoint":4733,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":2119,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":3671,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":2091,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_USDC":{"entryPoint":2329,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC_TO_USDT_RATE":{"entryPoint":3029,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC_TO_WBTC_RATE":{"entryPoint":580,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC_TO_WETH_RATE":{"entryPoint":3493,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC_TO_WMATIC_RATE":{"entryPoint":1597,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDT_TO_USDC_RATE":{"entryPoint":2679,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDT_TO_WBTC_RATE":{"entryPoint":2564,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDT_TO_WETH_RATE":{"entryPoint":1477,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDT_TO_WMATIC_RATE":{"entryPoint":919,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WBTC_TO_USDC_RATE":{"entryPoint":1713,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WBTC_TO_USDT_RATE":{"entryPoint":3375,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WBTC_TO_WETH_RATE":{"entryPoint":3149,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WBTC_TO_WMATIC_RATE":{"entryPoint":2450,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH_TO_USDC_RATE":{"entryPoint":1249,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH_TO_USDT_RATE":{"entryPoint":1824,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH_TO_WBTC_RATE":{"entryPoint":1359,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH_TO_WMATIC_RATE":{"entryPoint":3610,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WMATIC_TO_USDC_RATE":{"entryPoint":3259,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WMATIC_TO_USDT_RATE":{"entryPoint":690,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WMATIC_TO_WBTC_RATE":{"entryPoint":799,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WMATIC_TO_WETH_RATE":{"entryPoint":2792,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WNATIVE":{"entryPoint":2914,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_convert":{"entryPoint":1137,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_convertScaled":{"entryPoint":2845,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_rates":{"entryPoint":2260,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_treasury":{"entryPoint":1993,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":1906,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_uint256":{"entryPoint":2190,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":3906,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":3762,"id":null,"parameterSlots":2,"returnSlots":0},"fun_convert":{"entryPoint":4211,"id":10437,"parameterSlots":3,"returnSlots":1},"fun_convertScaled":{"entryPoint":4761,"id":10590,"parameterSlots":3,"returnSlots":1},"getter_fun_USDC":{"entryPoint":2314,"id":10131,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC_TO_USDT_RATE":{"entryPoint":3018,"id":10075,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC_TO_WBTC_RATE":{"entryPoint":535,"id":10078,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC_TO_WETH_RATE":{"entryPoint":3482,"id":10072,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC_TO_WMATIC_RATE":{"entryPoint":1586,"id":10081,"parameterSlots":0,"returnSlots":1},"getter_fun_USDT_TO_USDC_RATE":{"entryPoint":2668,"id":10111,"parameterSlots":0,"returnSlots":1},"getter_fun_USDT_TO_WBTC_RATE":{"entryPoint":2553,"id":10108,"parameterSlots":0,"returnSlots":1},"getter_fun_USDT_TO_WETH_RATE":{"entryPoint":1466,"id":10114,"parameterSlots":0,"returnSlots":1},"getter_fun_USDT_TO_WMATIC_RATE":{"entryPoint":908,"id":10117,"parameterSlots":0,"returnSlots":1},"getter_fun_WBTC_TO_USDC_RATE":{"entryPoint":1702,"id":10105,"parameterSlots":0,"returnSlots":1},"getter_fun_WBTC_TO_USDT_RATE":{"entryPoint":3364,"id":10099,"parameterSlots":0,"returnSlots":1},"getter_fun_WBTC_TO_WETH_RATE":{"entryPoint":3138,"id":10102,"parameterSlots":0,"returnSlots":1},"getter_fun_WBTC_TO_WMATIC_RATE":{"entryPoint":2439,"id":10096,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH_TO_USDC_RATE":{"entryPoint":1238,"id":10123,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH_TO_USDT_RATE":{"entryPoint":1813,"id":10126,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH_TO_WBTC_RATE":{"entryPoint":1348,"id":10129,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH_TO_WMATIC_RATE":{"entryPoint":3599,"id":10120,"parameterSlots":0,"returnSlots":1},"getter_fun_WMATIC_TO_USDC_RATE":{"entryPoint":3248,"id":10087,"parameterSlots":0,"returnSlots":1},"getter_fun_WMATIC_TO_USDT_RATE":{"entryPoint":679,"id":10084,"parameterSlots":0,"returnSlots":1},"getter_fun_WMATIC_TO_WBTC_RATE":{"entryPoint":788,"id":10090,"parameterSlots":0,"returnSlots":1},"getter_fun_WMATIC_TO_WETH_RATE":{"entryPoint":2781,"id":10093,"parameterSlots":0,"returnSlots":1},"getter_fun_WNATIVE":{"entryPoint":2899,"id":10133,"parameterSlots":0,"returnSlots":1},"getter_fun_rates":{"entryPoint":2228,"id":10069,"parameterSlots":2,"returnSlots":1},"getter_fun_treasury":{"entryPoint":1944,"id":10135,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":485,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":2143,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":2165,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":3939,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":4065,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3717,"id":null,"parameterSlots":0,"returnSlots":0},"read_from_storage_split_dynamic_address":{"entryPoint":1930,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_uint256":{"entryPoint":2214,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":3926,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":3663,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":456,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":460,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":3885,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":3707,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":3803,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":3901,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":444,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1877,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_address":{"entryPoint":1009,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":1044,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":3815,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_uint256":{"entryPoint":3667,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361015610013575b610e4f565b61001d5f356101bc565b806302098719146101b75780630e091762146101b2578063187029b8146101ad5780631a1e4a1f146101a8578063248391ff146101a35780634039e6871461019e5780634314639914610199578063443dc789146101945780635107e94e1461018f57806353ff493e1461018a5780635fc8cd691461018557806361d027b3146101805780637b0cf44d1461017b57806389a30271146101765780638e5139ed1461017157806397db8e021461016c578063a58a7f8a14610167578063ae3bcc9614610162578063b27b5e751461015d578063b381cf4014610158578063b537d24b14610153578063b9e938101461014e578063c018498314610149578063d135e3be14610144578063e2338e721461013f5763e30f68920361000e57610e1a565b610da5565b610d2f565b610cbb565b610c4d565b610bd5565b610b62565b610b1d565b610ae8565b610a77565b610a04565b610992565b610919565b6108d4565b6107c9565b610720565b6106b1565b61063d565b6105c5565b61054f565b6104e1565b610471565b610397565b61031f565b6102b2565b610244565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f9103126101da57565b6101cc565b90565b90565b90565b6101fc6101f7610201926101df565b6101e5565b6101e2565b90565b610214660533304f826d316101e8565b90565b61021f610204565b90565b61022b906101e2565b9052565b9190610242905f60208501940190610222565b565b34610274576102543660046101d0565b61027061025f610217565b6102676101c2565b9182918261022f565b0390f35b6101c8565b90565b61029061028b61029592610279565b6101e5565b6101e2565b90565b6102a4620b68f761027c565b90565b6102af610298565b90565b346102e2576102c23660046101d0565b6102de6102cd6102a7565b6102d56101c2565b9182918261022f565b0390f35b6101c8565b90565b6102fe6102f9610303926102e7565b6101e5565b6101e2565b90565b6103116104386102ea565b90565b61031c610306565b90565b3461034f5761032f3660046101d0565b61034b61033a610314565b6103426101c2565b9182918261022f565b0390f35b6101c8565b90565b61036b61036661037092610354565b6101e5565b6101e2565b90565b6103896c110f11bc46bc3efcc5b8ff1223610357565b90565b610394610373565b90565b346103c7576103a73660046101d0565b6103c36103b261038c565b6103ba6101c2565b9182918261022f565b0390f35b6101c8565b73ffffffffffffffffffffffffffffffffffffffff1690565b6103ee906103cc565b90565b6103fa816103e5565b0361040157565b5f80fd5b90503590610412826103f1565b565b61041d816101e2565b0361042457565b5f80fd5b9050359061043582610414565b565b909160608284031261046c57610469610452845f8501610405565b936104608160208601610405565b93604001610428565b90565b6101cc565b346104a25761049e61048d610487366004610437565b91611073565b6104956101c2565b9182918261022f565b0390f35b6101c8565b90565b6104be6104b96104c3926104a7565b6101e5565b6101e2565b90565b6104d363e163500a6104aa565b90565b6104de6104c6565b90565b34610511576104f13660046101d0565b61050d6104fc6104d6565b6105046101c2565b9182918261022f565b0390f35b6101c8565b90565b61052d61052861053292610516565b6101e5565b6101e2565b90565b6105416254dddd610519565b90565b61054c610535565b90565b3461057f5761055f3660046101d0565b61057b61056a610544565b6105726101c2565b9182918261022f565b0390f35b6101c8565b90565b61059b6105966105a092610584565b6101e5565b6101e2565b90565b6105b76ad47d67cce9223fad7de347610587565b90565b6105c26105a3565b90565b346105f5576105d53660046101d0565b6105f16105e06105ba565b6105e86101c2565b9182918261022f565b0390f35b6101c8565b90565b61061161060c610616926105fa565b6101e5565b6101e2565b90565b61062f6c110dcba2e6f97b2a41a7eba1b86105fd565b90565b61063a610619565b90565b3461066d5761064d3660046101d0565b610669610658610632565b6106606101c2565b9182918261022f565b0390f35b6101c8565b90565b61068961068461068e92610672565b6101e5565b6101e2565b90565b6106a3682506936e734ac2f926610675565b90565b6106ae610691565b90565b346106e1576106c13660046101d0565b6106dd6106cc6106a6565b6106d46101c2565b9182918261022f565b0390f35b6101c8565b90565b6106fd6106f8610702926106e6565b6101e5565b6101e2565b90565b61071263df77b36f6106e9565b90565b61071d610705565b90565b34610750576107303660046101d0565b61074c61073b610715565b6107436101c2565b9182918261022f565b0390f35b6101c8565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6107829060086107879302610755565b610759565b90565b906107959154610772565b90565b6107a460035f9061078a565b90565b6107b0906103e5565b9052565b91906107c7905f602085019401906107a7565b565b346107f9576107d93660046101d0565b6107f56107e4610798565b6107ec6101c2565b918291826107b4565b0390f35b6101c8565b9190604083820312610826578061081a610823925f8601610405565b93602001610405565b90565b6101cc565b61083f61083a610844926103cc565b6101e5565b6103cc565b90565b6108509061082b565b90565b61085c90610847565b90565b9061086990610853565b5f5260205260405f2090565b9061087f90610853565b5f5260205260405f2090565b90565b61089e9060086108a39302610755565b61088b565b90565b906108b1915461088e565b90565b6108cc6108d1926108c75f935f9461085f565b610875565b6108a6565b90565b34610905576109016108f06108ea3660046107fe565b906108b4565b6108f86101c2565b9182918261022f565b0390f35b6101c8565b61091660015f9061078a565b90565b34610949576109293660046101d0565b61094561093461090a565b61093c6101c2565b918291826107b4565b0390f35b6101c8565b90565b61096561096061096a9261094e565b6101e5565b6101e2565b90565b6109846d2d9856fc421a9fd095f8b44c49db610951565b90565b61098f61096d565b90565b346109c2576109a23660046101d0565b6109be6109ad610987565b6109b56101c2565b9182918261022f565b0390f35b6101c8565b90565b6109de6109d96109e3926109c7565b6101e5565b6101e2565b90565b6109f666052de6f3e9958f6109ca565b90565b610a016109e6565b90565b34610a3457610a143660046101d0565b610a30610a1f6109f9565b610a276101c2565b9182918261022f565b0390f35b6101c8565b90565b610a50610a4b610a5592610a39565b6101e5565b6101e2565b90565b610a69670ddc9893b8f69331610a3c565b90565b610a74610a58565b90565b34610aa757610a873660046101d0565b610aa3610a92610a6c565b610a9a6101c2565b9182918261022f565b0390f35b6101c8565b90565b610ac3610abe610ac892610aac565b6101e5565b6101e2565b90565b610ada65ac76a57eb9a4610aaf565b90565b610ae5610acb565b90565b34610b1857610af83660046101d0565b610b14610b03610add565b610b0b6101c2565b9182918261022f565b0390f35b6101c8565b34610b4e57610b4a610b39610b33366004610437565b91611299565b610b416101c2565b9182918261022f565b0390f35b6101c8565b610b5f60025f9061078a565b90565b34610b9257610b723660046101d0565b610b8e610b7d610b53565b610b856101c2565b918291826107b4565b0390f35b6101c8565b90565b610bae610ba9610bb392610b97565b6101e5565b6101e2565b90565b610bc7670de435a2a433cf48610b9a565b90565b610bd2610bb6565b90565b34610c0557610be53660046101d0565b610c01610bf0610bca565b610bf86101c2565b9182918261022f565b0390f35b6101c8565b90565b610c21610c1c610c2692610c0a565b6101e5565b6101e2565b90565b610c3f6c0236febc16a26943df322289be610c0d565b90565b610c4a610c29565b90565b34610c7d57610c5d3660046101d0565b610c79610c68610c42565b610c706101c2565b9182918261022f565b0390f35b6101c8565b90565b610c99610c94610c9e92610c82565b6101e5565b6101e2565b90565b610cad620b32d1610c85565b90565b610cb8610ca1565b90565b34610ceb57610ccb3660046101d0565b610ce7610cd6610cb0565b610cde6101c2565b9182918261022f565b0390f35b6101c8565b90565b610d07610d02610d0c92610cf0565b6101e5565b6101e2565b90565b610d216824efc5d2223b2ab2b2610cf3565b90565b610d2c610d0f565b90565b34610d5f57610d3f3660046101d0565b610d5b610d4a610d24565b610d526101c2565b9182918261022f565b0390f35b6101c8565b90565b610d7b610d76610d8092610d64565b6101e5565b6101e2565b90565b610d976ad4801858112018c8850bae610d67565b90565b610da2610d83565b90565b34610dd557610db53660046101d0565b610dd1610dc0610d9a565b610dc86101c2565b9182918261022f565b0390f35b6101c8565b90565b610df1610dec610df692610dda565b6101e5565b6101e2565b90565b610e0c69011de1930ce9ab44b5a1610ddd565b90565b610e17610df9565b90565b34610e4a57610e2a3660046101d0565b610e46610e35610e0f565b610e3d6101c2565b9182918261022f565b0390f35b6101c8565b5f80fd5b5f90565b610e609061082b565b90565b610e6c90610e57565b90565b610e7890610847565b90565b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90610ebc90610e7b565b810190811067ffffffffffffffff821117610ed657604052565b610e85565b60e01b90565b60ff1690565b610ef081610ee1565b03610ef757565b5f80fd5b90505190610f0882610ee7565b565b90602082820312610f2357610f20915f01610efb565b90565b6101cc565b5f0190565b610f356101c2565b3d5f823e3d90fd5b5f1c90565b610f4e610f5391610f3d565b61088b565b90565b610f609054610f42565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610f9990610ee1565b604d8111610fa757600a0a90565b610f63565b610fbb610fc1919392936101e2565b926101e2565b91610fcd8382026101e2565b928184041490151715610fdc57565b610f63565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61101a611020916101e2565b916101e2565b90811561102b570490565b610fe1565b61103c61104291610ee1565b91610ee1565b90039060ff821161104f57565b610f63565b90565b61106b61106661107092611054565b6101e5565b6101e2565b90565b91909161107e610e53565b50611087610e53565b506110b4602061109e61109984610e63565b610e6f565b63313ce567906110ac6101c2565b938492610edb565b825281806110c460048201610f28565b03915afa801561127557611104915f91611247575b509360206110ee6110e983610e63565b610e6f565b63313ce567906110fc6101c2565b948592610edb565b8252818061111460048201610f28565b03915afa91821561124257611145611159926111406111689561114a945f91611214575b50965f61085f565b610875565b610f56565b61115386610f90565b90610fac565b61116283610f90565b9061100e565b92611171610e53565b508061118561117f84610ee1565b91610ee1565b10155f146111d0576111b5926111aa6111a56111cc96946111b094611030565b610f90565b9061100e565b610fac565b6111c6670de0b6b3a7640000611057565b9061100e565b5b90565b6111f8926111ed6111e86111f39361120f9795611030565b610f90565b90610fac565b610fac565b611209670de0b6b3a7640000611057565b9061100e565b6111cd565b611235915060203d811161123b575b61122d8183610eb2565b810190610f0a565b5f611138565b503d611223565b610f2d565b611268915060203d811161126e575b6112608183610eb2565b810190610f0a565b5f6110d9565b503d611256565b610f2d565b90565b61129161128c6112969261127a565b6101e5565b610ee1565b90565b6112d8926112a5610e53565b506112ae610e53565b5060206112c26112bd84610e63565b610e6f565b63313ce567906112d06101c2565b968792610edb565b825281806112e860048201610f28565b03915afa801561150c57611328945f916114de575b5092602061131261130d83610e63565b610e6f565b63313ce567906113206101c2565b978892610edb565b8252818061133860048201610f28565b03915afa9081156114d95761137161136c6113809261136761138f956114059a5f916114ab575b50975f61085f565b610875565b610f56565b61137a86610f90565b90610fac565b61138984610f90565b9061100e565b91611398610e53565b506113a1610e53565b506113be6113b960126113b4849161127d565b611030565b610f90565b93806113d26113cc84610ee1565b91610ee1565b145f146114085750506113ff916113e891610fac565b6113f9670de0b6b3a7640000611057565b9061100e565b5b610fac565b90565b8061141b61141584610ee1565b91610ee1565b115f146114675761144a9261143f61143a611461969461144594611030565b610f90565b9061100e565b610fac565b61145b670de0b6b3a7640000611057565b9061100e565b5b611400565b61148f9261148461147f61148a936114a69795611030565b610f90565b90610fac565b610fac565b6114a0670de0b6b3a7640000611057565b9061100e565b611462565b6114cc915060203d81116114d2575b6114c48183610eb2565b810190610f0a565b5f61135f565b503d6114ba565b610f2d565b6114ff915060203d8111611505575b6114f78183610eb2565b810190610f0a565b5f6112fd565b503d6114ed565b610f2d56fea2646970667358221220b174cb9554b3d690fb93594256dd7cc922c6f287ed8936198d565cbb69e106a964736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xE4F JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x1BC JUMP JUMPDEST DUP1 PUSH4 0x2098719 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xE091762 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x187029B8 EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x1A1E4A1F EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x248391FF EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x4039E687 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x43146399 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x443DC789 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x5107E94E EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0x53FF493E EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x5FC8CD69 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x61D027B3 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x7B0CF44D EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x89A30271 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x8E5139ED EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x97DB8E02 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0xA58A7F8A EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xAE3BCC96 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0xB27B5E75 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0xB381CF40 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0xB537D24B EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xB9E93810 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xC0184983 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0xD135E3BE EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xE2338E72 EQ PUSH2 0x13F JUMPI PUSH4 0xE30F6892 SUB PUSH2 0xE JUMPI PUSH2 0xE1A JUMP JUMPDEST PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0xD2F JUMP JUMPDEST PUSH2 0xCBB JUMP JUMPDEST PUSH2 0xC4D JUMP JUMPDEST PUSH2 0xBD5 JUMP JUMPDEST PUSH2 0xB62 JUMP JUMPDEST PUSH2 0xB1D JUMP JUMPDEST PUSH2 0xAE8 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST PUSH2 0xA04 JUMP JUMPDEST PUSH2 0x992 JUMP JUMPDEST PUSH2 0x919 JUMP JUMPDEST PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0x720 JUMP JUMPDEST PUSH2 0x6B1 JUMP JUMPDEST PUSH2 0x63D JUMP JUMPDEST PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x54F JUMP JUMPDEST PUSH2 0x4E1 JUMP JUMPDEST PUSH2 0x471 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST PUSH2 0x31F JUMP JUMPDEST PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x244 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x1DA JUMPI JUMP JUMPDEST PUSH2 0x1CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x1F7 PUSH2 0x201 SWAP3 PUSH2 0x1DF JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x214 PUSH7 0x533304F826D31 PUSH2 0x1E8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x204 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22B SWAP1 PUSH2 0x1E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x242 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x222 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x274 JUMPI PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x270 PUSH2 0x25F PUSH2 0x217 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x290 PUSH2 0x28B PUSH2 0x295 SWAP3 PUSH2 0x279 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A4 PUSH3 0xB68F7 PUSH2 0x27C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2AF PUSH2 0x298 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2E2 JUMPI PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x2DE PUSH2 0x2CD PUSH2 0x2A7 JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x2F9 PUSH2 0x303 SWAP3 PUSH2 0x2E7 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x311 PUSH2 0x438 PUSH2 0x2EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C PUSH2 0x306 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x34F JUMPI PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x34B PUSH2 0x33A PUSH2 0x314 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36B PUSH2 0x366 PUSH2 0x370 SWAP3 PUSH2 0x354 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x389 PUSH13 0x110F11BC46BC3EFCC5B8FF1223 PUSH2 0x357 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x394 PUSH2 0x373 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3C7 JUMPI PUSH2 0x3A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x3C3 PUSH2 0x3B2 PUSH2 0x38C JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3EE SWAP1 PUSH2 0x3CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3FA DUP2 PUSH2 0x3E5 JUMP JUMPDEST SUB PUSH2 0x401 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x412 DUP3 PUSH2 0x3F1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x41D DUP2 PUSH2 0x1E2 JUMP JUMPDEST SUB PUSH2 0x424 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x435 DUP3 PUSH2 0x414 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x46C JUMPI PUSH2 0x469 PUSH2 0x452 DUP5 PUSH0 DUP6 ADD PUSH2 0x405 JUMP JUMPDEST SWAP4 PUSH2 0x460 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x405 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x428 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CC JUMP JUMPDEST CALLVALUE PUSH2 0x4A2 JUMPI PUSH2 0x49E PUSH2 0x48D PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x437 JUMP JUMPDEST SWAP2 PUSH2 0x1073 JUMP JUMPDEST PUSH2 0x495 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4BE PUSH2 0x4B9 PUSH2 0x4C3 SWAP3 PUSH2 0x4A7 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4D3 PUSH4 0xE163500A PUSH2 0x4AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4DE PUSH2 0x4C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x511 JUMPI PUSH2 0x4F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x50D PUSH2 0x4FC PUSH2 0x4D6 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52D PUSH2 0x528 PUSH2 0x532 SWAP3 PUSH2 0x516 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x541 PUSH3 0x54DDDD PUSH2 0x519 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x54C PUSH2 0x535 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x57F JUMPI PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x57B PUSH2 0x56A PUSH2 0x544 JUMP JUMPDEST PUSH2 0x572 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x59B PUSH2 0x596 PUSH2 0x5A0 SWAP3 PUSH2 0x584 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5B7 PUSH11 0xD47D67CCE9223FAD7DE347 PUSH2 0x587 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C2 PUSH2 0x5A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x5F5 JUMPI PUSH2 0x5D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x5F1 PUSH2 0x5E0 PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x5E8 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x611 PUSH2 0x60C PUSH2 0x616 SWAP3 PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x62F PUSH13 0x110DCBA2E6F97B2A41A7EBA1B8 PUSH2 0x5FD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x63A PUSH2 0x619 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x66D JUMPI PUSH2 0x64D CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x669 PUSH2 0x658 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x660 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x689 PUSH2 0x684 PUSH2 0x68E SWAP3 PUSH2 0x672 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A3 PUSH9 0x2506936E734AC2F926 PUSH2 0x675 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6AE PUSH2 0x691 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6E1 JUMPI PUSH2 0x6C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x6DD PUSH2 0x6CC PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x6D4 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6FD PUSH2 0x6F8 PUSH2 0x702 SWAP3 PUSH2 0x6E6 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x712 PUSH4 0xDF77B36F PUSH2 0x6E9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x71D PUSH2 0x705 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x750 JUMPI PUSH2 0x730 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x74C PUSH2 0x73B PUSH2 0x715 JUMP JUMPDEST PUSH2 0x743 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x782 SWAP1 PUSH1 0x8 PUSH2 0x787 SWAP4 MUL PUSH2 0x755 JUMP JUMPDEST PUSH2 0x759 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x795 SWAP2 SLOAD PUSH2 0x772 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7A4 PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x78A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7B0 SWAP1 PUSH2 0x3E5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x7C7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7A7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x7F9 JUMPI PUSH2 0x7D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x7F5 PUSH2 0x7E4 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x7EC PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7B4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x826 JUMPI DUP1 PUSH2 0x81A PUSH2 0x823 SWAP3 PUSH0 DUP7 ADD PUSH2 0x405 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x405 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x83F PUSH2 0x83A PUSH2 0x844 SWAP3 PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x3CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x850 SWAP1 PUSH2 0x82B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x85C SWAP1 PUSH2 0x847 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x869 SWAP1 PUSH2 0x853 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x87F SWAP1 PUSH2 0x853 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x89E SWAP1 PUSH1 0x8 PUSH2 0x8A3 SWAP4 MUL PUSH2 0x755 JUMP JUMPDEST PUSH2 0x88B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8B1 SWAP2 SLOAD PUSH2 0x88E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8CC PUSH2 0x8D1 SWAP3 PUSH2 0x8C7 PUSH0 SWAP4 PUSH0 SWAP5 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x875 JUMP JUMPDEST PUSH2 0x8A6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x905 JUMPI PUSH2 0x901 PUSH2 0x8F0 PUSH2 0x8EA CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST SWAP1 PUSH2 0x8B4 JUMP JUMPDEST PUSH2 0x8F8 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH2 0x916 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x78A JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x949 JUMPI PUSH2 0x929 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x945 PUSH2 0x934 PUSH2 0x90A JUMP JUMPDEST PUSH2 0x93C PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7B4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x965 PUSH2 0x960 PUSH2 0x96A SWAP3 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x984 PUSH14 0x2D9856FC421A9FD095F8B44C49DB PUSH2 0x951 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x98F PUSH2 0x96D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x9C2 JUMPI PUSH2 0x9A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0x9BE PUSH2 0x9AD PUSH2 0x987 JUMP JUMPDEST PUSH2 0x9B5 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9DE PUSH2 0x9D9 PUSH2 0x9E3 SWAP3 PUSH2 0x9C7 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9F6 PUSH7 0x52DE6F3E9958F PUSH2 0x9CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA01 PUSH2 0x9E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA34 JUMPI PUSH2 0xA14 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xA30 PUSH2 0xA1F PUSH2 0x9F9 JUMP JUMPDEST PUSH2 0xA27 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA50 PUSH2 0xA4B PUSH2 0xA55 SWAP3 PUSH2 0xA39 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA69 PUSH8 0xDDC9893B8F69331 PUSH2 0xA3C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA74 PUSH2 0xA58 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xAA7 JUMPI PUSH2 0xA87 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xAA3 PUSH2 0xA92 PUSH2 0xA6C JUMP JUMPDEST PUSH2 0xA9A PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAC3 PUSH2 0xABE PUSH2 0xAC8 SWAP3 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xADA PUSH6 0xAC76A57EB9A4 PUSH2 0xAAF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAE5 PUSH2 0xACB JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB18 JUMPI PUSH2 0xAF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xB14 PUSH2 0xB03 PUSH2 0xADD JUMP JUMPDEST PUSH2 0xB0B PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST CALLVALUE PUSH2 0xB4E JUMPI PUSH2 0xB4A PUSH2 0xB39 PUSH2 0xB33 CALLDATASIZE PUSH1 0x4 PUSH2 0x437 JUMP JUMPDEST SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH2 0xB41 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH2 0xB5F PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x78A JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB92 JUMPI PUSH2 0xB72 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xB8E PUSH2 0xB7D PUSH2 0xB53 JUMP JUMPDEST PUSH2 0xB85 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7B4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBAE PUSH2 0xBA9 PUSH2 0xBB3 SWAP3 PUSH2 0xB97 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBC7 PUSH8 0xDE435A2A433CF48 PUSH2 0xB9A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBD2 PUSH2 0xBB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xC05 JUMPI PUSH2 0xBE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xC01 PUSH2 0xBF0 PUSH2 0xBCA JUMP JUMPDEST PUSH2 0xBF8 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC21 PUSH2 0xC1C PUSH2 0xC26 SWAP3 PUSH2 0xC0A JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC3F PUSH13 0x236FEBC16A26943DF322289BE PUSH2 0xC0D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC4A PUSH2 0xC29 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xC7D JUMPI PUSH2 0xC5D CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xC79 PUSH2 0xC68 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0xC70 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC99 PUSH2 0xC94 PUSH2 0xC9E SWAP3 PUSH2 0xC82 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCAD PUSH3 0xB32D1 PUSH2 0xC85 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB8 PUSH2 0xCA1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xCEB JUMPI PUSH2 0xCCB CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xCE7 PUSH2 0xCD6 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xCDE PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD07 PUSH2 0xD02 PUSH2 0xD0C SWAP3 PUSH2 0xCF0 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD21 PUSH9 0x24EFC5D2223B2AB2B2 PUSH2 0xCF3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD2C PUSH2 0xD0F JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD5F JUMPI PUSH2 0xD3F CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xD5B PUSH2 0xD4A PUSH2 0xD24 JUMP JUMPDEST PUSH2 0xD52 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD7B PUSH2 0xD76 PUSH2 0xD80 SWAP3 PUSH2 0xD64 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD97 PUSH11 0xD4801858112018C8850BAE PUSH2 0xD67 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDA2 PUSH2 0xD83 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDD5 JUMPI PUSH2 0xDB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xDD1 PUSH2 0xDC0 PUSH2 0xD9A JUMP JUMPDEST PUSH2 0xDC8 PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDF1 PUSH2 0xDEC PUSH2 0xDF6 SWAP3 PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE0C PUSH10 0x11DE1930CE9AB44B5A1 PUSH2 0xDDD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE17 PUSH2 0xDF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE4A JUMPI PUSH2 0xE2A CALLDATASIZE PUSH1 0x4 PUSH2 0x1D0 JUMP JUMPDEST PUSH2 0xE46 PUSH2 0xE35 PUSH2 0xE0F JUMP JUMPDEST PUSH2 0xE3D PUSH2 0x1C2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xE60 SWAP1 PUSH2 0x82B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE6C SWAP1 PUSH2 0xE57 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE78 SWAP1 PUSH2 0x847 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xEBC SWAP1 PUSH2 0xE7B JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xED6 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xE85 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xEF0 DUP2 PUSH2 0xEE1 JUMP JUMPDEST SUB PUSH2 0xEF7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xF08 DUP3 PUSH2 0xEE7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xF23 JUMPI PUSH2 0xF20 SWAP2 PUSH0 ADD PUSH2 0xEFB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CC JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0xF35 PUSH2 0x1C2 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0xF4E PUSH2 0xF53 SWAP2 PUSH2 0xF3D JUMP JUMPDEST PUSH2 0x88B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF60 SWAP1 SLOAD PUSH2 0xF42 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xF99 SWAP1 PUSH2 0xEE1 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0xFA7 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0xF63 JUMP JUMPDEST PUSH2 0xFBB PUSH2 0xFC1 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x1E2 JUMP JUMPDEST SWAP3 PUSH2 0x1E2 JUMP JUMPDEST SWAP2 PUSH2 0xFCD DUP4 DUP3 MUL PUSH2 0x1E2 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xFDC JUMPI JUMP JUMPDEST PUSH2 0xF63 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x101A PUSH2 0x1020 SWAP2 PUSH2 0x1E2 JUMP JUMPDEST SWAP2 PUSH2 0x1E2 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x102B JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x103C PUSH2 0x1042 SWAP2 PUSH2 0xEE1 JUMP JUMPDEST SWAP2 PUSH2 0xEE1 JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x104F JUMPI JUMP JUMPDEST PUSH2 0xF63 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x106B PUSH2 0x1066 PUSH2 0x1070 SWAP3 PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x107E PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x1087 PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x10B4 PUSH1 0x20 PUSH2 0x109E PUSH2 0x1099 DUP5 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x10AC PUSH2 0x1C2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xEDB JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x10C4 PUSH1 0x4 DUP3 ADD PUSH2 0xF28 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1275 JUMPI PUSH2 0x1104 SWAP2 PUSH0 SWAP2 PUSH2 0x1247 JUMPI JUMPDEST POP SWAP4 PUSH1 0x20 PUSH2 0x10EE PUSH2 0x10E9 DUP4 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x10FC PUSH2 0x1C2 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xEDB JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1114 PUSH1 0x4 DUP3 ADD PUSH2 0xF28 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1242 JUMPI PUSH2 0x1145 PUSH2 0x1159 SWAP3 PUSH2 0x1140 PUSH2 0x1168 SWAP6 PUSH2 0x114A SWAP5 PUSH0 SWAP2 PUSH2 0x1214 JUMPI JUMPDEST POP SWAP7 PUSH0 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x875 JUMP JUMPDEST PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x1153 DUP7 PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x1162 DUP4 PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST SWAP3 PUSH2 0x1171 PUSH2 0xE53 JUMP JUMPDEST POP DUP1 PUSH2 0x1185 PUSH2 0x117F DUP5 PUSH2 0xEE1 JUMP JUMPDEST SWAP2 PUSH2 0xEE1 JUMP JUMPDEST LT ISZERO PUSH0 EQ PUSH2 0x11D0 JUMPI PUSH2 0x11B5 SWAP3 PUSH2 0x11AA PUSH2 0x11A5 PUSH2 0x11CC SWAP7 SWAP5 PUSH2 0x11B0 SWAP5 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x11C6 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11F8 SWAP3 PUSH2 0x11ED PUSH2 0x11E8 PUSH2 0x11F3 SWAP4 PUSH2 0x120F SWAP8 SWAP6 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x1209 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0x11CD JUMP JUMPDEST PUSH2 0x1235 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x123B JUMPI JUMPDEST PUSH2 0x122D DUP2 DUP4 PUSH2 0xEB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF0A JUMP JUMPDEST PUSH0 PUSH2 0x1138 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1223 JUMP JUMPDEST PUSH2 0xF2D JUMP JUMPDEST PUSH2 0x1268 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x126E JUMPI JUMPDEST PUSH2 0x1260 DUP2 DUP4 PUSH2 0xEB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF0A JUMP JUMPDEST PUSH0 PUSH2 0x10D9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1256 JUMP JUMPDEST PUSH2 0xF2D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1291 PUSH2 0x128C PUSH2 0x1296 SWAP3 PUSH2 0x127A JUMP JUMPDEST PUSH2 0x1E5 JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12D8 SWAP3 PUSH2 0x12A5 PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x12AE PUSH2 0xE53 JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x12C2 PUSH2 0x12BD DUP5 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x12D0 PUSH2 0x1C2 JUMP JUMPDEST SWAP7 DUP8 SWAP3 PUSH2 0xEDB JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x12E8 PUSH1 0x4 DUP3 ADD PUSH2 0xF28 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x150C JUMPI PUSH2 0x1328 SWAP5 PUSH0 SWAP2 PUSH2 0x14DE JUMPI JUMPDEST POP SWAP3 PUSH1 0x20 PUSH2 0x1312 PUSH2 0x130D DUP4 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1320 PUSH2 0x1C2 JUMP JUMPDEST SWAP8 DUP9 SWAP3 PUSH2 0xEDB JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1338 PUSH1 0x4 DUP3 ADD PUSH2 0xF28 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x14D9 JUMPI PUSH2 0x1371 PUSH2 0x136C PUSH2 0x1380 SWAP3 PUSH2 0x1367 PUSH2 0x138F SWAP6 PUSH2 0x1405 SWAP11 PUSH0 SWAP2 PUSH2 0x14AB JUMPI JUMPDEST POP SWAP8 PUSH0 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x875 JUMP JUMPDEST PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x137A DUP7 PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x1389 DUP5 PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST SWAP2 PUSH2 0x1398 PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x13A1 PUSH2 0xE53 JUMP JUMPDEST POP PUSH2 0x13BE PUSH2 0x13B9 PUSH1 0x12 PUSH2 0x13B4 DUP5 SWAP2 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP4 DUP1 PUSH2 0x13D2 PUSH2 0x13CC DUP5 PUSH2 0xEE1 JUMP JUMPDEST SWAP2 PUSH2 0xEE1 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x1408 JUMPI POP POP PUSH2 0x13FF SWAP2 PUSH2 0x13E8 SWAP2 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x13F9 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST JUMPDEST PUSH2 0xFAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x141B PUSH2 0x1415 DUP5 PUSH2 0xEE1 JUMP JUMPDEST SWAP2 PUSH2 0xEE1 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x1467 JUMPI PUSH2 0x144A SWAP3 PUSH2 0x143F PUSH2 0x143A PUSH2 0x1461 SWAP7 SWAP5 PUSH2 0x1445 SWAP5 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x145B PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST JUMPDEST PUSH2 0x1400 JUMP JUMPDEST PUSH2 0x148F SWAP3 PUSH2 0x1484 PUSH2 0x147F PUSH2 0x148A SWAP4 PUSH2 0x14A6 SWAP8 SWAP6 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0xF90 JUMP JUMPDEST SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0xFAC JUMP JUMPDEST PUSH2 0x14A0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1057 JUMP JUMPDEST SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x14CC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x14D2 JUMPI JUMPDEST PUSH2 0x14C4 DUP2 DUP4 PUSH2 0xEB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF0A JUMP JUMPDEST PUSH0 PUSH2 0x135F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14BA JUMP JUMPDEST PUSH2 0xF2D JUMP JUMPDEST PUSH2 0x14FF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1505 JUMPI JUMPDEST PUSH2 0x14F7 DUP2 DUP4 PUSH2 0xEB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xF0A JUMP JUMPDEST PUSH0 PUSH2 0x12FD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14ED JUMP JUMPDEST PUSH2 0xF2D JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 PUSH21 0xCB9554B3D690FB93594256DD7CC922C6F287ED8936 NOT DUP14 JUMP TLOAD 0xBB PUSH10 0xE106A964736F6C634300 ADDMOD NOT STOP CALLER ","sourceMap":"249:5548:53:-:0;;;;;;;;;-1:-1:-1;249:5548:53;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;536:60::-;580:16;;;:::i;:::-;536:60;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;689:52::-;735:6;;;:::i;:::-;689:52;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;807:50::-;853:4;;;:::i;:::-;807:50;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1461:77::-;1507:31;;;:::i;:::-;1461:77;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1622:54::-;1666:10;;;:::i;:::-;1622:54;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1744:51::-;1788:7;;;:::i;:::-;1744:51;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1383:71::-;1427:27;;;:::i;:::-;1383:71;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;603:77::-;649:31;;;:::i;:::-;603:77;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1173:65::-;1217:21;;;:::i;:::-;1173:65;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1683:54::-;1727:10;;;:::i;:::-;1683:54;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1861:23::-;;;;;;:::i;:::-;;:::o;249:5548::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;295:60::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;249:5548::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1804:19::-;;;;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;934:79::-;980:33;;;:::i;:::-;934:79;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1247:60::-;1291:16;;;:::i;:::-;1247:60;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1314:62::-;1358:18;;;:::i;:::-;1314:62;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;864:61::-;910:15;;;:::i;:::-;864:61;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1830:22::-;;;;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;466:63::-;510:19;;;:::i;:::-;466:63;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1092:74::-;1136:30;;;:::i;:::-;1092:74;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;748:52::-;794:6;;;:::i;:::-;748:52;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1020:65::-;1064:21;;;:::i;:::-;1020:65;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;388:71::-;432:27;;;:::i;:::-;388:71;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1547:68::-;1593:22;;;:::i;:::-;1547:68;:::o;:::-;;;:::i;:::-;;:::o;249:5548::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;3451:802::-;;;;3586:17;;:::i;:::-;3616:12;;;:::i;:::-;3676:9;3661:36;;:34;:25;3676:9;3661:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;3726:34;3661:36;;;;;3451:802;3641:56;3741:7;3726:34;:32;:23;3741:7;3726:23;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;3780:43;3842:26;3726:34;3780:25;3841:48;3726:34;3780:43;3726:34;;;;;3451:802;3708:52;3780:5;;:25;:::i;:::-;:43;:::i;:::-;;:::i;:::-;3850:17;3856:11;3850:17;:::i;:::-;3842:26;;:::i;:::-;3873:15;3879:9;3873:15;:::i;:::-;3841:48;;:::i;:::-;3902:14;;;:::i;:::-;3931:11;;:24;;3946:9;3931:24;:::i;:::-;;;:::i;:::-;;;3927:290;;;;4040:24;3988:11;3981:31;3988:23;4039:33;3988:11;;4041:15;3988:11;:23;:::i;:::-;3981:31;:::i;:::-;4041:15;;:::i;:::-;4040:24;:::i;:::-;4039:33;4068:4;4039:33;:::i;:::-;;;:::i;:::-;3927:290;4229:16;:::o;3927:290::-;4173:24;4121:9;4114:31;4121:23;4174:15;4121:9;4172:33;4121:9;;:23;:::i;:::-;4114:31;:::i;:::-;4174:15;;:::i;:::-;4173:24;:::i;:::-;4172:33;4201:4;4172:33;:::i;:::-;;;:::i;:::-;3927:290;;3726:34;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3661:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;249:5548::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;4628:1166::-;4844:36;4628:1166;4769:17;;:::i;:::-;4799:12;;;:::i;:::-;4859:9;4844:36;:34;:25;4859:9;4844:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;4909:34;4844:36;;;;;4628:1166;4824:56;4924:7;4909:34;:32;:23;4924:7;4909:23;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;4963:43;;5027:26;4909:34;4963:25;5026:48;4909:34;5727:30;4909:34;;;;;4628:1166;4891:52;4963:5;;:25;:::i;:::-;:43;:::i;:::-;;:::i;:::-;5035:17;5041:11;5035:17;:::i;:::-;5027:26;;:::i;:::-;5058:15;5064:9;5058:15;:::i;:::-;5026:48;;:::i;:::-;5087:21;;;:::i;:::-;5119:19;;;:::i;:::-;5185:2;5178:22;5185:14;:2;:14;5190:9;5185:14;;:::i;:::-;;:::i;:::-;5178:22;:::i;:::-;5217:11;;:24;;5232:9;5217:24;:::i;:::-;;;:::i;:::-;;5213:490;;;;5271:6;;5270:22;5271:6;:13;:6;:13;:::i;:::-;5270:22;5288:4;5270:22;:::i;:::-;;;:::i;:::-;5213:490;5727:30;:::i;:::-;5770:16;:::o;5213:490::-;5314:11;:23;;5328:9;5314:23;:::i;:::-;;;:::i;:::-;;5310:393;;;;5480:18;5377:11;5370:31;5377:23;5479:27;5377:11;;5430:22;5377:11;:23;:::i;:::-;5370:31;:::i;:::-;5430:22;;:::i;:::-;5480:18;:::i;:::-;5479:27;5502:4;5479:27;:::i;:::-;;;:::i;:::-;5310:393;5213:490;;5310:393;5665:18;5562:9;5555:31;5562:23;5615:22;5562:9;5664:27;5562:9;;:23;:::i;:::-;5555:31;:::i;:::-;5615:22;;:::i;:::-;5665:18;:::i;:::-;5664:27;5687:4;5664:27;:::i;:::-;;;:::i;:::-;5310:393;;4909:34;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4844:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"1089400","executionCost":"infinite","totalCost":"infinite"},"external":{"USDC()":"2948","USDC_TO_USDT_RATE()":"infinite","USDC_TO_WBTC_RATE()":"infinite","USDC_TO_WETH_RATE()":"infinite","USDC_TO_WMATIC_RATE()":"infinite","USDT_TO_USDC_RATE()":"infinite","USDT_TO_WBTC_RATE()":"infinite","USDT_TO_WETH_RATE()":"infinite","USDT_TO_WMATIC_RATE()":"infinite","WBTC_TO_USDC_RATE()":"infinite","WBTC_TO_USDT_RATE()":"infinite","WBTC_TO_WETH_RATE()":"infinite","WBTC_TO_WMATIC_RATE()":"infinite","WETH_TO_USDC_RATE()":"infinite","WETH_TO_USDT_RATE()":"infinite","WETH_TO_WBTC_RATE()":"infinite","WETH_TO_WMATIC_RATE()":"infinite","WMATIC_TO_USDC_RATE()":"infinite","WMATIC_TO_USDT_RATE()":"infinite","WMATIC_TO_WBTC_RATE()":"infinite","WMATIC_TO_WETH_RATE()":"infinite","WNATIVE()":"3080","convert(address,address,uint256)":"infinite","convertScaled(address,address,uint256)":"infinite","rates(address,address)":"infinite","treasury()":"2904"}},"methodIdentifiers":{"USDC()":"89a30271","USDC_TO_USDT_RATE()":"b537d24b","USDC_TO_WBTC_RATE()":"02098719","USDC_TO_WETH_RATE()":"e2338e72","USDC_TO_WMATIC_RATE()":"5107e94e","USDT_TO_USDC_RATE()":"a58a7f8a","USDT_TO_WBTC_RATE()":"97db8e02","USDT_TO_WETH_RATE()":"443dc789","USDT_TO_WMATIC_RATE()":"1a1e4a1f","WBTC_TO_USDC_RATE()":"53ff493e","WBTC_TO_USDT_RATE()":"d135e3be","WBTC_TO_WETH_RATE()":"b9e93810","WBTC_TO_WMATIC_RATE()":"8e5139ed","WETH_TO_USDC_RATE()":"4039e687","WETH_TO_USDT_RATE()":"5fc8cd69","WETH_TO_WBTC_RATE()":"43146399","WETH_TO_WMATIC_RATE()":"e30f6892","WMATIC_TO_USDC_RATE()":"c0184983","WMATIC_TO_USDT_RATE()":"0e091762","WMATIC_TO_WBTC_RATE()":"187029b8","WMATIC_TO_WETH_RATE()":"ae3bcc96","WNATIVE()":"b381cf40","convert(address,address,uint256)":"248391ff","convertScaled(address,address,uint256)":"b27b5e75","rates(address,address)":"7b0cf44d","treasury()":"61d027b3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"usdt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wmatic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wbtc\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"USDC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_TO_USDT_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_TO_WBTC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_TO_WETH_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_TO_WMATIC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT_TO_USDC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT_TO_WBTC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT_TO_WETH_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT_TO_WMATIC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC_TO_USDC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC_TO_USDT_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC_TO_WETH_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC_TO_WMATIC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_TO_USDC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_TO_USDT_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_TO_WBTC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_TO_WMATIC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WMATIC_TO_USDC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WMATIC_TO_USDT_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WMATIC_TO_WBTC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WMATIC_TO_WETH_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WNATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"convert(address,address,uint256)\":{\"details\":\"Converts an amount of tokens from one token to another based on the current exchange rate.\",\"params\":{\"amount\":\"The amount of tokens to convert.\",\"fromToken\":\"The address of the token to convert from.\",\"toToken\":\"The address of the token to convert to.\"},\"returns\":{\"valuation\":\"The converted amount of tokens.\"}},\"convertScaled(address,address,uint256)\":{\"details\":\"Converts the given amount of tokens from one token to another using the 1inch exchange rate.\",\"params\":{\"amount\":\"The amount of tokens to convert.\",\"fromToken\":\"The address of the token to convert from.\",\"toToken\":\"The address of the token to convert to.\"},\"returns\":{\"valuation\":\"The converted amount of tokens.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/MockOracle.sol\":\"MockOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"},\"contracts/mock/MockOracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\nimport '@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol';\\r\\nimport '../interfaces/IBaluniV1Oracle.sol';\\r\\n\\r\\ncontract MockOracle is IBaluniV1Oracle {\\r\\n    mapping(address => mapping(address => uint256)) public rates;\\r\\n\\r\\n    // Hardcoded rates\\r\\n    uint256 public constant USDC_TO_WETH_RATE = 256897185735855109411507118;\\r\\n    uint256 public constant USDC_TO_USDT_RATE = 1000983989838925640;\\r\\n    uint256 public constant USDC_TO_WBTC_RATE = 1463657468947761;\\r\\n    uint256 public constant USDC_TO_WMATIC_RATE = 1351148249095651365340914098616;\\r\\n\\r\\n    uint256 public constant WMATIC_TO_USDT_RATE = 747767;\\r\\n    uint256 public constant WMATIC_TO_USDC_RATE = 733905;\\r\\n    uint256 public constant WMATIC_TO_WBTC_RATE = 1080;\\r\\n    uint256 public constant WMATIC_TO_WETH_RATE = 189625582664100;\\r\\n\\r\\n    uint256 public constant WBTC_TO_WMATIC_RATE = 924778033538811846038762973579739;\\r\\n    uint256 public constant WBTC_TO_USDT_RATE = 681360233243484009138;\\r\\n    uint256 public constant WBTC_TO_WETH_RATE = 175476470939493533556108593598;\\r\\n    uint256 public constant WBTC_TO_USDC_RATE = 683003374554512029990;\\r\\n\\r\\n    uint256 public constant USDT_TO_WBTC_RATE = 1457844841452943;\\r\\n    uint256 public constant USDT_TO_USDC_RATE = 998840977600189233;\\r\\n    uint256 public constant USDT_TO_WETH_RATE = 256884484348670192973112135;\\r\\n    uint256 public constant USDT_TO_WMATIC_RATE = 1351542478738482785523886658083;\\r\\n\\r\\n    uint256 public constant WETH_TO_WMATIC_RATE = 5273576410685072782753;\\r\\n    uint256 public constant WETH_TO_USDC_RATE = 3781382154;\\r\\n    uint256 public constant WETH_TO_USDT_RATE = 3749163887;\\r\\n    uint256 public constant WETH_TO_WBTC_RATE = 5561821;\\r\\n\\r\\n    address public USDC;\\r\\n    address public WNATIVE;\\r\\n\\r\\n    address public treasury;\\r\\n\\r\\n    constructor(address usdt, address _usdc, address _wmatic, address weth, address wbtc) {\\r\\n        WNATIVE = _wmatic;\\r\\n        USDC = _usdc;\\r\\n        treasury = msg.sender;\\r\\n\\r\\n        rates[usdt][USDC] = USDT_TO_USDC_RATE;\\r\\n        rates[usdt][WNATIVE] = USDT_TO_WMATIC_RATE;\\r\\n        rates[usdt][wbtc] = USDT_TO_WBTC_RATE;\\r\\n        rates[usdt][weth] = USDT_TO_WETH_RATE;\\r\\n\\r\\n        rates[wbtc][usdt] = WBTC_TO_USDT_RATE;\\r\\n        rates[wbtc][WNATIVE] = WBTC_TO_WMATIC_RATE;\\r\\n        rates[wbtc][USDC] = WBTC_TO_USDC_RATE;\\r\\n        rates[wbtc][weth] = WBTC_TO_WETH_RATE;\\r\\n\\r\\n        rates[USDC][usdt] = USDC_TO_USDT_RATE;\\r\\n        rates[USDC][wbtc] = USDC_TO_WBTC_RATE;\\r\\n        rates[USDC][WNATIVE] = USDC_TO_WMATIC_RATE;\\r\\n        rates[USDC][weth] = USDC_TO_WETH_RATE;\\r\\n\\r\\n        rates[WNATIVE][wbtc] = WMATIC_TO_WBTC_RATE;\\r\\n        rates[WNATIVE][weth] = WMATIC_TO_WETH_RATE;\\r\\n        rates[WNATIVE][USDC] = WMATIC_TO_USDC_RATE;\\r\\n        rates[WNATIVE][usdt] = WMATIC_TO_USDT_RATE;\\r\\n\\r\\n        rates[weth][WNATIVE] = WETH_TO_WMATIC_RATE;\\r\\n        rates[weth][USDC] = WETH_TO_USDC_RATE;\\r\\n        rates[weth][usdt] = WETH_TO_USDC_RATE;\\r\\n        rates[weth][wbtc] = WETH_TO_WBTC_RATE;\\r\\n    }\\r\\n    /**\\r\\n     * @dev Converts an amount of tokens from one token to another based on the current exchange rate.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param toToken The address of the token to convert to.\\r\\n     * @param amount The amount of tokens to convert.\\r\\n     * @return valuation The converted amount of tokens.\\r\\n     */\\r\\n    function convert(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view override returns (uint256 valuation) {\\r\\n        uint256 rate;\\r\\n\\r\\n        uint8 fromDecimal = IERC20Metadata(fromToken).decimals();\\r\\n        uint8 toDecimal = IERC20Metadata(toToken).decimals();\\r\\n\\r\\n        rate = rates[address(fromToken)][address(toToken)];\\r\\n        rate = (rate * (10 ** fromDecimal)) / (10 ** toDecimal);\\r\\n\\r\\n        uint256 factor;\\r\\n        if (fromDecimal >= toDecimal) {\\r\\n            factor = 10 ** (fromDecimal - toDecimal);\\r\\n            valuation = ((amount / factor) * rate) / 1e18;\\r\\n        } else {\\r\\n            factor = 10 ** (toDecimal - fromDecimal);\\r\\n            valuation = ((amount * factor) * rate) / 1e18;\\r\\n        }\\r\\n\\r\\n        return valuation;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the given amount of tokens from one token to another using the 1inch exchange rate.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param toToken The address of the token to convert to.\\r\\n     * @param amount The amount of tokens to convert.\\r\\n     * @return valuation The converted amount of tokens.\\r\\n     */\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view override returns (uint256 valuation) {\\r\\n        uint256 rate;\\r\\n\\r\\n        uint8 fromDecimal = IERC20Metadata(fromToken).decimals();\\r\\n        uint8 toDecimal = IERC20Metadata(toToken).decimals();\\r\\n\\r\\n        rate = rates[address(fromToken)][address(toToken)];\\r\\n\\r\\n        rate = (rate * (10 ** fromDecimal)) / (10 ** toDecimal);\\r\\n\\r\\n        uint256 scalingFactor;\\r\\n        uint256 tokenAmount;\\r\\n        uint256 finalScalingFactor = 10 ** (18 - toDecimal);\\r\\n\\r\\n        if (fromDecimal == toDecimal) {\\r\\n            valuation = (amount * rate) / 1e18;\\r\\n        } else if (fromDecimal > toDecimal) {\\r\\n            scalingFactor = 10 ** (fromDecimal - toDecimal);\\r\\n            tokenAmount = amount / scalingFactor;\\r\\n            valuation = (tokenAmount * rate) / 1e18;\\r\\n        } else {\\r\\n            scalingFactor = 10 ** (toDecimal - fromDecimal);\\r\\n            tokenAmount = amount * scalingFactor;\\r\\n            valuation = (tokenAmount * rate) / 1e18;\\r\\n        }\\r\\n\\r\\n        valuation = valuation * finalScalingFactor;\\r\\n\\r\\n        return valuation;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x68b46a4454a3b3eb4c73e184fe313d668a5e148dbacd03da1079288ddfc2b5b3\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":10069,"contract":"contracts/mock/MockOracle.sol:MockOracle","label":"rates","offset":0,"slot":"0","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":10131,"contract":"contracts/mock/MockOracle.sol:MockOracle","label":"USDC","offset":0,"slot":"1","type":"t_address"},{"astId":10133,"contract":"contracts/mock/MockOracle.sol:MockOracle","label":"WNATIVE","offset":0,"slot":"2","type":"t_address"},{"astId":10135,"contract":"contracts/mock/MockOracle.sol:MockOracle","label":"treasury","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/mock/MockRebalancer.sol":{"MockRebalancer":{"abi":[{"inputs":[{"internalType":"address","name":"usdt","type":"address"},{"internalType":"address","name":"_usdc","type":"address"},{"internalType":"address","name":"_wmatic","type":"address"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"address","name":"wbtc","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TO_USDT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TO_WBTC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TO_WETH_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TO_WMATIC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_TO_USDC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_TO_WBTC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_TO_WETH_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_TO_WMATIC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC_TO_USDC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC_TO_USDT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC_TO_WETH_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC_TO_WMATIC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_TO_USDC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_TO_USDT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_TO_WBTC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH_TO_WMATIC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC_TO_USDC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC_TO_USDT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC_TO_WBTC_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WMATIC_TO_WETH_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"name":"checkRebalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"fromToken","type":"address"},{"internalType":"contract IERC20","name":"toToken","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"fromToken","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"getRateToEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"rates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":203,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_addresst_addresst_addresst_address_fromMemory":{"entryPoint":218,"id":null,"parameterSlots":2,"returnSlots":5},"allocate_memory":{"entryPoint":135,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":56,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_address":{"entryPoint":171,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":544,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1000983989838925640_by":{"entryPoint":1072,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1457844841452943_by":{"entryPoint":751,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1463657468947761_by":{"entryPoint":1123,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_175476470939493533556108593598_by":{"entryPoint":1016,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_189625582664100_by":{"entryPoint":1328,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_256884484348670192973112135_by":{"entryPoint":801,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_256897185735855109411507118_by":{"entryPoint":1229,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3781382154_by":{"entryPoint":1522,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_5273576410685072782753_by":{"entryPoint":1469,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_5561821_by":{"entryPoint":1569,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_681360233243484009138_by":{"entryPoint":855,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_683003374554512029990_by":{"entryPoint":964,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_733905_by":{"entryPoint":1377,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_924778033538811846038762973579739_by":{"entryPoint":907,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_998840977600189233_by":{"entryPoint":463,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":695,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":1173,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":1423,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":1283,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":160,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":466,"id":null,"parameterSlots":1,"returnSlots":1},"constant_USDC_TO_USDT_RATE":{"entryPoint":1103,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WBTC_RATE":{"entryPoint":1154,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WETH_RATE":{"entryPoint":1260,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WMATIC_RATE":{"entryPoint":1204,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_USDC_RATE":{"entryPoint":497,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WBTC_RATE":{"entryPoint":782,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WETH_RATE":{"entryPoint":832,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WMATIC_RATE":{"entryPoint":726,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_USDC_RATE":{"entryPoint":995,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_USDT_RATE":{"entryPoint":886,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_WETH_RATE":{"entryPoint":1047,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_WMATIC_RATE":{"entryPoint":938,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_USDC_RATE":{"entryPoint":1553,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_WBTC_RATE":{"entryPoint":1600,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_WMATIC_RATE":{"entryPoint":1500,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_USDC_RATE":{"entryPoint":1408,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_USDT_RATE":{"entryPoint":1454,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_WBTC_RATE":{"entryPoint":1314,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_WETH_RATE":{"entryPoint":1359,"id":null,"parameterSlots":0,"returnSlots":1},"constructor_MockRebalancer":{"entryPoint":1615,"id":10855,"parameterSlots":5,"returnSlots":0},"convert_address_to_address":{"entryPoint":416,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1000983989838925640_by_1_to_uint256":{"entryPoint":1075,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1080_by_1_to_uint256":{"entryPoint":1286,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1351148249095651365340914098616_by_1_to_uint256":{"entryPoint":1176,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1351542478738482785523886658083_by_1_to_uint256":{"entryPoint":698,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1457844841452943_by_1_to_uint256":{"entryPoint":754,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1463657468947761_by_1_to_uint256":{"entryPoint":1126,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_175476470939493533556108593598_by_1_to_uint256":{"entryPoint":1019,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_189625582664100_by_1_to_uint256":{"entryPoint":1331,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_256884484348670192973112135_by_1_to_uint256":{"entryPoint":804,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_256897185735855109411507118_by_1_to_uint256":{"entryPoint":1232,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_5561821_by_1_to_uint256":{"entryPoint":1572,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_681360233243484009138_by_1_to_uint256":{"entryPoint":858,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_683003374554512029990_by_1_to_uint256":{"entryPoint":967,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_733905_by_1_to_uint256":{"entryPoint":1380,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_747767_by_1_to_uint256":{"entryPoint":1426,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_924778033538811846038762973579739_by_1_to_uint256":{"entryPoint":910,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_998840977600189233_by_1_to_uint256":{"entryPoint":469,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":1525,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":1472,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":404,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":376,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":632,"id":null,"parameterSlots":1,"returnSlots":1},"copy_arguments_for_constructor_object_MockRebalancer":{"entryPoint":304,"id":null,"parameterSlots":0,"returnSlots":5},"extract_from_storage_value_offsett_address":{"entryPoint":555,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":96,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":373,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":517,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":588,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":76,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":428,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":660,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":575,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":62,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":156,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":66,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":341,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":539,"id":null,"parameterSlots":1,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":610,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":346,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":431,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":663,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":183,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"6080604052346100335761001d610014610130565b9392909261064f565b610025610038565b6114fd6109e582396114fd90f35b61003e565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061006a90610042565b810190811060018060401b0382111761008257604052565b61004c565b9061009a610093610038565b9283610060565b565b5f80fd5b60018060a01b031690565b6100b4906100a0565b90565b6100c0816100ab565b036100c757565b5f80fd5b905051906100d8826100b7565b565b919060a08382031261012b576100f2815f85016100cb565b9261010082602083016100cb565b9261012861011184604085016100cb565b9361011f81606086016100cb565b936080016100cb565b90565b61009c565b61014e611ee28038038061014381610087565b9283398101906100da565b9091929394565b5f1b90565b9061016b60018060a01b0391610155565b9181191691161790565b90565b61018c610187610191926100a0565b610175565b6100a0565b90565b61019d90610178565b90565b6101a990610194565b90565b90565b906101c46101bf6101cb926101a0565b6101ac565b825461015a565b9055565b90565b90565b6101e96101e46101ee926101cf565b610175565b6101d2565b90565b610202670ddc9893b8f693316101d5565b90565b9061020f906101a0565b5f5260205260405f2090565b5f1c90565b60018060a01b031690565b61023761023c9161021b565b610220565b90565b610249905461022b565b90565b90610256906101a0565b5f5260205260405f2090565b9061026e5f1991610155565b9181191691161790565b61028c610287610291926101d2565b610175565b6101d2565b90565b90565b906102ac6102a76102b392610278565b610294565b8254610262565b9055565b90565b6102ce6102c96102d3926102b7565b610175565b6101d2565b90565b6102ec6c110f11bc46bc3efcc5b8ff12236102ba565b90565b90565b61030661030161030b926102ef565b610175565b6101d2565b90565b61031e66052de6f3e9958f6102f2565b90565b90565b61033861033361033d92610321565b610175565b6101d2565b90565b6103546ad47d67cce9223fad7de347610324565b90565b90565b61036e61036961037392610357565b610175565b6101d2565b90565b6103886824efc5d2223b2ab2b261035a565b90565b90565b6103a261039d6103a79261038b565b610175565b6101d2565b90565b6103c16d2d9856fc421a9fd095f8b44c49db61038e565b90565b90565b6103db6103d66103e0926103c4565b610175565b6101d2565b90565b6103f5682506936e734ac2f9266103c7565b90565b90565b61040f61040a610414926103f8565b610175565b6101d2565b90565b61042d6c0236febc16a26943df322289be6103fb565b90565b90565b61044761044261044c92610430565b610175565b6101d2565b90565b610460670de435a2a433cf48610433565b90565b90565b61047a61047561047f92610463565b610175565b6101d2565b90565b610492660533304f826d31610466565b90565b90565b6104ac6104a76104b192610495565b610175565b6101d2565b90565b6104ca6c110dcba2e6f97b2a41a7eba1b8610498565b90565b90565b6104e46104df6104e9926104cd565b610175565b6101d2565b90565b6105006ad4801858112018c8850bae6104d0565b90565b90565b61051a61051561051f92610503565b610175565b6101d2565b90565b61052d610438610506565b90565b90565b61054761054261054c92610530565b610175565b6101d2565b90565b61055e65ac76a57eb9a4610533565b90565b90565b61057861057361057d92610561565b610175565b6101d2565b90565b61058c620b32d1610564565b90565b90565b6105a66105a16105ab9261058f565b610175565b6101d2565b90565b6105ba620b68f7610592565b90565b90565b6105d46105cf6105d9926105bd565b610175565b6101d2565b90565b6105ef69011de1930ce9ab44b5a16105c0565b90565b90565b61060961060461060e926105f2565b610175565b6101d2565b90565b61061e63e163500a6105f5565b90565b90565b61063861063361063d92610621565b610175565b6101d2565b90565b61064c6254dddd610624565b90565b6109c6906106706109e296936106696109dd9660026101af565b60016101af565b61067b3360036101af565b6106a96106866101f1565b6106a46106945f8590610205565b61069e600161023f565b9061024c565b610297565b6106d76106b46102d6565b6106d26106c25f8590610205565b6106cc600261023f565b9061024c565b610297565b6106fc6106e261030e565b6106f76106f05f8590610205565b869061024c565b610297565b610721610707610340565b61071c6107155f8590610205565b889061024c565b610297565b61074661072c610376565b61074161073a5f8790610205565b849061024c565b610297565b6107746107516103aa565b61076f61075f5f8790610205565b610769600261023f565b9061024c565b610297565b6107a261077f6103e3565b61079d61078d5f8790610205565b610797600161023f565b9061024c565b610297565b6107c76107ad610417565b6107c26107bb5f8790610205565b889061024c565b610297565b6107f56107d261044f565b6107f06107e95f6107e3600161023f565b90610205565b849061024c565b610297565b610823610800610482565b61081e6108175f610811600161023f565b90610205565b869061024c565b610297565b61085a61082e6104b4565b6108556108455f61083f600161023f565b90610205565b61084f600261023f565b9061024c565b610297565b6108886108656104ec565b61088361087c5f610876600161023f565b90610205565b889061024c565b610297565b6108b6610893610522565b6108b16108aa5f6108a4600261023f565b90610205565b869061024c565b610297565b6108e46108c161054f565b6108df6108d85f6108d2600261023f565b90610205565b889061024c565b610297565b61091b6108ef610580565b6109166109065f610900600261023f565b90610205565b610910600161023f565b9061024c565b610297565b6109496109266105ae565b61094461093d5f610937600261023f565b90610205565b849061024c565b610297565b6109776109546105dc565b6109726109625f8990610205565b61096c600261023f565b9061024c565b610297565b6109a5610982610611565b6109a06109905f8990610205565b61099a600161023f565b9061024c565b610297565b6109c16109b0610611565b916109bc5f8890610205565b61024c565b610297565b6109d86109d1610640565b935f610205565b61024c565b610297565b56fe60806040526004361015610013575b61128f565b61001d5f3561021c565b8063020987191461021757806304cc7325146102125780630e0917621461020d578063187029b81461020857806318cdc49a146102035780631a1e4a1f146101fe5780633b19e84a146101f95780634039e687146101f457806343146399146101ef578063443dc789146101ea5780635107e94e146101e557806353ff493e146101e05780635911fb9a146101db5780635fc8cd69146101d657806361d027b3146101d15780637b0cf44d146101cc5780637de4fd10146101c7578063802431fb146101c257806384db1dfb146101bd57806389a30271146101b85780638e5139ed146101b357806397db8e02146101ae578063a58a7f8a146101a9578063ae3bcc96146101a4578063b381cf401461019f578063b537d24b1461019a578063b9e9381014610195578063c018498314610190578063d135e3be1461018b578063e2338e7214610186578063e30f6892146101815763f0f442600361000e5761125c565b611209565b611194565b61111e565b6110aa565b61103c565b610fc4565b610f51565b610f0d565b610e9c565b610e29565b610db7565b610d3e565b610cfd565b610c3d565b610bcd565b610b18565b610a0d565b610986565b610918565b61085e565b6107ea565b610772565b6106fc565b61068e565b61061f565b6105ea565b61056b565b6103fb565b61038e565b610320565b6102a4565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261023a57565b61022c565b90565b90565b90565b61025c6102576102619261023f565b610245565b610242565b90565b610274660533304f826d31610248565b90565b61027f610264565b90565b61028b90610242565b9052565b91906102a2905f60208501940190610282565b565b346102d4576102b4366004610230565b6102d06102bf610277565b6102c7610222565b9182918261028f565b0390f35b610228565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102fb906102d9565b90565b610307906102f2565b9052565b919061031e905f602085019401906102fe565b565b3461035057610330366004610230565b61034c61033b6112c2565b610343610222565b9182918261030b565b0390f35b610228565b90565b61036c61036761037192610355565b610245565b610242565b90565b610380620b68f7610358565b90565b61038b610374565b90565b346103be5761039e366004610230565b6103ba6103a9610383565b6103b1610222565b9182918261028f565b0390f35b610228565b90565b6103da6103d56103df926103c3565b610245565b610242565b90565b6103ed6104386103c6565b90565b6103f86103e2565b90565b3461042b5761040b366004610230565b6104276104166103f0565b61041e610222565b9182918261028f565b0390f35b610228565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b909182601f8301121561047a5781359167ffffffffffffffff831161047557602001926020830284011161047057565b61043c565b610438565b610434565b909182601f830112156104b95781359167ffffffffffffffff83116104b45760200192602083028401116104af57565b61043c565b610438565b610434565b9060608282031261053f575f82013567ffffffffffffffff811161053a57816104e8918401610440565b929093602082013567ffffffffffffffff8111610535578361050b91840161047f565b929093604082013567ffffffffffffffff81116105305761052c920161047f565b9091565b610430565b610430565b610430565b61022c565b151590565b61055290610544565b9052565b9190610569905f60208501940190610549565b565b346105a25761059e61058d6105813660046104be565b949390939291926112db565b610595610222565b91829182610556565b0390f35b610228565b90565b6105be6105b96105c3926105a7565b610245565b610242565b90565b6105dc6c110f11bc46bc3efcc5b8ff12236105aa565b90565b6105e76105c6565b90565b3461061a576105fa366004610230565b6106166106056105df565b61060d610222565b9182918261028f565b0390f35b610228565b3461064f5761062f366004610230565b61064b61063a611315565b610642610222565b9182918261030b565b0390f35b610228565b90565b61066b61066661067092610654565b610245565b610242565b90565b61068063e163500a610657565b90565b61068b610673565b90565b346106be5761069e366004610230565b6106ba6106a9610683565b6106b1610222565b9182918261028f565b0390f35b610228565b90565b6106da6106d56106df926106c3565b610245565b610242565b90565b6106ee6254dddd6106c6565b90565b6106f96106e2565b90565b3461072c5761070c366004610230565b6107286107176106f1565b61071f610222565b9182918261028f565b0390f35b610228565b90565b61074861074361074d92610731565b610245565b610242565b90565b6107646ad47d67cce9223fad7de347610734565b90565b61076f610750565b90565b346107a257610782366004610230565b61079e61078d610767565b610795610222565b9182918261028f565b0390f35b610228565b90565b6107be6107b96107c3926107a7565b610245565b610242565b90565b6107dc6c110dcba2e6f97b2a41a7eba1b86107aa565b90565b6107e76107c6565b90565b3461081a576107fa366004610230565b6108166108056107df565b61080d610222565b9182918261028f565b0390f35b610228565b90565b61083661083161083b9261081f565b610245565b610242565b90565b610850682506936e734ac2f926610822565b90565b61085b61083e565b90565b3461088e5761086e366004610230565b61088a610879610853565b610881610222565b9182918261028f565b0390f35b610228565b61089c816102f2565b036108a357565b5f80fd5b905035906108b482610893565b565b6108bf81610242565b036108c657565b5f80fd5b905035906108d7826108b6565b565b909160608284031261090e5761090b6108f4845f85016108a7565b9361090281602086016108a7565b936040016108ca565b90565b61022c565b5f0190565b346109475761093161092b3660046108d9565b916113a4565b610939610222565b8061094381610913565b0390f35b610228565b90565b61096361095e6109689261094c565b610245565b610242565b90565b61097863df77b36f61094f565b90565b61098361096b565b90565b346109b657610996366004610230565b6109b26109a161097b565b6109a9610222565b9182918261028f565b0390f35b610228565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6109e89060086109ed93026109bb565b6109bf565b90565b906109fb91546109d8565b90565b610a0a60035f906109f0565b90565b34610a3d57610a1d366004610230565b610a39610a286109fe565b610a30610222565b9182918261030b565b0390f35b610228565b9190604083820312610a6a5780610a5e610a67925f86016108a7565b936020016108a7565b90565b61022c565b610a83610a7e610a88926102d9565b610245565b6102d9565b90565b610a9490610a6f565b90565b610aa090610a8b565b90565b90610aad90610a97565b5f5260205260405f2090565b90610ac390610a97565b5f5260205260405f2090565b90565b610ae2906008610ae793026109bb565b610acf565b90565b90610af59154610ad2565b90565b610b10610b1592610b0b5f935f94610aa3565b610ab9565b610aea565b90565b34610b4957610b45610b34610b2e366004610a42565b90610af8565b610b3c610222565b9182918261028f565b0390f35b610228565b610b57906102f2565b90565b610b6381610b4e565b03610b6a57565b5f80fd5b90503590610b7b82610b5a565b565b610b8681610544565b03610b8d57565b5f80fd5b90503590610b9e82610b7d565b565b9190604083820312610bc85780610bbc610bc5925f8601610b6e565b93602001610b91565b90565b61022c565b34610bfe57610bfa610be9610be3366004610ba0565b906113f4565b610bf1610222565b9182918261028f565b0390f35b610228565b9091606082840312610c3857610c35610c1e845f8501610b6e565b93610c2c8160208601610b6e565b93604001610b91565b90565b61022c565b34610c6e57610c6a610c59610c53366004610c03565b91611431565b610c61610222565b9182918261028f565b0390f35b610228565b909160a082840312610cf8575f82013567ffffffffffffffff8111610cf35783610c9e918401610440565b929093602082013567ffffffffffffffff8111610cee5781610cc191840161047f565b929093610ceb610cd484604085016108a7565b93610ce281606086016108a7565b936080016108ca565b90565b610430565b610430565b61022c565b34610d2a57610d0d366004610c73565b50505050505050610d1c610222565b80610d2681610913565b0390f35b610228565b610d3b60015f906109f0565b90565b34610d6e57610d4e366004610230565b610d6a610d59610d2f565b610d61610222565b9182918261030b565b0390f35b610228565b90565b610d8a610d85610d8f92610d73565b610245565b610242565b90565b610da96d2d9856fc421a9fd095f8b44c49db610d76565b90565b610db4610d92565b90565b34610de757610dc7366004610230565b610de3610dd2610dac565b610dda610222565b9182918261028f565b0390f35b610228565b90565b610e03610dfe610e0892610dec565b610245565b610242565b90565b610e1b66052de6f3e9958f610def565b90565b610e26610e0b565b90565b34610e5957610e39366004610230565b610e55610e44610e1e565b610e4c610222565b9182918261028f565b0390f35b610228565b90565b610e75610e70610e7a92610e5e565b610245565b610242565b90565b610e8e670ddc9893b8f69331610e61565b90565b610e99610e7d565b90565b34610ecc57610eac366004610230565b610ec8610eb7610e91565b610ebf610222565b9182918261028f565b0390f35b610228565b90565b610ee8610ee3610eed92610ed1565b610245565b610242565b90565b610eff65ac76a57eb9a4610ed4565b90565b610f0a610ef0565b90565b34610f3d57610f1d366004610230565b610f39610f28610f02565b610f30610222565b9182918261028f565b0390f35b610228565b610f4e60025f906109f0565b90565b34610f8157610f61366004610230565b610f7d610f6c610f42565b610f74610222565b9182918261030b565b0390f35b610228565b90565b610f9d610f98610fa292610f86565b610245565b610242565b90565b610fb6670de435a2a433cf48610f89565b90565b610fc1610fa5565b90565b34610ff457610fd4366004610230565b610ff0610fdf610fb9565b610fe7610222565b9182918261028f565b0390f35b610228565b90565b61101061100b61101592610ff9565b610245565b610242565b90565b61102e6c0236febc16a26943df322289be610ffc565b90565b611039611018565b90565b3461106c5761104c366004610230565b611068611057611031565b61105f610222565b9182918261028f565b0390f35b610228565b90565b61108861108361108d92611071565b610245565b610242565b90565b61109c620b32d1611074565b90565b6110a7611090565b90565b346110da576110ba366004610230565b6110d66110c561109f565b6110cd610222565b9182918261028f565b0390f35b610228565b90565b6110f66110f16110fb926110df565b610245565b610242565b90565b6111106824efc5d2223b2ab2b26110e2565b90565b61111b6110fe565b90565b3461114e5761112e366004610230565b61114a611139611113565b611141610222565b9182918261028f565b0390f35b610228565b90565b61116a61116561116f92611153565b610245565b610242565b90565b6111866ad4801858112018c8850bae611156565b90565b611191611172565b90565b346111c4576111a4366004610230565b6111c06111af611189565b6111b7610222565b9182918261028f565b0390f35b610228565b90565b6111e06111db6111e5926111c9565b610245565b610242565b90565b6111fb69011de1930ce9ab44b5a16111cc565b90565b6112066111e8565b90565b3461123957611219366004610230565b6112356112246111fe565b61122c610222565b9182918261028f565b0390f35b610228565b9060208282031261125757611254915f016108a7565b90565b61022c565b3461128a5761127461126f36600461123e565b6114ba565b61127c610222565b8061128681610913565b0390f35b610228565b5f80fd5b5f90565b90565b6112ae6112a96112b392611297565b610245565b6102d9565b90565b6112bf9061129a565b90565b6112ca611293565b506112d45f6112b6565b90565b5f90565b5050505050506112e96112d7565b50600190565b5f1c90565b611300611305916112ef565b6109bf565b90565b61131290546112f4565b90565b61131d611293565b506113286003611308565b90565b5f1b90565b9061135b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9161132b565b9181191691161790565b61137961137461137e92610242565b610245565b610242565b90565b90565b906113996113946113a092611365565b611381565b8254611330565b9055565b906113bc906113b76113c194935f610aa3565b610ab9565b611384565b565b5f90565b6113d090610a8b565b90565b6113df6113e4916112ef565b610acf565b90565b6113f190546113d3565b90565b61142e9150611419611429916114086113c3565b506114135f916113c7565b90610aa3565b6114236002611308565b90610ab9565b6113e7565b90565b61146b92509061146061145a611466936114496113c3565b506114545f916113c7565b90610aa3565b916113c7565b90610ab9565b6113e7565b90565b9061148d73ffffffffffffffffffffffffffffffffffffffff9161132b565b9181191691161790565b90565b906114af6114aa6114b692610a97565b611497565b825461146e565b9055565b6114c590600361149a565b56fea264697066735822122099b148d23a6214657c794d57724d06efc1cc79cf02783f93512a79710750c1b364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x33 JUMPI PUSH2 0x1D PUSH2 0x14 PUSH2 0x130 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x25 PUSH2 0x38 JUMP JUMPDEST PUSH2 0x14FD PUSH2 0x9E5 DUP3 CODECOPY PUSH2 0x14FD SWAP1 RETURN JUMPDEST PUSH2 0x3E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x6A SWAP1 PUSH2 0x42 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x82 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST SWAP1 PUSH2 0x9A PUSH2 0x93 PUSH2 0x38 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x60 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xB4 SWAP1 PUSH2 0xA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC0 DUP2 PUSH2 0xAB JUMP JUMPDEST SUB PUSH2 0xC7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD8 DUP3 PUSH2 0xB7 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0x12B JUMPI PUSH2 0xF2 DUP2 PUSH0 DUP6 ADD PUSH2 0xCB JUMP JUMPDEST SWAP3 PUSH2 0x100 DUP3 PUSH1 0x20 DUP4 ADD PUSH2 0xCB JUMP JUMPDEST SWAP3 PUSH2 0x128 PUSH2 0x111 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0xCB JUMP JUMPDEST SWAP4 PUSH2 0x11F DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0xCB JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0xCB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9C JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1EE2 DUP1 CODESIZE SUB DUP1 PUSH2 0x143 DUP2 PUSH2 0x87 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH2 0xDA JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x16B PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 PUSH2 0x155 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18C PUSH2 0x187 PUSH2 0x191 SWAP3 PUSH2 0xA0 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0xA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x19D SWAP1 PUSH2 0x178 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A9 SWAP1 PUSH2 0x194 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1C4 PUSH2 0x1BF PUSH2 0x1CB SWAP3 PUSH2 0x1A0 JUMP JUMPDEST PUSH2 0x1AC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15A JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E9 PUSH2 0x1E4 PUSH2 0x1EE SWAP3 PUSH2 0x1CF JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x202 PUSH8 0xDDC9893B8F69331 PUSH2 0x1D5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20F SWAP1 PUSH2 0x1A0 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x237 PUSH2 0x23C SWAP2 PUSH2 0x21B JUMP JUMPDEST PUSH2 0x220 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x249 SWAP1 SLOAD PUSH2 0x22B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x256 SWAP1 PUSH2 0x1A0 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x26E PUSH0 NOT SWAP2 PUSH2 0x155 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x28C PUSH2 0x287 PUSH2 0x291 SWAP3 PUSH2 0x1D2 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2AC PUSH2 0x2A7 PUSH2 0x2B3 SWAP3 PUSH2 0x278 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x262 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CE PUSH2 0x2C9 PUSH2 0x2D3 SWAP3 PUSH2 0x2B7 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2EC PUSH13 0x110F11BC46BC3EFCC5B8FF1223 PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x306 PUSH2 0x301 PUSH2 0x30B SWAP3 PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31E PUSH7 0x52DE6F3E9958F PUSH2 0x2F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x338 PUSH2 0x333 PUSH2 0x33D SWAP3 PUSH2 0x321 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x354 PUSH11 0xD47D67CCE9223FAD7DE347 PUSH2 0x324 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36E PUSH2 0x369 PUSH2 0x373 SWAP3 PUSH2 0x357 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x388 PUSH9 0x24EFC5D2223B2AB2B2 PUSH2 0x35A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3A2 PUSH2 0x39D PUSH2 0x3A7 SWAP3 PUSH2 0x38B JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3C1 PUSH14 0x2D9856FC421A9FD095F8B44C49DB PUSH2 0x38E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DB PUSH2 0x3D6 PUSH2 0x3E0 SWAP3 PUSH2 0x3C4 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3F5 PUSH9 0x2506936E734AC2F926 PUSH2 0x3C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x40F PUSH2 0x40A PUSH2 0x414 SWAP3 PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x42D PUSH13 0x236FEBC16A26943DF322289BE PUSH2 0x3FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x447 PUSH2 0x442 PUSH2 0x44C SWAP3 PUSH2 0x430 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x460 PUSH8 0xDE435A2A433CF48 PUSH2 0x433 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47A PUSH2 0x475 PUSH2 0x47F SWAP3 PUSH2 0x463 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x492 PUSH7 0x533304F826D31 PUSH2 0x466 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4AC PUSH2 0x4A7 PUSH2 0x4B1 SWAP3 PUSH2 0x495 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4CA PUSH13 0x110DCBA2E6F97B2A41A7EBA1B8 PUSH2 0x498 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4E4 PUSH2 0x4DF PUSH2 0x4E9 SWAP3 PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x500 PUSH11 0xD4801858112018C8850BAE PUSH2 0x4D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x51A PUSH2 0x515 PUSH2 0x51F SWAP3 PUSH2 0x503 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52D PUSH2 0x438 PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x547 PUSH2 0x542 PUSH2 0x54C SWAP3 PUSH2 0x530 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x55E PUSH6 0xAC76A57EB9A4 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x578 PUSH2 0x573 PUSH2 0x57D SWAP3 PUSH2 0x561 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x58C PUSH3 0xB32D1 PUSH2 0x564 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x5A1 PUSH2 0x5AB SWAP3 PUSH2 0x58F JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5BA PUSH3 0xB68F7 PUSH2 0x592 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D4 PUSH2 0x5CF PUSH2 0x5D9 SWAP3 PUSH2 0x5BD JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EF PUSH10 0x11DE1930CE9AB44B5A1 PUSH2 0x5C0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x609 PUSH2 0x604 PUSH2 0x60E SWAP3 PUSH2 0x5F2 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x61E PUSH4 0xE163500A PUSH2 0x5F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x638 PUSH2 0x633 PUSH2 0x63D SWAP3 PUSH2 0x621 JUMP JUMPDEST PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x64C PUSH3 0x54DDDD PUSH2 0x624 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9C6 SWAP1 PUSH2 0x670 PUSH2 0x9E2 SWAP7 SWAP4 PUSH2 0x669 PUSH2 0x9DD SWAP7 PUSH1 0x2 PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x67B CALLER PUSH1 0x3 PUSH2 0x1AF JUMP JUMPDEST PUSH2 0x6A9 PUSH2 0x686 PUSH2 0x1F1 JUMP JUMPDEST PUSH2 0x6A4 PUSH2 0x694 PUSH0 DUP6 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x69E PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x6D7 PUSH2 0x6B4 PUSH2 0x2D6 JUMP JUMPDEST PUSH2 0x6D2 PUSH2 0x6C2 PUSH0 DUP6 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x6CC PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x6E2 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x6F7 PUSH2 0x6F0 PUSH0 DUP6 SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x721 PUSH2 0x707 PUSH2 0x340 JUMP JUMPDEST PUSH2 0x71C PUSH2 0x715 PUSH0 DUP6 SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x746 PUSH2 0x72C PUSH2 0x376 JUMP JUMPDEST PUSH2 0x741 PUSH2 0x73A PUSH0 DUP8 SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x774 PUSH2 0x751 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x76F PUSH2 0x75F PUSH0 DUP8 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x769 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x7A2 PUSH2 0x77F PUSH2 0x3E3 JUMP JUMPDEST PUSH2 0x79D PUSH2 0x78D PUSH0 DUP8 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x797 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x7C7 PUSH2 0x7AD PUSH2 0x417 JUMP JUMPDEST PUSH2 0x7C2 PUSH2 0x7BB PUSH0 DUP8 SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x7F5 PUSH2 0x7D2 PUSH2 0x44F JUMP JUMPDEST PUSH2 0x7F0 PUSH2 0x7E9 PUSH0 PUSH2 0x7E3 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x823 PUSH2 0x800 PUSH2 0x482 JUMP JUMPDEST PUSH2 0x81E PUSH2 0x817 PUSH0 PUSH2 0x811 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x85A PUSH2 0x82E PUSH2 0x4B4 JUMP JUMPDEST PUSH2 0x855 PUSH2 0x845 PUSH0 PUSH2 0x83F PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x84F PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x888 PUSH2 0x865 PUSH2 0x4EC JUMP JUMPDEST PUSH2 0x883 PUSH2 0x87C PUSH0 PUSH2 0x876 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x8B6 PUSH2 0x893 PUSH2 0x522 JUMP JUMPDEST PUSH2 0x8B1 PUSH2 0x8AA PUSH0 PUSH2 0x8A4 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x8E4 PUSH2 0x8C1 PUSH2 0x54F JUMP JUMPDEST PUSH2 0x8DF PUSH2 0x8D8 PUSH0 PUSH2 0x8D2 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x91B PUSH2 0x8EF PUSH2 0x580 JUMP JUMPDEST PUSH2 0x916 PUSH2 0x906 PUSH0 PUSH2 0x900 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x910 PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x949 PUSH2 0x926 PUSH2 0x5AE JUMP JUMPDEST PUSH2 0x944 PUSH2 0x93D PUSH0 PUSH2 0x937 PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x205 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x977 PUSH2 0x954 PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x972 PUSH2 0x962 PUSH0 DUP10 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x96C PUSH1 0x2 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x9A5 PUSH2 0x982 PUSH2 0x611 JUMP JUMPDEST PUSH2 0x9A0 PUSH2 0x990 PUSH0 DUP10 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x99A PUSH1 0x1 PUSH2 0x23F JUMP JUMPDEST SWAP1 PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x9C1 PUSH2 0x9B0 PUSH2 0x611 JUMP JUMPDEST SWAP2 PUSH2 0x9BC PUSH0 DUP9 SWAP1 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x9D8 PUSH2 0x9D1 PUSH2 0x640 JUMP JUMPDEST SWAP4 PUSH0 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x24C JUMP JUMPDEST PUSH2 0x297 JUMP JUMPDEST JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x128F JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x2098719 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x4CC7325 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xE091762 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x187029B8 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x18CDC49A EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x1A1E4A1F EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x3B19E84A EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x4039E687 EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x43146399 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x443DC789 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x5107E94E EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x53FF493E EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x5911FB9A EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x5FC8CD69 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x61D027B3 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x7B0CF44D EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x7DE4FD10 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x802431FB EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x84DB1DFB EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x89A30271 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x8E5139ED EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x97DB8E02 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xA58A7F8A EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xAE3BCC96 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xB381CF40 EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xB537D24B EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xB9E93810 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xC0184983 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xD135E3BE EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xE2338E72 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0xE30F6892 EQ PUSH2 0x181 JUMPI PUSH4 0xF0F44260 SUB PUSH2 0xE JUMPI PUSH2 0x125C JUMP JUMPDEST PUSH2 0x1209 JUMP JUMPDEST PUSH2 0x1194 JUMP JUMPDEST PUSH2 0x111E JUMP JUMPDEST PUSH2 0x10AA JUMP JUMPDEST PUSH2 0x103C JUMP JUMPDEST PUSH2 0xFC4 JUMP JUMPDEST PUSH2 0xF51 JUMP JUMPDEST PUSH2 0xF0D JUMP JUMPDEST PUSH2 0xE9C JUMP JUMPDEST PUSH2 0xE29 JUMP JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0xD3E JUMP JUMPDEST PUSH2 0xCFD JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST PUSH2 0xBCD JUMP JUMPDEST PUSH2 0xB18 JUMP JUMPDEST PUSH2 0xA0D JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST PUSH2 0x918 JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST PUSH2 0x7EA JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST PUSH2 0x6FC JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x61F JUMP JUMPDEST PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x56B JUMP JUMPDEST PUSH2 0x3FB JUMP JUMPDEST PUSH2 0x38E JUMP JUMPDEST PUSH2 0x320 JUMP JUMPDEST PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x23A JUMPI JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25C PUSH2 0x257 PUSH2 0x261 SWAP3 PUSH2 0x23F JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x274 PUSH7 0x533304F826D31 PUSH2 0x248 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x27F PUSH2 0x264 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28B SWAP1 PUSH2 0x242 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2A2 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x282 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x2D4 JUMPI PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0x2BF PUSH2 0x277 JUMP JUMPDEST PUSH2 0x2C7 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2FB SWAP1 PUSH2 0x2D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x307 SWAP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x31E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x2FE JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x350 JUMPI PUSH2 0x330 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x34C PUSH2 0x33B PUSH2 0x12C2 JUMP JUMPDEST PUSH2 0x343 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36C PUSH2 0x367 PUSH2 0x371 SWAP3 PUSH2 0x355 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x380 PUSH3 0xB68F7 PUSH2 0x358 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38B PUSH2 0x374 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3BE JUMPI PUSH2 0x39E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x3A9 PUSH2 0x383 JUMP JUMPDEST PUSH2 0x3B1 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x3D5 PUSH2 0x3DF SWAP3 PUSH2 0x3C3 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x438 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x42B JUMPI PUSH2 0x40B CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x427 PUSH2 0x416 PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x41E PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x47A JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x475 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x470 JUMPI JUMP JUMPDEST PUSH2 0x43C JUMP JUMPDEST PUSH2 0x438 JUMP JUMPDEST PUSH2 0x434 JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x4B9 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x4B4 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x4AF JUMPI JUMP JUMPDEST PUSH2 0x43C JUMP JUMPDEST PUSH2 0x438 JUMP JUMPDEST PUSH2 0x434 JUMP JUMPDEST SWAP1 PUSH1 0x60 DUP3 DUP3 SUB SLT PUSH2 0x53F JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x53A JUMPI DUP2 PUSH2 0x4E8 SWAP2 DUP5 ADD PUSH2 0x440 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x535 JUMPI DUP4 PUSH2 0x50B SWAP2 DUP5 ADD PUSH2 0x47F JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x530 JUMPI PUSH2 0x52C SWAP3 ADD PUSH2 0x47F JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x552 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x569 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x549 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5A2 JUMPI PUSH2 0x59E PUSH2 0x58D PUSH2 0x581 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BE JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x595 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x556 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5BE PUSH2 0x5B9 PUSH2 0x5C3 SWAP3 PUSH2 0x5A7 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5DC PUSH13 0x110F11BC46BC3EFCC5B8FF1223 PUSH2 0x5AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E7 PUSH2 0x5C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x61A JUMPI PUSH2 0x5FA CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x616 PUSH2 0x605 PUSH2 0x5DF JUMP JUMPDEST PUSH2 0x60D PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST CALLVALUE PUSH2 0x64F JUMPI PUSH2 0x62F CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x64B PUSH2 0x63A PUSH2 0x1315 JUMP JUMPDEST PUSH2 0x642 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x66B PUSH2 0x666 PUSH2 0x670 SWAP3 PUSH2 0x654 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x680 PUSH4 0xE163500A PUSH2 0x657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x68B PUSH2 0x673 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BE JUMPI PUSH2 0x69E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x6BA PUSH2 0x6A9 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x6B1 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6DA PUSH2 0x6D5 PUSH2 0x6DF SWAP3 PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6EE PUSH3 0x54DDDD PUSH2 0x6C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6F9 PUSH2 0x6E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x72C JUMPI PUSH2 0x70C CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x728 PUSH2 0x717 PUSH2 0x6F1 JUMP JUMPDEST PUSH2 0x71F PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x748 PUSH2 0x743 PUSH2 0x74D SWAP3 PUSH2 0x731 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x764 PUSH11 0xD47D67CCE9223FAD7DE347 PUSH2 0x734 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x76F PUSH2 0x750 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x7A2 JUMPI PUSH2 0x782 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x79E PUSH2 0x78D PUSH2 0x767 JUMP JUMPDEST PUSH2 0x795 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7BE PUSH2 0x7B9 PUSH2 0x7C3 SWAP3 PUSH2 0x7A7 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7DC PUSH13 0x110DCBA2E6F97B2A41A7EBA1B8 PUSH2 0x7AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E7 PUSH2 0x7C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x81A JUMPI PUSH2 0x7FA CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x816 PUSH2 0x805 PUSH2 0x7DF JUMP JUMPDEST PUSH2 0x80D PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x836 PUSH2 0x831 PUSH2 0x83B SWAP3 PUSH2 0x81F JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x850 PUSH9 0x2506936E734AC2F926 PUSH2 0x822 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x85B PUSH2 0x83E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x88E JUMPI PUSH2 0x86E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x88A PUSH2 0x879 PUSH2 0x853 JUMP JUMPDEST PUSH2 0x881 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0x89C DUP2 PUSH2 0x2F2 JUMP JUMPDEST SUB PUSH2 0x8A3 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x8B4 DUP3 PUSH2 0x893 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8BF DUP2 PUSH2 0x242 JUMP JUMPDEST SUB PUSH2 0x8C6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x8D7 DUP3 PUSH2 0x8B6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x90E JUMPI PUSH2 0x90B PUSH2 0x8F4 DUP5 PUSH0 DUP6 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH2 0x902 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x8CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x947 JUMPI PUSH2 0x931 PUSH2 0x92B CALLDATASIZE PUSH1 0x4 PUSH2 0x8D9 JUMP JUMPDEST SWAP2 PUSH2 0x13A4 JUMP JUMPDEST PUSH2 0x939 PUSH2 0x222 JUMP JUMPDEST DUP1 PUSH2 0x943 DUP2 PUSH2 0x913 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x963 PUSH2 0x95E PUSH2 0x968 SWAP3 PUSH2 0x94C JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x978 PUSH4 0xDF77B36F PUSH2 0x94F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x983 PUSH2 0x96B JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x9B6 JUMPI PUSH2 0x996 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x9B2 PUSH2 0x9A1 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x9A9 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x9E8 SWAP1 PUSH1 0x8 PUSH2 0x9ED SWAP4 MUL PUSH2 0x9BB JUMP JUMPDEST PUSH2 0x9BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x9FB SWAP2 SLOAD PUSH2 0x9D8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA0A PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA3D JUMPI PUSH2 0xA1D CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xA39 PUSH2 0xA28 PUSH2 0x9FE JUMP JUMPDEST PUSH2 0xA30 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xA6A JUMPI DUP1 PUSH2 0xA5E PUSH2 0xA67 SWAP3 PUSH0 DUP7 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST PUSH2 0xA83 PUSH2 0xA7E PUSH2 0xA88 SWAP3 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x2D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA94 SWAP1 PUSH2 0xA6F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAA0 SWAP1 PUSH2 0xA8B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAAD SWAP1 PUSH2 0xA97 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAC3 SWAP1 PUSH2 0xA97 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAE2 SWAP1 PUSH1 0x8 PUSH2 0xAE7 SWAP4 MUL PUSH2 0x9BB JUMP JUMPDEST PUSH2 0xACF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAF5 SWAP2 SLOAD PUSH2 0xAD2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB10 PUSH2 0xB15 SWAP3 PUSH2 0xB0B PUSH0 SWAP4 PUSH0 SWAP5 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0xAB9 JUMP JUMPDEST PUSH2 0xAEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB49 JUMPI PUSH2 0xB45 PUSH2 0xB34 PUSH2 0xB2E CALLDATASIZE PUSH1 0x4 PUSH2 0xA42 JUMP JUMPDEST SWAP1 PUSH2 0xAF8 JUMP JUMPDEST PUSH2 0xB3C PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xB57 SWAP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB63 DUP2 PUSH2 0xB4E JUMP JUMPDEST SUB PUSH2 0xB6A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xB7B DUP3 PUSH2 0xB5A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB86 DUP2 PUSH2 0x544 JUMP JUMPDEST SUB PUSH2 0xB8D JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xB9E DUP3 PUSH2 0xB7D JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xBC8 JUMPI DUP1 PUSH2 0xBBC PUSH2 0xBC5 SWAP3 PUSH0 DUP7 ADD PUSH2 0xB6E JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST CALLVALUE PUSH2 0xBFE JUMPI PUSH2 0xBFA PUSH2 0xBE9 PUSH2 0xBE3 CALLDATASIZE PUSH1 0x4 PUSH2 0xBA0 JUMP JUMPDEST SWAP1 PUSH2 0x13F4 JUMP JUMPDEST PUSH2 0xBF1 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0xC38 JUMPI PUSH2 0xC35 PUSH2 0xC1E DUP5 PUSH0 DUP6 ADD PUSH2 0xB6E JUMP JUMPDEST SWAP4 PUSH2 0xC2C DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0xB6E JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST CALLVALUE PUSH2 0xC6E JUMPI PUSH2 0xC6A PUSH2 0xC59 PUSH2 0xC53 CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0xC61 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xA0 DUP3 DUP5 SUB SLT PUSH2 0xCF8 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xCF3 JUMPI DUP4 PUSH2 0xC9E SWAP2 DUP5 ADD PUSH2 0x440 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xCEE JUMPI DUP2 PUSH2 0xCC1 SWAP2 DUP5 ADD PUSH2 0x47F JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0xCEB PUSH2 0xCD4 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH2 0xCE2 DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x8CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST CALLVALUE PUSH2 0xD2A JUMPI PUSH2 0xD0D CALLDATASIZE PUSH1 0x4 PUSH2 0xC73 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0xD1C PUSH2 0x222 JUMP JUMPDEST DUP1 PUSH2 0xD26 DUP2 PUSH2 0x913 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xD3B PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD6E JUMPI PUSH2 0xD4E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xD6A PUSH2 0xD59 PUSH2 0xD2F JUMP JUMPDEST PUSH2 0xD61 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8A PUSH2 0xD85 PUSH2 0xD8F SWAP3 PUSH2 0xD73 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDA9 PUSH14 0x2D9856FC421A9FD095F8B44C49DB PUSH2 0xD76 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDB4 PUSH2 0xD92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDE7 JUMPI PUSH2 0xDC7 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xDE3 PUSH2 0xDD2 PUSH2 0xDAC JUMP JUMPDEST PUSH2 0xDDA PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE03 PUSH2 0xDFE PUSH2 0xE08 SWAP3 PUSH2 0xDEC JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE1B PUSH7 0x52DE6F3E9958F PUSH2 0xDEF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE26 PUSH2 0xE0B JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE59 JUMPI PUSH2 0xE39 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xE55 PUSH2 0xE44 PUSH2 0xE1E JUMP JUMPDEST PUSH2 0xE4C PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE75 PUSH2 0xE70 PUSH2 0xE7A SWAP3 PUSH2 0xE5E JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE8E PUSH8 0xDDC9893B8F69331 PUSH2 0xE61 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE99 PUSH2 0xE7D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xECC JUMPI PUSH2 0xEAC CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xEC8 PUSH2 0xEB7 PUSH2 0xE91 JUMP JUMPDEST PUSH2 0xEBF PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE8 PUSH2 0xEE3 PUSH2 0xEED SWAP3 PUSH2 0xED1 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEFF PUSH6 0xAC76A57EB9A4 PUSH2 0xED4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF0A PUSH2 0xEF0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF3D JUMPI PUSH2 0xF1D CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xF39 PUSH2 0xF28 PUSH2 0xF02 JUMP JUMPDEST PUSH2 0xF30 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xF4E PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF81 JUMPI PUSH2 0xF61 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xF7D PUSH2 0xF6C PUSH2 0xF42 JUMP JUMPDEST PUSH2 0xF74 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF9D PUSH2 0xF98 PUSH2 0xFA2 SWAP3 PUSH2 0xF86 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFB6 PUSH8 0xDE435A2A433CF48 PUSH2 0xF89 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC1 PUSH2 0xFA5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xFF4 JUMPI PUSH2 0xFD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xFF0 PUSH2 0xFDF PUSH2 0xFB9 JUMP JUMPDEST PUSH2 0xFE7 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1010 PUSH2 0x100B PUSH2 0x1015 SWAP3 PUSH2 0xFF9 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x102E PUSH13 0x236FEBC16A26943DF322289BE PUSH2 0xFFC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1039 PUSH2 0x1018 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x106C JUMPI PUSH2 0x104C CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x1068 PUSH2 0x1057 PUSH2 0x1031 JUMP JUMPDEST PUSH2 0x105F PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1088 PUSH2 0x1083 PUSH2 0x108D SWAP3 PUSH2 0x1071 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x109C PUSH3 0xB32D1 PUSH2 0x1074 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10A7 PUSH2 0x1090 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x10DA JUMPI PUSH2 0x10BA CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x10D6 PUSH2 0x10C5 PUSH2 0x109F JUMP JUMPDEST PUSH2 0x10CD PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10F6 PUSH2 0x10F1 PUSH2 0x10FB SWAP3 PUSH2 0x10DF JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1110 PUSH9 0x24EFC5D2223B2AB2B2 PUSH2 0x10E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x111B PUSH2 0x10FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x114E JUMPI PUSH2 0x112E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x114A PUSH2 0x1139 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x1141 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x116A PUSH2 0x1165 PUSH2 0x116F SWAP3 PUSH2 0x1153 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1186 PUSH11 0xD4801858112018C8850BAE PUSH2 0x1156 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1191 PUSH2 0x1172 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x11C4 JUMPI PUSH2 0x11A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x11C0 PUSH2 0x11AF PUSH2 0x1189 JUMP JUMPDEST PUSH2 0x11B7 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11E0 PUSH2 0x11DB PUSH2 0x11E5 SWAP3 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11FB PUSH10 0x11DE1930CE9AB44B5A1 PUSH2 0x11CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1206 PUSH2 0x11E8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1239 JUMPI PUSH2 0x1219 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x1235 PUSH2 0x1224 PUSH2 0x11FE JUMP JUMPDEST PUSH2 0x122C PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1257 JUMPI PUSH2 0x1254 SWAP2 PUSH0 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST CALLVALUE PUSH2 0x128A JUMPI PUSH2 0x1274 PUSH2 0x126F CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x14BA JUMP JUMPDEST PUSH2 0x127C PUSH2 0x222 JUMP JUMPDEST DUP1 PUSH2 0x1286 DUP2 PUSH2 0x913 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12AE PUSH2 0x12A9 PUSH2 0x12B3 SWAP3 PUSH2 0x1297 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x2D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12BF SWAP1 PUSH2 0x129A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12CA PUSH2 0x1293 JUMP JUMPDEST POP PUSH2 0x12D4 PUSH0 PUSH2 0x12B6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST POP POP POP POP POP POP PUSH2 0x12E9 PUSH2 0x12D7 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x1300 PUSH2 0x1305 SWAP2 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x9BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1312 SWAP1 SLOAD PUSH2 0x12F4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x131D PUSH2 0x1293 JUMP JUMPDEST POP PUSH2 0x1328 PUSH1 0x3 PUSH2 0x1308 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x135B PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x132B JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1379 PUSH2 0x1374 PUSH2 0x137E SWAP3 PUSH2 0x242 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1399 PUSH2 0x1394 PUSH2 0x13A0 SWAP3 PUSH2 0x1365 JUMP JUMPDEST PUSH2 0x1381 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1330 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 PUSH2 0x13BC SWAP1 PUSH2 0x13B7 PUSH2 0x13C1 SWAP5 SWAP4 PUSH0 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0xAB9 JUMP JUMPDEST PUSH2 0x1384 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x13D0 SWAP1 PUSH2 0xA8B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13DF PUSH2 0x13E4 SWAP2 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0xACF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13F1 SWAP1 SLOAD PUSH2 0x13D3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x142E SWAP2 POP PUSH2 0x1419 PUSH2 0x1429 SWAP2 PUSH2 0x1408 PUSH2 0x13C3 JUMP JUMPDEST POP PUSH2 0x1413 PUSH0 SWAP2 PUSH2 0x13C7 JUMP JUMPDEST SWAP1 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0x1423 PUSH1 0x2 PUSH2 0x1308 JUMP JUMPDEST SWAP1 PUSH2 0xAB9 JUMP JUMPDEST PUSH2 0x13E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x146B SWAP3 POP SWAP1 PUSH2 0x1460 PUSH2 0x145A PUSH2 0x1466 SWAP4 PUSH2 0x1449 PUSH2 0x13C3 JUMP JUMPDEST POP PUSH2 0x1454 PUSH0 SWAP2 PUSH2 0x13C7 JUMP JUMPDEST SWAP1 PUSH2 0xAA3 JUMP JUMPDEST SWAP2 PUSH2 0x13C7 JUMP JUMPDEST SWAP1 PUSH2 0xAB9 JUMP JUMPDEST PUSH2 0x13E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x148D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x132B JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x14AF PUSH2 0x14AA PUSH2 0x14B6 SWAP3 PUSH2 0xA97 JUMP JUMPDEST PUSH2 0x1497 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x146E JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x14C5 SWAP1 PUSH1 0x3 PUSH2 0x149A JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP10 0xB1 BASEFEE 0xD2 GASPRICE PUSH3 0x14657C PUSH26 0x4D57724D06EFC1CC79CF02783F93512A79710750C1B364736F6C PUSH4 0x43000819 STOP CALLER ","sourceMap":"253:4040:54:-:0;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1303:62::-;1347:18;;;:::i;:::-;1303:62;:::o;1347:18::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;253:4040;;;;;1347:18;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1450:77::-;1496:31;;;:::i;:::-;1450:77;:::o;1496:31::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1236:60::-;1280:16;;;:::i;:::-;1236:60;:::o;1280:16::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1372:71::-;1416:27;;;:::i;:::-;1372:71;:::o;1416:27::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1009:65::-;1053:21;;;:::i;:::-;1009:65;:::o;1053:21::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;923:79::-;969:33;;;:::i;:::-;923:79;:::o;969:33::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1162:65::-;1206:21;;;:::i;:::-;1162:65;:::o;1206:21::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1081:74::-;1125:30;;;:::i;:::-;1081:74;:::o;1125:30::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;455:63::-;499:19;;;:::i;:::-;455:63;:::o;499:19::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;525:60::-;569:16;;;:::i;:::-;525:60;:::o;569:16::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;592:77::-;638:31;;;:::i;:::-;592:77;:::o;638:31::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;377:71::-;421:27;;;:::i;:::-;377:71;:::o;421:27::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;796:50::-;842:4;;;:::i;:::-;796:50;:::o;842:4::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;853:61::-;899:15;;;:::i;:::-;853:61;:::o;899:15::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;737:52::-;783:6;;;:::i;:::-;737:52;:::o;783:6::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;678:52::-;724:6;;;:::i;:::-;678:52;:::o;724:6::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1536:68::-;1582:22;;;:::i;:::-;1536:68;:::o;1582:22::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1611:54::-;1655:10;;;:::i;:::-;1611:54;:::o;1655:10::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1733:51::-;1777:7;;;:::i;:::-;1733:51;:::o;1882:1187::-;2976:37;1882:1187;2007:12;3024:37;1882:1187;;1979:17;3024;1882:1187;1979:17;;:::i;:::-;2007:12;;:::i;:::-;2030:21;2041:10;2030:21;;:::i;:::-;2064:37;2084:17;;:::i;:::-;2064;:11;:5;2070:4;2064:11;;:::i;:::-;2076:4;;;:::i;:::-;2064:17;;:::i;:::-;:37;:::i;:::-;2112:42;2135:19;;:::i;:::-;2112:20;:11;:5;2118:4;2112:11;;:::i;:::-;2124:7;;;:::i;:::-;2112:20;;:::i;:::-;:42;:::i;:::-;2165:37;2185:17;;:::i;:::-;2165;:11;:5;2171:4;2165:11;;:::i;:::-;2177:4;2165:17;;:::i;:::-;:37;:::i;:::-;2213;2233:17;;:::i;:::-;2213;:11;:5;2219:4;2213:11;;:::i;:::-;2225:4;2213:17;;:::i;:::-;:37;:::i;:::-;2263;2283:17;;:::i;:::-;2263;:11;:5;2269:4;2263:11;;:::i;:::-;2275:4;2263:17;;:::i;:::-;:37;:::i;:::-;2311:42;2334:19;;:::i;:::-;2311:20;:11;:5;2317:4;2311:11;;:::i;:::-;2323:7;;;:::i;:::-;2311:20;;:::i;:::-;:42;:::i;:::-;2364:37;2384:17;;:::i;:::-;2364;:11;:5;2370:4;2364:11;;:::i;:::-;2376:4;;;:::i;:::-;2364:17;;:::i;:::-;:37;:::i;:::-;2412;2432:17;;:::i;:::-;2412;:11;:5;2418:4;2412:11;;:::i;:::-;2424:4;2412:17;;:::i;:::-;:37;:::i;:::-;2462;2482:17;;:::i;:::-;2462;:11;:5;2468:4;;;:::i;:::-;2462:11;;:::i;:::-;2474:4;2462:17;;:::i;:::-;:37;:::i;:::-;2510;2530:17;;:::i;:::-;2510;:11;:5;2516:4;;;:::i;:::-;2510:11;;:::i;:::-;2522:4;2510:17;;:::i;:::-;:37;:::i;:::-;2558:42;2581:19;;:::i;:::-;2558:20;:11;:5;2564:4;;;:::i;:::-;2558:11;;:::i;:::-;2570:7;;;:::i;:::-;2558:20;;:::i;:::-;:42;:::i;:::-;2611:37;2631:17;;:::i;:::-;2611;:11;:5;2617:4;;;:::i;:::-;2611:11;;:::i;:::-;2623:4;2611:17;;:::i;:::-;:37;:::i;:::-;2661:42;2684:19;;:::i;:::-;2661:20;:14;:5;2667:7;;;:::i;:::-;2661:14;;:::i;:::-;2676:4;2661:20;;:::i;:::-;:42;:::i;:::-;2714;2737:19;;:::i;:::-;2714:20;:14;:5;2720:7;;;:::i;:::-;2714:14;;:::i;:::-;2729:4;2714:20;;:::i;:::-;:42;:::i;:::-;2767;2790:19;;:::i;:::-;2767:20;:14;:5;2773:7;;;:::i;:::-;2767:14;;:::i;:::-;2782:4;;;:::i;:::-;2767:20;;:::i;:::-;:42;:::i;:::-;2820;2843:19;;:::i;:::-;2820:20;:14;:5;2826:7;;;:::i;:::-;2820:14;;:::i;:::-;2835:4;2820:20;;:::i;:::-;:42;:::i;:::-;2875;2898:19;;:::i;:::-;2875:20;:11;:5;2881:4;2875:11;;:::i;:::-;2887:7;;;:::i;:::-;2875:20;;:::i;:::-;:42;:::i;:::-;2928:37;2948:17;;:::i;:::-;2928;:11;:5;2934:4;2928:11;;:::i;:::-;2940:4;;;:::i;:::-;2928:17;;:::i;:::-;:37;:::i;:::-;2976:17;2996;;:::i;:::-;2976:5;:11;:5;2982:4;2976:11;;:::i;:::-;:17;:::i;:::-;:37;:::i;:::-;3024:11;3044:17;;:::i;:::-;3024:5;;:11;:::i;:::-;:17;:::i;:::-;:37;:::i;:::-;1882:1187::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":560,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":2215,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":2626,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":2265,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_array_address_dyn_calldata":{"entryPoint":1088,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn_calldatat_array_uint256_dyn_calldatat_addresst_addresst_uint256":{"entryPoint":3187,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_array_address_dyn_calldatat_array_uint256_dyn_calldatat_array_uint256_dyn_calldata":{"entryPoint":1214,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_array_uint256_dyn_calldata":{"entryPoint":1151,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bool":{"entryPoint":2961,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":2926,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20t_bool":{"entryPoint":2976,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_contract_IERC20t_contract_IERC20t_bool":{"entryPoint":3075,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_address":{"entryPoint":4670,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":2250,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":766,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bool":{"entryPoint":1366,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":1353,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple":{"entryPoint":2323,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":779,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":655,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":642,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_unbounded":{"entryPoint":546,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_address":{"entryPoint":754,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":1348,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_contract_IERC20":{"entryPoint":2894,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":2495,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":2767,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_0_by":{"entryPoint":4759,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1000983989838925640_by":{"entryPoint":3974,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1457844841452943_by":{"entryPoint":3564,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1463657468947761_by":{"entryPoint":575,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_175476470939493533556108593598_by":{"entryPoint":4089,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_189625582664100_by":{"entryPoint":3793,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_256884484348670192973112135_by":{"entryPoint":1841,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_256897185735855109411507118_by":{"entryPoint":4435,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3749163887_by":{"entryPoint":2380,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3781382154_by":{"entryPoint":1620,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_5273576410685072782753_by":{"entryPoint":4553,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_5561821_by":{"entryPoint":1731,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_681360233243484009138_by":{"entryPoint":4319,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_683003374554512029990_by":{"entryPoint":2079,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_733905_by":{"entryPoint":4209,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_924778033538811846038762973579739_by":{"entryPoint":3443,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_998840977600189233_by":{"entryPoint":3678,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":1447,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":1959,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":853,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":963,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":729,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":578,"id":null,"parameterSlots":1,"returnSlots":1},"constant_USDC_TO_USDT_RATE":{"entryPoint":4005,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WBTC_RATE":{"entryPoint":612,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WETH_RATE":{"entryPoint":4466,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDC_TO_WMATIC_RATE":{"entryPoint":1990,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_USDC_RATE":{"entryPoint":3709,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WBTC_RATE":{"entryPoint":3595,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WETH_RATE":{"entryPoint":1872,"id":null,"parameterSlots":0,"returnSlots":1},"constant_USDT_TO_WMATIC_RATE":{"entryPoint":1478,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_USDC_RATE":{"entryPoint":2110,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_USDT_RATE":{"entryPoint":4350,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_WETH_RATE":{"entryPoint":4120,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WBTC_TO_WMATIC_RATE":{"entryPoint":3474,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_USDC_RATE":{"entryPoint":1651,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_USDT_RATE":{"entryPoint":2411,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_WBTC_RATE":{"entryPoint":1762,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WETH_TO_WMATIC_RATE":{"entryPoint":4584,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_USDC_RATE":{"entryPoint":4240,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_USDT_RATE":{"entryPoint":884,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_WBTC_RATE":{"entryPoint":994,"id":null,"parameterSlots":0,"returnSlots":1},"constant_WMATIC_TO_WETH_RATE":{"entryPoint":3824,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":2711,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":5063,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1000983989838925640_by_1_to_uint256":{"entryPoint":3977,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1080_by_1_to_uint256":{"entryPoint":966,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1351148249095651365340914098616_by_1_to_uint256":{"entryPoint":1962,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1351542478738482785523886658083_by_1_to_uint256":{"entryPoint":1450,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1457844841452943_by_1_to_uint256":{"entryPoint":3567,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1463657468947761_by_1_to_uint256":{"entryPoint":584,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_175476470939493533556108593598_by_1_to_uint256":{"entryPoint":4092,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_189625582664100_by_1_to_uint256":{"entryPoint":3796,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_256884484348670192973112135_by_1_to_uint256":{"entryPoint":1844,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_256897185735855109411507118_by_1_to_uint256":{"entryPoint":4438,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_3749163887_by_1_to_uint256":{"entryPoint":2383,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_5561821_by_1_to_uint256":{"entryPoint":1734,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_681360233243484009138_by_1_to_uint256":{"entryPoint":4322,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_683003374554512029990_by_1_to_uint256":{"entryPoint":2082,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_733905_by_1_to_uint256":{"entryPoint":4212,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_747767_by_1_to_uint256":{"entryPoint":856,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_924778033538811846038762973579739_by_1_to_uint256":{"entryPoint":3446,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_998840977600189233_by_1_to_uint256":{"entryPoint":3681,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":4790,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":4762,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":1623,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":4556,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":2699,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":2671,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":4965,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_USDC":{"entryPoint":3390,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC_TO_USDT_RATE":{"entryPoint":4036,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC_TO_WBTC_RATE":{"entryPoint":676,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC_TO_WETH_RATE":{"entryPoint":4500,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC_TO_WMATIC_RATE":{"entryPoint":2026,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDT_TO_USDC_RATE":{"entryPoint":3740,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDT_TO_WBTC_RATE":{"entryPoint":3625,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDT_TO_WETH_RATE":{"entryPoint":1906,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDT_TO_WMATIC_RATE":{"entryPoint":1514,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WBTC_TO_USDC_RATE":{"entryPoint":2142,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WBTC_TO_USDT_RATE":{"entryPoint":4382,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WBTC_TO_WETH_RATE":{"entryPoint":4156,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WBTC_TO_WMATIC_RATE":{"entryPoint":3511,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH_TO_USDC_RATE":{"entryPoint":1678,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH_TO_USDT_RATE":{"entryPoint":2438,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH_TO_WBTC_RATE":{"entryPoint":1788,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WETH_TO_WMATIC_RATE":{"entryPoint":4617,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WMATIC_TO_USDC_RATE":{"entryPoint":4266,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WMATIC_TO_USDT_RATE":{"entryPoint":910,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WMATIC_TO_WBTC_RATE":{"entryPoint":1019,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WMATIC_TO_WETH_RATE":{"entryPoint":3853,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WNATIVE":{"entryPoint":3921,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_checkRebalance":{"entryPoint":1387,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniRouter":{"entryPoint":800,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getRate":{"entryPoint":3133,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getRateToEth":{"entryPoint":3021,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getTreasury":{"entryPoint":1567,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_rates":{"entryPoint":2840,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_rebalance":{"entryPoint":3325,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setRate":{"entryPoint":2328,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setTreasury":{"entryPoint":4700,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_treasury":{"entryPoint":2573,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":2520,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_uint256":{"entryPoint":2770,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":4852,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":5075,"id":null,"parameterSlots":1,"returnSlots":1},"fun_checkRebalance":{"entryPoint":4827,"id":10952,"parameterSlots":6,"returnSlots":1},"fun_getBaluniRouter":{"entryPoint":4802,"id":10963,"parameterSlots":0,"returnSlots":1},"fun_getRate":{"entryPoint":5169,"id":10899,"parameterSlots":3,"returnSlots":1},"fun_getRateToEth":{"entryPoint":5108,"id":10919,"parameterSlots":2,"returnSlots":1},"fun_getTreasury":{"entryPoint":4885,"id":10971,"parameterSlots":0,"returnSlots":1},"fun_setRate":{"entryPoint":5028,"id":10873,"parameterSlots":3,"returnSlots":0},"fun_setTreasury":{"entryPoint":5306,"id":10981,"parameterSlots":1,"returnSlots":0},"getter_fun_USDC":{"entryPoint":3375,"id":10664,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC_TO_USDT_RATE":{"entryPoint":4025,"id":10608,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC_TO_WBTC_RATE":{"entryPoint":631,"id":10611,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC_TO_WETH_RATE":{"entryPoint":4489,"id":10605,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC_TO_WMATIC_RATE":{"entryPoint":2015,"id":10614,"parameterSlots":0,"returnSlots":1},"getter_fun_USDT_TO_USDC_RATE":{"entryPoint":3729,"id":10644,"parameterSlots":0,"returnSlots":1},"getter_fun_USDT_TO_WBTC_RATE":{"entryPoint":3614,"id":10641,"parameterSlots":0,"returnSlots":1},"getter_fun_USDT_TO_WETH_RATE":{"entryPoint":1895,"id":10647,"parameterSlots":0,"returnSlots":1},"getter_fun_USDT_TO_WMATIC_RATE":{"entryPoint":1503,"id":10650,"parameterSlots":0,"returnSlots":1},"getter_fun_WBTC_TO_USDC_RATE":{"entryPoint":2131,"id":10638,"parameterSlots":0,"returnSlots":1},"getter_fun_WBTC_TO_USDT_RATE":{"entryPoint":4371,"id":10632,"parameterSlots":0,"returnSlots":1},"getter_fun_WBTC_TO_WETH_RATE":{"entryPoint":4145,"id":10635,"parameterSlots":0,"returnSlots":1},"getter_fun_WBTC_TO_WMATIC_RATE":{"entryPoint":3500,"id":10629,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH_TO_USDC_RATE":{"entryPoint":1667,"id":10656,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH_TO_USDT_RATE":{"entryPoint":2427,"id":10659,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH_TO_WBTC_RATE":{"entryPoint":1777,"id":10662,"parameterSlots":0,"returnSlots":1},"getter_fun_WETH_TO_WMATIC_RATE":{"entryPoint":4606,"id":10653,"parameterSlots":0,"returnSlots":1},"getter_fun_WMATIC_TO_USDC_RATE":{"entryPoint":4255,"id":10620,"parameterSlots":0,"returnSlots":1},"getter_fun_WMATIC_TO_USDT_RATE":{"entryPoint":899,"id":10617,"parameterSlots":0,"returnSlots":1},"getter_fun_WMATIC_TO_WBTC_RATE":{"entryPoint":1008,"id":10623,"parameterSlots":0,"returnSlots":1},"getter_fun_WMATIC_TO_WETH_RATE":{"entryPoint":3842,"id":10626,"parameterSlots":0,"returnSlots":1},"getter_fun_WNATIVE":{"entryPoint":3906,"id":10666,"parameterSlots":0,"returnSlots":1},"getter_fun_rates":{"entryPoint":2808,"id":10602,"parameterSlots":2,"returnSlots":1},"getter_fun_treasury":{"entryPoint":2558,"id":10668,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":581,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":2723,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":2745,"id":null,"parameterSlots":2,"returnSlots":1},"prepare_store_address":{"entryPoint":5271,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":4993,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":2544,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_uint256":{"entryPoint":2794,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":4872,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":5095,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":1080,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":1076,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":4751,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":1084,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":1072,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":552,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":556,"id":null,"parameterSlots":0,"returnSlots":0},"shift_left":{"entryPoint":4907,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":4847,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":540,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":2491,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":4912,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":5230,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":5274,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":4996,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":2195,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":2941,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_contract_IERC20":{"entryPoint":2906,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":2230,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":4755,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":4823,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":5059,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361015610013575b61128f565b61001d5f3561021c565b8063020987191461021757806304cc7325146102125780630e0917621461020d578063187029b81461020857806318cdc49a146102035780631a1e4a1f146101fe5780633b19e84a146101f95780634039e687146101f457806343146399146101ef578063443dc789146101ea5780635107e94e146101e557806353ff493e146101e05780635911fb9a146101db5780635fc8cd69146101d657806361d027b3146101d15780637b0cf44d146101cc5780637de4fd10146101c7578063802431fb146101c257806384db1dfb146101bd57806389a30271146101b85780638e5139ed146101b357806397db8e02146101ae578063a58a7f8a146101a9578063ae3bcc96146101a4578063b381cf401461019f578063b537d24b1461019a578063b9e9381014610195578063c018498314610190578063d135e3be1461018b578063e2338e7214610186578063e30f6892146101815763f0f442600361000e5761125c565b611209565b611194565b61111e565b6110aa565b61103c565b610fc4565b610f51565b610f0d565b610e9c565b610e29565b610db7565b610d3e565b610cfd565b610c3d565b610bcd565b610b18565b610a0d565b610986565b610918565b61085e565b6107ea565b610772565b6106fc565b61068e565b61061f565b6105ea565b61056b565b6103fb565b61038e565b610320565b6102a4565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261023a57565b61022c565b90565b90565b90565b61025c6102576102619261023f565b610245565b610242565b90565b610274660533304f826d31610248565b90565b61027f610264565b90565b61028b90610242565b9052565b91906102a2905f60208501940190610282565b565b346102d4576102b4366004610230565b6102d06102bf610277565b6102c7610222565b9182918261028f565b0390f35b610228565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102fb906102d9565b90565b610307906102f2565b9052565b919061031e905f602085019401906102fe565b565b3461035057610330366004610230565b61034c61033b6112c2565b610343610222565b9182918261030b565b0390f35b610228565b90565b61036c61036761037192610355565b610245565b610242565b90565b610380620b68f7610358565b90565b61038b610374565b90565b346103be5761039e366004610230565b6103ba6103a9610383565b6103b1610222565b9182918261028f565b0390f35b610228565b90565b6103da6103d56103df926103c3565b610245565b610242565b90565b6103ed6104386103c6565b90565b6103f86103e2565b90565b3461042b5761040b366004610230565b6104276104166103f0565b61041e610222565b9182918261028f565b0390f35b610228565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b909182601f8301121561047a5781359167ffffffffffffffff831161047557602001926020830284011161047057565b61043c565b610438565b610434565b909182601f830112156104b95781359167ffffffffffffffff83116104b45760200192602083028401116104af57565b61043c565b610438565b610434565b9060608282031261053f575f82013567ffffffffffffffff811161053a57816104e8918401610440565b929093602082013567ffffffffffffffff8111610535578361050b91840161047f565b929093604082013567ffffffffffffffff81116105305761052c920161047f565b9091565b610430565b610430565b610430565b61022c565b151590565b61055290610544565b9052565b9190610569905f60208501940190610549565b565b346105a25761059e61058d6105813660046104be565b949390939291926112db565b610595610222565b91829182610556565b0390f35b610228565b90565b6105be6105b96105c3926105a7565b610245565b610242565b90565b6105dc6c110f11bc46bc3efcc5b8ff12236105aa565b90565b6105e76105c6565b90565b3461061a576105fa366004610230565b6106166106056105df565b61060d610222565b9182918261028f565b0390f35b610228565b3461064f5761062f366004610230565b61064b61063a611315565b610642610222565b9182918261030b565b0390f35b610228565b90565b61066b61066661067092610654565b610245565b610242565b90565b61068063e163500a610657565b90565b61068b610673565b90565b346106be5761069e366004610230565b6106ba6106a9610683565b6106b1610222565b9182918261028f565b0390f35b610228565b90565b6106da6106d56106df926106c3565b610245565b610242565b90565b6106ee6254dddd6106c6565b90565b6106f96106e2565b90565b3461072c5761070c366004610230565b6107286107176106f1565b61071f610222565b9182918261028f565b0390f35b610228565b90565b61074861074361074d92610731565b610245565b610242565b90565b6107646ad47d67cce9223fad7de347610734565b90565b61076f610750565b90565b346107a257610782366004610230565b61079e61078d610767565b610795610222565b9182918261028f565b0390f35b610228565b90565b6107be6107b96107c3926107a7565b610245565b610242565b90565b6107dc6c110dcba2e6f97b2a41a7eba1b86107aa565b90565b6107e76107c6565b90565b3461081a576107fa366004610230565b6108166108056107df565b61080d610222565b9182918261028f565b0390f35b610228565b90565b61083661083161083b9261081f565b610245565b610242565b90565b610850682506936e734ac2f926610822565b90565b61085b61083e565b90565b3461088e5761086e366004610230565b61088a610879610853565b610881610222565b9182918261028f565b0390f35b610228565b61089c816102f2565b036108a357565b5f80fd5b905035906108b482610893565b565b6108bf81610242565b036108c657565b5f80fd5b905035906108d7826108b6565b565b909160608284031261090e5761090b6108f4845f85016108a7565b9361090281602086016108a7565b936040016108ca565b90565b61022c565b5f0190565b346109475761093161092b3660046108d9565b916113a4565b610939610222565b8061094381610913565b0390f35b610228565b90565b61096361095e6109689261094c565b610245565b610242565b90565b61097863df77b36f61094f565b90565b61098361096b565b90565b346109b657610996366004610230565b6109b26109a161097b565b6109a9610222565b9182918261028f565b0390f35b610228565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6109e89060086109ed93026109bb565b6109bf565b90565b906109fb91546109d8565b90565b610a0a60035f906109f0565b90565b34610a3d57610a1d366004610230565b610a39610a286109fe565b610a30610222565b9182918261030b565b0390f35b610228565b9190604083820312610a6a5780610a5e610a67925f86016108a7565b936020016108a7565b90565b61022c565b610a83610a7e610a88926102d9565b610245565b6102d9565b90565b610a9490610a6f565b90565b610aa090610a8b565b90565b90610aad90610a97565b5f5260205260405f2090565b90610ac390610a97565b5f5260205260405f2090565b90565b610ae2906008610ae793026109bb565b610acf565b90565b90610af59154610ad2565b90565b610b10610b1592610b0b5f935f94610aa3565b610ab9565b610aea565b90565b34610b4957610b45610b34610b2e366004610a42565b90610af8565b610b3c610222565b9182918261028f565b0390f35b610228565b610b57906102f2565b90565b610b6381610b4e565b03610b6a57565b5f80fd5b90503590610b7b82610b5a565b565b610b8681610544565b03610b8d57565b5f80fd5b90503590610b9e82610b7d565b565b9190604083820312610bc85780610bbc610bc5925f8601610b6e565b93602001610b91565b90565b61022c565b34610bfe57610bfa610be9610be3366004610ba0565b906113f4565b610bf1610222565b9182918261028f565b0390f35b610228565b9091606082840312610c3857610c35610c1e845f8501610b6e565b93610c2c8160208601610b6e565b93604001610b91565b90565b61022c565b34610c6e57610c6a610c59610c53366004610c03565b91611431565b610c61610222565b9182918261028f565b0390f35b610228565b909160a082840312610cf8575f82013567ffffffffffffffff8111610cf35783610c9e918401610440565b929093602082013567ffffffffffffffff8111610cee5781610cc191840161047f565b929093610ceb610cd484604085016108a7565b93610ce281606086016108a7565b936080016108ca565b90565b610430565b610430565b61022c565b34610d2a57610d0d366004610c73565b50505050505050610d1c610222565b80610d2681610913565b0390f35b610228565b610d3b60015f906109f0565b90565b34610d6e57610d4e366004610230565b610d6a610d59610d2f565b610d61610222565b9182918261030b565b0390f35b610228565b90565b610d8a610d85610d8f92610d73565b610245565b610242565b90565b610da96d2d9856fc421a9fd095f8b44c49db610d76565b90565b610db4610d92565b90565b34610de757610dc7366004610230565b610de3610dd2610dac565b610dda610222565b9182918261028f565b0390f35b610228565b90565b610e03610dfe610e0892610dec565b610245565b610242565b90565b610e1b66052de6f3e9958f610def565b90565b610e26610e0b565b90565b34610e5957610e39366004610230565b610e55610e44610e1e565b610e4c610222565b9182918261028f565b0390f35b610228565b90565b610e75610e70610e7a92610e5e565b610245565b610242565b90565b610e8e670ddc9893b8f69331610e61565b90565b610e99610e7d565b90565b34610ecc57610eac366004610230565b610ec8610eb7610e91565b610ebf610222565b9182918261028f565b0390f35b610228565b90565b610ee8610ee3610eed92610ed1565b610245565b610242565b90565b610eff65ac76a57eb9a4610ed4565b90565b610f0a610ef0565b90565b34610f3d57610f1d366004610230565b610f39610f28610f02565b610f30610222565b9182918261028f565b0390f35b610228565b610f4e60025f906109f0565b90565b34610f8157610f61366004610230565b610f7d610f6c610f42565b610f74610222565b9182918261030b565b0390f35b610228565b90565b610f9d610f98610fa292610f86565b610245565b610242565b90565b610fb6670de435a2a433cf48610f89565b90565b610fc1610fa5565b90565b34610ff457610fd4366004610230565b610ff0610fdf610fb9565b610fe7610222565b9182918261028f565b0390f35b610228565b90565b61101061100b61101592610ff9565b610245565b610242565b90565b61102e6c0236febc16a26943df322289be610ffc565b90565b611039611018565b90565b3461106c5761104c366004610230565b611068611057611031565b61105f610222565b9182918261028f565b0390f35b610228565b90565b61108861108361108d92611071565b610245565b610242565b90565b61109c620b32d1611074565b90565b6110a7611090565b90565b346110da576110ba366004610230565b6110d66110c561109f565b6110cd610222565b9182918261028f565b0390f35b610228565b90565b6110f66110f16110fb926110df565b610245565b610242565b90565b6111106824efc5d2223b2ab2b26110e2565b90565b61111b6110fe565b90565b3461114e5761112e366004610230565b61114a611139611113565b611141610222565b9182918261028f565b0390f35b610228565b90565b61116a61116561116f92611153565b610245565b610242565b90565b6111866ad4801858112018c8850bae611156565b90565b611191611172565b90565b346111c4576111a4366004610230565b6111c06111af611189565b6111b7610222565b9182918261028f565b0390f35b610228565b90565b6111e06111db6111e5926111c9565b610245565b610242565b90565b6111fb69011de1930ce9ab44b5a16111cc565b90565b6112066111e8565b90565b3461123957611219366004610230565b6112356112246111fe565b61122c610222565b9182918261028f565b0390f35b610228565b9060208282031261125757611254915f016108a7565b90565b61022c565b3461128a5761127461126f36600461123e565b6114ba565b61127c610222565b8061128681610913565b0390f35b610228565b5f80fd5b5f90565b90565b6112ae6112a96112b392611297565b610245565b6102d9565b90565b6112bf9061129a565b90565b6112ca611293565b506112d45f6112b6565b90565b5f90565b5050505050506112e96112d7565b50600190565b5f1c90565b611300611305916112ef565b6109bf565b90565b61131290546112f4565b90565b61131d611293565b506113286003611308565b90565b5f1b90565b9061135b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9161132b565b9181191691161790565b61137961137461137e92610242565b610245565b610242565b90565b90565b906113996113946113a092611365565b611381565b8254611330565b9055565b906113bc906113b76113c194935f610aa3565b610ab9565b611384565b565b5f90565b6113d090610a8b565b90565b6113df6113e4916112ef565b610acf565b90565b6113f190546113d3565b90565b61142e9150611419611429916114086113c3565b506114135f916113c7565b90610aa3565b6114236002611308565b90610ab9565b6113e7565b90565b61146b92509061146061145a611466936114496113c3565b506114545f916113c7565b90610aa3565b916113c7565b90610ab9565b6113e7565b90565b9061148d73ffffffffffffffffffffffffffffffffffffffff9161132b565b9181191691161790565b90565b906114af6114aa6114b692610a97565b611497565b825461146e565b9055565b6114c590600361149a565b56fea264697066735822122099b148d23a6214657c794d57724d06efc1cc79cf02783f93512a79710750c1b364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x128F JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x2098719 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x4CC7325 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xE091762 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x187029B8 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x18CDC49A EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x1A1E4A1F EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x3B19E84A EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x4039E687 EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x43146399 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x443DC789 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x5107E94E EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x53FF493E EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x5911FB9A EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x5FC8CD69 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x61D027B3 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x7B0CF44D EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x7DE4FD10 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x802431FB EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x84DB1DFB EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x89A30271 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x8E5139ED EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x97DB8E02 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xA58A7F8A EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xAE3BCC96 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xB381CF40 EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xB537D24B EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xB9E93810 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xC0184983 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xD135E3BE EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xE2338E72 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0xE30F6892 EQ PUSH2 0x181 JUMPI PUSH4 0xF0F44260 SUB PUSH2 0xE JUMPI PUSH2 0x125C JUMP JUMPDEST PUSH2 0x1209 JUMP JUMPDEST PUSH2 0x1194 JUMP JUMPDEST PUSH2 0x111E JUMP JUMPDEST PUSH2 0x10AA JUMP JUMPDEST PUSH2 0x103C JUMP JUMPDEST PUSH2 0xFC4 JUMP JUMPDEST PUSH2 0xF51 JUMP JUMPDEST PUSH2 0xF0D JUMP JUMPDEST PUSH2 0xE9C JUMP JUMPDEST PUSH2 0xE29 JUMP JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0xD3E JUMP JUMPDEST PUSH2 0xCFD JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST PUSH2 0xBCD JUMP JUMPDEST PUSH2 0xB18 JUMP JUMPDEST PUSH2 0xA0D JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST PUSH2 0x918 JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST PUSH2 0x7EA JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST PUSH2 0x6FC JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x61F JUMP JUMPDEST PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x56B JUMP JUMPDEST PUSH2 0x3FB JUMP JUMPDEST PUSH2 0x38E JUMP JUMPDEST PUSH2 0x320 JUMP JUMPDEST PUSH2 0x2A4 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x23A JUMPI JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25C PUSH2 0x257 PUSH2 0x261 SWAP3 PUSH2 0x23F JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x274 PUSH7 0x533304F826D31 PUSH2 0x248 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x27F PUSH2 0x264 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28B SWAP1 PUSH2 0x242 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2A2 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x282 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x2D4 JUMPI PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x2D0 PUSH2 0x2BF PUSH2 0x277 JUMP JUMPDEST PUSH2 0x2C7 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2FB SWAP1 PUSH2 0x2D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x307 SWAP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x31E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x2FE JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x350 JUMPI PUSH2 0x330 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x34C PUSH2 0x33B PUSH2 0x12C2 JUMP JUMPDEST PUSH2 0x343 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36C PUSH2 0x367 PUSH2 0x371 SWAP3 PUSH2 0x355 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x380 PUSH3 0xB68F7 PUSH2 0x358 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38B PUSH2 0x374 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3BE JUMPI PUSH2 0x39E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x3A9 PUSH2 0x383 JUMP JUMPDEST PUSH2 0x3B1 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x3D5 PUSH2 0x3DF SWAP3 PUSH2 0x3C3 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x438 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3F8 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x42B JUMPI PUSH2 0x40B CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x427 PUSH2 0x416 PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x41E PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x47A JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x475 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x470 JUMPI JUMP JUMPDEST PUSH2 0x43C JUMP JUMPDEST PUSH2 0x438 JUMP JUMPDEST PUSH2 0x434 JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x4B9 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x4B4 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x4AF JUMPI JUMP JUMPDEST PUSH2 0x43C JUMP JUMPDEST PUSH2 0x438 JUMP JUMPDEST PUSH2 0x434 JUMP JUMPDEST SWAP1 PUSH1 0x60 DUP3 DUP3 SUB SLT PUSH2 0x53F JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x53A JUMPI DUP2 PUSH2 0x4E8 SWAP2 DUP5 ADD PUSH2 0x440 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x535 JUMPI DUP4 PUSH2 0x50B SWAP2 DUP5 ADD PUSH2 0x47F JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x530 JUMPI PUSH2 0x52C SWAP3 ADD PUSH2 0x47F JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x552 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x569 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x549 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5A2 JUMPI PUSH2 0x59E PUSH2 0x58D PUSH2 0x581 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BE JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x595 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x556 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5BE PUSH2 0x5B9 PUSH2 0x5C3 SWAP3 PUSH2 0x5A7 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5DC PUSH13 0x110F11BC46BC3EFCC5B8FF1223 PUSH2 0x5AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E7 PUSH2 0x5C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x61A JUMPI PUSH2 0x5FA CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x616 PUSH2 0x605 PUSH2 0x5DF JUMP JUMPDEST PUSH2 0x60D PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST CALLVALUE PUSH2 0x64F JUMPI PUSH2 0x62F CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x64B PUSH2 0x63A PUSH2 0x1315 JUMP JUMPDEST PUSH2 0x642 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x66B PUSH2 0x666 PUSH2 0x670 SWAP3 PUSH2 0x654 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x680 PUSH4 0xE163500A PUSH2 0x657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x68B PUSH2 0x673 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BE JUMPI PUSH2 0x69E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x6BA PUSH2 0x6A9 PUSH2 0x683 JUMP JUMPDEST PUSH2 0x6B1 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6DA PUSH2 0x6D5 PUSH2 0x6DF SWAP3 PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6EE PUSH3 0x54DDDD PUSH2 0x6C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6F9 PUSH2 0x6E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x72C JUMPI PUSH2 0x70C CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x728 PUSH2 0x717 PUSH2 0x6F1 JUMP JUMPDEST PUSH2 0x71F PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x748 PUSH2 0x743 PUSH2 0x74D SWAP3 PUSH2 0x731 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x764 PUSH11 0xD47D67CCE9223FAD7DE347 PUSH2 0x734 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x76F PUSH2 0x750 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x7A2 JUMPI PUSH2 0x782 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x79E PUSH2 0x78D PUSH2 0x767 JUMP JUMPDEST PUSH2 0x795 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7BE PUSH2 0x7B9 PUSH2 0x7C3 SWAP3 PUSH2 0x7A7 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7DC PUSH13 0x110DCBA2E6F97B2A41A7EBA1B8 PUSH2 0x7AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E7 PUSH2 0x7C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x81A JUMPI PUSH2 0x7FA CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x816 PUSH2 0x805 PUSH2 0x7DF JUMP JUMPDEST PUSH2 0x80D PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x836 PUSH2 0x831 PUSH2 0x83B SWAP3 PUSH2 0x81F JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x850 PUSH9 0x2506936E734AC2F926 PUSH2 0x822 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x85B PUSH2 0x83E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x88E JUMPI PUSH2 0x86E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x88A PUSH2 0x879 PUSH2 0x853 JUMP JUMPDEST PUSH2 0x881 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0x89C DUP2 PUSH2 0x2F2 JUMP JUMPDEST SUB PUSH2 0x8A3 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x8B4 DUP3 PUSH2 0x893 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8BF DUP2 PUSH2 0x242 JUMP JUMPDEST SUB PUSH2 0x8C6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x8D7 DUP3 PUSH2 0x8B6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x90E JUMPI PUSH2 0x90B PUSH2 0x8F4 DUP5 PUSH0 DUP6 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH2 0x902 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x8CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x947 JUMPI PUSH2 0x931 PUSH2 0x92B CALLDATASIZE PUSH1 0x4 PUSH2 0x8D9 JUMP JUMPDEST SWAP2 PUSH2 0x13A4 JUMP JUMPDEST PUSH2 0x939 PUSH2 0x222 JUMP JUMPDEST DUP1 PUSH2 0x943 DUP2 PUSH2 0x913 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x963 PUSH2 0x95E PUSH2 0x968 SWAP3 PUSH2 0x94C JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x978 PUSH4 0xDF77B36F PUSH2 0x94F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x983 PUSH2 0x96B JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x9B6 JUMPI PUSH2 0x996 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x9B2 PUSH2 0x9A1 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x9A9 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x9E8 SWAP1 PUSH1 0x8 PUSH2 0x9ED SWAP4 MUL PUSH2 0x9BB JUMP JUMPDEST PUSH2 0x9BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x9FB SWAP2 SLOAD PUSH2 0x9D8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA0A PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA3D JUMPI PUSH2 0xA1D CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xA39 PUSH2 0xA28 PUSH2 0x9FE JUMP JUMPDEST PUSH2 0xA30 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xA6A JUMPI DUP1 PUSH2 0xA5E PUSH2 0xA67 SWAP3 PUSH0 DUP7 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST PUSH2 0xA83 PUSH2 0xA7E PUSH2 0xA88 SWAP3 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x2D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA94 SWAP1 PUSH2 0xA6F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAA0 SWAP1 PUSH2 0xA8B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAAD SWAP1 PUSH2 0xA97 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAC3 SWAP1 PUSH2 0xA97 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAE2 SWAP1 PUSH1 0x8 PUSH2 0xAE7 SWAP4 MUL PUSH2 0x9BB JUMP JUMPDEST PUSH2 0xACF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAF5 SWAP2 SLOAD PUSH2 0xAD2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB10 PUSH2 0xB15 SWAP3 PUSH2 0xB0B PUSH0 SWAP4 PUSH0 SWAP5 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0xAB9 JUMP JUMPDEST PUSH2 0xAEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB49 JUMPI PUSH2 0xB45 PUSH2 0xB34 PUSH2 0xB2E CALLDATASIZE PUSH1 0x4 PUSH2 0xA42 JUMP JUMPDEST SWAP1 PUSH2 0xAF8 JUMP JUMPDEST PUSH2 0xB3C PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xB57 SWAP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB63 DUP2 PUSH2 0xB4E JUMP JUMPDEST SUB PUSH2 0xB6A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xB7B DUP3 PUSH2 0xB5A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB86 DUP2 PUSH2 0x544 JUMP JUMPDEST SUB PUSH2 0xB8D JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xB9E DUP3 PUSH2 0xB7D JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xBC8 JUMPI DUP1 PUSH2 0xBBC PUSH2 0xBC5 SWAP3 PUSH0 DUP7 ADD PUSH2 0xB6E JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST CALLVALUE PUSH2 0xBFE JUMPI PUSH2 0xBFA PUSH2 0xBE9 PUSH2 0xBE3 CALLDATASIZE PUSH1 0x4 PUSH2 0xBA0 JUMP JUMPDEST SWAP1 PUSH2 0x13F4 JUMP JUMPDEST PUSH2 0xBF1 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0xC38 JUMPI PUSH2 0xC35 PUSH2 0xC1E DUP5 PUSH0 DUP6 ADD PUSH2 0xB6E JUMP JUMPDEST SWAP4 PUSH2 0xC2C DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0xB6E JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST CALLVALUE PUSH2 0xC6E JUMPI PUSH2 0xC6A PUSH2 0xC59 PUSH2 0xC53 CALLDATASIZE PUSH1 0x4 PUSH2 0xC03 JUMP JUMPDEST SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0xC61 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xA0 DUP3 DUP5 SUB SLT PUSH2 0xCF8 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xCF3 JUMPI DUP4 PUSH2 0xC9E SWAP2 DUP5 ADD PUSH2 0x440 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xCEE JUMPI DUP2 PUSH2 0xCC1 SWAP2 DUP5 ADD PUSH2 0x47F JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0xCEB PUSH2 0xCD4 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH2 0xCE2 DUP2 PUSH1 0x60 DUP7 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x8CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST CALLVALUE PUSH2 0xD2A JUMPI PUSH2 0xD0D CALLDATASIZE PUSH1 0x4 PUSH2 0xC73 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0xD1C PUSH2 0x222 JUMP JUMPDEST DUP1 PUSH2 0xD26 DUP2 PUSH2 0x913 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xD3B PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD6E JUMPI PUSH2 0xD4E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xD6A PUSH2 0xD59 PUSH2 0xD2F JUMP JUMPDEST PUSH2 0xD61 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD8A PUSH2 0xD85 PUSH2 0xD8F SWAP3 PUSH2 0xD73 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDA9 PUSH14 0x2D9856FC421A9FD095F8B44C49DB PUSH2 0xD76 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDB4 PUSH2 0xD92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDE7 JUMPI PUSH2 0xDC7 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xDE3 PUSH2 0xDD2 PUSH2 0xDAC JUMP JUMPDEST PUSH2 0xDDA PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE03 PUSH2 0xDFE PUSH2 0xE08 SWAP3 PUSH2 0xDEC JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE1B PUSH7 0x52DE6F3E9958F PUSH2 0xDEF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE26 PUSH2 0xE0B JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE59 JUMPI PUSH2 0xE39 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xE55 PUSH2 0xE44 PUSH2 0xE1E JUMP JUMPDEST PUSH2 0xE4C PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE75 PUSH2 0xE70 PUSH2 0xE7A SWAP3 PUSH2 0xE5E JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE8E PUSH8 0xDDC9893B8F69331 PUSH2 0xE61 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE99 PUSH2 0xE7D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xECC JUMPI PUSH2 0xEAC CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xEC8 PUSH2 0xEB7 PUSH2 0xE91 JUMP JUMPDEST PUSH2 0xEBF PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEE8 PUSH2 0xEE3 PUSH2 0xEED SWAP3 PUSH2 0xED1 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEFF PUSH6 0xAC76A57EB9A4 PUSH2 0xED4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF0A PUSH2 0xEF0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF3D JUMPI PUSH2 0xF1D CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xF39 PUSH2 0xF28 PUSH2 0xF02 JUMP JUMPDEST PUSH2 0xF30 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xF4E PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x9F0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF81 JUMPI PUSH2 0xF61 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xF7D PUSH2 0xF6C PUSH2 0xF42 JUMP JUMPDEST PUSH2 0xF74 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x30B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF9D PUSH2 0xF98 PUSH2 0xFA2 SWAP3 PUSH2 0xF86 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFB6 PUSH8 0xDE435A2A433CF48 PUSH2 0xF89 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC1 PUSH2 0xFA5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xFF4 JUMPI PUSH2 0xFD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0xFF0 PUSH2 0xFDF PUSH2 0xFB9 JUMP JUMPDEST PUSH2 0xFE7 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1010 PUSH2 0x100B PUSH2 0x1015 SWAP3 PUSH2 0xFF9 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x102E PUSH13 0x236FEBC16A26943DF322289BE PUSH2 0xFFC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1039 PUSH2 0x1018 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x106C JUMPI PUSH2 0x104C CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x1068 PUSH2 0x1057 PUSH2 0x1031 JUMP JUMPDEST PUSH2 0x105F PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1088 PUSH2 0x1083 PUSH2 0x108D SWAP3 PUSH2 0x1071 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x109C PUSH3 0xB32D1 PUSH2 0x1074 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10A7 PUSH2 0x1090 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x10DA JUMPI PUSH2 0x10BA CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x10D6 PUSH2 0x10C5 PUSH2 0x109F JUMP JUMPDEST PUSH2 0x10CD PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10F6 PUSH2 0x10F1 PUSH2 0x10FB SWAP3 PUSH2 0x10DF JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1110 PUSH9 0x24EFC5D2223B2AB2B2 PUSH2 0x10E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x111B PUSH2 0x10FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x114E JUMPI PUSH2 0x112E CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x114A PUSH2 0x1139 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x1141 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x116A PUSH2 0x1165 PUSH2 0x116F SWAP3 PUSH2 0x1153 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1186 PUSH11 0xD4801858112018C8850BAE PUSH2 0x1156 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1191 PUSH2 0x1172 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x11C4 JUMPI PUSH2 0x11A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x11C0 PUSH2 0x11AF PUSH2 0x1189 JUMP JUMPDEST PUSH2 0x11B7 PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11E0 PUSH2 0x11DB PUSH2 0x11E5 SWAP3 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11FB PUSH10 0x11DE1930CE9AB44B5A1 PUSH2 0x11CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1206 PUSH2 0x11E8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1239 JUMPI PUSH2 0x1219 CALLDATASIZE PUSH1 0x4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x1235 PUSH2 0x1224 PUSH2 0x11FE JUMP JUMPDEST PUSH2 0x122C PUSH2 0x222 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x28F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1257 JUMPI PUSH2 0x1254 SWAP2 PUSH0 ADD PUSH2 0x8A7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22C JUMP JUMPDEST CALLVALUE PUSH2 0x128A JUMPI PUSH2 0x1274 PUSH2 0x126F CALLDATASIZE PUSH1 0x4 PUSH2 0x123E JUMP JUMPDEST PUSH2 0x14BA JUMP JUMPDEST PUSH2 0x127C PUSH2 0x222 JUMP JUMPDEST DUP1 PUSH2 0x1286 DUP2 PUSH2 0x913 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12AE PUSH2 0x12A9 PUSH2 0x12B3 SWAP3 PUSH2 0x1297 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x2D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12BF SWAP1 PUSH2 0x129A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12CA PUSH2 0x1293 JUMP JUMPDEST POP PUSH2 0x12D4 PUSH0 PUSH2 0x12B6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST POP POP POP POP POP POP PUSH2 0x12E9 PUSH2 0x12D7 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x1300 PUSH2 0x1305 SWAP2 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x9BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1312 SWAP1 SLOAD PUSH2 0x12F4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x131D PUSH2 0x1293 JUMP JUMPDEST POP PUSH2 0x1328 PUSH1 0x3 PUSH2 0x1308 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x135B PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x132B JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1379 PUSH2 0x1374 PUSH2 0x137E SWAP3 PUSH2 0x242 JUMP JUMPDEST PUSH2 0x245 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1399 PUSH2 0x1394 PUSH2 0x13A0 SWAP3 PUSH2 0x1365 JUMP JUMPDEST PUSH2 0x1381 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1330 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 PUSH2 0x13BC SWAP1 PUSH2 0x13B7 PUSH2 0x13C1 SWAP5 SWAP4 PUSH0 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0xAB9 JUMP JUMPDEST PUSH2 0x1384 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x13D0 SWAP1 PUSH2 0xA8B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13DF PUSH2 0x13E4 SWAP2 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0xACF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13F1 SWAP1 SLOAD PUSH2 0x13D3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x142E SWAP2 POP PUSH2 0x1419 PUSH2 0x1429 SWAP2 PUSH2 0x1408 PUSH2 0x13C3 JUMP JUMPDEST POP PUSH2 0x1413 PUSH0 SWAP2 PUSH2 0x13C7 JUMP JUMPDEST SWAP1 PUSH2 0xAA3 JUMP JUMPDEST PUSH2 0x1423 PUSH1 0x2 PUSH2 0x1308 JUMP JUMPDEST SWAP1 PUSH2 0xAB9 JUMP JUMPDEST PUSH2 0x13E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x146B SWAP3 POP SWAP1 PUSH2 0x1460 PUSH2 0x145A PUSH2 0x1466 SWAP4 PUSH2 0x1449 PUSH2 0x13C3 JUMP JUMPDEST POP PUSH2 0x1454 PUSH0 SWAP2 PUSH2 0x13C7 JUMP JUMPDEST SWAP1 PUSH2 0xAA3 JUMP JUMPDEST SWAP2 PUSH2 0x13C7 JUMP JUMPDEST SWAP1 PUSH2 0xAB9 JUMP JUMPDEST PUSH2 0x13E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x148D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x132B JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x14AF PUSH2 0x14AA PUSH2 0x14B6 SWAP3 PUSH2 0xA97 JUMP JUMPDEST PUSH2 0x1497 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x146E JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x14C5 SWAP1 PUSH1 0x3 PUSH2 0x149A JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP10 0xB1 BASEFEE 0xD2 GASPRICE PUSH3 0x14657C PUSH26 0x4D57724D06EFC1CC79CF02783F93512A79710750C1B364736F6C PUSH4 0x43000819 STOP CALLER ","sourceMap":"253:4040:54:-:0;;;;;;;;;-1:-1:-1;253:4040:54;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;525:60::-;569:16;;;:::i;:::-;525:60;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;678:52::-;724:6;;;:::i;:::-;678:52;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;796:50::-;842:4;;;:::i;:::-;796:50;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1450:77::-;1496:31;;;:::i;:::-;1450:77;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1611:54::-;1655:10;;;:::i;:::-;1611:54;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1733:51::-;1777:7;;;:::i;:::-;1733:51;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1372:71::-;1416:27;;;:::i;:::-;1372:71;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;592:77::-;638:31;;;:::i;:::-;592:77;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1162:65::-;1206:21;;;:::i;:::-;1162:65;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1672:54::-;1716:10;;;:::i;:::-;1672:54;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1850:23::-;;;;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;284:60::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;253:4040::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1793:19::-;;;;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;923:79::-;969:33;;;:::i;:::-;923:79;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1236:60::-;1280:16;;;:::i;:::-;1236:60;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1303:62::-;1347:18;;;:::i;:::-;1303:62;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;853:61::-;899:15;;;:::i;:::-;853:61;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1819:22::-;;;;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;455:63::-;499:19;;;:::i;:::-;455:63;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1081:74::-;1125:30;;;:::i;:::-;1081:74;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;737:52::-;783:6;;;:::i;:::-;737:52;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1009:65::-;1053:21;;;:::i;:::-;1009:65;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;377:71::-;421:27;;;:::i;:::-;377:71;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1536:68::-;1582:22;;;:::i;:::-;1536:68;:::o;:::-;;;:::i;:::-;;:::o;253:4040::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;4002:95::-;4052:7;;:::i;:::-;4087:1;4079:10;4087:1;4079:10;:::i;:::-;4072:17;:::o;253:4040::-;;;:::o;3776:218::-;;;;;;;3958:4;;:::i;:::-;3982;;3975:11;:::o;253:4040::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4105:89::-;4151:7;;:::i;:::-;4178:8;;;;:::i;:::-;4171:15;:::o;253:4040::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3077:127::-;;3164:25;3077:127;3164:16;:32;3077:127;3164:5;;:16;:::i;:::-;:25;:::i;:::-;:32;:::i;:::-;3077:127::o;253:4040::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;3391:151::-;3500:34;3391:151;;3500:25;:34;3391:151;3473:7;;:::i;:::-;3500:5;3506:18;3500:5;3514:9;3506:18;:::i;:::-;3500:25;;:::i;:::-;3526:7;;;:::i;:::-;3500:34;;:::i;:::-;;:::i;:::-;3493:41;:::o;3212:171::-;3332:43;3212:171;;;3358:16;3332:25;:43;3212:171;3305:7;;:::i;:::-;3332:5;3338:18;3332:5;3346:9;3338:18;:::i;:::-;3332:25;;:::i;:::-;3366:7;3358:16;:::i;:::-;3332:43;;:::i;:::-;;:::i;:::-;3325:50;:::o;253:4040::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;4202:88::-;4262:20;4202:88;4262:20;;:::i;:::-;4202:88::o"},"gasEstimates":{"creation":{"codeDepositCost":"1074600","executionCost":"infinite","totalCost":"infinite"},"external":{"USDC()":"3080","USDC_TO_USDT_RATE()":"infinite","USDC_TO_WBTC_RATE()":"infinite","USDC_TO_WETH_RATE()":"infinite","USDC_TO_WMATIC_RATE()":"infinite","USDT_TO_USDC_RATE()":"infinite","USDT_TO_WBTC_RATE()":"infinite","USDT_TO_WETH_RATE()":"infinite","USDT_TO_WMATIC_RATE()":"infinite","WBTC_TO_USDC_RATE()":"infinite","WBTC_TO_USDT_RATE()":"infinite","WBTC_TO_WETH_RATE()":"infinite","WBTC_TO_WMATIC_RATE()":"infinite","WETH_TO_USDC_RATE()":"infinite","WETH_TO_USDT_RATE()":"infinite","WETH_TO_WBTC_RATE()":"infinite","WETH_TO_WMATIC_RATE()":"infinite","WMATIC_TO_USDC_RATE()":"infinite","WMATIC_TO_USDT_RATE()":"infinite","WMATIC_TO_WBTC_RATE()":"infinite","WMATIC_TO_WETH_RATE()":"infinite","WNATIVE()":"3190","checkRebalance(address[],uint256[],uint256[])":"infinite","getBaluniRouter()":"infinite","getRate(address,address,bool)":"infinite","getRateToEth(address,bool)":"infinite","getTreasury()":"2808","rates(address,address)":"infinite","rebalance(address[],uint256[],address,address,uint256)":"infinite","setRate(address,address,uint256)":"infinite","setTreasury(address)":"infinite","treasury()":"2970"}},"methodIdentifiers":{"USDC()":"89a30271","USDC_TO_USDT_RATE()":"b537d24b","USDC_TO_WBTC_RATE()":"02098719","USDC_TO_WETH_RATE()":"e2338e72","USDC_TO_WMATIC_RATE()":"5107e94e","USDT_TO_USDC_RATE()":"a58a7f8a","USDT_TO_WBTC_RATE()":"97db8e02","USDT_TO_WETH_RATE()":"443dc789","USDT_TO_WMATIC_RATE()":"1a1e4a1f","WBTC_TO_USDC_RATE()":"53ff493e","WBTC_TO_USDT_RATE()":"d135e3be","WBTC_TO_WETH_RATE()":"b9e93810","WBTC_TO_WMATIC_RATE()":"8e5139ed","WETH_TO_USDC_RATE()":"4039e687","WETH_TO_USDT_RATE()":"5fc8cd69","WETH_TO_WBTC_RATE()":"43146399","WETH_TO_WMATIC_RATE()":"e30f6892","WMATIC_TO_USDC_RATE()":"c0184983","WMATIC_TO_USDT_RATE()":"0e091762","WMATIC_TO_WBTC_RATE()":"187029b8","WMATIC_TO_WETH_RATE()":"ae3bcc96","WNATIVE()":"b381cf40","checkRebalance(address[],uint256[],uint256[])":"18cdc49a","getBaluniRouter()":"04cc7325","getRate(address,address,bool)":"802431fb","getRateToEth(address,bool)":"7de4fd10","getTreasury()":"3b19e84a","rates(address,address)":"7b0cf44d","rebalance(address[],uint256[],address,address,uint256)":"84db1dfb","setRate(address,address,uint256)":"5911fb9a","setTreasury(address)":"f0f44260","treasury()":"61d027b3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"usdt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wmatic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wbtc\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"USDC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_TO_USDT_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_TO_WBTC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_TO_WETH_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC_TO_WMATIC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT_TO_USDC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT_TO_WBTC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT_TO_WETH_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT_TO_WMATIC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC_TO_USDC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC_TO_USDT_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC_TO_WETH_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC_TO_WMATIC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_TO_USDC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_TO_USDT_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_TO_WBTC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH_TO_WMATIC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WMATIC_TO_USDC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WMATIC_TO_USDT_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WMATIC_TO_WBTC_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WMATIC_TO_WETH_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WNATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"name\":\"checkRebalance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"getRateToEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/MockRebalancer.sol\":\"MockRebalancer\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Rebalancer.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Rebalancer {\\r\\n    struct RebalanceVars {\\r\\n        uint256 length;\\r\\n        uint256 totalValue;\\r\\n        uint256 finalUsdBalance;\\r\\n        uint256 overweightVaultsLength;\\r\\n        uint256 underweightVaultsLength;\\r\\n        uint256 totalActiveWeight;\\r\\n        uint256 amountOut;\\r\\n        uint256[] overweightVaults;\\r\\n        uint256[] overweightAmounts;\\r\\n        uint256[] underweightVaults;\\r\\n        uint256[] underweightAmounts;\\r\\n        uint256[] balances;\\r\\n    }\\r\\n\\r\\n    // Functions\\r\\n    function rebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address receiver,\\r\\n        address baseAsset\\r\\n    ) external;\\r\\n\\r\\n    function checkRebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address baseAsset\\r\\n    ) external view returns (RebalanceVars memory);\\r\\n\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x61c44c9208ab5c5638160706c4737e8032440e73054a90378d0b65559653d57a\",\"license\":\"GNU AGPLv3\"},\"contracts/mock/MockRebalancer.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '../interfaces/IBaluniV1Rebalancer.sol';\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\nimport '@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol';\\r\\n\\r\\ncontract MockRebalancer {\\r\\n    mapping(address => mapping(address => uint256)) public rates;\\r\\n\\r\\n    // Hardcoded rates\\r\\n    uint256 public constant USDC_TO_WETH_RATE = 256897185735855109411507118;\\r\\n    uint256 public constant USDC_TO_USDT_RATE = 1000983989838925640;\\r\\n    uint256 public constant USDC_TO_WBTC_RATE = 1463657468947761;\\r\\n    uint256 public constant USDC_TO_WMATIC_RATE = 1351148249095651365340914098616;\\r\\n\\r\\n    uint256 public constant WMATIC_TO_USDT_RATE = 747767;\\r\\n    uint256 public constant WMATIC_TO_USDC_RATE = 733905;\\r\\n    uint256 public constant WMATIC_TO_WBTC_RATE = 1080;\\r\\n    uint256 public constant WMATIC_TO_WETH_RATE = 189625582664100;\\r\\n\\r\\n    uint256 public constant WBTC_TO_WMATIC_RATE = 924778033538811846038762973579739;\\r\\n    uint256 public constant WBTC_TO_USDT_RATE = 681360233243484009138;\\r\\n    uint256 public constant WBTC_TO_WETH_RATE = 175476470939493533556108593598;\\r\\n    uint256 public constant WBTC_TO_USDC_RATE = 683003374554512029990;\\r\\n\\r\\n    uint256 public constant USDT_TO_WBTC_RATE = 1457844841452943;\\r\\n    uint256 public constant USDT_TO_USDC_RATE = 998840977600189233;\\r\\n    uint256 public constant USDT_TO_WETH_RATE = 256884484348670192973112135;\\r\\n    uint256 public constant USDT_TO_WMATIC_RATE = 1351542478738482785523886658083;\\r\\n\\r\\n    uint256 public constant WETH_TO_WMATIC_RATE = 5273576410685072782753;\\r\\n    uint256 public constant WETH_TO_USDC_RATE = 3781382154;\\r\\n    uint256 public constant WETH_TO_USDT_RATE = 3749163887;\\r\\n    uint256 public constant WETH_TO_WBTC_RATE = 5561821;\\r\\n\\r\\n    address public USDC;\\r\\n    address public WNATIVE;\\r\\n\\r\\n    address public treasury;\\r\\n\\r\\n    constructor(address usdt, address _usdc, address _wmatic, address weth, address wbtc) {\\r\\n        WNATIVE = _wmatic;\\r\\n        USDC = _usdc;\\r\\n        treasury = msg.sender;\\r\\n\\r\\n        rates[usdt][USDC] = USDT_TO_USDC_RATE;\\r\\n        rates[usdt][WNATIVE] = USDT_TO_WMATIC_RATE;\\r\\n        rates[usdt][wbtc] = USDT_TO_WBTC_RATE;\\r\\n        rates[usdt][weth] = USDT_TO_WETH_RATE;\\r\\n\\r\\n        rates[wbtc][usdt] = WBTC_TO_USDT_RATE;\\r\\n        rates[wbtc][WNATIVE] = WBTC_TO_WMATIC_RATE;\\r\\n        rates[wbtc][USDC] = WBTC_TO_USDC_RATE;\\r\\n        rates[wbtc][weth] = WBTC_TO_WETH_RATE;\\r\\n\\r\\n        rates[USDC][usdt] = USDC_TO_USDT_RATE;\\r\\n        rates[USDC][wbtc] = USDC_TO_WBTC_RATE;\\r\\n        rates[USDC][WNATIVE] = USDC_TO_WMATIC_RATE;\\r\\n        rates[USDC][weth] = USDC_TO_WETH_RATE;\\r\\n\\r\\n        rates[WNATIVE][wbtc] = WMATIC_TO_WBTC_RATE;\\r\\n        rates[WNATIVE][weth] = WMATIC_TO_WETH_RATE;\\r\\n        rates[WNATIVE][USDC] = WMATIC_TO_USDC_RATE;\\r\\n        rates[WNATIVE][usdt] = WMATIC_TO_USDT_RATE;\\r\\n\\r\\n        rates[weth][WNATIVE] = WETH_TO_WMATIC_RATE;\\r\\n        rates[weth][USDC] = WETH_TO_USDC_RATE;\\r\\n        rates[weth][usdt] = WETH_TO_USDC_RATE;\\r\\n        rates[weth][wbtc] = WETH_TO_WBTC_RATE;\\r\\n    }\\r\\n\\r\\n    function setRate(address fromToken, address toToken, uint256 rate) external {\\r\\n        rates[fromToken][toToken] = rate;\\r\\n    }\\r\\n\\r\\n    function getRate(IERC20 fromToken, IERC20 toToken, bool /*isBuying*/) external view returns (uint256) {\\r\\n        return rates[address(fromToken)][address(toToken)];\\r\\n    }\\r\\n\\r\\n    function getRateToEth(IERC20 fromToken, bool /*isBuying*/) external view returns (uint256) {\\r\\n        return rates[address(fromToken)][WNATIVE];\\r\\n    }\\r\\n\\r\\n    function rebalance(\\r\\n        address[] calldata /* assets */,\\r\\n        uint256[] calldata /* weights */,\\r\\n        address /* caller */,\\r\\n        address /* receiver */,\\r\\n        uint256 /* trigger */\\r\\n    ) external {}\\r\\n\\r\\n    function checkRebalance(\\r\\n        address[] calldata /* assets */,\\r\\n        uint256[] calldata /* weights */,\\r\\n        uint256[] calldata /* amounts */\\r\\n    ) external view returns (bool) {\\r\\n        return true;\\r\\n    }\\r\\n\\r\\n    function getBaluniRouter() external view returns (address) {\\r\\n        return address(0);\\r\\n    }\\r\\n\\r\\n    function getTreasury() external view returns (address) {\\r\\n        return treasury;\\r\\n    }\\r\\n\\r\\n    function setTreasury(address _treasury) external {\\r\\n        treasury = _treasury;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x4f3f0b6a3b679b492b794b7efcc94004cc2072b1274acb9e2e5c8cdb265894fc\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":10602,"contract":"contracts/mock/MockRebalancer.sol:MockRebalancer","label":"rates","offset":0,"slot":"0","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":10664,"contract":"contracts/mock/MockRebalancer.sol:MockRebalancer","label":"USDC","offset":0,"slot":"1","type":"t_address"},{"astId":10666,"contract":"contracts/mock/MockRebalancer.sol:MockRebalancer","label":"WNATIVE","offset":0,"slot":"2","type":"t_address"},{"astId":10668,"contract":"contracts/mock/MockRebalancer.sol:MockRebalancer","label":"treasury","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/mock/MockSwapRouter.sol":{"MockSwapRouter":{"abi":[{"inputs":[{"components":[{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct MockSwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct MockSwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":32,"id":null,"parameterSlots":0,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":38,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234601c57600e6020565b6101d961002b82396101d990f35b6026565b60405190565b5f80fdfe60806040526004361015610013575b61014a565b61001d5f3561003c565b8063414bf389146100375763c96b921f0361000e5761011f565b6100ac565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90816101009103126100635790565b610050565b90610100828203126100825761007f915f01610054565b90565b610048565b90565b61009390610087565b9052565b91906100aa905f6020850194019061008a565b565b6100d36100c26100bd366004610068565b610173565b6100ca610042565b91829182610097565b0390f35b908160a09103126100e55790565b610050565b9060208282031261011a575f82013567ffffffffffffffff81116101155761011292016100d7565b90565b61004c565b610048565b6101466101356101303660046100ea565b61018b565b61013d610042565b91829182610097565b0390f35b5f80fd5b5f90565b61015b81610087565b0361016257565b5f80fd5b3561017081610152565b90565b60a06101889161018161014e565b5001610166565b90565b60606101a09161019961014e565b5001610166565b9056fea2646970667358221220d27ce5dbe9261b759fa3fd85110b32c7d4c86f33c025df38c10f6261952c358864736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1C JUMPI PUSH1 0xE PUSH1 0x20 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x2B DUP3 CODECOPY PUSH2 0x1D9 SWAP1 RETURN JUMPDEST PUSH1 0x26 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x14A JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x3C JUMP JUMPDEST DUP1 PUSH4 0x414BF389 EQ PUSH2 0x37 JUMPI PUSH4 0xC96B921F SUB PUSH2 0xE JUMPI PUSH2 0x11F JUMP JUMPDEST PUSH2 0xAC JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 DUP2 PUSH2 0x100 SWAP2 SUB SLT PUSH2 0x63 JUMPI SWAP1 JUMP JUMPDEST PUSH2 0x50 JUMP JUMPDEST SWAP1 PUSH2 0x100 DUP3 DUP3 SUB SLT PUSH2 0x82 JUMPI PUSH2 0x7F SWAP2 PUSH0 ADD PUSH2 0x54 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x93 SWAP1 PUSH2 0x87 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x8A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xD3 PUSH2 0xC2 PUSH2 0xBD CALLDATASIZE PUSH1 0x4 PUSH2 0x68 JUMP JUMPDEST PUSH2 0x173 JUMP JUMPDEST PUSH2 0xCA PUSH2 0x42 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x97 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 DUP2 PUSH1 0xA0 SWAP2 SUB SLT PUSH2 0xE5 JUMPI SWAP1 JUMP JUMPDEST PUSH2 0x50 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x11A JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x115 JUMPI PUSH2 0x112 SWAP3 ADD PUSH2 0xD7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST PUSH2 0x146 PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA JUMP JUMPDEST PUSH2 0x18B JUMP JUMPDEST PUSH2 0x13D PUSH2 0x42 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x97 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x15B DUP2 PUSH2 0x87 JUMP JUMPDEST SUB PUSH2 0x162 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLDATALOAD PUSH2 0x170 DUP2 PUSH2 0x152 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH2 0x188 SWAP2 PUSH2 0x181 PUSH2 0x14E JUMP JUMPDEST POP ADD PUSH2 0x166 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1A0 SWAP2 PUSH2 0x199 PUSH2 0x14E JUMP JUMPDEST POP ADD PUSH2 0x166 JUMP JUMPDEST SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 PUSH29 0xE5DBE9261B759FA3FD85110B32C7D4C86F33C025DF38C10F6261952C35 DUP9 PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"120:947:55:-:0;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_struct_ExactInputParams_calldata":{"entryPoint":234,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_ExactInputParams_calldata_ptr":{"entryPoint":215,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_ExactInputSingleParams_calldata":{"entryPoint":104,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_ExactInputSingleParams_calldata_ptr":{"entryPoint":84,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":151,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":138,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_unbounded":{"entryPoint":66,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint256":{"entryPoint":135,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_exactInput":{"entryPoint":287,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_exactInputSingle":{"entryPoint":172,"id":null,"parameterSlots":0,"returnSlots":0},"fun_exactInput":{"entryPoint":395,"id":11038,"parameterSlots":1,"returnSlots":1},"fun_exactInputSingle":{"entryPoint":371,"id":11026,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_uint256":{"entryPoint":358,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d":{"entryPoint":80,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":330,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":76,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":72,"id":null,"parameterSlots":0,"returnSlots":0},"shift_right_unsigned":{"entryPoint":60,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_uint256":{"entryPoint":338,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_uint256":{"entryPoint":334,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361015610013575b61014a565b61001d5f3561003c565b8063414bf389146100375763c96b921f0361000e5761011f565b6100ac565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90816101009103126100635790565b610050565b90610100828203126100825761007f915f01610054565b90565b610048565b90565b61009390610087565b9052565b91906100aa905f6020850194019061008a565b565b6100d36100c26100bd366004610068565b610173565b6100ca610042565b91829182610097565b0390f35b908160a09103126100e55790565b610050565b9060208282031261011a575f82013567ffffffffffffffff81116101155761011292016100d7565b90565b61004c565b610048565b6101466101356101303660046100ea565b61018b565b61013d610042565b91829182610097565b0390f35b5f80fd5b5f90565b61015b81610087565b0361016257565b5f80fd5b3561017081610152565b90565b60a06101889161018161014e565b5001610166565b90565b60606101a09161019961014e565b5001610166565b9056fea2646970667358221220d27ce5dbe9261b759fa3fd85110b32c7d4c86f33c025df38c10f6261952c358864736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x14A JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x3C JUMP JUMPDEST DUP1 PUSH4 0x414BF389 EQ PUSH2 0x37 JUMPI PUSH4 0xC96B921F SUB PUSH2 0xE JUMPI PUSH2 0x11F JUMP JUMPDEST PUSH2 0xAC JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 DUP2 PUSH2 0x100 SWAP2 SUB SLT PUSH2 0x63 JUMPI SWAP1 JUMP JUMPDEST PUSH2 0x50 JUMP JUMPDEST SWAP1 PUSH2 0x100 DUP3 DUP3 SUB SLT PUSH2 0x82 JUMPI PUSH2 0x7F SWAP2 PUSH0 ADD PUSH2 0x54 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x93 SWAP1 PUSH2 0x87 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x8A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xD3 PUSH2 0xC2 PUSH2 0xBD CALLDATASIZE PUSH1 0x4 PUSH2 0x68 JUMP JUMPDEST PUSH2 0x173 JUMP JUMPDEST PUSH2 0xCA PUSH2 0x42 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x97 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 DUP2 PUSH1 0xA0 SWAP2 SUB SLT PUSH2 0xE5 JUMPI SWAP1 JUMP JUMPDEST PUSH2 0x50 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x11A JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x115 JUMPI PUSH2 0x112 SWAP3 ADD PUSH2 0xD7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST PUSH2 0x146 PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA JUMP JUMPDEST PUSH2 0x18B JUMP JUMPDEST PUSH2 0x13D PUSH2 0x42 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x97 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x15B DUP2 PUSH2 0x87 JUMP JUMPDEST SUB PUSH2 0x162 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLDATALOAD PUSH2 0x170 DUP2 PUSH2 0x152 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH2 0x188 SWAP2 PUSH2 0x181 PUSH2 0x14E JUMP JUMPDEST POP ADD PUSH2 0x166 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1A0 SWAP2 PUSH2 0x199 PUSH2 0x14E JUMP JUMPDEST POP ADD PUSH2 0x166 JUMP JUMPDEST SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 PUSH29 0xE5DBE9261B759FA3FD85110B32C7D4C86F33C025DF38C10F6261952C35 DUP9 PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"120:947:55:-:0;;;;;;;;;-1:-1:-1;120:947:55;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::o;606:231::-;814:15;;606:231;698:17;;:::i;:::-;814:6;:15;;:::i;:::-;807:22;:::o;845:219::-;1041:15;;845:219;925:17;;:::i;:::-;1041:6;:15;;:::i;:::-;1034:22;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"94600","executionCost":"177","totalCost":"94777"},"external":{"exactInput((address[],address,uint256,uint256,uint256))":"infinite","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"infinite"}},"methodIdentifiers":{"exactInput((address[],address,uint256,uint256,uint256))":"c96b921f","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct MockSwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct MockSwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/MockSwapRouter.sol\":\"MockSwapRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"contracts/mock/MockSwapRouter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\n\\r\\ncontract MockSwapRouter {\\r\\n    struct ExactInputSingleParams {\\r\\n        address tokenIn;\\r\\n        address tokenOut;\\r\\n        uint24 fee;\\r\\n        address recipient;\\r\\n        uint256 deadline;\\r\\n        uint256 amountIn;\\r\\n        uint256 amountOutMinimum;\\r\\n        uint160 sqrtPriceLimitX96;\\r\\n    }\\r\\n\\r\\n    struct ExactInputParams {\\r\\n        address[] path;\\r\\n        address recipient;\\r\\n        uint256 deadline;\\r\\n        uint256 amountIn;\\r\\n        uint256 amountOutMinimum;\\r\\n    }\\r\\n\\r\\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut) {\\r\\n        // Mock implementation returning amountIn as amountOut for simplicity\\r\\n        return params.amountIn;\\r\\n    }\\r\\n\\r\\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut) {\\r\\n        // Mock implementation returning amountIn as amountOut for simplicity\\r\\n        return params.amountIn;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0xb9073f5e61ceb79fa12dc4de6be1f30ba30687ec81b16de0806ea3b40560a83a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/mock/MockToken.sol":{"MockToken":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"abi_decode_available_length_string_fromMemory":{"entryPoint":213,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":267,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_stringt_stringt_uint8_fromMemory":{"entryPoint":343,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint8_fromMemory":{"entryPoint":328,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":132,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":53,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_string":{"entryPoint":169,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":663,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":597,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":846,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_uint256":{"entryPoint":723,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":302,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":815,"id":null,"parameterSlots":2,"returnSlots":0},"constructor_ERC20":{"entryPoint":1193,"id":2110,"parameterSlots":2,"returnSlots":0},"constructor_MockToken":{"entryPoint":574,"id":11064,"parameterSlots":3,"returnSlots":0},"convert_uint256_to_uint256":{"entryPoint":726,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint8_to_uint8":{"entryPoint":511,"id":null,"parameterSlots":1,"returnSlots":1},"copy_arguments_for_constructor_object_MockToken":{"entryPoint":446,"id":null,"parameterSlots":0,"returnSlots":3},"copy_byte_array_to_storage_from_string_to_string":{"entryPoint":976,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":202,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_ceil":{"entryPoint":672,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":621,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":958,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":93,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":508,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":937,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":601,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":73,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_uint256":{"entryPoint":754,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint8":{"entryPoint":539,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":161,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":165,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":157,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":59,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":153,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":63,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":481,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":682,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":933,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_uint256":{"entryPoint":795,"id":null,"parameterSlots":2,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":686,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":486,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_string_to_string":{"entryPoint":1181,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint8_to_uint8":{"entryPoint":542,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_uint256_to_uint256":{"entryPoint":757,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_uint8":{"entryPoint":308,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_uint256":{"entryPoint":791,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6080604052346100305761001a6100146101be565b9161023e565b610022610035565b610f216104c28239610f2190f35b61003b565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100679061003f565b810190811060018060401b0382111761007f57604052565b610049565b90610097610090610035565b928361005d565b565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b60018060401b0381116100c5576100c160209161003f565b0190565b610049565b90825f9392825e0152565b909291926100ea6100e5826100a9565b610084565b9381855260208501908284011161010657610104926100ca565b565b6100a5565b9080601f8301121561012957816020610126935191016100d5565b90565b6100a1565b60ff1690565b61013d8161012e565b0361014457565b5f80fd5b9050519061015582610134565b565b90916060828403126101b9575f82015160018060401b0381116101b4578361018091840161010b565b9260208301519060018060401b0382116101af576101a3816101ac93860161010b565b93604001610148565b90565b61009d565b61009d565b610099565b6101dc6113e3803803806101d181610084565b928339810190610157565b909192565b5f1b90565b906101f260ff916101e1565b9181191691161790565b90565b61021361020e6102189261012e565b6101fc565b61012e565b90565b90565b9061023361022e61023a926101ff565b61021b565b82546101e6565b9055565b610253929161024c916104a9565b600561021e565b565b5190565b634e487b7160e01b5f52602260045260245ffd5b906001600283049216801561028d575b602083101461028857565b610259565b91607f169161027d565b5f5260205f2090565b601f602091010490565b1b90565b919060086102c99102916102c35f19846102aa565b926102aa565b9181191691161790565b90565b6102ea6102e56102ef926102d3565b6101fc565b6102d3565b90565b90565b919061030b610306610313936102d6565b6102f2565b9083546102ae565b9055565b5f90565b61032d91610327610317565b916102f5565b565b5b81811061033b575050565b806103485f60019361031b565b01610330565b9190601f811161035e575b505050565b61036a61038f93610297565b906020610376846102a0565b83019310610397575b610388906102a0565b019061032f565b5f8080610359565b91506103888192905061037f565b1c90565b906103b9905f19906008026103a5565b191690565b816103c8916103a9565b906002021790565b906103da81610255565b9060018060401b038211610498576103fc826103f6855461026d565b8561034e565b602090601f83116001146104305791809161041f935f92610424575b50506103be565b90555b565b90915001515f80610418565b601f1983169161043f85610297565b925f5b81811061048057509160029391856001969410610466575b50505002019055610422565b610476910151601f8416906103a9565b90555f808061045a565b91936020600181928787015181550195019201610442565b610049565b906104a7916103d0565b565b906104b86104bf92600361049d565b600461049d565b56fe60806040526004361015610013575b6104f5565b61001d5f356100bc565b806306fdde03146100b7578063095ea7b3146100b257806318160ddd146100ad57806323b872dd146100a8578063313ce567146100a357806340c10f191461009e57806370a082311461009957806395d89b4114610094578063a9059cbb1461008f5763dd62ed3e0361000e576104bf565b61045c565b610427565b6103f2565b6103a0565b610366565b610308565b610299565b610241565b61014a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f9103126100da57565b6100cc565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b61012061012960209361012e93610117816100df565b938480936100e3565b958691016100ec565b6100f7565b0190565b6101479160208201915f818403910152610101565b90565b3461017a5761015a3660046100d0565b610176610165610684565b61016d6100c2565b91829182610132565b0390f35b6100c8565b73ffffffffffffffffffffffffffffffffffffffff1690565b6101a19061017f565b90565b6101ad81610198565b036101b457565b5f80fd5b905035906101c5826101a4565b565b90565b6101d3816101c7565b036101da57565b5f80fd5b905035906101eb826101ca565b565b91906040838203126102155780610209610212925f86016101b8565b936020016101de565b90565b6100cc565b151590565b6102289061021a565b9052565b919061023f905f6020850194019061021f565b565b346102725761026e61025d6102573660046101ed565b9061069e565b6102656100c2565b9182918261022c565b0390f35b6100c8565b610280906101c7565b9052565b9190610297905f60208501940190610277565b565b346102c9576102a93660046100d0565b6102c56102b46106ed565b6102bc6100c2565b91829182610284565b0390f35b6100c8565b9091606082840312610303576103006102e9845f85016101b8565b936102f781602086016101b8565b936040016101de565b90565b6100cc565b346103395761033561032461031e3660046102ce565b91610703565b61032c6100c2565b9182918261022c565b0390f35b6100c8565b60ff1690565b61034d9061033e565b9052565b9190610364905f60208501940190610344565b565b34610396576103763660046100d0565b61039261038161075d565b6103896100c2565b91829182610351565b0390f35b6100c8565b5f0190565b346103cf576103b96103b33660046101ed565b90610773565b6103c16100c2565b806103cb8161039b565b0390f35b6100c8565b906020828203126103ed576103ea915f016101b8565b90565b6100cc565b346104225761041e61040d6104083660046103d4565b6107cc565b6104156100c2565b91829182610284565b0390f35b6100c8565b34610457576104373660046100d0565b6104536104426107ea565b61044a6100c2565b91829182610132565b0390f35b6100c8565b3461048d576104896104786104723660046101ed565b90610800565b6104806100c2565b9182918261022c565b0390f35b6100c8565b91906040838203126104ba57806104ae6104b7925f86016101b8565b936020016101b8565b90565b6100cc565b346104f0576104ec6104db6104d5366004610492565b90610838565b6104e36100c2565b91829182610284565b0390f35b6100c8565b5f80fd5b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b906001600283049216801561054b575b602083101461054657565b6104fe565b91607f169161053b565b60209181520190565b5f5260205f2090565b905f929180549061058161057a8361052b565b8094610555565b916001811690815f146105d8575060011461059c575b505050565b6105a9919293945061055e565b915f925b8184106105c057505001905f8080610597565b600181602092959395548486015201910192906105ad565b92949550505060ff19168252151560200201905f8080610597565b906105fd91610567565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90610637906100f7565b810190811067ffffffffffffffff82111761065157604052565b610600565b9061067661066f926106666100c2565b938480926105f3565b038361062d565b565b61068190610656565b90565b61068c6104f9565b506106976003610678565b90565b5f90565b6106bb916106aa61069a565b506106b3610864565b919091610871565b600190565b5f90565b5f1c90565b90565b6106d86106dd916106c4565b6106c9565b90565b6106ea90546106cc565b90565b6106f56106c0565b5061070060026106e0565b90565b9161072d9261071061069a565b5061072561071c610864565b829084916108ce565b9190916109d9565b600190565b5f90565b60ff1690565b61074861074d916106c4565b610736565b90565b61075a905461073c565b90565b610765610732565b506107706005610750565b90565b9061077d91610ab6565b565b90565b61079661079161079b9261017f565b61077f565b61017f565b90565b6107a790610782565b90565b6107b39061079e565b90565b906107c0906107aa565b5f5260205260405f2090565b6107e26107e7916107db6106c0565b505f6107b6565b6106e0565b90565b6107f26104f9565b506107fd6004610678565b90565b61081d9161080c61069a565b50610815610864565b9190916109d9565b600190565b9061082c906107aa565b5f5260205260405f2090565b61085d916108536108589261084b6106c0565b506001610822565b6107b6565b6106e0565b90565b5f90565b61086c610860565b503390565b9161087f9291600192610bad565b565b61088a90610198565b9052565b6040906108b76108be94969593966108ad60608401985f850190610881565b6020830190610277565b0190610277565b565b906108cb91036101c7565b90565b9291926108dc818390610838565b908161091061090a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101c7565b916101c7565b0361091d575b5050509050565b8161093061092a876101c7565b916101c7565b106109565761094d93946109459193926108c0565b905f92610bad565b805f8080610916565b50610995849291926109666100c2565b9384937ffb8f41b20000000000000000000000000000000000000000000000000000000085526004850161088e565b0390fd5b90565b6109b06109ab6109b592610999565b61077f565b61017f565b90565b6109c19061099c565b90565b91906109d7905f60208501940190610881565b565b91826109f56109ef6109ea5f6109b8565b610198565b91610198565b14610a6f5781610a15610a0f610a0a5f6109b8565b610198565b91610198565b14610a2857610a2692919091610d5c565b565b610a6b610a345f6109b8565b610a3c6100c2565b9182917fec442f05000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b610ab2610a7b5f6109b8565b610a836100c2565b9182917f96c6fd1e000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b80610ad1610acb610ac65f6109b8565b610198565b91610198565b14610aed57610aeb91610ae35f6109b8565b919091610d5c565b565b610b30610af95f6109b8565b610b016100c2565b9182917fec442f05000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b5f1b90565b90610b647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91610b34565b9181191691161790565b610b82610b7d610b87926101c7565b61077f565b6101c7565b90565b90565b90610ba2610b9d610ba992610b6e565b610b8a565b8254610b39565b9055565b909281610bca610bc4610bbf5f6109b8565b610198565b91610198565b14610cb55783610bea610be4610bdf5f6109b8565b610198565b91610198565b14610c6e57610c0e83610c09610c0260018690610822565b87906107b6565b610b8d565b610c18575b505050565b919091610c63610c51610c4b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925936107aa565b936107aa565b93610c5a6100c2565b91829182610284565b0390a35f8080610c13565b610cb1610c7a5f6109b8565b610c826100c2565b9182917f94280d62000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b610cf8610cc15f6109b8565b610cc96100c2565b9182917fe602df05000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610d38610d3e919392936101c7565b926101c7565b8201809211610d4957565b610cfc565b90610d5991016101c7565b90565b91909180610d7a610d74610d6f5f6109b8565b610198565b91610198565b145f14610e5b57610d9e610d9783610d9260026106e0565b610d29565b6002610b8d565b5b82610dba610db4610daf5f6109b8565b610198565b91610198565b145f14610e2f57610dde610dd783610dd260026106e0565b6108c0565b6002610b8d565b5b919091610e2a610e18610e127fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef936107aa565b936107aa565b93610e216100c2565b91829182610284565b0390a3565b610e5682610e50610e415f87906107b6565b91610e4b836106e0565b610d4e565b90610b8d565b610ddf565b610e6e610e695f83906107b6565b6106e0565b80610e81610e7b856101c7565b916101c7565b10610ea957610e94610ea49184906108c0565b610e9f5f84906107b6565b610b8d565b610d9f565b90610ee7909192610eb86100c2565b9384937fe450d38c0000000000000000000000000000000000000000000000000000000085526004850161088e565b0390fdfea2646970667358221220848485739fd482f9d3ef4d81d7d7814f0a15664eb05fa1f139f4351e3da5030a64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x30 JUMPI PUSH2 0x1A PUSH2 0x14 PUSH2 0x1BE JUMP JUMPDEST SWAP2 PUSH2 0x23E JUMP JUMPDEST PUSH2 0x22 PUSH2 0x35 JUMP JUMPDEST PUSH2 0xF21 PUSH2 0x4C2 DUP3 CODECOPY PUSH2 0xF21 SWAP1 RETURN JUMPDEST PUSH2 0x3B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x67 SWAP1 PUSH2 0x3F JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x7F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x49 JUMP JUMPDEST SWAP1 PUSH2 0x97 PUSH2 0x90 PUSH2 0x35 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x5D JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xC5 JUMPI PUSH2 0xC1 PUSH1 0x20 SWAP2 PUSH2 0x3F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x49 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xEA PUSH2 0xE5 DUP3 PUSH2 0xA9 JUMP JUMPDEST PUSH2 0x84 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x106 JUMPI PUSH2 0x104 SWAP3 PUSH2 0xCA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA5 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x129 JUMPI DUP2 PUSH1 0x20 PUSH2 0x126 SWAP4 MLOAD SWAP2 ADD PUSH2 0xD5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13D DUP2 PUSH2 0x12E JUMP JUMPDEST SUB PUSH2 0x144 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x155 DUP3 PUSH2 0x134 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x1B9 JUMPI PUSH0 DUP3 ADD MLOAD PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP4 PUSH2 0x180 SWAP2 DUP5 ADD PUSH2 0x10B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1AF JUMPI PUSH2 0x1A3 DUP2 PUSH2 0x1AC SWAP4 DUP7 ADD PUSH2 0x10B JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x148 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9D JUMP JUMPDEST PUSH2 0x9D JUMP JUMPDEST PUSH2 0x99 JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x13E3 DUP1 CODESIZE SUB DUP1 PUSH2 0x1D1 DUP2 PUSH2 0x84 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH2 0x157 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F2 PUSH1 0xFF SWAP2 PUSH2 0x1E1 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x213 PUSH2 0x20E PUSH2 0x218 SWAP3 PUSH2 0x12E JUMP JUMPDEST PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x12E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x233 PUSH2 0x22E PUSH2 0x23A SWAP3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1E6 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x253 SWAP3 SWAP2 PUSH2 0x24C SWAP2 PUSH2 0x4A9 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x21E JUMP JUMPDEST JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x28D JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x288 JUMPI JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x27D JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x2C9 SWAP2 MUL SWAP2 PUSH2 0x2C3 PUSH0 NOT DUP5 PUSH2 0x2AA JUMP JUMPDEST SWAP3 PUSH2 0x2AA JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2EA PUSH2 0x2E5 PUSH2 0x2EF SWAP3 PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x2D3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x30B PUSH2 0x306 PUSH2 0x313 SWAP4 PUSH2 0x2D6 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x2AE JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x32D SWAP2 PUSH2 0x327 PUSH2 0x317 JUMP JUMPDEST SWAP2 PUSH2 0x2F5 JUMP JUMPDEST JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x33B JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x348 PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x31B JUMP JUMPDEST ADD PUSH2 0x330 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x35E JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x36A PUSH2 0x38F SWAP4 PUSH2 0x297 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x376 DUP5 PUSH2 0x2A0 JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x397 JUMPI JUMPDEST PUSH2 0x388 SWAP1 PUSH2 0x2A0 JUMP JUMPDEST ADD SWAP1 PUSH2 0x32F JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x359 JUMP JUMPDEST SWAP2 POP PUSH2 0x388 DUP2 SWAP3 SWAP1 POP PUSH2 0x37F JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3B9 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0x3A5 JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x3C8 SWAP2 PUSH2 0x3A9 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3DA DUP2 PUSH2 0x255 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x498 JUMPI PUSH2 0x3FC DUP3 PUSH2 0x3F6 DUP6 SLOAD PUSH2 0x26D JUMP JUMPDEST DUP6 PUSH2 0x34E JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x430 JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x41F SWAP4 PUSH0 SWAP3 PUSH2 0x424 JUMPI JUMPDEST POP POP PUSH2 0x3BE JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x418 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x43F DUP6 PUSH2 0x297 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x480 JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x466 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x422 JUMP JUMPDEST PUSH2 0x476 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x3A9 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x45A JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x442 JUMP JUMPDEST PUSH2 0x49 JUMP JUMPDEST SWAP1 PUSH2 0x4A7 SWAP2 PUSH2 0x3D0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4B8 PUSH2 0x4BF SWAP3 PUSH1 0x3 PUSH2 0x49D JUMP JUMPDEST PUSH1 0x4 PUSH2 0x49D JUMP JUMPDEST JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x4F5 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x9E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8F JUMPI PUSH4 0xDD62ED3E SUB PUSH2 0xE JUMPI PUSH2 0x4BF JUMP JUMPDEST PUSH2 0x45C JUMP JUMPDEST PUSH2 0x427 JUMP JUMPDEST PUSH2 0x3F2 JUMP JUMPDEST PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x366 JUMP JUMPDEST PUSH2 0x308 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH2 0x14A JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0xDA JUMPI JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x129 PUSH1 0x20 SWAP4 PUSH2 0x12E SWAP4 PUSH2 0x117 DUP2 PUSH2 0xDF JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0xE3 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0xEC JUMP JUMPDEST PUSH2 0xF7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x147 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x17A JUMPI PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x165 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x16D PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x132 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1A1 SWAP1 PUSH2 0x17F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1AD DUP2 PUSH2 0x198 JUMP JUMPDEST SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1C5 DUP3 PUSH2 0x1A4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D3 DUP2 PUSH2 0x1C7 JUMP JUMPDEST SUB PUSH2 0x1DA JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1EB DUP3 PUSH2 0x1CA JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x215 JUMPI DUP1 PUSH2 0x209 PUSH2 0x212 SWAP3 PUSH0 DUP7 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x1DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x228 SWAP1 PUSH2 0x21A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x23F SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x21F JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x272 JUMPI PUSH2 0x26E PUSH2 0x25D PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST SWAP1 PUSH2 0x69E JUMP JUMPDEST PUSH2 0x265 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH2 0x280 SWAP1 PUSH2 0x1C7 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x297 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x277 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x2C9 JUMPI PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x2C5 PUSH2 0x2B4 PUSH2 0x6ED JUMP JUMPDEST PUSH2 0x2BC PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x303 JUMPI PUSH2 0x300 PUSH2 0x2E9 DUP5 PUSH0 DUP6 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP4 PUSH2 0x2F7 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x1DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST CALLVALUE PUSH2 0x339 JUMPI PUSH2 0x335 PUSH2 0x324 PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x2CE JUMP JUMPDEST SWAP2 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x32C PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x34D SWAP1 PUSH2 0x33E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x364 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x344 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x396 JUMPI PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x392 PUSH2 0x381 PUSH2 0x75D JUMP JUMPDEST PUSH2 0x389 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x351 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3CF JUMPI PUSH2 0x3B9 PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST SWAP1 PUSH2 0x773 JUMP JUMPDEST PUSH2 0x3C1 PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH2 0x3CB DUP2 PUSH2 0x39B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x3ED JUMPI PUSH2 0x3EA SWAP2 PUSH0 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST CALLVALUE PUSH2 0x422 JUMPI PUSH2 0x41E PUSH2 0x40D PUSH2 0x408 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x415 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST CALLVALUE PUSH2 0x457 JUMPI PUSH2 0x437 CALLDATASIZE PUSH1 0x4 PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x442 PUSH2 0x7EA JUMP JUMPDEST PUSH2 0x44A PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x132 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST CALLVALUE PUSH2 0x48D JUMPI PUSH2 0x489 PUSH2 0x478 PUSH2 0x472 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST SWAP1 PUSH2 0x800 JUMP JUMPDEST PUSH2 0x480 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x4BA JUMPI DUP1 PUSH2 0x4AE PUSH2 0x4B7 SWAP3 PUSH0 DUP7 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST CALLVALUE PUSH2 0x4F0 JUMPI PUSH2 0x4EC PUSH2 0x4DB PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x492 JUMP JUMPDEST SWAP1 PUSH2 0x838 JUMP JUMPDEST PUSH2 0x4E3 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x54B JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x546 JUMPI JUMP JUMPDEST PUSH2 0x4FE JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x53B JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x581 PUSH2 0x57A DUP4 PUSH2 0x52B JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x555 JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x5D8 JUMPI POP PUSH1 0x1 EQ PUSH2 0x59C JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5A9 SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x55E JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x5C0 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x597 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x5AD JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x597 JUMP JUMPDEST SWAP1 PUSH2 0x5FD SWAP2 PUSH2 0x567 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x637 SWAP1 PUSH2 0xF7 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x651 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x600 JUMP JUMPDEST SWAP1 PUSH2 0x676 PUSH2 0x66F SWAP3 PUSH2 0x666 PUSH2 0xC2 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x5F3 JUMP JUMPDEST SUB DUP4 PUSH2 0x62D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x681 SWAP1 PUSH2 0x656 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x68C PUSH2 0x4F9 JUMP JUMPDEST POP PUSH2 0x697 PUSH1 0x3 PUSH2 0x678 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x6BB SWAP2 PUSH2 0x6AA PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0x6B3 PUSH2 0x864 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x871 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6D8 PUSH2 0x6DD SWAP2 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x6C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6EA SWAP1 SLOAD PUSH2 0x6CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6F5 PUSH2 0x6C0 JUMP JUMPDEST POP PUSH2 0x700 PUSH1 0x2 PUSH2 0x6E0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x72D SWAP3 PUSH2 0x710 PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0x725 PUSH2 0x71C PUSH2 0x864 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x8CE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x748 PUSH2 0x74D SWAP2 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x736 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x75A SWAP1 SLOAD PUSH2 0x73C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x765 PUSH2 0x732 JUMP JUMPDEST POP PUSH2 0x770 PUSH1 0x5 PUSH2 0x750 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x77D SWAP2 PUSH2 0xAB6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x796 PUSH2 0x791 PUSH2 0x79B SWAP3 PUSH2 0x17F JUMP JUMPDEST PUSH2 0x77F JUMP JUMPDEST PUSH2 0x17F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7A7 SWAP1 PUSH2 0x782 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7B3 SWAP1 PUSH2 0x79E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7C0 SWAP1 PUSH2 0x7AA JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x7E2 PUSH2 0x7E7 SWAP2 PUSH2 0x7DB PUSH2 0x6C0 JUMP JUMPDEST POP PUSH0 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F2 PUSH2 0x4F9 JUMP JUMPDEST POP PUSH2 0x7FD PUSH1 0x4 PUSH2 0x678 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x81D SWAP2 PUSH2 0x80C PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0x815 PUSH2 0x864 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x82C SWAP1 PUSH2 0x7AA JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x85D SWAP2 PUSH2 0x853 PUSH2 0x858 SWAP3 PUSH2 0x84B PUSH2 0x6C0 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x86C PUSH2 0x860 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x87F SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0xBAD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x88A SWAP1 PUSH2 0x198 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x8B7 PUSH2 0x8BE SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x8AD PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x881 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x277 JUMP JUMPDEST ADD SWAP1 PUSH2 0x277 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x8CB SWAP2 SUB PUSH2 0x1C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x8DC DUP2 DUP4 SWAP1 PUSH2 0x838 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x910 PUSH2 0x90A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1C7 JUMP JUMPDEST SWAP2 PUSH2 0x1C7 JUMP JUMPDEST SUB PUSH2 0x91D JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x930 PUSH2 0x92A DUP8 PUSH2 0x1C7 JUMP JUMPDEST SWAP2 PUSH2 0x1C7 JUMP JUMPDEST LT PUSH2 0x956 JUMPI PUSH2 0x94D SWAP4 SWAP5 PUSH2 0x945 SWAP2 SWAP4 SWAP3 PUSH2 0x8C0 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0xBAD JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x916 JUMP JUMPDEST POP PUSH2 0x995 DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x966 PUSH2 0xC2 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x88E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9B0 PUSH2 0x9AB PUSH2 0x9B5 SWAP3 PUSH2 0x999 JUMP JUMPDEST PUSH2 0x77F JUMP JUMPDEST PUSH2 0x17F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9C1 SWAP1 PUSH2 0x99C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x9D7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x881 JUMP JUMPDEST JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x9F5 PUSH2 0x9EF PUSH2 0x9EA PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xA6F JUMPI DUP2 PUSH2 0xA15 PUSH2 0xA0F PUSH2 0xA0A PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xA28 JUMPI PUSH2 0xA26 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0xD5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA6B PUSH2 0xA34 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xA3C PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xAB2 PUSH2 0xA7B PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xA83 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xAD1 PUSH2 0xACB PUSH2 0xAC6 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xAED JUMPI PUSH2 0xAEB SWAP2 PUSH2 0xAE3 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0xD5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB30 PUSH2 0xAF9 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xB01 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB64 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xB34 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xB82 PUSH2 0xB7D PUSH2 0xB87 SWAP3 PUSH2 0x1C7 JUMP JUMPDEST PUSH2 0x77F JUMP JUMPDEST PUSH2 0x1C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBA2 PUSH2 0xB9D PUSH2 0xBA9 SWAP3 PUSH2 0xB6E JUMP JUMPDEST PUSH2 0xB8A JUMP JUMPDEST DUP3 SLOAD PUSH2 0xB39 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 SWAP3 DUP2 PUSH2 0xBCA PUSH2 0xBC4 PUSH2 0xBBF PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xCB5 JUMPI DUP4 PUSH2 0xBEA PUSH2 0xBE4 PUSH2 0xBDF PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xC6E JUMPI PUSH2 0xC0E DUP4 PUSH2 0xC09 PUSH2 0xC02 PUSH1 0x1 DUP7 SWAP1 PUSH2 0x822 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0xB8D JUMP JUMPDEST PUSH2 0xC18 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0xC63 PUSH2 0xC51 PUSH2 0xC4B PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 PUSH2 0xC5A PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0xCB1 PUSH2 0xC7A PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xC82 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xCF8 PUSH2 0xCC1 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xCC9 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD38 PUSH2 0xD3E SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x1C7 JUMP JUMPDEST SWAP3 PUSH2 0x1C7 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0xD49 JUMPI JUMP JUMPDEST PUSH2 0xCFC JUMP JUMPDEST SWAP1 PUSH2 0xD59 SWAP2 ADD PUSH2 0x1C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 DUP1 PUSH2 0xD7A PUSH2 0xD74 PUSH2 0xD6F PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0xE5B JUMPI PUSH2 0xD9E PUSH2 0xD97 DUP4 PUSH2 0xD92 PUSH1 0x2 PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xB8D JUMP JUMPDEST JUMPDEST DUP3 PUSH2 0xDBA PUSH2 0xDB4 PUSH2 0xDAF PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0xE2F JUMPI PUSH2 0xDDE PUSH2 0xDD7 DUP4 PUSH2 0xDD2 PUSH1 0x2 PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xB8D JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0xE2A PUSH2 0xE18 PUSH2 0xE12 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 PUSH2 0xE21 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0xE56 DUP3 PUSH2 0xE50 PUSH2 0xE41 PUSH0 DUP8 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST SWAP2 PUSH2 0xE4B DUP4 PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0xD4E JUMP JUMPDEST SWAP1 PUSH2 0xB8D JUMP JUMPDEST PUSH2 0xDDF JUMP JUMPDEST PUSH2 0xE6E PUSH2 0xE69 PUSH0 DUP4 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST DUP1 PUSH2 0xE81 PUSH2 0xE7B DUP6 PUSH2 0x1C7 JUMP JUMPDEST SWAP2 PUSH2 0x1C7 JUMP JUMPDEST LT PUSH2 0xEA9 JUMPI PUSH2 0xE94 PUSH2 0xEA4 SWAP2 DUP5 SWAP1 PUSH2 0x8C0 JUMP JUMPDEST PUSH2 0xE9F PUSH0 DUP5 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0xB8D JUMP JUMPDEST PUSH2 0xD9F JUMP JUMPDEST SWAP1 PUSH2 0xEE7 SWAP1 SWAP2 SWAP3 PUSH2 0xEB8 PUSH2 0xC2 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x88E JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 DUP5 DUP6 PUSH20 0x9FD482F9D3EF4D81D7D7814F0A15664EB05FA1F1 CODECOPY DELEGATECALL CALLDATALOAD 0x1E RETURNDATASIZE 0xA5 SUB EXP PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"119:394:56:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;186:131::-;288:21;186:131;;;;;:::i;:::-;288:21;;:::i;:::-;186:131::o;119:394::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;1896:113:11:-;;1962:13;1985:17;1896:113;1962:13;;:::i;:::-;1985:17;;:::i;:::-;1896:113::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":208,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":440,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":1170,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":718,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_uint256":{"entryPoint":493,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_address":{"entryPoint":980,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":478,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_string_storage":{"entryPoint":1523,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":2177,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_uint256_uint256":{"entryPoint":2190,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bool":{"entryPoint":556,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":543,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":306,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":257,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":1383,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple":{"entryPoint":923,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":2500,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":644,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":631,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint8":{"entryPoint":849,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint8_to_uint8":{"entryPoint":836,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_unbounded":{"entryPoint":194,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":1374,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":223,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":1365,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string_fromStack":{"entryPoint":227,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":3369,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":408,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":538,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":1737,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint8":{"entryPoint":1846,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":2457,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":383,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":455,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":830,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_address":{"entryPoint":1962,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_string_storage_to_string":{"entryPoint":1656,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":2488,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":2460,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1950,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1922,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":2926,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_string":{"entryPoint":1622,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":236,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_allowance":{"entryPoint":1215,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":577,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":1010,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_decimals":{"entryPoint":870,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mint":{"entryPoint":928,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_name":{"entryPoint":330,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_symbol":{"entryPoint":1063,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":665,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transfer":{"entryPoint":1116,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":776,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1323,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":1740,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint8":{"entryPoint":1852,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":1581,"id":null,"parameterSlots":2,"returnSlots":0},"fun__approve":{"entryPoint":2161,"id":2464,"parameterSlots":3,"returnSlots":0},"fun__mint":{"entryPoint":2742,"id":2413,"parameterSlots":2,"returnSlots":0},"fun_allowance":{"entryPoint":2104,"id":2200,"parameterSlots":2,"returnSlots":1},"fun_approve":{"entryPoint":1694,"id":2224,"parameterSlots":2,"returnSlots":1},"fun_approve_2524":{"entryPoint":2989,"id":2524,"parameterSlots":4,"returnSlots":0},"fun_balanceOf":{"entryPoint":1996,"id":2159,"parameterSlots":1,"returnSlots":1},"fun_decimals":{"entryPoint":1885,"id":11073,"parameterSlots":0,"returnSlots":1},"fun_mint":{"entryPoint":1907,"id":11086,"parameterSlots":2,"returnSlots":0},"fun_msgSender":{"entryPoint":2148,"id":2942,"parameterSlots":0,"returnSlots":1},"fun_name":{"entryPoint":1668,"id":2119,"parameterSlots":0,"returnSlots":1},"fun_spendAllowance":{"entryPoint":2254,"id":2572,"parameterSlots":3,"returnSlots":0},"fun_symbol":{"entryPoint":2026,"id":2128,"parameterSlots":0,"returnSlots":1},"fun_totalSupply":{"entryPoint":1773,"id":2146,"parameterSlots":0,"returnSlots":1},"fun_transfer":{"entryPoint":2521,"id":2303,"parameterSlots":3,"returnSlots":0},"fun_transferFrom":{"entryPoint":1795,"id":2256,"parameterSlots":3,"returnSlots":1},"fun_transfer_2183":{"entryPoint":2048,"id":2183,"parameterSlots":2,"returnSlots":1},"fun_update":{"entryPoint":3420,"id":2380,"parameterSlots":3,"returnSlots":0},"identity":{"entryPoint":1919,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":2082,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":1974,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":3324,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":1278,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1536,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_uint256":{"entryPoint":2954,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":1760,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint8":{"entryPoint":1872,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":1269,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":200,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":204,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":247,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":2868,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":1732,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":188,"id":null,"parameterSlots":1,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":2873,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":2957,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":420,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":458,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_add_uint256":{"entryPoint":3406,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_sub_uint256":{"entryPoint":2240,"id":null,"parameterSlots":2,"returnSlots":1},"zero_value_for_split_address":{"entryPoint":2144,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":1690,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_string":{"entryPoint":1273,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":1728,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint8":{"entryPoint":1842,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361015610013575b6104f5565b61001d5f356100bc565b806306fdde03146100b7578063095ea7b3146100b257806318160ddd146100ad57806323b872dd146100a8578063313ce567146100a357806340c10f191461009e57806370a082311461009957806395d89b4114610094578063a9059cbb1461008f5763dd62ed3e0361000e576104bf565b61045c565b610427565b6103f2565b6103a0565b610366565b610308565b610299565b610241565b61014a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f9103126100da57565b6100cc565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b61012061012960209361012e93610117816100df565b938480936100e3565b958691016100ec565b6100f7565b0190565b6101479160208201915f818403910152610101565b90565b3461017a5761015a3660046100d0565b610176610165610684565b61016d6100c2565b91829182610132565b0390f35b6100c8565b73ffffffffffffffffffffffffffffffffffffffff1690565b6101a19061017f565b90565b6101ad81610198565b036101b457565b5f80fd5b905035906101c5826101a4565b565b90565b6101d3816101c7565b036101da57565b5f80fd5b905035906101eb826101ca565b565b91906040838203126102155780610209610212925f86016101b8565b936020016101de565b90565b6100cc565b151590565b6102289061021a565b9052565b919061023f905f6020850194019061021f565b565b346102725761026e61025d6102573660046101ed565b9061069e565b6102656100c2565b9182918261022c565b0390f35b6100c8565b610280906101c7565b9052565b9190610297905f60208501940190610277565b565b346102c9576102a93660046100d0565b6102c56102b46106ed565b6102bc6100c2565b91829182610284565b0390f35b6100c8565b9091606082840312610303576103006102e9845f85016101b8565b936102f781602086016101b8565b936040016101de565b90565b6100cc565b346103395761033561032461031e3660046102ce565b91610703565b61032c6100c2565b9182918261022c565b0390f35b6100c8565b60ff1690565b61034d9061033e565b9052565b9190610364905f60208501940190610344565b565b34610396576103763660046100d0565b61039261038161075d565b6103896100c2565b91829182610351565b0390f35b6100c8565b5f0190565b346103cf576103b96103b33660046101ed565b90610773565b6103c16100c2565b806103cb8161039b565b0390f35b6100c8565b906020828203126103ed576103ea915f016101b8565b90565b6100cc565b346104225761041e61040d6104083660046103d4565b6107cc565b6104156100c2565b91829182610284565b0390f35b6100c8565b34610457576104373660046100d0565b6104536104426107ea565b61044a6100c2565b91829182610132565b0390f35b6100c8565b3461048d576104896104786104723660046101ed565b90610800565b6104806100c2565b9182918261022c565b0390f35b6100c8565b91906040838203126104ba57806104ae6104b7925f86016101b8565b936020016101b8565b90565b6100cc565b346104f0576104ec6104db6104d5366004610492565b90610838565b6104e36100c2565b91829182610284565b0390f35b6100c8565b5f80fd5b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b906001600283049216801561054b575b602083101461054657565b6104fe565b91607f169161053b565b60209181520190565b5f5260205f2090565b905f929180549061058161057a8361052b565b8094610555565b916001811690815f146105d8575060011461059c575b505050565b6105a9919293945061055e565b915f925b8184106105c057505001905f8080610597565b600181602092959395548486015201910192906105ad565b92949550505060ff19168252151560200201905f8080610597565b906105fd91610567565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90610637906100f7565b810190811067ffffffffffffffff82111761065157604052565b610600565b9061067661066f926106666100c2565b938480926105f3565b038361062d565b565b61068190610656565b90565b61068c6104f9565b506106976003610678565b90565b5f90565b6106bb916106aa61069a565b506106b3610864565b919091610871565b600190565b5f90565b5f1c90565b90565b6106d86106dd916106c4565b6106c9565b90565b6106ea90546106cc565b90565b6106f56106c0565b5061070060026106e0565b90565b9161072d9261071061069a565b5061072561071c610864565b829084916108ce565b9190916109d9565b600190565b5f90565b60ff1690565b61074861074d916106c4565b610736565b90565b61075a905461073c565b90565b610765610732565b506107706005610750565b90565b9061077d91610ab6565b565b90565b61079661079161079b9261017f565b61077f565b61017f565b90565b6107a790610782565b90565b6107b39061079e565b90565b906107c0906107aa565b5f5260205260405f2090565b6107e26107e7916107db6106c0565b505f6107b6565b6106e0565b90565b6107f26104f9565b506107fd6004610678565b90565b61081d9161080c61069a565b50610815610864565b9190916109d9565b600190565b9061082c906107aa565b5f5260205260405f2090565b61085d916108536108589261084b6106c0565b506001610822565b6107b6565b6106e0565b90565b5f90565b61086c610860565b503390565b9161087f9291600192610bad565b565b61088a90610198565b9052565b6040906108b76108be94969593966108ad60608401985f850190610881565b6020830190610277565b0190610277565b565b906108cb91036101c7565b90565b9291926108dc818390610838565b908161091061090a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101c7565b916101c7565b0361091d575b5050509050565b8161093061092a876101c7565b916101c7565b106109565761094d93946109459193926108c0565b905f92610bad565b805f8080610916565b50610995849291926109666100c2565b9384937ffb8f41b20000000000000000000000000000000000000000000000000000000085526004850161088e565b0390fd5b90565b6109b06109ab6109b592610999565b61077f565b61017f565b90565b6109c19061099c565b90565b91906109d7905f60208501940190610881565b565b91826109f56109ef6109ea5f6109b8565b610198565b91610198565b14610a6f5781610a15610a0f610a0a5f6109b8565b610198565b91610198565b14610a2857610a2692919091610d5c565b565b610a6b610a345f6109b8565b610a3c6100c2565b9182917fec442f05000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b610ab2610a7b5f6109b8565b610a836100c2565b9182917f96c6fd1e000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b80610ad1610acb610ac65f6109b8565b610198565b91610198565b14610aed57610aeb91610ae35f6109b8565b919091610d5c565b565b610b30610af95f6109b8565b610b016100c2565b9182917fec442f05000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b5f1b90565b90610b647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91610b34565b9181191691161790565b610b82610b7d610b87926101c7565b61077f565b6101c7565b90565b90565b90610ba2610b9d610ba992610b6e565b610b8a565b8254610b39565b9055565b909281610bca610bc4610bbf5f6109b8565b610198565b91610198565b14610cb55783610bea610be4610bdf5f6109b8565b610198565b91610198565b14610c6e57610c0e83610c09610c0260018690610822565b87906107b6565b610b8d565b610c18575b505050565b919091610c63610c51610c4b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925936107aa565b936107aa565b93610c5a6100c2565b91829182610284565b0390a35f8080610c13565b610cb1610c7a5f6109b8565b610c826100c2565b9182917f94280d62000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b610cf8610cc15f6109b8565b610cc96100c2565b9182917fe602df05000000000000000000000000000000000000000000000000000000008352600483016109c4565b0390fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610d38610d3e919392936101c7565b926101c7565b8201809211610d4957565b610cfc565b90610d5991016101c7565b90565b91909180610d7a610d74610d6f5f6109b8565b610198565b91610198565b145f14610e5b57610d9e610d9783610d9260026106e0565b610d29565b6002610b8d565b5b82610dba610db4610daf5f6109b8565b610198565b91610198565b145f14610e2f57610dde610dd783610dd260026106e0565b6108c0565b6002610b8d565b5b919091610e2a610e18610e127fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef936107aa565b936107aa565b93610e216100c2565b91829182610284565b0390a3565b610e5682610e50610e415f87906107b6565b91610e4b836106e0565b610d4e565b90610b8d565b610ddf565b610e6e610e695f83906107b6565b6106e0565b80610e81610e7b856101c7565b916101c7565b10610ea957610e94610ea49184906108c0565b610e9f5f84906107b6565b610b8d565b610d9f565b90610ee7909192610eb86100c2565b9384937fe450d38c0000000000000000000000000000000000000000000000000000000085526004850161088e565b0390fdfea2646970667358221220848485739fd482f9d3ef4d81d7d7814f0a15664eb05fa1f139f4351e3da5030a64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x4F5 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x9E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x8F JUMPI PUSH4 0xDD62ED3E SUB PUSH2 0xE JUMPI PUSH2 0x4BF JUMP JUMPDEST PUSH2 0x45C JUMP JUMPDEST PUSH2 0x427 JUMP JUMPDEST PUSH2 0x3F2 JUMP JUMPDEST PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x366 JUMP JUMPDEST PUSH2 0x308 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH2 0x14A JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0xDA JUMPI JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x129 PUSH1 0x20 SWAP4 PUSH2 0x12E SWAP4 PUSH2 0x117 DUP2 PUSH2 0xDF JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0xE3 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0xEC JUMP JUMPDEST PUSH2 0xF7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x147 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x17A JUMPI PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x165 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x16D PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x132 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1A1 SWAP1 PUSH2 0x17F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1AD DUP2 PUSH2 0x198 JUMP JUMPDEST SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1C5 DUP3 PUSH2 0x1A4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D3 DUP2 PUSH2 0x1C7 JUMP JUMPDEST SUB PUSH2 0x1DA JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1EB DUP3 PUSH2 0x1CA JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x215 JUMPI DUP1 PUSH2 0x209 PUSH2 0x212 SWAP3 PUSH0 DUP7 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x1DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x228 SWAP1 PUSH2 0x21A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x23F SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x21F JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x272 JUMPI PUSH2 0x26E PUSH2 0x25D PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST SWAP1 PUSH2 0x69E JUMP JUMPDEST PUSH2 0x265 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH2 0x280 SWAP1 PUSH2 0x1C7 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x297 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x277 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x2C9 JUMPI PUSH2 0x2A9 CALLDATASIZE PUSH1 0x4 PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x2C5 PUSH2 0x2B4 PUSH2 0x6ED JUMP JUMPDEST PUSH2 0x2BC PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x303 JUMPI PUSH2 0x300 PUSH2 0x2E9 DUP5 PUSH0 DUP6 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP4 PUSH2 0x2F7 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x1DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST CALLVALUE PUSH2 0x339 JUMPI PUSH2 0x335 PUSH2 0x324 PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x2CE JUMP JUMPDEST SWAP2 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x32C PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x34D SWAP1 PUSH2 0x33E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x364 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x344 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x396 JUMPI PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x392 PUSH2 0x381 PUSH2 0x75D JUMP JUMPDEST PUSH2 0x389 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x351 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3CF JUMPI PUSH2 0x3B9 PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST SWAP1 PUSH2 0x773 JUMP JUMPDEST PUSH2 0x3C1 PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH2 0x3CB DUP2 PUSH2 0x39B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x3ED JUMPI PUSH2 0x3EA SWAP2 PUSH0 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST CALLVALUE PUSH2 0x422 JUMPI PUSH2 0x41E PUSH2 0x40D PUSH2 0x408 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x415 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST CALLVALUE PUSH2 0x457 JUMPI PUSH2 0x437 CALLDATASIZE PUSH1 0x4 PUSH2 0xD0 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x442 PUSH2 0x7EA JUMP JUMPDEST PUSH2 0x44A PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x132 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST CALLVALUE PUSH2 0x48D JUMPI PUSH2 0x489 PUSH2 0x478 PUSH2 0x472 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST SWAP1 PUSH2 0x800 JUMP JUMPDEST PUSH2 0x480 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x22C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x4BA JUMPI DUP1 PUSH2 0x4AE PUSH2 0x4B7 SWAP3 PUSH0 DUP7 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x1B8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC JUMP JUMPDEST CALLVALUE PUSH2 0x4F0 JUMPI PUSH2 0x4EC PUSH2 0x4DB PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x492 JUMP JUMPDEST SWAP1 PUSH2 0x838 JUMP JUMPDEST PUSH2 0x4E3 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0xC8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x54B JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x546 JUMPI JUMP JUMPDEST PUSH2 0x4FE JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x53B JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x581 PUSH2 0x57A DUP4 PUSH2 0x52B JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x555 JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x5D8 JUMPI POP PUSH1 0x1 EQ PUSH2 0x59C JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5A9 SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x55E JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x5C0 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x597 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x5AD JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x597 JUMP JUMPDEST SWAP1 PUSH2 0x5FD SWAP2 PUSH2 0x567 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x637 SWAP1 PUSH2 0xF7 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x651 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x600 JUMP JUMPDEST SWAP1 PUSH2 0x676 PUSH2 0x66F SWAP3 PUSH2 0x666 PUSH2 0xC2 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x5F3 JUMP JUMPDEST SUB DUP4 PUSH2 0x62D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x681 SWAP1 PUSH2 0x656 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x68C PUSH2 0x4F9 JUMP JUMPDEST POP PUSH2 0x697 PUSH1 0x3 PUSH2 0x678 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x6BB SWAP2 PUSH2 0x6AA PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0x6B3 PUSH2 0x864 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x871 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6D8 PUSH2 0x6DD SWAP2 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x6C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6EA SWAP1 SLOAD PUSH2 0x6CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6F5 PUSH2 0x6C0 JUMP JUMPDEST POP PUSH2 0x700 PUSH1 0x2 PUSH2 0x6E0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x72D SWAP3 PUSH2 0x710 PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0x725 PUSH2 0x71C PUSH2 0x864 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x8CE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x748 PUSH2 0x74D SWAP2 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x736 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x75A SWAP1 SLOAD PUSH2 0x73C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x765 PUSH2 0x732 JUMP JUMPDEST POP PUSH2 0x770 PUSH1 0x5 PUSH2 0x750 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x77D SWAP2 PUSH2 0xAB6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x796 PUSH2 0x791 PUSH2 0x79B SWAP3 PUSH2 0x17F JUMP JUMPDEST PUSH2 0x77F JUMP JUMPDEST PUSH2 0x17F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7A7 SWAP1 PUSH2 0x782 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7B3 SWAP1 PUSH2 0x79E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7C0 SWAP1 PUSH2 0x7AA JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x7E2 PUSH2 0x7E7 SWAP2 PUSH2 0x7DB PUSH2 0x6C0 JUMP JUMPDEST POP PUSH0 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F2 PUSH2 0x4F9 JUMP JUMPDEST POP PUSH2 0x7FD PUSH1 0x4 PUSH2 0x678 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x81D SWAP2 PUSH2 0x80C PUSH2 0x69A JUMP JUMPDEST POP PUSH2 0x815 PUSH2 0x864 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x82C SWAP1 PUSH2 0x7AA JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x85D SWAP2 PUSH2 0x853 PUSH2 0x858 SWAP3 PUSH2 0x84B PUSH2 0x6C0 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x86C PUSH2 0x860 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x87F SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0xBAD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x88A SWAP1 PUSH2 0x198 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x8B7 PUSH2 0x8BE SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x8AD PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x881 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x277 JUMP JUMPDEST ADD SWAP1 PUSH2 0x277 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x8CB SWAP2 SUB PUSH2 0x1C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x8DC DUP2 DUP4 SWAP1 PUSH2 0x838 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x910 PUSH2 0x90A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1C7 JUMP JUMPDEST SWAP2 PUSH2 0x1C7 JUMP JUMPDEST SUB PUSH2 0x91D JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x930 PUSH2 0x92A DUP8 PUSH2 0x1C7 JUMP JUMPDEST SWAP2 PUSH2 0x1C7 JUMP JUMPDEST LT PUSH2 0x956 JUMPI PUSH2 0x94D SWAP4 SWAP5 PUSH2 0x945 SWAP2 SWAP4 SWAP3 PUSH2 0x8C0 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0xBAD JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x916 JUMP JUMPDEST POP PUSH2 0x995 DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x966 PUSH2 0xC2 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x88E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9B0 PUSH2 0x9AB PUSH2 0x9B5 SWAP3 PUSH2 0x999 JUMP JUMPDEST PUSH2 0x77F JUMP JUMPDEST PUSH2 0x17F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9C1 SWAP1 PUSH2 0x99C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x9D7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x881 JUMP JUMPDEST JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x9F5 PUSH2 0x9EF PUSH2 0x9EA PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xA6F JUMPI DUP2 PUSH2 0xA15 PUSH2 0xA0F PUSH2 0xA0A PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xA28 JUMPI PUSH2 0xA26 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0xD5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA6B PUSH2 0xA34 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xA3C PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xAB2 PUSH2 0xA7B PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xA83 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xAD1 PUSH2 0xACB PUSH2 0xAC6 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xAED JUMPI PUSH2 0xAEB SWAP2 PUSH2 0xAE3 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0xD5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB30 PUSH2 0xAF9 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xB01 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB64 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xB34 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xB82 PUSH2 0xB7D PUSH2 0xB87 SWAP3 PUSH2 0x1C7 JUMP JUMPDEST PUSH2 0x77F JUMP JUMPDEST PUSH2 0x1C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBA2 PUSH2 0xB9D PUSH2 0xBA9 SWAP3 PUSH2 0xB6E JUMP JUMPDEST PUSH2 0xB8A JUMP JUMPDEST DUP3 SLOAD PUSH2 0xB39 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 SWAP3 DUP2 PUSH2 0xBCA PUSH2 0xBC4 PUSH2 0xBBF PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xCB5 JUMPI DUP4 PUSH2 0xBEA PUSH2 0xBE4 PUSH2 0xBDF PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH2 0xC6E JUMPI PUSH2 0xC0E DUP4 PUSH2 0xC09 PUSH2 0xC02 PUSH1 0x1 DUP7 SWAP1 PUSH2 0x822 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0xB8D JUMP JUMPDEST PUSH2 0xC18 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0xC63 PUSH2 0xC51 PUSH2 0xC4B PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 PUSH2 0xC5A PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0xCB1 PUSH2 0xC7A PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xC82 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xCF8 PUSH2 0xCC1 PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0xCC9 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x9C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD38 PUSH2 0xD3E SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x1C7 JUMP JUMPDEST SWAP3 PUSH2 0x1C7 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0xD49 JUMPI JUMP JUMPDEST PUSH2 0xCFC JUMP JUMPDEST SWAP1 PUSH2 0xD59 SWAP2 ADD PUSH2 0x1C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 DUP1 PUSH2 0xD7A PUSH2 0xD74 PUSH2 0xD6F PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0xE5B JUMPI PUSH2 0xD9E PUSH2 0xD97 DUP4 PUSH2 0xD92 PUSH1 0x2 PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xB8D JUMP JUMPDEST JUMPDEST DUP3 PUSH2 0xDBA PUSH2 0xDB4 PUSH2 0xDAF PUSH0 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x198 JUMP JUMPDEST SWAP2 PUSH2 0x198 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0xE2F JUMPI PUSH2 0xDDE PUSH2 0xDD7 DUP4 PUSH2 0xDD2 PUSH1 0x2 PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xB8D JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0xE2A PUSH2 0xE18 PUSH2 0xE12 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 PUSH2 0xE21 PUSH2 0xC2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x284 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0xE56 DUP3 PUSH2 0xE50 PUSH2 0xE41 PUSH0 DUP8 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST SWAP2 PUSH2 0xE4B DUP4 PUSH2 0x6E0 JUMP JUMPDEST PUSH2 0xD4E JUMP JUMPDEST SWAP1 PUSH2 0xB8D JUMP JUMPDEST PUSH2 0xDDF JUMP JUMPDEST PUSH2 0xE6E PUSH2 0xE69 PUSH0 DUP4 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST DUP1 PUSH2 0xE81 PUSH2 0xE7B DUP6 PUSH2 0x1C7 JUMP JUMPDEST SWAP2 PUSH2 0x1C7 JUMP JUMPDEST LT PUSH2 0xEA9 JUMPI PUSH2 0xE94 PUSH2 0xEA4 SWAP2 DUP5 SWAP1 PUSH2 0x8C0 JUMP JUMPDEST PUSH2 0xE9F PUSH0 DUP5 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0xB8D JUMP JUMPDEST PUSH2 0xD9F JUMP JUMPDEST SWAP1 PUSH2 0xEE7 SWAP1 SWAP2 SWAP3 PUSH2 0xEB8 PUSH2 0xC2 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x88E JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 DUP5 DUP6 PUSH20 0x9FD482F9D3EF4D81D7D7814F0A15664EB05FA1F1 CODECOPY DELEGATECALL CALLDATALOAD 0x1E RETURNDATASIZE 0xA5 SUB EXP PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"119:394:56:-:0;;;;;;;;;-1:-1:-1;119:394:56;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;2074:89:11:-;2119:13;;:::i;:::-;2151:5;2144:12;2151:5;2144:12;:::i;:::-;;:::o;119:394:56:-;;;:::o;4293:186:11:-;4445:5;4293:186;4366:4;;:::i;:::-;4398:12;;;:::i;:::-;4436:7;4445:5;;;:::i;:::-;4468:4;4461:11;:::o;119:394:56:-;;;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;3144:97:11:-;3196:7;;:::i;:::-;3222:12;;;;:::i;:::-;3215:19;:::o;5039:244::-;;5249:5;5039:244;5126:4;;:::i;:::-;5160:12;5213:5;5160:12;;:::i;:::-;5198:4;5204:7;5213:5;;;:::i;:::-;5245:2;5249:5;;;:::i;:::-;5272:4;5265:11;:::o;119:394:56:-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;325:92::-;375:5;;:::i;:::-;400:9;;;;:::i;:::-;393:16;:::o;425:85::-;;495:6;425:85;495:6;:::i;:::-;425:85::o;119:394::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;3299:116:11:-;3390:18;;3299:116;3364:7;;:::i;:::-;3390:9;;:18;:::i;:::-;;:::i;:::-;3383:25;:::o;2276:93::-;2323:13;;:::i;:::-;2355:7;2348:14;2355:7;2348:14;:::i;:::-;;:::o;3610:178::-;3754:5;3610:178;3679:4;;:::i;:::-;3711:12;;;:::i;:::-;3750:2;3754:5;;;:::i;:::-;3777:4;3770:11;:::o;119:394:56:-;;;;;:::i;:::-;;;;;;;;;:::o;3846:140:11:-;3952:27;3846:140;3952:18;:27;3846:140;3926:7;;:::i;:::-;3952:11;;:18;:::i;:::-;:27;:::i;:::-;;:::i;:::-;3945:34;:::o;119:394:56:-;;;:::o;656:96:15:-;709:7;;:::i;:::-;735:10;;728:17;:::o;8989:128:11:-;;9105:4;8989:128;9089:7;9105:4;;;:::i;:::-;8989:128::o;119:394:56:-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::o;10663:477:11:-;;;;10789:25;10799:5;10806:7;10789:25;;:::i;:::-;10828:16;;:37;;10848:17;10828:37;:::i;:::-;;;:::i;:::-;;10824:310;;10663:477;;;;;;:::o;10824:310::-;10885:16;:24;;10904:5;10885:24;:::i;:::-;;;:::i;:::-;;10881:130;;11103:5;11061;;11077:24;11061:5;11068:7;11077:16;:24;:::i;:::-;11103:5;;;;:::i;:::-;10824:310;;;;;;10881:130;10963:7;10936:60;10963:7;;10972:16;10990:5;10936:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;119:394:56;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;5656:300:11:-;;5739:4;:18;;5747:10;5755:1;5747:10;:::i;:::-;5739:18;:::i;:::-;;;:::i;:::-;;5735:86;;5834:2;:16;;5840:10;5848:1;5840:10;:::i;:::-;5834:16;:::i;:::-;;;:::i;:::-;;5830:86;;5943:5;5933:4;5939:2;5943:5;;;:::i;:::-;5656:300::o;5830:86::-;5873:32;5894:10;5902:1;5894:10;:::i;:::-;5873:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5735:86;5780:30;5799:10;5807:1;5799:10;:::i;:::-;5780:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;7721:208;7791:7;:21;;7802:10;7810:1;7802:10;:::i;:::-;7791:21;:::i;:::-;;;:::i;:::-;;7787:91;;7916:5;7903:1;7895:10;7903:1;7895:10;:::i;:::-;7907:7;7916:5;;;:::i;:::-;7721:208::o;7787:91::-;7835:32;7856:10;7864:1;7856:10;:::i;:::-;7835:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;119:394:56;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;9949:432:11:-;;;10061:5;:19;;10070:10;10078:1;10070:10;:::i;:::-;10061:19;:::i;:::-;;;:::i;:::-;;10057:89;;10159:7;:21;;10170:10;10178:1;10170:10;:::i;:::-;10159:21;:::i;:::-;;;:::i;:::-;;10155:90;;10254:35;10284:5;10254:27;:18;:11;10266:5;10254:18;;:::i;:::-;10273:7;10254:27;;:::i;:::-;:35;:::i;:::-;10299:76;;9949:432;;;;:::o;10299:76::-;10349:7;10358:5;10333:31;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;10299:76;;;;;10155:90;10203:31;10223:10;10231:1;10223:10;:::i;:::-;10203:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;10057:89;10103:32;10124:10;10132:1;10124:10;:::i;:::-;10103:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;119:394:56;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;6271:1107:11:-;;;;6360:4;:18;;6368:10;6376:1;6368:10;:::i;:::-;6360:18;:::i;:::-;;;:::i;:::-;;6356:540;;;;6496:21;;6512:5;6496:21;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;6356:540;6910:2;:16;;6916:10;6924:1;6916:10;:::i;:::-;6910:16;:::i;:::-;;;:::i;:::-;;6906:425;;;;7073:21;;7089:5;7073:21;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;6906:425;7361:2;7365:5;7346:25;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;6271:1107::o;6906:425::-;7284:22;7301:5;7284:22;:13;:9;7294:2;7284:13;;:::i;:::-;:22;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;6906:425;;6356:540;6570:15;;:9;6580:4;6570:15;;:::i;:::-;;:::i;:::-;6603:11;:19;;6617:5;6603:19;:::i;:::-;;;:::i;:::-;;6599:115;;6852:19;6834:37;6852:11;6866:5;6852:19;;:::i;:::-;6834:15;:9;6844:4;6834:15;;:::i;:::-;:37;:::i;:::-;6356:540;;6599:115;6674:4;6649:50;6674:4;6680:11;6693:5;6649:50;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"774600","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"infinite","balanceOf(address)":"infinite","decimals()":"2734","mint(address,uint256)":"infinite","name()":"infinite","symbol()":"infinite","totalSupply()":"2678","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"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\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/MockToken.sol\":\"MockToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"contracts/mock/MockToken.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts/token/ERC20/ERC20.sol';\\r\\n\\r\\ncontract MockToken is ERC20 {\\r\\n    uint8 private _decimals;\\r\\n\\r\\n    constructor(string memory name, string memory symbol, uint8 decimals_) ERC20(name, symbol) {\\r\\n        _decimals = decimals_;\\r\\n    }\\r\\n\\r\\n    function decimals() public view override returns (uint8) {\\r\\n        return _decimals;\\r\\n    }\\r\\n\\r\\n    function mint(address to, uint256 amount) public {\\r\\n        _mint(to, amount);\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x2646b39520ee2bfb30eeda893c827fb370c22468d867d679ee4e7a4014f8c73e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2081,"contract":"contracts/mock/MockToken.sol:MockToken","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":2087,"contract":"contracts/mock/MockToken.sol:MockToken","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":2089,"contract":"contracts/mock/MockToken.sol:MockToken","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":2091,"contract":"contracts/mock/MockToken.sol:MockToken","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":2093,"contract":"contracts/mock/MockToken.sol:MockToken","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":11046,"contract":"contracts/mock/MockToken.sol:MockToken","label":"_decimals","offset":0,"slot":"5","type":"t_uint8"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/oracles/BaluniV1Oracle.sol":{"BaluniV1Oracle":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convert","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertScaled","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertScaledWithAgg","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertScaledWithStaticOracle","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertWithAgg","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertWithStaticOracle","outputs":[{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"uint64","name":"version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"convert(address,address,uint256)":{"details":"Converts the specified amount of `fromToken` to `toToken` using the available oracle. If the conversion fails with the static oracle, it falls back to the aggregator oracle.","params":{"amount":"The amount of `fromToken` to convert.","fromToken":"The address of the token to convert from.","toToken":"The address of the token to convert to."},"returns":{"valuation":"The converted valuation of `amount` in `toToken`."}},"convertScaled(address,address,uint256)":{"details":"Converts the specified amount of `fromToken` to `toToken` using the available oracle. If the conversion fails with the static oracle, it falls back to the aggregator oracle. This function is externally callable.","params":{"amount":"The amount of `fromToken` to convert.","fromToken":"The address of the token to convert from.","toToken":"The address of the token to convert to."},"returns":{"valuation":"The converted valuation of `amount` in `toToken`."}},"convertScaledWithAgg(address,address,uint256)":{"details":"Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator and scales the result.","params":{"amount":"The amount of `fromToken` to convert.","fromToken":"The address of the token to convert from.","toToken":"The address of the token to convert to."},"returns":{"valuation":" The scaled converted valuation of `amount` in `toToken`."}},"convertScaledWithStaticOracle(address,address,uint256)":{"details":"Converts the given amount of tokens from one token to another using a static oracle.","params":{"amount":"The amount of tokens to convert.","fromToken":"The address of the token to convert from.","toToken":"The address of the token to convert to."},"returns":{"valuation":"of the converted tokens."}},"convertWithAgg(address,address,uint256)":{"details":"Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator.","params":{"amount":"The amount of `fromToken` to convert.","fromToken":"The address of the token to convert from.","toToken":"The address of the token to convert to."},"returns":{"valuation":"The converted valuation of `amount` in `toToken`."}},"convertWithStaticOracle(address,address,uint256)":{"details":"Converts the specified amount of `fromToken` to `toToken` using the static oracle.","params":{"amount":"The amount of `fromToken` to convert.","fromToken":"The address of the token to convert from.","toToken":"The address of the token to convert to."},"returns":{"valuation":"of the converted amount."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":87,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1Oracle":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IBaluniV1Oracle":{"entryPoint":79,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":143,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":133,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":123,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":101,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":98,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b61296c61009c823960805181818161201b015281816120a0015261229b015261296c90f35b6043565b60405190565b5f80fd5b604d604f565b565b6055608f565b565b60018060a01b031690565b90565b607460706078926057565b6062565b6057565b90565b6082906065565b90565b608c90607b565b90565b6096306085565b60805256fe60806040526004361015610013575b6108c1565b61001d5f3561010c565b80631f0e3cd214610107578063248391ff146101025780634f1ef286146100fd57806352d1902d146100f8578063715018a6146100f35780637b103999146100ee5780638c41a354146100e95780638da5cb5b146100e45780638f2248bc146100df578063ad3cb1cc146100da578063b27b5e75146100d5578063c4d66de8146100d0578063ca66d9a8146100cb578063f2fde38b146100c65763fac0ba740361000e5761088b565b610858565b610822565b6107ef565b61079b565b610766565b610636565b6105a4565b61054c565b610517565b61043b565b610406565b6103a8565b610224565b6101ee565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61014690610124565b90565b6101528161013d565b0361015957565b5f80fd5b9050359061016a82610149565b565b90565b6101788161016c565b0361017f57565b5f80fd5b905035906101908261016f565b565b90916060828403126101c7576101c46101ad845f850161015d565b936101bb816020860161015d565b93604001610183565b90565b61011c565b6101d59061016c565b9052565b91906101ec905f602085019401906101cc565b565b3461021f5761021b61020a610204366004610192565b91610b73565b610212610112565b918291826101d9565b0390f35b610118565b346102555761025161024061023a366004610192565b91610ecc565b610248610112565b918291826101d9565b0390f35b610118565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906102a390610262565b810190811067ffffffffffffffff8211176102bd57604052565b61026c565b906102d56102ce610112565b9283610299565b565b67ffffffffffffffff81116102f5576102f1602091610262565b0190565b61026c565b90825f939282370152565b9092919261031a610315826102d7565b6102c2565b9381855260208501908284011161033657610334926102fa565b565b61025e565b9080601f830112156103595781602061035693359101610305565b90565b61025a565b91909160408184031261039e57610377835f830161015d565b92602082013567ffffffffffffffff811161039957610396920161033b565b90565b610120565b61011c565b5f0190565b6103bc6103b636600461035e565b90610f82565b6103c4610112565b806103ce816103a3565b0390f35b5f9103126103dc57565b61011c565b90565b6103ed906103e1565b9052565b9190610404905f602085019401906103e4565b565b34610436576104163660046103d2565b610432610421611002565b610429610112565b918291826103f1565b0390f35b610118565b346104695761044b3660046103d2565b610453611065565b61045b610112565b80610465816103a3565b0390f35b610118565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61049b9060086104a0930261046e565b610472565b90565b906104ae915461048b565b90565b6104bb5f806104a3565b90565b90565b6104d56104d06104da92610124565b6104be565b610124565b90565b6104e6906104c1565b90565b6104f2906104dd565b90565b6104fe906104e9565b9052565b9190610515905f602085019401906104f5565b565b34610547576105273660046103d2565b6105436105326104b1565b61053a610112565b91829182610502565b0390f35b610118565b3461057d57610579610568610562366004610192565b9161108e565b610570610112565b918291826101d9565b0390f35b610118565b61058b9061013d565b9052565b91906105a2905f60208501940190610582565b565b346105d4576105b43660046103d2565b6105d06105bf611506565b6105c7610112565b9182918261058f565b0390f35b610118565b67ffffffffffffffff1690565b6105ef816105d9565b036105f657565b5f80fd5b90503590610607826105e6565b565b9190604083820312610631578061062561062e925f860161015d565b936020016105fa565b90565b61011c565b346106655761064f610649366004610609565b906117d4565b610657610112565b80610661816103a3565b0390f35b610118565b67ffffffffffffffff811161068857610684602091610262565b0190565b61026c565b9061069f61069a8361066a565b6102c2565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6106d5600561068d565b906106e2602083016106a4565b565b6106ec6106cb565b90565b6106f76106e4565b90565b6107026106ef565b90565b5190565b60209181520190565b90825f9392825e0152565b61073c61074560209361074a9361073381610705565b93848093610709565b95869101610712565b610262565b0190565b6107639160208201915f81840391015261071d565b90565b34610796576107763660046103d2565b6107926107816106fa565b610789610112565b9182918261074e565b0390f35b610118565b346107cc576107c86107b76107b1366004610192565b916117e0565b6107bf610112565b918291826101d9565b0390f35b610118565b906020828203126107ea576107e7915f0161015d565b90565b61011c565b3461081d576108076108023660046107d1565b611a94565b61080f610112565b80610819816103a3565b0390f35b610118565b346108535761084f61083e610838366004610192565b91611abb565b610846610112565b918291826101d9565b0390f35b610118565b346108865761087061086b3660046107d1565b611c60565b610878610112565b80610882816103a3565b0390f35b610118565b346108bc576108b86108a76108a1366004610192565b91611ebc565b6108af610112565b918291826101d9565b0390f35b610118565b5f80fd5b5f90565b5f1c90565b6108da6108df916108c9565b610472565b90565b6108ec90546108ce565b90565b60e01b90565b9050519061090282610149565b565b9060208282031261091d5761091a915f016108f5565b90565b61011c565b61092a610112565b3d5f823e3d90fd5b61093b906104c1565b90565b61094790610932565b90565b610953906104dd565b90565b60ff1690565b61096581610956565b0361096c57565b5f80fd5b9050519061097d8261095c565b565b9060208282031261099857610995915f01610970565b90565b61011c565b6109a6906104c1565b90565b6109b29061099d565b90565b6109be906104dd565b90565b6109ca906104c1565b90565b6109d6906109c1565b90565b905051906109e68261016f565b565b90602082820312610a01576109fe915f016109d9565b90565b61011c565b610a0f906104dd565b90565b610a1b90610a06565b9052565b151590565b610a2d90610a1f565b9052565b604090610a5a610a619496959396610a5060608401985f850190610a12565b6020830190610a12565b0190610a24565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610a9990610956565b604d8111610aa757600a0a90565b610a63565b610abb610ac19193929361016c565b9261016c565b91610acd83820261016c565b928184041490151715610adc57565b610a63565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b610b1a610b209161016c565b9161016c565b908115610b2b570490565b610ae1565b610b3c610b4291610956565b91610956565b90039060ff8211610b4f57565b610a63565b90565b610b6b610b66610b7092610b54565b6104be565b61016c565b90565b919091610b7e6108c5565b5080610b92610b8c8561013d565b9161013d565b14610e8857610bc36020610bad610ba85f6108e2565b6104e9565b638e1c3a8a90610bbb610112565b9384926108ef565b82528180610bd3600482016103a3565b03915afa908115610e83575f91610e55575b5090610c136020610bfd610bf88461093e565b61094a565b63313ce56790610c0b610112565b9384926108ef565b82528180610c23600482016103a3565b03915afa8015610e5057610c63915f91610e22575b50946020610c4d610c488361093e565b61094a565b63313ce56790610c5b610112565b9485926108ef565b82528180610c73600482016103a3565b03915afa8015610e1d57610c95610c9a916020945f91610df0575b50956109a9565b6109b5565b610ccd610cb4610cae63802431fb966109cd565b936109cd565b94610cd85f610cc1610112565b978896879586956108ef565b855260048501610a31565b03915afa908115610deb57610d1191610d02915f91610dbd575b50610cfc86610a90565b90610aac565b610d0b83610a90565b90610b0e565b92610d1a6108c5565b5080610d2e610d2884610956565b91610956565b10155f14610d7957610d5e92610d53610d4e610d759694610d5994610b30565b610a90565b90610b0e565b610aac565b610d6f670de0b6b3a7640000610b57565b90610b0e565b5b90565b610da192610d96610d91610d9c93610db89795610b30565b610a90565b90610aac565b610aac565b610db2670de0b6b3a7640000610b57565b90610b0e565b610d76565b610dde915060203d8111610de4575b610dd68183610299565b8101906109e8565b5f610cf2565b503d610dcc565b610922565b610e109150853d8111610e16575b610e088183610299565b81019061097f565b5f610c8e565b503d610dfe565b610922565b610e43915060203d8111610e49575b610e3b8183610299565b81019061097f565b5f610c38565b503d610e31565b610922565b610e76915060203d8111610e7c575b610e6e8183610299565b810190610904565b5f610be5565b503d610e64565b610922565b50905090565b610e97906104dd565b90565b604090610ec3610eca9496959396610eb960608401985f850190610582565b6020830190610582565b01906101cc565b565b90602091610ed86108c5565b50610f05610ee530610e8e565b91610f1063fac0ba74919496610ef9610112565b978896879586956108ef565b855260048501610e9a565b03915afa908115610f54575f91610f26575b5090565b610f47915060203d8111610f4d575b610f3f8183610299565b8101906109e8565b5f610f22565b503d610f35565b610922565b90610f6b91610f6661200a565b610f6d565b565b90610f8091610f7b816120dc565b61214c565b565b90610f8c91610f59565b565b5f90565b610fa390610f9e61228a565b610ff6565b90565b90565b5f1b90565b610fc2610fbd610fc792610fa6565b610fa9565b6103e1565b90565b610ff37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610fae565b90565b50610fff610fca565b90565b61101261100d610f8e565b610f92565b90565b61101d612308565b611025611052565b565b90565b61103e61103961104392611027565b6104be565b610124565b90565b61104f9061102a565b90565b61106361105e5f611046565b6123a5565b565b61106d611015565b565b90565b61108661108161108b9261106f565b6104be565b610956565b90565b916110976108c5565b50826110ab6110a58461013d565b9161013d565b14611413576110dc60206110c66110c15f6108e2565b6104e9565b638e1c3a8a906110d4610112565b9384926108ef565b825281806110ec600482016103a3565b03915afa90811561140e575f916113e0575b509061112c60206111166111118761093e565b61094a565b63313ce56790611124610112565b9384926108ef565b8252818061113c600482016103a3565b03915afa80156113db5761117c915f916113ad575b509360206111666111618361093e565b61094a565b63313ce56790611174610112565b9485926108ef565b8252818061118c600482016103a3565b03915afa80156113a8576111ae6111b3916020945f9161137b575b50956109a9565b6109b5565b6111e66111cd6111c763802431fb996109cd565b936109cd565b976111f15f6111da610112565b9a8b96879586956108ef565b855260048501610a31565b03915afa80156113765761121d61122c916112a2965f91611348575b5061121786610a90565b90610aac565b61122684610a90565b90610b0e565b916112356108c5565b5061123e6108c5565b5061125b61125660126112518491611072565b610b30565b610a90565b938061126f61126984610956565b91610956565b145f146112a557505061129c9161128591610aac565b611296670de0b6b3a7640000610b57565b90610b0e565b5b610aac565b90565b806112b86112b284610956565b91610956565b115f14611304576112e7926112dc6112d76112fe96946112e294610b30565b610a90565b90610b0e565b610aac565b6112f8670de0b6b3a7640000610b57565b90610b0e565b5b61129d565b61132c9261132161131c611327936113439795610b30565b610a90565b90610aac565b610aac565b61133d670de0b6b3a7640000610b57565b90610b0e565b6112ff565b611369915060203d811161136f575b6113618183610299565b8101906109e8565b5f61120d565b503d611357565b610922565b61139b9150853d81116113a1575b6113938183610299565b81019061097f565b5f6111a7565b503d611389565b610922565b6113ce915060203d81116113d4575b6113c68183610299565b81019061097f565b5f611151565b503d6113bc565b610922565b611401915060203d8111611407575b6113f98183610299565b810190610904565b5f6110fe565b503d6113ef565b610922565b611444925090602061142e61142960129361093e565b61094a565b63313ce5679061143c610112565b9586926108ef565b82528180611454600482016103a3565b03915afa9283156114c35761148c9361148692611481925f9261148f575b5061147c90611072565b610b30565b610a90565b90610aac565b90565b61147c9192506114b59060203d81116114bc575b6114ad8183610299565b81019061097f565b9190611472565b503d6114a3565b610922565b5f90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6114f16114f6916108c9565b6114cc565b90565b61150390546114e5565b90565b61150e6114c8565b506115215f61151b612411565b016114f9565b90565b60401c90565b60ff1690565b61153c61154191611524565b61152a565b90565b61154e9054611530565b90565b67ffffffffffffffff1690565b61156a61156f916108c9565b611551565b90565b61157c905461155e565b90565b9061159267ffffffffffffffff91610fa9565b9181191691161790565b6115b06115ab6115b5926105d9565b6104be565b6105d9565b90565b90565b906115d06115cb6115d79261159c565b6115b8565b825461157f565b9055565b60401b90565b906115f568ff0000000000000000916115db565b9181191691161790565b61160890610a1f565b90565b90565b9061162361161e61162a926115ff565b61160b565b82546115e1565b9055565b611637906105d9565b9052565b919061164e905f6020850194019061162e565b565b90809161165b612435565b906116675f8301611544565b8015611718575b6116dc576116a19261169891611686865f86016115bb565b61169360015f860161160e565b6117ad565b5f80910161160e565b6116d77fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916116ce610112565b9182918261163b565b0390a1565b6116e4610112565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280611714600482016103a3565b0390fd5b506117245f8301611572565b611736611730866105d9565b916105d9565b101561166e565b611746906104c1565b90565b6117529061173d565b90565b9061177473ffffffffffffffffffffffffffffffffffffffff91610fa9565b9181191691161790565b6117879061173d565b90565b90565b906117a261179d6117a99261177e565b61178a565b8254611755565b9055565b6117d291506117cc906117bf33612477565b6117c761248c565b611749565b5f61178d565b565b906117de91611650565b565b906020916117ec6108c5565b506118196117f930610e8e565b9161182463ca66d9a891949661180d610112565b978896879586956108ef565b855260048501610e9a565b03915afa908115611868575f9161183a575b5090565b61185b915060203d8111611861575b6118538183610299565b8101906109e8565b5f611836565b503d611849565b610922565b61188161187c61188692611027565b6104be565b6105d9565b90565b90565b6118a061189b6118a592611889565b6104be565b6105d9565b90565b6118b1906104dd565b90565b6118c86118c36118cd92611027565b6104be565b61016c565b90565b6118d99061188c565b9052565b91906118f0905f602085019401906118d0565b565b6118fa612435565b9061190f6119095f8401611544565b15610a1f565b9061191b5f8401611572565b8061192e6119285f61186d565b916105d9565b1480611a68575b90611949611943600161188c565b916105d9565b1480611a40575b61195b909115610a1f565b9081611a2f575b506119f35761198b90611980611978600161188c565b5f86016115bb565b826119e1575b611a6f565b611993575b50565b6119a0905f80910161160e565b60016119d87fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916119cf610112565b918291826118dd565b0390a15f611990565b6119ee60015f860161160e565b611986565b6119fb610112565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280611a2b600482016103a3565b0390fd5b611a3a915015610a1f565b5f611962565b5061195b611a4d306118a8565b3b611a60611a5a5f6118b4565b9161016c565b149050611950565b5082611935565b611a8c611a9291611a7f33612477565b611a8761248c565b611749565b5f61178d565b565b611a9d906118f2565b565b611ab3611aae611ab892610956565b6104be565b61016c565b90565b602090611ac66108c5565b50611ad030610e8e565b611af163fac0ba74611afc8697611ae5610112565b988996879586956108ef565b855260048501610e9a565b03915afa918215611bd657611b27611b22611b3d946020935f91611ba9575b509361093e565b61094a565b63313ce56790611b35610112565b9485926108ef565b82528180611b4d600482016103a3565b03915afa918215611ba457611b7392611b6d915f91611b76575b50611a9f565b906124f3565b90565b611b97915060203d8111611b9d575b611b8f8183610299565b81019061097f565b5f611b67565b503d611b85565b610922565b611bc99150843d8111611bcf575b611bc18183610299565b8101906109e8565b5f611b1b565b503d611bb7565b610922565b611bec90611be7612308565b611bee565b565b80611c09611c03611bfe5f611046565b61013d565b9161013d565b14611c1957611c17906123a5565b565b611c5c611c255f611046565b611c2d610112565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b611c6990611bdb565b565b611c74906104c1565b90565b611c8090611c6b565b90565b611c8c906104dd565b90565b5f7f5374617469634f7261636c65206e6f7420736574000000000000000000000000910152565b611cc36014602092610709565b611ccc81611c8f565b0190565b611ce59060208101905f818303910152611cb6565b90565b15611cef57565b611cf7610112565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611d2760048201611cd0565b0390fd5b6fffffffffffffffffffffffffffffffff1690565b611d54611d4f611d599261016c565b6104be565b611d2b565b90565b67ffffffffffffffff8111611d745760208091020190565b61026c565b5f80fd5b90929192611d92611d8d82611d5c565b6102c2565b9381855260208086019202830192818411611dcf57915b838310611db65750505050565b60208091611dc484866108f5565b815201920191611da9565b611d79565b9080601f83011215611df257816020611def93519101611d7d565b90565b61025a565b919091604081840312611e3757611e10835f83016109d9565b92602082015167ffffffffffffffff8111611e3257611e2f9201611dd4565b90565b610120565b61011c565b611e4590611d2b565b9052565b90565b63ffffffff1690565b611e69611e64611e6e92611e49565b6104be565b611e4c565b90565b611e7a90611e55565b9052565b611eb3611eba94611ea9606094989795611e9f608086019a5f870190611e3c565b6020850190610582565b6040830190610582565b0190611e71565b565b611ef39192611ec96108c5565b506020611edd611ed85f6108e2565b6104e9565b63a5d2236f90611eeb610112565b9586926108ef565b82528180611f03600482016103a3565b03915afa928315611ff957611f59611f275f95611f84938791611fcb575b50611c77565b611f54611f3382611c83565b611f4d611f47611f428a611046565b61013d565b9161013d565b1415611ce8565b611c83565b91611f8f611f6b630757bc8192611d40565b9496603c90611f78610112565b988997889687966108ef565b865260048601611e7e565b03915afa908115611fc6575f91611fa5575b5090565b611fc191503d805f833e611fb98183610299565b810190611df7565b611fa1565b610922565b611fec915060203d8111611ff2575b611fe48183610299565b810190610904565b5f611f21565b503d611fda565b610922565b612007906104dd565b90565b61201330611ffe565b61204561203f7f000000000000000000000000000000000000000000000000000000000000000061013d565b9161013d565b14801561208f575b61205357565b61205b610112565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061208b600482016103a3565b0390fd5b50612098612525565b6120ca6120c47f000000000000000000000000000000000000000000000000000000000000000061013d565b9161013d565b141561204d565b506120da612308565b565b6120e5906120d1565b565b6120f0906104c1565b90565b6120fc906120e7565b90565b612108906104dd565b90565b612114816103e1565b0361211b57565b5f80fd5b9050519061212c8261210b565b565b9060208282031261214757612144915f0161211f565b90565b61011c565b919061217a602061216461215f866120f3565b6120ff565b6352d1902d90612172610112565b9384926108ef565b8252818061218a600482016103a3565b03915afa80915f9261225a575b50155f146121eb5750509060016121ac57505b565b6121e7906121b8610112565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b92836122066122006121fb610fca565b6103e1565b916103e1565b0361221b5761221692935061254f565b6121aa565b61225684612227610112565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016103f1565b0390fd5b61227c91925060203d8111612283575b6122748183610299565b81019061212e565b905f612197565b503d61226a565b61229330611ffe565b6122c56122bf7f000000000000000000000000000000000000000000000000000000000000000061013d565b9161013d565b036122cc57565b6122d4610112565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280612304600482016103a3565b0390fd5b612310611506565b61232961232361231e6125d8565b61013d565b9161013d565b0361233057565b61237261233b6125d8565b612343610112565b9182917f118cdaa70000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b61237f906104dd565b90565b90565b9061239a6123956123a192612376565b612382565b8254611755565b9055565b6123ad612411565b6123c56123bb5f83016114f9565b915f849101612385565b906123f96123f37f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093612376565b91612376565b91612402610112565b8061240c816103a3565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61246a906124656125e5565b61246c565b565b612475906126bd565b565b61248090612459565b565b61248a6125e5565b565b612494612482565b565b6124aa6124a56124af9261106f565b6104be565b61016c565b90565b6124c16124c79193929361016c565b9261016c565b82039182116124d257565b610a63565b6124e09061016c565b604d81116124ee57600a0a90565b610a63565b9061251c612517612522936125066108c5565b50926125126012612496565b6124b2565b6124d7565b90610aac565b90565b61252d6114c8565b506125485f61254261253d610fca565b6126c8565b016114f9565b90565b5190565b90612559826126cb565b816125847fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91612376565b9061258d610112565b80612597816103a3565b0390a26125a38161254b565b6125b56125af5f6118b4565b9161016c565b115f146125c9576125c5916127db565b505b565b50506125d3612740565b6125c7565b6125e06114c8565b503390565b6125f66125f061280e565b15610a1f565b6125fc57565b612604610112565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612634600482016103a3565b0390fd5b612649906126446125e5565b61264b565b565b8061266661266061265b5f611046565b61013d565b9161013d565b1461267657612674906123a5565b565b6126b96126825f611046565b61268a610112565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b6126c690612638565b565b90565b803b6126df6126d95f6118b4565b9161016c565b14612701576126ff905f6126f96126f4610fca565b6126c8565b01612385565b565b61273c9061270d610112565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b3461275361274d5f6118b4565b9161016c565b1161275a57565b612762610112565b7fb398979f00000000000000000000000000000000000000000000000000000000815280612792600482016103a3565b0390fd5b606090565b906127ad6127a8836102d7565b6102c2565b918252565b3d5f146127cd576127c23d61279b565b903d5f602084013e5b565b6127d5612796565b906127cb565b5f80612807936127e9612796565b508390602081019051915af4906127fe6127b2565b9091909161282c565b90565b5f90565b61281661280a565b506128295f612823612435565b01611544565b90565b9061284090612839612796565b5015610a1f565b5f1461284c57506128d0565b6128558261254b565b6128676128615f6118b4565b9161016c565b14806128b5575b612876575090565b6128b190612882610112565b9182917f9996b3150000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b50803b6128ca6128c45f6118b4565b9161016c565b1461286e565b6128d98161254b565b6128eb6128e55f6118b4565b9161016c565b115f146128fa57805190602001fd5b612902610112565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280612932600482016103a3565b0390fdfea2646970667358221220d2da65625f275711a0e1e9b1c31f4371d80a0cac66295959e99b4cf652a7c49664736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x296C PUSH2 0x9C DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x201B ADD MSTORE DUP2 DUP2 PUSH2 0x20A0 ADD MSTORE PUSH2 0x229B ADD MSTORE PUSH2 0x296C SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x55 PUSH1 0x8F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x74 PUSH1 0x70 PUSH1 0x78 SWAP3 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x62 JUMP JUMPDEST PUSH1 0x57 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x82 SWAP1 PUSH1 0x65 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8C SWAP1 PUSH1 0x7B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x96 ADDRESS PUSH1 0x85 JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x10C JUMP JUMPDEST DUP1 PUSH4 0x1F0E3CD2 EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x248391FF EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x8C41A354 EQ PUSH2 0xE9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0xB27B5E75 EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCA66D9A8 EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC6 JUMPI PUSH4 0xFAC0BA74 SUB PUSH2 0xE JUMPI PUSH2 0x88B JUMP JUMPDEST PUSH2 0x858 JUMP JUMPDEST PUSH2 0x822 JUMP JUMPDEST PUSH2 0x7EF JUMP JUMPDEST PUSH2 0x79B JUMP JUMPDEST PUSH2 0x766 JUMP JUMPDEST PUSH2 0x636 JUMP JUMPDEST PUSH2 0x5A4 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST PUSH2 0x43B JUMP JUMPDEST PUSH2 0x406 JUMP JUMPDEST PUSH2 0x3A8 JUMP JUMPDEST PUSH2 0x224 JUMP JUMPDEST PUSH2 0x1EE JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x146 SWAP1 PUSH2 0x124 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x152 DUP2 PUSH2 0x13D JUMP JUMPDEST SUB PUSH2 0x159 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x16A DUP3 PUSH2 0x149 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x178 DUP2 PUSH2 0x16C JUMP JUMPDEST SUB PUSH2 0x17F JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x190 DUP3 PUSH2 0x16F JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x1C7 JUMPI PUSH2 0x1C4 PUSH2 0x1AD DUP5 PUSH0 DUP6 ADD PUSH2 0x15D JUMP JUMPDEST SWAP4 PUSH2 0x1BB DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x15D JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x183 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0x1D5 SWAP1 PUSH2 0x16C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1EC SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1CC JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x21F JUMPI PUSH2 0x21B PUSH2 0x20A PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0xB73 JUMP JUMPDEST PUSH2 0x212 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x255 JUMPI PUSH2 0x251 PUSH2 0x240 PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0xECC JUMP JUMPDEST PUSH2 0x248 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x2A3 SWAP1 PUSH2 0x262 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST SWAP1 PUSH2 0x2D5 PUSH2 0x2CE PUSH2 0x112 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x299 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2F5 JUMPI PUSH2 0x2F1 PUSH1 0x20 SWAP2 PUSH2 0x262 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x31A PUSH2 0x315 DUP3 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x336 JUMPI PUSH2 0x334 SWAP3 PUSH2 0x2FA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x359 JUMPI DUP2 PUSH1 0x20 PUSH2 0x356 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x305 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x39E JUMPI PUSH2 0x377 DUP4 PUSH0 DUP4 ADD PUSH2 0x15D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x399 JUMPI PUSH2 0x396 SWAP3 ADD PUSH2 0x33B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x3BC PUSH2 0x3B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x35E JUMP JUMPDEST SWAP1 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x3C4 PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x3CE DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x3DC JUMPI JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3ED SWAP1 PUSH2 0x3E1 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x404 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3E4 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x436 JUMPI PUSH2 0x416 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x432 PUSH2 0x421 PUSH2 0x1002 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3F1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x469 JUMPI PUSH2 0x44B CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x1065 JUMP JUMPDEST PUSH2 0x45B PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x465 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x49B SWAP1 PUSH1 0x8 PUSH2 0x4A0 SWAP4 MUL PUSH2 0x46E JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4AE SWAP2 SLOAD PUSH2 0x48B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4BB PUSH0 DUP1 PUSH2 0x4A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4D5 PUSH2 0x4D0 PUSH2 0x4DA SWAP3 PUSH2 0x124 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x124 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4E6 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4F2 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FE SWAP1 PUSH2 0x4E9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x515 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x547 JUMPI PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x543 PUSH2 0x532 PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0x53A PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x57D JUMPI PUSH2 0x579 PUSH2 0x568 PUSH2 0x562 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0x108E JUMP JUMPDEST PUSH2 0x570 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH2 0x58B SWAP1 PUSH2 0x13D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5A2 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5D4 JUMPI PUSH2 0x5B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x5D0 PUSH2 0x5BF PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x5C7 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5EF DUP2 PUSH2 0x5D9 JUMP JUMPDEST SUB PUSH2 0x5F6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x607 DUP3 PUSH2 0x5E6 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x631 JUMPI DUP1 PUSH2 0x625 PUSH2 0x62E SWAP3 PUSH0 DUP7 ADD PUSH2 0x15D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x5FA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST CALLVALUE PUSH2 0x665 JUMPI PUSH2 0x64F PUSH2 0x649 CALLDATASIZE PUSH1 0x4 PUSH2 0x609 JUMP JUMPDEST SWAP1 PUSH2 0x17D4 JUMP JUMPDEST PUSH2 0x657 PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x661 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x688 JUMPI PUSH2 0x684 PUSH1 0x20 SWAP2 PUSH2 0x262 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST SWAP1 PUSH2 0x69F PUSH2 0x69A DUP4 PUSH2 0x66A JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x6D5 PUSH1 0x5 PUSH2 0x68D JUMP JUMPDEST SWAP1 PUSH2 0x6E2 PUSH1 0x20 DUP4 ADD PUSH2 0x6A4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6EC PUSH2 0x6CB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6F7 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x702 PUSH2 0x6EF JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x73C PUSH2 0x745 PUSH1 0x20 SWAP4 PUSH2 0x74A SWAP4 PUSH2 0x733 DUP2 PUSH2 0x705 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x709 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x712 JUMP JUMPDEST PUSH2 0x262 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x763 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x71D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x796 JUMPI PUSH2 0x776 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x792 PUSH2 0x781 PUSH2 0x6FA JUMP JUMPDEST PUSH2 0x789 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x74E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x7CC JUMPI PUSH2 0x7C8 PUSH2 0x7B7 PUSH2 0x7B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0x17E0 JUMP JUMPDEST PUSH2 0x7BF PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x7EA JUMPI PUSH2 0x7E7 SWAP2 PUSH0 ADD PUSH2 0x15D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST CALLVALUE PUSH2 0x81D JUMPI PUSH2 0x807 PUSH2 0x802 CALLDATASIZE PUSH1 0x4 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x1A94 JUMP JUMPDEST PUSH2 0x80F PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x819 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x853 JUMPI PUSH2 0x84F PUSH2 0x83E PUSH2 0x838 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0x1ABB JUMP JUMPDEST PUSH2 0x846 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x886 JUMPI PUSH2 0x870 PUSH2 0x86B CALLDATASIZE PUSH1 0x4 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x1C60 JUMP JUMPDEST PUSH2 0x878 PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x882 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x8BC JUMPI PUSH2 0x8B8 PUSH2 0x8A7 PUSH2 0x8A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0x1EBC JUMP JUMPDEST PUSH2 0x8AF PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x8DA PUSH2 0x8DF SWAP2 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8EC SWAP1 SLOAD PUSH2 0x8CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x902 DUP3 PUSH2 0x149 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x91D JUMPI PUSH2 0x91A SWAP2 PUSH0 ADD PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0x92A PUSH2 0x112 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x93B SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x947 SWAP1 PUSH2 0x932 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x953 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x965 DUP2 PUSH2 0x956 JUMP JUMPDEST SUB PUSH2 0x96C JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x97D DUP3 PUSH2 0x95C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x998 JUMPI PUSH2 0x995 SWAP2 PUSH0 ADD PUSH2 0x970 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0x9A6 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9B2 SWAP1 PUSH2 0x99D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9BE SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9CA SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9D6 SWAP1 PUSH2 0x9C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x9E6 DUP3 PUSH2 0x16F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xA01 JUMPI PUSH2 0x9FE SWAP2 PUSH0 ADD PUSH2 0x9D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0xA0F SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA1B SWAP1 PUSH2 0xA06 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xA2D SWAP1 PUSH2 0xA1F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xA5A PUSH2 0xA61 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xA50 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xA12 JUMP JUMPDEST ADD SWAP1 PUSH2 0xA24 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xA99 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0xAA7 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH2 0xABB PUSH2 0xAC1 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x16C JUMP JUMPDEST SWAP3 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0xACD DUP4 DUP3 MUL PUSH2 0x16C JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xADC JUMPI JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xB1A PUSH2 0xB20 SWAP2 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0xB2B JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0xB3C PUSH2 0xB42 SWAP2 PUSH2 0x956 JUMP JUMPDEST SWAP2 PUSH2 0x956 JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0xB4F JUMPI JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB6B PUSH2 0xB66 PUSH2 0xB70 SWAP3 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0xB7E PUSH2 0x8C5 JUMP JUMPDEST POP DUP1 PUSH2 0xB92 PUSH2 0xB8C DUP6 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ PUSH2 0xE88 JUMPI PUSH2 0xBC3 PUSH1 0x20 PUSH2 0xBAD PUSH2 0xBA8 PUSH0 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x4E9 JUMP JUMPDEST PUSH4 0x8E1C3A8A SWAP1 PUSH2 0xBBB PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xBD3 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xE83 JUMPI PUSH0 SWAP2 PUSH2 0xE55 JUMPI JUMPDEST POP SWAP1 PUSH2 0xC13 PUSH1 0x20 PUSH2 0xBFD PUSH2 0xBF8 DUP5 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0xC0B PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xC23 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0xE50 JUMPI PUSH2 0xC63 SWAP2 PUSH0 SWAP2 PUSH2 0xE22 JUMPI JUMPDEST POP SWAP5 PUSH1 0x20 PUSH2 0xC4D PUSH2 0xC48 DUP4 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0xC5B PUSH2 0x112 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xC73 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0xE1D JUMPI PUSH2 0xC95 PUSH2 0xC9A SWAP2 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0xDF0 JUMPI JUMPDEST POP SWAP6 PUSH2 0x9A9 JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0xCCD PUSH2 0xCB4 PUSH2 0xCAE PUSH4 0x802431FB SWAP7 PUSH2 0x9CD JUMP JUMPDEST SWAP4 PUSH2 0x9CD JUMP JUMPDEST SWAP5 PUSH2 0xCD8 PUSH0 PUSH2 0xCC1 PUSH2 0x112 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xDEB JUMPI PUSH2 0xD11 SWAP2 PUSH2 0xD02 SWAP2 PUSH0 SWAP2 PUSH2 0xDBD JUMPI JUMPDEST POP PUSH2 0xCFC DUP7 PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xD0B DUP4 PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST SWAP3 PUSH2 0xD1A PUSH2 0x8C5 JUMP JUMPDEST POP DUP1 PUSH2 0xD2E PUSH2 0xD28 DUP5 PUSH2 0x956 JUMP JUMPDEST SWAP2 PUSH2 0x956 JUMP JUMPDEST LT ISZERO PUSH0 EQ PUSH2 0xD79 JUMPI PUSH2 0xD5E SWAP3 PUSH2 0xD53 PUSH2 0xD4E PUSH2 0xD75 SWAP7 SWAP5 PUSH2 0xD59 SWAP5 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xD6F PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDA1 SWAP3 PUSH2 0xD96 PUSH2 0xD91 PUSH2 0xD9C SWAP4 PUSH2 0xDB8 SWAP8 SWAP6 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xDB2 PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST PUSH2 0xD76 JUMP JUMPDEST PUSH2 0xDDE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xDE4 JUMPI JUMPDEST PUSH2 0xDD6 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0xCF2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xDCC JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0xE10 SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0xE16 JUMPI JUMPDEST PUSH2 0xE08 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0xC8E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xDFE JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0xE43 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xE49 JUMPI JUMPDEST PUSH2 0xE3B DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0xC38 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0xE76 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xE7C JUMPI JUMPDEST PUSH2 0xE6E DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x904 JUMP JUMPDEST PUSH0 PUSH2 0xBE5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xE97 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xEC3 PUSH2 0xECA SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xEB9 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST ADD SWAP1 PUSH2 0x1CC JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0xED8 PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0xF05 PUSH2 0xEE5 ADDRESS PUSH2 0xE8E JUMP JUMPDEST SWAP2 PUSH2 0xF10 PUSH4 0xFAC0BA74 SWAP2 SWAP5 SWAP7 PUSH2 0xEF9 PUSH2 0x112 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xE9A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xF54 JUMPI PUSH0 SWAP2 PUSH2 0xF26 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xF47 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xF4D JUMPI JUMPDEST PUSH2 0xF3F DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0xF22 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF35 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST SWAP1 PUSH2 0xF6B SWAP2 PUSH2 0xF66 PUSH2 0x200A JUMP JUMPDEST PUSH2 0xF6D JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xF80 SWAP2 PUSH2 0xF7B DUP2 PUSH2 0x20DC JUMP JUMPDEST PUSH2 0x214C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xF8C SWAP2 PUSH2 0xF59 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xFA3 SWAP1 PUSH2 0xF9E PUSH2 0x228A JUMP JUMPDEST PUSH2 0xFF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0xFC2 PUSH2 0xFBD PUSH2 0xFC7 SWAP3 PUSH2 0xFA6 JUMP JUMPDEST PUSH2 0xFA9 JUMP JUMPDEST PUSH2 0x3E1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFF3 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0xFAE JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0xFFF PUSH2 0xFCA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1012 PUSH2 0x100D PUSH2 0xF8E JUMP JUMPDEST PUSH2 0xF92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x101D PUSH2 0x2308 JUMP JUMPDEST PUSH2 0x1025 PUSH2 0x1052 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x103E PUSH2 0x1039 PUSH2 0x1043 SWAP3 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x124 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x104F SWAP1 PUSH2 0x102A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1063 PUSH2 0x105E PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x23A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x106D PUSH2 0x1015 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1086 PUSH2 0x1081 PUSH2 0x108B SWAP3 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x956 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x1097 PUSH2 0x8C5 JUMP JUMPDEST POP DUP3 PUSH2 0x10AB PUSH2 0x10A5 DUP5 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ PUSH2 0x1413 JUMPI PUSH2 0x10DC PUSH1 0x20 PUSH2 0x10C6 PUSH2 0x10C1 PUSH0 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x4E9 JUMP JUMPDEST PUSH4 0x8E1C3A8A SWAP1 PUSH2 0x10D4 PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x10EC PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x140E JUMPI PUSH0 SWAP2 PUSH2 0x13E0 JUMPI JUMPDEST POP SWAP1 PUSH2 0x112C PUSH1 0x20 PUSH2 0x1116 PUSH2 0x1111 DUP8 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1124 PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x113C PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x13DB JUMPI PUSH2 0x117C SWAP2 PUSH0 SWAP2 PUSH2 0x13AD JUMPI JUMPDEST POP SWAP4 PUSH1 0x20 PUSH2 0x1166 PUSH2 0x1161 DUP4 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1174 PUSH2 0x112 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x118C PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x13A8 JUMPI PUSH2 0x11AE PUSH2 0x11B3 SWAP2 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0x137B JUMPI JUMPDEST POP SWAP6 PUSH2 0x9A9 JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x11E6 PUSH2 0x11CD PUSH2 0x11C7 PUSH4 0x802431FB SWAP10 PUSH2 0x9CD JUMP JUMPDEST SWAP4 PUSH2 0x9CD JUMP JUMPDEST SWAP8 PUSH2 0x11F1 PUSH0 PUSH2 0x11DA PUSH2 0x112 JUMP JUMPDEST SWAP11 DUP12 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1376 JUMPI PUSH2 0x121D PUSH2 0x122C SWAP2 PUSH2 0x12A2 SWAP7 PUSH0 SWAP2 PUSH2 0x1348 JUMPI JUMPDEST POP PUSH2 0x1217 DUP7 PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x1226 DUP5 PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST SWAP2 PUSH2 0x1235 PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0x123E PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0x125B PUSH2 0x1256 PUSH1 0x12 PUSH2 0x1251 DUP5 SWAP2 PUSH2 0x1072 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP4 DUP1 PUSH2 0x126F PUSH2 0x1269 DUP5 PUSH2 0x956 JUMP JUMPDEST SWAP2 PUSH2 0x956 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x12A5 JUMPI POP POP PUSH2 0x129C SWAP2 PUSH2 0x1285 SWAP2 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x1296 PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST PUSH2 0xAAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x12B8 PUSH2 0x12B2 DUP5 PUSH2 0x956 JUMP JUMPDEST SWAP2 PUSH2 0x956 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x1304 JUMPI PUSH2 0x12E7 SWAP3 PUSH2 0x12DC PUSH2 0x12D7 PUSH2 0x12FE SWAP7 SWAP5 PUSH2 0x12E2 SWAP5 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x12F8 PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST PUSH2 0x129D JUMP JUMPDEST PUSH2 0x132C SWAP3 PUSH2 0x1321 PUSH2 0x131C PUSH2 0x1327 SWAP4 PUSH2 0x1343 SWAP8 SWAP6 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x133D PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST PUSH2 0x12FF JUMP JUMPDEST PUSH2 0x1369 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x136F JUMPI JUMPDEST PUSH2 0x1361 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0x120D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1357 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x139B SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x13A1 JUMPI JUMPDEST PUSH2 0x1393 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0x11A7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1389 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x13CE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x13D4 JUMPI JUMPDEST PUSH2 0x13C6 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0x1151 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13BC JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1401 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1407 JUMPI JUMPDEST PUSH2 0x13F9 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x904 JUMP JUMPDEST PUSH0 PUSH2 0x10FE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13EF JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1444 SWAP3 POP SWAP1 PUSH1 0x20 PUSH2 0x142E PUSH2 0x1429 PUSH1 0x12 SWAP4 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x143C PUSH2 0x112 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1454 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x14C3 JUMPI PUSH2 0x148C SWAP4 PUSH2 0x1486 SWAP3 PUSH2 0x1481 SWAP3 PUSH0 SWAP3 PUSH2 0x148F JUMPI JUMPDEST POP PUSH2 0x147C SWAP1 PUSH2 0x1072 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x147C SWAP2 SWAP3 POP PUSH2 0x14B5 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x14BC JUMPI JUMPDEST PUSH2 0x14AD DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1472 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14F1 PUSH2 0x14F6 SWAP2 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x14CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1503 SWAP1 SLOAD PUSH2 0x14E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x150E PUSH2 0x14C8 JUMP JUMPDEST POP PUSH2 0x1521 PUSH0 PUSH2 0x151B PUSH2 0x2411 JUMP JUMPDEST ADD PUSH2 0x14F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x153C PUSH2 0x1541 SWAP2 PUSH2 0x1524 JUMP JUMPDEST PUSH2 0x152A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x154E SWAP1 SLOAD PUSH2 0x1530 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x156A PUSH2 0x156F SWAP2 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x1551 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x157C SWAP1 SLOAD PUSH2 0x155E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1592 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xFA9 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x15B0 PUSH2 0x15AB PUSH2 0x15B5 SWAP3 PUSH2 0x5D9 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15D0 PUSH2 0x15CB PUSH2 0x15D7 SWAP3 PUSH2 0x159C JUMP JUMPDEST PUSH2 0x15B8 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x157F JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15F5 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x15DB JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1608 SWAP1 PUSH2 0xA1F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1623 PUSH2 0x161E PUSH2 0x162A SWAP3 PUSH2 0x15FF JUMP JUMPDEST PUSH2 0x160B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15E1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1637 SWAP1 PUSH2 0x5D9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x164E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x162E JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x165B PUSH2 0x2435 JUMP JUMPDEST SWAP1 PUSH2 0x1667 PUSH0 DUP4 ADD PUSH2 0x1544 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1718 JUMPI JUMPDEST PUSH2 0x16DC JUMPI PUSH2 0x16A1 SWAP3 PUSH2 0x1698 SWAP2 PUSH2 0x1686 DUP7 PUSH0 DUP7 ADD PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x1693 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x160E JUMP JUMPDEST PUSH2 0x17AD JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x160E JUMP JUMPDEST PUSH2 0x16D7 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x16CE PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x163B JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x16E4 PUSH2 0x112 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1714 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x1724 PUSH0 DUP4 ADD PUSH2 0x1572 JUMP JUMPDEST PUSH2 0x1736 PUSH2 0x1730 DUP7 PUSH2 0x5D9 JUMP JUMPDEST SWAP2 PUSH2 0x5D9 JUMP JUMPDEST LT ISZERO PUSH2 0x166E JUMP JUMPDEST PUSH2 0x1746 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1752 SWAP1 PUSH2 0x173D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1774 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xFA9 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1787 SWAP1 PUSH2 0x173D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x17A2 PUSH2 0x179D PUSH2 0x17A9 SWAP3 PUSH2 0x177E JUMP JUMPDEST PUSH2 0x178A JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1755 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x17D2 SWAP2 POP PUSH2 0x17CC SWAP1 PUSH2 0x17BF CALLER PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x17C7 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1749 JUMP JUMPDEST PUSH0 PUSH2 0x178D JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x17DE SWAP2 PUSH2 0x1650 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x17EC PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0x1819 PUSH2 0x17F9 ADDRESS PUSH2 0xE8E JUMP JUMPDEST SWAP2 PUSH2 0x1824 PUSH4 0xCA66D9A8 SWAP2 SWAP5 SWAP7 PUSH2 0x180D PUSH2 0x112 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xE9A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1868 JUMPI PUSH0 SWAP2 PUSH2 0x183A JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x185B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1861 JUMPI JUMPDEST PUSH2 0x1853 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0x1836 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1849 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1881 PUSH2 0x187C PUSH2 0x1886 SWAP3 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18A0 PUSH2 0x189B PUSH2 0x18A5 SWAP3 PUSH2 0x1889 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18B1 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18C8 PUSH2 0x18C3 PUSH2 0x18CD SWAP3 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18D9 SWAP1 PUSH2 0x188C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x18F0 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x18D0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x18FA PUSH2 0x2435 JUMP JUMPDEST SWAP1 PUSH2 0x190F PUSH2 0x1909 PUSH0 DUP5 ADD PUSH2 0x1544 JUMP JUMPDEST ISZERO PUSH2 0xA1F JUMP JUMPDEST SWAP1 PUSH2 0x191B PUSH0 DUP5 ADD PUSH2 0x1572 JUMP JUMPDEST DUP1 PUSH2 0x192E PUSH2 0x1928 PUSH0 PUSH2 0x186D JUMP JUMPDEST SWAP2 PUSH2 0x5D9 JUMP JUMPDEST EQ DUP1 PUSH2 0x1A68 JUMPI JUMPDEST SWAP1 PUSH2 0x1949 PUSH2 0x1943 PUSH1 0x1 PUSH2 0x188C JUMP JUMPDEST SWAP2 PUSH2 0x5D9 JUMP JUMPDEST EQ DUP1 PUSH2 0x1A40 JUMPI JUMPDEST PUSH2 0x195B SWAP1 SWAP2 ISZERO PUSH2 0xA1F JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1A2F JUMPI JUMPDEST POP PUSH2 0x19F3 JUMPI PUSH2 0x198B SWAP1 PUSH2 0x1980 PUSH2 0x1978 PUSH1 0x1 PUSH2 0x188C JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x15BB JUMP JUMPDEST DUP3 PUSH2 0x19E1 JUMPI JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x1993 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x19A0 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x160E JUMP JUMPDEST PUSH1 0x1 PUSH2 0x19D8 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x19CF PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x18DD JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1990 JUMP JUMPDEST PUSH2 0x19EE PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x160E JUMP JUMPDEST PUSH2 0x1986 JUMP JUMPDEST PUSH2 0x19FB PUSH2 0x112 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1A2B PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A3A SWAP2 POP ISZERO PUSH2 0xA1F JUMP JUMPDEST PUSH0 PUSH2 0x1962 JUMP JUMPDEST POP PUSH2 0x195B PUSH2 0x1A4D ADDRESS PUSH2 0x18A8 JUMP JUMPDEST EXTCODESIZE PUSH2 0x1A60 PUSH2 0x1A5A PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x1950 JUMP JUMPDEST POP DUP3 PUSH2 0x1935 JUMP JUMPDEST PUSH2 0x1A8C PUSH2 0x1A92 SWAP2 PUSH2 0x1A7F CALLER PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x1A87 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1749 JUMP JUMPDEST PUSH0 PUSH2 0x178D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A9D SWAP1 PUSH2 0x18F2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1AB3 PUSH2 0x1AAE PUSH2 0x1AB8 SWAP3 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x1AC6 PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0x1AD0 ADDRESS PUSH2 0xE8E JUMP JUMPDEST PUSH2 0x1AF1 PUSH4 0xFAC0BA74 PUSH2 0x1AFC DUP7 SWAP8 PUSH2 0x1AE5 PUSH2 0x112 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xE9A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1BD6 JUMPI PUSH2 0x1B27 PUSH2 0x1B22 PUSH2 0x1B3D SWAP5 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x1BA9 JUMPI JUMPDEST POP SWAP4 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1B35 PUSH2 0x112 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1B4D PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1BA4 JUMPI PUSH2 0x1B73 SWAP3 PUSH2 0x1B6D SWAP2 PUSH0 SWAP2 PUSH2 0x1B76 JUMPI JUMPDEST POP PUSH2 0x1A9F JUMP JUMPDEST SWAP1 PUSH2 0x24F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B97 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B9D JUMPI JUMPDEST PUSH2 0x1B8F DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0x1B67 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B85 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1BC9 SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x1BCF JUMPI JUMPDEST PUSH2 0x1BC1 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0x1B1B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1BEC SWAP1 PUSH2 0x1BE7 PUSH2 0x2308 JUMP JUMPDEST PUSH2 0x1BEE JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x1C09 PUSH2 0x1C03 PUSH2 0x1BFE PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ PUSH2 0x1C19 JUMPI PUSH2 0x1C17 SWAP1 PUSH2 0x23A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C5C PUSH2 0x1C25 PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x1C2D PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C69 SWAP1 PUSH2 0x1BDB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C74 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C80 SWAP1 PUSH2 0x1C6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C8C SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x5374617469634F7261636C65206E6F7420736574000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1CC3 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x709 JUMP JUMPDEST PUSH2 0x1CCC DUP2 PUSH2 0x1C8F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1CE5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1CB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CEF JUMPI JUMP JUMPDEST PUSH2 0x1CF7 PUSH2 0x112 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1D27 PUSH1 0x4 DUP3 ADD PUSH2 0x1CD0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1D54 PUSH2 0x1D4F PUSH2 0x1D59 SWAP3 PUSH2 0x16C JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x1D2B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1D74 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x1D92 PUSH2 0x1D8D DUP3 PUSH2 0x1D5C JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x1DCF JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x1DB6 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x1DC4 DUP5 DUP7 PUSH2 0x8F5 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1DA9 JUMP JUMPDEST PUSH2 0x1D79 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1DF2 JUMPI DUP2 PUSH1 0x20 PUSH2 0x1DEF SWAP4 MLOAD SWAP2 ADD PUSH2 0x1D7D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x1E37 JUMPI PUSH2 0x1E10 DUP4 PUSH0 DUP4 ADD PUSH2 0x9D9 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E32 JUMPI PUSH2 0x1E2F SWAP3 ADD PUSH2 0x1DD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0x1E45 SWAP1 PUSH2 0x1D2B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1E69 PUSH2 0x1E64 PUSH2 0x1E6E SWAP3 PUSH2 0x1E49 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x1E4C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E7A SWAP1 PUSH2 0x1E55 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1EB3 PUSH2 0x1EBA SWAP5 PUSH2 0x1EA9 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x1E9F PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x1E3C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST ADD SWAP1 PUSH2 0x1E71 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1EF3 SWAP2 SWAP3 PUSH2 0x1EC9 PUSH2 0x8C5 JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x1EDD PUSH2 0x1ED8 PUSH0 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x4E9 JUMP JUMPDEST PUSH4 0xA5D2236F SWAP1 PUSH2 0x1EEB PUSH2 0x112 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1F03 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x1FF9 JUMPI PUSH2 0x1F59 PUSH2 0x1F27 PUSH0 SWAP6 PUSH2 0x1F84 SWAP4 DUP8 SWAP2 PUSH2 0x1FCB JUMPI JUMPDEST POP PUSH2 0x1C77 JUMP JUMPDEST PUSH2 0x1F54 PUSH2 0x1F33 DUP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1F4D PUSH2 0x1F47 PUSH2 0x1F42 DUP11 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ ISZERO PUSH2 0x1CE8 JUMP JUMPDEST PUSH2 0x1C83 JUMP JUMPDEST SWAP2 PUSH2 0x1F8F PUSH2 0x1F6B PUSH4 0x757BC81 SWAP3 PUSH2 0x1D40 JUMP JUMPDEST SWAP5 SWAP7 PUSH1 0x3C SWAP1 PUSH2 0x1F78 PUSH2 0x112 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP7 PUSH2 0x8EF JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x1E7E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FC6 JUMPI PUSH0 SWAP2 PUSH2 0x1FA5 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1FC1 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1FB9 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST PUSH2 0x1FA1 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1FEC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FF2 JUMPI JUMPDEST PUSH2 0x1FE4 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x904 JUMP JUMPDEST PUSH0 PUSH2 0x1F21 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x2007 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2013 ADDRESS PUSH2 0x1FFE JUMP JUMPDEST PUSH2 0x2045 PUSH2 0x203F PUSH32 0x0 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x208F JUMPI JUMPDEST PUSH2 0x2053 JUMPI JUMP JUMPDEST PUSH2 0x205B PUSH2 0x112 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x208B PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2098 PUSH2 0x2525 JUMP JUMPDEST PUSH2 0x20CA PUSH2 0x20C4 PUSH32 0x0 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ ISZERO PUSH2 0x204D JUMP JUMPDEST POP PUSH2 0x20DA PUSH2 0x2308 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x20E5 SWAP1 PUSH2 0x20D1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x20F0 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20FC SWAP1 PUSH2 0x20E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2108 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2114 DUP2 PUSH2 0x3E1 JUMP JUMPDEST SUB PUSH2 0x211B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x212C DUP3 PUSH2 0x210B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2147 JUMPI PUSH2 0x2144 SWAP2 PUSH0 ADD PUSH2 0x211F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x217A PUSH1 0x20 PUSH2 0x2164 PUSH2 0x215F DUP7 PUSH2 0x20F3 JUMP JUMPDEST PUSH2 0x20FF JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x2172 PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x218A PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x225A JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x21EB JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x21AC JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x21E7 SWAP1 PUSH2 0x21B8 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2206 PUSH2 0x2200 PUSH2 0x21FB PUSH2 0xFCA JUMP JUMPDEST PUSH2 0x3E1 JUMP JUMPDEST SWAP2 PUSH2 0x3E1 JUMP JUMPDEST SUB PUSH2 0x221B JUMPI PUSH2 0x2216 SWAP3 SWAP4 POP PUSH2 0x254F JUMP JUMPDEST PUSH2 0x21AA JUMP JUMPDEST PUSH2 0x2256 DUP5 PUSH2 0x2227 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3F1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x227C SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2283 JUMPI JUMPDEST PUSH2 0x2274 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x212E JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2197 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x226A JUMP JUMPDEST PUSH2 0x2293 ADDRESS PUSH2 0x1FFE JUMP JUMPDEST PUSH2 0x22C5 PUSH2 0x22BF PUSH32 0x0 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST SUB PUSH2 0x22CC JUMPI JUMP JUMPDEST PUSH2 0x22D4 PUSH2 0x112 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2304 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2310 PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x2329 PUSH2 0x2323 PUSH2 0x231E PUSH2 0x25D8 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST SUB PUSH2 0x2330 JUMPI JUMP JUMPDEST PUSH2 0x2372 PUSH2 0x233B PUSH2 0x25D8 JUMP JUMPDEST PUSH2 0x2343 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x237F SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x239A PUSH2 0x2395 PUSH2 0x23A1 SWAP3 PUSH2 0x2376 JUMP JUMPDEST PUSH2 0x2382 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1755 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x23AD PUSH2 0x2411 JUMP JUMPDEST PUSH2 0x23C5 PUSH2 0x23BB PUSH0 DUP4 ADD PUSH2 0x14F9 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x2385 JUMP JUMPDEST SWAP1 PUSH2 0x23F9 PUSH2 0x23F3 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x2376 JUMP JUMPDEST SWAP2 PUSH2 0x2376 JUMP JUMPDEST SWAP2 PUSH2 0x2402 PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x240C DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x246A SWAP1 PUSH2 0x2465 PUSH2 0x25E5 JUMP JUMPDEST PUSH2 0x246C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2475 SWAP1 PUSH2 0x26BD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2480 SWAP1 PUSH2 0x2459 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x248A PUSH2 0x25E5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2494 PUSH2 0x2482 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24AA PUSH2 0x24A5 PUSH2 0x24AF SWAP3 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C1 PUSH2 0x24C7 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x16C JUMP JUMPDEST SWAP3 PUSH2 0x16C JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x24D2 JUMPI JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH2 0x24E0 SWAP1 PUSH2 0x16C JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x24EE JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST SWAP1 PUSH2 0x251C PUSH2 0x2517 PUSH2 0x2522 SWAP4 PUSH2 0x2506 PUSH2 0x8C5 JUMP JUMPDEST POP SWAP3 PUSH2 0x2512 PUSH1 0x12 PUSH2 0x2496 JUMP JUMPDEST PUSH2 0x24B2 JUMP JUMPDEST PUSH2 0x24D7 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x252D PUSH2 0x14C8 JUMP JUMPDEST POP PUSH2 0x2548 PUSH0 PUSH2 0x2542 PUSH2 0x253D PUSH2 0xFCA JUMP JUMPDEST PUSH2 0x26C8 JUMP JUMPDEST ADD PUSH2 0x14F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2559 DUP3 PUSH2 0x26CB JUMP JUMPDEST DUP2 PUSH2 0x2584 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x2376 JUMP JUMPDEST SWAP1 PUSH2 0x258D PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x2597 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x25A3 DUP2 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x25B5 PUSH2 0x25AF PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x25C9 JUMPI PUSH2 0x25C5 SWAP2 PUSH2 0x27DB JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x25D3 PUSH2 0x2740 JUMP JUMPDEST PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x25E0 PUSH2 0x14C8 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x25F6 PUSH2 0x25F0 PUSH2 0x280E JUMP JUMPDEST ISZERO PUSH2 0xA1F JUMP JUMPDEST PUSH2 0x25FC JUMPI JUMP JUMPDEST PUSH2 0x2604 PUSH2 0x112 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2634 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2649 SWAP1 PUSH2 0x2644 PUSH2 0x25E5 JUMP JUMPDEST PUSH2 0x264B JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2666 PUSH2 0x2660 PUSH2 0x265B PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ PUSH2 0x2676 JUMPI PUSH2 0x2674 SWAP1 PUSH2 0x23A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x26B9 PUSH2 0x2682 PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x268A PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x26C6 SWAP1 PUSH2 0x2638 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x26DF PUSH2 0x26D9 PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x2701 JUMPI PUSH2 0x26FF SWAP1 PUSH0 PUSH2 0x26F9 PUSH2 0x26F4 PUSH2 0xFCA JUMP JUMPDEST PUSH2 0x26C8 JUMP JUMPDEST ADD PUSH2 0x2385 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x273C SWAP1 PUSH2 0x270D PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2753 PUSH2 0x274D PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST GT PUSH2 0x275A JUMPI JUMP JUMPDEST PUSH2 0x2762 PUSH2 0x112 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2792 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x27AD PUSH2 0x27A8 DUP4 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x27CD JUMPI PUSH2 0x27C2 RETURNDATASIZE PUSH2 0x279B JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x27D5 PUSH2 0x2796 JUMP JUMPDEST SWAP1 PUSH2 0x27CB JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2807 SWAP4 PUSH2 0x27E9 PUSH2 0x2796 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x27FE PUSH2 0x27B2 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x282C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2816 PUSH2 0x280A JUMP JUMPDEST POP PUSH2 0x2829 PUSH0 PUSH2 0x2823 PUSH2 0x2435 JUMP JUMPDEST ADD PUSH2 0x1544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2840 SWAP1 PUSH2 0x2839 PUSH2 0x2796 JUMP JUMPDEST POP ISZERO PUSH2 0xA1F JUMP JUMPDEST PUSH0 EQ PUSH2 0x284C JUMPI POP PUSH2 0x28D0 JUMP JUMPDEST PUSH2 0x2855 DUP3 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2867 PUSH2 0x2861 PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ DUP1 PUSH2 0x28B5 JUMPI JUMPDEST PUSH2 0x2876 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x28B1 SWAP1 PUSH2 0x2882 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x28CA PUSH2 0x28C4 PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x286E JUMP JUMPDEST PUSH2 0x28D9 DUP2 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x28EB PUSH2 0x28E5 PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x28FA JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2902 PUSH2 0x112 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2932 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 0xDA PUSH6 0x625F275711A0 0xE1 0xE9 0xB1 0xC3 0x1F NUMBER PUSH18 0xD80A0CAC66295959E99B4CF652A7C4966473 PUSH16 0x6C634300081900330000000000000000 ","sourceMap":"1963:7610:57:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;67:306:34:-;;;:::i;:::-;:::o;1963:7610:57:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":978,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":349,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":2293,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_addresst_uint256":{"entryPoint":402,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_bytes":{"entryPoint":862,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":1545,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn_fromMemory":{"entryPoint":7636,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_array_address_dyn_fromMemory":{"entryPoint":7549,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":773,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":827,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":8494,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":8479,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":2521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":2001,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":2308,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":2431,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":387,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":2536,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_array_address_dyn_fromMemory":{"entryPoint":7671,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint64":{"entryPoint":1530,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":2416,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":1410,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address_uint256":{"entryPoint":3738,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bool":{"entryPoint":2596,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":1009,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":996,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":1269,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IERC20":{"entryPoint":2578,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IERC20_contract_IERC20_bool":{"entryPoint":2609,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_rational_by":{"entryPoint":7793,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by_to_uint64":{"entryPoint":6352,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":1870,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":1821,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral_0bf7":{"entryPoint":7376,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_0bf731e51c3bdddc9de437c8fbd8fb76f6af6aa4bb4b0f5a60fe643d06ce9ff8":{"entryPoint":7350,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":931,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":1423,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":1282,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_rational_by":{"entryPoint":6365,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":5691,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint128":{"entryPoint":7740,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint128_address_address_rational_by":{"entryPoint":7806,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_uint256":{"entryPoint":473,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":460,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint64":{"entryPoint":5678,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_memory":{"entryPoint":706,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":10139,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":1677,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":274,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":7516,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":727,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":1642,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":9547,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":1797,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":1801,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":2830,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint256":{"entryPoint":9431,"id":null,"parameterSlots":1,"returnSlots":1},"checked_exp_rational_by_uint8":{"entryPoint":2704,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":2732,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":9394,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint8":{"entryPoint":2864,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":317,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":2591,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":993,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":5324,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":5418,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":1138,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":5457,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_0_by":{"entryPoint":4135,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by":{"entryPoint":4006,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":4207,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":6281,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":2900,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":7753,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint128":{"entryPoint":7467,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":292,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":364,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint32":{"entryPoint":7756,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":1497,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":2390,"id":null,"parameterSlots":1,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":4042,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":1775,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":9078,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_I1inchSpotAgg":{"entryPoint":2473,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":5961,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":8435,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":2509,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":2366,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IStaticOracle":{"entryPoint":7287,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":5631,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1Oracle_to_address":{"entryPoint":3726,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_I1inchSpotAgg_to_address":{"entryPoint":2485,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1257,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":6014,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":8447,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":2378,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":2566,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IStaticOracle_to_address":{"entryPoint":7299,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":6312,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":8190,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":6324,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_18_by_1_to_uint256":{"entryPoint":9366,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":4166,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":4014,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":4138,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":2903,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint32":{"entryPoint":7765,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":6284,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint8":{"entryPoint":4210,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":1764,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":6253,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1245,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_I1inchSpotAgg":{"entryPoint":2461,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":5949,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":8423,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":2497,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":2354,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IStaticOracle":{"entryPoint":7275,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1217,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint128":{"entryPoint":7488,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":5532,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint8_to_uint256":{"entryPoint":6815,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":762,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":1739,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1810,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":1894,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_convert":{"entryPoint":548,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_convertScaled":{"entryPoint":1947,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_convertScaledWithAgg":{"entryPoint":1356,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_convertScaledWithStaticOracle":{"entryPoint":2082,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_convertWithAgg":{"entryPoint":494,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_convertWithStaticOracle":{"entryPoint":2187,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2031,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":1444,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":1030,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":1303,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":1590,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":1083,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":2136,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":936,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":1163,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":5349,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":5424,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":2254,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":5470,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":10162,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":665,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":9335,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":9324,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":9917,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":9803,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":9356,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":9125,"id":193,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":8412,"id":11631,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":9701,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":10048,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":8842,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":8968,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":8202,"id":562,"parameterSlots":0,"returnSlots":0},"fun_convert":{"entryPoint":3788,"id":11176,"parameterSlots":3,"returnSlots":1},"fun_convertScaled":{"entryPoint":6112,"id":11197,"parameterSlots":3,"returnSlots":1},"fun_convertScaledWithAgg":{"entryPoint":4238,"id":11494,"parameterSlots":3,"returnSlots":1},"fun_convertScaledWithStaticOracle":{"entryPoint":6843,"id":11580,"parameterSlots":3,"returnSlots":1},"fun_convertWithAgg":{"entryPoint":2931,"id":11321,"parameterSlots":3,"returnSlots":1},"fun_convertWithStaticOracle":{"entryPoint":7868,"id":11545,"parameterSlots":3,"returnSlots":1},"fun_functionDelegateCall":{"entryPoint":10203,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":9928,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getImplementation":{"entryPoint":9509,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":9269,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":9233,"id":25,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":6804,"id":11130,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":6767,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":10254,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":9688,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_owner":{"entryPoint":5382,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":4098,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":4086,"id":null,"parameterSlots":1,"returnSlots":1},"fun_reinitialize":{"entryPoint":6100,"id":11155,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":6061,"id":null,"parameterSlots":2,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":4197,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":4178,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":10448,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_scaleUp":{"entryPoint":9459,"id":11601,"parameterSlots":2,"returnSlots":1},"fun_setImplementation":{"entryPoint":9931,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership":{"entryPoint":7264,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":7150,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":9551,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":8524,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":3970,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":3949,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":10284,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":1786,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_registry":{"entryPoint":1201,"id":11108,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":1214,"id":null,"parameterSlots":1,"returnSlots":1},"modifier_initializer":{"entryPoint":6386,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_notDelegated":{"entryPoint":3986,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":9784,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":9305,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":9346,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":8401,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":4117,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":7131,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":3929,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":5712,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":2659,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":2785,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":620,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":9090,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":5643,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":6026,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":5560,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":1187,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":5369,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":5444,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":2274,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":5490,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral_0bf7":{"entryPoint":7400,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":602,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":2241,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":7545,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":606,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":288,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":280,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":284,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":2338,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":610,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":4009,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":2287,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":5595,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":2249,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":5412,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":268,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1134,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_0bf731e51c3bdddc9de437c8fbd8fb76f6af6aa4bb4b0f5a60fe643d06ce9ff8":{"entryPoint":7311,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":1700,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":5503,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":5601,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":5973,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":9093,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":5646,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":6029,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":5563,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":329,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":8459,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":367,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":1510,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":2396,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":5320,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":10250,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":10134,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":3982,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":2245,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":8219},{"length":32,"start":8352},{"length":32,"start":8859}]},"linkReferences":{},"object":"60806040526004361015610013575b6108c1565b61001d5f3561010c565b80631f0e3cd214610107578063248391ff146101025780634f1ef286146100fd57806352d1902d146100f8578063715018a6146100f35780637b103999146100ee5780638c41a354146100e95780638da5cb5b146100e45780638f2248bc146100df578063ad3cb1cc146100da578063b27b5e75146100d5578063c4d66de8146100d0578063ca66d9a8146100cb578063f2fde38b146100c65763fac0ba740361000e5761088b565b610858565b610822565b6107ef565b61079b565b610766565b610636565b6105a4565b61054c565b610517565b61043b565b610406565b6103a8565b610224565b6101ee565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61014690610124565b90565b6101528161013d565b0361015957565b5f80fd5b9050359061016a82610149565b565b90565b6101788161016c565b0361017f57565b5f80fd5b905035906101908261016f565b565b90916060828403126101c7576101c46101ad845f850161015d565b936101bb816020860161015d565b93604001610183565b90565b61011c565b6101d59061016c565b9052565b91906101ec905f602085019401906101cc565b565b3461021f5761021b61020a610204366004610192565b91610b73565b610212610112565b918291826101d9565b0390f35b610118565b346102555761025161024061023a366004610192565b91610ecc565b610248610112565b918291826101d9565b0390f35b610118565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906102a390610262565b810190811067ffffffffffffffff8211176102bd57604052565b61026c565b906102d56102ce610112565b9283610299565b565b67ffffffffffffffff81116102f5576102f1602091610262565b0190565b61026c565b90825f939282370152565b9092919261031a610315826102d7565b6102c2565b9381855260208501908284011161033657610334926102fa565b565b61025e565b9080601f830112156103595781602061035693359101610305565b90565b61025a565b91909160408184031261039e57610377835f830161015d565b92602082013567ffffffffffffffff811161039957610396920161033b565b90565b610120565b61011c565b5f0190565b6103bc6103b636600461035e565b90610f82565b6103c4610112565b806103ce816103a3565b0390f35b5f9103126103dc57565b61011c565b90565b6103ed906103e1565b9052565b9190610404905f602085019401906103e4565b565b34610436576104163660046103d2565b610432610421611002565b610429610112565b918291826103f1565b0390f35b610118565b346104695761044b3660046103d2565b610453611065565b61045b610112565b80610465816103a3565b0390f35b610118565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61049b9060086104a0930261046e565b610472565b90565b906104ae915461048b565b90565b6104bb5f806104a3565b90565b90565b6104d56104d06104da92610124565b6104be565b610124565b90565b6104e6906104c1565b90565b6104f2906104dd565b90565b6104fe906104e9565b9052565b9190610515905f602085019401906104f5565b565b34610547576105273660046103d2565b6105436105326104b1565b61053a610112565b91829182610502565b0390f35b610118565b3461057d57610579610568610562366004610192565b9161108e565b610570610112565b918291826101d9565b0390f35b610118565b61058b9061013d565b9052565b91906105a2905f60208501940190610582565b565b346105d4576105b43660046103d2565b6105d06105bf611506565b6105c7610112565b9182918261058f565b0390f35b610118565b67ffffffffffffffff1690565b6105ef816105d9565b036105f657565b5f80fd5b90503590610607826105e6565b565b9190604083820312610631578061062561062e925f860161015d565b936020016105fa565b90565b61011c565b346106655761064f610649366004610609565b906117d4565b610657610112565b80610661816103a3565b0390f35b610118565b67ffffffffffffffff811161068857610684602091610262565b0190565b61026c565b9061069f61069a8361066a565b6102c2565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6106d5600561068d565b906106e2602083016106a4565b565b6106ec6106cb565b90565b6106f76106e4565b90565b6107026106ef565b90565b5190565b60209181520190565b90825f9392825e0152565b61073c61074560209361074a9361073381610705565b93848093610709565b95869101610712565b610262565b0190565b6107639160208201915f81840391015261071d565b90565b34610796576107763660046103d2565b6107926107816106fa565b610789610112565b9182918261074e565b0390f35b610118565b346107cc576107c86107b76107b1366004610192565b916117e0565b6107bf610112565b918291826101d9565b0390f35b610118565b906020828203126107ea576107e7915f0161015d565b90565b61011c565b3461081d576108076108023660046107d1565b611a94565b61080f610112565b80610819816103a3565b0390f35b610118565b346108535761084f61083e610838366004610192565b91611abb565b610846610112565b918291826101d9565b0390f35b610118565b346108865761087061086b3660046107d1565b611c60565b610878610112565b80610882816103a3565b0390f35b610118565b346108bc576108b86108a76108a1366004610192565b91611ebc565b6108af610112565b918291826101d9565b0390f35b610118565b5f80fd5b5f90565b5f1c90565b6108da6108df916108c9565b610472565b90565b6108ec90546108ce565b90565b60e01b90565b9050519061090282610149565b565b9060208282031261091d5761091a915f016108f5565b90565b61011c565b61092a610112565b3d5f823e3d90fd5b61093b906104c1565b90565b61094790610932565b90565b610953906104dd565b90565b60ff1690565b61096581610956565b0361096c57565b5f80fd5b9050519061097d8261095c565b565b9060208282031261099857610995915f01610970565b90565b61011c565b6109a6906104c1565b90565b6109b29061099d565b90565b6109be906104dd565b90565b6109ca906104c1565b90565b6109d6906109c1565b90565b905051906109e68261016f565b565b90602082820312610a01576109fe915f016109d9565b90565b61011c565b610a0f906104dd565b90565b610a1b90610a06565b9052565b151590565b610a2d90610a1f565b9052565b604090610a5a610a619496959396610a5060608401985f850190610a12565b6020830190610a12565b0190610a24565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610a9990610956565b604d8111610aa757600a0a90565b610a63565b610abb610ac19193929361016c565b9261016c565b91610acd83820261016c565b928184041490151715610adc57565b610a63565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b610b1a610b209161016c565b9161016c565b908115610b2b570490565b610ae1565b610b3c610b4291610956565b91610956565b90039060ff8211610b4f57565b610a63565b90565b610b6b610b66610b7092610b54565b6104be565b61016c565b90565b919091610b7e6108c5565b5080610b92610b8c8561013d565b9161013d565b14610e8857610bc36020610bad610ba85f6108e2565b6104e9565b638e1c3a8a90610bbb610112565b9384926108ef565b82528180610bd3600482016103a3565b03915afa908115610e83575f91610e55575b5090610c136020610bfd610bf88461093e565b61094a565b63313ce56790610c0b610112565b9384926108ef565b82528180610c23600482016103a3565b03915afa8015610e5057610c63915f91610e22575b50946020610c4d610c488361093e565b61094a565b63313ce56790610c5b610112565b9485926108ef565b82528180610c73600482016103a3565b03915afa8015610e1d57610c95610c9a916020945f91610df0575b50956109a9565b6109b5565b610ccd610cb4610cae63802431fb966109cd565b936109cd565b94610cd85f610cc1610112565b978896879586956108ef565b855260048501610a31565b03915afa908115610deb57610d1191610d02915f91610dbd575b50610cfc86610a90565b90610aac565b610d0b83610a90565b90610b0e565b92610d1a6108c5565b5080610d2e610d2884610956565b91610956565b10155f14610d7957610d5e92610d53610d4e610d759694610d5994610b30565b610a90565b90610b0e565b610aac565b610d6f670de0b6b3a7640000610b57565b90610b0e565b5b90565b610da192610d96610d91610d9c93610db89795610b30565b610a90565b90610aac565b610aac565b610db2670de0b6b3a7640000610b57565b90610b0e565b610d76565b610dde915060203d8111610de4575b610dd68183610299565b8101906109e8565b5f610cf2565b503d610dcc565b610922565b610e109150853d8111610e16575b610e088183610299565b81019061097f565b5f610c8e565b503d610dfe565b610922565b610e43915060203d8111610e49575b610e3b8183610299565b81019061097f565b5f610c38565b503d610e31565b610922565b610e76915060203d8111610e7c575b610e6e8183610299565b810190610904565b5f610be5565b503d610e64565b610922565b50905090565b610e97906104dd565b90565b604090610ec3610eca9496959396610eb960608401985f850190610582565b6020830190610582565b01906101cc565b565b90602091610ed86108c5565b50610f05610ee530610e8e565b91610f1063fac0ba74919496610ef9610112565b978896879586956108ef565b855260048501610e9a565b03915afa908115610f54575f91610f26575b5090565b610f47915060203d8111610f4d575b610f3f8183610299565b8101906109e8565b5f610f22565b503d610f35565b610922565b90610f6b91610f6661200a565b610f6d565b565b90610f8091610f7b816120dc565b61214c565b565b90610f8c91610f59565b565b5f90565b610fa390610f9e61228a565b610ff6565b90565b90565b5f1b90565b610fc2610fbd610fc792610fa6565b610fa9565b6103e1565b90565b610ff37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610fae565b90565b50610fff610fca565b90565b61101261100d610f8e565b610f92565b90565b61101d612308565b611025611052565b565b90565b61103e61103961104392611027565b6104be565b610124565b90565b61104f9061102a565b90565b61106361105e5f611046565b6123a5565b565b61106d611015565b565b90565b61108661108161108b9261106f565b6104be565b610956565b90565b916110976108c5565b50826110ab6110a58461013d565b9161013d565b14611413576110dc60206110c66110c15f6108e2565b6104e9565b638e1c3a8a906110d4610112565b9384926108ef565b825281806110ec600482016103a3565b03915afa90811561140e575f916113e0575b509061112c60206111166111118761093e565b61094a565b63313ce56790611124610112565b9384926108ef565b8252818061113c600482016103a3565b03915afa80156113db5761117c915f916113ad575b509360206111666111618361093e565b61094a565b63313ce56790611174610112565b9485926108ef565b8252818061118c600482016103a3565b03915afa80156113a8576111ae6111b3916020945f9161137b575b50956109a9565b6109b5565b6111e66111cd6111c763802431fb996109cd565b936109cd565b976111f15f6111da610112565b9a8b96879586956108ef565b855260048501610a31565b03915afa80156113765761121d61122c916112a2965f91611348575b5061121786610a90565b90610aac565b61122684610a90565b90610b0e565b916112356108c5565b5061123e6108c5565b5061125b61125660126112518491611072565b610b30565b610a90565b938061126f61126984610956565b91610956565b145f146112a557505061129c9161128591610aac565b611296670de0b6b3a7640000610b57565b90610b0e565b5b610aac565b90565b806112b86112b284610956565b91610956565b115f14611304576112e7926112dc6112d76112fe96946112e294610b30565b610a90565b90610b0e565b610aac565b6112f8670de0b6b3a7640000610b57565b90610b0e565b5b61129d565b61132c9261132161131c611327936113439795610b30565b610a90565b90610aac565b610aac565b61133d670de0b6b3a7640000610b57565b90610b0e565b6112ff565b611369915060203d811161136f575b6113618183610299565b8101906109e8565b5f61120d565b503d611357565b610922565b61139b9150853d81116113a1575b6113938183610299565b81019061097f565b5f6111a7565b503d611389565b610922565b6113ce915060203d81116113d4575b6113c68183610299565b81019061097f565b5f611151565b503d6113bc565b610922565b611401915060203d8111611407575b6113f98183610299565b810190610904565b5f6110fe565b503d6113ef565b610922565b611444925090602061142e61142960129361093e565b61094a565b63313ce5679061143c610112565b9586926108ef565b82528180611454600482016103a3565b03915afa9283156114c35761148c9361148692611481925f9261148f575b5061147c90611072565b610b30565b610a90565b90610aac565b90565b61147c9192506114b59060203d81116114bc575b6114ad8183610299565b81019061097f565b9190611472565b503d6114a3565b610922565b5f90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6114f16114f6916108c9565b6114cc565b90565b61150390546114e5565b90565b61150e6114c8565b506115215f61151b612411565b016114f9565b90565b60401c90565b60ff1690565b61153c61154191611524565b61152a565b90565b61154e9054611530565b90565b67ffffffffffffffff1690565b61156a61156f916108c9565b611551565b90565b61157c905461155e565b90565b9061159267ffffffffffffffff91610fa9565b9181191691161790565b6115b06115ab6115b5926105d9565b6104be565b6105d9565b90565b90565b906115d06115cb6115d79261159c565b6115b8565b825461157f565b9055565b60401b90565b906115f568ff0000000000000000916115db565b9181191691161790565b61160890610a1f565b90565b90565b9061162361161e61162a926115ff565b61160b565b82546115e1565b9055565b611637906105d9565b9052565b919061164e905f6020850194019061162e565b565b90809161165b612435565b906116675f8301611544565b8015611718575b6116dc576116a19261169891611686865f86016115bb565b61169360015f860161160e565b6117ad565b5f80910161160e565b6116d77fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916116ce610112565b9182918261163b565b0390a1565b6116e4610112565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280611714600482016103a3565b0390fd5b506117245f8301611572565b611736611730866105d9565b916105d9565b101561166e565b611746906104c1565b90565b6117529061173d565b90565b9061177473ffffffffffffffffffffffffffffffffffffffff91610fa9565b9181191691161790565b6117879061173d565b90565b90565b906117a261179d6117a99261177e565b61178a565b8254611755565b9055565b6117d291506117cc906117bf33612477565b6117c761248c565b611749565b5f61178d565b565b906117de91611650565b565b906020916117ec6108c5565b506118196117f930610e8e565b9161182463ca66d9a891949661180d610112565b978896879586956108ef565b855260048501610e9a565b03915afa908115611868575f9161183a575b5090565b61185b915060203d8111611861575b6118538183610299565b8101906109e8565b5f611836565b503d611849565b610922565b61188161187c61188692611027565b6104be565b6105d9565b90565b90565b6118a061189b6118a592611889565b6104be565b6105d9565b90565b6118b1906104dd565b90565b6118c86118c36118cd92611027565b6104be565b61016c565b90565b6118d99061188c565b9052565b91906118f0905f602085019401906118d0565b565b6118fa612435565b9061190f6119095f8401611544565b15610a1f565b9061191b5f8401611572565b8061192e6119285f61186d565b916105d9565b1480611a68575b90611949611943600161188c565b916105d9565b1480611a40575b61195b909115610a1f565b9081611a2f575b506119f35761198b90611980611978600161188c565b5f86016115bb565b826119e1575b611a6f565b611993575b50565b6119a0905f80910161160e565b60016119d87fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916119cf610112565b918291826118dd565b0390a15f611990565b6119ee60015f860161160e565b611986565b6119fb610112565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280611a2b600482016103a3565b0390fd5b611a3a915015610a1f565b5f611962565b5061195b611a4d306118a8565b3b611a60611a5a5f6118b4565b9161016c565b149050611950565b5082611935565b611a8c611a9291611a7f33612477565b611a8761248c565b611749565b5f61178d565b565b611a9d906118f2565b565b611ab3611aae611ab892610956565b6104be565b61016c565b90565b602090611ac66108c5565b50611ad030610e8e565b611af163fac0ba74611afc8697611ae5610112565b988996879586956108ef565b855260048501610e9a565b03915afa918215611bd657611b27611b22611b3d946020935f91611ba9575b509361093e565b61094a565b63313ce56790611b35610112565b9485926108ef565b82528180611b4d600482016103a3565b03915afa918215611ba457611b7392611b6d915f91611b76575b50611a9f565b906124f3565b90565b611b97915060203d8111611b9d575b611b8f8183610299565b81019061097f565b5f611b67565b503d611b85565b610922565b611bc99150843d8111611bcf575b611bc18183610299565b8101906109e8565b5f611b1b565b503d611bb7565b610922565b611bec90611be7612308565b611bee565b565b80611c09611c03611bfe5f611046565b61013d565b9161013d565b14611c1957611c17906123a5565b565b611c5c611c255f611046565b611c2d610112565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b611c6990611bdb565b565b611c74906104c1565b90565b611c8090611c6b565b90565b611c8c906104dd565b90565b5f7f5374617469634f7261636c65206e6f7420736574000000000000000000000000910152565b611cc36014602092610709565b611ccc81611c8f565b0190565b611ce59060208101905f818303910152611cb6565b90565b15611cef57565b611cf7610112565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611d2760048201611cd0565b0390fd5b6fffffffffffffffffffffffffffffffff1690565b611d54611d4f611d599261016c565b6104be565b611d2b565b90565b67ffffffffffffffff8111611d745760208091020190565b61026c565b5f80fd5b90929192611d92611d8d82611d5c565b6102c2565b9381855260208086019202830192818411611dcf57915b838310611db65750505050565b60208091611dc484866108f5565b815201920191611da9565b611d79565b9080601f83011215611df257816020611def93519101611d7d565b90565b61025a565b919091604081840312611e3757611e10835f83016109d9565b92602082015167ffffffffffffffff8111611e3257611e2f9201611dd4565b90565b610120565b61011c565b611e4590611d2b565b9052565b90565b63ffffffff1690565b611e69611e64611e6e92611e49565b6104be565b611e4c565b90565b611e7a90611e55565b9052565b611eb3611eba94611ea9606094989795611e9f608086019a5f870190611e3c565b6020850190610582565b6040830190610582565b0190611e71565b565b611ef39192611ec96108c5565b506020611edd611ed85f6108e2565b6104e9565b63a5d2236f90611eeb610112565b9586926108ef565b82528180611f03600482016103a3565b03915afa928315611ff957611f59611f275f95611f84938791611fcb575b50611c77565b611f54611f3382611c83565b611f4d611f47611f428a611046565b61013d565b9161013d565b1415611ce8565b611c83565b91611f8f611f6b630757bc8192611d40565b9496603c90611f78610112565b988997889687966108ef565b865260048601611e7e565b03915afa908115611fc6575f91611fa5575b5090565b611fc191503d805f833e611fb98183610299565b810190611df7565b611fa1565b610922565b611fec915060203d8111611ff2575b611fe48183610299565b810190610904565b5f611f21565b503d611fda565b610922565b612007906104dd565b90565b61201330611ffe565b61204561203f7f000000000000000000000000000000000000000000000000000000000000000061013d565b9161013d565b14801561208f575b61205357565b61205b610112565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061208b600482016103a3565b0390fd5b50612098612525565b6120ca6120c47f000000000000000000000000000000000000000000000000000000000000000061013d565b9161013d565b141561204d565b506120da612308565b565b6120e5906120d1565b565b6120f0906104c1565b90565b6120fc906120e7565b90565b612108906104dd565b90565b612114816103e1565b0361211b57565b5f80fd5b9050519061212c8261210b565b565b9060208282031261214757612144915f0161211f565b90565b61011c565b919061217a602061216461215f866120f3565b6120ff565b6352d1902d90612172610112565b9384926108ef565b8252818061218a600482016103a3565b03915afa80915f9261225a575b50155f146121eb5750509060016121ac57505b565b6121e7906121b8610112565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b92836122066122006121fb610fca565b6103e1565b916103e1565b0361221b5761221692935061254f565b6121aa565b61225684612227610112565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016103f1565b0390fd5b61227c91925060203d8111612283575b6122748183610299565b81019061212e565b905f612197565b503d61226a565b61229330611ffe565b6122c56122bf7f000000000000000000000000000000000000000000000000000000000000000061013d565b9161013d565b036122cc57565b6122d4610112565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280612304600482016103a3565b0390fd5b612310611506565b61232961232361231e6125d8565b61013d565b9161013d565b0361233057565b61237261233b6125d8565b612343610112565b9182917f118cdaa70000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b61237f906104dd565b90565b90565b9061239a6123956123a192612376565b612382565b8254611755565b9055565b6123ad612411565b6123c56123bb5f83016114f9565b915f849101612385565b906123f96123f37f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093612376565b91612376565b91612402610112565b8061240c816103a3565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61246a906124656125e5565b61246c565b565b612475906126bd565b565b61248090612459565b565b61248a6125e5565b565b612494612482565b565b6124aa6124a56124af9261106f565b6104be565b61016c565b90565b6124c16124c79193929361016c565b9261016c565b82039182116124d257565b610a63565b6124e09061016c565b604d81116124ee57600a0a90565b610a63565b9061251c612517612522936125066108c5565b50926125126012612496565b6124b2565b6124d7565b90610aac565b90565b61252d6114c8565b506125485f61254261253d610fca565b6126c8565b016114f9565b90565b5190565b90612559826126cb565b816125847fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91612376565b9061258d610112565b80612597816103a3565b0390a26125a38161254b565b6125b56125af5f6118b4565b9161016c565b115f146125c9576125c5916127db565b505b565b50506125d3612740565b6125c7565b6125e06114c8565b503390565b6125f66125f061280e565b15610a1f565b6125fc57565b612604610112565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612634600482016103a3565b0390fd5b612649906126446125e5565b61264b565b565b8061266661266061265b5f611046565b61013d565b9161013d565b1461267657612674906123a5565b565b6126b96126825f611046565b61268a610112565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b6126c690612638565b565b90565b803b6126df6126d95f6118b4565b9161016c565b14612701576126ff905f6126f96126f4610fca565b6126c8565b01612385565b565b61273c9061270d610112565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b3461275361274d5f6118b4565b9161016c565b1161275a57565b612762610112565b7fb398979f00000000000000000000000000000000000000000000000000000000815280612792600482016103a3565b0390fd5b606090565b906127ad6127a8836102d7565b6102c2565b918252565b3d5f146127cd576127c23d61279b565b903d5f602084013e5b565b6127d5612796565b906127cb565b5f80612807936127e9612796565b508390602081019051915af4906127fe6127b2565b9091909161282c565b90565b5f90565b61281661280a565b506128295f612823612435565b01611544565b90565b9061284090612839612796565b5015610a1f565b5f1461284c57506128d0565b6128558261254b565b6128676128615f6118b4565b9161016c565b14806128b5575b612876575090565b6128b190612882610112565b9182917f9996b3150000000000000000000000000000000000000000000000000000000083526004830161058f565b0390fd5b50803b6128ca6128c45f6118b4565b9161016c565b1461286e565b6128d98161254b565b6128eb6128e55f6118b4565b9161016c565b115f146128fa57805190602001fd5b612902610112565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280612932600482016103a3565b0390fdfea2646970667358221220d2da65625f275711a0e1e9b1c31f4371d80a0cac66295959e99b4cf652a7c49664736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x10C JUMP JUMPDEST DUP1 PUSH4 0x1F0E3CD2 EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x248391FF EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x8C41A354 EQ PUSH2 0xE9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0xB27B5E75 EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xCA66D9A8 EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC6 JUMPI PUSH4 0xFAC0BA74 SUB PUSH2 0xE JUMPI PUSH2 0x88B JUMP JUMPDEST PUSH2 0x858 JUMP JUMPDEST PUSH2 0x822 JUMP JUMPDEST PUSH2 0x7EF JUMP JUMPDEST PUSH2 0x79B JUMP JUMPDEST PUSH2 0x766 JUMP JUMPDEST PUSH2 0x636 JUMP JUMPDEST PUSH2 0x5A4 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST PUSH2 0x43B JUMP JUMPDEST PUSH2 0x406 JUMP JUMPDEST PUSH2 0x3A8 JUMP JUMPDEST PUSH2 0x224 JUMP JUMPDEST PUSH2 0x1EE JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x146 SWAP1 PUSH2 0x124 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x152 DUP2 PUSH2 0x13D JUMP JUMPDEST SUB PUSH2 0x159 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x16A DUP3 PUSH2 0x149 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x178 DUP2 PUSH2 0x16C JUMP JUMPDEST SUB PUSH2 0x17F JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x190 DUP3 PUSH2 0x16F JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x1C7 JUMPI PUSH2 0x1C4 PUSH2 0x1AD DUP5 PUSH0 DUP6 ADD PUSH2 0x15D JUMP JUMPDEST SWAP4 PUSH2 0x1BB DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x15D JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x183 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0x1D5 SWAP1 PUSH2 0x16C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1EC SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1CC JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x21F JUMPI PUSH2 0x21B PUSH2 0x20A PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0xB73 JUMP JUMPDEST PUSH2 0x212 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x255 JUMPI PUSH2 0x251 PUSH2 0x240 PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0xECC JUMP JUMPDEST PUSH2 0x248 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x2A3 SWAP1 PUSH2 0x262 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST SWAP1 PUSH2 0x2D5 PUSH2 0x2CE PUSH2 0x112 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x299 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2F5 JUMPI PUSH2 0x2F1 PUSH1 0x20 SWAP2 PUSH2 0x262 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x31A PUSH2 0x315 DUP3 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x336 JUMPI PUSH2 0x334 SWAP3 PUSH2 0x2FA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25E JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x359 JUMPI DUP2 PUSH1 0x20 PUSH2 0x356 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x305 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x39E JUMPI PUSH2 0x377 DUP4 PUSH0 DUP4 ADD PUSH2 0x15D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x399 JUMPI PUSH2 0x396 SWAP3 ADD PUSH2 0x33B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x3BC PUSH2 0x3B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x35E JUMP JUMPDEST SWAP1 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x3C4 PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x3CE DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x3DC JUMPI JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3ED SWAP1 PUSH2 0x3E1 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x404 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3E4 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x436 JUMPI PUSH2 0x416 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x432 PUSH2 0x421 PUSH2 0x1002 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3F1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x469 JUMPI PUSH2 0x44B CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x453 PUSH2 0x1065 JUMP JUMPDEST PUSH2 0x45B PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x465 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x49B SWAP1 PUSH1 0x8 PUSH2 0x4A0 SWAP4 MUL PUSH2 0x46E JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4AE SWAP2 SLOAD PUSH2 0x48B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4BB PUSH0 DUP1 PUSH2 0x4A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4D5 PUSH2 0x4D0 PUSH2 0x4DA SWAP3 PUSH2 0x124 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x124 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4E6 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4F2 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FE SWAP1 PUSH2 0x4E9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x515 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x547 JUMPI PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x543 PUSH2 0x532 PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0x53A PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x57D JUMPI PUSH2 0x579 PUSH2 0x568 PUSH2 0x562 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0x108E JUMP JUMPDEST PUSH2 0x570 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH2 0x58B SWAP1 PUSH2 0x13D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5A2 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5D4 JUMPI PUSH2 0x5B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x5D0 PUSH2 0x5BF PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x5C7 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5EF DUP2 PUSH2 0x5D9 JUMP JUMPDEST SUB PUSH2 0x5F6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x607 DUP3 PUSH2 0x5E6 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x631 JUMPI DUP1 PUSH2 0x625 PUSH2 0x62E SWAP3 PUSH0 DUP7 ADD PUSH2 0x15D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x5FA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST CALLVALUE PUSH2 0x665 JUMPI PUSH2 0x64F PUSH2 0x649 CALLDATASIZE PUSH1 0x4 PUSH2 0x609 JUMP JUMPDEST SWAP1 PUSH2 0x17D4 JUMP JUMPDEST PUSH2 0x657 PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x661 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x688 JUMPI PUSH2 0x684 PUSH1 0x20 SWAP2 PUSH2 0x262 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST SWAP1 PUSH2 0x69F PUSH2 0x69A DUP4 PUSH2 0x66A JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x6D5 PUSH1 0x5 PUSH2 0x68D JUMP JUMPDEST SWAP1 PUSH2 0x6E2 PUSH1 0x20 DUP4 ADD PUSH2 0x6A4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6EC PUSH2 0x6CB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6F7 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x702 PUSH2 0x6EF JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x73C PUSH2 0x745 PUSH1 0x20 SWAP4 PUSH2 0x74A SWAP4 PUSH2 0x733 DUP2 PUSH2 0x705 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x709 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x712 JUMP JUMPDEST PUSH2 0x262 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x763 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x71D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x796 JUMPI PUSH2 0x776 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D2 JUMP JUMPDEST PUSH2 0x792 PUSH2 0x781 PUSH2 0x6FA JUMP JUMPDEST PUSH2 0x789 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x74E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x7CC JUMPI PUSH2 0x7C8 PUSH2 0x7B7 PUSH2 0x7B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0x17E0 JUMP JUMPDEST PUSH2 0x7BF PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x7EA JUMPI PUSH2 0x7E7 SWAP2 PUSH0 ADD PUSH2 0x15D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST CALLVALUE PUSH2 0x81D JUMPI PUSH2 0x807 PUSH2 0x802 CALLDATASIZE PUSH1 0x4 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x1A94 JUMP JUMPDEST PUSH2 0x80F PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x819 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x853 JUMPI PUSH2 0x84F PUSH2 0x83E PUSH2 0x838 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0x1ABB JUMP JUMPDEST PUSH2 0x846 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x886 JUMPI PUSH2 0x870 PUSH2 0x86B CALLDATASIZE PUSH1 0x4 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x1C60 JUMP JUMPDEST PUSH2 0x878 PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x882 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE PUSH2 0x8BC JUMPI PUSH2 0x8B8 PUSH2 0x8A7 PUSH2 0x8A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x192 JUMP JUMPDEST SWAP2 PUSH2 0x1EBC JUMP JUMPDEST PUSH2 0x8AF PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x118 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x8DA PUSH2 0x8DF SWAP2 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8EC SWAP1 SLOAD PUSH2 0x8CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x902 DUP3 PUSH2 0x149 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x91D JUMPI PUSH2 0x91A SWAP2 PUSH0 ADD PUSH2 0x8F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0x92A PUSH2 0x112 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x93B SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x947 SWAP1 PUSH2 0x932 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x953 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x965 DUP2 PUSH2 0x956 JUMP JUMPDEST SUB PUSH2 0x96C JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x97D DUP3 PUSH2 0x95C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x998 JUMPI PUSH2 0x995 SWAP2 PUSH0 ADD PUSH2 0x970 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0x9A6 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9B2 SWAP1 PUSH2 0x99D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9BE SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9CA SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9D6 SWAP1 PUSH2 0x9C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x9E6 DUP3 PUSH2 0x16F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xA01 JUMPI PUSH2 0x9FE SWAP2 PUSH0 ADD PUSH2 0x9D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0xA0F SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA1B SWAP1 PUSH2 0xA06 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xA2D SWAP1 PUSH2 0xA1F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xA5A PUSH2 0xA61 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xA50 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0xA12 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xA12 JUMP JUMPDEST ADD SWAP1 PUSH2 0xA24 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xA99 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0xAA7 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH2 0xABB PUSH2 0xAC1 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x16C JUMP JUMPDEST SWAP3 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0xACD DUP4 DUP3 MUL PUSH2 0x16C JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xADC JUMPI JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xB1A PUSH2 0xB20 SWAP2 PUSH2 0x16C JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0xB2B JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0xB3C PUSH2 0xB42 SWAP2 PUSH2 0x956 JUMP JUMPDEST SWAP2 PUSH2 0x956 JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0xB4F JUMPI JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB6B PUSH2 0xB66 PUSH2 0xB70 SWAP3 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0xB7E PUSH2 0x8C5 JUMP JUMPDEST POP DUP1 PUSH2 0xB92 PUSH2 0xB8C DUP6 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ PUSH2 0xE88 JUMPI PUSH2 0xBC3 PUSH1 0x20 PUSH2 0xBAD PUSH2 0xBA8 PUSH0 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x4E9 JUMP JUMPDEST PUSH4 0x8E1C3A8A SWAP1 PUSH2 0xBBB PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xBD3 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xE83 JUMPI PUSH0 SWAP2 PUSH2 0xE55 JUMPI JUMPDEST POP SWAP1 PUSH2 0xC13 PUSH1 0x20 PUSH2 0xBFD PUSH2 0xBF8 DUP5 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0xC0B PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xC23 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0xE50 JUMPI PUSH2 0xC63 SWAP2 PUSH0 SWAP2 PUSH2 0xE22 JUMPI JUMPDEST POP SWAP5 PUSH1 0x20 PUSH2 0xC4D PUSH2 0xC48 DUP4 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0xC5B PUSH2 0x112 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xC73 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0xE1D JUMPI PUSH2 0xC95 PUSH2 0xC9A SWAP2 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0xDF0 JUMPI JUMPDEST POP SWAP6 PUSH2 0x9A9 JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0xCCD PUSH2 0xCB4 PUSH2 0xCAE PUSH4 0x802431FB SWAP7 PUSH2 0x9CD JUMP JUMPDEST SWAP4 PUSH2 0x9CD JUMP JUMPDEST SWAP5 PUSH2 0xCD8 PUSH0 PUSH2 0xCC1 PUSH2 0x112 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xDEB JUMPI PUSH2 0xD11 SWAP2 PUSH2 0xD02 SWAP2 PUSH0 SWAP2 PUSH2 0xDBD JUMPI JUMPDEST POP PUSH2 0xCFC DUP7 PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xD0B DUP4 PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST SWAP3 PUSH2 0xD1A PUSH2 0x8C5 JUMP JUMPDEST POP DUP1 PUSH2 0xD2E PUSH2 0xD28 DUP5 PUSH2 0x956 JUMP JUMPDEST SWAP2 PUSH2 0x956 JUMP JUMPDEST LT ISZERO PUSH0 EQ PUSH2 0xD79 JUMPI PUSH2 0xD5E SWAP3 PUSH2 0xD53 PUSH2 0xD4E PUSH2 0xD75 SWAP7 SWAP5 PUSH2 0xD59 SWAP5 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xD6F PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDA1 SWAP3 PUSH2 0xD96 PUSH2 0xD91 PUSH2 0xD9C SWAP4 PUSH2 0xDB8 SWAP8 SWAP6 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xDB2 PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST PUSH2 0xD76 JUMP JUMPDEST PUSH2 0xDDE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xDE4 JUMPI JUMPDEST PUSH2 0xDD6 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0xCF2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xDCC JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0xE10 SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0xE16 JUMPI JUMPDEST PUSH2 0xE08 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0xC8E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xDFE JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0xE43 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xE49 JUMPI JUMPDEST PUSH2 0xE3B DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0xC38 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xE31 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0xE76 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xE7C JUMPI JUMPDEST PUSH2 0xE6E DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x904 JUMP JUMPDEST PUSH0 PUSH2 0xBE5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xE64 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xE97 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0xEC3 PUSH2 0xECA SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0xEB9 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST ADD SWAP1 PUSH2 0x1CC JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0xED8 PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0xF05 PUSH2 0xEE5 ADDRESS PUSH2 0xE8E JUMP JUMPDEST SWAP2 PUSH2 0xF10 PUSH4 0xFAC0BA74 SWAP2 SWAP5 SWAP7 PUSH2 0xEF9 PUSH2 0x112 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xE9A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xF54 JUMPI PUSH0 SWAP2 PUSH2 0xF26 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xF47 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xF4D JUMPI JUMPDEST PUSH2 0xF3F DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0xF22 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF35 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST SWAP1 PUSH2 0xF6B SWAP2 PUSH2 0xF66 PUSH2 0x200A JUMP JUMPDEST PUSH2 0xF6D JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xF80 SWAP2 PUSH2 0xF7B DUP2 PUSH2 0x20DC JUMP JUMPDEST PUSH2 0x214C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xF8C SWAP2 PUSH2 0xF59 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xFA3 SWAP1 PUSH2 0xF9E PUSH2 0x228A JUMP JUMPDEST PUSH2 0xFF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0xFC2 PUSH2 0xFBD PUSH2 0xFC7 SWAP3 PUSH2 0xFA6 JUMP JUMPDEST PUSH2 0xFA9 JUMP JUMPDEST PUSH2 0x3E1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFF3 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0xFAE JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0xFFF PUSH2 0xFCA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1012 PUSH2 0x100D PUSH2 0xF8E JUMP JUMPDEST PUSH2 0xF92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x101D PUSH2 0x2308 JUMP JUMPDEST PUSH2 0x1025 PUSH2 0x1052 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x103E PUSH2 0x1039 PUSH2 0x1043 SWAP3 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x124 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x104F SWAP1 PUSH2 0x102A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1063 PUSH2 0x105E PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x23A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x106D PUSH2 0x1015 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1086 PUSH2 0x1081 PUSH2 0x108B SWAP3 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x956 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x1097 PUSH2 0x8C5 JUMP JUMPDEST POP DUP3 PUSH2 0x10AB PUSH2 0x10A5 DUP5 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ PUSH2 0x1413 JUMPI PUSH2 0x10DC PUSH1 0x20 PUSH2 0x10C6 PUSH2 0x10C1 PUSH0 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x4E9 JUMP JUMPDEST PUSH4 0x8E1C3A8A SWAP1 PUSH2 0x10D4 PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x10EC PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x140E JUMPI PUSH0 SWAP2 PUSH2 0x13E0 JUMPI JUMPDEST POP SWAP1 PUSH2 0x112C PUSH1 0x20 PUSH2 0x1116 PUSH2 0x1111 DUP8 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1124 PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x113C PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x13DB JUMPI PUSH2 0x117C SWAP2 PUSH0 SWAP2 PUSH2 0x13AD JUMPI JUMPDEST POP SWAP4 PUSH1 0x20 PUSH2 0x1166 PUSH2 0x1161 DUP4 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1174 PUSH2 0x112 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x118C PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x13A8 JUMPI PUSH2 0x11AE PUSH2 0x11B3 SWAP2 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0x137B JUMPI JUMPDEST POP SWAP6 PUSH2 0x9A9 JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x11E6 PUSH2 0x11CD PUSH2 0x11C7 PUSH4 0x802431FB SWAP10 PUSH2 0x9CD JUMP JUMPDEST SWAP4 PUSH2 0x9CD JUMP JUMPDEST SWAP8 PUSH2 0x11F1 PUSH0 PUSH2 0x11DA PUSH2 0x112 JUMP JUMPDEST SWAP11 DUP12 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1376 JUMPI PUSH2 0x121D PUSH2 0x122C SWAP2 PUSH2 0x12A2 SWAP7 PUSH0 SWAP2 PUSH2 0x1348 JUMPI JUMPDEST POP PUSH2 0x1217 DUP7 PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x1226 DUP5 PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST SWAP2 PUSH2 0x1235 PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0x123E PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0x125B PUSH2 0x1256 PUSH1 0x12 PUSH2 0x1251 DUP5 SWAP2 PUSH2 0x1072 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP4 DUP1 PUSH2 0x126F PUSH2 0x1269 DUP5 PUSH2 0x956 JUMP JUMPDEST SWAP2 PUSH2 0x956 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x12A5 JUMPI POP POP PUSH2 0x129C SWAP2 PUSH2 0x1285 SWAP2 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x1296 PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST PUSH2 0xAAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x12B8 PUSH2 0x12B2 DUP5 PUSH2 0x956 JUMP JUMPDEST SWAP2 PUSH2 0x956 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x1304 JUMPI PUSH2 0x12E7 SWAP3 PUSH2 0x12DC PUSH2 0x12D7 PUSH2 0x12FE SWAP7 SWAP5 PUSH2 0x12E2 SWAP5 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x12F8 PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST PUSH2 0x129D JUMP JUMPDEST PUSH2 0x132C SWAP3 PUSH2 0x1321 PUSH2 0x131C PUSH2 0x1327 SWAP4 PUSH2 0x1343 SWAP8 SWAP6 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x133D PUSH8 0xDE0B6B3A7640000 PUSH2 0xB57 JUMP JUMPDEST SWAP1 PUSH2 0xB0E JUMP JUMPDEST PUSH2 0x12FF JUMP JUMPDEST PUSH2 0x1369 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x136F JUMPI JUMPDEST PUSH2 0x1361 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0x120D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1357 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x139B SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x13A1 JUMPI JUMPDEST PUSH2 0x1393 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0x11A7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1389 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x13CE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x13D4 JUMPI JUMPDEST PUSH2 0x13C6 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0x1151 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13BC JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1401 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1407 JUMPI JUMPDEST PUSH2 0x13F9 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x904 JUMP JUMPDEST PUSH0 PUSH2 0x10FE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13EF JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1444 SWAP3 POP SWAP1 PUSH1 0x20 PUSH2 0x142E PUSH2 0x1429 PUSH1 0x12 SWAP4 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x143C PUSH2 0x112 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1454 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x14C3 JUMPI PUSH2 0x148C SWAP4 PUSH2 0x1486 SWAP3 PUSH2 0x1481 SWAP3 PUSH0 SWAP3 PUSH2 0x148F JUMPI JUMPDEST POP PUSH2 0x147C SWAP1 PUSH2 0x1072 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x147C SWAP2 SWAP3 POP PUSH2 0x14B5 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x14BC JUMPI JUMPDEST PUSH2 0x14AD DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1472 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14F1 PUSH2 0x14F6 SWAP2 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x14CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1503 SWAP1 SLOAD PUSH2 0x14E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x150E PUSH2 0x14C8 JUMP JUMPDEST POP PUSH2 0x1521 PUSH0 PUSH2 0x151B PUSH2 0x2411 JUMP JUMPDEST ADD PUSH2 0x14F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x153C PUSH2 0x1541 SWAP2 PUSH2 0x1524 JUMP JUMPDEST PUSH2 0x152A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x154E SWAP1 SLOAD PUSH2 0x1530 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x156A PUSH2 0x156F SWAP2 PUSH2 0x8C9 JUMP JUMPDEST PUSH2 0x1551 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x157C SWAP1 SLOAD PUSH2 0x155E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1592 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xFA9 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x15B0 PUSH2 0x15AB PUSH2 0x15B5 SWAP3 PUSH2 0x5D9 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15D0 PUSH2 0x15CB PUSH2 0x15D7 SWAP3 PUSH2 0x159C JUMP JUMPDEST PUSH2 0x15B8 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x157F JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15F5 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x15DB JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1608 SWAP1 PUSH2 0xA1F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1623 PUSH2 0x161E PUSH2 0x162A SWAP3 PUSH2 0x15FF JUMP JUMPDEST PUSH2 0x160B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15E1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1637 SWAP1 PUSH2 0x5D9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x164E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x162E JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x165B PUSH2 0x2435 JUMP JUMPDEST SWAP1 PUSH2 0x1667 PUSH0 DUP4 ADD PUSH2 0x1544 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1718 JUMPI JUMPDEST PUSH2 0x16DC JUMPI PUSH2 0x16A1 SWAP3 PUSH2 0x1698 SWAP2 PUSH2 0x1686 DUP7 PUSH0 DUP7 ADD PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x1693 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x160E JUMP JUMPDEST PUSH2 0x17AD JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x160E JUMP JUMPDEST PUSH2 0x16D7 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x16CE PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x163B JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x16E4 PUSH2 0x112 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1714 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x1724 PUSH0 DUP4 ADD PUSH2 0x1572 JUMP JUMPDEST PUSH2 0x1736 PUSH2 0x1730 DUP7 PUSH2 0x5D9 JUMP JUMPDEST SWAP2 PUSH2 0x5D9 JUMP JUMPDEST LT ISZERO PUSH2 0x166E JUMP JUMPDEST PUSH2 0x1746 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1752 SWAP1 PUSH2 0x173D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1774 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xFA9 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1787 SWAP1 PUSH2 0x173D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x17A2 PUSH2 0x179D PUSH2 0x17A9 SWAP3 PUSH2 0x177E JUMP JUMPDEST PUSH2 0x178A JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1755 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x17D2 SWAP2 POP PUSH2 0x17CC SWAP1 PUSH2 0x17BF CALLER PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x17C7 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1749 JUMP JUMPDEST PUSH0 PUSH2 0x178D JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x17DE SWAP2 PUSH2 0x1650 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x17EC PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0x1819 PUSH2 0x17F9 ADDRESS PUSH2 0xE8E JUMP JUMPDEST SWAP2 PUSH2 0x1824 PUSH4 0xCA66D9A8 SWAP2 SWAP5 SWAP7 PUSH2 0x180D PUSH2 0x112 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xE9A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1868 JUMPI PUSH0 SWAP2 PUSH2 0x183A JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x185B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1861 JUMPI JUMPDEST PUSH2 0x1853 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0x1836 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1849 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1881 PUSH2 0x187C PUSH2 0x1886 SWAP3 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18A0 PUSH2 0x189B PUSH2 0x18A5 SWAP3 PUSH2 0x1889 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18B1 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18C8 PUSH2 0x18C3 PUSH2 0x18CD SWAP3 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18D9 SWAP1 PUSH2 0x188C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x18F0 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x18D0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x18FA PUSH2 0x2435 JUMP JUMPDEST SWAP1 PUSH2 0x190F PUSH2 0x1909 PUSH0 DUP5 ADD PUSH2 0x1544 JUMP JUMPDEST ISZERO PUSH2 0xA1F JUMP JUMPDEST SWAP1 PUSH2 0x191B PUSH0 DUP5 ADD PUSH2 0x1572 JUMP JUMPDEST DUP1 PUSH2 0x192E PUSH2 0x1928 PUSH0 PUSH2 0x186D JUMP JUMPDEST SWAP2 PUSH2 0x5D9 JUMP JUMPDEST EQ DUP1 PUSH2 0x1A68 JUMPI JUMPDEST SWAP1 PUSH2 0x1949 PUSH2 0x1943 PUSH1 0x1 PUSH2 0x188C JUMP JUMPDEST SWAP2 PUSH2 0x5D9 JUMP JUMPDEST EQ DUP1 PUSH2 0x1A40 JUMPI JUMPDEST PUSH2 0x195B SWAP1 SWAP2 ISZERO PUSH2 0xA1F JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1A2F JUMPI JUMPDEST POP PUSH2 0x19F3 JUMPI PUSH2 0x198B SWAP1 PUSH2 0x1980 PUSH2 0x1978 PUSH1 0x1 PUSH2 0x188C JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x15BB JUMP JUMPDEST DUP3 PUSH2 0x19E1 JUMPI JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x1993 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x19A0 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x160E JUMP JUMPDEST PUSH1 0x1 PUSH2 0x19D8 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x19CF PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x18DD JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1990 JUMP JUMPDEST PUSH2 0x19EE PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x160E JUMP JUMPDEST PUSH2 0x1986 JUMP JUMPDEST PUSH2 0x19FB PUSH2 0x112 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1A2B PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A3A SWAP2 POP ISZERO PUSH2 0xA1F JUMP JUMPDEST PUSH0 PUSH2 0x1962 JUMP JUMPDEST POP PUSH2 0x195B PUSH2 0x1A4D ADDRESS PUSH2 0x18A8 JUMP JUMPDEST EXTCODESIZE PUSH2 0x1A60 PUSH2 0x1A5A PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x1950 JUMP JUMPDEST POP DUP3 PUSH2 0x1935 JUMP JUMPDEST PUSH2 0x1A8C PUSH2 0x1A92 SWAP2 PUSH2 0x1A7F CALLER PUSH2 0x2477 JUMP JUMPDEST PUSH2 0x1A87 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1749 JUMP JUMPDEST PUSH0 PUSH2 0x178D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A9D SWAP1 PUSH2 0x18F2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1AB3 PUSH2 0x1AAE PUSH2 0x1AB8 SWAP3 PUSH2 0x956 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x1AC6 PUSH2 0x8C5 JUMP JUMPDEST POP PUSH2 0x1AD0 ADDRESS PUSH2 0xE8E JUMP JUMPDEST PUSH2 0x1AF1 PUSH4 0xFAC0BA74 PUSH2 0x1AFC DUP7 SWAP8 PUSH2 0x1AE5 PUSH2 0x112 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x8EF JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0xE9A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1BD6 JUMPI PUSH2 0x1B27 PUSH2 0x1B22 PUSH2 0x1B3D SWAP5 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x1BA9 JUMPI JUMPDEST POP SWAP4 PUSH2 0x93E JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1B35 PUSH2 0x112 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1B4D PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1BA4 JUMPI PUSH2 0x1B73 SWAP3 PUSH2 0x1B6D SWAP2 PUSH0 SWAP2 PUSH2 0x1B76 JUMPI JUMPDEST POP PUSH2 0x1A9F JUMP JUMPDEST SWAP1 PUSH2 0x24F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B97 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B9D JUMPI JUMPDEST PUSH2 0x1B8F DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x97F JUMP JUMPDEST PUSH0 PUSH2 0x1B67 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B85 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1BC9 SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x1BCF JUMPI JUMPDEST PUSH2 0x1BC1 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH0 PUSH2 0x1B1B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1BEC SWAP1 PUSH2 0x1BE7 PUSH2 0x2308 JUMP JUMPDEST PUSH2 0x1BEE JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x1C09 PUSH2 0x1C03 PUSH2 0x1BFE PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ PUSH2 0x1C19 JUMPI PUSH2 0x1C17 SWAP1 PUSH2 0x23A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C5C PUSH2 0x1C25 PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x1C2D PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C69 SWAP1 PUSH2 0x1BDB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C74 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C80 SWAP1 PUSH2 0x1C6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C8C SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x5374617469634F7261636C65206E6F7420736574000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1CC3 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x709 JUMP JUMPDEST PUSH2 0x1CCC DUP2 PUSH2 0x1C8F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1CE5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1CB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CEF JUMPI JUMP JUMPDEST PUSH2 0x1CF7 PUSH2 0x112 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1D27 PUSH1 0x4 DUP3 ADD PUSH2 0x1CD0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1D54 PUSH2 0x1D4F PUSH2 0x1D59 SWAP3 PUSH2 0x16C JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x1D2B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1D74 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x26C JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x1D92 PUSH2 0x1D8D DUP3 PUSH2 0x1D5C JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x1DCF JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x1DB6 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x1DC4 DUP5 DUP7 PUSH2 0x8F5 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1DA9 JUMP JUMPDEST PUSH2 0x1D79 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1DF2 JUMPI DUP2 PUSH1 0x20 PUSH2 0x1DEF SWAP4 MLOAD SWAP2 ADD PUSH2 0x1D7D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x1E37 JUMPI PUSH2 0x1E10 DUP4 PUSH0 DUP4 ADD PUSH2 0x9D9 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E32 JUMPI PUSH2 0x1E2F SWAP3 ADD PUSH2 0x1DD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH2 0x1E45 SWAP1 PUSH2 0x1D2B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1E69 PUSH2 0x1E64 PUSH2 0x1E6E SWAP3 PUSH2 0x1E49 JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x1E4C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E7A SWAP1 PUSH2 0x1E55 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1EB3 PUSH2 0x1EBA SWAP5 PUSH2 0x1EA9 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x1E9F PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x1E3C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x582 JUMP JUMPDEST ADD SWAP1 PUSH2 0x1E71 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1EF3 SWAP2 SWAP3 PUSH2 0x1EC9 PUSH2 0x8C5 JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x1EDD PUSH2 0x1ED8 PUSH0 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x4E9 JUMP JUMPDEST PUSH4 0xA5D2236F SWAP1 PUSH2 0x1EEB PUSH2 0x112 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1F03 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x1FF9 JUMPI PUSH2 0x1F59 PUSH2 0x1F27 PUSH0 SWAP6 PUSH2 0x1F84 SWAP4 DUP8 SWAP2 PUSH2 0x1FCB JUMPI JUMPDEST POP PUSH2 0x1C77 JUMP JUMPDEST PUSH2 0x1F54 PUSH2 0x1F33 DUP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1F4D PUSH2 0x1F47 PUSH2 0x1F42 DUP11 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ ISZERO PUSH2 0x1CE8 JUMP JUMPDEST PUSH2 0x1C83 JUMP JUMPDEST SWAP2 PUSH2 0x1F8F PUSH2 0x1F6B PUSH4 0x757BC81 SWAP3 PUSH2 0x1D40 JUMP JUMPDEST SWAP5 SWAP7 PUSH1 0x3C SWAP1 PUSH2 0x1F78 PUSH2 0x112 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP7 PUSH2 0x8EF JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x1E7E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FC6 JUMPI PUSH0 SWAP2 PUSH2 0x1FA5 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1FC1 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1FB9 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST PUSH2 0x1FA1 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1FEC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FF2 JUMPI JUMPDEST PUSH2 0x1FE4 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x904 JUMP JUMPDEST PUSH0 PUSH2 0x1F21 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x2007 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2013 ADDRESS PUSH2 0x1FFE JUMP JUMPDEST PUSH2 0x2045 PUSH2 0x203F PUSH32 0x0 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x208F JUMPI JUMPDEST PUSH2 0x2053 JUMPI JUMP JUMPDEST PUSH2 0x205B PUSH2 0x112 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x208B PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2098 PUSH2 0x2525 JUMP JUMPDEST PUSH2 0x20CA PUSH2 0x20C4 PUSH32 0x0 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ ISZERO PUSH2 0x204D JUMP JUMPDEST POP PUSH2 0x20DA PUSH2 0x2308 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x20E5 SWAP1 PUSH2 0x20D1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x20F0 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20FC SWAP1 PUSH2 0x20E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2108 SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2114 DUP2 PUSH2 0x3E1 JUMP JUMPDEST SUB PUSH2 0x211B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x212C DUP3 PUSH2 0x210B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2147 JUMPI PUSH2 0x2144 SWAP2 PUSH0 ADD PUSH2 0x211F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x217A PUSH1 0x20 PUSH2 0x2164 PUSH2 0x215F DUP7 PUSH2 0x20F3 JUMP JUMPDEST PUSH2 0x20FF JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x2172 PUSH2 0x112 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x8EF JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x218A PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x225A JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x21EB JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x21AC JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x21E7 SWAP1 PUSH2 0x21B8 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2206 PUSH2 0x2200 PUSH2 0x21FB PUSH2 0xFCA JUMP JUMPDEST PUSH2 0x3E1 JUMP JUMPDEST SWAP2 PUSH2 0x3E1 JUMP JUMPDEST SUB PUSH2 0x221B JUMPI PUSH2 0x2216 SWAP3 SWAP4 POP PUSH2 0x254F JUMP JUMPDEST PUSH2 0x21AA JUMP JUMPDEST PUSH2 0x2256 DUP5 PUSH2 0x2227 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3F1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x227C SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2283 JUMPI JUMPDEST PUSH2 0x2274 DUP2 DUP4 PUSH2 0x299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x212E JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2197 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x226A JUMP JUMPDEST PUSH2 0x2293 ADDRESS PUSH2 0x1FFE JUMP JUMPDEST PUSH2 0x22C5 PUSH2 0x22BF PUSH32 0x0 PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST SUB PUSH2 0x22CC JUMPI JUMP JUMPDEST PUSH2 0x22D4 PUSH2 0x112 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2304 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2310 PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x2329 PUSH2 0x2323 PUSH2 0x231E PUSH2 0x25D8 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST SUB PUSH2 0x2330 JUMPI JUMP JUMPDEST PUSH2 0x2372 PUSH2 0x233B PUSH2 0x25D8 JUMP JUMPDEST PUSH2 0x2343 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x237F SWAP1 PUSH2 0x4DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x239A PUSH2 0x2395 PUSH2 0x23A1 SWAP3 PUSH2 0x2376 JUMP JUMPDEST PUSH2 0x2382 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1755 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x23AD PUSH2 0x2411 JUMP JUMPDEST PUSH2 0x23C5 PUSH2 0x23BB PUSH0 DUP4 ADD PUSH2 0x14F9 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x2385 JUMP JUMPDEST SWAP1 PUSH2 0x23F9 PUSH2 0x23F3 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x2376 JUMP JUMPDEST SWAP2 PUSH2 0x2376 JUMP JUMPDEST SWAP2 PUSH2 0x2402 PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x240C DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x246A SWAP1 PUSH2 0x2465 PUSH2 0x25E5 JUMP JUMPDEST PUSH2 0x246C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2475 SWAP1 PUSH2 0x26BD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2480 SWAP1 PUSH2 0x2459 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x248A PUSH2 0x25E5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2494 PUSH2 0x2482 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24AA PUSH2 0x24A5 PUSH2 0x24AF SWAP3 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x4BE JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C1 PUSH2 0x24C7 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x16C JUMP JUMPDEST SWAP3 PUSH2 0x16C JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x24D2 JUMPI JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST PUSH2 0x24E0 SWAP1 PUSH2 0x16C JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x24EE JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0xA63 JUMP JUMPDEST SWAP1 PUSH2 0x251C PUSH2 0x2517 PUSH2 0x2522 SWAP4 PUSH2 0x2506 PUSH2 0x8C5 JUMP JUMPDEST POP SWAP3 PUSH2 0x2512 PUSH1 0x12 PUSH2 0x2496 JUMP JUMPDEST PUSH2 0x24B2 JUMP JUMPDEST PUSH2 0x24D7 JUMP JUMPDEST SWAP1 PUSH2 0xAAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x252D PUSH2 0x14C8 JUMP JUMPDEST POP PUSH2 0x2548 PUSH0 PUSH2 0x2542 PUSH2 0x253D PUSH2 0xFCA JUMP JUMPDEST PUSH2 0x26C8 JUMP JUMPDEST ADD PUSH2 0x14F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2559 DUP3 PUSH2 0x26CB JUMP JUMPDEST DUP2 PUSH2 0x2584 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x2376 JUMP JUMPDEST SWAP1 PUSH2 0x258D PUSH2 0x112 JUMP JUMPDEST DUP1 PUSH2 0x2597 DUP2 PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x25A3 DUP2 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x25B5 PUSH2 0x25AF PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x25C9 JUMPI PUSH2 0x25C5 SWAP2 PUSH2 0x27DB JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x25D3 PUSH2 0x2740 JUMP JUMPDEST PUSH2 0x25C7 JUMP JUMPDEST PUSH2 0x25E0 PUSH2 0x14C8 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x25F6 PUSH2 0x25F0 PUSH2 0x280E JUMP JUMPDEST ISZERO PUSH2 0xA1F JUMP JUMPDEST PUSH2 0x25FC JUMPI JUMP JUMPDEST PUSH2 0x2604 PUSH2 0x112 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2634 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2649 SWAP1 PUSH2 0x2644 PUSH2 0x25E5 JUMP JUMPDEST PUSH2 0x264B JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2666 PUSH2 0x2660 PUSH2 0x265B PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x13D JUMP JUMPDEST SWAP2 PUSH2 0x13D JUMP JUMPDEST EQ PUSH2 0x2676 JUMPI PUSH2 0x2674 SWAP1 PUSH2 0x23A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x26B9 PUSH2 0x2682 PUSH0 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x268A PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x26C6 SWAP1 PUSH2 0x2638 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x26DF PUSH2 0x26D9 PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x2701 JUMPI PUSH2 0x26FF SWAP1 PUSH0 PUSH2 0x26F9 PUSH2 0x26F4 PUSH2 0xFCA JUMP JUMPDEST PUSH2 0x26C8 JUMP JUMPDEST ADD PUSH2 0x2385 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x273C SWAP1 PUSH2 0x270D PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2753 PUSH2 0x274D PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST GT PUSH2 0x275A JUMPI JUMP JUMPDEST PUSH2 0x2762 PUSH2 0x112 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2792 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x27AD PUSH2 0x27A8 DUP4 PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0x2C2 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x27CD JUMPI PUSH2 0x27C2 RETURNDATASIZE PUSH2 0x279B JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x27D5 PUSH2 0x2796 JUMP JUMPDEST SWAP1 PUSH2 0x27CB JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2807 SWAP4 PUSH2 0x27E9 PUSH2 0x2796 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x27FE PUSH2 0x27B2 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x282C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2816 PUSH2 0x280A JUMP JUMPDEST POP PUSH2 0x2829 PUSH0 PUSH2 0x2823 PUSH2 0x2435 JUMP JUMPDEST ADD PUSH2 0x1544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2840 SWAP1 PUSH2 0x2839 PUSH2 0x2796 JUMP JUMPDEST POP ISZERO PUSH2 0xA1F JUMP JUMPDEST PUSH0 EQ PUSH2 0x284C JUMPI POP PUSH2 0x28D0 JUMP JUMPDEST PUSH2 0x2855 DUP3 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x2867 PUSH2 0x2861 PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ DUP1 PUSH2 0x28B5 JUMPI JUMPDEST PUSH2 0x2876 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x28B1 SWAP1 PUSH2 0x2882 PUSH2 0x112 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x58F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x28CA PUSH2 0x28C4 PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST EQ PUSH2 0x286E JUMP JUMPDEST PUSH2 0x28D9 DUP2 PUSH2 0x254B JUMP JUMPDEST PUSH2 0x28EB PUSH2 0x28E5 PUSH0 PUSH2 0x18B4 JUMP JUMPDEST SWAP2 PUSH2 0x16C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x28FA JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2902 PUSH2 0x112 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2932 PUSH1 0x4 DUP3 ADD PUSH2 0x3A3 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 0xDA PUSH6 0x625F275711A0 0xE1 0xE9 0xB1 0xC3 0x1F NUMBER PUSH18 0xD80A0CAC66295959E99B4CF652A7C4966473 PUSH16 0x6C634300081900330000000000000000 ","sourceMap":"1963:7610:57:-:0;;;;;;;;;-1:-1:-1;1963:7610:57;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2065:33::-;;;;;:::i;:::-;;:::o;1963:7610::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1963:7610:57:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;4413:924::-;;;;4546:17;;:::i;:::-;4580:9;;:20;;4593:7;4580:20;:::i;:::-;;;:::i;:::-;;4576:39;;4650:26;;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4413:924;4626:50;4722:9;4707:36;;:34;:25;4722:9;4707:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;4772:34;4707:36;;;;;4413:924;4687:56;4787:7;4772:34;:32;:23;4787:7;4772:23;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;4832:28;:36;4772:34;4832:79;4772:34;;;;;4413:924;4754:52;4846:13;4832:28;:::i;:::-;:36;:::i;:::-;:79;4888:15;4869:17;4832:36;4876:9;4869:17;:::i;:::-;4895:7;4888:15;:::i;:::-;4905:5;4832:79;4905:5;4832:79;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4929:48;4832:79;4930:26;4832:79;;;;;4413:924;4817:94;4938:17;4944:11;4938:17;:::i;:::-;4930:26;;:::i;:::-;4961:15;4967:9;4961:15;:::i;:::-;4929:48;;:::i;:::-;4988:14;;;:::i;:::-;5017:11;;:24;;5032:9;5017:24;:::i;:::-;;;:::i;:::-;;;5013:290;;;;5126:24;5074:11;5067:31;5074:23;5125:33;5074:11;;5127:15;5074:11;:23;:::i;:::-;5067:31;:::i;:::-;5127:15;;:::i;:::-;5126:24;:::i;:::-;5125:33;5154:4;5125:33;:::i;:::-;;;:::i;:::-;5013:290;5313:16;:::o;5013:290::-;5259:24;5207:9;5200:31;5207:23;5260:15;5207:9;5258:33;5207:9;;:23;:::i;:::-;5200:31;:::i;:::-;5260:15;;:::i;:::-;5259:24;:::i;:::-;5258:33;5287:4;5258:33;:::i;:::-;;;:::i;:::-;5013:290;;4832:79;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4772:34::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4707:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4650:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4576:39::-;4609:6;;;4602:13;:::o;1963:7610::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;3007:234::-;;3177:56;3007:234;3140:17;;:::i;:::-;3177:4;:56;:28;:4;:28;:::i;:::-;;:56;:28;3206:9;3217:7;3226:6;3177:56;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;3007:234;3170:63;;:::o;3177:56::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;1963:7610:57:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;1963:7610:57:-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;1963:7610:57:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;1963:7610:57:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5758:1332::-;;5897:17;;:::i;:::-;5931:9;;:20;;5944:7;5931:20;:::i;:::-;;;:::i;:::-;;5927:89;;6051:26;;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5758:1332;6027:50;6123:9;6108:36;;:34;:25;6123:9;6108:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6173:34;6108:36;;;;;5758:1332;6088:56;6188:7;6173:34;:32;:23;6188:7;6173:23;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6233:28;:36;6173:34;6233:79;6173:34;;;;;5758:1332;6155:52;6247:13;6233:28;:::i;:::-;:36;:::i;:::-;:79;6289:15;6270:17;6233:36;6277:9;6270:17;:::i;:::-;6296:7;6289:15;:::i;:::-;6306:5;6233:79;6306:5;6233:79;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;6331:26;6330:48;6233:79;7025:30;6233:79;;;;;5758:1332;6218:94;6339:17;6345:11;6339:17;:::i;:::-;6331:26;;:::i;:::-;6362:15;6368:9;6362:15;:::i;:::-;6330:48;;:::i;:::-;6389:21;;;:::i;:::-;6421:19;;;:::i;:::-;6487:2;6480:22;6487:14;:2;:14;6492:9;6487:14;;:::i;:::-;;:::i;:::-;6480:22;:::i;:::-;6517:11;;:24;;6532:9;6517:24;:::i;:::-;;;:::i;:::-;;6513:490;;;;6571:6;;6570:22;6571:6;:13;:6;:13;:::i;:::-;6570:22;6588:4;6570:22;:::i;:::-;;;:::i;:::-;6513:490;7025:30;:::i;:::-;7066:16;:::o;6513:490::-;6614:11;:23;;6628:9;6614:23;:::i;:::-;;;:::i;:::-;;6610:393;;;;6780:18;6677:11;6670:31;6677:23;6779:27;6677:11;;6730:22;6677:11;:23;:::i;:::-;6670:31;:::i;:::-;6730:22;;:::i;:::-;6780:18;:::i;:::-;6779:27;6802:4;6779:27;:::i;:::-;;;:::i;:::-;6610:393;6513:490;;6610:393;6965:18;6862:9;6855:31;6862:23;6915:22;6862:9;6964:27;6862:9;;:23;:::i;:::-;6855:31;:::i;:::-;6915:22;;:::i;:::-;6965:18;:::i;:::-;6964:27;6987:4;6964:27;:::i;:::-;;;:::i;:::-;6610:393;;6233:79;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6173:34::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6108:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6051:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5927:89::-;5981:34;5960:6;;5976:2;5981:34;:32;:23;5976:2;5996:7;5981:23;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;5960:56;5981:34;5969:47;5981:34;5976:39;5981:34;;;;;5927:89;5976:39;;;;:::i;:::-;;:::i;:::-;5969:47;:::i;:::-;5960:56;;:::i;:::-;5953:63;:::o;5981:34::-;5976:39;5981:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;1963:7610::-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;1963:7610:57:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;2381:7:57;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;1963:7610:57;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2303:217::-;2473:39;2303:217;;2484:28;2303:217;2416:10;;;:::i;:::-;;;:::i;:::-;2484:28;:::i;:::-;2473:39;;:::i;:::-;2303:217::o;:::-;;;;;:::i;:::-;:::o;3774:248::-;;3952:62;3774:248;3915:17;;:::i;:::-;3952:4;:62;:34;:4;:34;:::i;:::-;;:62;:34;3987:9;3998:7;4007:6;3952:62;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;3774:248;3945:69;;:::o;3952:62::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1963:7610::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2107:188:57;2259:28;2248:39;2107:188;2191:10;;;:::i;:::-;;;:::i;:::-;2259:28;:::i;:::-;2248:39;;:::i;:::-;2107:188::o;:::-;;;;:::i;:::-;:::o;1963:7610::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;8288:368::-;8487:56;8288:368;8436:17;;:::i;:::-;8487:4;:28;:4;:28;:::i;:::-;:56;:28;:56;8527:7;8536:6;8487:56;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;8586:32;:23;:34;8487:56;8586:34;8487:56;;;;;8288:368;8466:77;8601:7;8586:23;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;8566:55;8586:34;8566:55;8586:34;;;;;8288:368;8566:55;;:::i;:::-;;;:::i;:::-;8632:16;:::o;8586:34::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8487:56::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;1963:7610:57:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;7454:473::-;7669:26;7454:473;;7596:17;;:::i;:::-;7669:8;:26;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;7802:49;7655:41;7802:90;7669:26;7802:90;7669:26;;;;;7454:473;7655:41;;:::i;:::-;7707:68;7715:21;7723:12;7715:21;:::i;:::-;:35;;7740:10;7748:1;7740:10;:::i;:::-;7715:35;:::i;:::-;;;:::i;:::-;;;7707:68;:::i;:::-;7802:49;:::i;:::-;;:90;7852:15;7802:49;7860:6;7852:15;:::i;:::-;7869:9;7880:7;7889:2;7802:90;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;7454:473;7786:106;7903:16;:::o;7802:90::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;7669:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1963:7610::-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;9486:84:57:-;;;;:::i;:::-;:::o;1963:7610::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2658:162:0;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1963:7610:57;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3774:248:0:-;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;1963:7610:57:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;8904:141::-;;9015:21;9022:13;9005:32;8904:141;8978:7;;:::i;:::-;9005:6;9022:2;:13;:2;:13;:::i;:::-;;:::i;:::-;9015:21;:::i;:::-;9005:32;;:::i;:::-;8998:39;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;1963:7610:57:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;887:96:4;940:7;;:::i;:::-;966:10;;959:17;:::o;7084:141:1:-;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1963:7610:57;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;1963:7610:57:-;;;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2120800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","convert(address,address,uint256)":"infinite","convertScaled(address,address,uint256)":"infinite","convertScaledWithAgg(address,address,uint256)":"infinite","convertScaledWithStaticOracle(address,address,uint256)":"infinite","convertWithAgg(address,address,uint256)":"infinite","convertWithStaticOracle(address,address,uint256)":"infinite","initialize(address)":"infinite","owner()":"2862","proxiableUUID()":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","scaleDown(uint256,uint256)":"infinite","scaleUp(uint256,uint256)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","convert(address,address,uint256)":"248391ff","convertScaled(address,address,uint256)":"b27b5e75","convertScaledWithAgg(address,address,uint256)":"8c41a354","convertScaledWithStaticOracle(address,address,uint256)":"ca66d9a8","convertWithAgg(address,address,uint256)":"1f0e3cd2","convertWithStaticOracle(address,address,uint256)":"fac0ba74","initialize(address)":"c4d66de8","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertScaledWithAgg\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertScaledWithStaticOracle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertWithAgg\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"convertWithStaticOracle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"valuation\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"convert(address,address,uint256)\":{\"details\":\"Converts the specified amount of `fromToken` to `toToken` using the available oracle. If the conversion fails with the static oracle, it falls back to the aggregator oracle.\",\"params\":{\"amount\":\"The amount of `fromToken` to convert.\",\"fromToken\":\"The address of the token to convert from.\",\"toToken\":\"The address of the token to convert to.\"},\"returns\":{\"valuation\":\"The converted valuation of `amount` in `toToken`.\"}},\"convertScaled(address,address,uint256)\":{\"details\":\"Converts the specified amount of `fromToken` to `toToken` using the available oracle. If the conversion fails with the static oracle, it falls back to the aggregator oracle. This function is externally callable.\",\"params\":{\"amount\":\"The amount of `fromToken` to convert.\",\"fromToken\":\"The address of the token to convert from.\",\"toToken\":\"The address of the token to convert to.\"},\"returns\":{\"valuation\":\"The converted valuation of `amount` in `toToken`.\"}},\"convertScaledWithAgg(address,address,uint256)\":{\"details\":\"Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator and scales the result.\",\"params\":{\"amount\":\"The amount of `fromToken` to convert.\",\"fromToken\":\"The address of the token to convert from.\",\"toToken\":\"The address of the token to convert to.\"},\"returns\":{\"valuation\":\" The scaled converted valuation of `amount` in `toToken`.\"}},\"convertScaledWithStaticOracle(address,address,uint256)\":{\"details\":\"Converts the given amount of tokens from one token to another using a static oracle.\",\"params\":{\"amount\":\"The amount of tokens to convert.\",\"fromToken\":\"The address of the token to convert from.\",\"toToken\":\"The address of the token to convert to.\"},\"returns\":{\"valuation\":\"of the converted tokens.\"}},\"convertWithAgg(address,address,uint256)\":{\"details\":\"Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator.\",\"params\":{\"amount\":\"The amount of `fromToken` to convert.\",\"fromToken\":\"The address of the token to convert from.\",\"toToken\":\"The address of the token to convert to.\"},\"returns\":{\"valuation\":\"The converted valuation of `amount` in `toToken`.\"}},\"convertWithStaticOracle(address,address,uint256)\":{\"details\":\"Converts the specified amount of `fromToken` to `toToken` using the static oracle.\",\"params\":{\"amount\":\"The amount of `fromToken` to convert.\",\"fromToken\":\"The address of the token to convert from.\",\"toToken\":\"The address of the token to convert to.\"},\"returns\":{\"valuation\":\"of the converted amount.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracles/BaluniV1Oracle.sol\":\"BaluniV1Oracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title The interface for the Uniswap V3 Factory\\n/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\\ninterface IUniswapV3Factory {\\n    /// @notice Emitted when the owner of the factory is changed\\n    /// @param oldOwner The owner before the owner was changed\\n    /// @param newOwner The owner after the owner was changed\\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\\n\\n    /// @notice Emitted when a pool is created\\n    /// @param token0 The first token of the pool by address sort order\\n    /// @param token1 The second token of the pool by address sort order\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\\n    /// @param pool The address of the created pool\\n    event PoolCreated(\\n        address indexed token0,\\n        address indexed token1,\\n        uint24 indexed fee,\\n        int24 tickSpacing,\\n        address pool\\n    );\\n\\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\\n    /// @param fee The enabled fee, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\\n\\n    /// @notice Returns the current owner of the factory\\n    /// @dev Can be changed by the current owner via setOwner\\n    /// @return The address of the factory owner\\n    function owner() external view returns (address);\\n\\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\\n    /// @return The tick spacing\\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\\n\\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\\n    /// @param tokenA The contract address of either token0 or token1\\n    /// @param tokenB The contract address of the other token\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @return pool The pool address\\n    function getPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external view returns (address pool);\\n\\n    /// @notice Creates a pool for the given two tokens and fee\\n    /// @param tokenA One of the two tokens in the desired pool\\n    /// @param tokenB The other of the two tokens in the desired pool\\n    /// @param fee The desired fee for the pool\\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\\n    /// are invalid.\\n    /// @return pool The address of the newly created pool\\n    function createPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external returns (address pool);\\n\\n    /// @notice Updates the owner of the factory\\n    /// @dev Must be called by the current owner\\n    /// @param _owner The new owner of the factory\\n    function setOwner(address _owner) external;\\n\\n    /// @notice Enables a fee amount with the given tickSpacing\\n    /// @dev Fee amounts may never be removed once enabled\\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\\n}\\n\",\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/I1inchSpotAgg.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\n\\r\\ninterface I1inchSpotAgg {\\r\\n  function getRate(IERC20 srcToken, IERC20 dstToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n\\r\\n  function getRateToEth(IERC20 srcToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n}\\r\\n\",\"keccak256\":\"0x29417a441b068263f01adb36906270f1b76431d3017d214f506824ee41ada1b3\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IStaticOracle.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\r\\n\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\\r\\n\\r\\n/// @title Uniswap V3 Static Oracle\\r\\n/// @notice Oracle contract for calculating price quoting against Uniswap V3\\r\\ninterface IStaticOracle {\\r\\n    /// @notice Returns the address of the Uniswap V3 factory\\r\\n    /// @dev This value is assigned during deployment and cannot be changed\\r\\n    /// @return The address of the Uniswap V3 factory\\r\\n    function UNISWAP_V3_FACTORY() external view returns (IUniswapV3Factory);\\r\\n\\r\\n    /// @notice Returns how many observations are needed per minute in Uniswap V3 oracles, on the deployed chain\\r\\n    /// @dev This value is assigned during deployment and cannot be changed\\r\\n    /// @return Number of observation that are needed per minute\\r\\n    function CARDINALITY_PER_MINUTE() external view returns (uint8);\\r\\n\\r\\n    /// @notice Returns all supported fee tiers\\r\\n    /// @return The supported fee tiers\\r\\n    function supportedFeeTiers() external view returns (uint24[] memory);\\r\\n\\r\\n    /// @notice Returns whether a specific pair can be supported by the oracle\\r\\n    /// @dev The pair can be provided in tokenA/tokenB or tokenB/tokenA order\\r\\n    /// @return Whether the given pair can be supported by the oracle\\r\\n    function isPairSupported(address tokenA, address tokenB) external view returns (bool);\\r\\n\\r\\n    /// @notice Returns all existing pools for the given pair\\r\\n    /// @dev The pair can be provided in tokenA/tokenB or tokenB/tokenA order\\r\\n    /// @return All existing pools for the given pair\\r\\n    function getAllPoolsForPair(address tokenA, address tokenB) external view returns (address[] memory);\\r\\n\\r\\n    /// @notice Returns a quote, based on the given tokens and amount, by querying all of the pair's pools\\r\\n    /// @dev If some pools are not configured correctly for the given period, then they will be ignored\\r\\n    /// @dev Will revert if there are no pools available/configured for the pair and period combination\\r\\n    /// @param baseAmount Amount of token to be converted\\r\\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\\r\\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\\r\\n    /// @param period Number of seconds from which to calculate the TWAP\\r\\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\\r\\n    /// @return queriedPools The pools that were queried to calculate the quote\\r\\n    function quoteAllAvailablePoolsWithTimePeriod(\\r\\n        uint128 baseAmount,\\r\\n        address baseToken,\\r\\n        address quoteToken,\\r\\n        uint32 period\\r\\n    ) external view returns (uint256 quoteAmount, address[] memory queriedPools);\\r\\n\\r\\n    /// @notice Returns a quote, based on the given tokens and amount, by querying only the specified fee tiers\\r\\n    /// @dev Will revert if the pair does not have a pool for one of the given fee tiers, or if one of the pools\\r\\n    /// is not prepared/configured correctly for the given period\\r\\n    /// @param baseAmount Amount of token to be converted\\r\\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\\r\\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\\r\\n    /// @param feeTiers The fee tiers to consider when calculating the quote\\r\\n    /// @param period Number of seconds from which to calculate the TWAP\\r\\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\\r\\n    /// @return queriedPools The pools that were queried to calculate the quote\\r\\n    function quoteSpecificFeeTiersWithTimePeriod(\\r\\n        uint128 baseAmount,\\r\\n        address baseToken,\\r\\n        address quoteToken,\\r\\n        uint24[] calldata feeTiers,\\r\\n        uint32 period\\r\\n    ) external view returns (uint256 quoteAmount, address[] memory queriedPools);\\r\\n\\r\\n    /// @notice Returns a quote, based on the given tokens and amount, by querying only the specified pools\\r\\n    /// @dev Will revert if one of the pools is not prepared/configured correctly for the given period\\r\\n    /// @param baseAmount Amount of token to be converted\\r\\n    /// @param baseToken Address of an ERC20 token contract used as the baseAmount denomination\\r\\n    /// @param quoteToken Address of an ERC20 token contract used as the quoteAmount denomination\\r\\n    /// @param pools The pools to consider when calculating the quote\\r\\n    /// @param period Number of seconds from which to calculate the TWAP\\r\\n    /// @return quoteAmount Amount of quoteToken received for baseAmount of baseToken\\r\\n    function quoteSpecificPoolsWithTimePeriod(\\r\\n        uint128 baseAmount,\\r\\n        address baseToken,\\r\\n        address quoteToken,\\r\\n        address[] calldata pools,\\r\\n        uint32 period\\r\\n    ) external view returns (uint256 quoteAmount);\\r\\n\\r\\n    /// @notice Will initialize all existing pools for the given pair, so that they can be queried with the given period in the future\\r\\n    /// @dev Will revert if there are no pools available for the pair and period combination\\r\\n    /// @param tokenA One of the pair's tokens\\r\\n    /// @param tokenB The other of the pair's tokens\\r\\n    /// @param period The period that will be guaranteed when quoting\\r\\n    /// @return preparedPools The pools that were prepared\\r\\n    function prepareAllAvailablePoolsWithTimePeriod(\\r\\n        address tokenA,\\r\\n        address tokenB,\\r\\n        uint32 period\\r\\n    ) external returns (address[] memory preparedPools);\\r\\n\\r\\n    /// @notice Will initialize the pair's pools with the specified fee tiers, so that they can be queried with the given period in the future\\r\\n    /// @dev Will revert if the pair does not have a pool for a given fee tier\\r\\n    /// @param tokenA One of the pair's tokens\\r\\n    /// @param tokenB The other of the pair's tokens\\r\\n    /// @param feeTiers The fee tiers to consider when searching for the pair's pools\\r\\n    /// @param period The period that will be guaranteed when quoting\\r\\n    /// @return preparedPools The pools that were prepared\\r\\n    function prepareSpecificFeeTiersWithTimePeriod(\\r\\n        address tokenA,\\r\\n        address tokenB,\\r\\n        uint24[] calldata feeTiers,\\r\\n        uint32 period\\r\\n    ) external returns (address[] memory preparedPools);\\r\\n\\r\\n    /// @notice Will initialize all given pools, so that they can be queried with the given period in the future\\r\\n    /// @param pools The pools to initialize\\r\\n    /// @param period The period that will be guaranteed when quoting\\r\\n    function prepareSpecificPoolsWithTimePeriod(address[] calldata pools, uint32 period) external;\\r\\n\\r\\n    /// @notice Will increase observations for all existing pools for the given pair, so they start accruing information for twap calculations\\r\\n    /// @dev Will revert if there are no pools available for the pair and period combination\\r\\n    /// @param tokenA One of the pair's tokens\\r\\n    /// @param tokenB The other of the pair's tokens\\r\\n    /// @param cardinality The cardinality that will be guaranteed when quoting\\r\\n    /// @return preparedPools The pools that were prepared\\r\\n    function prepareAllAvailablePoolsWithCardinality(\\r\\n        address tokenA,\\r\\n        address tokenB,\\r\\n        uint16 cardinality\\r\\n    ) external returns (address[] memory preparedPools);\\r\\n\\r\\n    /// @notice Will increase the pair's pools with the specified fee tiers observations, so they start accruing information for twap calculations\\r\\n    /// @dev Will revert if the pair does not have a pool for a given fee tier\\r\\n    /// @param tokenA One of the pair's tokens\\r\\n    /// @param tokenB The other of the pair's tokens\\r\\n    /// @param feeTiers The fee tiers to consider when searching for the pair's pools\\r\\n    /// @param cardinality The cardinality that will be guaranteed when quoting\\r\\n    /// @return preparedPools The pools that were prepared\\r\\n    function prepareSpecificFeeTiersWithCardinality(\\r\\n        address tokenA,\\r\\n        address tokenB,\\r\\n        uint24[] calldata feeTiers,\\r\\n        uint16 cardinality\\r\\n    ) external returns (address[] memory preparedPools);\\r\\n\\r\\n    /// @notice Will increase all given pools observations, so they start accruing information for twap calculations\\r\\n    /// @param pools The pools to initialize\\r\\n    /// @param cardinality The cardinality that will be guaranteed when quoting\\r\\n    function prepareSpecificPoolsWithCardinality(address[] calldata pools, uint16 cardinality) external;\\r\\n\\r\\n    /// @notice Adds support for a new fee tier\\r\\n    /// @dev Will revert if the given tier is invalid, or already supported\\r\\n    /// @param feeTier The new fee tier to add\\r\\n    function addNewFeeTier(uint24 feeTier) external;\\r\\n}\\r\\n\",\"keccak256\":\"0x592a6d2e0bfc7781db8700e7932c20e8c15f8de8307c5db562079f95f232877b\",\"license\":\"GPL-2.0-or-later\"},\"contracts/oracles/BaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '../interfaces/I1inchSpotAgg.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Oracle.sol';\\r\\nimport '../interfaces/IStaticOracle.sol';\\r\\n\\r\\ncontract BaluniV1Oracle is Initializable, OwnableUpgradeable, UUPSUpgradeable, IBaluniV1Oracle {\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __UUPSUpgradeable_init();\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __UUPSUpgradeable_init();\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the available oracle.\\r\\n     * If the conversion fails with the static oracle, it falls back to the aggregator oracle.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param toToken The address of the token to convert to.\\r\\n     * @param amount The amount of `fromToken` to convert.\\r\\n     * @return valuation The converted valuation of `amount` in `toToken`.\\r\\n     */\\r\\n    function convert(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) public view override returns (uint256 valuation) {\\r\\n        return this.convertWithStaticOracle(fromToken, toToken, amount);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the available oracle.\\r\\n     * If the conversion fails with the static oracle, it falls back to the aggregator oracle.\\r\\n     * This function is externally callable.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param toToken The address of the token to convert to.\\r\\n     * @param amount The amount of `fromToken` to convert.\\r\\n     * @return valuation The converted valuation of `amount` in `toToken`.\\r\\n     */\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view override returns (uint256 valuation) {\\r\\n        return this.convertScaledWithStaticOracle(fromToken, toToken, amount);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param toToken The address of the token to convert to.\\r\\n     * @param amount The amount of `fromToken` to convert.\\r\\n     * @return valuation The converted valuation of `amount` in `toToken`.\\r\\n     */\\r\\n    function convertWithAgg(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation) {\\r\\n        if (fromToken == toToken) return amount;\\r\\n        address _1InchSpotAgg = registry.get1inchSpotAgg();\\r\\n        uint8 fromDecimal = IERC20Metadata(fromToken).decimals();\\r\\n        uint8 toDecimal = IERC20Metadata(toToken).decimals();\\r\\n        uint256 rate = I1inchSpotAgg(_1InchSpotAgg).getRate(IERC20(fromToken), IERC20(toToken), false);\\r\\n        rate = (rate * (10 ** fromDecimal)) / (10 ** toDecimal);\\r\\n        uint256 factor;\\r\\n        if (fromDecimal >= toDecimal) {\\r\\n            factor = 10 ** (fromDecimal - toDecimal);\\r\\n            valuation = ((amount / factor) * rate) / 1e18;\\r\\n        } else {\\r\\n            factor = 10 ** (toDecimal - fromDecimal);\\r\\n            valuation = ((amount * factor) * rate) / 1e18;\\r\\n        }\\r\\n        return valuation;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the 1inch aggregator and scales the result.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param toToken The address of the token to convert to.\\r\\n     * @param amount The amount of `fromToken` to convert.\\r\\n     * @return valuation  The scaled converted valuation of `amount` in `toToken`.\\r\\n     */\\r\\n    function convertScaledWithAgg(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation) {\\r\\n        if (fromToken == toToken) return amount * 10 ** (18 - IERC20Metadata(toToken).decimals());\\r\\n        address _1InchSpotAgg = registry.get1inchSpotAgg();\\r\\n        uint8 fromDecimal = IERC20Metadata(fromToken).decimals();\\r\\n        uint8 toDecimal = IERC20Metadata(toToken).decimals();\\r\\n        uint256 rate = I1inchSpotAgg(_1InchSpotAgg).getRate(IERC20(fromToken), IERC20(toToken), false);\\r\\n        rate = (rate * (10 ** fromDecimal)) / (10 ** toDecimal);\\r\\n        uint256 scalingFactor;\\r\\n        uint256 tokenAmount;\\r\\n        uint256 finalScalingFactor = 10 ** (18 - toDecimal);\\r\\n        if (fromDecimal == toDecimal) {\\r\\n            valuation = (amount * rate) / 1e18;\\r\\n        } else if (fromDecimal > toDecimal) {\\r\\n            scalingFactor = 10 ** (fromDecimal - toDecimal);\\r\\n            tokenAmount = amount / scalingFactor;\\r\\n            valuation = (tokenAmount * rate) / 1e18;\\r\\n        } else {\\r\\n            scalingFactor = 10 ** (toDecimal - fromDecimal);\\r\\n            tokenAmount = amount * scalingFactor;\\r\\n            valuation = (tokenAmount * rate) / 1e18;\\r\\n        }\\r\\n        valuation = valuation * finalScalingFactor;\\r\\n        return valuation;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the specified amount of `fromToken` to `toToken` using the static oracle.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param toToken The address of the token to convert to.\\r\\n     * @param amount The amount of `fromToken` to convert.\\r\\n     * @return  valuation of the converted amount.\\r\\n     */\\r\\n    function convertWithStaticOracle(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation) {\\r\\n        IStaticOracle staticOracle = IStaticOracle(registry.getStaticOracle());\\r\\n        require(address(staticOracle) != address(0), 'StaticOracle not set');\\r\\n        (valuation, ) = staticOracle.quoteAllAvailablePoolsWithTimePeriod(uint128(amount), fromToken, toToken, 60);\\r\\n        return valuation;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the given amount of tokens from one token to another using a static oracle.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param toToken The address of the token to convert to.\\r\\n     * @param amount The amount of tokens to convert.\\r\\n     * @return  valuation of the converted tokens.\\r\\n     */\\r\\n    function convertScaledWithStaticOracle(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation) {\\r\\n        uint256 _valuation = this.convertWithStaticOracle(fromToken, toToken, amount);\\r\\n        valuation = scaleUp(_valuation, IERC20Metadata(toToken).decimals());\\r\\n        return valuation;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Scales up the given amount by subtracting the decimals.\\r\\n     * @param amount The amount to be scaled up.\\r\\n     * @param decimals The number of decimals to be subtracted.\\r\\n     * @return The scaled up amount.\\r\\n     */\\r\\n    function scaleUp(uint256 amount, uint256 decimals) internal pure returns (uint256) {\\r\\n        return amount * (10 ** (18 - decimals));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Scales down the given amount by dividing it by the difference between 10^18 and the decimals.\\r\\n     * @param amount The amount to be scaled down.\\r\\n     * @param decimals The number of decimals to be subtracted.\\r\\n     * @return The scaled down amount.\\r\\n     */\\r\\n    function scaleDown(uint256 amount, uint256 decimals) internal pure returns (uint256) {\\r\\n        return amount / (10 ** (18 - decimals));\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n}\\r\\n\",\"keccak256\":\"0xf8fb516136308351e9f07bde4bd0d602274875f3754a35b5f64ed6c346d0899e\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":11108,"contract":"contracts/oracles/BaluniV1Oracle.sol:BaluniV1Oracle","label":"registry","offset":0,"slot":"0","type":"t_contract(IBaluniV1Registry)4909"}],"types":{"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/orchestators/BaluniV1Agent.sol":{"BaluniV1Agent":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct BaluniV1Agent.Call[]","name":"calls","type":"tuple[]"},{"internalType":"address[]","name":"tokensReturn","type":"address[]"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This contract represents the BaluniV1Agent contract.","kind":"dev","methods":{"execute((address,uint256,bytes)[],address[])":{"details":"Executes a batch of calls and performs token operations.","params":{"calls":"An array of Call structs representing the calls to be executed.","tokensReturn":"An array of token addresses to return after the batch call."}},"getFactory()":{"details":"Returns the address of the factory contract.","returns":{"_0":"The address of the factory contract."}},"getRouter()":{"details":"Returns the address of the router contract.","returns":{"_0":"The address of the router contract."}},"initialize(address)":{"details":"Initializes the contract with the specified owner and router addresses.","params":{"_owner":"The address of the contract owner."}}},"title":"BaluniV1Agent","version":1},"evm":{"bytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":199,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":214,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":131,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":52,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_address":{"entryPoint":167,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":156,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1Agent":{"entryPoint":399,"id":11669,"parameterSlots":1,"returnSlots":0},"convert_address_to_address":{"entryPoint":352,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":340,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":312,"id":null,"parameterSlots":1,"returnSlots":1},"copy_arguments_for_constructor_object_BaluniV1Agent":{"entryPoint":244,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":92,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":309,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x41":{"entryPoint":72,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":364,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":58,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":152,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":62,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":277,"id":null,"parameterSlots":1,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":282,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":367,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":179,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60806040523461002f576100196100146100f4565b61018f565b610021610034565b61168061019d823961168090f35b61003a565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100669061003e565b810190811060018060401b0382111761007e57604052565b610048565b9061009661008f610034565b928361005c565b565b5f80fd5b60018060a01b031690565b6100b09061009c565b90565b6100bc816100a7565b036100c357565b5f80fd5b905051906100d4826100b3565b565b906020828203126100ef576100ec915f016100c7565b90565b610098565b61011261181d8038038061010781610083565b9283398101906100d6565b90565b5f1b90565b9061012b60018060a01b0391610115565b9181191691161790565b90565b61014c6101476101519261009c565b610135565b61009c565b90565b61015d90610138565b90565b61016990610154565b90565b90565b9061018461017f61018b92610160565b61016c565b825461011a565b9055565b61019a90600161016f565b56fe60806040526004361015610013575b6105b9565b61001d5f3561006c565b806388cc58e4146100675780638da5cb5b14610062578063b0f479a11461005d578063c4d66de8146100585763eedc3c500361000e57610585565b61020f565b610190565b61015b565b6100d6565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261008a57565b61007c565b73ffffffffffffffffffffffffffffffffffffffff1690565b6100b19061008f565b90565b6100bd906100a8565b9052565b91906100d4905f602085019401906100b4565b565b34610106576100e6366004610080565b6101026100f16105e7565b6100f9610072565b918291826100c1565b0390f35b610078565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61013890600861013d930261010b565b61010f565b90565b9061014b9154610128565b90565b6101585f80610140565b90565b3461018b5761016b366004610080565b61018761017661014e565b61017e610072565b918291826100c1565b0390f35b610078565b346101c0576101a0366004610080565b6101bc6101ab6106b3565b6101b3610072565b918291826100c1565b0390f35b610078565b5f80fd5b6101d2816100a8565b036101d957565b5f80fd5b905035906101ea826101c9565b565b9060208282031261020557610202915f016101dd565b90565b61007c565b5f0190565b3461023d576102276102223660046101ec565b6108f9565b61022f610072565b806102398161020a565b0390f35b610078565b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061028790610246565b810190811067ffffffffffffffff8211176102a157604052565b610250565b906102b96102b2610072565b928361027d565b565b67ffffffffffffffff81116102d35760208091020190565b610250565b5f80fd5b5f80fd5b5f80fd5b90565b6102f0816102e4565b036102f757565b5f80fd5b90503590610308826102e7565b565b5f80fd5b67ffffffffffffffff811161032c57610328602091610246565b0190565b610250565b90825f939282370152565b9092919261035161034c8261030e565b6102a6565b9381855260208501908284011161036d5761036b92610331565b565b61030a565b9080601f830112156103905781602061038d9335910161033c565b90565b610242565b9190916060818403126103f9576103ac60606102a6565b926103b9815f84016101dd565b5f8501526103ca81602084016102fb565b6020850152604082013567ffffffffffffffff81116103f4576103ed9201610372565b6040830152565b6102e0565b6102dc565b92919061041261040d826102bb565b6102a6565b93818552602080860192028101918383116104695781905b838210610438575050505050565b813567ffffffffffffffff8111610464576020916104598784938701610395565b81520191019061042a565b610242565b6102d8565b9080601f8301121561048c57816020610489933591016103fe565b90565b610242565b67ffffffffffffffff81116104a95760208091020190565b610250565b909291926104c36104be82610491565b6102a6565b938185526020808601920283019281841161050057915b8383106104e75750505050565b602080916104f584866101dd565b8152019201916104da565b6102d8565b9080601f8301121561052357816020610520933591016104ae565b90565b610242565b919091604081840312610580575f81013567ffffffffffffffff811161057b578361055491830161046e565b92602082013567ffffffffffffffff8111610576576105739201610505565b90565b6101c5565b6101c5565b61007c565b346105b45761059e610598366004610528565b90610c29565b6105a6610072565b806105b08161020a565b0390f35b610078565b5f80fd5b5f90565b5f1c90565b6105d26105d7916105c1565b61010f565b90565b6105e490546105c6565b90565b6105ef6105bd565b506105fa60016105da565b90565b90565b61061461060f6106199261008f565b6105fd565b61008f565b90565b61062590610600565b90565b6106319061061c565b90565b61063d90610600565b90565b61064990610634565b90565b60e01b90565b9050519061065f826101c9565b565b9060208282031261067a57610677915f01610652565b90565b61007c565b610687610072565b3d5f823e3d90fd5b61069890610600565b90565b6106a49061068f565b90565b6106b090610634565b90565b6106bb6105bd565b506106f160206106db6106d66106d160016105da565b610628565b610640565b635ab1bd53906106e9610072565b93849261064c565b825281806107016004820161020a565b03915afa9081156107c75761072b610726610741936020935f9161079a575b5061069b565b6106a7565b6304cc732590610739610072565b93849261064c565b825281806107516004820161020a565b03915afa908115610795575f91610767575b5090565b610788915060203d811161078e575b610780818361027d565b810190610661565b5f610763565b503d610776565b61067f565b6107ba9150843d81116107c0575b6107b2818361027d565b810190610661565b5f610720565b503d6107a8565b61067f565b90565b6107e36107de6107e8926107cc565b6105fd565b61008f565b90565b6107f4906107cf565b90565b60209181520190565b5f7f416c726561647920696e697469616c697a656400000000000000000000000000910152565b61083460136020926107f7565b61083d81610800565b0190565b6108569060208101905f818303910152610827565b90565b1561086057565b610868610072565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061089860048201610841565b0390fd5b5f1b90565b906108c073ffffffffffffffffffffffffffffffffffffffff9161089c565b9181191691161790565b6108d390610634565b90565b90565b906108ee6108e96108f5926108ca565b6108d6565b82546108a1565b9055565b61092f906109296109095f6105da565b61092361091d6109185f6107eb565b6100a8565b916100a8565b14610859565b5f6108d9565b61093a3360016108d9565b565b5f7f43616c6c61626c65206f6e6c792062792074686520726f757465720000000000910152565b610970601b6020926107f7565b6109798161093c565b0190565b6109929060208101905f818303910152610963565b90565b1561099c57565b6109a4610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806109d46004820161097d565b0390fd5b90610a0591610a00336109fa6109f46109ef6106b3565b6100a8565b916100a8565b14610995565b610b7e565b565b610a1b610a16610a20926107cc565b6105fd565b6102e4565b90565b6001610a2f91016102e4565b90565b5190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90610a6d82610a32565b811015610a7e576020809102010190565b610a36565b610a8d90516100a8565b90565b610a9a90516102e4565b90565b90610aaf610aaa8361030e565b6102a6565b918252565b606090565b3d5f14610ad457610ac93d610a9d565b903d5f602084013e5b565b610adc610ab4565b90610ad2565b5f7f42617463682063616c6c206661696c6564000000000000000000000000000000910152565b610b1660116020926107f7565b610b1f81610ae2565b0190565b610b389060208101905f818303910152610b09565b90565b15610b4257565b610b4a610072565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610b7a60048201610b23565b0390fd5b91610b885f610a07565b5b80610ba4610b9e610b9987610a32565b6102e4565b916102e4565b1015610c1257610c0d90610c085f80610bc981610bc28a8790610a63565b5101610a83565b610be06020610bd98b8890610a63565b5101610a90565b6040610bed8b8890610a63565b51015190602082019151925af1610c02610ab9565b50610b3b565b610a23565b610b89565b509150610c2790610c2281610e11565b611222565b565b90610c33916109d8565b565b5f90565b90505190610c46826102e7565b565b90602082820312610c6157610c5e915f01610c39565b90565b61007c565b5190565b90610c7482610c66565b811015610c85576020809102010190565b610a36565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b610cab90610600565b90565b610cb790610ca2565b90565b610cc390610634565b90565b610ccf90610634565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610d0e610d14919392936102e4565b926102e4565b91610d208382026102e4565b928184041490151715610d2f57565b610cd2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b610d6d610d73916102e4565b916102e4565b908115610d7e570490565b610d34565b151590565b610d9181610d83565b03610d9857565b5f80fd5b90505190610da982610d88565b565b90602082820312610dc457610dc1915f01610d9c565b90565b61007c565b610dd2906102e4565b9052565b916020610df7929493610df060408201965f8301906100b4565b0190610dc9565b565b610e0290610600565b90565b610e0e90610df9565b90565b90610e476020610e31610e2c610e2760016105da565b610628565b610640565b635ab1bd5390610e3f610072565b93849261064c565b82528180610e576004820161020a565b03915afa80156111f157610e72915f916111c3575b5061069b565b91610e976020610e81856106a7565b6304cc732590610e8f610072565b93849261064c565b82528180610ea76004820161020a565b03915afa9081156111be575f91611190575b5092610ec3610c35565b50610ee86020610ed2836106a7565b6385462d6f90610ee0610072565b93849261064c565b82528180610ef86004820161020a565b03915afa801561118b57610f1a602091610f30935f9161115e575b50936106a7565b634f4608a290610f28610072565b93849261064c565b82528180610f406004820161020a565b03915afa908115611159575f9161112b575b5091610f5d5f610a07565b5b80610f79610f73610f6e85610c66565b6102e4565b916102e4565b101561112357610f92610f8d838390610c6a565b610a83565b9081610fad610fa7610fa2610c8a565b6100a8565b916100a8565b145f14610ff357610fee9150610fe8610fda610fd3610fcb30610cc6565b318790610cff565b8790610d61565b610fe389610e05565b6115ed565b5b610a23565b610f5e565b61103b602061100961100485610cae565b610cba565b6370a082319061103061101b30610cc6565b92611024610072565b9586948593849361064c565b8352600483016100c1565b03915afa801561111e5761107161106b611064611076936020955f916110f1575b508990610cff565b8990610d61565b94610cae565b610cba565b9263a9059cbb9361109b5f8b93966110a661108f610072565b9889968795869461064c565b845260048401610dd6565b03925af19182156110ec57610fee926110c0575b50610fe9565b6110e09060203d81116110e5575b6110d8818361027d565b810190610dab565b6110ba565b503d6110ce565b61067f565b6111119150863d8111611117575b611109818361027d565b810190610c48565b5f61105c565b503d6110ff565b61067f565b505050509050565b61114c915060203d8111611152575b611144818361027d565b810190610c48565b5f610f52565b503d61113a565b61067f565b61117e9150833d8111611184575b611176818361027d565b810190610c48565b5f610f13565b503d61116c565b61067f565b6111b1915060203d81116111b7575b6111a9818361027d565b810190610661565b5f610eb9565b503d61119f565b61067f565b6111e4915060203d81116111ea575b6111dc818361027d565b810190610661565b5f610e6c565b503d6111d2565b61067f565b90565b61120d611208611212926111f6565b6105fd565b6102e4565b90565b61121f600a6111f9565b90565b61122b81610c66565b908161123f6112395f610a07565b916102e4565b11611249575b5050565b9091611253610c35565b5b80611267611261866102e4565b916102e4565b101561144c5761128061127b848390610c6a565b610a83565b908161129b611295611290610c8a565b6100a8565b916100a8565b145f146112fd576112cf91506112b030610cc6565b316112c36112bd5f610a07565b916102e4565b116112d4575b5b610a23565b611254565b6112f86112e86112e35f6105da565b610e05565b6112f130610cc6565b31906115ed565b6112c9565b611345602061131361130e85610cae565b610cba565b6370a082319061133a61132530610cc6565b9261132e610072565b9586948593849361064c565b8352600483016100c1565b03915afa908115611447575f91611419575b50918261137361136d611368611215565b6102e4565b916102e4565b11611384575b506112cf91506112ca565b611397611392602092610cae565b610cba565b9263a9059cbb936113c45f6113ab816105da565b93966113cf6113b8610072565b9889968795869461064c565b845260048401610dd6565b03925af1918215611414576112cf926113e8575b611379565b6114089060203d811161140d575b611400818361027d565b810190610dab565b6113e3565b503d6113f6565b61067f565b61143a915060203d8111611440575b611432818361027d565b810190610c48565b5f611357565b503d611428565b61067f565b509150505f80611245565b61146090610634565b90565b5f7f416464726573733a20696e73756666696369656e742062616c616e6365000000910152565b611497601d6020926107f7565b6114a081611463565b0190565b6114b99060208101905f81830391015261148a565b90565b156114c357565b6114cb610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806114fb600482016114a4565b0390fd5b61150890610634565b90565b905090565b61151b5f809261150b565b0190565b61152890611510565b90565b60207f6563697069656e74206d61792068617665207265766572746564000000000000917f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201520152565b611585603a6040926107f7565b61158e8161152b565b0190565b6115a79060208101905f818303910152611578565b90565b156115b157565b6115b9610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806115e960048201611592565b0390fd5b5f61164892611622829361161d61160330611457565b31611616611610866102e4565b916102e4565b10156114bc565b6114ff565b9061162b610072565b90816116368161151f565b03925af1611642610ab9565b506115aa565b56fea2646970667358221220c7b0b6a5047614f7da4310b4da483b8e1c4168e4e72e0645b14b479ea3a87c3e64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x2F JUMPI PUSH2 0x19 PUSH2 0x14 PUSH2 0xF4 JUMP JUMPDEST PUSH2 0x18F JUMP JUMPDEST PUSH2 0x21 PUSH2 0x34 JUMP JUMPDEST PUSH2 0x1680 PUSH2 0x19D DUP3 CODECOPY PUSH2 0x1680 SWAP1 RETURN JUMPDEST PUSH2 0x3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x66 SWAP1 PUSH2 0x3E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST SWAP1 PUSH2 0x96 PUSH2 0x8F PUSH2 0x34 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x5C JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xB0 SWAP1 PUSH2 0x9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBC DUP2 PUSH2 0xA7 JUMP JUMPDEST SUB PUSH2 0xC3 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD4 DUP3 PUSH2 0xB3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xEF JUMPI PUSH2 0xEC SWAP2 PUSH0 ADD PUSH2 0xC7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x98 JUMP JUMPDEST PUSH2 0x112 PUSH2 0x181D DUP1 CODESIZE SUB DUP1 PUSH2 0x107 DUP2 PUSH2 0x83 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH2 0xD6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x12B PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 PUSH2 0x115 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x147 PUSH2 0x151 SWAP3 PUSH2 0x9C JUMP JUMPDEST PUSH2 0x135 JUMP JUMPDEST PUSH2 0x9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15D SWAP1 PUSH2 0x138 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x169 SWAP1 PUSH2 0x154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x184 PUSH2 0x17F PUSH2 0x18B SWAP3 PUSH2 0x160 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST DUP3 SLOAD PUSH2 0x11A JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x19A SWAP1 PUSH1 0x1 PUSH2 0x16F JUMP JUMPDEST JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x6C JUMP JUMPDEST DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0xB0F479A1 EQ PUSH2 0x5D JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x58 JUMPI PUSH4 0xEEDC3C50 SUB PUSH2 0xE JUMPI PUSH2 0x585 JUMP JUMPDEST PUSH2 0x20F JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST PUSH2 0x15B JUMP JUMPDEST PUSH2 0xD6 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x8A JUMPI JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB1 SWAP1 PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBD SWAP1 PUSH2 0xA8 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xD4 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xB4 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x106 JUMPI PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x102 PUSH2 0xF1 PUSH2 0x5E7 JUMP JUMPDEST PUSH2 0xF9 PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x138 SWAP1 PUSH1 0x8 PUSH2 0x13D SWAP4 MUL PUSH2 0x10B JUMP JUMPDEST PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x14B SWAP2 SLOAD PUSH2 0x128 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x158 PUSH0 DUP1 PUSH2 0x140 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x18B JUMPI PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x176 PUSH2 0x14E JUMP JUMPDEST PUSH2 0x17E PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST CALLVALUE PUSH2 0x1C0 JUMPI PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x1AB PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1D2 DUP2 PUSH2 0xA8 JUMP JUMPDEST SUB PUSH2 0x1D9 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1EA DUP3 PUSH2 0x1C9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x205 JUMPI PUSH2 0x202 SWAP2 PUSH0 ADD PUSH2 0x1DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x23D JUMPI PUSH2 0x227 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EC JUMP JUMPDEST PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH2 0x239 DUP2 PUSH2 0x20A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x287 SWAP1 PUSH2 0x246 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2A1 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 PUSH2 0x2B9 PUSH2 0x2B2 PUSH2 0x72 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x27D JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2D3 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F0 DUP2 PUSH2 0x2E4 JUMP JUMPDEST SUB PUSH2 0x2F7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x308 DUP3 PUSH2 0x2E7 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x32C JUMPI PUSH2 0x328 PUSH1 0x20 SWAP2 PUSH2 0x246 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x351 PUSH2 0x34C DUP3 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x36D JUMPI PUSH2 0x36B SWAP3 PUSH2 0x331 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x390 JUMPI DUP2 PUSH1 0x20 PUSH2 0x38D SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x33C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x3F9 JUMPI PUSH2 0x3AC PUSH1 0x60 PUSH2 0x2A6 JUMP JUMPDEST SWAP3 PUSH2 0x3B9 DUP2 PUSH0 DUP5 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH0 DUP6 ADD MSTORE PUSH2 0x3CA DUP2 PUSH1 0x20 DUP5 ADD PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3F4 JUMPI PUSH2 0x3ED SWAP3 ADD PUSH2 0x372 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH2 0x2DC JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x412 PUSH2 0x40D DUP3 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x469 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x438 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x464 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x459 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x395 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x42A JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x48C JUMPI DUP2 PUSH1 0x20 PUSH2 0x489 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x3FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4A9 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x4C3 PUSH2 0x4BE DUP3 PUSH2 0x491 JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x500 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x4E7 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x4F5 DUP5 DUP7 PUSH2 0x1DD JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x4DA JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x523 JUMPI DUP2 PUSH1 0x20 PUSH2 0x520 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x580 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x57B JUMPI DUP4 PUSH2 0x554 SWAP2 DUP4 ADD PUSH2 0x46E JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x576 JUMPI PUSH2 0x573 SWAP3 ADD PUSH2 0x505 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST CALLVALUE PUSH2 0x5B4 JUMPI PUSH2 0x59E PUSH2 0x598 CALLDATASIZE PUSH1 0x4 PUSH2 0x528 JUMP JUMPDEST SWAP1 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH2 0x5B0 DUP2 PUSH2 0x20A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x5D2 PUSH2 0x5D7 SWAP2 PUSH2 0x5C1 JUMP JUMPDEST PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E4 SWAP1 SLOAD PUSH2 0x5C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EF PUSH2 0x5BD JUMP JUMPDEST POP PUSH2 0x5FA PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x60F PUSH2 0x619 SWAP3 PUSH2 0x8F JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x625 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x631 SWAP1 PUSH2 0x61C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x63D SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x649 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x65F DUP3 PUSH2 0x1C9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x67A JUMPI PUSH2 0x677 SWAP2 PUSH0 ADD PUSH2 0x652 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH2 0x687 PUSH2 0x72 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x698 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A4 SWAP1 PUSH2 0x68F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6B0 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x5BD JUMP JUMPDEST POP PUSH2 0x6F1 PUSH1 0x20 PUSH2 0x6DB PUSH2 0x6D6 PUSH2 0x6D1 PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST PUSH4 0x5AB1BD53 SWAP1 PUSH2 0x6E9 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x701 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7C7 JUMPI PUSH2 0x72B PUSH2 0x726 PUSH2 0x741 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x79A JUMPI JUMPDEST POP PUSH2 0x69B JUMP JUMPDEST PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x739 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x751 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x795 JUMPI PUSH0 SWAP2 PUSH2 0x767 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x788 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x78E JUMPI JUMPDEST PUSH2 0x780 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0x763 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x776 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x7BA SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x7C0 JUMPI JUMPDEST PUSH2 0x7B2 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0x720 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7A8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E3 PUSH2 0x7DE PUSH2 0x7E8 SWAP3 PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F4 SWAP1 PUSH2 0x7CF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x834 PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0x800 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x856 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x827 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x860 JUMPI JUMP JUMPDEST PUSH2 0x868 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x898 PUSH1 0x4 DUP3 ADD PUSH2 0x841 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8C0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x89C JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x8D3 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8EE PUSH2 0x8E9 PUSH2 0x8F5 SWAP3 PUSH2 0x8CA JUMP JUMPDEST PUSH2 0x8D6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x8A1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x92F SWAP1 PUSH2 0x929 PUSH2 0x909 PUSH0 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x923 PUSH2 0x91D PUSH2 0x918 PUSH0 PUSH2 0x7EB JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH2 0x859 JUMP JUMPDEST PUSH0 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x93A CALLER PUSH1 0x1 PUSH2 0x8D9 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x43616C6C61626C65206F6E6C792062792074686520726F757465720000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x970 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x979 DUP2 PUSH2 0x93C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x992 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x963 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x99C JUMPI JUMP JUMPDEST PUSH2 0x9A4 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x9D4 PUSH1 0x4 DUP3 ADD PUSH2 0x97D JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xA05 SWAP2 PUSH2 0xA00 CALLER PUSH2 0x9FA PUSH2 0x9F4 PUSH2 0x9EF PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH2 0x995 JUMP JUMPDEST PUSH2 0xB7E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA1B PUSH2 0xA16 PUSH2 0xA20 SWAP3 PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xA2F SWAP2 ADD PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xA6D DUP3 PUSH2 0xA32 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xA7E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xA36 JUMP JUMPDEST PUSH2 0xA8D SWAP1 MLOAD PUSH2 0xA8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA9A SWAP1 MLOAD PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAAF PUSH2 0xAAA DUP4 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0xAD4 JUMPI PUSH2 0xAC9 RETURNDATASIZE PUSH2 0xA9D JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0xADC PUSH2 0xAB4 JUMP JUMPDEST SWAP1 PUSH2 0xAD2 JUMP JUMPDEST PUSH0 PUSH32 0x42617463682063616C6C206661696C6564000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xB16 PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0xB1F DUP2 PUSH2 0xAE2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB38 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xB09 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xB42 JUMPI JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xB7A PUSH1 0x4 DUP3 ADD PUSH2 0xB23 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH2 0xB88 PUSH0 PUSH2 0xA07 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xBA4 PUSH2 0xB9E PUSH2 0xB99 DUP8 PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0xC12 JUMPI PUSH2 0xC0D SWAP1 PUSH2 0xC08 PUSH0 DUP1 PUSH2 0xBC9 DUP2 PUSH2 0xBC2 DUP11 DUP8 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD PUSH2 0xA83 JUMP JUMPDEST PUSH2 0xBE0 PUSH1 0x20 PUSH2 0xBD9 DUP12 DUP9 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD PUSH2 0xA90 JUMP JUMPDEST PUSH1 0x40 PUSH2 0xBED DUP12 DUP9 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP2 MLOAD SWAP3 GAS CALL PUSH2 0xC02 PUSH2 0xAB9 JUMP JUMPDEST POP PUSH2 0xB3B JUMP JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0xB89 JUMP JUMPDEST POP SWAP2 POP PUSH2 0xC27 SWAP1 PUSH2 0xC22 DUP2 PUSH2 0xE11 JUMP JUMPDEST PUSH2 0x1222 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xC33 SWAP2 PUSH2 0x9D8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xC46 DUP3 PUSH2 0x2E7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xC61 JUMPI PUSH2 0xC5E SWAP2 PUSH0 ADD PUSH2 0xC39 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xC74 DUP3 PUSH2 0xC66 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xC85 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xA36 JUMP JUMPDEST PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE SWAP1 JUMP JUMPDEST PUSH2 0xCAB SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB7 SWAP1 PUSH2 0xCA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC3 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCCF SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD0E PUSH2 0xD14 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2E4 JUMP JUMPDEST SWAP3 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0xD20 DUP4 DUP3 MUL PUSH2 0x2E4 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xD2F JUMPI JUMP JUMPDEST PUSH2 0xCD2 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD6D PUSH2 0xD73 SWAP2 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0xD7E JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0xD34 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xD91 DUP2 PUSH2 0xD83 JUMP JUMPDEST SUB PUSH2 0xD98 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xDA9 DUP3 PUSH2 0xD88 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xDC4 JUMPI PUSH2 0xDC1 SWAP2 PUSH0 ADD PUSH2 0xD9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH2 0xDD2 SWAP1 PUSH2 0x2E4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0xDF7 SWAP3 SWAP5 SWAP4 PUSH2 0xDF0 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0xB4 JUMP JUMPDEST ADD SWAP1 PUSH2 0xDC9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xE02 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE0E SWAP1 PUSH2 0xDF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE47 PUSH1 0x20 PUSH2 0xE31 PUSH2 0xE2C PUSH2 0xE27 PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST PUSH4 0x5AB1BD53 SWAP1 PUSH2 0xE3F PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xE57 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x11F1 JUMPI PUSH2 0xE72 SWAP2 PUSH0 SWAP2 PUSH2 0x11C3 JUMPI JUMPDEST POP PUSH2 0x69B JUMP JUMPDEST SWAP2 PUSH2 0xE97 PUSH1 0x20 PUSH2 0xE81 DUP6 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0xE8F PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xEA7 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x11BE JUMPI PUSH0 SWAP2 PUSH2 0x1190 JUMPI JUMPDEST POP SWAP3 PUSH2 0xEC3 PUSH2 0xC35 JUMP JUMPDEST POP PUSH2 0xEE8 PUSH1 0x20 PUSH2 0xED2 DUP4 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0xEE0 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xEF8 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x118B JUMPI PUSH2 0xF1A PUSH1 0x20 SWAP2 PUSH2 0xF30 SWAP4 PUSH0 SWAP2 PUSH2 0x115E JUMPI JUMPDEST POP SWAP4 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0xF28 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xF40 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1159 JUMPI PUSH0 SWAP2 PUSH2 0x112B JUMPI JUMPDEST POP SWAP2 PUSH2 0xF5D PUSH0 PUSH2 0xA07 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xF79 PUSH2 0xF73 PUSH2 0xF6E DUP6 PUSH2 0xC66 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x1123 JUMPI PUSH2 0xF92 PUSH2 0xF8D DUP4 DUP4 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xA83 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0xFAD PUSH2 0xFA7 PUSH2 0xFA2 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0xFF3 JUMPI PUSH2 0xFEE SWAP2 POP PUSH2 0xFE8 PUSH2 0xFDA PUSH2 0xFD3 PUSH2 0xFCB ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE DUP8 SWAP1 PUSH2 0xCFF JUMP JUMPDEST DUP8 SWAP1 PUSH2 0xD61 JUMP JUMPDEST PUSH2 0xFE3 DUP10 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x15ED JUMP JUMPDEST JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x103B PUSH1 0x20 PUSH2 0x1009 PUSH2 0x1004 DUP6 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1030 PUSH2 0x101B ADDRESS PUSH2 0xCC6 JUMP JUMPDEST SWAP3 PUSH2 0x1024 PUSH2 0x72 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x64C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xC1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x111E JUMPI PUSH2 0x1071 PUSH2 0x106B PUSH2 0x1064 PUSH2 0x1076 SWAP4 PUSH1 0x20 SWAP6 PUSH0 SWAP2 PUSH2 0x10F1 JUMPI JUMPDEST POP DUP10 SWAP1 PUSH2 0xCFF JUMP JUMPDEST DUP10 SWAP1 PUSH2 0xD61 JUMP JUMPDEST SWAP5 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x109B PUSH0 DUP12 SWAP4 SWAP7 PUSH2 0x10A6 PUSH2 0x108F PUSH2 0x72 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x64C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x10EC JUMPI PUSH2 0xFEE SWAP3 PUSH2 0x10C0 JUMPI JUMPDEST POP PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0x10E0 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x10E5 JUMPI JUMPDEST PUSH2 0x10D8 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x10BA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10CE JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x1111 SWAP2 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1117 JUMPI JUMPDEST PUSH2 0x1109 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0x105C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10FF JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST PUSH2 0x114C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1152 JUMPI JUMPDEST PUSH2 0x1144 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0xF52 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x113A JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x117E SWAP2 POP DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x1184 JUMPI JUMPDEST PUSH2 0x1176 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0xF13 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x116C JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x11B1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x11B7 JUMPI JUMPDEST PUSH2 0x11A9 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0xEB9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x119F JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x11E4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x11EA JUMPI JUMPDEST PUSH2 0x11DC DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0xE6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120D PUSH2 0x1208 PUSH2 0x1212 SWAP3 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x121F PUSH1 0xA PUSH2 0x11F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x122B DUP2 PUSH2 0xC66 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x123F PUSH2 0x1239 PUSH0 PUSH2 0xA07 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x1249 JUMPI JUMPDEST POP POP JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1253 PUSH2 0xC35 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1267 PUSH2 0x1261 DUP7 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x144C JUMPI PUSH2 0x1280 PUSH2 0x127B DUP5 DUP4 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xA83 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x129B PUSH2 0x1295 PUSH2 0x1290 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x12FD JUMPI PUSH2 0x12CF SWAP2 POP PUSH2 0x12B0 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE PUSH2 0x12C3 PUSH2 0x12BD PUSH0 PUSH2 0xA07 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x12D4 JUMPI JUMPDEST JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x1254 JUMP JUMPDEST PUSH2 0x12F8 PUSH2 0x12E8 PUSH2 0x12E3 PUSH0 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x12F1 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE SWAP1 PUSH2 0x15ED JUMP JUMPDEST PUSH2 0x12C9 JUMP JUMPDEST PUSH2 0x1345 PUSH1 0x20 PUSH2 0x1313 PUSH2 0x130E DUP6 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x133A PUSH2 0x1325 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST SWAP3 PUSH2 0x132E PUSH2 0x72 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x64C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xC1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1447 JUMPI PUSH0 SWAP2 PUSH2 0x1419 JUMPI JUMPDEST POP SWAP2 DUP3 PUSH2 0x1373 PUSH2 0x136D PUSH2 0x1368 PUSH2 0x1215 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x1384 JUMPI JUMPDEST POP PUSH2 0x12CF SWAP2 POP PUSH2 0x12CA JUMP JUMPDEST PUSH2 0x1397 PUSH2 0x1392 PUSH1 0x20 SWAP3 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x13C4 PUSH0 PUSH2 0x13AB DUP2 PUSH2 0x5DA JUMP JUMPDEST SWAP4 SWAP7 PUSH2 0x13CF PUSH2 0x13B8 PUSH2 0x72 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x64C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1414 JUMPI PUSH2 0x12CF SWAP3 PUSH2 0x13E8 JUMPI JUMPDEST PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x1408 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x140D JUMPI JUMPDEST PUSH2 0x1400 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x13E3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13F6 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x143A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1440 JUMPI JUMPDEST PUSH2 0x1432 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0x1357 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST POP SWAP2 POP POP PUSH0 DUP1 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x1460 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1497 PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x14A0 DUP2 PUSH2 0x1463 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x14B9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x148A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x14C3 JUMPI JUMP JUMPDEST PUSH2 0x14CB PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14FB PUSH1 0x4 DUP3 ADD PUSH2 0x14A4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1508 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x151B PUSH0 DUP1 SWAP3 PUSH2 0x150B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1528 SWAP1 PUSH2 0x1510 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 SWAP2 PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1585 PUSH1 0x3A PUSH1 0x40 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x158E DUP2 PUSH2 0x152B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x15A7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1578 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x15B1 JUMPI JUMP JUMPDEST PUSH2 0x15B9 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x15E9 PUSH1 0x4 DUP3 ADD PUSH2 0x1592 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1648 SWAP3 PUSH2 0x1622 DUP3 SWAP4 PUSH2 0x161D PUSH2 0x1603 ADDRESS PUSH2 0x1457 JUMP JUMPDEST BALANCE PUSH2 0x1616 PUSH2 0x1610 DUP7 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x14BC JUMP JUMPDEST PUSH2 0x14FF JUMP JUMPDEST SWAP1 PUSH2 0x162B PUSH2 0x72 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1636 DUP2 PUSH2 0x151F JUMP JUMPDEST SUB SWAP3 GAS CALL PUSH2 0x1642 PUSH2 0xAB9 JUMP JUMPDEST POP PUSH2 0x15AA JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 0xB0 0xB6 0xA5 DIV PUSH23 0x14F7DA4310B4DA483B8E1C4168E4E72E0645B14B479EA3 0xA8 PUSH29 0x3E64736F6C634300081900330000000000000000000000000000000000 ","sourceMap":"1789:4408:58:-:0;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2153:67::-;2194:18;2153:67;2194:18;;:::i;:::-;2153:67::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":128,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":477,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":1618,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dyn":{"entryPoint":1285,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_struct_Call_dyn":{"entryPoint":1134,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_struct_Call_dynt_array_address_dyn":{"entryPoint":1320,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_array_address_dyn":{"entryPoint":1198,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_array_struct_Call_dyn":{"entryPoint":1022,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":828,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":3499,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_Call":{"entryPoint":917,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":3484,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":3129,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":492,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":1633,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":763,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":3144,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":180,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_uint256":{"entryPoint":3542,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_packed_stringliteral_c5d2":{"entryPoint":5407,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":5258,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_51dd":{"entryPoint":5522,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae":{"entryPoint":5496,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c09e":{"entryPoint":2851,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c09e899dfcc1fcf0d7dd9e543f8a91b17a7de5379720d80ee73296e900d7ae60":{"entryPoint":2825,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c5d2":{"entryPoint":5392,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_d381":{"entryPoint":2113,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0":{"entryPoint":2087,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f288":{"entryPoint":2429,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f288cef4bb462eac7507b059e37e08390ab98484d1c030cf9363145ee84c382c":{"entryPoint":2403,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":522,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":193,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":5284,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256":{"entryPoint":3529,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_memory":{"entryPoint":678,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":2717,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":114,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":1169,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_struct_Call_dyn":{"entryPoint":699,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":782,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":3174,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_struct_Call_dyn":{"entryPoint":2610,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_bytes_nonPadded_inplace":{"entryPoint":5387,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":2039,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":3425,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":3327,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":168,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":3459,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":271,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":1996,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":4598,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":143,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":740,"id":null,"parameterSlots":1,"returnSlots":1},"constant_DUST":{"entryPoint":4629,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NATIVE":{"entryPoint":3210,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_payable_to_address":{"entryPoint":5375,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_address":{"entryPoint":2250,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_address_payable":{"entryPoint":3589,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1AgentFactory":{"entryPoint":1576,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":1691,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":3246,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_AddressUpgradeable_to_address":{"entryPoint":5207,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1Agent_to_address":{"entryPoint":3270,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1AgentFactory_to_address":{"entryPoint":1600,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1703,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":3258,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":2027,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":1999,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":4601,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":2567,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1588,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address_payable":{"entryPoint":3577,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1AgentFactory":{"entryPoint":1564,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":1679,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":3234,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1536,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":817,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_execute":{"entryPoint":1413,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getFactory":{"entryPoint":214,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getRouter":{"entryPoint":400,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":527,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":347,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":296,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":1478,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":2745,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":637,"id":null,"parameterSlots":2,"returnSlots":0},"fun_chargeFees":{"entryPoint":3601,"id":11908,"parameterSlots":1,"returnSlots":0},"fun_execute":{"entryPoint":3113,"id":11767,"parameterSlots":2,"returnSlots":0},"fun_execute_inner":{"entryPoint":2942,"id":null,"parameterSlots":2,"returnSlots":0},"fun_getFactory":{"entryPoint":1511,"id":11793,"parameterSlots":0,"returnSlots":1},"fun_getRouter":{"entryPoint":1715,"id":11784,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":2297,"id":11695,"parameterSlots":1,"returnSlots":0},"fun_returnTokens":{"entryPoint":4642,"id":11996,"parameterSlots":1,"returnSlots":0},"fun_sendValue":{"entryPoint":5613,"id":5583,"parameterSlots":2,"returnSlots":0},"getter_fun_owner":{"entryPoint":334,"id":11644,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":1533,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":2595,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":3178,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_struct_Call_dyn":{"entryPoint":2659,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_onlyRouter":{"entryPoint":2520,"id":11709,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":3282,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":3380,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2614,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":592,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":2262,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":2691,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_uint256":{"entryPoint":2704,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":320,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":1498,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":5308,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_51dd":{"entryPoint":5546,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_c09e":{"entryPoint":2875,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_d381":{"entryPoint":2137,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_f288":{"entryPoint":2453,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":578,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":732,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":1465,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":736,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":728,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":778,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":453,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":120,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":124,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":1663,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":582,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":2204,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":1612,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":1473,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":108,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":267,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae":{"entryPoint":5419,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9":{"entryPoint":5219,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c09e899dfcc1fcf0d7dd9e543f8a91b17a7de5379720d80ee73296e900d7ae60":{"entryPoint":2786,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0":{"entryPoint":2048,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f288cef4bb462eac7507b059e37e08390ab98484d1c030cf9363145ee84c382c":{"entryPoint":2364,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_shift":{"entryPoint":2209,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":2265,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":457,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":3464,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":743,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":1469,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":2740,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":3125,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361015610013575b6105b9565b61001d5f3561006c565b806388cc58e4146100675780638da5cb5b14610062578063b0f479a11461005d578063c4d66de8146100585763eedc3c500361000e57610585565b61020f565b610190565b61015b565b6100d6565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261008a57565b61007c565b73ffffffffffffffffffffffffffffffffffffffff1690565b6100b19061008f565b90565b6100bd906100a8565b9052565b91906100d4905f602085019401906100b4565b565b34610106576100e6366004610080565b6101026100f16105e7565b6100f9610072565b918291826100c1565b0390f35b610078565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61013890600861013d930261010b565b61010f565b90565b9061014b9154610128565b90565b6101585f80610140565b90565b3461018b5761016b366004610080565b61018761017661014e565b61017e610072565b918291826100c1565b0390f35b610078565b346101c0576101a0366004610080565b6101bc6101ab6106b3565b6101b3610072565b918291826100c1565b0390f35b610078565b5f80fd5b6101d2816100a8565b036101d957565b5f80fd5b905035906101ea826101c9565b565b9060208282031261020557610202915f016101dd565b90565b61007c565b5f0190565b3461023d576102276102223660046101ec565b6108f9565b61022f610072565b806102398161020a565b0390f35b610078565b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061028790610246565b810190811067ffffffffffffffff8211176102a157604052565b610250565b906102b96102b2610072565b928361027d565b565b67ffffffffffffffff81116102d35760208091020190565b610250565b5f80fd5b5f80fd5b5f80fd5b90565b6102f0816102e4565b036102f757565b5f80fd5b90503590610308826102e7565b565b5f80fd5b67ffffffffffffffff811161032c57610328602091610246565b0190565b610250565b90825f939282370152565b9092919261035161034c8261030e565b6102a6565b9381855260208501908284011161036d5761036b92610331565b565b61030a565b9080601f830112156103905781602061038d9335910161033c565b90565b610242565b9190916060818403126103f9576103ac60606102a6565b926103b9815f84016101dd565b5f8501526103ca81602084016102fb565b6020850152604082013567ffffffffffffffff81116103f4576103ed9201610372565b6040830152565b6102e0565b6102dc565b92919061041261040d826102bb565b6102a6565b93818552602080860192028101918383116104695781905b838210610438575050505050565b813567ffffffffffffffff8111610464576020916104598784938701610395565b81520191019061042a565b610242565b6102d8565b9080601f8301121561048c57816020610489933591016103fe565b90565b610242565b67ffffffffffffffff81116104a95760208091020190565b610250565b909291926104c36104be82610491565b6102a6565b938185526020808601920283019281841161050057915b8383106104e75750505050565b602080916104f584866101dd565b8152019201916104da565b6102d8565b9080601f8301121561052357816020610520933591016104ae565b90565b610242565b919091604081840312610580575f81013567ffffffffffffffff811161057b578361055491830161046e565b92602082013567ffffffffffffffff8111610576576105739201610505565b90565b6101c5565b6101c5565b61007c565b346105b45761059e610598366004610528565b90610c29565b6105a6610072565b806105b08161020a565b0390f35b610078565b5f80fd5b5f90565b5f1c90565b6105d26105d7916105c1565b61010f565b90565b6105e490546105c6565b90565b6105ef6105bd565b506105fa60016105da565b90565b90565b61061461060f6106199261008f565b6105fd565b61008f565b90565b61062590610600565b90565b6106319061061c565b90565b61063d90610600565b90565b61064990610634565b90565b60e01b90565b9050519061065f826101c9565b565b9060208282031261067a57610677915f01610652565b90565b61007c565b610687610072565b3d5f823e3d90fd5b61069890610600565b90565b6106a49061068f565b90565b6106b090610634565b90565b6106bb6105bd565b506106f160206106db6106d66106d160016105da565b610628565b610640565b635ab1bd53906106e9610072565b93849261064c565b825281806107016004820161020a565b03915afa9081156107c75761072b610726610741936020935f9161079a575b5061069b565b6106a7565b6304cc732590610739610072565b93849261064c565b825281806107516004820161020a565b03915afa908115610795575f91610767575b5090565b610788915060203d811161078e575b610780818361027d565b810190610661565b5f610763565b503d610776565b61067f565b6107ba9150843d81116107c0575b6107b2818361027d565b810190610661565b5f610720565b503d6107a8565b61067f565b90565b6107e36107de6107e8926107cc565b6105fd565b61008f565b90565b6107f4906107cf565b90565b60209181520190565b5f7f416c726561647920696e697469616c697a656400000000000000000000000000910152565b61083460136020926107f7565b61083d81610800565b0190565b6108569060208101905f818303910152610827565b90565b1561086057565b610868610072565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061089860048201610841565b0390fd5b5f1b90565b906108c073ffffffffffffffffffffffffffffffffffffffff9161089c565b9181191691161790565b6108d390610634565b90565b90565b906108ee6108e96108f5926108ca565b6108d6565b82546108a1565b9055565b61092f906109296109095f6105da565b61092361091d6109185f6107eb565b6100a8565b916100a8565b14610859565b5f6108d9565b61093a3360016108d9565b565b5f7f43616c6c61626c65206f6e6c792062792074686520726f757465720000000000910152565b610970601b6020926107f7565b6109798161093c565b0190565b6109929060208101905f818303910152610963565b90565b1561099c57565b6109a4610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806109d46004820161097d565b0390fd5b90610a0591610a00336109fa6109f46109ef6106b3565b6100a8565b916100a8565b14610995565b610b7e565b565b610a1b610a16610a20926107cc565b6105fd565b6102e4565b90565b6001610a2f91016102e4565b90565b5190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90610a6d82610a32565b811015610a7e576020809102010190565b610a36565b610a8d90516100a8565b90565b610a9a90516102e4565b90565b90610aaf610aaa8361030e565b6102a6565b918252565b606090565b3d5f14610ad457610ac93d610a9d565b903d5f602084013e5b565b610adc610ab4565b90610ad2565b5f7f42617463682063616c6c206661696c6564000000000000000000000000000000910152565b610b1660116020926107f7565b610b1f81610ae2565b0190565b610b389060208101905f818303910152610b09565b90565b15610b4257565b610b4a610072565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610b7a60048201610b23565b0390fd5b91610b885f610a07565b5b80610ba4610b9e610b9987610a32565b6102e4565b916102e4565b1015610c1257610c0d90610c085f80610bc981610bc28a8790610a63565b5101610a83565b610be06020610bd98b8890610a63565b5101610a90565b6040610bed8b8890610a63565b51015190602082019151925af1610c02610ab9565b50610b3b565b610a23565b610b89565b509150610c2790610c2281610e11565b611222565b565b90610c33916109d8565b565b5f90565b90505190610c46826102e7565b565b90602082820312610c6157610c5e915f01610c39565b90565b61007c565b5190565b90610c7482610c66565b811015610c85576020809102010190565b610a36565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b610cab90610600565b90565b610cb790610ca2565b90565b610cc390610634565b90565b610ccf90610634565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610d0e610d14919392936102e4565b926102e4565b91610d208382026102e4565b928184041490151715610d2f57565b610cd2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b610d6d610d73916102e4565b916102e4565b908115610d7e570490565b610d34565b151590565b610d9181610d83565b03610d9857565b5f80fd5b90505190610da982610d88565b565b90602082820312610dc457610dc1915f01610d9c565b90565b61007c565b610dd2906102e4565b9052565b916020610df7929493610df060408201965f8301906100b4565b0190610dc9565b565b610e0290610600565b90565b610e0e90610df9565b90565b90610e476020610e31610e2c610e2760016105da565b610628565b610640565b635ab1bd5390610e3f610072565b93849261064c565b82528180610e576004820161020a565b03915afa80156111f157610e72915f916111c3575b5061069b565b91610e976020610e81856106a7565b6304cc732590610e8f610072565b93849261064c565b82528180610ea76004820161020a565b03915afa9081156111be575f91611190575b5092610ec3610c35565b50610ee86020610ed2836106a7565b6385462d6f90610ee0610072565b93849261064c565b82528180610ef86004820161020a565b03915afa801561118b57610f1a602091610f30935f9161115e575b50936106a7565b634f4608a290610f28610072565b93849261064c565b82528180610f406004820161020a565b03915afa908115611159575f9161112b575b5091610f5d5f610a07565b5b80610f79610f73610f6e85610c66565b6102e4565b916102e4565b101561112357610f92610f8d838390610c6a565b610a83565b9081610fad610fa7610fa2610c8a565b6100a8565b916100a8565b145f14610ff357610fee9150610fe8610fda610fd3610fcb30610cc6565b318790610cff565b8790610d61565b610fe389610e05565b6115ed565b5b610a23565b610f5e565b61103b602061100961100485610cae565b610cba565b6370a082319061103061101b30610cc6565b92611024610072565b9586948593849361064c565b8352600483016100c1565b03915afa801561111e5761107161106b611064611076936020955f916110f1575b508990610cff565b8990610d61565b94610cae565b610cba565b9263a9059cbb9361109b5f8b93966110a661108f610072565b9889968795869461064c565b845260048401610dd6565b03925af19182156110ec57610fee926110c0575b50610fe9565b6110e09060203d81116110e5575b6110d8818361027d565b810190610dab565b6110ba565b503d6110ce565b61067f565b6111119150863d8111611117575b611109818361027d565b810190610c48565b5f61105c565b503d6110ff565b61067f565b505050509050565b61114c915060203d8111611152575b611144818361027d565b810190610c48565b5f610f52565b503d61113a565b61067f565b61117e9150833d8111611184575b611176818361027d565b810190610c48565b5f610f13565b503d61116c565b61067f565b6111b1915060203d81116111b7575b6111a9818361027d565b810190610661565b5f610eb9565b503d61119f565b61067f565b6111e4915060203d81116111ea575b6111dc818361027d565b810190610661565b5f610e6c565b503d6111d2565b61067f565b90565b61120d611208611212926111f6565b6105fd565b6102e4565b90565b61121f600a6111f9565b90565b61122b81610c66565b908161123f6112395f610a07565b916102e4565b11611249575b5050565b9091611253610c35565b5b80611267611261866102e4565b916102e4565b101561144c5761128061127b848390610c6a565b610a83565b908161129b611295611290610c8a565b6100a8565b916100a8565b145f146112fd576112cf91506112b030610cc6565b316112c36112bd5f610a07565b916102e4565b116112d4575b5b610a23565b611254565b6112f86112e86112e35f6105da565b610e05565b6112f130610cc6565b31906115ed565b6112c9565b611345602061131361130e85610cae565b610cba565b6370a082319061133a61132530610cc6565b9261132e610072565b9586948593849361064c565b8352600483016100c1565b03915afa908115611447575f91611419575b50918261137361136d611368611215565b6102e4565b916102e4565b11611384575b506112cf91506112ca565b611397611392602092610cae565b610cba565b9263a9059cbb936113c45f6113ab816105da565b93966113cf6113b8610072565b9889968795869461064c565b845260048401610dd6565b03925af1918215611414576112cf926113e8575b611379565b6114089060203d811161140d575b611400818361027d565b810190610dab565b6113e3565b503d6113f6565b61067f565b61143a915060203d8111611440575b611432818361027d565b810190610c48565b5f611357565b503d611428565b61067f565b509150505f80611245565b61146090610634565b90565b5f7f416464726573733a20696e73756666696369656e742062616c616e6365000000910152565b611497601d6020926107f7565b6114a081611463565b0190565b6114b99060208101905f81830391015261148a565b90565b156114c357565b6114cb610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806114fb600482016114a4565b0390fd5b61150890610634565b90565b905090565b61151b5f809261150b565b0190565b61152890611510565b90565b60207f6563697069656e74206d61792068617665207265766572746564000000000000917f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201520152565b611585603a6040926107f7565b61158e8161152b565b0190565b6115a79060208101905f818303910152611578565b90565b156115b157565b6115b9610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806115e960048201611592565b0390fd5b5f61164892611622829361161d61160330611457565b31611616611610866102e4565b916102e4565b10156114bc565b6114ff565b9061162b610072565b90816116368161151f565b03925af1611642610ab9565b506115aa565b56fea2646970667358221220c7b0b6a5047614f7da4310b4da483b8e1c4168e4e72e0645b14b479ea3a87c3e64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x6C JUMP JUMPDEST DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0xB0F479A1 EQ PUSH2 0x5D JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x58 JUMPI PUSH4 0xEEDC3C50 SUB PUSH2 0xE JUMPI PUSH2 0x585 JUMP JUMPDEST PUSH2 0x20F JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST PUSH2 0x15B JUMP JUMPDEST PUSH2 0xD6 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x8A JUMPI JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB1 SWAP1 PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBD SWAP1 PUSH2 0xA8 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xD4 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xB4 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x106 JUMPI PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x102 PUSH2 0xF1 PUSH2 0x5E7 JUMP JUMPDEST PUSH2 0xF9 PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x138 SWAP1 PUSH1 0x8 PUSH2 0x13D SWAP4 MUL PUSH2 0x10B JUMP JUMPDEST PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x14B SWAP2 SLOAD PUSH2 0x128 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x158 PUSH0 DUP1 PUSH2 0x140 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x18B JUMPI PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x176 PUSH2 0x14E JUMP JUMPDEST PUSH2 0x17E PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST CALLVALUE PUSH2 0x1C0 JUMPI PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x1AB PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1D2 DUP2 PUSH2 0xA8 JUMP JUMPDEST SUB PUSH2 0x1D9 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1EA DUP3 PUSH2 0x1C9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x205 JUMPI PUSH2 0x202 SWAP2 PUSH0 ADD PUSH2 0x1DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x23D JUMPI PUSH2 0x227 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EC JUMP JUMPDEST PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH2 0x239 DUP2 PUSH2 0x20A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x287 SWAP1 PUSH2 0x246 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2A1 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 PUSH2 0x2B9 PUSH2 0x2B2 PUSH2 0x72 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x27D JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2D3 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F0 DUP2 PUSH2 0x2E4 JUMP JUMPDEST SUB PUSH2 0x2F7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x308 DUP3 PUSH2 0x2E7 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x32C JUMPI PUSH2 0x328 PUSH1 0x20 SWAP2 PUSH2 0x246 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x351 PUSH2 0x34C DUP3 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x36D JUMPI PUSH2 0x36B SWAP3 PUSH2 0x331 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x390 JUMPI DUP2 PUSH1 0x20 PUSH2 0x38D SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x33C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x3F9 JUMPI PUSH2 0x3AC PUSH1 0x60 PUSH2 0x2A6 JUMP JUMPDEST SWAP3 PUSH2 0x3B9 DUP2 PUSH0 DUP5 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH0 DUP6 ADD MSTORE PUSH2 0x3CA DUP2 PUSH1 0x20 DUP5 ADD PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3F4 JUMPI PUSH2 0x3ED SWAP3 ADD PUSH2 0x372 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH2 0x2DC JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x412 PUSH2 0x40D DUP3 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x469 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x438 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x464 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x459 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x395 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x42A JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x48C JUMPI DUP2 PUSH1 0x20 PUSH2 0x489 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x3FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4A9 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x4C3 PUSH2 0x4BE DUP3 PUSH2 0x491 JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x500 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x4E7 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x4F5 DUP5 DUP7 PUSH2 0x1DD JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x4DA JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x523 JUMPI DUP2 PUSH1 0x20 PUSH2 0x520 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x580 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x57B JUMPI DUP4 PUSH2 0x554 SWAP2 DUP4 ADD PUSH2 0x46E JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x576 JUMPI PUSH2 0x573 SWAP3 ADD PUSH2 0x505 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST CALLVALUE PUSH2 0x5B4 JUMPI PUSH2 0x59E PUSH2 0x598 CALLDATASIZE PUSH1 0x4 PUSH2 0x528 JUMP JUMPDEST SWAP1 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH2 0x5B0 DUP2 PUSH2 0x20A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x5D2 PUSH2 0x5D7 SWAP2 PUSH2 0x5C1 JUMP JUMPDEST PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E4 SWAP1 SLOAD PUSH2 0x5C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EF PUSH2 0x5BD JUMP JUMPDEST POP PUSH2 0x5FA PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x60F PUSH2 0x619 SWAP3 PUSH2 0x8F JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x625 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x631 SWAP1 PUSH2 0x61C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x63D SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x649 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x65F DUP3 PUSH2 0x1C9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x67A JUMPI PUSH2 0x677 SWAP2 PUSH0 ADD PUSH2 0x652 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH2 0x687 PUSH2 0x72 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x698 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A4 SWAP1 PUSH2 0x68F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6B0 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x5BD JUMP JUMPDEST POP PUSH2 0x6F1 PUSH1 0x20 PUSH2 0x6DB PUSH2 0x6D6 PUSH2 0x6D1 PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST PUSH4 0x5AB1BD53 SWAP1 PUSH2 0x6E9 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x701 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7C7 JUMPI PUSH2 0x72B PUSH2 0x726 PUSH2 0x741 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x79A JUMPI JUMPDEST POP PUSH2 0x69B JUMP JUMPDEST PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x739 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x751 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x795 JUMPI PUSH0 SWAP2 PUSH2 0x767 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x788 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x78E JUMPI JUMPDEST PUSH2 0x780 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0x763 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x776 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x7BA SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x7C0 JUMPI JUMPDEST PUSH2 0x7B2 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0x720 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7A8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E3 PUSH2 0x7DE PUSH2 0x7E8 SWAP3 PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F4 SWAP1 PUSH2 0x7CF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x834 PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0x800 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x856 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x827 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x860 JUMPI JUMP JUMPDEST PUSH2 0x868 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x898 PUSH1 0x4 DUP3 ADD PUSH2 0x841 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8C0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x89C JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x8D3 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8EE PUSH2 0x8E9 PUSH2 0x8F5 SWAP3 PUSH2 0x8CA JUMP JUMPDEST PUSH2 0x8D6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x8A1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x92F SWAP1 PUSH2 0x929 PUSH2 0x909 PUSH0 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x923 PUSH2 0x91D PUSH2 0x918 PUSH0 PUSH2 0x7EB JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH2 0x859 JUMP JUMPDEST PUSH0 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x93A CALLER PUSH1 0x1 PUSH2 0x8D9 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x43616C6C61626C65206F6E6C792062792074686520726F757465720000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x970 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x979 DUP2 PUSH2 0x93C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x992 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x963 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x99C JUMPI JUMP JUMPDEST PUSH2 0x9A4 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x9D4 PUSH1 0x4 DUP3 ADD PUSH2 0x97D JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xA05 SWAP2 PUSH2 0xA00 CALLER PUSH2 0x9FA PUSH2 0x9F4 PUSH2 0x9EF PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH2 0x995 JUMP JUMPDEST PUSH2 0xB7E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA1B PUSH2 0xA16 PUSH2 0xA20 SWAP3 PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xA2F SWAP2 ADD PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xA6D DUP3 PUSH2 0xA32 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xA7E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xA36 JUMP JUMPDEST PUSH2 0xA8D SWAP1 MLOAD PUSH2 0xA8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA9A SWAP1 MLOAD PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAAF PUSH2 0xAAA DUP4 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0xAD4 JUMPI PUSH2 0xAC9 RETURNDATASIZE PUSH2 0xA9D JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0xADC PUSH2 0xAB4 JUMP JUMPDEST SWAP1 PUSH2 0xAD2 JUMP JUMPDEST PUSH0 PUSH32 0x42617463682063616C6C206661696C6564000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xB16 PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0xB1F DUP2 PUSH2 0xAE2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB38 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xB09 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xB42 JUMPI JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xB7A PUSH1 0x4 DUP3 ADD PUSH2 0xB23 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH2 0xB88 PUSH0 PUSH2 0xA07 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xBA4 PUSH2 0xB9E PUSH2 0xB99 DUP8 PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0xC12 JUMPI PUSH2 0xC0D SWAP1 PUSH2 0xC08 PUSH0 DUP1 PUSH2 0xBC9 DUP2 PUSH2 0xBC2 DUP11 DUP8 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD PUSH2 0xA83 JUMP JUMPDEST PUSH2 0xBE0 PUSH1 0x20 PUSH2 0xBD9 DUP12 DUP9 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD PUSH2 0xA90 JUMP JUMPDEST PUSH1 0x40 PUSH2 0xBED DUP12 DUP9 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP2 MLOAD SWAP3 GAS CALL PUSH2 0xC02 PUSH2 0xAB9 JUMP JUMPDEST POP PUSH2 0xB3B JUMP JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0xB89 JUMP JUMPDEST POP SWAP2 POP PUSH2 0xC27 SWAP1 PUSH2 0xC22 DUP2 PUSH2 0xE11 JUMP JUMPDEST PUSH2 0x1222 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xC33 SWAP2 PUSH2 0x9D8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xC46 DUP3 PUSH2 0x2E7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xC61 JUMPI PUSH2 0xC5E SWAP2 PUSH0 ADD PUSH2 0xC39 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xC74 DUP3 PUSH2 0xC66 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xC85 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xA36 JUMP JUMPDEST PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE SWAP1 JUMP JUMPDEST PUSH2 0xCAB SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB7 SWAP1 PUSH2 0xCA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC3 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCCF SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD0E PUSH2 0xD14 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2E4 JUMP JUMPDEST SWAP3 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0xD20 DUP4 DUP3 MUL PUSH2 0x2E4 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xD2F JUMPI JUMP JUMPDEST PUSH2 0xCD2 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD6D PUSH2 0xD73 SWAP2 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0xD7E JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0xD34 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xD91 DUP2 PUSH2 0xD83 JUMP JUMPDEST SUB PUSH2 0xD98 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xDA9 DUP3 PUSH2 0xD88 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xDC4 JUMPI PUSH2 0xDC1 SWAP2 PUSH0 ADD PUSH2 0xD9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH2 0xDD2 SWAP1 PUSH2 0x2E4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0xDF7 SWAP3 SWAP5 SWAP4 PUSH2 0xDF0 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0xB4 JUMP JUMPDEST ADD SWAP1 PUSH2 0xDC9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xE02 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE0E SWAP1 PUSH2 0xDF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE47 PUSH1 0x20 PUSH2 0xE31 PUSH2 0xE2C PUSH2 0xE27 PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST PUSH4 0x5AB1BD53 SWAP1 PUSH2 0xE3F PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xE57 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x11F1 JUMPI PUSH2 0xE72 SWAP2 PUSH0 SWAP2 PUSH2 0x11C3 JUMPI JUMPDEST POP PUSH2 0x69B JUMP JUMPDEST SWAP2 PUSH2 0xE97 PUSH1 0x20 PUSH2 0xE81 DUP6 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0xE8F PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xEA7 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x11BE JUMPI PUSH0 SWAP2 PUSH2 0x1190 JUMPI JUMPDEST POP SWAP3 PUSH2 0xEC3 PUSH2 0xC35 JUMP JUMPDEST POP PUSH2 0xEE8 PUSH1 0x20 PUSH2 0xED2 DUP4 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0xEE0 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xEF8 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x118B JUMPI PUSH2 0xF1A PUSH1 0x20 SWAP2 PUSH2 0xF30 SWAP4 PUSH0 SWAP2 PUSH2 0x115E JUMPI JUMPDEST POP SWAP4 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0xF28 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xF40 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1159 JUMPI PUSH0 SWAP2 PUSH2 0x112B JUMPI JUMPDEST POP SWAP2 PUSH2 0xF5D PUSH0 PUSH2 0xA07 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xF79 PUSH2 0xF73 PUSH2 0xF6E DUP6 PUSH2 0xC66 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x1123 JUMPI PUSH2 0xF92 PUSH2 0xF8D DUP4 DUP4 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xA83 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0xFAD PUSH2 0xFA7 PUSH2 0xFA2 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0xFF3 JUMPI PUSH2 0xFEE SWAP2 POP PUSH2 0xFE8 PUSH2 0xFDA PUSH2 0xFD3 PUSH2 0xFCB ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE DUP8 SWAP1 PUSH2 0xCFF JUMP JUMPDEST DUP8 SWAP1 PUSH2 0xD61 JUMP JUMPDEST PUSH2 0xFE3 DUP10 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x15ED JUMP JUMPDEST JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x103B PUSH1 0x20 PUSH2 0x1009 PUSH2 0x1004 DUP6 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1030 PUSH2 0x101B ADDRESS PUSH2 0xCC6 JUMP JUMPDEST SWAP3 PUSH2 0x1024 PUSH2 0x72 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x64C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xC1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x111E JUMPI PUSH2 0x1071 PUSH2 0x106B PUSH2 0x1064 PUSH2 0x1076 SWAP4 PUSH1 0x20 SWAP6 PUSH0 SWAP2 PUSH2 0x10F1 JUMPI JUMPDEST POP DUP10 SWAP1 PUSH2 0xCFF JUMP JUMPDEST DUP10 SWAP1 PUSH2 0xD61 JUMP JUMPDEST SWAP5 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x109B PUSH0 DUP12 SWAP4 SWAP7 PUSH2 0x10A6 PUSH2 0x108F PUSH2 0x72 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x64C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x10EC JUMPI PUSH2 0xFEE SWAP3 PUSH2 0x10C0 JUMPI JUMPDEST POP PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0x10E0 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x10E5 JUMPI JUMPDEST PUSH2 0x10D8 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x10BA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10CE JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x1111 SWAP2 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1117 JUMPI JUMPDEST PUSH2 0x1109 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0x105C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10FF JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST PUSH2 0x114C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1152 JUMPI JUMPDEST PUSH2 0x1144 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0xF52 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x113A JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x117E SWAP2 POP DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x1184 JUMPI JUMPDEST PUSH2 0x1176 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0xF13 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x116C JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x11B1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x11B7 JUMPI JUMPDEST PUSH2 0x11A9 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0xEB9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x119F JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x11E4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x11EA JUMPI JUMPDEST PUSH2 0x11DC DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0xE6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120D PUSH2 0x1208 PUSH2 0x1212 SWAP3 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x121F PUSH1 0xA PUSH2 0x11F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x122B DUP2 PUSH2 0xC66 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x123F PUSH2 0x1239 PUSH0 PUSH2 0xA07 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x1249 JUMPI JUMPDEST POP POP JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1253 PUSH2 0xC35 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1267 PUSH2 0x1261 DUP7 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x144C JUMPI PUSH2 0x1280 PUSH2 0x127B DUP5 DUP4 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xA83 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x129B PUSH2 0x1295 PUSH2 0x1290 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x12FD JUMPI PUSH2 0x12CF SWAP2 POP PUSH2 0x12B0 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE PUSH2 0x12C3 PUSH2 0x12BD PUSH0 PUSH2 0xA07 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x12D4 JUMPI JUMPDEST JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x1254 JUMP JUMPDEST PUSH2 0x12F8 PUSH2 0x12E8 PUSH2 0x12E3 PUSH0 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x12F1 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE SWAP1 PUSH2 0x15ED JUMP JUMPDEST PUSH2 0x12C9 JUMP JUMPDEST PUSH2 0x1345 PUSH1 0x20 PUSH2 0x1313 PUSH2 0x130E DUP6 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x133A PUSH2 0x1325 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST SWAP3 PUSH2 0x132E PUSH2 0x72 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x64C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xC1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1447 JUMPI PUSH0 SWAP2 PUSH2 0x1419 JUMPI JUMPDEST POP SWAP2 DUP3 PUSH2 0x1373 PUSH2 0x136D PUSH2 0x1368 PUSH2 0x1215 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x1384 JUMPI JUMPDEST POP PUSH2 0x12CF SWAP2 POP PUSH2 0x12CA JUMP JUMPDEST PUSH2 0x1397 PUSH2 0x1392 PUSH1 0x20 SWAP3 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x13C4 PUSH0 PUSH2 0x13AB DUP2 PUSH2 0x5DA JUMP JUMPDEST SWAP4 SWAP7 PUSH2 0x13CF PUSH2 0x13B8 PUSH2 0x72 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x64C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1414 JUMPI PUSH2 0x12CF SWAP3 PUSH2 0x13E8 JUMPI JUMPDEST PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x1408 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x140D JUMPI JUMPDEST PUSH2 0x1400 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x13E3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13F6 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x143A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1440 JUMPI JUMPDEST PUSH2 0x1432 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0x1357 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST POP SWAP2 POP POP PUSH0 DUP1 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x1460 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1497 PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x14A0 DUP2 PUSH2 0x1463 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x14B9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x148A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x14C3 JUMPI JUMP JUMPDEST PUSH2 0x14CB PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14FB PUSH1 0x4 DUP3 ADD PUSH2 0x14A4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1508 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x151B PUSH0 DUP1 SWAP3 PUSH2 0x150B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1528 SWAP1 PUSH2 0x1510 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 SWAP2 PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1585 PUSH1 0x3A PUSH1 0x40 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x158E DUP2 PUSH2 0x152B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x15A7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1578 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x15B1 JUMPI JUMP JUMPDEST PUSH2 0x15B9 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x15E9 PUSH1 0x4 DUP3 ADD PUSH2 0x1592 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1648 SWAP3 PUSH2 0x1622 DUP3 SWAP4 PUSH2 0x161D PUSH2 0x1603 ADDRESS PUSH2 0x1457 JUMP JUMPDEST BALANCE PUSH2 0x1616 PUSH2 0x1610 DUP7 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x14BC JUMP JUMPDEST PUSH2 0x14FF JUMP JUMPDEST SWAP1 PUSH2 0x162B PUSH2 0x72 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1636 DUP2 PUSH2 0x151F JUMP JUMPDEST SUB SWAP3 GAS CALL PUSH2 0x1642 PUSH2 0xAB9 JUMP JUMPDEST POP PUSH2 0x15AA JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 0xB0 0xB6 0xA5 DIV PUSH23 0x14F7DA4310B4DA483B8E1C4168E4E72E0645B14B479EA3 0xA8 PUSH29 0x3E64736F6C634300081900330000000000000000000000000000000000 ","sourceMap":"1789:4408:58:-:0;;;;;;;;;-1:-1:-1;1789:4408:58;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1872:20::-;;;;;:::i;:::-;;:::o;1789:4408::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4086:85::-;4129:7;;:::i;:::-;4156;;;;:::i;:::-;4149:14;:::o;1789:4408::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3791:158::-;3833:7;;:::i;:::-;3900;3878:44;;:42;:30;3900:7;;;:::i;:::-;3878:30;:::i;:::-;:42;:::i;:::-;;:44;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;3860:79;:63;:81;3878:44;3860:81;3878:44;;;;;3791:158;3860:63;;:::i;:::-;:79;:::i;:::-;;:81;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3791:158;3853:88;;:::o;3860:81::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3878:44::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1789:4408::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2388:171::-;2506:14;2388:171;2444:51;2452:5;;;:::i;:::-;:19;;2461:10;2469:1;2461:10;:::i;:::-;2452:19;:::i;:::-;;;:::i;:::-;;2444:51;:::i;:::-;2506:14;;:::i;:::-;2531:20;2541:10;2531:20;;:::i;:::-;2388:171::o;1789:4408::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2818:118;;2927:1;2818:118;2851:65;2859:10;:25;;2873:11;;:::i;:::-;2859:25;:::i;:::-;;;:::i;:::-;;2851:65;:::i;:::-;2927:1;:::i;:::-;2818:118::o;1789:4408::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3283:373;;3388:10;3397:1;3388:10;:::i;:::-;3418:3;3400:1;:16;;3404:12;:5;:12;:::i;:::-;3400:16;:::i;:::-;;;:::i;:::-;;;;;3418:3;3457:5;3526:37;3457:54;:5;:11;:5;:8;:5;3463:1;3457:8;;:::i;:::-;;:11;;:::i;:::-;3481:14;;:8;:5;3487:1;3481:8;;:::i;:::-;;:14;;:::i;:::-;3497:13;:8;:5;3503:1;3497:8;;:::i;:::-;;:13;;3457:54;;;;;;;;;;;:::i;:::-;;3526:37;:::i;:::-;3418:3;:::i;:::-;3388:10;;3400:16;;;;3635:12;3400:16;3597:12;;;:::i;:::-;3635;:::i;:::-;3283:373::o;:::-;;;;;:::i;:::-;:::o;1789:4408::-;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;1929:78::-;1965:42;1929:78;:::o;1965:42::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;4336:869::-;;4455:44;;:42;:30;4477:7;;;:::i;:::-;4455:30;:::i;:::-;:42;:::i;:::-;;:44;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;4437:63;4455:44;;;;;4336:869;4437:63;;:::i;:::-;4528:8;:26;;:24;:8;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4336:869;4511:43;4565:14;;;:::i;:::-;4607:8;:21;;:19;:8;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;4657:20;:22;4607:21;4657:22;4607:21;;;;;4336:869;4590:38;4657:8;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4336:869;4639:40;4707:1;4695:13;4707:1;4695:13;:::i;:::-;4735:3;4710:1;:23;;4714:19;:12;:19;:::i;:::-;4710:23;:::i;:::-;;;:::i;:::-;;;;;4771:15;;:12;4784:1;4771:15;;:::i;:::-;;:::i;:::-;4805:5;;:16;;4814:7;;:::i;:::-;4805:16;:::i;:::-;;;:::i;:::-;;4801:386;;;;4735:3;4860:4;;4938:6;4851:42;4852:30;:13;4860:4;4852:13;:::i;:::-;:21;4876:6;4852:30;;:::i;:::-;4886:7;4851:42;;:::i;:::-;4912:15;4920:6;4912:15;:::i;:::-;4938:6;:::i;:::-;4801:386;4735:3;:::i;:::-;4695:13;;4801:386;5004:46;;:31;:21;5019:5;5004:21;:::i;:::-;:31;:::i;:::-;;5044:4;5004:46;5036:13;5044:4;5036:13;:::i;:::-;5004:46;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;5125:21;5078:28;5079:16;5125:30;5004:46;5125;5004;;;;;4801:386;4986:64;5089:6;5079:16;;:::i;:::-;5099:7;5078:28;;:::i;:::-;5140:5;5125:21;:::i;:::-;:30;:::i;:::-;;;5156:6;5125:46;;5156:6;5164;5125:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4735:3;5125:46;;;4801:386;;;;5125:46;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5004:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4710:23::-;;;;;;;4336:869::o;4657:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4607:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4528:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4455:44::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1789:4408::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2014:36::-;2048:2;;;:::i;:::-;2014:36;:::o;5352:842::-;5455:19;:12;:19;:::i;:::-;5489:18;;:22;;5510:1;5489:22;:::i;:::-;;;:::i;:::-;;5485:702;;5352:842;;;:::o;5485:702::-;5533:9;;;;:::i;:::-;;5544:1;:22;;5548:18;5544:22;:::i;:::-;;;:::i;:::-;;;;;5605:15;;:12;5618:1;5605:15;;:::i;:::-;;:::i;:::-;5643:5;;:16;;5652:7;;:::i;:::-;5643:16;:::i;:::-;;;:::i;:::-;;5639:446;;;;6138:3;5696:4;;5688:13;5696:4;5688:13;:::i;:::-;:21;:25;;5712:1;5688:25;:::i;:::-;;;:::i;:::-;;5684:129;;5639:446;;6138:3;:::i;:::-;5533:9;;5684:129;5767:21;5742:14;5750:5;;;:::i;:::-;5742:14;:::i;:::-;5767:13;5775:4;5767:13;:::i;:::-;:21;;;:::i;:::-;5684:129;;5639:446;5879:46;;:31;:21;5894:5;5879:21;:::i;:::-;:31;:::i;:::-;;5919:4;5879:46;5911:13;5919:4;5911:13;:::i;:::-;5879:46;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;5639:446;5861:64;5952:7;;:15;;5962:5;;:::i;:::-;5952:15;:::i;:::-;;;:::i;:::-;;5948:118;;5639:446;;6138:3;5639:446;;;;5948:118;5996:30;:21;:46;6011:5;5996:21;:::i;:::-;:30;:::i;:::-;;;6027:5;5996:46;;6027:5;;;:::i;:::-;6034:7;5996:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6138:3;5996:46;;;5948:118;;;5996:46;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5879:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5544:22::-;;;;;5485:702;;;;1789:4408;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2376:303:45;2555:33;2595:78;2376:303;2555:14;2376:303;;2454:73;2462:13;2470:4;2462:13;:::i;:::-;:21;:31;;2487:6;2462:31;:::i;:::-;;;:::i;:::-;;;2454:73;:::i;:::-;2555:14;:::i;:::-;:29;:33;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;2595:78;:::i;:::-;2376:303::o"},"gasEstimates":{"creation":{"codeDepositCost":"1152000","executionCost":"infinite","totalCost":"infinite"},"external":{"execute((address,uint256,bytes)[],address[])":"infinite","getFactory()":"2676","getRouter()":"infinite","initialize(address)":"infinite","owner()":"2681"},"internal":{"_chargeFees(address[] memory)":"infinite","_returnTokens(address[] memory)":"infinite"}},"methodIdentifiers":{"execute((address,uint256,bytes)[],address[])":"eedc3c50","getFactory()":"88cc58e4","getRouter()":"b0f479a1","initialize(address)":"c4d66de8","owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct BaluniV1Agent.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensReturn\",\"type\":\"address[]\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract represents the BaluniV1Agent contract.\",\"kind\":\"dev\",\"methods\":{\"execute((address,uint256,bytes)[],address[])\":{\"details\":\"Executes a batch of calls and performs token operations.\",\"params\":{\"calls\":\"An array of Call structs representing the calls to be executed.\",\"tokensReturn\":\"An array of token addresses to return after the batch call.\"}},\"getFactory()\":{\"details\":\"Returns the address of the factory contract.\",\"returns\":{\"_0\":\"The address of the factory contract.\"}},\"getRouter()\":{\"details\":\"Returns the address of the router contract.\",\"returns\":{\"_0\":\"The address of the router contract.\"}},\"initialize(address)\":{\"details\":\"Initializes the contract with the specified owner and router addresses.\",\"params\":{\"_owner\":\"The address of the contract owner.\"}}},\"title\":\"BaluniV1Agent\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute((address,uint256,bytes)[],address[])\":{\"notice\":\"Only the router contract is allowed to execute this function.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/orchestators/BaluniV1Agent.sol\":\"BaluniV1Agent\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1AgentFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1AgentFactory {\\r\\n    function getAgentAddress(address user) external view returns (address);\\r\\n\\r\\n    function getOrCreateAgent(address user) external returns (address);\\r\\n\\r\\n    function getRegistry() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x7de0683d187e1b0dbbffde17f943b24e1481351949e7b292a9bff33cdc4b3d71\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/libs/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\r\\n\\r\\npragma solidity ^0.8.1;\\r\\n\\r\\n/**\\r\\n * @dev Collection of functions related to the address type\\r\\n */\\r\\nlibrary AddressUpgradeable {\\r\\n  /**\\r\\n   * @dev Returns true if `account` is a contract.\\r\\n   *\\r\\n   * [IMPORTANT]\\r\\n   * ====\\r\\n   * It is unsafe to assume that an address for which this function returns\\r\\n   * false is an externally-owned account (EOA) and not a contract.\\r\\n   *\\r\\n   * Among others, `isContract` will return false for the following\\r\\n   * types of addresses:\\r\\n   *\\r\\n   *  - an externally-owned account\\r\\n   *  - a contract in construction\\r\\n   *  - an address where a contract will be created\\r\\n   *  - an address where a contract lived, but was destroyed\\r\\n   * ====\\r\\n   *\\r\\n   * [IMPORTANT]\\r\\n   * ====\\r\\n   * You shouldn't rely on `isContract` to protect against flash loan attacks!\\r\\n   *\\r\\n   * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\r\\n   * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\r\\n   * constructor.\\r\\n   * ====\\r\\n   */\\r\\n  function isContract(address account) internal view returns (bool) {\\r\\n    // This method relies on extcodesize/address.code.length, which returns 0\\r\\n    // for contracts in construction, since the code is only stored at the end\\r\\n    // of the constructor execution.\\r\\n\\r\\n    return account.code.length > 0;\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\r\\n   * `recipient`, forwarding all available gas and reverting on errors.\\r\\n   *\\r\\n   * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\r\\n   * of certain opcodes, possibly making contracts go over the 2300 gas limit\\r\\n   * imposed by `transfer`, making them unable to receive funds via\\r\\n   * `transfer`. {sendValue} removes this limitation.\\r\\n   *\\r\\n   * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\r\\n   *\\r\\n   * IMPORTANT: because control is transferred to `recipient`, care must be\\r\\n   * taken to not create reentrancy vulnerabilities. Consider using\\r\\n   * {ReentrancyGuard} or the\\r\\n   * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\r\\n   */\\r\\n  function sendValue(address payable recipient, uint256 amount) internal {\\r\\n    require(address(this).balance >= amount, 'Address: insufficient balance');\\r\\n\\r\\n    (bool success, ) = recipient.call{value: amount}('');\\r\\n    require(success, 'Address: unable to send value, recipient may have reverted');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Performs a Solidity function call using a low level `call`. A\\r\\n   * plain `call` is an unsafe replacement for a function call: use this\\r\\n   * function instead.\\r\\n   *\\r\\n   * If `target` reverts with a revert reason, it is bubbled up by this\\r\\n   * function (like regular Solidity function calls).\\r\\n   *\\r\\n   * Returns the raw returned data. To convert to the expected return value,\\r\\n   * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\r\\n   *\\r\\n   * Requirements:\\r\\n   *\\r\\n   * - `target` must be a contract.\\r\\n   * - calling `target` with `data` must not revert.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\r\\n    return functionCall(target, data, 'Address: low-level call failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\r\\n   * `errorMessage` as a fallback revert reason when `target` reverts.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\r\\n    return functionCallWithValue(target, data, 0, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\r\\n   * but also transferring `value` wei to `target`.\\r\\n   *\\r\\n   * Requirements:\\r\\n   *\\r\\n   * - the calling contract must have an ETH balance of at least `value`.\\r\\n   * - the called Solidity function must be `payable`.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\r\\n    return functionCallWithValue(target, data, value, 'Address: low-level call with value failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\r\\n   * with `errorMessage` as a fallback revert reason when `target` reverts.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCallWithValue(\\r\\n    address target,\\r\\n    bytes memory data,\\r\\n    uint256 value,\\r\\n    string memory errorMessage\\r\\n  ) internal returns (bytes memory) {\\r\\n    require(address(this).balance >= value, 'Address: insufficient balance for call');\\r\\n    require(isContract(target), 'Address: call to non-contract');\\r\\n\\r\\n    (bool success, bytes memory returndata) = target.call{value: value}(data);\\r\\n    return verifyCallResult(success, returndata, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\r\\n   * but performing a static call.\\r\\n   *\\r\\n   * _Available since v3.3._\\r\\n   */\\r\\n  function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\r\\n    return functionStaticCall(target, data, 'Address: low-level static call failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\r\\n   * but performing a static call.\\r\\n   *\\r\\n   * _Available since v3.3._\\r\\n   */\\r\\n  function functionStaticCall(\\r\\n    address target,\\r\\n    bytes memory data,\\r\\n    string memory errorMessage\\r\\n  ) internal view returns (bytes memory) {\\r\\n    require(isContract(target), 'Address: static call to non-contract');\\r\\n\\r\\n    (bool success, bytes memory returndata) = target.staticcall(data);\\r\\n    return verifyCallResult(success, returndata, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\r\\n   * revert reason using the provided one.\\r\\n   *\\r\\n   * _Available since v4.3._\\r\\n   */\\r\\n  function verifyCallResult(\\r\\n    bool success,\\r\\n    bytes memory returndata,\\r\\n    string memory errorMessage\\r\\n  ) internal pure returns (bytes memory) {\\r\\n    if (success) {\\r\\n      return returndata;\\r\\n    } else {\\r\\n      // Look for revert reason and bubble it up if present\\r\\n      if (returndata.length > 0) {\\r\\n        // The easiest way to bubble the revert reason is using memory via assembly\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n          let returndata_size := mload(returndata)\\r\\n          revert(add(32, returndata), returndata_size)\\r\\n        }\\r\\n      } else {\\r\\n        revert(errorMessage);\\r\\n      }\\r\\n    }\\r\\n  }\\r\\n}\\r\\n\",\"keccak256\":\"0x0d727e8de593fdee1ddeb0f7db69d83db1948ceaa9286d1b03491809bc19fa0f\",\"license\":\"MIT\"},\"contracts/orchestators/BaluniV1Agent.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '../libs/AddressUpgradeable.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1AgentFactory.sol';\\r\\n\\r\\n/**\\r\\n * @title BaluniV1Agent\\r\\n * @dev This contract represents the BaluniV1Agent contract.\\r\\n */\\r\\ncontract BaluniV1Agent {\\r\\n    using AddressUpgradeable for address payable;\\r\\n\\r\\n    address public owner;\\r\\n    address private factory;\\r\\n    address internal constant _NATIVE = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\\r\\n    uint256 internal constant _DUST = 10;\\r\\n\\r\\n    struct Call {\\r\\n        address to;\\r\\n        uint256 value;\\r\\n        bytes data;\\r\\n    }\\r\\n\\r\\n    constructor(address _factory) {\\r\\n        factory = _factory;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Initializes the contract with the specified owner and router addresses.\\r\\n     * @param _owner The address of the contract owner.\\r\\n     */\\r\\n    function initialize(address _owner) external {\\r\\n        require(owner == address(0), 'Already initialized');\\r\\n        owner = _owner;\\r\\n        factory = msg.sender;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Modifier that allows a function to be called only by the router.\\r\\n     * @notice This modifier checks if the caller is the router contract.\\r\\n     * @notice If the caller is not the router, the function call will revert.\\r\\n     */\\r\\n    modifier onlyRouter() {\\r\\n        require(msg.sender == getRouter(), 'Callable only by the router');\\r\\n        _;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Executes a batch of calls and performs token operations.\\r\\n     * @param calls An array of Call structs representing the calls to be executed.\\r\\n     * @param tokensReturn An array of token addresses to return after the batch call.\\r\\n     * @notice Only the router contract is allowed to execute this function.\\r\\n     */\\r\\n    function execute(Call[] memory calls, address[] memory tokensReturn) external onlyRouter {\\r\\n        for (uint i = 0; i < calls.length; i++) {\\r\\n            (bool success, ) = calls[i].to.call{value: calls[i].value}(calls[i].data);\\r\\n            require(success, 'Batch call failed');\\r\\n        }\\r\\n        _chargeFees(tokensReturn);\\r\\n        _returnTokens(tokensReturn);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the address of the router contract.\\r\\n     * @return The address of the router contract.\\r\\n     */\\r\\n    function getRouter() public view returns (address) {\\r\\n        return IBaluniV1Registry(IBaluniV1AgentFactory(factory).getRegistry()).getBaluniRouter();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the address of the factory contract.\\r\\n     * @return The address of the factory contract.\\r\\n     */\\r\\n    function getFactory() public view returns (address) {\\r\\n        return factory;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to charge fees for the tokens returned.\\r\\n     * @param tokensReturn The array of tokens to charge fees for.\\r\\n     */\\r\\n    function _chargeFees(address[] memory tokensReturn) internal {\\r\\n        IBaluniV1Registry registry = IBaluniV1Registry(IBaluniV1AgentFactory(factory).getRegistry());\\r\\n        address router = registry.getBaluniRouter();\\r\\n        uint256 amount;\\r\\n        uint256 bpsFee = registry.getBPS_FEE();\\r\\n        uint256 bpsBase = registry.getBPS_BASE();\\r\\n        for (uint256 i = 0; i < tokensReturn.length; i++) {\\r\\n            address token = tokensReturn[i];\\r\\n            if (token == _NATIVE) {\\r\\n                amount = (address(this).balance * bpsFee) / bpsBase;\\r\\n                payable(router).sendValue(amount);\\r\\n            } else {\\r\\n                uint256 balance = IERC20Metadata(token).balanceOf(address(this));\\r\\n                amount = (balance * bpsFee) / bpsBase;\\r\\n                IERC20Metadata(token).transfer(router, amount);\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to return tokens to the owner.\\r\\n     * @param tokensReturn The array of tokens to return.\\r\\n     */\\r\\n    function _returnTokens(address[] memory tokensReturn) internal {\\r\\n        uint256 tokensReturnLength = tokensReturn.length;\\r\\n        if (tokensReturnLength > 0) {\\r\\n            for (uint256 i; i < tokensReturnLength; ) {\\r\\n                address token = tokensReturn[i];\\r\\n                if (token == _NATIVE) {\\r\\n                    if (address(this).balance > 0) {\\r\\n                        payable(owner).sendValue(address(this).balance);\\r\\n                    }\\r\\n                } else {\\r\\n                    uint256 balance = IERC20Metadata(token).balanceOf(address(this));\\r\\n                    if (balance > _DUST) {\\r\\n                        IERC20Metadata(token).transfer(owner, balance);\\r\\n                    }\\r\\n                }\\r\\n\\r\\n                unchecked {\\r\\n                    ++i;\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0xfb12c39d4dc0b1c5e0e1f3ad106632250c66ccf6f60d9c40c8c473606b362212\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":11644,"contract":"contracts/orchestators/BaluniV1Agent.sol:BaluniV1Agent","label":"owner","offset":0,"slot":"0","type":"t_address"},{"astId":11646,"contract":"contracts/orchestators/BaluniV1Agent.sol:BaluniV1Agent","label":"factory","offset":0,"slot":"1","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{"execute((address,uint256,bytes)[],address[])":{"notice":"Only the router contract is allowed to execute this function."}},"version":1}}},"contracts/orchestators/BaluniV1AgentFactory.sol":{"BaluniV1AgentFactory":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"agent","type":"address"}],"name":"AgentCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newRegistry","type":"address"}],"name":"changeRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeRegistryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getAgentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getOrCreateAgent","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"uint64","name":"version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userAgents","outputs":[{"internalType":"contract BaluniV1Agent","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"changeImplementation()":{"details":"Changes the implementation of the BaluniV1Agent contract. Only the contract owner can call this function. Creates a new instance of BaluniV1Agent and updates the implementation address."},"getAgentAddress(address)":{"details":"Retrieves the address of the BaluniV1Agent contract associated with a user.","params":{"user":"The address of the user."},"returns":{"_0":"The address of the BaluniV1Agent contract associated with the user."}},"getOrCreateAgent(address)":{"details":"Returns the address of an existing agent for the given user, or creates a new agent if one doesn't exist.","params":{"user":"The address of the user."},"returns":{"_0":"The address of the agent."}},"initialize(address)":{"details":"Initializes the contract by calling the initializers of the parent contracts."},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":79,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1AgentFactory":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":135,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":125,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":115,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":93,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":90,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b613a2861009482396080518181816116c001528181611745015261194a0152613a2890f35b6043565b60405190565b5f80fd5b604d6087565b565b60018060a01b031690565b90565b606c6068607092604f565b605a565b604f565b90565b607a90605d565b90565b6084906073565b90565b608e30607d565b60805256fe60806040526004361015610013575b610922565b61001d5f3561011c565b80630889e14c1461011757806315554c551461011257806327d54a921461010d5780634f1ef2861461010857806352d1902d146101035780635ab1bd53146100fe5780636c6be5f3146100f9578063715018a6146100f45780637811a785146100ef5780637b103999146100ea5780638da5cb5b146100e55780638f2248bc146100e05780639b76a5cd146100db578063ad3cb1cc146100d6578063c4d66de8146100d15763f2fde38b0361000e576108ef565b6108bc565b610887565b610756565b610722565b610690565b61065b565b6105aa565b6104a0565b61046d565b610438565b610403565b6103a5565b610227565b6101d2565b61019f565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61015690610134565b90565b6101628161014d565b0361016957565b5f80fd5b9050359061017a82610159565b565b9060208282031261019557610192915f0161016d565b90565b61012c565b5f0190565b346101cd576101b76101b236600461017c565b6109c3565b6101bf610122565b806101c98161019a565b0390f35b610128565b34610200576101ea6101e536600461017c565b6109f6565b6101f2610122565b806101fc8161019a565b0390f35b610128565b61020e9061014d565b9052565b9190610225905f60208501940190610205565b565b346102575761025361024261023d36600461017c565b610a2b565b61024a610122565b91829182610212565b0390f35b610128565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906102a590610264565b810190811067ffffffffffffffff8211176102bf57604052565b61026e565b906102d76102d0610122565b928361029b565b565b67ffffffffffffffff81116102f7576102f3602091610264565b0190565b61026e565b90825f939282370152565b9092919261031c610317826102d9565b6102c4565b9381855260208501908284011161033857610336926102fc565b565b610260565b9080601f8301121561035b5781602061035893359101610307565b90565b61025c565b9190916040818403126103a057610379835f830161016d565b92602082013567ffffffffffffffff811161039b57610398920161033d565b90565b610130565b61012c565b6103b96103b3366004610360565b90610a7b565b6103c1610122565b806103cb8161019a565b0390f35b5f9103126103d957565b61012c565b90565b6103ea906103de565b9052565b9190610401905f602085019401906103e1565b565b34610433576104133660046103cf565b61042f61041e610af6565b610426610122565b918291826103ee565b0390f35b610128565b34610468576104483660046103cf565b610464610453610b2a565b61045b610122565b91829182610212565b0390f35b610128565b3461049b5761047d3660046103cf565b610485610bfe565b61048d610122565b806104978161019a565b0390f35b610128565b346104ce576104b03660046103cf565b6104b8610c58565b6104c0610122565b806104ca8161019a565b0390f35b610128565b90565b6104ea6104e56104ef92610134565b6104d3565b610134565b90565b6104fb906104d6565b90565b610507906104f2565b90565b90610514906104fe565b5f5260205260405f2090565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61054d9060086105529302610520565b610524565b90565b90610560915461053d565b90565b610579906105746001915f9261050a565b610555565b90565b610585906104f2565b90565b6105919061057c565b9052565b91906105a8905f60208501940190610588565b565b346105da576105d66105c56105c036600461017c565b610563565b6105cd610122565b91829182610595565b0390f35b610128565b73ffffffffffffffffffffffffffffffffffffffff1690565b61060890600861060d9302610520565b6105df565b90565b9061061b91546105f8565b90565b61062a60025f90610610565b90565b610636906104f2565b90565b6106429061062d565b9052565b9190610659905f60208501940190610639565b565b3461068b5761066b3660046103cf565b61068761067661061e565b61067e610122565b91829182610646565b0390f35b610128565b346106c0576106a03660046103cf565b6106bc6106ab610c9c565b6106b3610122565b91829182610212565b0390f35b610128565b67ffffffffffffffff1690565b6106db816106c5565b036106e257565b5f80fd5b905035906106f3826106d2565b565b919060408382031261071d578061071161071a925f860161016d565b936020016106e6565b90565b61012c565b346107515761073b6107353660046106f5565b90610f63565b610743610122565b8061074d8161019a565b0390f35b610128565b346107865761078261077161076c36600461017c565b611178565b610779610122565b91829182610212565b0390f35b610128565b67ffffffffffffffff81116107a9576107a5602091610264565b0190565b61026e565b906107c06107bb8361078b565b6102c4565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6107f660056107ae565b90610803602083016107c5565b565b61080d6107ec565b90565b610818610805565b90565b610823610810565b90565b5190565b60209181520190565b90825f9392825e0152565b61085d61086660209361086b9361085481610826565b9384809361082a565b95869101610833565b610264565b0190565b6108849160208201915f81840391015261083e565b90565b346108b7576108973660046103cf565b6108b36108a261081b565b6108aa610122565b9182918261086f565b0390f35b610128565b346108ea576108d46108cf36600461017c565b61159a565b6108dc610122565b806108e68161019a565b0390f35b610128565b3461091d5761090761090236600461017c565b61162a565b61090f610122565b806109198161019a565b0390f35b610128565b5f80fd5b61093790610932611635565b6109ae565b565b610942906104d6565b90565b61094e90610939565b90565b5f1b90565b9061097573ffffffffffffffffffffffffffffffffffffffff91610951565b9181191691161790565b61098890610939565b90565b90565b906109a361099e6109aa9261097f565b61098b565b8254610956565b9055565b6109ba6109c191610945565b600261098e565b565b6109cc90610926565b565b6109df906109da611635565b6109e1565b565b6109ed6109f491610945565b600261098e565b565b6109ff906109ce565b565b5f90565b5f1c90565b610a16610a1b91610a05565b610524565b90565b610a289054610a0a565b90565b610a4a610a45610a4f92610a3d610a01565b50600161050a565b610a1e565b61057c565b90565b90610a6491610a5f6116af565b610a66565b565b90610a7991610a7481611781565b6117fb565b565b90610a8591610a52565b565b5f90565b610a9c90610a97611939565b610aea565b90565b90565b610ab6610ab1610abb92610a9f565b610951565b6103de565b90565b610ae77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610aa2565b90565b50610af3610abe565b90565b610b06610b01610a87565b610a8b565b90565b610b15610b1a91610a05565b6105df565b90565b610b279054610b09565b90565b610b32610a01565b50610b45610b406002610b1d565b61062d565b90565b610b50611635565b610b58610b99565b565b610b63906104f2565b90565b610b6e610122565b3d5f823e3d90fd5b90565b90610b8e610b89610b95926104fe565b610b76565b8254610956565b9055565b610ba230610b5a565b610baa610122565b9061181d820182811067ffffffffffffffff821117610bf9578291610bd69161181d6121d68539610212565b03905ff08015610bf457610bec610bf29161057c565b5f610b79565b565b610b66565b61026e565b610c06610b48565b565b610c10611635565b610c18610c45565b565b90565b610c31610c2c610c3692610c1a565b6104d3565b610134565b90565b610c4290610c1d565b90565b610c56610c515f610c39565b6119b7565b565b610c60610c08565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b610c87610c8c91610a05565b610c62565b90565b610c999054610c7b565b90565b610ca4610a01565b50610cb75f610cb1611a23565b01610c8f565b90565b60401c90565b60ff1690565b610cd2610cd791610cba565b610cc0565b90565b610ce49054610cc6565b90565b67ffffffffffffffff1690565b610d00610d0591610a05565b610ce7565b90565b610d129054610cf4565b90565b90610d2867ffffffffffffffff91610951565b9181191691161790565b610d46610d41610d4b926106c5565b6104d3565b6106c5565b90565b90565b90610d66610d61610d6d92610d32565b610d4e565b8254610d15565b9055565b60401b90565b90610d8b68ff000000000000000091610d71565b9181191691161790565b151590565b610da390610d95565b90565b90565b90610dbe610db9610dc592610d9a565b610da6565b8254610d77565b9055565b610dd2906106c5565b9052565b9190610de9905f60208501940190610dc9565b565b908091610df6611a47565b90610e025f8301610cda565b8015610eb3575b610e7757610e3c92610e3391610e21865f8601610d51565b610e2e60015f8601610da9565b610ed8565b5f809101610da9565b610e727fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291610e69610122565b91829182610dd6565b0390a1565b610e7f610122565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280610eaf6004820161019a565b0390fd5b50610ebf5f8301610d08565b610ed1610ecb866106c5565b916106c5565b1015610e09565b610efe9150610ef790610eea33611a89565b610ef2611a9e565b610945565b600261098e565b610f0730610b5a565b610f0f610122565b9061181d820182811067ffffffffffffffff821117610f5e578291610f3b9161181d6121d68539610212565b03905ff08015610f5957610f51610f579161057c565b5f610b79565b565b610b66565b61026e565b90610f6d91610deb565b565b5f7f4167656e7420666163746f7279206e6f74207365740000000000000000000000910152565b610fa3601560209261082a565b610fac81610f6f565b0190565b610fc59060208101905f818303910152610f96565b90565b15610fcf57565b610fd7610122565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061100760048201610fb0565b0390fd5b60601b90565b61101a9061100b565b90565b61102690611011565b90565b61103561103a9161014d565b61101d565b9052565b61104a81601493611029565b0190565b60200190565b5190565b60207f7472616374000000000000000000000000000000000000000000000000000000917f4167656e74206372656174696f6e206661696c65642c206e6f74206120636f6e5f8201520152565b6110b2602560409261082a565b6110bb81611058565b0190565b6110d49060208101905f8183039101526110a5565b90565b156110de57565b6110e6610122565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611116600482016110bf565b0390fd5b611123906104d6565b90565b61112f9061111a565b90565b90565b9061114a61114561115192611126565b611132565b8254610956565b9055565b91602061117692949361116f60408201965f830190610205565b0190610205565b565b61124561124061124a9261118a610a01565b506111b861119730610b5a565b6111b16111ab6111a65f610c39565b61014d565b9161014d565b1415610fc8565b6111d36111e2826111c7610122565b9283916020830161103e565b6020820181038252038261029b565b6111f46111ee82611054565b9161104e565b2061121161120c6112076001859061050a565b610a1e565b61057c565b61122b6112256112205f610c39565b61014d565b9161014d565b1480156112cf575b61124d575b50600161050a565b610a1e565b61057c565b90565b611258908290611bb9565b61127161126c6112678361057c565b611ad5565b6110d7565b611286816112816001859061050a565b611135565b611290829161057c565b7f8c6e353968e7ffd60dba22ff7d2a4354af301f9d41858a35668e7292ec1301b6916112c66112bd610122565b92839283611155565b0390a15f611238565b506112f46112ef6112ea6112e56001869061050a565b610a1e565b61057c565b611ad5565b6113066113005f610d95565b91610d95565b14611233565b61132061131b61132592610c1a565b6104d3565b6106c5565b90565b90565b61133f61133a61134492611328565b6104d3565b6106c5565b90565b611350906104f2565b90565b90565b61136a61136561136f92610c1a565b6104d3565b611353565b90565b61137b9061132b565b9052565b9190611392905f60208501940190611372565b565b61139c611a47565b906113b16113ab5f8401610cda565b15610d95565b906113bd5f8401610d08565b806113d06113ca5f61130c565b916106c5565b148061150a575b906113eb6113e5600161132b565b916106c5565b14806114e2575b6113fd909115610d95565b90816114d1575b506114955761142d9061142261141a600161132b565b5f8601610d51565b82611483575b611511565b611435575b50565b611442905f809101610da9565b600161147a7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611471610122565b9182918261137f565b0390a15f611432565b61149060015f8601610da9565b611428565b61149d610122565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806114cd6004820161019a565b0390fd5b6114dc915015610d95565b5f611404565b506113fd6114ef30611347565b3b6115026114fc5f611356565b91611353565b1490506113f2565b50826113d7565b61152e6115359161152133611a89565b611529611a9e565b610945565b600261098e565b61153e30610b5a565b611546610122565b9061181d820182811067ffffffffffffffff8211176115955782916115729161181d6121d68539610212565b03905ff080156115905761158861158e9161057c565b5f610b79565b565b610b66565b61026e565b6115a390611394565b565b6115b6906115b1611635565b6115b8565b565b806115d36115cd6115c85f610c39565b61014d565b9161014d565b146115e3576115e1906119b7565b565b6116266115ef5f610c39565b6115f7610122565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b611633906115a5565b565b61163d610c9c565b61165661165061164b611ca5565b61014d565b9161014d565b0361165d57565b61169f611668611ca5565b611670610122565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b6116ac906104f2565b90565b6116b8306116a3565b6116ea6116e47f000000000000000000000000000000000000000000000000000000000000000061014d565b9161014d565b148015611734575b6116f857565b611700610122565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806117306004820161019a565b0390fd5b5061173d611cb2565b61176f6117697f000000000000000000000000000000000000000000000000000000000000000061014d565b9161014d565b14156116f2565b5061177f611635565b565b61178a90611776565b565b611795906104d6565b90565b6117a19061178c565b90565b6117ad906104f2565b90565b5f80fd5b60e01b90565b6117c3816103de565b036117ca57565b5f80fd5b905051906117db826117ba565b565b906020828203126117f6576117f3915f016117ce565b90565b61012c565b9190611829602061181361180e86611798565b6117a4565b6352d1902d90611821610122565b9384926117b4565b825281806118396004820161019a565b03915afa80915f92611909575b50155f1461189a57505090600161185b57505b565b61189690611867610122565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b92836118b56118af6118aa610abe565b6103de565b916103de565b036118ca576118c5929350611cd8565b611859565b611905846118d6610122565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016103ee565b0390fd5b61192b91925060203d8111611932575b611923818361029b565b8101906117dd565b905f611846565b503d611919565b611942306116a3565b61197461196e7f000000000000000000000000000000000000000000000000000000000000000061014d565b9161014d565b0361197b57565b611983610122565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806119b36004820161019a565b0390fd5b6119bf611a23565b6119d76119cd5f8301610c8f565b915f849101610b79565b90611a0b611a057f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936104fe565b916104fe565b91611a14610122565b80611a1e8161019a565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b611a7c90611a77611d61565b611a7e565b565b611a8790611e39565b565b611a9290611a6b565b565b611a9c611d61565b565b611aa6611a94565b565b5f90565b5f90565b63ffffffff1690565b611acd611ac8611ad292610c1a565b6104d3565b611ab0565b90565b611add611aa8565b50611ae6611aac565b503b611afa611af45f611ab9565b91611ab0565b1190565b5f90565b5f7f7265676973747279206e6f742073657400000000000000000000000000000000910152565b611b36601060209261082a565b611b3f81611b02565b0190565b611b589060208101905f818303910152611b29565b90565b15611b6257565b611b6a610122565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611b9a60048201611b43565b0390fd5b611ba79061111a565b90565b5f910312611bb457565b61012c565b611c0a90611bc5611afe565b50611bfc611bdb611bd66002610b1d565b61062d565b611bf5611bef611bea5f610c39565b61014d565b9161014d565b1415611b5b565b611c055f610c8f565b611ee0565b611c1b611c1682611b9e565b61057c565b9163c4d66de890833b15611ca057611c5293611c475f8094611c3b610122565b978895869485936117b4565b835260048301610212565b03925af1918215611c9b57611c6c92611c6f575b50611b9e565b90565b611c8e905f3d8111611c94575b611c86818361029b565b810190611baa565b5f611c66565b503d611c7c565b610b66565b6117b0565b611cad610a01565b503390565b611cba610a01565b50611cd55f611ccf611cca610abe565b611f6b565b01610c8f565b90565b90611ce282611f6e565b81611d0d7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916104fe565b90611d16610122565b80611d208161019a565b0390a2611d2c81611054565b611d3e611d385f611356565b91611353565b115f14611d5257611d4e9161207e565b505b565b5050611d5c611fe3565b611d50565b611d72611d6c6120ad565b15610d95565b611d7857565b611d80610122565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280611db06004820161019a565b0390fd5b611dc590611dc0611d61565b611dc7565b565b80611de2611ddc611dd75f610c39565b61014d565b9161014d565b14611df257611df0906119b7565b565b611e35611dfe5f610c39565b611e06610122565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b611e4290611db4565b565b5f7f455243313136373a2063726561746532206661696c6564000000000000000000910152565b611e78601760209261082a565b611e8181611e44565b0190565b611e9a9060208101905f818303910152611e6b565b90565b15611ea457565b611eac610122565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611edc60048201611e85565b0390fd5b603790611eeb610a01565b50604051907f3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000825260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201525ff590611f6982611f62611f5c611f575f610c39565b61014d565b9161014d565b1415611e9d565b565b90565b803b611f82611f7c5f611356565b91611353565b14611fa457611fa2905f611f9c611f97610abe565b611f6b565b01610b79565b565b611fdf90611fb0610122565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b34611ff6611ff05f611356565b91611353565b11611ffd57565b612005610122565b7fb398979f000000000000000000000000000000000000000000000000000000008152806120356004820161019a565b0390fd5b606090565b9061205061204b836102d9565b6102c4565b918252565b3d5f14612070576120653d61203e565b903d5f602084013e5b565b612078612039565b9061206e565b5f806120aa9361208c612039565b508390602081019051915af4906120a1612055565b909190916120cb565b90565b6120b5611aa8565b506120c85f6120c2611a47565b01610cda565b90565b906120df906120d8612039565b5015610d95565b5f146120eb575061216f565b6120f482611054565b6121066121005f611356565b91611353565b1480612154575b612115575090565b61215090612121610122565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b50803b6121696121635f611356565b91611353565b1461210d565b61217881611054565b61218a6121845f611356565b91611353565b115f1461219957805190602001fd5b6121a1610122565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806121d16004820161019a565b0390fdfe60806040523461002f576100196100146100f4565b61018f565b610021610034565b61168061019d823961168090f35b61003a565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100669061003e565b810190811060018060401b0382111761007e57604052565b610048565b9061009661008f610034565b928361005c565b565b5f80fd5b60018060a01b031690565b6100b09061009c565b90565b6100bc816100a7565b036100c357565b5f80fd5b905051906100d4826100b3565b565b906020828203126100ef576100ec915f016100c7565b90565b610098565b61011261181d8038038061010781610083565b9283398101906100d6565b90565b5f1b90565b9061012b60018060a01b0391610115565b9181191691161790565b90565b61014c6101476101519261009c565b610135565b61009c565b90565b61015d90610138565b90565b61016990610154565b90565b90565b9061018461017f61018b92610160565b61016c565b825461011a565b9055565b61019a90600161016f565b56fe60806040526004361015610013575b6105b9565b61001d5f3561006c565b806388cc58e4146100675780638da5cb5b14610062578063b0f479a11461005d578063c4d66de8146100585763eedc3c500361000e57610585565b61020f565b610190565b61015b565b6100d6565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261008a57565b61007c565b73ffffffffffffffffffffffffffffffffffffffff1690565b6100b19061008f565b90565b6100bd906100a8565b9052565b91906100d4905f602085019401906100b4565b565b34610106576100e6366004610080565b6101026100f16105e7565b6100f9610072565b918291826100c1565b0390f35b610078565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61013890600861013d930261010b565b61010f565b90565b9061014b9154610128565b90565b6101585f80610140565b90565b3461018b5761016b366004610080565b61018761017661014e565b61017e610072565b918291826100c1565b0390f35b610078565b346101c0576101a0366004610080565b6101bc6101ab6106b3565b6101b3610072565b918291826100c1565b0390f35b610078565b5f80fd5b6101d2816100a8565b036101d957565b5f80fd5b905035906101ea826101c9565b565b9060208282031261020557610202915f016101dd565b90565b61007c565b5f0190565b3461023d576102276102223660046101ec565b6108f9565b61022f610072565b806102398161020a565b0390f35b610078565b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061028790610246565b810190811067ffffffffffffffff8211176102a157604052565b610250565b906102b96102b2610072565b928361027d565b565b67ffffffffffffffff81116102d35760208091020190565b610250565b5f80fd5b5f80fd5b5f80fd5b90565b6102f0816102e4565b036102f757565b5f80fd5b90503590610308826102e7565b565b5f80fd5b67ffffffffffffffff811161032c57610328602091610246565b0190565b610250565b90825f939282370152565b9092919261035161034c8261030e565b6102a6565b9381855260208501908284011161036d5761036b92610331565b565b61030a565b9080601f830112156103905781602061038d9335910161033c565b90565b610242565b9190916060818403126103f9576103ac60606102a6565b926103b9815f84016101dd565b5f8501526103ca81602084016102fb565b6020850152604082013567ffffffffffffffff81116103f4576103ed9201610372565b6040830152565b6102e0565b6102dc565b92919061041261040d826102bb565b6102a6565b93818552602080860192028101918383116104695781905b838210610438575050505050565b813567ffffffffffffffff8111610464576020916104598784938701610395565b81520191019061042a565b610242565b6102d8565b9080601f8301121561048c57816020610489933591016103fe565b90565b610242565b67ffffffffffffffff81116104a95760208091020190565b610250565b909291926104c36104be82610491565b6102a6565b938185526020808601920283019281841161050057915b8383106104e75750505050565b602080916104f584866101dd565b8152019201916104da565b6102d8565b9080601f8301121561052357816020610520933591016104ae565b90565b610242565b919091604081840312610580575f81013567ffffffffffffffff811161057b578361055491830161046e565b92602082013567ffffffffffffffff8111610576576105739201610505565b90565b6101c5565b6101c5565b61007c565b346105b45761059e610598366004610528565b90610c29565b6105a6610072565b806105b08161020a565b0390f35b610078565b5f80fd5b5f90565b5f1c90565b6105d26105d7916105c1565b61010f565b90565b6105e490546105c6565b90565b6105ef6105bd565b506105fa60016105da565b90565b90565b61061461060f6106199261008f565b6105fd565b61008f565b90565b61062590610600565b90565b6106319061061c565b90565b61063d90610600565b90565b61064990610634565b90565b60e01b90565b9050519061065f826101c9565b565b9060208282031261067a57610677915f01610652565b90565b61007c565b610687610072565b3d5f823e3d90fd5b61069890610600565b90565b6106a49061068f565b90565b6106b090610634565b90565b6106bb6105bd565b506106f160206106db6106d66106d160016105da565b610628565b610640565b635ab1bd53906106e9610072565b93849261064c565b825281806107016004820161020a565b03915afa9081156107c75761072b610726610741936020935f9161079a575b5061069b565b6106a7565b6304cc732590610739610072565b93849261064c565b825281806107516004820161020a565b03915afa908115610795575f91610767575b5090565b610788915060203d811161078e575b610780818361027d565b810190610661565b5f610763565b503d610776565b61067f565b6107ba9150843d81116107c0575b6107b2818361027d565b810190610661565b5f610720565b503d6107a8565b61067f565b90565b6107e36107de6107e8926107cc565b6105fd565b61008f565b90565b6107f4906107cf565b90565b60209181520190565b5f7f416c726561647920696e697469616c697a656400000000000000000000000000910152565b61083460136020926107f7565b61083d81610800565b0190565b6108569060208101905f818303910152610827565b90565b1561086057565b610868610072565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061089860048201610841565b0390fd5b5f1b90565b906108c073ffffffffffffffffffffffffffffffffffffffff9161089c565b9181191691161790565b6108d390610634565b90565b90565b906108ee6108e96108f5926108ca565b6108d6565b82546108a1565b9055565b61092f906109296109095f6105da565b61092361091d6109185f6107eb565b6100a8565b916100a8565b14610859565b5f6108d9565b61093a3360016108d9565b565b5f7f43616c6c61626c65206f6e6c792062792074686520726f757465720000000000910152565b610970601b6020926107f7565b6109798161093c565b0190565b6109929060208101905f818303910152610963565b90565b1561099c57565b6109a4610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806109d46004820161097d565b0390fd5b90610a0591610a00336109fa6109f46109ef6106b3565b6100a8565b916100a8565b14610995565b610b7e565b565b610a1b610a16610a20926107cc565b6105fd565b6102e4565b90565b6001610a2f91016102e4565b90565b5190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90610a6d82610a32565b811015610a7e576020809102010190565b610a36565b610a8d90516100a8565b90565b610a9a90516102e4565b90565b90610aaf610aaa8361030e565b6102a6565b918252565b606090565b3d5f14610ad457610ac93d610a9d565b903d5f602084013e5b565b610adc610ab4565b90610ad2565b5f7f42617463682063616c6c206661696c6564000000000000000000000000000000910152565b610b1660116020926107f7565b610b1f81610ae2565b0190565b610b389060208101905f818303910152610b09565b90565b15610b4257565b610b4a610072565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610b7a60048201610b23565b0390fd5b91610b885f610a07565b5b80610ba4610b9e610b9987610a32565b6102e4565b916102e4565b1015610c1257610c0d90610c085f80610bc981610bc28a8790610a63565b5101610a83565b610be06020610bd98b8890610a63565b5101610a90565b6040610bed8b8890610a63565b51015190602082019151925af1610c02610ab9565b50610b3b565b610a23565b610b89565b509150610c2790610c2281610e11565b611222565b565b90610c33916109d8565b565b5f90565b90505190610c46826102e7565b565b90602082820312610c6157610c5e915f01610c39565b90565b61007c565b5190565b90610c7482610c66565b811015610c85576020809102010190565b610a36565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b610cab90610600565b90565b610cb790610ca2565b90565b610cc390610634565b90565b610ccf90610634565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610d0e610d14919392936102e4565b926102e4565b91610d208382026102e4565b928184041490151715610d2f57565b610cd2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b610d6d610d73916102e4565b916102e4565b908115610d7e570490565b610d34565b151590565b610d9181610d83565b03610d9857565b5f80fd5b90505190610da982610d88565b565b90602082820312610dc457610dc1915f01610d9c565b90565b61007c565b610dd2906102e4565b9052565b916020610df7929493610df060408201965f8301906100b4565b0190610dc9565b565b610e0290610600565b90565b610e0e90610df9565b90565b90610e476020610e31610e2c610e2760016105da565b610628565b610640565b635ab1bd5390610e3f610072565b93849261064c565b82528180610e576004820161020a565b03915afa80156111f157610e72915f916111c3575b5061069b565b91610e976020610e81856106a7565b6304cc732590610e8f610072565b93849261064c565b82528180610ea76004820161020a565b03915afa9081156111be575f91611190575b5092610ec3610c35565b50610ee86020610ed2836106a7565b6385462d6f90610ee0610072565b93849261064c565b82528180610ef86004820161020a565b03915afa801561118b57610f1a602091610f30935f9161115e575b50936106a7565b634f4608a290610f28610072565b93849261064c565b82528180610f406004820161020a565b03915afa908115611159575f9161112b575b5091610f5d5f610a07565b5b80610f79610f73610f6e85610c66565b6102e4565b916102e4565b101561112357610f92610f8d838390610c6a565b610a83565b9081610fad610fa7610fa2610c8a565b6100a8565b916100a8565b145f14610ff357610fee9150610fe8610fda610fd3610fcb30610cc6565b318790610cff565b8790610d61565b610fe389610e05565b6115ed565b5b610a23565b610f5e565b61103b602061100961100485610cae565b610cba565b6370a082319061103061101b30610cc6565b92611024610072565b9586948593849361064c565b8352600483016100c1565b03915afa801561111e5761107161106b611064611076936020955f916110f1575b508990610cff565b8990610d61565b94610cae565b610cba565b9263a9059cbb9361109b5f8b93966110a661108f610072565b9889968795869461064c565b845260048401610dd6565b03925af19182156110ec57610fee926110c0575b50610fe9565b6110e09060203d81116110e5575b6110d8818361027d565b810190610dab565b6110ba565b503d6110ce565b61067f565b6111119150863d8111611117575b611109818361027d565b810190610c48565b5f61105c565b503d6110ff565b61067f565b505050509050565b61114c915060203d8111611152575b611144818361027d565b810190610c48565b5f610f52565b503d61113a565b61067f565b61117e9150833d8111611184575b611176818361027d565b810190610c48565b5f610f13565b503d61116c565b61067f565b6111b1915060203d81116111b7575b6111a9818361027d565b810190610661565b5f610eb9565b503d61119f565b61067f565b6111e4915060203d81116111ea575b6111dc818361027d565b810190610661565b5f610e6c565b503d6111d2565b61067f565b90565b61120d611208611212926111f6565b6105fd565b6102e4565b90565b61121f600a6111f9565b90565b61122b81610c66565b908161123f6112395f610a07565b916102e4565b11611249575b5050565b9091611253610c35565b5b80611267611261866102e4565b916102e4565b101561144c5761128061127b848390610c6a565b610a83565b908161129b611295611290610c8a565b6100a8565b916100a8565b145f146112fd576112cf91506112b030610cc6565b316112c36112bd5f610a07565b916102e4565b116112d4575b5b610a23565b611254565b6112f86112e86112e35f6105da565b610e05565b6112f130610cc6565b31906115ed565b6112c9565b611345602061131361130e85610cae565b610cba565b6370a082319061133a61132530610cc6565b9261132e610072565b9586948593849361064c565b8352600483016100c1565b03915afa908115611447575f91611419575b50918261137361136d611368611215565b6102e4565b916102e4565b11611384575b506112cf91506112ca565b611397611392602092610cae565b610cba565b9263a9059cbb936113c45f6113ab816105da565b93966113cf6113b8610072565b9889968795869461064c565b845260048401610dd6565b03925af1918215611414576112cf926113e8575b611379565b6114089060203d811161140d575b611400818361027d565b810190610dab565b6113e3565b503d6113f6565b61067f565b61143a915060203d8111611440575b611432818361027d565b810190610c48565b5f611357565b503d611428565b61067f565b509150505f80611245565b61146090610634565b90565b5f7f416464726573733a20696e73756666696369656e742062616c616e6365000000910152565b611497601d6020926107f7565b6114a081611463565b0190565b6114b99060208101905f81830391015261148a565b90565b156114c357565b6114cb610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806114fb600482016114a4565b0390fd5b61150890610634565b90565b905090565b61151b5f809261150b565b0190565b61152890611510565b90565b60207f6563697069656e74206d61792068617665207265766572746564000000000000917f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201520152565b611585603a6040926107f7565b61158e8161152b565b0190565b6115a79060208101905f818303910152611578565b90565b156115b157565b6115b9610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806115e960048201611592565b0390fd5b5f61164892611622829361161d61160330611457565b31611616611610866102e4565b916102e4565b10156114bc565b6114ff565b9061162b610072565b90816116368161151f565b03925af1611642610ab9565b506115aa565b56fea2646970667358221220c7b0b6a5047614f7da4310b4da483b8e1c4168e4e72e0645b14b479ea3a87c3e64736f6c63430008190033a2646970667358221220b24300b1dae695fe47fa313b6aedf38c57eeef26ec494a378ebc8c2586bd3b6164736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x3A28 PUSH2 0x94 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x16C0 ADD MSTORE DUP2 DUP2 PUSH2 0x1745 ADD MSTORE PUSH2 0x194A ADD MSTORE PUSH2 0x3A28 SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x87 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x6C PUSH1 0x68 PUSH1 0x70 SWAP3 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x5A JUMP JUMPDEST PUSH1 0x4F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7A SWAP1 PUSH1 0x5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x73 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8E ADDRESS PUSH1 0x7D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x11C JUMP JUMPDEST DUP1 PUSH4 0x889E14C EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x15554C55 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0x27D54A92 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x103 JUMPI DUP1 PUSH4 0x5AB1BD53 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x6C6BE5F3 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x7811A785 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0x9B76A5CD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xD1 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0x8EF JUMP JUMPDEST PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x887 JUMP JUMPDEST PUSH2 0x756 JUMP JUMPDEST PUSH2 0x722 JUMP JUMPDEST PUSH2 0x690 JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x4A0 JUMP JUMPDEST PUSH2 0x46D JUMP JUMPDEST PUSH2 0x438 JUMP JUMPDEST PUSH2 0x403 JUMP JUMPDEST PUSH2 0x3A5 JUMP JUMPDEST PUSH2 0x227 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST PUSH2 0x19F JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x156 SWAP1 PUSH2 0x134 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x162 DUP2 PUSH2 0x14D JUMP JUMPDEST SUB PUSH2 0x169 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x17A DUP3 PUSH2 0x159 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x195 JUMPI PUSH2 0x192 SWAP2 PUSH0 ADD PUSH2 0x16D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1CD JUMPI PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x1C9 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x200 JUMPI PUSH2 0x1EA PUSH2 0x1E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x1FC DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH2 0x20E SWAP1 PUSH2 0x14D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x225 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x205 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x257 JUMPI PUSH2 0x253 PUSH2 0x242 PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0xA2B JUMP JUMPDEST PUSH2 0x24A PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x2A5 SWAP1 PUSH2 0x264 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2BF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST SWAP1 PUSH2 0x2D7 PUSH2 0x2D0 PUSH2 0x122 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x29B JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2F7 JUMPI PUSH2 0x2F3 PUSH1 0x20 SWAP2 PUSH2 0x264 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x31C PUSH2 0x317 DUP3 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0x2C4 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x338 JUMPI PUSH2 0x336 SWAP3 PUSH2 0x2FC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x260 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP2 PUSH1 0x20 PUSH2 0x358 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x307 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x3A0 JUMPI PUSH2 0x379 DUP4 PUSH0 DUP4 ADD PUSH2 0x16D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x39B JUMPI PUSH2 0x398 SWAP3 ADD PUSH2 0x33D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x130 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x360 JUMP JUMPDEST SWAP1 PUSH2 0xA7B JUMP JUMPDEST PUSH2 0x3C1 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x3CB DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x3D9 JUMPI JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EA SWAP1 PUSH2 0x3DE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x401 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3E1 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x433 JUMPI PUSH2 0x413 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x42F PUSH2 0x41E PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x426 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3EE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x468 JUMPI PUSH2 0x448 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x464 PUSH2 0x453 PUSH2 0xB2A JUMP JUMPDEST PUSH2 0x45B PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x49B JUMPI PUSH2 0x47D CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x485 PUSH2 0xBFE JUMP JUMPDEST PUSH2 0x48D PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x497 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x4CE JUMPI PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x4B8 PUSH2 0xC58 JUMP JUMPDEST PUSH2 0x4C0 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x4CA DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4EA PUSH2 0x4E5 PUSH2 0x4EF SWAP3 PUSH2 0x134 JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x134 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FB SWAP1 PUSH2 0x4D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x507 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x514 SWAP1 PUSH2 0x4FE JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x54D SWAP1 PUSH1 0x8 PUSH2 0x552 SWAP4 MUL PUSH2 0x520 JUMP JUMPDEST PUSH2 0x524 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x560 SWAP2 SLOAD PUSH2 0x53D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x579 SWAP1 PUSH2 0x574 PUSH1 0x1 SWAP2 PUSH0 SWAP3 PUSH2 0x50A JUMP JUMPDEST PUSH2 0x555 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x585 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x591 SWAP1 PUSH2 0x57C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5A8 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x588 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5DA JUMPI PUSH2 0x5D6 PUSH2 0x5C5 PUSH2 0x5C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x563 JUMP JUMPDEST PUSH2 0x5CD PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x595 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x608 SWAP1 PUSH1 0x8 PUSH2 0x60D SWAP4 MUL PUSH2 0x520 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x61B SWAP2 SLOAD PUSH2 0x5F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x62A PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x610 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x636 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x642 SWAP1 PUSH2 0x62D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x659 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x639 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x68B JUMPI PUSH2 0x66B CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x687 PUSH2 0x676 PUSH2 0x61E JUMP JUMPDEST PUSH2 0x67E PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x646 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x6C0 JUMPI PUSH2 0x6A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x6BC PUSH2 0x6AB PUSH2 0xC9C JUMP JUMPDEST PUSH2 0x6B3 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6DB DUP2 PUSH2 0x6C5 JUMP JUMPDEST SUB PUSH2 0x6E2 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x6F3 DUP3 PUSH2 0x6D2 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x71D JUMPI DUP1 PUSH2 0x711 PUSH2 0x71A SWAP3 PUSH0 DUP7 ADD PUSH2 0x16D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST CALLVALUE PUSH2 0x751 JUMPI PUSH2 0x73B PUSH2 0x735 CALLDATASIZE PUSH1 0x4 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 PUSH2 0xF63 JUMP JUMPDEST PUSH2 0x743 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x74D DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x786 JUMPI PUSH2 0x782 PUSH2 0x771 PUSH2 0x76C CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x1178 JUMP JUMPDEST PUSH2 0x779 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7A9 JUMPI PUSH2 0x7A5 PUSH1 0x20 SWAP2 PUSH2 0x264 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST SWAP1 PUSH2 0x7C0 PUSH2 0x7BB DUP4 PUSH2 0x78B JUMP JUMPDEST PUSH2 0x2C4 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x7F6 PUSH1 0x5 PUSH2 0x7AE JUMP JUMPDEST SWAP1 PUSH2 0x803 PUSH1 0x20 DUP4 ADD PUSH2 0x7C5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x80D PUSH2 0x7EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x818 PUSH2 0x805 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x823 PUSH2 0x810 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x85D PUSH2 0x866 PUSH1 0x20 SWAP4 PUSH2 0x86B SWAP4 PUSH2 0x854 DUP2 PUSH2 0x826 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x82A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x833 JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x884 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x83E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8B7 JUMPI PUSH2 0x897 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x8B3 PUSH2 0x8A2 PUSH2 0x81B JUMP JUMPDEST PUSH2 0x8AA PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x86F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x8EA JUMPI PUSH2 0x8D4 PUSH2 0x8CF CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x159A JUMP JUMPDEST PUSH2 0x8DC PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x8E6 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x91D JUMPI PUSH2 0x907 PUSH2 0x902 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST PUSH2 0x90F PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x919 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x937 SWAP1 PUSH2 0x932 PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x9AE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x942 SWAP1 PUSH2 0x4D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x94E SWAP1 PUSH2 0x939 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x975 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x951 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x988 SWAP1 PUSH2 0x939 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x9A3 PUSH2 0x99E PUSH2 0x9AA SWAP3 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x98B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x956 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x9BA PUSH2 0x9C1 SWAP2 PUSH2 0x945 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x98E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9CC SWAP1 PUSH2 0x926 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9DF SWAP1 PUSH2 0x9DA PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x9E1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9ED PUSH2 0x9F4 SWAP2 PUSH2 0x945 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x98E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9FF SWAP1 PUSH2 0x9CE JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0xA16 PUSH2 0xA1B SWAP2 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x524 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA28 SWAP1 SLOAD PUSH2 0xA0A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA4A PUSH2 0xA45 PUSH2 0xA4F SWAP3 PUSH2 0xA3D PUSH2 0xA01 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA64 SWAP2 PUSH2 0xA5F PUSH2 0x16AF JUMP JUMPDEST PUSH2 0xA66 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xA79 SWAP2 PUSH2 0xA74 DUP2 PUSH2 0x1781 JUMP JUMPDEST PUSH2 0x17FB JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xA85 SWAP2 PUSH2 0xA52 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xA9C SWAP1 PUSH2 0xA97 PUSH2 0x1939 JUMP JUMPDEST PUSH2 0xAEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAB6 PUSH2 0xAB1 PUSH2 0xABB SWAP3 PUSH2 0xA9F JUMP JUMPDEST PUSH2 0x951 JUMP JUMPDEST PUSH2 0x3DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAE7 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0xAA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0xAF3 PUSH2 0xABE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB06 PUSH2 0xB01 PUSH2 0xA87 JUMP JUMPDEST PUSH2 0xA8B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB15 PUSH2 0xB1A SWAP2 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB27 SWAP1 SLOAD PUSH2 0xB09 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB32 PUSH2 0xA01 JUMP JUMPDEST POP PUSH2 0xB45 PUSH2 0xB40 PUSH1 0x2 PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB50 PUSH2 0x1635 JUMP JUMPDEST PUSH2 0xB58 PUSH2 0xB99 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB63 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB6E PUSH2 0x122 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB8E PUSH2 0xB89 PUSH2 0xB95 SWAP3 PUSH2 0x4FE JUMP JUMPDEST PUSH2 0xB76 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x956 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA2 ADDRESS PUSH2 0xB5A JUMP JUMPDEST PUSH2 0xBAA PUSH2 0x122 JUMP JUMPDEST SWAP1 PUSH2 0x181D DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xBF9 JUMPI DUP3 SWAP2 PUSH2 0xBD6 SWAP2 PUSH2 0x181D PUSH2 0x21D6 DUP6 CODECOPY PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 PUSH0 CREATE DUP1 ISZERO PUSH2 0xBF4 JUMPI PUSH2 0xBEC PUSH2 0xBF2 SWAP2 PUSH2 0x57C JUMP JUMPDEST PUSH0 PUSH2 0xB79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB66 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST PUSH2 0xC06 PUSH2 0xB48 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC10 PUSH2 0x1635 JUMP JUMPDEST PUSH2 0xC18 PUSH2 0xC45 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC31 PUSH2 0xC2C PUSH2 0xC36 SWAP3 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x134 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC42 SWAP1 PUSH2 0xC1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC56 PUSH2 0xC51 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x19B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC60 PUSH2 0xC08 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xC87 PUSH2 0xC8C SWAP2 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0xC62 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC99 SWAP1 SLOAD PUSH2 0xC7B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA4 PUSH2 0xA01 JUMP JUMPDEST POP PUSH2 0xCB7 PUSH0 PUSH2 0xCB1 PUSH2 0x1A23 JUMP JUMPDEST ADD PUSH2 0xC8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xCD2 PUSH2 0xCD7 SWAP2 PUSH2 0xCBA JUMP JUMPDEST PUSH2 0xCC0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCE4 SWAP1 SLOAD PUSH2 0xCC6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD00 PUSH2 0xD05 SWAP2 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0xCE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD12 SWAP1 SLOAD PUSH2 0xCF4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD28 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x951 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xD46 PUSH2 0xD41 PUSH2 0xD4B SWAP3 PUSH2 0x6C5 JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x6C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD66 PUSH2 0xD61 PUSH2 0xD6D SWAP3 PUSH2 0xD32 JUMP JUMPDEST PUSH2 0xD4E JUMP JUMPDEST DUP3 SLOAD PUSH2 0xD15 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD8B PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0xD71 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xDA3 SWAP1 PUSH2 0xD95 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xDBE PUSH2 0xDB9 PUSH2 0xDC5 SWAP3 PUSH2 0xD9A JUMP JUMPDEST PUSH2 0xDA6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xD77 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDD2 SWAP1 PUSH2 0x6C5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xDE9 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xDC9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0xDF6 PUSH2 0x1A47 JUMP JUMPDEST SWAP1 PUSH2 0xE02 PUSH0 DUP4 ADD PUSH2 0xCDA JUMP JUMPDEST DUP1 ISZERO PUSH2 0xEB3 JUMPI JUMPDEST PUSH2 0xE77 JUMPI PUSH2 0xE3C SWAP3 PUSH2 0xE33 SWAP2 PUSH2 0xE21 DUP7 PUSH0 DUP7 ADD PUSH2 0xD51 JUMP JUMPDEST PUSH2 0xE2E PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0xED8 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0xE72 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0xE69 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0xE7F PUSH2 0x122 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xEAF PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0xEBF PUSH0 DUP4 ADD PUSH2 0xD08 JUMP JUMPDEST PUSH2 0xED1 PUSH2 0xECB DUP7 PUSH2 0x6C5 JUMP JUMPDEST SWAP2 PUSH2 0x6C5 JUMP JUMPDEST LT ISZERO PUSH2 0xE09 JUMP JUMPDEST PUSH2 0xEFE SWAP2 POP PUSH2 0xEF7 SWAP1 PUSH2 0xEEA CALLER PUSH2 0x1A89 JUMP JUMPDEST PUSH2 0xEF2 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x98E JUMP JUMPDEST PUSH2 0xF07 ADDRESS PUSH2 0xB5A JUMP JUMPDEST PUSH2 0xF0F PUSH2 0x122 JUMP JUMPDEST SWAP1 PUSH2 0x181D DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF5E JUMPI DUP3 SWAP2 PUSH2 0xF3B SWAP2 PUSH2 0x181D PUSH2 0x21D6 DUP6 CODECOPY PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 PUSH0 CREATE DUP1 ISZERO PUSH2 0xF59 JUMPI PUSH2 0xF51 PUSH2 0xF57 SWAP2 PUSH2 0x57C JUMP JUMPDEST PUSH0 PUSH2 0xB79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB66 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST SWAP1 PUSH2 0xF6D SWAP2 PUSH2 0xDEB JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x4167656E7420666163746F7279206E6F74207365740000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xFA3 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x82A JUMP JUMPDEST PUSH2 0xFAC DUP2 PUSH2 0xF6F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xFC5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xF96 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xFCF JUMPI JUMP JUMPDEST PUSH2 0xFD7 PUSH2 0x122 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1007 PUSH1 0x4 DUP3 ADD PUSH2 0xFB0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x101A SWAP1 PUSH2 0x100B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1026 SWAP1 PUSH2 0x1011 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1035 PUSH2 0x103A SWAP2 PUSH2 0x14D JUMP JUMPDEST PUSH2 0x101D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x104A DUP2 PUSH1 0x14 SWAP4 PUSH2 0x1029 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x7472616374000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x4167656E74206372656174696F6E206661696C65642C206E6F74206120636F6E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x10B2 PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x82A JUMP JUMPDEST PUSH2 0x10BB DUP2 PUSH2 0x1058 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x10D4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x10DE JUMPI JUMP JUMPDEST PUSH2 0x10E6 PUSH2 0x122 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1116 PUSH1 0x4 DUP3 ADD PUSH2 0x10BF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1123 SWAP1 PUSH2 0x4D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x112F SWAP1 PUSH2 0x111A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x114A PUSH2 0x1145 PUSH2 0x1151 SWAP3 PUSH2 0x1126 JUMP JUMPDEST PUSH2 0x1132 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x956 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1176 SWAP3 SWAP5 SWAP4 PUSH2 0x116F PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x205 JUMP JUMPDEST ADD SWAP1 PUSH2 0x205 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1245 PUSH2 0x1240 PUSH2 0x124A SWAP3 PUSH2 0x118A PUSH2 0xA01 JUMP JUMPDEST POP PUSH2 0x11B8 PUSH2 0x1197 ADDRESS PUSH2 0xB5A JUMP JUMPDEST PUSH2 0x11B1 PUSH2 0x11AB PUSH2 0x11A6 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ ISZERO PUSH2 0xFC8 JUMP JUMPDEST PUSH2 0x11D3 PUSH2 0x11E2 DUP3 PUSH2 0x11C7 PUSH2 0x122 JUMP JUMPDEST SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD PUSH2 0x103E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE SUB DUP3 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x11F4 PUSH2 0x11EE DUP3 PUSH2 0x1054 JUMP JUMPDEST SWAP2 PUSH2 0x104E JUMP JUMPDEST KECCAK256 PUSH2 0x1211 PUSH2 0x120C PUSH2 0x1207 PUSH1 0x1 DUP6 SWAP1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST PUSH2 0x122B PUSH2 0x1225 PUSH2 0x1220 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x12CF JUMPI JUMPDEST PUSH2 0x124D JUMPI JUMPDEST POP PUSH1 0x1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1258 SWAP1 DUP3 SWAP1 PUSH2 0x1BB9 JUMP JUMPDEST PUSH2 0x1271 PUSH2 0x126C PUSH2 0x1267 DUP4 PUSH2 0x57C JUMP JUMPDEST PUSH2 0x1AD5 JUMP JUMPDEST PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x1286 DUP2 PUSH2 0x1281 PUSH1 0x1 DUP6 SWAP1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0x1135 JUMP JUMPDEST PUSH2 0x1290 DUP3 SWAP2 PUSH2 0x57C JUMP JUMPDEST PUSH32 0x8C6E353968E7FFD60DBA22FF7D2A4354AF301F9D41858A35668E7292EC1301B6 SWAP2 PUSH2 0x12C6 PUSH2 0x12BD PUSH2 0x122 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1155 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1238 JUMP JUMPDEST POP PUSH2 0x12F4 PUSH2 0x12EF PUSH2 0x12EA PUSH2 0x12E5 PUSH1 0x1 DUP7 SWAP1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST PUSH2 0x1AD5 JUMP JUMPDEST PUSH2 0x1306 PUSH2 0x1300 PUSH0 PUSH2 0xD95 JUMP JUMPDEST SWAP2 PUSH2 0xD95 JUMP JUMPDEST EQ PUSH2 0x1233 JUMP JUMPDEST PUSH2 0x1320 PUSH2 0x131B PUSH2 0x1325 SWAP3 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x6C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x133F PUSH2 0x133A PUSH2 0x1344 SWAP3 PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x6C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1350 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x136A PUSH2 0x1365 PUSH2 0x136F SWAP3 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1353 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x137B SWAP1 PUSH2 0x132B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1392 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1372 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x139C PUSH2 0x1A47 JUMP JUMPDEST SWAP1 PUSH2 0x13B1 PUSH2 0x13AB PUSH0 DUP5 ADD PUSH2 0xCDA JUMP JUMPDEST ISZERO PUSH2 0xD95 JUMP JUMPDEST SWAP1 PUSH2 0x13BD PUSH0 DUP5 ADD PUSH2 0xD08 JUMP JUMPDEST DUP1 PUSH2 0x13D0 PUSH2 0x13CA PUSH0 PUSH2 0x130C JUMP JUMPDEST SWAP2 PUSH2 0x6C5 JUMP JUMPDEST EQ DUP1 PUSH2 0x150A JUMPI JUMPDEST SWAP1 PUSH2 0x13EB PUSH2 0x13E5 PUSH1 0x1 PUSH2 0x132B JUMP JUMPDEST SWAP2 PUSH2 0x6C5 JUMP JUMPDEST EQ DUP1 PUSH2 0x14E2 JUMPI JUMPDEST PUSH2 0x13FD SWAP1 SWAP2 ISZERO PUSH2 0xD95 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x14D1 JUMPI JUMPDEST POP PUSH2 0x1495 JUMPI PUSH2 0x142D SWAP1 PUSH2 0x1422 PUSH2 0x141A PUSH1 0x1 PUSH2 0x132B JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0xD51 JUMP JUMPDEST DUP3 PUSH2 0x1483 JUMPI JUMPDEST PUSH2 0x1511 JUMP JUMPDEST PUSH2 0x1435 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1442 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x147A PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1471 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x137F JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1432 JUMP JUMPDEST PUSH2 0x1490 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x149D PUSH2 0x122 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14CD PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x14DC SWAP2 POP ISZERO PUSH2 0xD95 JUMP JUMPDEST PUSH0 PUSH2 0x1404 JUMP JUMPDEST POP PUSH2 0x13FD PUSH2 0x14EF ADDRESS PUSH2 0x1347 JUMP JUMPDEST EXTCODESIZE PUSH2 0x1502 PUSH2 0x14FC PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x13F2 JUMP JUMPDEST POP DUP3 PUSH2 0x13D7 JUMP JUMPDEST PUSH2 0x152E PUSH2 0x1535 SWAP2 PUSH2 0x1521 CALLER PUSH2 0x1A89 JUMP JUMPDEST PUSH2 0x1529 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x98E JUMP JUMPDEST PUSH2 0x153E ADDRESS PUSH2 0xB5A JUMP JUMPDEST PUSH2 0x1546 PUSH2 0x122 JUMP JUMPDEST SWAP1 PUSH2 0x181D DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1595 JUMPI DUP3 SWAP2 PUSH2 0x1572 SWAP2 PUSH2 0x181D PUSH2 0x21D6 DUP6 CODECOPY PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 PUSH0 CREATE DUP1 ISZERO PUSH2 0x1590 JUMPI PUSH2 0x1588 PUSH2 0x158E SWAP2 PUSH2 0x57C JUMP JUMPDEST PUSH0 PUSH2 0xB79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB66 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST PUSH2 0x15A3 SWAP1 PUSH2 0x1394 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x15B6 SWAP1 PUSH2 0x15B1 PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x15B8 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x15D3 PUSH2 0x15CD PUSH2 0x15C8 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ PUSH2 0x15E3 JUMPI PUSH2 0x15E1 SWAP1 PUSH2 0x19B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1626 PUSH2 0x15EF PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x15F7 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1633 SWAP1 PUSH2 0x15A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x163D PUSH2 0xC9C JUMP JUMPDEST PUSH2 0x1656 PUSH2 0x1650 PUSH2 0x164B PUSH2 0x1CA5 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST SUB PUSH2 0x165D JUMPI JUMP JUMPDEST PUSH2 0x169F PUSH2 0x1668 PUSH2 0x1CA5 JUMP JUMPDEST PUSH2 0x1670 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x16AC SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16B8 ADDRESS PUSH2 0x16A3 JUMP JUMPDEST PUSH2 0x16EA PUSH2 0x16E4 PUSH32 0x0 PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x1734 JUMPI JUMPDEST PUSH2 0x16F8 JUMPI JUMP JUMPDEST PUSH2 0x1700 PUSH2 0x122 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1730 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x173D PUSH2 0x1CB2 JUMP JUMPDEST PUSH2 0x176F PUSH2 0x1769 PUSH32 0x0 PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ ISZERO PUSH2 0x16F2 JUMP JUMPDEST POP PUSH2 0x177F PUSH2 0x1635 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x178A SWAP1 PUSH2 0x1776 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1795 SWAP1 PUSH2 0x4D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17A1 SWAP1 PUSH2 0x178C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17AD SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x17C3 DUP2 PUSH2 0x3DE JUMP JUMPDEST SUB PUSH2 0x17CA JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x17DB DUP3 PUSH2 0x17BA JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x17F6 JUMPI PUSH2 0x17F3 SWAP2 PUSH0 ADD PUSH2 0x17CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1829 PUSH1 0x20 PUSH2 0x1813 PUSH2 0x180E DUP7 PUSH2 0x1798 JUMP JUMPDEST PUSH2 0x17A4 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x1821 PUSH2 0x122 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x17B4 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1839 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x1909 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x189A JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x185B JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x1896 SWAP1 PUSH2 0x1867 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x18B5 PUSH2 0x18AF PUSH2 0x18AA PUSH2 0xABE JUMP JUMPDEST PUSH2 0x3DE JUMP JUMPDEST SWAP2 PUSH2 0x3DE JUMP JUMPDEST SUB PUSH2 0x18CA JUMPI PUSH2 0x18C5 SWAP3 SWAP4 POP PUSH2 0x1CD8 JUMP JUMPDEST PUSH2 0x1859 JUMP JUMPDEST PUSH2 0x1905 DUP5 PUSH2 0x18D6 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3EE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x192B SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1932 JUMPI JUMPDEST PUSH2 0x1923 DUP2 DUP4 PUSH2 0x29B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17DD JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1846 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x1942 ADDRESS PUSH2 0x16A3 JUMP JUMPDEST PUSH2 0x1974 PUSH2 0x196E PUSH32 0x0 PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST SUB PUSH2 0x197B JUMPI JUMP JUMPDEST PUSH2 0x1983 PUSH2 0x122 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19B3 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x19BF PUSH2 0x1A23 JUMP JUMPDEST PUSH2 0x19D7 PUSH2 0x19CD PUSH0 DUP4 ADD PUSH2 0xC8F JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0xB79 JUMP JUMPDEST SWAP1 PUSH2 0x1A0B PUSH2 0x1A05 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x4FE JUMP JUMPDEST SWAP2 PUSH2 0x4FE JUMP JUMPDEST SWAP2 PUSH2 0x1A14 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x1A1E DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x1A7C SWAP1 PUSH2 0x1A77 PUSH2 0x1D61 JUMP JUMPDEST PUSH2 0x1A7E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A87 SWAP1 PUSH2 0x1E39 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A92 SWAP1 PUSH2 0x1A6B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A9C PUSH2 0x1D61 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1AA6 PUSH2 0x1A94 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1ACD PUSH2 0x1AC8 PUSH2 0x1AD2 SWAP3 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1AB0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1ADD PUSH2 0x1AA8 JUMP JUMPDEST POP PUSH2 0x1AE6 PUSH2 0x1AAC JUMP JUMPDEST POP EXTCODESIZE PUSH2 0x1AFA PUSH2 0x1AF4 PUSH0 PUSH2 0x1AB9 JUMP JUMPDEST SWAP2 PUSH2 0x1AB0 JUMP JUMPDEST GT SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x7265676973747279206E6F742073657400000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1B36 PUSH1 0x10 PUSH1 0x20 SWAP3 PUSH2 0x82A JUMP JUMPDEST PUSH2 0x1B3F DUP2 PUSH2 0x1B02 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1B58 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1B29 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1B62 JUMPI JUMP JUMPDEST PUSH2 0x1B6A PUSH2 0x122 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1B9A PUSH1 0x4 DUP3 ADD PUSH2 0x1B43 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BA7 SWAP1 PUSH2 0x111A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x1BB4 JUMPI JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST PUSH2 0x1C0A SWAP1 PUSH2 0x1BC5 PUSH2 0x1AFE JUMP JUMPDEST POP PUSH2 0x1BFC PUSH2 0x1BDB PUSH2 0x1BD6 PUSH1 0x2 PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST PUSH2 0x1BF5 PUSH2 0x1BEF PUSH2 0x1BEA PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ ISZERO PUSH2 0x1B5B JUMP JUMPDEST PUSH2 0x1C05 PUSH0 PUSH2 0xC8F JUMP JUMPDEST PUSH2 0x1EE0 JUMP JUMPDEST PUSH2 0x1C1B PUSH2 0x1C16 DUP3 PUSH2 0x1B9E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST SWAP2 PUSH4 0xC4D66DE8 SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0x1CA0 JUMPI PUSH2 0x1C52 SWAP4 PUSH2 0x1C47 PUSH0 DUP1 SWAP5 PUSH2 0x1C3B PUSH2 0x122 JUMP JUMPDEST SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0x17B4 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1C9B JUMPI PUSH2 0x1C6C SWAP3 PUSH2 0x1C6F JUMPI JUMPDEST POP PUSH2 0x1B9E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C8E SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x1C94 JUMPI JUMPDEST PUSH2 0x1C86 DUP2 DUP4 PUSH2 0x29B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH0 PUSH2 0x1C66 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1C7C JUMP JUMPDEST PUSH2 0xB66 JUMP JUMPDEST PUSH2 0x17B0 JUMP JUMPDEST PUSH2 0x1CAD PUSH2 0xA01 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1CBA PUSH2 0xA01 JUMP JUMPDEST POP PUSH2 0x1CD5 PUSH0 PUSH2 0x1CCF PUSH2 0x1CCA PUSH2 0xABE JUMP JUMPDEST PUSH2 0x1F6B JUMP JUMPDEST ADD PUSH2 0xC8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1CE2 DUP3 PUSH2 0x1F6E JUMP JUMPDEST DUP2 PUSH2 0x1D0D PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x4FE JUMP JUMPDEST SWAP1 PUSH2 0x1D16 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x1D20 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x1D2C DUP2 PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x1D3E PUSH2 0x1D38 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x1D52 JUMPI PUSH2 0x1D4E SWAP2 PUSH2 0x207E JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x1D5C PUSH2 0x1FE3 JUMP JUMPDEST PUSH2 0x1D50 JUMP JUMPDEST PUSH2 0x1D72 PUSH2 0x1D6C PUSH2 0x20AD JUMP JUMPDEST ISZERO PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x1D78 JUMPI JUMP JUMPDEST PUSH2 0x1D80 PUSH2 0x122 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1DB0 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1DC5 SWAP1 PUSH2 0x1DC0 PUSH2 0x1D61 JUMP JUMPDEST PUSH2 0x1DC7 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x1DE2 PUSH2 0x1DDC PUSH2 0x1DD7 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ PUSH2 0x1DF2 JUMPI PUSH2 0x1DF0 SWAP1 PUSH2 0x19B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1E35 PUSH2 0x1DFE PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x1E06 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E42 SWAP1 PUSH2 0x1DB4 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x455243313136373A2063726561746532206661696C6564000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1E78 PUSH1 0x17 PUSH1 0x20 SWAP3 PUSH2 0x82A JUMP JUMPDEST PUSH2 0x1E81 DUP2 PUSH2 0x1E44 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1E9A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1E6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1EA4 JUMPI JUMP JUMPDEST PUSH2 0x1EAC PUSH2 0x122 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1EDC PUSH1 0x4 DUP3 ADD PUSH2 0x1E85 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x37 SWAP1 PUSH2 0x1EEB PUSH2 0xA01 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP3 MSTORE PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH0 CREATE2 SWAP1 PUSH2 0x1F69 DUP3 PUSH2 0x1F62 PUSH2 0x1F5C PUSH2 0x1F57 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ ISZERO PUSH2 0x1E9D JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x1F82 PUSH2 0x1F7C PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST EQ PUSH2 0x1FA4 JUMPI PUSH2 0x1FA2 SWAP1 PUSH0 PUSH2 0x1F9C PUSH2 0x1F97 PUSH2 0xABE JUMP JUMPDEST PUSH2 0x1F6B JUMP JUMPDEST ADD PUSH2 0xB79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1FDF SWAP1 PUSH2 0x1FB0 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1FF6 PUSH2 0x1FF0 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST GT PUSH2 0x1FFD JUMPI JUMP JUMPDEST PUSH2 0x2005 PUSH2 0x122 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2035 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2050 PUSH2 0x204B DUP4 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0x2C4 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x2070 JUMPI PUSH2 0x2065 RETURNDATASIZE PUSH2 0x203E JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x2078 PUSH2 0x2039 JUMP JUMPDEST SWAP1 PUSH2 0x206E JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x20AA SWAP4 PUSH2 0x208C PUSH2 0x2039 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x20A1 PUSH2 0x2055 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x20CB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20B5 PUSH2 0x1AA8 JUMP JUMPDEST POP PUSH2 0x20C8 PUSH0 PUSH2 0x20C2 PUSH2 0x1A47 JUMP JUMPDEST ADD PUSH2 0xCDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20DF SWAP1 PUSH2 0x20D8 PUSH2 0x2039 JUMP JUMPDEST POP ISZERO PUSH2 0xD95 JUMP JUMPDEST PUSH0 EQ PUSH2 0x20EB JUMPI POP PUSH2 0x216F JUMP JUMPDEST PUSH2 0x20F4 DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x2106 PUSH2 0x2100 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST EQ DUP1 PUSH2 0x2154 JUMPI JUMPDEST PUSH2 0x2115 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x2150 SWAP1 PUSH2 0x2121 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x2169 PUSH2 0x2163 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST EQ PUSH2 0x210D JUMP JUMPDEST PUSH2 0x2178 DUP2 PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x218A PUSH2 0x2184 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2199 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x21A1 PUSH2 0x122 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x21D1 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x2F JUMPI PUSH2 0x19 PUSH2 0x14 PUSH2 0xF4 JUMP JUMPDEST PUSH2 0x18F JUMP JUMPDEST PUSH2 0x21 PUSH2 0x34 JUMP JUMPDEST PUSH2 0x1680 PUSH2 0x19D DUP3 CODECOPY PUSH2 0x1680 SWAP1 RETURN JUMPDEST PUSH2 0x3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x66 SWAP1 PUSH2 0x3E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST SWAP1 PUSH2 0x96 PUSH2 0x8F PUSH2 0x34 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x5C JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xB0 SWAP1 PUSH2 0x9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBC DUP2 PUSH2 0xA7 JUMP JUMPDEST SUB PUSH2 0xC3 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD4 DUP3 PUSH2 0xB3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xEF JUMPI PUSH2 0xEC SWAP2 PUSH0 ADD PUSH2 0xC7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x98 JUMP JUMPDEST PUSH2 0x112 PUSH2 0x181D DUP1 CODESIZE SUB DUP1 PUSH2 0x107 DUP2 PUSH2 0x83 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH2 0xD6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x12B PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 PUSH2 0x115 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x147 PUSH2 0x151 SWAP3 PUSH2 0x9C JUMP JUMPDEST PUSH2 0x135 JUMP JUMPDEST PUSH2 0x9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15D SWAP1 PUSH2 0x138 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x169 SWAP1 PUSH2 0x154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x184 PUSH2 0x17F PUSH2 0x18B SWAP3 PUSH2 0x160 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST DUP3 SLOAD PUSH2 0x11A JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x19A SWAP1 PUSH1 0x1 PUSH2 0x16F JUMP JUMPDEST JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x6C JUMP JUMPDEST DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0xB0F479A1 EQ PUSH2 0x5D JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x58 JUMPI PUSH4 0xEEDC3C50 SUB PUSH2 0xE JUMPI PUSH2 0x585 JUMP JUMPDEST PUSH2 0x20F JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST PUSH2 0x15B JUMP JUMPDEST PUSH2 0xD6 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x8A JUMPI JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB1 SWAP1 PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBD SWAP1 PUSH2 0xA8 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xD4 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xB4 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x106 JUMPI PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x102 PUSH2 0xF1 PUSH2 0x5E7 JUMP JUMPDEST PUSH2 0xF9 PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x138 SWAP1 PUSH1 0x8 PUSH2 0x13D SWAP4 MUL PUSH2 0x10B JUMP JUMPDEST PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x14B SWAP2 SLOAD PUSH2 0x128 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x158 PUSH0 DUP1 PUSH2 0x140 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x18B JUMPI PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x176 PUSH2 0x14E JUMP JUMPDEST PUSH2 0x17E PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST CALLVALUE PUSH2 0x1C0 JUMPI PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x1AB PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1D2 DUP2 PUSH2 0xA8 JUMP JUMPDEST SUB PUSH2 0x1D9 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1EA DUP3 PUSH2 0x1C9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x205 JUMPI PUSH2 0x202 SWAP2 PUSH0 ADD PUSH2 0x1DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x23D JUMPI PUSH2 0x227 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EC JUMP JUMPDEST PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH2 0x239 DUP2 PUSH2 0x20A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x287 SWAP1 PUSH2 0x246 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2A1 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 PUSH2 0x2B9 PUSH2 0x2B2 PUSH2 0x72 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x27D JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2D3 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F0 DUP2 PUSH2 0x2E4 JUMP JUMPDEST SUB PUSH2 0x2F7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x308 DUP3 PUSH2 0x2E7 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x32C JUMPI PUSH2 0x328 PUSH1 0x20 SWAP2 PUSH2 0x246 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x351 PUSH2 0x34C DUP3 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x36D JUMPI PUSH2 0x36B SWAP3 PUSH2 0x331 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x390 JUMPI DUP2 PUSH1 0x20 PUSH2 0x38D SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x33C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x3F9 JUMPI PUSH2 0x3AC PUSH1 0x60 PUSH2 0x2A6 JUMP JUMPDEST SWAP3 PUSH2 0x3B9 DUP2 PUSH0 DUP5 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH0 DUP6 ADD MSTORE PUSH2 0x3CA DUP2 PUSH1 0x20 DUP5 ADD PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3F4 JUMPI PUSH2 0x3ED SWAP3 ADD PUSH2 0x372 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH2 0x2DC JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x412 PUSH2 0x40D DUP3 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x469 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x438 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x464 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x459 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x395 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x42A JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x48C JUMPI DUP2 PUSH1 0x20 PUSH2 0x489 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x3FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4A9 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x4C3 PUSH2 0x4BE DUP3 PUSH2 0x491 JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x500 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x4E7 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x4F5 DUP5 DUP7 PUSH2 0x1DD JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x4DA JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x523 JUMPI DUP2 PUSH1 0x20 PUSH2 0x520 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x580 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x57B JUMPI DUP4 PUSH2 0x554 SWAP2 DUP4 ADD PUSH2 0x46E JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x576 JUMPI PUSH2 0x573 SWAP3 ADD PUSH2 0x505 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST CALLVALUE PUSH2 0x5B4 JUMPI PUSH2 0x59E PUSH2 0x598 CALLDATASIZE PUSH1 0x4 PUSH2 0x528 JUMP JUMPDEST SWAP1 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH2 0x5B0 DUP2 PUSH2 0x20A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x5D2 PUSH2 0x5D7 SWAP2 PUSH2 0x5C1 JUMP JUMPDEST PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E4 SWAP1 SLOAD PUSH2 0x5C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EF PUSH2 0x5BD JUMP JUMPDEST POP PUSH2 0x5FA PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x60F PUSH2 0x619 SWAP3 PUSH2 0x8F JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x625 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x631 SWAP1 PUSH2 0x61C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x63D SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x649 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x65F DUP3 PUSH2 0x1C9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x67A JUMPI PUSH2 0x677 SWAP2 PUSH0 ADD PUSH2 0x652 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH2 0x687 PUSH2 0x72 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x698 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A4 SWAP1 PUSH2 0x68F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6B0 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x5BD JUMP JUMPDEST POP PUSH2 0x6F1 PUSH1 0x20 PUSH2 0x6DB PUSH2 0x6D6 PUSH2 0x6D1 PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST PUSH4 0x5AB1BD53 SWAP1 PUSH2 0x6E9 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x701 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7C7 JUMPI PUSH2 0x72B PUSH2 0x726 PUSH2 0x741 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x79A JUMPI JUMPDEST POP PUSH2 0x69B JUMP JUMPDEST PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x739 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x751 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x795 JUMPI PUSH0 SWAP2 PUSH2 0x767 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x788 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x78E JUMPI JUMPDEST PUSH2 0x780 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0x763 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x776 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x7BA SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x7C0 JUMPI JUMPDEST PUSH2 0x7B2 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0x720 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7A8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E3 PUSH2 0x7DE PUSH2 0x7E8 SWAP3 PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F4 SWAP1 PUSH2 0x7CF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x834 PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0x800 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x856 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x827 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x860 JUMPI JUMP JUMPDEST PUSH2 0x868 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x898 PUSH1 0x4 DUP3 ADD PUSH2 0x841 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8C0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x89C JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x8D3 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8EE PUSH2 0x8E9 PUSH2 0x8F5 SWAP3 PUSH2 0x8CA JUMP JUMPDEST PUSH2 0x8D6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x8A1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x92F SWAP1 PUSH2 0x929 PUSH2 0x909 PUSH0 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x923 PUSH2 0x91D PUSH2 0x918 PUSH0 PUSH2 0x7EB JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH2 0x859 JUMP JUMPDEST PUSH0 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x93A CALLER PUSH1 0x1 PUSH2 0x8D9 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x43616C6C61626C65206F6E6C792062792074686520726F757465720000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x970 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x979 DUP2 PUSH2 0x93C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x992 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x963 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x99C JUMPI JUMP JUMPDEST PUSH2 0x9A4 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x9D4 PUSH1 0x4 DUP3 ADD PUSH2 0x97D JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xA05 SWAP2 PUSH2 0xA00 CALLER PUSH2 0x9FA PUSH2 0x9F4 PUSH2 0x9EF PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH2 0x995 JUMP JUMPDEST PUSH2 0xB7E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA1B PUSH2 0xA16 PUSH2 0xA20 SWAP3 PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xA2F SWAP2 ADD PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xA6D DUP3 PUSH2 0xA32 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xA7E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xA36 JUMP JUMPDEST PUSH2 0xA8D SWAP1 MLOAD PUSH2 0xA8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA9A SWAP1 MLOAD PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAAF PUSH2 0xAAA DUP4 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0xAD4 JUMPI PUSH2 0xAC9 RETURNDATASIZE PUSH2 0xA9D JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0xADC PUSH2 0xAB4 JUMP JUMPDEST SWAP1 PUSH2 0xAD2 JUMP JUMPDEST PUSH0 PUSH32 0x42617463682063616C6C206661696C6564000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xB16 PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0xB1F DUP2 PUSH2 0xAE2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB38 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xB09 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xB42 JUMPI JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xB7A PUSH1 0x4 DUP3 ADD PUSH2 0xB23 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH2 0xB88 PUSH0 PUSH2 0xA07 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xBA4 PUSH2 0xB9E PUSH2 0xB99 DUP8 PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0xC12 JUMPI PUSH2 0xC0D SWAP1 PUSH2 0xC08 PUSH0 DUP1 PUSH2 0xBC9 DUP2 PUSH2 0xBC2 DUP11 DUP8 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD PUSH2 0xA83 JUMP JUMPDEST PUSH2 0xBE0 PUSH1 0x20 PUSH2 0xBD9 DUP12 DUP9 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD PUSH2 0xA90 JUMP JUMPDEST PUSH1 0x40 PUSH2 0xBED DUP12 DUP9 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP2 MLOAD SWAP3 GAS CALL PUSH2 0xC02 PUSH2 0xAB9 JUMP JUMPDEST POP PUSH2 0xB3B JUMP JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0xB89 JUMP JUMPDEST POP SWAP2 POP PUSH2 0xC27 SWAP1 PUSH2 0xC22 DUP2 PUSH2 0xE11 JUMP JUMPDEST PUSH2 0x1222 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xC33 SWAP2 PUSH2 0x9D8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xC46 DUP3 PUSH2 0x2E7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xC61 JUMPI PUSH2 0xC5E SWAP2 PUSH0 ADD PUSH2 0xC39 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xC74 DUP3 PUSH2 0xC66 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xC85 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xA36 JUMP JUMPDEST PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE SWAP1 JUMP JUMPDEST PUSH2 0xCAB SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB7 SWAP1 PUSH2 0xCA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC3 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCCF SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD0E PUSH2 0xD14 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2E4 JUMP JUMPDEST SWAP3 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0xD20 DUP4 DUP3 MUL PUSH2 0x2E4 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xD2F JUMPI JUMP JUMPDEST PUSH2 0xCD2 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD6D PUSH2 0xD73 SWAP2 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0xD7E JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0xD34 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xD91 DUP2 PUSH2 0xD83 JUMP JUMPDEST SUB PUSH2 0xD98 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xDA9 DUP3 PUSH2 0xD88 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xDC4 JUMPI PUSH2 0xDC1 SWAP2 PUSH0 ADD PUSH2 0xD9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH2 0xDD2 SWAP1 PUSH2 0x2E4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0xDF7 SWAP3 SWAP5 SWAP4 PUSH2 0xDF0 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0xB4 JUMP JUMPDEST ADD SWAP1 PUSH2 0xDC9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xE02 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE0E SWAP1 PUSH2 0xDF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE47 PUSH1 0x20 PUSH2 0xE31 PUSH2 0xE2C PUSH2 0xE27 PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST PUSH4 0x5AB1BD53 SWAP1 PUSH2 0xE3F PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xE57 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x11F1 JUMPI PUSH2 0xE72 SWAP2 PUSH0 SWAP2 PUSH2 0x11C3 JUMPI JUMPDEST POP PUSH2 0x69B JUMP JUMPDEST SWAP2 PUSH2 0xE97 PUSH1 0x20 PUSH2 0xE81 DUP6 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0xE8F PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xEA7 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x11BE JUMPI PUSH0 SWAP2 PUSH2 0x1190 JUMPI JUMPDEST POP SWAP3 PUSH2 0xEC3 PUSH2 0xC35 JUMP JUMPDEST POP PUSH2 0xEE8 PUSH1 0x20 PUSH2 0xED2 DUP4 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0xEE0 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xEF8 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x118B JUMPI PUSH2 0xF1A PUSH1 0x20 SWAP2 PUSH2 0xF30 SWAP4 PUSH0 SWAP2 PUSH2 0x115E JUMPI JUMPDEST POP SWAP4 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0xF28 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xF40 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1159 JUMPI PUSH0 SWAP2 PUSH2 0x112B JUMPI JUMPDEST POP SWAP2 PUSH2 0xF5D PUSH0 PUSH2 0xA07 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xF79 PUSH2 0xF73 PUSH2 0xF6E DUP6 PUSH2 0xC66 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x1123 JUMPI PUSH2 0xF92 PUSH2 0xF8D DUP4 DUP4 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xA83 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0xFAD PUSH2 0xFA7 PUSH2 0xFA2 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0xFF3 JUMPI PUSH2 0xFEE SWAP2 POP PUSH2 0xFE8 PUSH2 0xFDA PUSH2 0xFD3 PUSH2 0xFCB ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE DUP8 SWAP1 PUSH2 0xCFF JUMP JUMPDEST DUP8 SWAP1 PUSH2 0xD61 JUMP JUMPDEST PUSH2 0xFE3 DUP10 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x15ED JUMP JUMPDEST JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x103B PUSH1 0x20 PUSH2 0x1009 PUSH2 0x1004 DUP6 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1030 PUSH2 0x101B ADDRESS PUSH2 0xCC6 JUMP JUMPDEST SWAP3 PUSH2 0x1024 PUSH2 0x72 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x64C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xC1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x111E JUMPI PUSH2 0x1071 PUSH2 0x106B PUSH2 0x1064 PUSH2 0x1076 SWAP4 PUSH1 0x20 SWAP6 PUSH0 SWAP2 PUSH2 0x10F1 JUMPI JUMPDEST POP DUP10 SWAP1 PUSH2 0xCFF JUMP JUMPDEST DUP10 SWAP1 PUSH2 0xD61 JUMP JUMPDEST SWAP5 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x109B PUSH0 DUP12 SWAP4 SWAP7 PUSH2 0x10A6 PUSH2 0x108F PUSH2 0x72 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x64C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x10EC JUMPI PUSH2 0xFEE SWAP3 PUSH2 0x10C0 JUMPI JUMPDEST POP PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0x10E0 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x10E5 JUMPI JUMPDEST PUSH2 0x10D8 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x10BA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10CE JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x1111 SWAP2 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1117 JUMPI JUMPDEST PUSH2 0x1109 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0x105C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10FF JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST PUSH2 0x114C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1152 JUMPI JUMPDEST PUSH2 0x1144 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0xF52 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x113A JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x117E SWAP2 POP DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x1184 JUMPI JUMPDEST PUSH2 0x1176 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0xF13 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x116C JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x11B1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x11B7 JUMPI JUMPDEST PUSH2 0x11A9 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0xEB9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x119F JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x11E4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x11EA JUMPI JUMPDEST PUSH2 0x11DC DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0xE6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120D PUSH2 0x1208 PUSH2 0x1212 SWAP3 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x121F PUSH1 0xA PUSH2 0x11F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x122B DUP2 PUSH2 0xC66 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x123F PUSH2 0x1239 PUSH0 PUSH2 0xA07 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x1249 JUMPI JUMPDEST POP POP JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1253 PUSH2 0xC35 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1267 PUSH2 0x1261 DUP7 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x144C JUMPI PUSH2 0x1280 PUSH2 0x127B DUP5 DUP4 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xA83 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x129B PUSH2 0x1295 PUSH2 0x1290 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x12FD JUMPI PUSH2 0x12CF SWAP2 POP PUSH2 0x12B0 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE PUSH2 0x12C3 PUSH2 0x12BD PUSH0 PUSH2 0xA07 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x12D4 JUMPI JUMPDEST JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x1254 JUMP JUMPDEST PUSH2 0x12F8 PUSH2 0x12E8 PUSH2 0x12E3 PUSH0 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x12F1 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE SWAP1 PUSH2 0x15ED JUMP JUMPDEST PUSH2 0x12C9 JUMP JUMPDEST PUSH2 0x1345 PUSH1 0x20 PUSH2 0x1313 PUSH2 0x130E DUP6 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x133A PUSH2 0x1325 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST SWAP3 PUSH2 0x132E PUSH2 0x72 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x64C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xC1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1447 JUMPI PUSH0 SWAP2 PUSH2 0x1419 JUMPI JUMPDEST POP SWAP2 DUP3 PUSH2 0x1373 PUSH2 0x136D PUSH2 0x1368 PUSH2 0x1215 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x1384 JUMPI JUMPDEST POP PUSH2 0x12CF SWAP2 POP PUSH2 0x12CA JUMP JUMPDEST PUSH2 0x1397 PUSH2 0x1392 PUSH1 0x20 SWAP3 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x13C4 PUSH0 PUSH2 0x13AB DUP2 PUSH2 0x5DA JUMP JUMPDEST SWAP4 SWAP7 PUSH2 0x13CF PUSH2 0x13B8 PUSH2 0x72 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x64C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1414 JUMPI PUSH2 0x12CF SWAP3 PUSH2 0x13E8 JUMPI JUMPDEST PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x1408 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x140D JUMPI JUMPDEST PUSH2 0x1400 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x13E3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13F6 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x143A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1440 JUMPI JUMPDEST PUSH2 0x1432 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0x1357 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST POP SWAP2 POP POP PUSH0 DUP1 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x1460 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1497 PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x14A0 DUP2 PUSH2 0x1463 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x14B9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x148A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x14C3 JUMPI JUMP JUMPDEST PUSH2 0x14CB PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14FB PUSH1 0x4 DUP3 ADD PUSH2 0x14A4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1508 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x151B PUSH0 DUP1 SWAP3 PUSH2 0x150B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1528 SWAP1 PUSH2 0x1510 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 SWAP2 PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1585 PUSH1 0x3A PUSH1 0x40 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x158E DUP2 PUSH2 0x152B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x15A7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1578 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x15B1 JUMPI JUMP JUMPDEST PUSH2 0x15B9 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x15E9 PUSH1 0x4 DUP3 ADD PUSH2 0x1592 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1648 SWAP3 PUSH2 0x1622 DUP3 SWAP4 PUSH2 0x161D PUSH2 0x1603 ADDRESS PUSH2 0x1457 JUMP JUMPDEST BALANCE PUSH2 0x1616 PUSH2 0x1610 DUP7 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x14BC JUMP JUMPDEST PUSH2 0x14FF JUMP JUMPDEST SWAP1 PUSH2 0x162B PUSH2 0x72 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1636 DUP2 PUSH2 0x151F JUMP JUMPDEST SUB SWAP3 GAS CALL PUSH2 0x1642 PUSH2 0xAB9 JUMP JUMPDEST POP PUSH2 0x15AA JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 0xB0 0xB6 0xA5 DIV PUSH23 0x14F7DA4310B4DA483B8E1C4168E4E72E0645B14B479EA3 0xA8 PUSH29 0x3E64736F6C63430008190033A2646970667358221220B24300B1DAE695 INVALID SELFBALANCE STATICCALL BALANCE EXTCODESIZE PUSH11 0xEDF38C57EEEF26EC494A37 DUP15 0xBC DUP13 0x25 DUP7 0xBD EXTCODESIZE PUSH2 0x6473 PUSH16 0x6C634300081900330000000000000000 ","sourceMap":"1822:4573:59:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":975,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":365,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_bytes":{"entryPoint":864,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":1781,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":775,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":829,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":6109,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_fromMemory":{"entryPoint":7082,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_t_bytes32_fromMemory":{"entryPoint":6094,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":380,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint64":{"entryPoint":1766,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":517,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address":{"entryPoint":4437,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_to_address_nonPadded_inplace":{"entryPoint":4137,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":1006,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":993,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_BaluniV1Agent":{"entryPoint":1416,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":1593,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_packed_address":{"entryPoint":4158,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by":{"entryPoint":4991,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":4978,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":2159,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":2110,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral_4deb":{"entryPoint":6953,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_4ec0":{"entryPoint":7787,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ac0f":{"entryPoint":4287,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ac0fb0826e30aa98458c6cf9bc90efc135a5469e91a5eaca89259410b213a0ed":{"entryPoint":4261,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c069":{"entryPoint":3990,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":410,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":530,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_BaluniV1Agent":{"entryPoint":1429,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":1606,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral_4deb":{"entryPoint":6979,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_4ec0":{"entryPoint":7813,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_c069":{"entryPoint":4016,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":3542,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint64":{"entryPoint":3529,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_memory":{"entryPoint":708,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":8254,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":1966,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":290,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":729,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":1931,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes":{"entryPoint":4174,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":4180,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":2086,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":2090,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":333,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":3477,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":990,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":3170,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":3264,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_BaluniV1Agent":{"entryPoint":1316,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":1503,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":3303,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":4904,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":2719,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":3098,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":308,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":4947,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint32":{"entryPoint":6832,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":1733,"id":null,"parameterSlots":1,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":2750,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":2064,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":1278,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_BaluniV1Agent":{"entryPoint":7070,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":2373,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":6040,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":3482,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1AgentFactory_to_address":{"entryPoint":2906,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1Agent_to_address":{"entryPoint":1404,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1Agent_to_contract_BaluniV1Agent":{"entryPoint":4390,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1581,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":2431,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":6052,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":4935,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":5795,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":3129,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":2722,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":3101,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":4950,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint32":{"entryPoint":6841,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":4907,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":2053,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":4876,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1266,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_BaluniV1Agent":{"entryPoint":4378,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":2361,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":6028,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1238,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":3378,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":764,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2028,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2099,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2183,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_changeImplementation":{"entryPoint":1133,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_changeRegistry":{"entryPoint":466,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_changeRegistryAddress":{"entryPoint":415,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAgentAddress":{"entryPoint":551,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getOrCreateAgent":{"entryPoint":1878,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getRegistry":{"entryPoint":1080,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2236,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":1680,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":1027,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":1627,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":1826,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":1184,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":2287,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":933,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_userAgents":{"entryPoint":1450,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_contract_BaluniV1Agent":{"entryPoint":1341,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":1528,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":3195,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":3270,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_BaluniV1Agent":{"entryPoint":2570,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":2825,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":3316,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":8277,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":667,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":6793,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":6782,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":7737,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":7623,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":6814,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":6583,"id":193,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":6017,"id":12149,"parameterSlots":1,"returnSlots":0},"fun_changeImplementation":{"entryPoint":3070,"id":12053,"parameterSlots":0,"returnSlots":0},"fun_changeImplementation_inner":{"entryPoint":2969,"id":null,"parameterSlots":0,"returnSlots":0},"fun_changeRegistry":{"entryPoint":2550,"id":12334,"parameterSlots":1,"returnSlots":0},"fun_changeRegistryAddress":{"entryPoint":2499,"id":12359,"parameterSlots":1,"returnSlots":0},"fun_changeRegistryAddress_inner":{"entryPoint":2478,"id":null,"parameterSlots":1,"returnSlots":0},"fun_changeRegistry_inner":{"entryPoint":2529,"id":null,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":7521,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":8163,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":6457,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":5685,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":5807,"id":562,"parameterSlots":0,"returnSlots":0},"fun_cloneDeterministic":{"entryPoint":7904,"id":5819,"parameterSlots":2,"returnSlots":1},"fun_createAgent":{"entryPoint":7097,"id":12193,"parameterSlots":2,"returnSlots":1},"fun_functionDelegateCall":{"entryPoint":8318,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":8043,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getAgentAddress":{"entryPoint":2603,"id":12209,"parameterSlots":1,"returnSlots":1},"fun_getImplementation":{"entryPoint":7346,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":6727,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOrCreateAgent":{"entryPoint":4472,"id":12303,"parameterSlots":1,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":6691,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getRegistry":{"entryPoint":2858,"id":12345,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":5530,"id":12095,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":5393,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isContract":{"entryPoint":6869,"id":12320,"parameterSlots":1,"returnSlots":1},"fun_isInitializing":{"entryPoint":8365,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":7333,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_owner":{"entryPoint":3228,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":2806,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":2794,"id":null,"parameterSlots":1,"returnSlots":1},"fun_reinitialize":{"entryPoint":3939,"id":12139,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":3800,"id":null,"parameterSlots":2,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":3160,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":3141,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":8559,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":8046,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership":{"entryPoint":5674,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":5560,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":7384,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":6139,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":2683,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":2662,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":8395,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2075,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_registry":{"entryPoint":1566,"id":12021,"parameterSlots":0,"returnSlots":1},"getter_fun_userAgents":{"entryPoint":1379,"id":12018,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":1235,"id":null,"parameterSlots":1,"returnSlots":1},"leftAlign_address":{"entryPoint":4125,"id":null,"parameterSlots":1,"returnSlots":1},"leftAlign_uint160":{"entryPoint":4113,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_contract_BaluniV1Agent_of_address":{"entryPoint":1290,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":5012,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_notDelegated":{"entryPoint":2699,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":7604,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":6763,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":6804,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":2342,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_12031":{"entryPoint":2888,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_12146":{"entryPoint":6006,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_12325":{"entryPoint":2510,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":3080,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":5541,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":2642,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":3563,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x41":{"entryPoint":622,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":2934,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":3494,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_BaluniV1Agent":{"entryPoint":4402,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":2443,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":3406,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_contract_BaluniV1Agent":{"entryPoint":1365,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":1552,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":3215,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":3290,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_BaluniV1Agent":{"entryPoint":2590,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":2845,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":3336,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral_4deb":{"entryPoint":7003,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_4ec0":{"entryPoint":7837,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ac0f":{"entryPoint":4311,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_c069":{"entryPoint":4040,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_0cc013b6b3b6beabea4e3a74a6d380f0df81852ca99887912475e1f66b2a2c20":{"entryPoint":6064,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":604,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":2338,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":608,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":304,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":296,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":300,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":2918,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":612,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":2385,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":6068,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":3441,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_96":{"entryPoint":4107,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":2565,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":3258,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":284,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1312,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":1989,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_4deb429080cdc72dfa69065ca954584fabbfd87f9e50d29b6d9d8fd8a6d56106":{"entryPoint":6914,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73":{"entryPoint":7748,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ac0fb0826e30aa98458c6cf9bc90efc135a5469e91a5eaca89259410b213a0ed":{"entryPoint":4184,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c0699f179d2a1b62cb97d8e7fffb6f849ca18ed4e697b2f010f29e743716b888":{"entryPoint":3951,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":3349,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":3447,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":2390,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":2937,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":3497,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_BaluniV1Agent_to_contract_BaluniV1Agent":{"entryPoint":4405,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":2446,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":3409,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":345,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":6074,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":1746,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":2561,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":6824,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":8249,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":2695,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_contract_BaluniV1Agent":{"entryPoint":6910,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint32":{"entryPoint":6828,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":5824},{"length":32,"start":5957},{"length":32,"start":6474}]},"linkReferences":{},"object":"60806040526004361015610013575b610922565b61001d5f3561011c565b80630889e14c1461011757806315554c551461011257806327d54a921461010d5780634f1ef2861461010857806352d1902d146101035780635ab1bd53146100fe5780636c6be5f3146100f9578063715018a6146100f45780637811a785146100ef5780637b103999146100ea5780638da5cb5b146100e55780638f2248bc146100e05780639b76a5cd146100db578063ad3cb1cc146100d6578063c4d66de8146100d15763f2fde38b0361000e576108ef565b6108bc565b610887565b610756565b610722565b610690565b61065b565b6105aa565b6104a0565b61046d565b610438565b610403565b6103a5565b610227565b6101d2565b61019f565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61015690610134565b90565b6101628161014d565b0361016957565b5f80fd5b9050359061017a82610159565b565b9060208282031261019557610192915f0161016d565b90565b61012c565b5f0190565b346101cd576101b76101b236600461017c565b6109c3565b6101bf610122565b806101c98161019a565b0390f35b610128565b34610200576101ea6101e536600461017c565b6109f6565b6101f2610122565b806101fc8161019a565b0390f35b610128565b61020e9061014d565b9052565b9190610225905f60208501940190610205565b565b346102575761025361024261023d36600461017c565b610a2b565b61024a610122565b91829182610212565b0390f35b610128565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906102a590610264565b810190811067ffffffffffffffff8211176102bf57604052565b61026e565b906102d76102d0610122565b928361029b565b565b67ffffffffffffffff81116102f7576102f3602091610264565b0190565b61026e565b90825f939282370152565b9092919261031c610317826102d9565b6102c4565b9381855260208501908284011161033857610336926102fc565b565b610260565b9080601f8301121561035b5781602061035893359101610307565b90565b61025c565b9190916040818403126103a057610379835f830161016d565b92602082013567ffffffffffffffff811161039b57610398920161033d565b90565b610130565b61012c565b6103b96103b3366004610360565b90610a7b565b6103c1610122565b806103cb8161019a565b0390f35b5f9103126103d957565b61012c565b90565b6103ea906103de565b9052565b9190610401905f602085019401906103e1565b565b34610433576104133660046103cf565b61042f61041e610af6565b610426610122565b918291826103ee565b0390f35b610128565b34610468576104483660046103cf565b610464610453610b2a565b61045b610122565b91829182610212565b0390f35b610128565b3461049b5761047d3660046103cf565b610485610bfe565b61048d610122565b806104978161019a565b0390f35b610128565b346104ce576104b03660046103cf565b6104b8610c58565b6104c0610122565b806104ca8161019a565b0390f35b610128565b90565b6104ea6104e56104ef92610134565b6104d3565b610134565b90565b6104fb906104d6565b90565b610507906104f2565b90565b90610514906104fe565b5f5260205260405f2090565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61054d9060086105529302610520565b610524565b90565b90610560915461053d565b90565b610579906105746001915f9261050a565b610555565b90565b610585906104f2565b90565b6105919061057c565b9052565b91906105a8905f60208501940190610588565b565b346105da576105d66105c56105c036600461017c565b610563565b6105cd610122565b91829182610595565b0390f35b610128565b73ffffffffffffffffffffffffffffffffffffffff1690565b61060890600861060d9302610520565b6105df565b90565b9061061b91546105f8565b90565b61062a60025f90610610565b90565b610636906104f2565b90565b6106429061062d565b9052565b9190610659905f60208501940190610639565b565b3461068b5761066b3660046103cf565b61068761067661061e565b61067e610122565b91829182610646565b0390f35b610128565b346106c0576106a03660046103cf565b6106bc6106ab610c9c565b6106b3610122565b91829182610212565b0390f35b610128565b67ffffffffffffffff1690565b6106db816106c5565b036106e257565b5f80fd5b905035906106f3826106d2565b565b919060408382031261071d578061071161071a925f860161016d565b936020016106e6565b90565b61012c565b346107515761073b6107353660046106f5565b90610f63565b610743610122565b8061074d8161019a565b0390f35b610128565b346107865761078261077161076c36600461017c565b611178565b610779610122565b91829182610212565b0390f35b610128565b67ffffffffffffffff81116107a9576107a5602091610264565b0190565b61026e565b906107c06107bb8361078b565b6102c4565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6107f660056107ae565b90610803602083016107c5565b565b61080d6107ec565b90565b610818610805565b90565b610823610810565b90565b5190565b60209181520190565b90825f9392825e0152565b61085d61086660209361086b9361085481610826565b9384809361082a565b95869101610833565b610264565b0190565b6108849160208201915f81840391015261083e565b90565b346108b7576108973660046103cf565b6108b36108a261081b565b6108aa610122565b9182918261086f565b0390f35b610128565b346108ea576108d46108cf36600461017c565b61159a565b6108dc610122565b806108e68161019a565b0390f35b610128565b3461091d5761090761090236600461017c565b61162a565b61090f610122565b806109198161019a565b0390f35b610128565b5f80fd5b61093790610932611635565b6109ae565b565b610942906104d6565b90565b61094e90610939565b90565b5f1b90565b9061097573ffffffffffffffffffffffffffffffffffffffff91610951565b9181191691161790565b61098890610939565b90565b90565b906109a361099e6109aa9261097f565b61098b565b8254610956565b9055565b6109ba6109c191610945565b600261098e565b565b6109cc90610926565b565b6109df906109da611635565b6109e1565b565b6109ed6109f491610945565b600261098e565b565b6109ff906109ce565b565b5f90565b5f1c90565b610a16610a1b91610a05565b610524565b90565b610a289054610a0a565b90565b610a4a610a45610a4f92610a3d610a01565b50600161050a565b610a1e565b61057c565b90565b90610a6491610a5f6116af565b610a66565b565b90610a7991610a7481611781565b6117fb565b565b90610a8591610a52565b565b5f90565b610a9c90610a97611939565b610aea565b90565b90565b610ab6610ab1610abb92610a9f565b610951565b6103de565b90565b610ae77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610aa2565b90565b50610af3610abe565b90565b610b06610b01610a87565b610a8b565b90565b610b15610b1a91610a05565b6105df565b90565b610b279054610b09565b90565b610b32610a01565b50610b45610b406002610b1d565b61062d565b90565b610b50611635565b610b58610b99565b565b610b63906104f2565b90565b610b6e610122565b3d5f823e3d90fd5b90565b90610b8e610b89610b95926104fe565b610b76565b8254610956565b9055565b610ba230610b5a565b610baa610122565b9061181d820182811067ffffffffffffffff821117610bf9578291610bd69161181d6121d68539610212565b03905ff08015610bf457610bec610bf29161057c565b5f610b79565b565b610b66565b61026e565b610c06610b48565b565b610c10611635565b610c18610c45565b565b90565b610c31610c2c610c3692610c1a565b6104d3565b610134565b90565b610c4290610c1d565b90565b610c56610c515f610c39565b6119b7565b565b610c60610c08565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b610c87610c8c91610a05565b610c62565b90565b610c999054610c7b565b90565b610ca4610a01565b50610cb75f610cb1611a23565b01610c8f565b90565b60401c90565b60ff1690565b610cd2610cd791610cba565b610cc0565b90565b610ce49054610cc6565b90565b67ffffffffffffffff1690565b610d00610d0591610a05565b610ce7565b90565b610d129054610cf4565b90565b90610d2867ffffffffffffffff91610951565b9181191691161790565b610d46610d41610d4b926106c5565b6104d3565b6106c5565b90565b90565b90610d66610d61610d6d92610d32565b610d4e565b8254610d15565b9055565b60401b90565b90610d8b68ff000000000000000091610d71565b9181191691161790565b151590565b610da390610d95565b90565b90565b90610dbe610db9610dc592610d9a565b610da6565b8254610d77565b9055565b610dd2906106c5565b9052565b9190610de9905f60208501940190610dc9565b565b908091610df6611a47565b90610e025f8301610cda565b8015610eb3575b610e7757610e3c92610e3391610e21865f8601610d51565b610e2e60015f8601610da9565b610ed8565b5f809101610da9565b610e727fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291610e69610122565b91829182610dd6565b0390a1565b610e7f610122565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280610eaf6004820161019a565b0390fd5b50610ebf5f8301610d08565b610ed1610ecb866106c5565b916106c5565b1015610e09565b610efe9150610ef790610eea33611a89565b610ef2611a9e565b610945565b600261098e565b610f0730610b5a565b610f0f610122565b9061181d820182811067ffffffffffffffff821117610f5e578291610f3b9161181d6121d68539610212565b03905ff08015610f5957610f51610f579161057c565b5f610b79565b565b610b66565b61026e565b90610f6d91610deb565b565b5f7f4167656e7420666163746f7279206e6f74207365740000000000000000000000910152565b610fa3601560209261082a565b610fac81610f6f565b0190565b610fc59060208101905f818303910152610f96565b90565b15610fcf57565b610fd7610122565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061100760048201610fb0565b0390fd5b60601b90565b61101a9061100b565b90565b61102690611011565b90565b61103561103a9161014d565b61101d565b9052565b61104a81601493611029565b0190565b60200190565b5190565b60207f7472616374000000000000000000000000000000000000000000000000000000917f4167656e74206372656174696f6e206661696c65642c206e6f74206120636f6e5f8201520152565b6110b2602560409261082a565b6110bb81611058565b0190565b6110d49060208101905f8183039101526110a5565b90565b156110de57565b6110e6610122565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611116600482016110bf565b0390fd5b611123906104d6565b90565b61112f9061111a565b90565b90565b9061114a61114561115192611126565b611132565b8254610956565b9055565b91602061117692949361116f60408201965f830190610205565b0190610205565b565b61124561124061124a9261118a610a01565b506111b861119730610b5a565b6111b16111ab6111a65f610c39565b61014d565b9161014d565b1415610fc8565b6111d36111e2826111c7610122565b9283916020830161103e565b6020820181038252038261029b565b6111f46111ee82611054565b9161104e565b2061121161120c6112076001859061050a565b610a1e565b61057c565b61122b6112256112205f610c39565b61014d565b9161014d565b1480156112cf575b61124d575b50600161050a565b610a1e565b61057c565b90565b611258908290611bb9565b61127161126c6112678361057c565b611ad5565b6110d7565b611286816112816001859061050a565b611135565b611290829161057c565b7f8c6e353968e7ffd60dba22ff7d2a4354af301f9d41858a35668e7292ec1301b6916112c66112bd610122565b92839283611155565b0390a15f611238565b506112f46112ef6112ea6112e56001869061050a565b610a1e565b61057c565b611ad5565b6113066113005f610d95565b91610d95565b14611233565b61132061131b61132592610c1a565b6104d3565b6106c5565b90565b90565b61133f61133a61134492611328565b6104d3565b6106c5565b90565b611350906104f2565b90565b90565b61136a61136561136f92610c1a565b6104d3565b611353565b90565b61137b9061132b565b9052565b9190611392905f60208501940190611372565b565b61139c611a47565b906113b16113ab5f8401610cda565b15610d95565b906113bd5f8401610d08565b806113d06113ca5f61130c565b916106c5565b148061150a575b906113eb6113e5600161132b565b916106c5565b14806114e2575b6113fd909115610d95565b90816114d1575b506114955761142d9061142261141a600161132b565b5f8601610d51565b82611483575b611511565b611435575b50565b611442905f809101610da9565b600161147a7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611471610122565b9182918261137f565b0390a15f611432565b61149060015f8601610da9565b611428565b61149d610122565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806114cd6004820161019a565b0390fd5b6114dc915015610d95565b5f611404565b506113fd6114ef30611347565b3b6115026114fc5f611356565b91611353565b1490506113f2565b50826113d7565b61152e6115359161152133611a89565b611529611a9e565b610945565b600261098e565b61153e30610b5a565b611546610122565b9061181d820182811067ffffffffffffffff8211176115955782916115729161181d6121d68539610212565b03905ff080156115905761158861158e9161057c565b5f610b79565b565b610b66565b61026e565b6115a390611394565b565b6115b6906115b1611635565b6115b8565b565b806115d36115cd6115c85f610c39565b61014d565b9161014d565b146115e3576115e1906119b7565b565b6116266115ef5f610c39565b6115f7610122565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b611633906115a5565b565b61163d610c9c565b61165661165061164b611ca5565b61014d565b9161014d565b0361165d57565b61169f611668611ca5565b611670610122565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b6116ac906104f2565b90565b6116b8306116a3565b6116ea6116e47f000000000000000000000000000000000000000000000000000000000000000061014d565b9161014d565b148015611734575b6116f857565b611700610122565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806117306004820161019a565b0390fd5b5061173d611cb2565b61176f6117697f000000000000000000000000000000000000000000000000000000000000000061014d565b9161014d565b14156116f2565b5061177f611635565b565b61178a90611776565b565b611795906104d6565b90565b6117a19061178c565b90565b6117ad906104f2565b90565b5f80fd5b60e01b90565b6117c3816103de565b036117ca57565b5f80fd5b905051906117db826117ba565b565b906020828203126117f6576117f3915f016117ce565b90565b61012c565b9190611829602061181361180e86611798565b6117a4565b6352d1902d90611821610122565b9384926117b4565b825281806118396004820161019a565b03915afa80915f92611909575b50155f1461189a57505090600161185b57505b565b61189690611867610122565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b92836118b56118af6118aa610abe565b6103de565b916103de565b036118ca576118c5929350611cd8565b611859565b611905846118d6610122565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016103ee565b0390fd5b61192b91925060203d8111611932575b611923818361029b565b8101906117dd565b905f611846565b503d611919565b611942306116a3565b61197461196e7f000000000000000000000000000000000000000000000000000000000000000061014d565b9161014d565b0361197b57565b611983610122565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806119b36004820161019a565b0390fd5b6119bf611a23565b6119d76119cd5f8301610c8f565b915f849101610b79565b90611a0b611a057f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936104fe565b916104fe565b91611a14610122565b80611a1e8161019a565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b611a7c90611a77611d61565b611a7e565b565b611a8790611e39565b565b611a9290611a6b565b565b611a9c611d61565b565b611aa6611a94565b565b5f90565b5f90565b63ffffffff1690565b611acd611ac8611ad292610c1a565b6104d3565b611ab0565b90565b611add611aa8565b50611ae6611aac565b503b611afa611af45f611ab9565b91611ab0565b1190565b5f90565b5f7f7265676973747279206e6f742073657400000000000000000000000000000000910152565b611b36601060209261082a565b611b3f81611b02565b0190565b611b589060208101905f818303910152611b29565b90565b15611b6257565b611b6a610122565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611b9a60048201611b43565b0390fd5b611ba79061111a565b90565b5f910312611bb457565b61012c565b611c0a90611bc5611afe565b50611bfc611bdb611bd66002610b1d565b61062d565b611bf5611bef611bea5f610c39565b61014d565b9161014d565b1415611b5b565b611c055f610c8f565b611ee0565b611c1b611c1682611b9e565b61057c565b9163c4d66de890833b15611ca057611c5293611c475f8094611c3b610122565b978895869485936117b4565b835260048301610212565b03925af1918215611c9b57611c6c92611c6f575b50611b9e565b90565b611c8e905f3d8111611c94575b611c86818361029b565b810190611baa565b5f611c66565b503d611c7c565b610b66565b6117b0565b611cad610a01565b503390565b611cba610a01565b50611cd55f611ccf611cca610abe565b611f6b565b01610c8f565b90565b90611ce282611f6e565b81611d0d7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916104fe565b90611d16610122565b80611d208161019a565b0390a2611d2c81611054565b611d3e611d385f611356565b91611353565b115f14611d5257611d4e9161207e565b505b565b5050611d5c611fe3565b611d50565b611d72611d6c6120ad565b15610d95565b611d7857565b611d80610122565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280611db06004820161019a565b0390fd5b611dc590611dc0611d61565b611dc7565b565b80611de2611ddc611dd75f610c39565b61014d565b9161014d565b14611df257611df0906119b7565b565b611e35611dfe5f610c39565b611e06610122565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b611e4290611db4565b565b5f7f455243313136373a2063726561746532206661696c6564000000000000000000910152565b611e78601760209261082a565b611e8181611e44565b0190565b611e9a9060208101905f818303910152611e6b565b90565b15611ea457565b611eac610122565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611edc60048201611e85565b0390fd5b603790611eeb610a01565b50604051907f3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000825260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201525ff590611f6982611f62611f5c611f575f610c39565b61014d565b9161014d565b1415611e9d565b565b90565b803b611f82611f7c5f611356565b91611353565b14611fa457611fa2905f611f9c611f97610abe565b611f6b565b01610b79565b565b611fdf90611fb0610122565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b34611ff6611ff05f611356565b91611353565b11611ffd57565b612005610122565b7fb398979f000000000000000000000000000000000000000000000000000000008152806120356004820161019a565b0390fd5b606090565b9061205061204b836102d9565b6102c4565b918252565b3d5f14612070576120653d61203e565b903d5f602084013e5b565b612078612039565b9061206e565b5f806120aa9361208c612039565b508390602081019051915af4906120a1612055565b909190916120cb565b90565b6120b5611aa8565b506120c85f6120c2611a47565b01610cda565b90565b906120df906120d8612039565b5015610d95565b5f146120eb575061216f565b6120f482611054565b6121066121005f611356565b91611353565b1480612154575b612115575090565b61215090612121610122565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610212565b0390fd5b50803b6121696121635f611356565b91611353565b1461210d565b61217881611054565b61218a6121845f611356565b91611353565b115f1461219957805190602001fd5b6121a1610122565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806121d16004820161019a565b0390fdfe60806040523461002f576100196100146100f4565b61018f565b610021610034565b61168061019d823961168090f35b61003a565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100669061003e565b810190811060018060401b0382111761007e57604052565b610048565b9061009661008f610034565b928361005c565b565b5f80fd5b60018060a01b031690565b6100b09061009c565b90565b6100bc816100a7565b036100c357565b5f80fd5b905051906100d4826100b3565b565b906020828203126100ef576100ec915f016100c7565b90565b610098565b61011261181d8038038061010781610083565b9283398101906100d6565b90565b5f1b90565b9061012b60018060a01b0391610115565b9181191691161790565b90565b61014c6101476101519261009c565b610135565b61009c565b90565b61015d90610138565b90565b61016990610154565b90565b90565b9061018461017f61018b92610160565b61016c565b825461011a565b9055565b61019a90600161016f565b56fe60806040526004361015610013575b6105b9565b61001d5f3561006c565b806388cc58e4146100675780638da5cb5b14610062578063b0f479a11461005d578063c4d66de8146100585763eedc3c500361000e57610585565b61020f565b610190565b61015b565b6100d6565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261008a57565b61007c565b73ffffffffffffffffffffffffffffffffffffffff1690565b6100b19061008f565b90565b6100bd906100a8565b9052565b91906100d4905f602085019401906100b4565b565b34610106576100e6366004610080565b6101026100f16105e7565b6100f9610072565b918291826100c1565b0390f35b610078565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61013890600861013d930261010b565b61010f565b90565b9061014b9154610128565b90565b6101585f80610140565b90565b3461018b5761016b366004610080565b61018761017661014e565b61017e610072565b918291826100c1565b0390f35b610078565b346101c0576101a0366004610080565b6101bc6101ab6106b3565b6101b3610072565b918291826100c1565b0390f35b610078565b5f80fd5b6101d2816100a8565b036101d957565b5f80fd5b905035906101ea826101c9565b565b9060208282031261020557610202915f016101dd565b90565b61007c565b5f0190565b3461023d576102276102223660046101ec565b6108f9565b61022f610072565b806102398161020a565b0390f35b610078565b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061028790610246565b810190811067ffffffffffffffff8211176102a157604052565b610250565b906102b96102b2610072565b928361027d565b565b67ffffffffffffffff81116102d35760208091020190565b610250565b5f80fd5b5f80fd5b5f80fd5b90565b6102f0816102e4565b036102f757565b5f80fd5b90503590610308826102e7565b565b5f80fd5b67ffffffffffffffff811161032c57610328602091610246565b0190565b610250565b90825f939282370152565b9092919261035161034c8261030e565b6102a6565b9381855260208501908284011161036d5761036b92610331565b565b61030a565b9080601f830112156103905781602061038d9335910161033c565b90565b610242565b9190916060818403126103f9576103ac60606102a6565b926103b9815f84016101dd565b5f8501526103ca81602084016102fb565b6020850152604082013567ffffffffffffffff81116103f4576103ed9201610372565b6040830152565b6102e0565b6102dc565b92919061041261040d826102bb565b6102a6565b93818552602080860192028101918383116104695781905b838210610438575050505050565b813567ffffffffffffffff8111610464576020916104598784938701610395565b81520191019061042a565b610242565b6102d8565b9080601f8301121561048c57816020610489933591016103fe565b90565b610242565b67ffffffffffffffff81116104a95760208091020190565b610250565b909291926104c36104be82610491565b6102a6565b938185526020808601920283019281841161050057915b8383106104e75750505050565b602080916104f584866101dd565b8152019201916104da565b6102d8565b9080601f8301121561052357816020610520933591016104ae565b90565b610242565b919091604081840312610580575f81013567ffffffffffffffff811161057b578361055491830161046e565b92602082013567ffffffffffffffff8111610576576105739201610505565b90565b6101c5565b6101c5565b61007c565b346105b45761059e610598366004610528565b90610c29565b6105a6610072565b806105b08161020a565b0390f35b610078565b5f80fd5b5f90565b5f1c90565b6105d26105d7916105c1565b61010f565b90565b6105e490546105c6565b90565b6105ef6105bd565b506105fa60016105da565b90565b90565b61061461060f6106199261008f565b6105fd565b61008f565b90565b61062590610600565b90565b6106319061061c565b90565b61063d90610600565b90565b61064990610634565b90565b60e01b90565b9050519061065f826101c9565b565b9060208282031261067a57610677915f01610652565b90565b61007c565b610687610072565b3d5f823e3d90fd5b61069890610600565b90565b6106a49061068f565b90565b6106b090610634565b90565b6106bb6105bd565b506106f160206106db6106d66106d160016105da565b610628565b610640565b635ab1bd53906106e9610072565b93849261064c565b825281806107016004820161020a565b03915afa9081156107c75761072b610726610741936020935f9161079a575b5061069b565b6106a7565b6304cc732590610739610072565b93849261064c565b825281806107516004820161020a565b03915afa908115610795575f91610767575b5090565b610788915060203d811161078e575b610780818361027d565b810190610661565b5f610763565b503d610776565b61067f565b6107ba9150843d81116107c0575b6107b2818361027d565b810190610661565b5f610720565b503d6107a8565b61067f565b90565b6107e36107de6107e8926107cc565b6105fd565b61008f565b90565b6107f4906107cf565b90565b60209181520190565b5f7f416c726561647920696e697469616c697a656400000000000000000000000000910152565b61083460136020926107f7565b61083d81610800565b0190565b6108569060208101905f818303910152610827565b90565b1561086057565b610868610072565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061089860048201610841565b0390fd5b5f1b90565b906108c073ffffffffffffffffffffffffffffffffffffffff9161089c565b9181191691161790565b6108d390610634565b90565b90565b906108ee6108e96108f5926108ca565b6108d6565b82546108a1565b9055565b61092f906109296109095f6105da565b61092361091d6109185f6107eb565b6100a8565b916100a8565b14610859565b5f6108d9565b61093a3360016108d9565b565b5f7f43616c6c61626c65206f6e6c792062792074686520726f757465720000000000910152565b610970601b6020926107f7565b6109798161093c565b0190565b6109929060208101905f818303910152610963565b90565b1561099c57565b6109a4610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806109d46004820161097d565b0390fd5b90610a0591610a00336109fa6109f46109ef6106b3565b6100a8565b916100a8565b14610995565b610b7e565b565b610a1b610a16610a20926107cc565b6105fd565b6102e4565b90565b6001610a2f91016102e4565b90565b5190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90610a6d82610a32565b811015610a7e576020809102010190565b610a36565b610a8d90516100a8565b90565b610a9a90516102e4565b90565b90610aaf610aaa8361030e565b6102a6565b918252565b606090565b3d5f14610ad457610ac93d610a9d565b903d5f602084013e5b565b610adc610ab4565b90610ad2565b5f7f42617463682063616c6c206661696c6564000000000000000000000000000000910152565b610b1660116020926107f7565b610b1f81610ae2565b0190565b610b389060208101905f818303910152610b09565b90565b15610b4257565b610b4a610072565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610b7a60048201610b23565b0390fd5b91610b885f610a07565b5b80610ba4610b9e610b9987610a32565b6102e4565b916102e4565b1015610c1257610c0d90610c085f80610bc981610bc28a8790610a63565b5101610a83565b610be06020610bd98b8890610a63565b5101610a90565b6040610bed8b8890610a63565b51015190602082019151925af1610c02610ab9565b50610b3b565b610a23565b610b89565b509150610c2790610c2281610e11565b611222565b565b90610c33916109d8565b565b5f90565b90505190610c46826102e7565b565b90602082820312610c6157610c5e915f01610c39565b90565b61007c565b5190565b90610c7482610c66565b811015610c85576020809102010190565b610a36565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b610cab90610600565b90565b610cb790610ca2565b90565b610cc390610634565b90565b610ccf90610634565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610d0e610d14919392936102e4565b926102e4565b91610d208382026102e4565b928184041490151715610d2f57565b610cd2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b610d6d610d73916102e4565b916102e4565b908115610d7e570490565b610d34565b151590565b610d9181610d83565b03610d9857565b5f80fd5b90505190610da982610d88565b565b90602082820312610dc457610dc1915f01610d9c565b90565b61007c565b610dd2906102e4565b9052565b916020610df7929493610df060408201965f8301906100b4565b0190610dc9565b565b610e0290610600565b90565b610e0e90610df9565b90565b90610e476020610e31610e2c610e2760016105da565b610628565b610640565b635ab1bd5390610e3f610072565b93849261064c565b82528180610e576004820161020a565b03915afa80156111f157610e72915f916111c3575b5061069b565b91610e976020610e81856106a7565b6304cc732590610e8f610072565b93849261064c565b82528180610ea76004820161020a565b03915afa9081156111be575f91611190575b5092610ec3610c35565b50610ee86020610ed2836106a7565b6385462d6f90610ee0610072565b93849261064c565b82528180610ef86004820161020a565b03915afa801561118b57610f1a602091610f30935f9161115e575b50936106a7565b634f4608a290610f28610072565b93849261064c565b82528180610f406004820161020a565b03915afa908115611159575f9161112b575b5091610f5d5f610a07565b5b80610f79610f73610f6e85610c66565b6102e4565b916102e4565b101561112357610f92610f8d838390610c6a565b610a83565b9081610fad610fa7610fa2610c8a565b6100a8565b916100a8565b145f14610ff357610fee9150610fe8610fda610fd3610fcb30610cc6565b318790610cff565b8790610d61565b610fe389610e05565b6115ed565b5b610a23565b610f5e565b61103b602061100961100485610cae565b610cba565b6370a082319061103061101b30610cc6565b92611024610072565b9586948593849361064c565b8352600483016100c1565b03915afa801561111e5761107161106b611064611076936020955f916110f1575b508990610cff565b8990610d61565b94610cae565b610cba565b9263a9059cbb9361109b5f8b93966110a661108f610072565b9889968795869461064c565b845260048401610dd6565b03925af19182156110ec57610fee926110c0575b50610fe9565b6110e09060203d81116110e5575b6110d8818361027d565b810190610dab565b6110ba565b503d6110ce565b61067f565b6111119150863d8111611117575b611109818361027d565b810190610c48565b5f61105c565b503d6110ff565b61067f565b505050509050565b61114c915060203d8111611152575b611144818361027d565b810190610c48565b5f610f52565b503d61113a565b61067f565b61117e9150833d8111611184575b611176818361027d565b810190610c48565b5f610f13565b503d61116c565b61067f565b6111b1915060203d81116111b7575b6111a9818361027d565b810190610661565b5f610eb9565b503d61119f565b61067f565b6111e4915060203d81116111ea575b6111dc818361027d565b810190610661565b5f610e6c565b503d6111d2565b61067f565b90565b61120d611208611212926111f6565b6105fd565b6102e4565b90565b61121f600a6111f9565b90565b61122b81610c66565b908161123f6112395f610a07565b916102e4565b11611249575b5050565b9091611253610c35565b5b80611267611261866102e4565b916102e4565b101561144c5761128061127b848390610c6a565b610a83565b908161129b611295611290610c8a565b6100a8565b916100a8565b145f146112fd576112cf91506112b030610cc6565b316112c36112bd5f610a07565b916102e4565b116112d4575b5b610a23565b611254565b6112f86112e86112e35f6105da565b610e05565b6112f130610cc6565b31906115ed565b6112c9565b611345602061131361130e85610cae565b610cba565b6370a082319061133a61132530610cc6565b9261132e610072565b9586948593849361064c565b8352600483016100c1565b03915afa908115611447575f91611419575b50918261137361136d611368611215565b6102e4565b916102e4565b11611384575b506112cf91506112ca565b611397611392602092610cae565b610cba565b9263a9059cbb936113c45f6113ab816105da565b93966113cf6113b8610072565b9889968795869461064c565b845260048401610dd6565b03925af1918215611414576112cf926113e8575b611379565b6114089060203d811161140d575b611400818361027d565b810190610dab565b6113e3565b503d6113f6565b61067f565b61143a915060203d8111611440575b611432818361027d565b810190610c48565b5f611357565b503d611428565b61067f565b509150505f80611245565b61146090610634565b90565b5f7f416464726573733a20696e73756666696369656e742062616c616e6365000000910152565b611497601d6020926107f7565b6114a081611463565b0190565b6114b99060208101905f81830391015261148a565b90565b156114c357565b6114cb610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806114fb600482016114a4565b0390fd5b61150890610634565b90565b905090565b61151b5f809261150b565b0190565b61152890611510565b90565b60207f6563697069656e74206d61792068617665207265766572746564000000000000917f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201520152565b611585603a6040926107f7565b61158e8161152b565b0190565b6115a79060208101905f818303910152611578565b90565b156115b157565b6115b9610072565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806115e960048201611592565b0390fd5b5f61164892611622829361161d61160330611457565b31611616611610866102e4565b916102e4565b10156114bc565b6114ff565b9061162b610072565b90816116368161151f565b03925af1611642610ab9565b506115aa565b56fea2646970667358221220c7b0b6a5047614f7da4310b4da483b8e1c4168e4e72e0645b14b479ea3a87c3e64736f6c63430008190033a2646970667358221220b24300b1dae695fe47fa313b6aedf38c57eeef26ec494a378ebc8c2586bd3b6164736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x11C JUMP JUMPDEST DUP1 PUSH4 0x889E14C EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x15554C55 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0x27D54A92 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x103 JUMPI DUP1 PUSH4 0x5AB1BD53 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x6C6BE5F3 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x7811A785 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0x9B76A5CD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xD1 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0x8EF JUMP JUMPDEST PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x887 JUMP JUMPDEST PUSH2 0x756 JUMP JUMPDEST PUSH2 0x722 JUMP JUMPDEST PUSH2 0x690 JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x4A0 JUMP JUMPDEST PUSH2 0x46D JUMP JUMPDEST PUSH2 0x438 JUMP JUMPDEST PUSH2 0x403 JUMP JUMPDEST PUSH2 0x3A5 JUMP JUMPDEST PUSH2 0x227 JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST PUSH2 0x19F JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x156 SWAP1 PUSH2 0x134 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x162 DUP2 PUSH2 0x14D JUMP JUMPDEST SUB PUSH2 0x169 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x17A DUP3 PUSH2 0x159 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x195 JUMPI PUSH2 0x192 SWAP2 PUSH0 ADD PUSH2 0x16D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1CD JUMPI PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x1C9 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x200 JUMPI PUSH2 0x1EA PUSH2 0x1E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x1FC DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH2 0x20E SWAP1 PUSH2 0x14D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x225 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x205 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x257 JUMPI PUSH2 0x253 PUSH2 0x242 PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0xA2B JUMP JUMPDEST PUSH2 0x24A PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x2A5 SWAP1 PUSH2 0x264 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2BF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST SWAP1 PUSH2 0x2D7 PUSH2 0x2D0 PUSH2 0x122 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x29B JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2F7 JUMPI PUSH2 0x2F3 PUSH1 0x20 SWAP2 PUSH2 0x264 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x31C PUSH2 0x317 DUP3 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0x2C4 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x338 JUMPI PUSH2 0x336 SWAP3 PUSH2 0x2FC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x260 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP2 PUSH1 0x20 PUSH2 0x358 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x307 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x3A0 JUMPI PUSH2 0x379 DUP4 PUSH0 DUP4 ADD PUSH2 0x16D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x39B JUMPI PUSH2 0x398 SWAP3 ADD PUSH2 0x33D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x130 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST PUSH2 0x3B9 PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x360 JUMP JUMPDEST SWAP1 PUSH2 0xA7B JUMP JUMPDEST PUSH2 0x3C1 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x3CB DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x3D9 JUMPI JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EA SWAP1 PUSH2 0x3DE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x401 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3E1 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x433 JUMPI PUSH2 0x413 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x42F PUSH2 0x41E PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x426 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3EE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x468 JUMPI PUSH2 0x448 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x464 PUSH2 0x453 PUSH2 0xB2A JUMP JUMPDEST PUSH2 0x45B PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x49B JUMPI PUSH2 0x47D CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x485 PUSH2 0xBFE JUMP JUMPDEST PUSH2 0x48D PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x497 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x4CE JUMPI PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x4B8 PUSH2 0xC58 JUMP JUMPDEST PUSH2 0x4C0 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x4CA DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4EA PUSH2 0x4E5 PUSH2 0x4EF SWAP3 PUSH2 0x134 JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x134 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FB SWAP1 PUSH2 0x4D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x507 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x514 SWAP1 PUSH2 0x4FE JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x54D SWAP1 PUSH1 0x8 PUSH2 0x552 SWAP4 MUL PUSH2 0x520 JUMP JUMPDEST PUSH2 0x524 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x560 SWAP2 SLOAD PUSH2 0x53D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x579 SWAP1 PUSH2 0x574 PUSH1 0x1 SWAP2 PUSH0 SWAP3 PUSH2 0x50A JUMP JUMPDEST PUSH2 0x555 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x585 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x591 SWAP1 PUSH2 0x57C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5A8 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x588 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5DA JUMPI PUSH2 0x5D6 PUSH2 0x5C5 PUSH2 0x5C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x563 JUMP JUMPDEST PUSH2 0x5CD PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x595 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x608 SWAP1 PUSH1 0x8 PUSH2 0x60D SWAP4 MUL PUSH2 0x520 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x61B SWAP2 SLOAD PUSH2 0x5F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x62A PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x610 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x636 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x642 SWAP1 PUSH2 0x62D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x659 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x639 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x68B JUMPI PUSH2 0x66B CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x687 PUSH2 0x676 PUSH2 0x61E JUMP JUMPDEST PUSH2 0x67E PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x646 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x6C0 JUMPI PUSH2 0x6A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x6BC PUSH2 0x6AB PUSH2 0xC9C JUMP JUMPDEST PUSH2 0x6B3 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6DB DUP2 PUSH2 0x6C5 JUMP JUMPDEST SUB PUSH2 0x6E2 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x6F3 DUP3 PUSH2 0x6D2 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x71D JUMPI DUP1 PUSH2 0x711 PUSH2 0x71A SWAP3 PUSH0 DUP7 ADD PUSH2 0x16D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x6E6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST CALLVALUE PUSH2 0x751 JUMPI PUSH2 0x73B PUSH2 0x735 CALLDATASIZE PUSH1 0x4 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 PUSH2 0xF63 JUMP JUMPDEST PUSH2 0x743 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x74D DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x786 JUMPI PUSH2 0x782 PUSH2 0x771 PUSH2 0x76C CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x1178 JUMP JUMPDEST PUSH2 0x779 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7A9 JUMPI PUSH2 0x7A5 PUSH1 0x20 SWAP2 PUSH2 0x264 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST SWAP1 PUSH2 0x7C0 PUSH2 0x7BB DUP4 PUSH2 0x78B JUMP JUMPDEST PUSH2 0x2C4 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x7F6 PUSH1 0x5 PUSH2 0x7AE JUMP JUMPDEST SWAP1 PUSH2 0x803 PUSH1 0x20 DUP4 ADD PUSH2 0x7C5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x80D PUSH2 0x7EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x818 PUSH2 0x805 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x823 PUSH2 0x810 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x85D PUSH2 0x866 PUSH1 0x20 SWAP4 PUSH2 0x86B SWAP4 PUSH2 0x854 DUP2 PUSH2 0x826 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x82A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x833 JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x884 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x83E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8B7 JUMPI PUSH2 0x897 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x8B3 PUSH2 0x8A2 PUSH2 0x81B JUMP JUMPDEST PUSH2 0x8AA PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x86F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x8EA JUMPI PUSH2 0x8D4 PUSH2 0x8CF CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x159A JUMP JUMPDEST PUSH2 0x8DC PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x8E6 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST CALLVALUE PUSH2 0x91D JUMPI PUSH2 0x907 PUSH2 0x902 CALLDATASIZE PUSH1 0x4 PUSH2 0x17C JUMP JUMPDEST PUSH2 0x162A JUMP JUMPDEST PUSH2 0x90F PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x919 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x937 SWAP1 PUSH2 0x932 PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x9AE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x942 SWAP1 PUSH2 0x4D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x94E SWAP1 PUSH2 0x939 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x975 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x951 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x988 SWAP1 PUSH2 0x939 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x9A3 PUSH2 0x99E PUSH2 0x9AA SWAP3 PUSH2 0x97F JUMP JUMPDEST PUSH2 0x98B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x956 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x9BA PUSH2 0x9C1 SWAP2 PUSH2 0x945 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x98E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9CC SWAP1 PUSH2 0x926 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9DF SWAP1 PUSH2 0x9DA PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x9E1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9ED PUSH2 0x9F4 SWAP2 PUSH2 0x945 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x98E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9FF SWAP1 PUSH2 0x9CE JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0xA16 PUSH2 0xA1B SWAP2 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x524 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA28 SWAP1 SLOAD PUSH2 0xA0A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA4A PUSH2 0xA45 PUSH2 0xA4F SWAP3 PUSH2 0xA3D PUSH2 0xA01 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA64 SWAP2 PUSH2 0xA5F PUSH2 0x16AF JUMP JUMPDEST PUSH2 0xA66 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xA79 SWAP2 PUSH2 0xA74 DUP2 PUSH2 0x1781 JUMP JUMPDEST PUSH2 0x17FB JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xA85 SWAP2 PUSH2 0xA52 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xA9C SWAP1 PUSH2 0xA97 PUSH2 0x1939 JUMP JUMPDEST PUSH2 0xAEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAB6 PUSH2 0xAB1 PUSH2 0xABB SWAP3 PUSH2 0xA9F JUMP JUMPDEST PUSH2 0x951 JUMP JUMPDEST PUSH2 0x3DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAE7 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0xAA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0xAF3 PUSH2 0xABE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB06 PUSH2 0xB01 PUSH2 0xA87 JUMP JUMPDEST PUSH2 0xA8B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB15 PUSH2 0xB1A SWAP2 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB27 SWAP1 SLOAD PUSH2 0xB09 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB32 PUSH2 0xA01 JUMP JUMPDEST POP PUSH2 0xB45 PUSH2 0xB40 PUSH1 0x2 PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB50 PUSH2 0x1635 JUMP JUMPDEST PUSH2 0xB58 PUSH2 0xB99 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB63 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB6E PUSH2 0x122 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB8E PUSH2 0xB89 PUSH2 0xB95 SWAP3 PUSH2 0x4FE JUMP JUMPDEST PUSH2 0xB76 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x956 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA2 ADDRESS PUSH2 0xB5A JUMP JUMPDEST PUSH2 0xBAA PUSH2 0x122 JUMP JUMPDEST SWAP1 PUSH2 0x181D DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xBF9 JUMPI DUP3 SWAP2 PUSH2 0xBD6 SWAP2 PUSH2 0x181D PUSH2 0x21D6 DUP6 CODECOPY PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 PUSH0 CREATE DUP1 ISZERO PUSH2 0xBF4 JUMPI PUSH2 0xBEC PUSH2 0xBF2 SWAP2 PUSH2 0x57C JUMP JUMPDEST PUSH0 PUSH2 0xB79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB66 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST PUSH2 0xC06 PUSH2 0xB48 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC10 PUSH2 0x1635 JUMP JUMPDEST PUSH2 0xC18 PUSH2 0xC45 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC31 PUSH2 0xC2C PUSH2 0xC36 SWAP3 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x134 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC42 SWAP1 PUSH2 0xC1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC56 PUSH2 0xC51 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x19B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC60 PUSH2 0xC08 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xC87 PUSH2 0xC8C SWAP2 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0xC62 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC99 SWAP1 SLOAD PUSH2 0xC7B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA4 PUSH2 0xA01 JUMP JUMPDEST POP PUSH2 0xCB7 PUSH0 PUSH2 0xCB1 PUSH2 0x1A23 JUMP JUMPDEST ADD PUSH2 0xC8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xCD2 PUSH2 0xCD7 SWAP2 PUSH2 0xCBA JUMP JUMPDEST PUSH2 0xCC0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCE4 SWAP1 SLOAD PUSH2 0xCC6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD00 PUSH2 0xD05 SWAP2 PUSH2 0xA05 JUMP JUMPDEST PUSH2 0xCE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD12 SWAP1 SLOAD PUSH2 0xCF4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD28 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x951 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0xD46 PUSH2 0xD41 PUSH2 0xD4B SWAP3 PUSH2 0x6C5 JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x6C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD66 PUSH2 0xD61 PUSH2 0xD6D SWAP3 PUSH2 0xD32 JUMP JUMPDEST PUSH2 0xD4E JUMP JUMPDEST DUP3 SLOAD PUSH2 0xD15 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD8B PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0xD71 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xDA3 SWAP1 PUSH2 0xD95 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xDBE PUSH2 0xDB9 PUSH2 0xDC5 SWAP3 PUSH2 0xD9A JUMP JUMPDEST PUSH2 0xDA6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0xD77 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDD2 SWAP1 PUSH2 0x6C5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xDE9 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xDC9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0xDF6 PUSH2 0x1A47 JUMP JUMPDEST SWAP1 PUSH2 0xE02 PUSH0 DUP4 ADD PUSH2 0xCDA JUMP JUMPDEST DUP1 ISZERO PUSH2 0xEB3 JUMPI JUMPDEST PUSH2 0xE77 JUMPI PUSH2 0xE3C SWAP3 PUSH2 0xE33 SWAP2 PUSH2 0xE21 DUP7 PUSH0 DUP7 ADD PUSH2 0xD51 JUMP JUMPDEST PUSH2 0xE2E PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0xED8 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0xE72 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0xE69 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0xE7F PUSH2 0x122 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xEAF PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0xEBF PUSH0 DUP4 ADD PUSH2 0xD08 JUMP JUMPDEST PUSH2 0xED1 PUSH2 0xECB DUP7 PUSH2 0x6C5 JUMP JUMPDEST SWAP2 PUSH2 0x6C5 JUMP JUMPDEST LT ISZERO PUSH2 0xE09 JUMP JUMPDEST PUSH2 0xEFE SWAP2 POP PUSH2 0xEF7 SWAP1 PUSH2 0xEEA CALLER PUSH2 0x1A89 JUMP JUMPDEST PUSH2 0xEF2 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x98E JUMP JUMPDEST PUSH2 0xF07 ADDRESS PUSH2 0xB5A JUMP JUMPDEST PUSH2 0xF0F PUSH2 0x122 JUMP JUMPDEST SWAP1 PUSH2 0x181D DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF5E JUMPI DUP3 SWAP2 PUSH2 0xF3B SWAP2 PUSH2 0x181D PUSH2 0x21D6 DUP6 CODECOPY PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 PUSH0 CREATE DUP1 ISZERO PUSH2 0xF59 JUMPI PUSH2 0xF51 PUSH2 0xF57 SWAP2 PUSH2 0x57C JUMP JUMPDEST PUSH0 PUSH2 0xB79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB66 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST SWAP1 PUSH2 0xF6D SWAP2 PUSH2 0xDEB JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x4167656E7420666163746F7279206E6F74207365740000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xFA3 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x82A JUMP JUMPDEST PUSH2 0xFAC DUP2 PUSH2 0xF6F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xFC5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xF96 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xFCF JUMPI JUMP JUMPDEST PUSH2 0xFD7 PUSH2 0x122 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1007 PUSH1 0x4 DUP3 ADD PUSH2 0xFB0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x101A SWAP1 PUSH2 0x100B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1026 SWAP1 PUSH2 0x1011 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1035 PUSH2 0x103A SWAP2 PUSH2 0x14D JUMP JUMPDEST PUSH2 0x101D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x104A DUP2 PUSH1 0x14 SWAP4 PUSH2 0x1029 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x7472616374000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x4167656E74206372656174696F6E206661696C65642C206E6F74206120636F6E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x10B2 PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x82A JUMP JUMPDEST PUSH2 0x10BB DUP2 PUSH2 0x1058 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x10D4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x10DE JUMPI JUMP JUMPDEST PUSH2 0x10E6 PUSH2 0x122 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1116 PUSH1 0x4 DUP3 ADD PUSH2 0x10BF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1123 SWAP1 PUSH2 0x4D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x112F SWAP1 PUSH2 0x111A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x114A PUSH2 0x1145 PUSH2 0x1151 SWAP3 PUSH2 0x1126 JUMP JUMPDEST PUSH2 0x1132 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x956 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1176 SWAP3 SWAP5 SWAP4 PUSH2 0x116F PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x205 JUMP JUMPDEST ADD SWAP1 PUSH2 0x205 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1245 PUSH2 0x1240 PUSH2 0x124A SWAP3 PUSH2 0x118A PUSH2 0xA01 JUMP JUMPDEST POP PUSH2 0x11B8 PUSH2 0x1197 ADDRESS PUSH2 0xB5A JUMP JUMPDEST PUSH2 0x11B1 PUSH2 0x11AB PUSH2 0x11A6 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ ISZERO PUSH2 0xFC8 JUMP JUMPDEST PUSH2 0x11D3 PUSH2 0x11E2 DUP3 PUSH2 0x11C7 PUSH2 0x122 JUMP JUMPDEST SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD PUSH2 0x103E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE SUB DUP3 PUSH2 0x29B JUMP JUMPDEST PUSH2 0x11F4 PUSH2 0x11EE DUP3 PUSH2 0x1054 JUMP JUMPDEST SWAP2 PUSH2 0x104E JUMP JUMPDEST KECCAK256 PUSH2 0x1211 PUSH2 0x120C PUSH2 0x1207 PUSH1 0x1 DUP6 SWAP1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST PUSH2 0x122B PUSH2 0x1225 PUSH2 0x1220 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x12CF JUMPI JUMPDEST PUSH2 0x124D JUMPI JUMPDEST POP PUSH1 0x1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1258 SWAP1 DUP3 SWAP1 PUSH2 0x1BB9 JUMP JUMPDEST PUSH2 0x1271 PUSH2 0x126C PUSH2 0x1267 DUP4 PUSH2 0x57C JUMP JUMPDEST PUSH2 0x1AD5 JUMP JUMPDEST PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x1286 DUP2 PUSH2 0x1281 PUSH1 0x1 DUP6 SWAP1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0x1135 JUMP JUMPDEST PUSH2 0x1290 DUP3 SWAP2 PUSH2 0x57C JUMP JUMPDEST PUSH32 0x8C6E353968E7FFD60DBA22FF7D2A4354AF301F9D41858A35668E7292EC1301B6 SWAP2 PUSH2 0x12C6 PUSH2 0x12BD PUSH2 0x122 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1155 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1238 JUMP JUMPDEST POP PUSH2 0x12F4 PUSH2 0x12EF PUSH2 0x12EA PUSH2 0x12E5 PUSH1 0x1 DUP7 SWAP1 PUSH2 0x50A JUMP JUMPDEST PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST PUSH2 0x1AD5 JUMP JUMPDEST PUSH2 0x1306 PUSH2 0x1300 PUSH0 PUSH2 0xD95 JUMP JUMPDEST SWAP2 PUSH2 0xD95 JUMP JUMPDEST EQ PUSH2 0x1233 JUMP JUMPDEST PUSH2 0x1320 PUSH2 0x131B PUSH2 0x1325 SWAP3 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x6C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x133F PUSH2 0x133A PUSH2 0x1344 SWAP3 PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x6C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1350 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x136A PUSH2 0x1365 PUSH2 0x136F SWAP3 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1353 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x137B SWAP1 PUSH2 0x132B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1392 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1372 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x139C PUSH2 0x1A47 JUMP JUMPDEST SWAP1 PUSH2 0x13B1 PUSH2 0x13AB PUSH0 DUP5 ADD PUSH2 0xCDA JUMP JUMPDEST ISZERO PUSH2 0xD95 JUMP JUMPDEST SWAP1 PUSH2 0x13BD PUSH0 DUP5 ADD PUSH2 0xD08 JUMP JUMPDEST DUP1 PUSH2 0x13D0 PUSH2 0x13CA PUSH0 PUSH2 0x130C JUMP JUMPDEST SWAP2 PUSH2 0x6C5 JUMP JUMPDEST EQ DUP1 PUSH2 0x150A JUMPI JUMPDEST SWAP1 PUSH2 0x13EB PUSH2 0x13E5 PUSH1 0x1 PUSH2 0x132B JUMP JUMPDEST SWAP2 PUSH2 0x6C5 JUMP JUMPDEST EQ DUP1 PUSH2 0x14E2 JUMPI JUMPDEST PUSH2 0x13FD SWAP1 SWAP2 ISZERO PUSH2 0xD95 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x14D1 JUMPI JUMPDEST POP PUSH2 0x1495 JUMPI PUSH2 0x142D SWAP1 PUSH2 0x1422 PUSH2 0x141A PUSH1 0x1 PUSH2 0x132B JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0xD51 JUMP JUMPDEST DUP3 PUSH2 0x1483 JUMPI JUMPDEST PUSH2 0x1511 JUMP JUMPDEST PUSH2 0x1435 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1442 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x147A PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1471 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x137F JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1432 JUMP JUMPDEST PUSH2 0x1490 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x149D PUSH2 0x122 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14CD PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x14DC SWAP2 POP ISZERO PUSH2 0xD95 JUMP JUMPDEST PUSH0 PUSH2 0x1404 JUMP JUMPDEST POP PUSH2 0x13FD PUSH2 0x14EF ADDRESS PUSH2 0x1347 JUMP JUMPDEST EXTCODESIZE PUSH2 0x1502 PUSH2 0x14FC PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x13F2 JUMP JUMPDEST POP DUP3 PUSH2 0x13D7 JUMP JUMPDEST PUSH2 0x152E PUSH2 0x1535 SWAP2 PUSH2 0x1521 CALLER PUSH2 0x1A89 JUMP JUMPDEST PUSH2 0x1529 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x98E JUMP JUMPDEST PUSH2 0x153E ADDRESS PUSH2 0xB5A JUMP JUMPDEST PUSH2 0x1546 PUSH2 0x122 JUMP JUMPDEST SWAP1 PUSH2 0x181D DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1595 JUMPI DUP3 SWAP2 PUSH2 0x1572 SWAP2 PUSH2 0x181D PUSH2 0x21D6 DUP6 CODECOPY PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 PUSH0 CREATE DUP1 ISZERO PUSH2 0x1590 JUMPI PUSH2 0x1588 PUSH2 0x158E SWAP2 PUSH2 0x57C JUMP JUMPDEST PUSH0 PUSH2 0xB79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB66 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST PUSH2 0x15A3 SWAP1 PUSH2 0x1394 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x15B6 SWAP1 PUSH2 0x15B1 PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x15B8 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x15D3 PUSH2 0x15CD PUSH2 0x15C8 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ PUSH2 0x15E3 JUMPI PUSH2 0x15E1 SWAP1 PUSH2 0x19B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1626 PUSH2 0x15EF PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x15F7 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1633 SWAP1 PUSH2 0x15A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x163D PUSH2 0xC9C JUMP JUMPDEST PUSH2 0x1656 PUSH2 0x1650 PUSH2 0x164B PUSH2 0x1CA5 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST SUB PUSH2 0x165D JUMPI JUMP JUMPDEST PUSH2 0x169F PUSH2 0x1668 PUSH2 0x1CA5 JUMP JUMPDEST PUSH2 0x1670 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x16AC SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16B8 ADDRESS PUSH2 0x16A3 JUMP JUMPDEST PUSH2 0x16EA PUSH2 0x16E4 PUSH32 0x0 PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x1734 JUMPI JUMPDEST PUSH2 0x16F8 JUMPI JUMP JUMPDEST PUSH2 0x1700 PUSH2 0x122 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1730 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x173D PUSH2 0x1CB2 JUMP JUMPDEST PUSH2 0x176F PUSH2 0x1769 PUSH32 0x0 PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ ISZERO PUSH2 0x16F2 JUMP JUMPDEST POP PUSH2 0x177F PUSH2 0x1635 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x178A SWAP1 PUSH2 0x1776 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1795 SWAP1 PUSH2 0x4D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17A1 SWAP1 PUSH2 0x178C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17AD SWAP1 PUSH2 0x4F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x17C3 DUP2 PUSH2 0x3DE JUMP JUMPDEST SUB PUSH2 0x17CA JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x17DB DUP3 PUSH2 0x17BA JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x17F6 JUMPI PUSH2 0x17F3 SWAP2 PUSH0 ADD PUSH2 0x17CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1829 PUSH1 0x20 PUSH2 0x1813 PUSH2 0x180E DUP7 PUSH2 0x1798 JUMP JUMPDEST PUSH2 0x17A4 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x1821 PUSH2 0x122 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x17B4 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1839 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x1909 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x189A JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x185B JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x1896 SWAP1 PUSH2 0x1867 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x18B5 PUSH2 0x18AF PUSH2 0x18AA PUSH2 0xABE JUMP JUMPDEST PUSH2 0x3DE JUMP JUMPDEST SWAP2 PUSH2 0x3DE JUMP JUMPDEST SUB PUSH2 0x18CA JUMPI PUSH2 0x18C5 SWAP3 SWAP4 POP PUSH2 0x1CD8 JUMP JUMPDEST PUSH2 0x1859 JUMP JUMPDEST PUSH2 0x1905 DUP5 PUSH2 0x18D6 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3EE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x192B SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1932 JUMPI JUMPDEST PUSH2 0x1923 DUP2 DUP4 PUSH2 0x29B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17DD JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1846 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1919 JUMP JUMPDEST PUSH2 0x1942 ADDRESS PUSH2 0x16A3 JUMP JUMPDEST PUSH2 0x1974 PUSH2 0x196E PUSH32 0x0 PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST SUB PUSH2 0x197B JUMPI JUMP JUMPDEST PUSH2 0x1983 PUSH2 0x122 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19B3 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x19BF PUSH2 0x1A23 JUMP JUMPDEST PUSH2 0x19D7 PUSH2 0x19CD PUSH0 DUP4 ADD PUSH2 0xC8F JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0xB79 JUMP JUMPDEST SWAP1 PUSH2 0x1A0B PUSH2 0x1A05 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x4FE JUMP JUMPDEST SWAP2 PUSH2 0x4FE JUMP JUMPDEST SWAP2 PUSH2 0x1A14 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x1A1E DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x1A7C SWAP1 PUSH2 0x1A77 PUSH2 0x1D61 JUMP JUMPDEST PUSH2 0x1A7E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A87 SWAP1 PUSH2 0x1E39 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A92 SWAP1 PUSH2 0x1A6B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A9C PUSH2 0x1D61 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1AA6 PUSH2 0x1A94 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1ACD PUSH2 0x1AC8 PUSH2 0x1AD2 SWAP3 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1AB0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1ADD PUSH2 0x1AA8 JUMP JUMPDEST POP PUSH2 0x1AE6 PUSH2 0x1AAC JUMP JUMPDEST POP EXTCODESIZE PUSH2 0x1AFA PUSH2 0x1AF4 PUSH0 PUSH2 0x1AB9 JUMP JUMPDEST SWAP2 PUSH2 0x1AB0 JUMP JUMPDEST GT SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x7265676973747279206E6F742073657400000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1B36 PUSH1 0x10 PUSH1 0x20 SWAP3 PUSH2 0x82A JUMP JUMPDEST PUSH2 0x1B3F DUP2 PUSH2 0x1B02 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1B58 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1B29 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1B62 JUMPI JUMP JUMPDEST PUSH2 0x1B6A PUSH2 0x122 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1B9A PUSH1 0x4 DUP3 ADD PUSH2 0x1B43 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BA7 SWAP1 PUSH2 0x111A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x1BB4 JUMPI JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST PUSH2 0x1C0A SWAP1 PUSH2 0x1BC5 PUSH2 0x1AFE JUMP JUMPDEST POP PUSH2 0x1BFC PUSH2 0x1BDB PUSH2 0x1BD6 PUSH1 0x2 PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST PUSH2 0x1BF5 PUSH2 0x1BEF PUSH2 0x1BEA PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ ISZERO PUSH2 0x1B5B JUMP JUMPDEST PUSH2 0x1C05 PUSH0 PUSH2 0xC8F JUMP JUMPDEST PUSH2 0x1EE0 JUMP JUMPDEST PUSH2 0x1C1B PUSH2 0x1C16 DUP3 PUSH2 0x1B9E JUMP JUMPDEST PUSH2 0x57C JUMP JUMPDEST SWAP2 PUSH4 0xC4D66DE8 SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0x1CA0 JUMPI PUSH2 0x1C52 SWAP4 PUSH2 0x1C47 PUSH0 DUP1 SWAP5 PUSH2 0x1C3B PUSH2 0x122 JUMP JUMPDEST SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0x17B4 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1C9B JUMPI PUSH2 0x1C6C SWAP3 PUSH2 0x1C6F JUMPI JUMPDEST POP PUSH2 0x1B9E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C8E SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x1C94 JUMPI JUMPDEST PUSH2 0x1C86 DUP2 DUP4 PUSH2 0x29B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH0 PUSH2 0x1C66 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1C7C JUMP JUMPDEST PUSH2 0xB66 JUMP JUMPDEST PUSH2 0x17B0 JUMP JUMPDEST PUSH2 0x1CAD PUSH2 0xA01 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1CBA PUSH2 0xA01 JUMP JUMPDEST POP PUSH2 0x1CD5 PUSH0 PUSH2 0x1CCF PUSH2 0x1CCA PUSH2 0xABE JUMP JUMPDEST PUSH2 0x1F6B JUMP JUMPDEST ADD PUSH2 0xC8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1CE2 DUP3 PUSH2 0x1F6E JUMP JUMPDEST DUP2 PUSH2 0x1D0D PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x4FE JUMP JUMPDEST SWAP1 PUSH2 0x1D16 PUSH2 0x122 JUMP JUMPDEST DUP1 PUSH2 0x1D20 DUP2 PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x1D2C DUP2 PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x1D3E PUSH2 0x1D38 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x1D52 JUMPI PUSH2 0x1D4E SWAP2 PUSH2 0x207E JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x1D5C PUSH2 0x1FE3 JUMP JUMPDEST PUSH2 0x1D50 JUMP JUMPDEST PUSH2 0x1D72 PUSH2 0x1D6C PUSH2 0x20AD JUMP JUMPDEST ISZERO PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x1D78 JUMPI JUMP JUMPDEST PUSH2 0x1D80 PUSH2 0x122 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1DB0 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1DC5 SWAP1 PUSH2 0x1DC0 PUSH2 0x1D61 JUMP JUMPDEST PUSH2 0x1DC7 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x1DE2 PUSH2 0x1DDC PUSH2 0x1DD7 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ PUSH2 0x1DF2 JUMPI PUSH2 0x1DF0 SWAP1 PUSH2 0x19B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1E35 PUSH2 0x1DFE PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x1E06 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E42 SWAP1 PUSH2 0x1DB4 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x455243313136373A2063726561746532206661696C6564000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1E78 PUSH1 0x17 PUSH1 0x20 SWAP3 PUSH2 0x82A JUMP JUMPDEST PUSH2 0x1E81 DUP2 PUSH2 0x1E44 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1E9A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1E6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1EA4 JUMPI JUMP JUMPDEST PUSH2 0x1EAC PUSH2 0x122 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1EDC PUSH1 0x4 DUP3 ADD PUSH2 0x1E85 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x37 SWAP1 PUSH2 0x1EEB PUSH2 0xA01 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP3 MSTORE PUSH1 0x60 SHL PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH0 CREATE2 SWAP1 PUSH2 0x1F69 DUP3 PUSH2 0x1F62 PUSH2 0x1F5C PUSH2 0x1F57 PUSH0 PUSH2 0xC39 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST SWAP2 PUSH2 0x14D JUMP JUMPDEST EQ ISZERO PUSH2 0x1E9D JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x1F82 PUSH2 0x1F7C PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST EQ PUSH2 0x1FA4 JUMPI PUSH2 0x1FA2 SWAP1 PUSH0 PUSH2 0x1F9C PUSH2 0x1F97 PUSH2 0xABE JUMP JUMPDEST PUSH2 0x1F6B JUMP JUMPDEST ADD PUSH2 0xB79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1FDF SWAP1 PUSH2 0x1FB0 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1FF6 PUSH2 0x1FF0 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST GT PUSH2 0x1FFD JUMPI JUMP JUMPDEST PUSH2 0x2005 PUSH2 0x122 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2035 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2050 PUSH2 0x204B DUP4 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0x2C4 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x2070 JUMPI PUSH2 0x2065 RETURNDATASIZE PUSH2 0x203E JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x2078 PUSH2 0x2039 JUMP JUMPDEST SWAP1 PUSH2 0x206E JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x20AA SWAP4 PUSH2 0x208C PUSH2 0x2039 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x20A1 PUSH2 0x2055 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x20CB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20B5 PUSH2 0x1AA8 JUMP JUMPDEST POP PUSH2 0x20C8 PUSH0 PUSH2 0x20C2 PUSH2 0x1A47 JUMP JUMPDEST ADD PUSH2 0xCDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20DF SWAP1 PUSH2 0x20D8 PUSH2 0x2039 JUMP JUMPDEST POP ISZERO PUSH2 0xD95 JUMP JUMPDEST PUSH0 EQ PUSH2 0x20EB JUMPI POP PUSH2 0x216F JUMP JUMPDEST PUSH2 0x20F4 DUP3 PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x2106 PUSH2 0x2100 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST EQ DUP1 PUSH2 0x2154 JUMPI JUMPDEST PUSH2 0x2115 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x2150 SWAP1 PUSH2 0x2121 PUSH2 0x122 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x212 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x2169 PUSH2 0x2163 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST EQ PUSH2 0x210D JUMP JUMPDEST PUSH2 0x2178 DUP2 PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x218A PUSH2 0x2184 PUSH0 PUSH2 0x1356 JUMP JUMPDEST SWAP2 PUSH2 0x1353 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2199 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x21A1 PUSH2 0x122 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x21D1 PUSH1 0x4 DUP3 ADD PUSH2 0x19A JUMP JUMPDEST SUB SWAP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x2F JUMPI PUSH2 0x19 PUSH2 0x14 PUSH2 0xF4 JUMP JUMPDEST PUSH2 0x18F JUMP JUMPDEST PUSH2 0x21 PUSH2 0x34 JUMP JUMPDEST PUSH2 0x1680 PUSH2 0x19D DUP3 CODECOPY PUSH2 0x1680 SWAP1 RETURN JUMPDEST PUSH2 0x3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x66 SWAP1 PUSH2 0x3E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x48 JUMP JUMPDEST SWAP1 PUSH2 0x96 PUSH2 0x8F PUSH2 0x34 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x5C JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xB0 SWAP1 PUSH2 0x9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBC DUP2 PUSH2 0xA7 JUMP JUMPDEST SUB PUSH2 0xC3 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD4 DUP3 PUSH2 0xB3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xEF JUMPI PUSH2 0xEC SWAP2 PUSH0 ADD PUSH2 0xC7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x98 JUMP JUMPDEST PUSH2 0x112 PUSH2 0x181D DUP1 CODESIZE SUB DUP1 PUSH2 0x107 DUP2 PUSH2 0x83 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH2 0xD6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x12B PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP2 PUSH2 0x115 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14C PUSH2 0x147 PUSH2 0x151 SWAP3 PUSH2 0x9C JUMP JUMPDEST PUSH2 0x135 JUMP JUMPDEST PUSH2 0x9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15D SWAP1 PUSH2 0x138 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x169 SWAP1 PUSH2 0x154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x184 PUSH2 0x17F PUSH2 0x18B SWAP3 PUSH2 0x160 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST DUP3 SLOAD PUSH2 0x11A JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x19A SWAP1 PUSH1 0x1 PUSH2 0x16F JUMP JUMPDEST JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x6C JUMP JUMPDEST DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0xB0F479A1 EQ PUSH2 0x5D JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x58 JUMPI PUSH4 0xEEDC3C50 SUB PUSH2 0xE JUMPI PUSH2 0x585 JUMP JUMPDEST PUSH2 0x20F JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST PUSH2 0x15B JUMP JUMPDEST PUSH2 0xD6 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x8A JUMPI JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB1 SWAP1 PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBD SWAP1 PUSH2 0xA8 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xD4 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xB4 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x106 JUMPI PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x102 PUSH2 0xF1 PUSH2 0x5E7 JUMP JUMPDEST PUSH2 0xF9 PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x138 SWAP1 PUSH1 0x8 PUSH2 0x13D SWAP4 MUL PUSH2 0x10B JUMP JUMPDEST PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x14B SWAP2 SLOAD PUSH2 0x128 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x158 PUSH0 DUP1 PUSH2 0x140 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x18B JUMPI PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x176 PUSH2 0x14E JUMP JUMPDEST PUSH2 0x17E PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST CALLVALUE PUSH2 0x1C0 JUMPI PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x80 JUMP JUMPDEST PUSH2 0x1BC PUSH2 0x1AB PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x1B3 PUSH2 0x72 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1D2 DUP2 PUSH2 0xA8 JUMP JUMPDEST SUB PUSH2 0x1D9 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1EA DUP3 PUSH2 0x1C9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x205 JUMPI PUSH2 0x202 SWAP2 PUSH0 ADD PUSH2 0x1DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x23D JUMPI PUSH2 0x227 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EC JUMP JUMPDEST PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH2 0x239 DUP2 PUSH2 0x20A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x287 SWAP1 PUSH2 0x246 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2A1 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 PUSH2 0x2B9 PUSH2 0x2B2 PUSH2 0x72 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x27D JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2D3 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F0 DUP2 PUSH2 0x2E4 JUMP JUMPDEST SUB PUSH2 0x2F7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x308 DUP3 PUSH2 0x2E7 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x32C JUMPI PUSH2 0x328 PUSH1 0x20 SWAP2 PUSH2 0x246 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x351 PUSH2 0x34C DUP3 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x36D JUMPI PUSH2 0x36B SWAP3 PUSH2 0x331 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x390 JUMPI DUP2 PUSH1 0x20 PUSH2 0x38D SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x33C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x3F9 JUMPI PUSH2 0x3AC PUSH1 0x60 PUSH2 0x2A6 JUMP JUMPDEST SWAP3 PUSH2 0x3B9 DUP2 PUSH0 DUP5 ADD PUSH2 0x1DD JUMP JUMPDEST PUSH0 DUP6 ADD MSTORE PUSH2 0x3CA DUP2 PUSH1 0x20 DUP5 ADD PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3F4 JUMPI PUSH2 0x3ED SWAP3 ADD PUSH2 0x372 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH2 0x2DC JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x412 PUSH2 0x40D DUP3 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x469 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x438 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x464 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x459 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x395 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x42A JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x48C JUMPI DUP2 PUSH1 0x20 PUSH2 0x489 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x3FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4A9 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x250 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x4C3 PUSH2 0x4BE DUP3 PUSH2 0x491 JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x500 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x4E7 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x4F5 DUP5 DUP7 PUSH2 0x1DD JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x4DA JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x523 JUMPI DUP2 PUSH1 0x20 PUSH2 0x520 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x242 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x580 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x57B JUMPI DUP4 PUSH2 0x554 SWAP2 DUP4 ADD PUSH2 0x46E JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x576 JUMPI PUSH2 0x573 SWAP3 ADD PUSH2 0x505 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST CALLVALUE PUSH2 0x5B4 JUMPI PUSH2 0x59E PUSH2 0x598 CALLDATASIZE PUSH1 0x4 PUSH2 0x528 JUMP JUMPDEST SWAP1 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x5A6 PUSH2 0x72 JUMP JUMPDEST DUP1 PUSH2 0x5B0 DUP2 PUSH2 0x20A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x78 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x5D2 PUSH2 0x5D7 SWAP2 PUSH2 0x5C1 JUMP JUMPDEST PUSH2 0x10F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E4 SWAP1 SLOAD PUSH2 0x5C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EF PUSH2 0x5BD JUMP JUMPDEST POP PUSH2 0x5FA PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x60F PUSH2 0x619 SWAP3 PUSH2 0x8F JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x625 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x631 SWAP1 PUSH2 0x61C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x63D SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x649 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x65F DUP3 PUSH2 0x1C9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x67A JUMPI PUSH2 0x677 SWAP2 PUSH0 ADD PUSH2 0x652 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH2 0x687 PUSH2 0x72 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x698 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A4 SWAP1 PUSH2 0x68F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6B0 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x5BD JUMP JUMPDEST POP PUSH2 0x6F1 PUSH1 0x20 PUSH2 0x6DB PUSH2 0x6D6 PUSH2 0x6D1 PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST PUSH4 0x5AB1BD53 SWAP1 PUSH2 0x6E9 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x701 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7C7 JUMPI PUSH2 0x72B PUSH2 0x726 PUSH2 0x741 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x79A JUMPI JUMPDEST POP PUSH2 0x69B JUMP JUMPDEST PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x739 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x751 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x795 JUMPI PUSH0 SWAP2 PUSH2 0x767 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x788 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x78E JUMPI JUMPDEST PUSH2 0x780 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0x763 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x776 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x7BA SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x7C0 JUMPI JUMPDEST PUSH2 0x7B2 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0x720 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7A8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E3 PUSH2 0x7DE PUSH2 0x7E8 SWAP3 PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F4 SWAP1 PUSH2 0x7CF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x834 PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x83D DUP2 PUSH2 0x800 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x856 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x827 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x860 JUMPI JUMP JUMPDEST PUSH2 0x868 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x898 PUSH1 0x4 DUP3 ADD PUSH2 0x841 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8C0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x89C JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x8D3 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8EE PUSH2 0x8E9 PUSH2 0x8F5 SWAP3 PUSH2 0x8CA JUMP JUMPDEST PUSH2 0x8D6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x8A1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x92F SWAP1 PUSH2 0x929 PUSH2 0x909 PUSH0 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x923 PUSH2 0x91D PUSH2 0x918 PUSH0 PUSH2 0x7EB JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH2 0x859 JUMP JUMPDEST PUSH0 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x93A CALLER PUSH1 0x1 PUSH2 0x8D9 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x43616C6C61626C65206F6E6C792062792074686520726F757465720000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x970 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x979 DUP2 PUSH2 0x93C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x992 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x963 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x99C JUMPI JUMP JUMPDEST PUSH2 0x9A4 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x9D4 PUSH1 0x4 DUP3 ADD PUSH2 0x97D JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xA05 SWAP2 PUSH2 0xA00 CALLER PUSH2 0x9FA PUSH2 0x9F4 PUSH2 0x9EF PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH2 0x995 JUMP JUMPDEST PUSH2 0xB7E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA1B PUSH2 0xA16 PUSH2 0xA20 SWAP3 PUSH2 0x7CC JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xA2F SWAP2 ADD PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xA6D DUP3 PUSH2 0xA32 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xA7E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xA36 JUMP JUMPDEST PUSH2 0xA8D SWAP1 MLOAD PUSH2 0xA8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA9A SWAP1 MLOAD PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xAAF PUSH2 0xAAA DUP4 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0xAD4 JUMPI PUSH2 0xAC9 RETURNDATASIZE PUSH2 0xA9D JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0xADC PUSH2 0xAB4 JUMP JUMPDEST SWAP1 PUSH2 0xAD2 JUMP JUMPDEST PUSH0 PUSH32 0x42617463682063616C6C206661696C6564000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xB16 PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0xB1F DUP2 PUSH2 0xAE2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB38 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xB09 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xB42 JUMPI JUMP JUMPDEST PUSH2 0xB4A PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xB7A PUSH1 0x4 DUP3 ADD PUSH2 0xB23 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH2 0xB88 PUSH0 PUSH2 0xA07 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xBA4 PUSH2 0xB9E PUSH2 0xB99 DUP8 PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0xC12 JUMPI PUSH2 0xC0D SWAP1 PUSH2 0xC08 PUSH0 DUP1 PUSH2 0xBC9 DUP2 PUSH2 0xBC2 DUP11 DUP8 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD PUSH2 0xA83 JUMP JUMPDEST PUSH2 0xBE0 PUSH1 0x20 PUSH2 0xBD9 DUP12 DUP9 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD PUSH2 0xA90 JUMP JUMPDEST PUSH1 0x40 PUSH2 0xBED DUP12 DUP9 SWAP1 PUSH2 0xA63 JUMP JUMPDEST MLOAD ADD MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP2 MLOAD SWAP3 GAS CALL PUSH2 0xC02 PUSH2 0xAB9 JUMP JUMPDEST POP PUSH2 0xB3B JUMP JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0xB89 JUMP JUMPDEST POP SWAP2 POP PUSH2 0xC27 SWAP1 PUSH2 0xC22 DUP2 PUSH2 0xE11 JUMP JUMPDEST PUSH2 0x1222 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0xC33 SWAP2 PUSH2 0x9D8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xC46 DUP3 PUSH2 0x2E7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xC61 JUMPI PUSH2 0xC5E SWAP2 PUSH0 ADD PUSH2 0xC39 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xC74 DUP3 PUSH2 0xC66 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xC85 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0xA36 JUMP JUMPDEST PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE SWAP1 JUMP JUMPDEST PUSH2 0xCAB SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB7 SWAP1 PUSH2 0xCA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC3 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCCF SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD0E PUSH2 0xD14 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2E4 JUMP JUMPDEST SWAP3 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0xD20 DUP4 DUP3 MUL PUSH2 0x2E4 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xD2F JUMPI JUMP JUMPDEST PUSH2 0xCD2 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xD6D PUSH2 0xD73 SWAP2 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0xD7E JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0xD34 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xD91 DUP2 PUSH2 0xD83 JUMP JUMPDEST SUB PUSH2 0xD98 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xDA9 DUP3 PUSH2 0xD88 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xDC4 JUMPI PUSH2 0xDC1 SWAP2 PUSH0 ADD PUSH2 0xD9C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C JUMP JUMPDEST PUSH2 0xDD2 SWAP1 PUSH2 0x2E4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0xDF7 SWAP3 SWAP5 SWAP4 PUSH2 0xDF0 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0xB4 JUMP JUMPDEST ADD SWAP1 PUSH2 0xDC9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xE02 SWAP1 PUSH2 0x600 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE0E SWAP1 PUSH2 0xDF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE47 PUSH1 0x20 PUSH2 0xE31 PUSH2 0xE2C PUSH2 0xE27 PUSH1 0x1 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x628 JUMP JUMPDEST PUSH2 0x640 JUMP JUMPDEST PUSH4 0x5AB1BD53 SWAP1 PUSH2 0xE3F PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xE57 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x11F1 JUMPI PUSH2 0xE72 SWAP2 PUSH0 SWAP2 PUSH2 0x11C3 JUMPI JUMPDEST POP PUSH2 0x69B JUMP JUMPDEST SWAP2 PUSH2 0xE97 PUSH1 0x20 PUSH2 0xE81 DUP6 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0xE8F PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xEA7 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x11BE JUMPI PUSH0 SWAP2 PUSH2 0x1190 JUMPI JUMPDEST POP SWAP3 PUSH2 0xEC3 PUSH2 0xC35 JUMP JUMPDEST POP PUSH2 0xEE8 PUSH1 0x20 PUSH2 0xED2 DUP4 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0xEE0 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xEF8 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x118B JUMPI PUSH2 0xF1A PUSH1 0x20 SWAP2 PUSH2 0xF30 SWAP4 PUSH0 SWAP2 PUSH2 0x115E JUMPI JUMPDEST POP SWAP4 PUSH2 0x6A7 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0xF28 PUSH2 0x72 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x64C JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xF40 PUSH1 0x4 DUP3 ADD PUSH2 0x20A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1159 JUMPI PUSH0 SWAP2 PUSH2 0x112B JUMPI JUMPDEST POP SWAP2 PUSH2 0xF5D PUSH0 PUSH2 0xA07 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xF79 PUSH2 0xF73 PUSH2 0xF6E DUP6 PUSH2 0xC66 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x1123 JUMPI PUSH2 0xF92 PUSH2 0xF8D DUP4 DUP4 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xA83 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0xFAD PUSH2 0xFA7 PUSH2 0xFA2 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0xFF3 JUMPI PUSH2 0xFEE SWAP2 POP PUSH2 0xFE8 PUSH2 0xFDA PUSH2 0xFD3 PUSH2 0xFCB ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE DUP8 SWAP1 PUSH2 0xCFF JUMP JUMPDEST DUP8 SWAP1 PUSH2 0xD61 JUMP JUMPDEST PUSH2 0xFE3 DUP10 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x15ED JUMP JUMPDEST JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x103B PUSH1 0x20 PUSH2 0x1009 PUSH2 0x1004 DUP6 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1030 PUSH2 0x101B ADDRESS PUSH2 0xCC6 JUMP JUMPDEST SWAP3 PUSH2 0x1024 PUSH2 0x72 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x64C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xC1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x111E JUMPI PUSH2 0x1071 PUSH2 0x106B PUSH2 0x1064 PUSH2 0x1076 SWAP4 PUSH1 0x20 SWAP6 PUSH0 SWAP2 PUSH2 0x10F1 JUMPI JUMPDEST POP DUP10 SWAP1 PUSH2 0xCFF JUMP JUMPDEST DUP10 SWAP1 PUSH2 0xD61 JUMP JUMPDEST SWAP5 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x109B PUSH0 DUP12 SWAP4 SWAP7 PUSH2 0x10A6 PUSH2 0x108F PUSH2 0x72 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x64C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x10EC JUMPI PUSH2 0xFEE SWAP3 PUSH2 0x10C0 JUMPI JUMPDEST POP PUSH2 0xFE9 JUMP JUMPDEST PUSH2 0x10E0 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x10E5 JUMPI JUMPDEST PUSH2 0x10D8 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x10BA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10CE JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x1111 SWAP2 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1117 JUMPI JUMPDEST PUSH2 0x1109 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0x105C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x10FF JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST PUSH2 0x114C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1152 JUMPI JUMPDEST PUSH2 0x1144 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0xF52 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x113A JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x117E SWAP2 POP DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x1184 JUMPI JUMPDEST PUSH2 0x1176 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0xF13 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x116C JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x11B1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x11B7 JUMPI JUMPDEST PUSH2 0x11A9 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0xEB9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x119F JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x11E4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x11EA JUMPI JUMPDEST PUSH2 0x11DC DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH0 PUSH2 0xE6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x120D PUSH2 0x1208 PUSH2 0x1212 SWAP3 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x121F PUSH1 0xA PUSH2 0x11F9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x122B DUP2 PUSH2 0xC66 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x123F PUSH2 0x1239 PUSH0 PUSH2 0xA07 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x1249 JUMPI JUMPDEST POP POP JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1253 PUSH2 0xC35 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1267 PUSH2 0x1261 DUP7 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x144C JUMPI PUSH2 0x1280 PUSH2 0x127B DUP5 DUP4 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xA83 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x129B PUSH2 0x1295 PUSH2 0x1290 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST SWAP2 PUSH2 0xA8 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x12FD JUMPI PUSH2 0x12CF SWAP2 POP PUSH2 0x12B0 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE PUSH2 0x12C3 PUSH2 0x12BD PUSH0 PUSH2 0xA07 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x12D4 JUMPI JUMPDEST JUMPDEST PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x1254 JUMP JUMPDEST PUSH2 0x12F8 PUSH2 0x12E8 PUSH2 0x12E3 PUSH0 PUSH2 0x5DA JUMP JUMPDEST PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x12F1 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST BALANCE SWAP1 PUSH2 0x15ED JUMP JUMPDEST PUSH2 0x12C9 JUMP JUMPDEST PUSH2 0x1345 PUSH1 0x20 PUSH2 0x1313 PUSH2 0x130E DUP6 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x133A PUSH2 0x1325 ADDRESS PUSH2 0xCC6 JUMP JUMPDEST SWAP3 PUSH2 0x132E PUSH2 0x72 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x64C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xC1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1447 JUMPI PUSH0 SWAP2 PUSH2 0x1419 JUMPI JUMPDEST POP SWAP2 DUP3 PUSH2 0x1373 PUSH2 0x136D PUSH2 0x1368 PUSH2 0x1215 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST GT PUSH2 0x1384 JUMPI JUMPDEST POP PUSH2 0x12CF SWAP2 POP PUSH2 0x12CA JUMP JUMPDEST PUSH2 0x1397 PUSH2 0x1392 PUSH1 0x20 SWAP3 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x13C4 PUSH0 PUSH2 0x13AB DUP2 PUSH2 0x5DA JUMP JUMPDEST SWAP4 SWAP7 PUSH2 0x13CF PUSH2 0x13B8 PUSH2 0x72 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x64C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0xDD6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1414 JUMPI PUSH2 0x12CF SWAP3 PUSH2 0x13E8 JUMPI JUMPDEST PUSH2 0x1379 JUMP JUMPDEST PUSH2 0x1408 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x140D JUMPI JUMPDEST PUSH2 0x1400 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x13E3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13F6 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH2 0x143A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1440 JUMPI JUMPDEST PUSH2 0x1432 DUP2 DUP4 PUSH2 0x27D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xC48 JUMP JUMPDEST PUSH0 PUSH2 0x1357 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1428 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST POP SWAP2 POP POP PUSH0 DUP1 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x1460 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E6365000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1497 PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x14A0 DUP2 PUSH2 0x1463 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x14B9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x148A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x14C3 JUMPI JUMP JUMPDEST PUSH2 0x14CB PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14FB PUSH1 0x4 DUP3 ADD PUSH2 0x14A4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1508 SWAP1 PUSH2 0x634 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x151B PUSH0 DUP1 SWAP3 PUSH2 0x150B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1528 SWAP1 PUSH2 0x1510 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6563697069656E74206D61792068617665207265766572746564000000000000 SWAP2 PUSH32 0x416464726573733A20756E61626C6520746F2073656E642076616C75652C2072 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1585 PUSH1 0x3A PUSH1 0x40 SWAP3 PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x158E DUP2 PUSH2 0x152B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x15A7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1578 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x15B1 JUMPI JUMP JUMPDEST PUSH2 0x15B9 PUSH2 0x72 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x15E9 PUSH1 0x4 DUP3 ADD PUSH2 0x1592 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1648 SWAP3 PUSH2 0x1622 DUP3 SWAP4 PUSH2 0x161D PUSH2 0x1603 ADDRESS PUSH2 0x1457 JUMP JUMPDEST BALANCE PUSH2 0x1616 PUSH2 0x1610 DUP7 PUSH2 0x2E4 JUMP JUMPDEST SWAP2 PUSH2 0x2E4 JUMP JUMPDEST LT ISZERO PUSH2 0x14BC JUMP JUMPDEST PUSH2 0x14FF JUMP JUMPDEST SWAP1 PUSH2 0x162B PUSH2 0x72 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1636 DUP2 PUSH2 0x151F JUMP JUMPDEST SUB SWAP3 GAS CALL PUSH2 0x1642 PUSH2 0xAB9 JUMP JUMPDEST POP PUSH2 0x15AA JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 0xB0 0xB6 0xA5 DIV PUSH23 0x14F7DA4310B4DA483B8E1C4168E4E72E0645B14B479EA3 0xA8 PUSH29 0x3E64736F6C63430008190033A2646970667358221220B24300B1DAE695 INVALID SELFBALANCE STATICCALL BALANCE EXTCODESIZE PUSH11 0xEDF38C57EEEF26EC494A37 DUP15 0xBC DUP13 0x25 DUP7 0xBD EXTCODESIZE PUSH2 0x6473 PUSH16 0x6C634300081900330000000000000000 ","sourceMap":"1822:4573:59:-:0;;;;;;;;;-1:-1:-1;1822:4573:59;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2047:51::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;1822:4573::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2107:33::-;;;;;;:::i;:::-;;:::o;1822:4573::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1822:4573:59:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;2303:62:0;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1822:4573:59:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;6261:131::-;6354:30;6343:41;6261:131;6354:30;:::i;:::-;6343:41;;:::i;:::-;6261:131::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;6021:126:59:-;6108:31;6097:42;6021:126;6108:31;:::i;:::-;6097:42;;:::i;:::-;6021:126::o;:::-;;;;:::i;:::-;:::o;1822:4573::-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4656:120::-;4751:16;;4743:25;4656:120;4716:7;;:::i;:::-;4751:10;;:16;:::i;:::-;;:::i;:::-;4743:25;:::i;:::-;4736:32;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;1822:4573:59:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;1822:4573:59:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;1822:4573:59:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;6155:98::-;6201:7;;:::i;:::-;6236:8;6228:17;6236:8;;;:::i;:::-;6228:17;:::i;:::-;6221:24;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;1822:4573:59:-;;;;:::i;:::-;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2438:172::-;2543:13;2551:4;2543:13;:::i;:::-;2525:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;2585:17;2568:34;2500:57;2585:17;:::i;:::-;2568:34;;:::i;:::-;2438:172::o;2525:32::-;;:::i;:::-;;:::i;2438:172::-;;;:::i;:::-;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;1822:4573:59:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;1822:4573:59:-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;1822:4573:59:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;3207:7:59;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;3129:334:59;3301:39;3129:334;;3312:28;3129:334;3242:10;;;:::i;:::-;;;:::i;:::-;3312:28;:::i;:::-;3301:39;;:::i;:::-;3396:13;3404:4;3396:13;:::i;:::-;3378:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;3438:17;3421:34;3353:57;3438:17;:::i;:::-;3421:34;;:::i;:::-;3129:334::o;3378:32::-;;:::i;:::-;;:::i;3129:334::-;;;;;:::i;:::-;:::o;1822:4573::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;5008:611::-;5594:16;;5586:25;5008:611;5066:7;;:::i;:::-;5102:4;5086:61;5094:13;5102:4;5094:13;:::i;:::-;:27;;5111:10;5119:1;5111:10;:::i;:::-;5094:27;:::i;:::-;;;:::i;:::-;;;5086:61;:::i;:::-;5183:22;;5200:4;5183:22;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;5173:33;;;;:::i;:::-;;;:::i;:::-;;5221:25;5229:16;;:10;5240:4;5229:16;;:::i;:::-;;:::i;:::-;5221:25;:::i;:::-;:39;;5250:10;5258:1;5250:10;:::i;:::-;5221:39;:::i;:::-;;;:::i;:::-;;:89;;;;5008:611;5217:352;;5008:611;5594:10;;:16;:::i;:::-;;:::i;:::-;5586:25;:::i;:::-;5579:32;:::o;5217:352::-;5349:24;5362:4;5368;5349:24;;:::i;:::-;5388:76;5396:26;5407:14;5415:5;5407:14;:::i;:::-;5396:26;:::i;:::-;5388:76;:::i;:::-;5479:24;5498:5;5479:16;:10;5490:4;5479:16;;:::i;:::-;:24;:::i;:::-;5542:14;5536:4;5550:5;5542:14;:::i;:::-;5523:34;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5217:352;;;5221:89;5283:10;5264:37;5275:25;5283:16;;:10;5294:4;5283:16;;:::i;:::-;;:::i;:::-;5275:25;:::i;:::-;5264:37;:::i;:::-;:46;;5305:5;5264:46;:::i;:::-;;;:::i;:::-;;5221:89;;1822:4573;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2727:394:59;2881:28;2870:39;2727:394;2811:10;;;:::i;:::-;;;:::i;:::-;2881:28;:::i;:::-;2870:39;;:::i;:::-;3054:13;3062:4;3054:13;:::i;:::-;3036:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;3096:17;3079:34;3011:57;3096:17;:::i;:::-;3079:34;;:::i;:::-;2727:394::o;3036:32::-;;:::i;:::-;;:::i;2727:394::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2658:162::-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1822:4573:59;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;3659:84:59:-;;;;:::i;:::-;:::o;1822:4573::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;1822:4573:59:-;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5823:190::-;5880:4;;:::i;:::-;5897:11;;;:::i;:::-;5919:61;;5997:8;;6004:1;5997:8;:::i;:::-;;;:::i;:::-;;5990:15;:::o;1822:4573::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;:::i;4079:333::-;4260:58;4079:333;4147:13;;:::i;:::-;4189:8;4173:60;4181:17;4189:8;;;:::i;:::-;4181:17;:::i;:::-;:31;;4202:10;4210:1;4202:10;:::i;:::-;4181:31;:::i;:::-;;;:::i;:::-;;;4173:60;:::i;:::-;4297:14;;;:::i;:::-;4260:58;:::i;:::-;4329:31;:20;4343:5;4329:20;:::i;:::-;:31;:::i;:::-;;;4361:4;4329:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4384:20;4329:37;;;4079:333;4398:5;4384:20;:::i;:::-;4377:27;:::o;4329:37::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;2779:335::-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1822:4573:59:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1960:603:46;2117:370;1960:603;2044:16;;:::i;:::-;2117:370;;;;;;;;;;;;;;;;;;;;2505:8;2497:58;2505:8;:22;;2517:10;2525:1;2517:10;:::i;:::-;2505:22;:::i;:::-;;;:::i;:::-;;;2497:58;:::i;:::-;1960:603::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1822:4573:59;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2977600","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","changeImplementation()":"infinite","changeRegistry(address)":"infinite","changeRegistryAddress(address)":"infinite","getAgentAddress(address)":"infinite","getOrCreateAgent(address)":"infinite","getRegistry()":"infinite","initialize(address)":"infinite","owner()":"2928","proxiableUUID()":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite","userAgents(address)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_createAgent(bytes32,address)":"infinite","isContract(address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","changeImplementation()":"6c6be5f3","changeRegistry(address)":"15554c55","changeRegistryAddress(address)":"0889e14c","getAgentAddress(address)":"27d54a92","getOrCreateAgent(address)":"9b76a5cd","getRegistry()":"5ab1bd53","initialize(address)":"c4d66de8","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","userAgents(address)":"7811a785"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"agent\",\"type\":\"address\"}],\"name\":\"AgentCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"changeImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newRegistry\",\"type\":\"address\"}],\"name\":\"changeRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAddress\",\"type\":\"address\"}],\"name\":\"changeRegistryAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getAgentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getOrCreateAgent\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userAgents\",\"outputs\":[{\"internalType\":\"contract BaluniV1Agent\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"changeImplementation()\":{\"details\":\"Changes the implementation of the BaluniV1Agent contract. Only the contract owner can call this function. Creates a new instance of BaluniV1Agent and updates the implementation address.\"},\"getAgentAddress(address)\":{\"details\":\"Retrieves the address of the BaluniV1Agent contract associated with a user.\",\"params\":{\"user\":\"The address of the user.\"},\"returns\":{\"_0\":\"The address of the BaluniV1Agent contract associated with the user.\"}},\"getOrCreateAgent(address)\":{\"details\":\"Returns the address of an existing agent for the given user, or creates a new agent if one doesn't exist.\",\"params\":{\"user\":\"The address of the user.\"},\"returns\":{\"_0\":\"The address of the agent.\"}},\"initialize(address)\":{\"details\":\"Initializes the contract by calling the initializers of the parent contracts.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/orchestators/BaluniV1AgentFactory.sol\":\"BaluniV1AgentFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1AgentFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1AgentFactory {\\r\\n    function getAgentAddress(address user) external view returns (address);\\r\\n\\r\\n    function getOrCreateAgent(address user) external returns (address);\\r\\n\\r\\n    function getRegistry() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x7de0683d187e1b0dbbffde17f943b24e1481351949e7b292a9bff33cdc4b3d71\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/libs/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\\r\\n\\r\\npragma solidity ^0.8.1;\\r\\n\\r\\n/**\\r\\n * @dev Collection of functions related to the address type\\r\\n */\\r\\nlibrary AddressUpgradeable {\\r\\n  /**\\r\\n   * @dev Returns true if `account` is a contract.\\r\\n   *\\r\\n   * [IMPORTANT]\\r\\n   * ====\\r\\n   * It is unsafe to assume that an address for which this function returns\\r\\n   * false is an externally-owned account (EOA) and not a contract.\\r\\n   *\\r\\n   * Among others, `isContract` will return false for the following\\r\\n   * types of addresses:\\r\\n   *\\r\\n   *  - an externally-owned account\\r\\n   *  - a contract in construction\\r\\n   *  - an address where a contract will be created\\r\\n   *  - an address where a contract lived, but was destroyed\\r\\n   * ====\\r\\n   *\\r\\n   * [IMPORTANT]\\r\\n   * ====\\r\\n   * You shouldn't rely on `isContract` to protect against flash loan attacks!\\r\\n   *\\r\\n   * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\r\\n   * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\r\\n   * constructor.\\r\\n   * ====\\r\\n   */\\r\\n  function isContract(address account) internal view returns (bool) {\\r\\n    // This method relies on extcodesize/address.code.length, which returns 0\\r\\n    // for contracts in construction, since the code is only stored at the end\\r\\n    // of the constructor execution.\\r\\n\\r\\n    return account.code.length > 0;\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\r\\n   * `recipient`, forwarding all available gas and reverting on errors.\\r\\n   *\\r\\n   * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\r\\n   * of certain opcodes, possibly making contracts go over the 2300 gas limit\\r\\n   * imposed by `transfer`, making them unable to receive funds via\\r\\n   * `transfer`. {sendValue} removes this limitation.\\r\\n   *\\r\\n   * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\r\\n   *\\r\\n   * IMPORTANT: because control is transferred to `recipient`, care must be\\r\\n   * taken to not create reentrancy vulnerabilities. Consider using\\r\\n   * {ReentrancyGuard} or the\\r\\n   * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\r\\n   */\\r\\n  function sendValue(address payable recipient, uint256 amount) internal {\\r\\n    require(address(this).balance >= amount, 'Address: insufficient balance');\\r\\n\\r\\n    (bool success, ) = recipient.call{value: amount}('');\\r\\n    require(success, 'Address: unable to send value, recipient may have reverted');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Performs a Solidity function call using a low level `call`. A\\r\\n   * plain `call` is an unsafe replacement for a function call: use this\\r\\n   * function instead.\\r\\n   *\\r\\n   * If `target` reverts with a revert reason, it is bubbled up by this\\r\\n   * function (like regular Solidity function calls).\\r\\n   *\\r\\n   * Returns the raw returned data. To convert to the expected return value,\\r\\n   * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\r\\n   *\\r\\n   * Requirements:\\r\\n   *\\r\\n   * - `target` must be a contract.\\r\\n   * - calling `target` with `data` must not revert.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\r\\n    return functionCall(target, data, 'Address: low-level call failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\r\\n   * `errorMessage` as a fallback revert reason when `target` reverts.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\r\\n    return functionCallWithValue(target, data, 0, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\r\\n   * but also transferring `value` wei to `target`.\\r\\n   *\\r\\n   * Requirements:\\r\\n   *\\r\\n   * - the calling contract must have an ETH balance of at least `value`.\\r\\n   * - the called Solidity function must be `payable`.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\r\\n    return functionCallWithValue(target, data, value, 'Address: low-level call with value failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\r\\n   * with `errorMessage` as a fallback revert reason when `target` reverts.\\r\\n   *\\r\\n   * _Available since v3.1._\\r\\n   */\\r\\n  function functionCallWithValue(\\r\\n    address target,\\r\\n    bytes memory data,\\r\\n    uint256 value,\\r\\n    string memory errorMessage\\r\\n  ) internal returns (bytes memory) {\\r\\n    require(address(this).balance >= value, 'Address: insufficient balance for call');\\r\\n    require(isContract(target), 'Address: call to non-contract');\\r\\n\\r\\n    (bool success, bytes memory returndata) = target.call{value: value}(data);\\r\\n    return verifyCallResult(success, returndata, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\r\\n   * but performing a static call.\\r\\n   *\\r\\n   * _Available since v3.3._\\r\\n   */\\r\\n  function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\r\\n    return functionStaticCall(target, data, 'Address: low-level static call failed');\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\r\\n   * but performing a static call.\\r\\n   *\\r\\n   * _Available since v3.3._\\r\\n   */\\r\\n  function functionStaticCall(\\r\\n    address target,\\r\\n    bytes memory data,\\r\\n    string memory errorMessage\\r\\n  ) internal view returns (bytes memory) {\\r\\n    require(isContract(target), 'Address: static call to non-contract');\\r\\n\\r\\n    (bool success, bytes memory returndata) = target.staticcall(data);\\r\\n    return verifyCallResult(success, returndata, errorMessage);\\r\\n  }\\r\\n\\r\\n  /**\\r\\n   * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\r\\n   * revert reason using the provided one.\\r\\n   *\\r\\n   * _Available since v4.3._\\r\\n   */\\r\\n  function verifyCallResult(\\r\\n    bool success,\\r\\n    bytes memory returndata,\\r\\n    string memory errorMessage\\r\\n  ) internal pure returns (bytes memory) {\\r\\n    if (success) {\\r\\n      return returndata;\\r\\n    } else {\\r\\n      // Look for revert reason and bubble it up if present\\r\\n      if (returndata.length > 0) {\\r\\n        // The easiest way to bubble the revert reason is using memory via assembly\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n          let returndata_size := mload(returndata)\\r\\n          revert(add(32, returndata), returndata_size)\\r\\n        }\\r\\n      } else {\\r\\n        revert(errorMessage);\\r\\n      }\\r\\n    }\\r\\n  }\\r\\n}\\r\\n\",\"keccak256\":\"0x0d727e8de593fdee1ddeb0f7db69d83db1948ceaa9286d1b03491809bc19fa0f\",\"license\":\"MIT\"},\"contracts/libs/ClonesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/Clones.sol)\\r\\n\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\n/**\\r\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\r\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\r\\n *\\r\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\r\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\r\\n *\\r\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\r\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\r\\n * deterministic method.\\r\\n *\\r\\n * _Available since v3.4._\\r\\n */\\r\\nlibrary ClonesUpgradeable {\\r\\n    /**\\r\\n     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\r\\n     *\\r\\n     * This function uses the create opcode, which should never revert.\\r\\n     */\\r\\n    function clone(address implementation) internal returns (address instance) {\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            let ptr := mload(0x40)\\r\\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\\r\\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\\r\\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\\r\\n            instance := create(0, ptr, 0x37)\\r\\n        }\\r\\n        require(instance != address(0), \\\"ERC1167: create failed\\\");\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\r\\n     *\\r\\n     * This function uses the create2 opcode and a `salt` to deterministically deploy\\r\\n     * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\r\\n     * the clones cannot be deployed twice at the same address.\\r\\n     */\\r\\n    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            let ptr := mload(0x40)\\r\\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\\r\\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\\r\\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\\r\\n            instance := create2(0, ptr, 0x37, salt)\\r\\n        }\\r\\n        require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\r\\n     */\\r\\n    function predictDeterministicAddress(\\r\\n        address implementation,\\r\\n        bytes32 salt,\\r\\n        address deployer\\r\\n    ) internal pure returns (address predicted) {\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            let ptr := mload(0x40)\\r\\n            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\\r\\n            mstore(add(ptr, 0x14), shl(0x60, implementation))\\r\\n            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)\\r\\n            mstore(add(ptr, 0x38), shl(0x60, deployer))\\r\\n            mstore(add(ptr, 0x4c), salt)\\r\\n            mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\\r\\n            predicted := keccak256(add(ptr, 0x37), 0x55)\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\r\\n     */\\r\\n    function predictDeterministicAddress(address implementation, bytes32 salt)\\r\\n        internal\\r\\n        view\\r\\n        returns (address predicted)\\r\\n    {\\r\\n        return predictDeterministicAddress(implementation, salt, address(this));\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0xe6c3f4e71fbdfbcd5818c6c71e28a02149fe28e8ad56ef110fb1bc7fd9fe9ad7\",\"license\":\"MIT\"},\"contracts/orchestators/BaluniV1Agent.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '../libs/AddressUpgradeable.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1AgentFactory.sol';\\r\\n\\r\\n/**\\r\\n * @title BaluniV1Agent\\r\\n * @dev This contract represents the BaluniV1Agent contract.\\r\\n */\\r\\ncontract BaluniV1Agent {\\r\\n    using AddressUpgradeable for address payable;\\r\\n\\r\\n    address public owner;\\r\\n    address private factory;\\r\\n    address internal constant _NATIVE = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\\r\\n    uint256 internal constant _DUST = 10;\\r\\n\\r\\n    struct Call {\\r\\n        address to;\\r\\n        uint256 value;\\r\\n        bytes data;\\r\\n    }\\r\\n\\r\\n    constructor(address _factory) {\\r\\n        factory = _factory;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Initializes the contract with the specified owner and router addresses.\\r\\n     * @param _owner The address of the contract owner.\\r\\n     */\\r\\n    function initialize(address _owner) external {\\r\\n        require(owner == address(0), 'Already initialized');\\r\\n        owner = _owner;\\r\\n        factory = msg.sender;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Modifier that allows a function to be called only by the router.\\r\\n     * @notice This modifier checks if the caller is the router contract.\\r\\n     * @notice If the caller is not the router, the function call will revert.\\r\\n     */\\r\\n    modifier onlyRouter() {\\r\\n        require(msg.sender == getRouter(), 'Callable only by the router');\\r\\n        _;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Executes a batch of calls and performs token operations.\\r\\n     * @param calls An array of Call structs representing the calls to be executed.\\r\\n     * @param tokensReturn An array of token addresses to return after the batch call.\\r\\n     * @notice Only the router contract is allowed to execute this function.\\r\\n     */\\r\\n    function execute(Call[] memory calls, address[] memory tokensReturn) external onlyRouter {\\r\\n        for (uint i = 0; i < calls.length; i++) {\\r\\n            (bool success, ) = calls[i].to.call{value: calls[i].value}(calls[i].data);\\r\\n            require(success, 'Batch call failed');\\r\\n        }\\r\\n        _chargeFees(tokensReturn);\\r\\n        _returnTokens(tokensReturn);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the address of the router contract.\\r\\n     * @return The address of the router contract.\\r\\n     */\\r\\n    function getRouter() public view returns (address) {\\r\\n        return IBaluniV1Registry(IBaluniV1AgentFactory(factory).getRegistry()).getBaluniRouter();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the address of the factory contract.\\r\\n     * @return The address of the factory contract.\\r\\n     */\\r\\n    function getFactory() public view returns (address) {\\r\\n        return factory;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to charge fees for the tokens returned.\\r\\n     * @param tokensReturn The array of tokens to charge fees for.\\r\\n     */\\r\\n    function _chargeFees(address[] memory tokensReturn) internal {\\r\\n        IBaluniV1Registry registry = IBaluniV1Registry(IBaluniV1AgentFactory(factory).getRegistry());\\r\\n        address router = registry.getBaluniRouter();\\r\\n        uint256 amount;\\r\\n        uint256 bpsFee = registry.getBPS_FEE();\\r\\n        uint256 bpsBase = registry.getBPS_BASE();\\r\\n        for (uint256 i = 0; i < tokensReturn.length; i++) {\\r\\n            address token = tokensReturn[i];\\r\\n            if (token == _NATIVE) {\\r\\n                amount = (address(this).balance * bpsFee) / bpsBase;\\r\\n                payable(router).sendValue(amount);\\r\\n            } else {\\r\\n                uint256 balance = IERC20Metadata(token).balanceOf(address(this));\\r\\n                amount = (balance * bpsFee) / bpsBase;\\r\\n                IERC20Metadata(token).transfer(router, amount);\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to return tokens to the owner.\\r\\n     * @param tokensReturn The array of tokens to return.\\r\\n     */\\r\\n    function _returnTokens(address[] memory tokensReturn) internal {\\r\\n        uint256 tokensReturnLength = tokensReturn.length;\\r\\n        if (tokensReturnLength > 0) {\\r\\n            for (uint256 i; i < tokensReturnLength; ) {\\r\\n                address token = tokensReturn[i];\\r\\n                if (token == _NATIVE) {\\r\\n                    if (address(this).balance > 0) {\\r\\n                        payable(owner).sendValue(address(this).balance);\\r\\n                    }\\r\\n                } else {\\r\\n                    uint256 balance = IERC20Metadata(token).balanceOf(address(this));\\r\\n                    if (balance > _DUST) {\\r\\n                        IERC20Metadata(token).transfer(owner, balance);\\r\\n                    }\\r\\n                }\\r\\n\\r\\n                unchecked {\\r\\n                    ++i;\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0xfb12c39d4dc0b1c5e0e1f3ad106632250c66ccf6f60d9c40c8c473606b362212\",\"license\":\"GNU AGPLv3\"},\"contracts/orchestators/BaluniV1AgentFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport './BaluniV1Agent.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../libs/ClonesUpgradeable.sol';\\r\\n\\r\\ncontract BaluniV1AgentFactory is Initializable, OwnableUpgradeable, UUPSUpgradeable {\\r\\n    // L'indirizzo del contratto logico che sar\\u00e0 utilizzato come implementazione per i proxy\\r\\n    address private implementation;\\r\\n\\r\\n    mapping(address => BaluniV1Agent) public userAgents;\\r\\n\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    event AgentCreated(address user, address agent);\\r\\n\\r\\n    /**\\r\\n     * @dev Changes the implementation of the BaluniV1Agent contract.\\r\\n     * Only the contract owner can call this function.\\r\\n     * Creates a new instance of BaluniV1Agent and updates the implementation address.\\r\\n     */\\r\\n    function changeImplementation() external onlyOwner {\\r\\n        BaluniV1Agent newAgent = new BaluniV1Agent(address(this));\\r\\n        implementation = address(newAgent);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Initializes the contract by calling the initializers of the parent contracts.\\r\\n     */\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n\\r\\n        // Create a new BaluniV1Agent instance and set it as the implementation address\\r\\n        BaluniV1Agent newAgent = new BaluniV1Agent(address(this));\\r\\n        implementation = address(newAgent);\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __UUPSUpgradeable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n\\r\\n        BaluniV1Agent newAgent = new BaluniV1Agent(address(this));\\r\\n        implementation = address(newAgent);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\\r\\n     * @param newImplementation The address of the new implementation contract.\\r\\n     */\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to create a new BaluniV1Agent contract instance.\\r\\n     * @param salt The salt value used for deterministic cloning.\\r\\n     * @param user The address of the user for whom the agent is being created.\\r\\n     * @return The address of the newly created BaluniV1Agent contract instance.\\r\\n     */\\r\\n    function _createAgent(bytes32 salt, address user) internal returns (BaluniV1Agent) {\\r\\n        require(address(registry) != address(0), 'registry not set');\\r\\n        address clone = ClonesUpgradeable.cloneDeterministic(implementation, salt);\\r\\n        BaluniV1Agent(clone).initialize(user);\\r\\n        return BaluniV1Agent(clone);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the address of the BaluniV1Agent contract associated with a user.\\r\\n     * @param user The address of the user.\\r\\n     * @return The address of the BaluniV1Agent contract associated with the user.\\r\\n     */\\r\\n    function getAgentAddress(address user) public view returns (address) {\\r\\n        return address(userAgents[user]);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the address of an existing agent for the given user, or creates a new agent if one doesn't exist.\\r\\n     * @param user The address of the user.\\r\\n     * @return The address of the agent.\\r\\n     */\\r\\n    function getOrCreateAgent(address user) external returns (address) {\\r\\n        require(address(this) != address(0), 'Agent factory not set');\\r\\n        bytes32 salt = keccak256(abi.encodePacked(user));\\r\\n        if (address(userAgents[user]) == address(0) || isContract(address(userAgents[user])) == false) {\\r\\n            BaluniV1Agent agent = _createAgent(salt, user);\\r\\n            require(isContract(address(agent)), 'Agent creation failed, not a contract');\\r\\n            userAgents[user] = agent;\\r\\n            emit AgentCreated(user, address(agent));\\r\\n        }\\r\\n        return address(userAgents[user]);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Checks if the given address is a contract.\\r\\n     * @param _addr The address to check.\\r\\n     * @return A boolean indicating whether the address is a contract or not.\\r\\n     */\\r\\n    function isContract(address _addr) private view returns (bool) {\\r\\n        uint32 size;\\r\\n        assembly {\\r\\n            size := extcodesize(_addr)\\r\\n        }\\r\\n        return size > 0;\\r\\n    }\\r\\n\\r\\n    function changeRegistry(address _newRegistry) external onlyOwner {\\r\\n        registry = IBaluniV1Registry(_newRegistry);\\r\\n    }\\r\\n\\r\\n    function getRegistry() external view returns (address) {\\r\\n        return address(registry);\\r\\n    }\\r\\n\\r\\n    function changeRegistryAddress(address _newAddress) external onlyOwner {\\r\\n        registry = IBaluniV1Registry(_newAddress);\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x1144019924f9a62736b18a787d69c55f05f2f71fab3800d646c94e070f37e67d\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":12013,"contract":"contracts/orchestators/BaluniV1AgentFactory.sol:BaluniV1AgentFactory","label":"implementation","offset":0,"slot":"0","type":"t_address"},{"astId":12018,"contract":"contracts/orchestators/BaluniV1AgentFactory.sol:BaluniV1AgentFactory","label":"userAgents","offset":0,"slot":"1","type":"t_mapping(t_address,t_contract(BaluniV1Agent)11997)"},{"astId":12021,"contract":"contracts/orchestators/BaluniV1AgentFactory.sol:BaluniV1AgentFactory","label":"registry","offset":0,"slot":"2","type":"t_contract(IBaluniV1Registry)4909"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_contract(BaluniV1Agent)11997":{"encoding":"inplace","label":"contract BaluniV1Agent","numberOfBytes":"20"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_mapping(t_address,t_contract(BaluniV1Agent)11997)":{"encoding":"mapping","key":"t_address","label":"mapping(address => contract BaluniV1Agent)","numberOfBytes":"32","value":"t_contract(BaluniV1Agent)11997"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/orchestators/BaluniV1Router.sol":{"BaluniV1Router":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IBaluniV1Agent.Call[]","name":"calls","type":"tuple[]"},{"indexed":false,"internalType":"address[]","name":"tokensReturn","type":"address[]"}],"name":"Execute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"message","type":"string"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Log","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Mint","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":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"addToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"burnERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"burnUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalBaluni","type":"uint256"},{"internalType":"uint256","name":"totalERC20Balance","type":"uint256"},{"internalType":"uint256","name":"baluniAmount","type":"uint256"},{"internalType":"uint256","name":"tokenDecimals","type":"uint256"}],"name":"calculateTokenShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"weights","type":"uint256[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"callRebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IBaluniV1Agent.Call[]","name":"calls","type":"tuple[]"},{"internalType":"address[]","name":"tokensReturn","type":"address[]"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAgentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getUSDCShareValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"liquidate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidateAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"balAmountToMint","type":"uint256"}],"name":"mintWithUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"uint64","name":"version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"balAmountToMint","type":"uint256"}],"name":"requiredUSDCtoMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"resetContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"tokenValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"addToken(address)":{"details":"Adds a token to the `tokens` set. Can only be called by the contract owner.","params":{"_token":"The address of the token to be added."}},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burnERC20(uint256)":{"details":"Burns a specified amount of BALUNI tokens from the caller's balance.","params":{"burnAmount":"The amount of BALUNI tokens to burn."}},"burnUSDC(uint256)":{"details":"Burns a specified amount of BAL tokens and performs token swaps on multiple tokens.","params":{"burnAmount":"The amount of BAL tokens to burn."}},"calculateTokenShare(uint256,uint256,uint256,uint256)":{"details":"Calculates the token share based on the total Baluni supply, total ERC20 balance, Baluni amount, and token decimals.","params":{"baluniAmount":"The amount of Baluni tokens.","tokenDecimals":"The number of decimals for the ERC20 token.","totalBaluni":"The total supply of Baluni tokens.","totalERC20Balance":"The total balance of the ERC20 token."},"returns":{"_0":"The calculated token share."}},"callRebalance(address[],uint256[],address,address,uint256,address)":{"details":"Calls the `rebalance` function of the `rebalancer` contract.","params":{"assets":"An array of addresses representing the assets to rebalance.","limit":"The maximum number of assets to rebalance.","receiver":"The address of the receiver.","sender":"The address of the sender.","weights":"An array of uint256 values representing the weights of the assets."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"execute((address,uint256,bytes)[],address[])":{"details":"Executes a series of calls to a BaluniV1Agent contract and handles token returns.","params":{"calls":"An array of IBaluniV1Agent.Call structs representing the calls to be executed.","tokensReturn":"An array of addresses representing the tokens to be returned."}},"getAgentAddress(address)":{"details":"Retrieves the agent address associated with a user.","params":{"_user":"The user's address."},"returns":{"_0":"The agent address."}},"getTokens()":{"details":"Returns an array of addresses representing the tokens.","returns":{"_0":"An array of addresses representing the tokens."}},"getUSDCShareValue(uint256)":{"details":"Calculates the value of a given amount of Baluni tokens in USDC.","params":{"amount":"The amount of Baluni tokens."},"returns":{"_0":"The calculated value of the Baluni tokens in USDC."}},"getVersion()":{"details":"Returns the version of the contract.","returns":{"_0":"The version string."}},"initialize(address)":{"details":"Initializes the BaluniV1Router contract. It sets the initial values for various variables and mints 1 ether to the contract's address. It also sets the USDC token address, WNATIVE token address, oracle address, Uniswap router address, and Uniswap factory address. Finally, it adds the USDC token address to the tokens set."},"liquidate(address)":{"details":"Liquidates the specified token by swapping it for USDC.","params":{"token":"The address of the token to be liquidated."}},"liquidateAll()":{"details":"Liquidates all tokens in the contract. This function iterates through all the tokens in the contract and calls the `liquidate` function for each token. Can only be called by the contract owner."},"mintWithUSDC(uint256)":{"details":"Mints a specified amount of BALUNI tokens in exchange for USDC.","params":{"balAmountToMint":"The amount of BALUNI tokens to mint."}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"removeToken(address)":{"details":"Removes a token from the `tokens` set. Can only be called by the contract owner.","params":{"_token":"The address of the token to be removed."}},"renounceOwnership()":{"details":"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."},"requiredUSDCtoMint(uint256)":{"details":"Calculates the amount of USDC required to mint a given amount of BAL tokens.","params":{"balAmountToMint":"The amount of BAL tokens to be minted."},"returns":{"_0":"The amount of USDC required to mint the specified amount of BAL tokens."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"tokenValuation(uint256,address)":{"details":"Calculates the valuation of a given amount of a specific ERC20 token.","params":{"amount":"The amount of the ERC20 token.","token":"The address of the ERC20 token."},"returns":{"_0":"The calculated valuation of the ERC20 token."}},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"totalValuation()":{"details":"Returns the total valuation of the Baluni ecosystem.","returns":{"_0":"The total valuation of the Baluni ecosystem."}},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unitPrice()":{"details":"Returns the unit price of the token in USDC.","returns":{"_0":"The unit price of the token in USDC."}},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":79,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1Router":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":135,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":125,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":115,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":93,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":90,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b617e44610094823960805181818161694a015281816169cf0152616bca0152617e4490f35b6043565b60405190565b5f80fd5b604d6087565b565b60018060a01b031690565b90565b606c6068607092604f565b605a565b604f565b90565b607a90605d565b90565b6084906073565b90565b608e30607d565b60805256fe60806040526004361015610013575b61146a565b61001d5f3561027c565b806306fdde0314610277578063095ea7b3146102725780630cfc73861461026d5780630d8e6e2c1461026857806318160ddd146102635780631a168da21461025e57806323b872dd1461025957806327d54a9214610254578063295b93001461024f5780632bdd955a1461024a5780632f86556814610245578063313ce567146102405780633c2066a91461023b5780634f1ef2861461023657806352d1902d14610231578063599f69f71461022c5780635fa7b5841461022757806370a0823114610222578063715018a61461021d57806371ddcfb8146102185780637b103999146102135780638da5cb5b1461020e5780638f2248bc1461020957806395d89b4114610204578063a9059cbb146101ff578063aa6ca808146101fa578063aa95d893146101f5578063ad3cb1cc146101f0578063c4d66de8146101eb578063cdf456e1146101e6578063d48bfca7146101e1578063dd62ed3e146101dc578063e67ad759146101d7578063e73faa2d146101d2578063eedc3c50146101cd578063f2fde38b146101c8578063fe0a4dd1146101c35763fe330a510361000e57611431565b6113b8565b611385565b611351565b611107565b6110d4565b61109e565b61103e565b611009565b610f88565b610f53565b610e83565b610e4e565b610d79565b610d44565b610d10565b610c8b565b610c56565b610b76565b610b43565b610b0e565b610adb565b610a9e565b61094d565b6108fe565b61078c565b610757565b6106fc565b6106c6565b610664565b61062f565b6105b9565b61054c565b610517565b6104c0565b61045e565b610405565b61030a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261029a57565b61028c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6102e06102e96020936102ee936102d78161029f565b938480936102a3565b958691016102ac565b6102b7565b0190565b6103079160208201915f8184039101526102c1565b90565b3461033a5761031a366004610290565b6103366103256115a3565b61032d610282565b918291826102f2565b0390f35b610288565b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61036590610343565b90565b6103718161035c565b0361037857565b5f80fd5b9050359061038982610368565b565b90565b6103978161038b565b0361039e57565b5f80fd5b905035906103af8261038e565b565b91906040838203126103d957806103cd6103d6925f860161037c565b936020016103a2565b90565b61028c565b151590565b6103ec906103de565b9052565b9190610403905f602085019401906103e3565b565b346104365761043261042161041b3660046103b1565b906115c6565b610429610282565b918291826103f0565b0390f35b610288565b9060208282031261045457610451915f016103a2565b90565b61028c565b5f0190565b3461048c5761047661047136600461043b565b611fd7565b61047e610282565b8061048881610459565b0390f35b610288565b67ffffffffffffffff1690565b6104a790610491565b9052565b91906104be905f6020850194019061049e565b565b346104f0576104d0366004610290565b6104ec6104db611fe6565b6104e3610282565b918291826104ab565b0390f35b610288565b6104fe9061038b565b9052565b9190610515905f602085019401906104f5565b565b3461054757610527366004610290565b610543610532612022565b61053a610282565b91829182610502565b0390f35b610288565b3461057a5761056461055f36600461043b565b6129ce565b61056c610282565b8061057681610459565b0390f35b610288565b90916060828403126105b4576105b161059a845f850161037c565b936105a8816020860161037c565b936040016103a2565b90565b61028c565b346105ea576105e66105d56105cf36600461057f565b916129d9565b6105dd610282565b918291826103f0565b0390f35b610288565b9060208282031261060857610605915f0161037c565b90565b61028c565b6106169061035c565b9052565b919061062d905f6020850194019061060d565b565b3461065f5761065b61064a6106453660046105ef565b612a30565b610652610282565b9182918261061a565b0390f35b610288565b3461069457610674366004610290565b61069061067f612b42565b610687610282565b91829182610502565b0390f35b610288565b91906040838203126106c157806106b56106be925f86016103a2565b9360200161037c565b90565b61028c565b346106f7576106f36106e26106dc366004610699565b90612b9b565b6106ea610282565b91829182610502565b0390f35b610288565b3461072a5761071461070f3660046105ef565b612e03565b61071c610282565b8061072681610459565b0390f35b610288565b60ff1690565b61073e9061072f565b9052565b9190610755905f60208501940190610735565b565b3461078757610767366004610290565b6107836107726131cc565b61077a610282565b91829182610742565b0390f35b610288565b346107ba5761079c366004610290565b6107a4613286565b6107ac610282565b806107b681610459565b0390f35b610288565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906107fe906102b7565b810190811067ffffffffffffffff82111761081857604052565b6107c7565b90610830610829610282565b92836107f4565b565b67ffffffffffffffff81116108505761084c6020916102b7565b0190565b6107c7565b90825f939282370152565b9092919261087561087082610832565b61081d565b938185526020850190828401116108915761088f92610855565b565b6107c3565b9080601f830112156108b4578160206108b193359101610860565b90565b6107bf565b9190916040818403126108f9576108d2835f830161037c565b92602082013567ffffffffffffffff81116108f4576108f19201610896565b90565b61033f565b61028c565b61091261090c3660046108b9565b906132b9565b61091a610282565b8061092481610459565b0390f35b90565b61093490610928565b9052565b919061094b905f6020850194019061092b565b565b3461097d5761095d366004610290565b610979610968613339565b610970610282565b91829182610938565b0390f35b610288565b5f80fd5b5f80fd5b909182601f830112156109c45781359167ffffffffffffffff83116109bf5760200192602083028401116109ba57565b610986565b610982565b6107bf565b909182601f83011215610a035781359167ffffffffffffffff83116109fe5760200192602083028401116109f957565b610986565b610982565b6107bf565b60c081830312610a99575f81013567ffffffffffffffff8111610a945782610a3191830161098a565b929093602083013567ffffffffffffffff8111610a8f5782610a549185016109c9565b929093610a64826040830161037c565b92610a8c610a75846060850161037c565b93610a8381608086016103a2565b9360a00161037c565b90565b61033f565b61033f565b61028c565b34610ad657610ac0610ab1366004610a08565b969590959491949392936135a6565b610ac8610282565b80610ad281610459565b0390f35b610288565b34610b0957610af3610aee3660046105ef565b61378b565b610afb610282565b80610b0581610459565b0390f35b610288565b34610b3e57610b3a610b29610b243660046105ef565b6137b8565b610b31610282565b91829182610502565b0390f35b610288565b34610b7157610b53366004610290565b610b5b613804565b610b63610282565b80610b6d81610459565b0390f35b610288565b34610ba657610ba2610b91610b8c36600461043b565b61380e565b610b99610282565b91829182610502565b0390f35b610288565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b610bd8906008610bdd9302610bab565b610baf565b90565b90610beb9154610bc8565b90565b610bfa60025f90610be0565b90565b90565b610c14610c0f610c1992610343565b610bfd565b610343565b90565b610c2590610c00565b90565b610c3190610c1c565b90565b610c3d90610c28565b9052565b9190610c54905f60208501940190610c34565b565b34610c8657610c66366004610290565b610c82610c71610bee565b610c79610282565b91829182610c41565b0390f35b610288565b34610cbb57610c9b366004610290565b610cb7610ca6613823565b610cae610282565b9182918261061a565b0390f35b610288565b610cc981610491565b03610cd057565b5f80fd5b90503590610ce182610cc0565b565b9190604083820312610d0b5780610cff610d08925f860161037c565b93602001610cd4565b90565b61028c565b34610d3f57610d29610d23366004610ce3565b90613abf565b610d31610282565b80610d3b81610459565b0390f35b610288565b34610d7457610d54366004610290565b610d70610d5f613acb565b610d67610282565b918291826102f2565b0390f35b610288565b34610daa57610da6610d95610d8f3660046103b1565b90613aea565b610d9d610282565b918291826103f0565b0390f35b610288565b5190565b60209181520190565b60200190565b610dcb9061035c565b9052565b90610ddc81602093610dc2565b0190565b60200190565b90610e03610dfd610df684610daf565b8093610db3565b92610dbc565b905f5b818110610e135750505090565b909192610e2c610e266001928651610dcf565b94610de0565b9101919091610e06565b610e4b9160208201915f818403910152610de6565b90565b34610e7e57610e5e366004610290565b610e7a610e69613b11565b610e71610282565b91829182610e36565b0390f35b610288565b34610eb357610eaf610e9e610e9936600461043b565b613b2e565b610ea6610282565b91829182610502565b0390f35b610288565b67ffffffffffffffff8111610ed657610ed26020916102b7565b0190565b6107c7565b90610eed610ee883610eb8565b61081d565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610f236005610edb565b90610f3060208301610ef2565b565b610f3a610f19565b90565b610f45610f32565b90565b610f50610f3d565b90565b34610f8357610f63366004610290565b610f7f610f6e610f48565b610f76610282565b918291826102f2565b0390f35b610288565b34610fb657610fa0610f9b3660046105ef565b613f28565b610fa8610282565b80610fb281610459565b0390f35b610288565b73ffffffffffffffffffffffffffffffffffffffff1690565b610fe4906008610fe99302610bab565b610fbb565b90565b90610ff79154610fd4565b90565b61100660035f90610fec565b90565b3461103957611019366004610290565b611035611024610ffa565b61102c610282565b9182918261061a565b0390f35b610288565b3461106c576110566110513660046105ef565b613f5b565b61105e610282565b8061106881610459565b0390f35b610288565b9190604083820312611099578061108d611096925f860161037c565b9360200161037c565b90565b61028c565b346110cf576110cb6110ba6110b4366004611071565b90613f7c565b6110c2610282565b91829182610502565b0390f35b610288565b34611102576110ec6110e73660046105ef565b613fd5565b6110f4610282565b806110fe81610459565b0390f35b610288565b3461113757611117366004610290565b611133611122613fe0565b61112a610282565b91829182610502565b0390f35b610288565b67ffffffffffffffff81116111545760208091020190565b6107c7565b5f80fd5b5f80fd5b9190916060818403126111c557611178606061081d565b92611185815f840161037c565b5f85015261119681602084016103a2565b6020850152604082013567ffffffffffffffff81116111c0576111b99201610896565b6040830152565b61115d565b611159565b9291906111de6111d98261113c565b61081d565b93818552602080860192028101918383116112355781905b838210611204575050505050565b813567ffffffffffffffff8111611230576020916112258784938701611161565b8152019101906111f6565b6107bf565b610986565b9080601f8301121561125857816020611255933591016111ca565b90565b6107bf565b67ffffffffffffffff81116112755760208091020190565b6107c7565b9092919261128f61128a8261125d565b61081d565b93818552602080860192028301928184116112cc57915b8383106112b35750505050565b602080916112c1848661037c565b8152019201916112a6565b610986565b9080601f830112156112ef578160206112ec9335910161127a565b90565b6107bf565b91909160408184031261134c575f81013567ffffffffffffffff8111611347578361132091830161123a565b92602082013567ffffffffffffffff81116113425761133f92016112d1565b90565b61033f565b61033f565b61028c565b346113805761136a6113643660046112f4565b90614ff3565b611372610282565b8061137c81610459565b0390f35b610288565b346113b35761139d6113983660046105ef565b615084565b6113a5610282565b806113af81610459565b0390f35b610288565b346113e6576113d06113cb36600461043b565b615d07565b6113d8610282565b806113e281610459565b0390f35b610288565b60808183031261142c57611401825f83016103a2565b9261142961141284602085016103a2565b9361142081604086016103a2565b936060016103a2565b90565b61028c565b34611465576114616114506114473660046113eb565b92919091615d12565b611458610282565b91829182610502565b0390f35b610288565b5f80fd5b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90600160028304921680156114c0575b60208310146114bb57565b611473565b91607f16916114b0565b60209181520190565b5f5260205f2090565b905f92918054906114f66114ef836114a0565b80946114ca565b916001811690815f1461154d5750600114611511575b505050565b61151e91929394506114d3565b915f925b81841061153557505001905f808061150c565b60018160209295939554848601520191019290611522565b92949550505060ff19168252151560200201905f808061150c565b90611572916114dc565b90565b9061159561158e92611585610282565b93848092611568565b03836107f4565b565b6115a090611575565b90565b6115ab61146e565b506115bf60036115b9615d2e565b01611597565b90565b5f90565b6115e3916115d26115c2565b506115db615d52565b919091615d5f565b600190565b6115f9906115f4615e0f565b611a6f565b611601615ebb565b565b5f1c90565b61161461161991611603565b610baf565b90565b6116269054611608565b90565b5f80fd5b60e01b90565b9050519061164082610368565b565b9060208282031261165b57611658915f01611633565b90565b61028c565b611668610282565b3d5f823e3d90fd5b9050519061167d8261038e565b565b9060208282031261169857611695915f01611670565b90565b61028c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6116d96116df9193929361038b565b9261038b565b916116eb83820261038b565b9281840414901517156116fa57565b61169d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61173861173e9161038b565b9161038b565b908115611749570490565b6116ff565b61175790610c00565b90565b6117639061174e565b90565b61176f90610c1c565b90565b61177b90610c1c565b90565b90565b61179561179061179a9261177e565b610bfd565b61038b565b90565b6117a6816103de565b036117ad57565b5f80fd5b905051906117be8261179d565b565b906020828203126117d9576117d6915f016117b1565b90565b61028c565b60409061180761180e94969593966117fd60608401985f85019061060d565b602083019061060d565b01906104f5565b565b91602061183192949361182a60408201965f83019061060d565b019061060d565b565b90565b61184a61184561184f92611833565b610bfd565b61038b565b90565b60207f726f000000000000000000000000000000000000000000000000000000000000917f546f74616c2042414c554e4920737570706c792063616e6e6f74206265207a655f8201520152565b6118ac60226040926102a3565b6118b581611852565b0190565b6118ce9060208101905f81830391015261189f565b90565b156118d857565b6118e0610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611910600482016118b9565b0390fd5b5f7f555344432062616c616e636520697320696e73756666696369656e7400000000910152565b611948601c6020926102a3565b61195181611914565b0190565b61196a9060208101905f81830391015261193b565b90565b1561197457565b61197c610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806119ac60048201611955565b0390fd5b5f7f436865636b2074686520746f6b656e20616c6c6f77616e636500000000000000910152565b6119e460196020926102a3565b6119ed816119b0565b0190565b611a069060208101905f8183039101526119d7565b90565b15611a1057565b611a18610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611a48600482016119f1565b0390fd5b916020611a6d929493611a6660408201965f83019061060d565b01906104f5565b565b611a9c6020611a86611a81600261161c565b610c28565b633b19e84a90611a94610282565b93849261162d565b82528180611aac60048201610459565b03915afa908115611fd2575f91611fa4575b5090611aed6020611ad7611ad2600261161c565b610c28565b631bf01e9b90611ae5610282565b93849261162d565b82528180611afd60048201610459565b03915afa908115611f9f575f91611f71575b50611b3d6020611b27611b22600261161c565b610c28565b6385462d6f90611b35610282565b93849261162d565b82528180611b4d60048201610459565b03915afa908115611f6c575f91611f3e575b5091611b8e6020611b78611b73600261161c565b610c28565b634f4608a290611b86610282565b93849261162d565b82528180611b9e60048201610459565b03915afa908115611f39575f91611f0b575b5092611bba615f99565b611bd6611bcf611bc8612022565b92856116ca565b829061172c565b94856020611beb611be68861175a565b611766565b6323b872dd90611c2f5f3393611c3a611c1b611c0630611772565b98611c1564e8d4a51000611781565b9061172c565b611c23610282565b9889978896879561162d565b8552600485016117de565b03925af18015611f0657611eda575b50611c8a6020611c60611c5b8861175a565b611766565b6370a0823190611c7f3392611c73610282565b9586948593849361162d565b83526004830161061a565b03915afa908115611ed5575f91611ea7575b50611cae611ca98761175a565b611766565b93602063dd62ed3e953390611cdd611cc530611772565b98611ce8611cd1610282565b9a8b958694859461162d565b845260048401611810565b03915afa918215611ea257602098611e0397611d94611df897611d64611dee95611d34611df399611dfe9d5f91611e74575b5093611d2e611d285f611836565b9161038b565b116118d1565b611d5d611d57611d5288611d4c64e8d4a51000611781565b9061172c565b61038b565b9161038b565b101561196d565b611d8d611d87611d8286611d7c64e8d4a51000611781565b9061172c565b61038b565b9161038b565b1015611a09565b611d9f338290616241565b33907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688591611dd7611dce610282565b92839283611a4c565b0390a1611de864e8d4a51000611781565b9061172c565b6116ca565b61172c565b9261175a565b611766565b611e265f63a9059cbb959395611e31611e1a610282565b9788968795869461162d565b845260048401611a4c565b03925af18015611e6f57611e43575b50565b611e639060203d8111611e68575b611e5b81836107f4565b8101906117c0565b611e40565b503d611e51565b611660565b6020611e9592503d8111611e9b575b611e8d81836107f4565b81019061167f565b5f611d1a565b503d611e83565b611660565b611ec8915060203d8111611ece575b611ec081836107f4565b81019061167f565b5f611c9c565b503d611eb6565b611660565b611efa9060203d8111611eff575b611ef281836107f4565b8101906117c0565b611c49565b503d611ee8565b611660565b611f2c915060203d8111611f32575b611f2481836107f4565b81019061167f565b5f611bb0565b503d611f1a565b611660565b611f5f915060203d8111611f65575b611f5781836107f4565b81019061167f565b5f611b5f565b503d611f4d565b611660565b611f92915060203d8111611f98575b611f8a81836107f4565b810190611642565b5f611b0f565b503d611f80565b611660565b611fc5915060203d8111611fcb575b611fbd81836107f4565b810190611642565b5f611abe565b503d611fb3565b611660565b611fe0906115e8565b565b5f90565b611fee611fe2565b50611ff76162bf565b90565b5f90565b90565b61200d61201291611603565b611ffe565b90565b61201f9054612001565b90565b61202a611ffa565b5061203e6002612038615d2e565b01612015565b90565b6120529061204d615e0f565b6125a6565b61205a615ebb565b565b60207f2030000000000000000000000000000000000000000000000000000000000000917f4275726e20616d6f756e74206d7573742062652067726561746572207468616e5f8201520152565b6120b660226040926102a3565b6120bf8161205c565b0190565b6120d89060208101905f8183039101526120a9565b90565b156120e257565b6120ea610282565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061211a600482016120c3565b0390fd5b61213261212d61213792611833565b610bfd565b610343565b90565b6121439061211e565b90565b5f7f5472656173757279206e6f742073657400000000000000000000000000000000910152565b61217a60106020926102a3565b61218381612146565b0190565b61219c9060208101905f81830391015261216d565b90565b156121a657565b6121ae610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806121de60048201612187565b0390fd5b5f7f496e73756666696369656e742042414c00000000000000000000000000000000910152565b61221660106020926102a3565b61221f816121e2565b0190565b6122389060208101905f818303910152612209565b90565b1561224257565b61224a610282565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061227a60048201612223565b0390fd5b5f7f4665652063616c63756c6174696f6e206572726f720000000000000000000000910152565b6122b260156020926102a3565b6122bb8161227e565b0190565b6122d49060208101905f8183039101526122a5565b90565b156122de57565b6122e6610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612316600482016122bf565b0390fd5b61232961232f9193929361038b565b9261038b565b820391821161233a57565b61169d565b600161234b910161038b565b90565b90565b5f7f496e76616c696420746f6b656e20616464726573730000000000000000000000910152565b61238560156020926102a3565b61238e81612351565b0190565b6123a79060208101905f818303910152612378565b90565b156123b157565b6123b9610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806123e960048201612392565b0390fd5b5f7f546f74616c20737570706c792069732030000000000000000000000000000000910152565b61242160116020926102a3565b61242a816123ed565b0190565b6124439060208101905f818303910152612414565b90565b1561244d57565b612455610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806124856004820161242e565b0390fd5b61249290610c00565b90565b61249e90612489565b90565b6124aa90610c1c565b90565b6124b68161072f565b036124bd57565b5f80fd5b905051906124ce826124ad565b565b906020828203126124e9576124e6915f016124c1565b90565b61028c565b6125026124fd6125079261072f565b610bfd565b61038b565b90565b5f7f53686172652063616c63756c6174696f6e206572726f72000000000000000000910152565b61253e60176020926102a3565b6125478161250a565b0190565b6125609060208101905f818303910152612531565b90565b1561256a57565b612572610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806125a26004820161254b565b0390fd5b906125c3826125bd6125b75f611836565b9161038b565b116120db565b6125f060206125da6125d5600261161c565b610c28565b633b19e84a906125e8610282565b93849261162d565b8252818061260060048201610459565b03915afa80156129c957612699915f9161299b575b509261263c8461263561262f61262a5f61213a565b61035c565b9161035c565b141561219f565b612661612648336137b8565b61265a6126548461038b565b9161038b565b101561223b565b61269361266d826162dd565b9461268b8661268461267e8661038b565b9161038b565b11156122d7565b91859061231a565b90613aea565b506126a2611ffa565b5b806126c66126c06126bb6126b65f61234e565b616411565b61038b565b9161038b565b1015612951576126df6126d85f61234e565b8290616460565b90612705826126fe6126f86126f35f61213a565b61035c565b9161035c565b14156123aa565b61270d612022565b9161272a8361272461271e5f611836565b9161038b565b11612446565b612772602061274061273b8461175a565b611766565b6370a082319061276761275230611772565b9261275b610282565b9586948593849361162d565b83526004830161061a565b03915afa90811561294c575f9161291e575b5092836127996127935f611836565b9161038b565b1480156128fc575b6128f057906127d39160206127bd6127b884612495565b6124a1565b63313ce567906127cb610282565b95869261162d565b825281806127e360048201610459565b03915afa9182156128eb576128336128186128389361280f61283d966020985f916128be575b506124ee565b898c9192616608565b9661282c612826899261038b565b9161038b565b1115612563565b61175a565b611766565b9263a9059cbb936128625f33939661286d612856610282565b9889968795869461162d565b845260048401611a4c565b03925af19182156128b9576128889261288d575b505b61233f565b6126a3565b6128ad9060203d81116128b2575b6128a581836107f4565b8101906117c0565b612881565b503d61289b565b611660565b6128de9150893d81116128e4575b6128d681836107f4565b8101906124d0565b5f612809565b503d6128cc565b611660565b50506128889150612883565b508161291861291261290d30611772565b61035c565b9161035c565b146127a1565b61293f915060203d8111612945575b61293781836107f4565b81019061167f565b5f612784565b503d61292d565b611660565b509061295e3382906166c6565b33907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59161299661298d610282565b92839283611a4c565b0390a1565b6129bc915060203d81116129c2575b6129b481836107f4565b810190611642565b5f612615565b503d6129aa565b611660565b6129d790612041565b565b91612a03926129e66115c2565b506129fb6129f2615d52565b82908491616785565b919091616850565b600190565b5f90565b612a1590610c00565b90565b612a2190612a0c565b90565b612a2d90610c1c565b90565b612a38612a08565b50612a666020612a50612a4b600261161c565b610c28565b63f5d2d99890612a5e610282565b93849261162d565b82528180612a7660048201610459565b03915afa918215612b3d57612aa0612a9b612ac7946020945f91612b10575b50612a18565b612a24565b612abc6327d54a92612ab0610282565b9586948593849361162d565b83526004830161061a565b03915afa908115612b0b575f91612add575b5090565b612afe915060203d8111612b04575b612af681836107f4565b810190611642565b5f612ad9565b503d612aec565b611660565b612b309150853d8111612b36575b612b2881836107f4565b810190611642565b5f612a95565b503d612b1e565b611660565b612b4a611ffa565b50612b53615f99565b90565b612b5f90610c00565b90565b612b6b90612b56565b90565b612b7790610c1c565b90565b612b86612b8b91611603565b610fbb565b90565b612b989054612b7a565b90565b90612bd390612ba8611ffa565b506020612bbd612bb8600261161c565b610c28565b63bb3ba04c90612bcb610282565b94859261162d565b82528180612be360048201610459565b03915afa8015612cb457612c04612c09916020945f91612c87575b50612b62565b612b6e565b612c3363b27b5e75612c3e612c1e6003612b8e565b96612c27610282565b9788968795869561162d565b8552600485016117de565b03915afa908115612c82575f91612c54575b5090565b612c75915060203d8111612c7b575b612c6d81836107f4565b81019061167f565b5f612c50565b503d612c63565b611660565b612ca79150853d8111612cad575b612c9f81836107f4565b810190611642565b5f612bfe565b503d612c95565b611660565b612cc290610c00565b90565b612cce90612cb9565b90565b612cda90610c1c565b90565b612d12612d1994612d08606094989795612cfe608086019a5f87019061060d565b602085019061060d565b60408301906104f5565b019061060d565b565b90959492612d6694612d55612d5f92612d4b608096612d4160a088019c5f89019061060d565b602087019061060d565b604085019061060d565b60608301906104f5565b019061060d565b565b5f7f4d75746920486f702053776170204661696c65642c20547279204275726e2829910152565b612d9b602080926102a3565b612da481612d68565b0190565b612dbd9060208101905f818303910152612d8f565b90565b15612dc757565b612dcf610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612dff60048201612da8565b0390fd5b612e306020612e1a612e15600261161c565b610c28565b636c9c007890612e28610282565b93849261162d565b82528180612e4060048201610459565b03915afa9081156131a4575f91613176575b50612e806020612e6a612e65600261161c565b610c28565b6382755ebb90612e78610282565b93849261162d565b82528180612e9060048201610459565b03915afa908115613171575f91613143575b5090612eec6020612eba612eb58661175a565b611766565b6370a0823190612ee1612ecc30611772565b92612ed5610282565b9586948593849361162d565b83526004830161061a565b03915afa90811561313e575f91613110575b509283612f13612f0d5f611836565b9161038b565b11612f25612f208361175a565b611766565b90602063095ea7b3928690612f4d5f8a96612f58612f41610282565b9889968795869461162d565b845260048401611a4c565b03925af191821561310b57612f73926130df575b50156103de565b6130d957612f88612f8384612cc5565b612cd1565b6020632d6bc8ea918390612fc35f612fa06003612b8e565b95612fce8b612fae30611772565b90612fb7610282565b998a988997889661162d565b865260048601612cdd565b03925af190816130ad575b50155f146130a7576001612fed5750505050565b6130395f613004612fff602096612cc5565b612cd1565b92613044635efaaebb91959761301a6003612b8e565b9061302430611772565b9161302d610282565b9a8b998a98899761162d565b875260048701612d1b565b03925af180156130a257613072915f91613074575b5061306c6130665f611836565b9161038b565b11612dc0565b565b613095915060203d811161309b575b61308d81836107f4565b81019061167f565b5f613059565b503d613083565b611660565b50505050565b6130cd9060203d81116130d2575b6130c581836107f4565b81019061167f565b612fd9565b503d6130bb565b50505050565b6130ff9060203d8111613104575b6130f781836107f4565b8101906117c0565b612f6c565b503d6130ed565b611660565b613131915060203d8111613137575b61312981836107f4565b81019061167f565b5f612efe565b503d61311f565b611660565b613164915060203d811161316a575b61315c81836107f4565b810190611642565b5f612ea2565b503d613152565b611660565b613197915060203d811161319d575b61318f81836107f4565b810190611642565b5f612e52565b503d613185565b611660565b5f90565b90565b6131c46131bf6131c9926131ad565b610bfd565b61072f565b90565b6131d46131a9565b506131df60126131b0565b90565b6131ea615e0f565b6131f26131fc565b6131fa615ebb565b565b61320d6132085f61234e565b616411565b6132165f611836565b5b8061322a6132248461038b565b9161038b565b101561328257613277906132476132405f61234e565b8290616460565b8061326361325d6132586003612b8e565b61035c565b9161035c565b1461327c5761327190612e03565b5b61233f565b613217565b50613272565b5050565b61328e6131e2565b565b906132a29161329d616939565b6132a4565b565b906132b7916132b281616a0b565b616a7b565b565b906132c391613290565b565b5f90565b6132da906132d5616bb9565b61332d565b90565b90565b5f1b90565b6132f96132f46132fe926132dd565b6132e0565b610928565b90565b61332a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6132e5565b90565b50613336613301565b90565b6133496133446132c5565b6132c9565b90565b67ffffffffffffffff81116133645760208091020190565b6107c7565b9061337b6133768361334c565b61081d565b918252565b369037565b906133aa61339283613369565b926020806133a0869361334c565b9201910390613380565b565b6133b590610c00565b90565b6133c1906133ac565b90565b6133cd90610c1c565b90565b5f9103126133da57565b61028c565b5190565b60209181520190565b60200190565b6133fb9061038b565b9052565b9061340c816020936133f2565b0190565b60200190565b9061343361342d613426846133df565b80936133e3565b926133ec565b905f5b8181106134435750505090565b90919261345c61345660019286516133ff565b94613410565b9101919091613436565b90565b5061347890602081019061037c565b90565b60200190565b9161348f8261349592610db3565b92613466565b90815f905b8282106134a8575050505090565b909192936134ca6134c46001926134bf8886613469565b610dcf565b9561347b565b92019092919261349a565b5f80fd5b9037565b9091826134e9916133e3565b917f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111613526578291602061352292029384916134d9565b0190565b6134d5565b9461357e61359d95613589926135706135939660c09b9f9e9c96986135616135a49f9a8d9060e08201915f818403910152613416565b918c6020818503910152613481565b9189830360408b01526134dd565b9a60608701906104f5565b608085019061060d565b60a083019061060d565b019061060d565b565b9490965094919092946135dc60206135c66135c1600261161c565b610c28565b631bf01e9b906135d4610282565b93849261162d565b825281806135ec60048201610459565b03915afa90811561375e575f91613730575b509361362d6020613617613612600261161c565b610c28565b63cff49d6890613625610282565b93849261162d565b8252818061363d60048201610459565b03915afa90811561372b575f916136fd575b509161367361366e6136686136635f611836565b613385565b946133b8565b6133c4565b9563f0bf771493979992949598919091873b156136f8575f996136aa978b976136b59661369e610282565b9e8f9d8e9c8d9b61162d565b8b5260048b0161352b565b03925af180156136f3576136c7575b50565b6136e6905f3d81116136ec575b6136de81836107f4565b8101906133d0565b5f6136c4565b503d6136d4565b611660565b611629565b61371e915060203d8111613724575b61371681836107f4565b810190611642565b5f61364f565b503d61370c565b611660565b613751915060203d8111613757575b61374981836107f4565b810190611642565b5f6135fe565b503d61373f565b611660565b6137749061376f616c37565b613776565b565b613788906137835f61234e565b616ce9565b50565b61379490613763565b565b61379f90610c1c565b90565b906137ac90613796565b5f5260205260405f2090565b6137d76137dc916137c7611ffa565b505f6137d1615d2e565b016137a2565b612015565b90565b6137e7616c37565b6137ef6137f1565b565b6138026137fd5f61213a565b616d23565b565b61380c6137df565b565b6138209061381a611ffa565b50616d8f565b90565b61382b612a08565b5061383e5f613838616e93565b01612b8e565b90565b60401c90565b60ff1690565b61385961385e91613841565b613847565b90565b61386b905461384d565b90565b67ffffffffffffffff1690565b61388761388c91611603565b61386e565b90565b613899905461387b565b90565b906138af67ffffffffffffffff916132e0565b9181191691161790565b6138cd6138c86138d292610491565b610bfd565b610491565b90565b90565b906138ed6138e86138f4926138b9565b6138d5565b825461389c565b9055565b60401b90565b9061391268ff0000000000000000916138f8565b9181191691161790565b613925906103de565b90565b90565b9061394061393b6139479261391c565b613928565b82546138fe565b9055565b908091613956616eb7565b906139625f8301613861565b8015613a13575b6139d75761399c9261399391613981865f86016138d8565b61398e60015f860161392b565b613aa8565b5f80910161392b565b6139d27fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916139c9610282565b918291826104ab565b0390a1565b6139df610282565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613a0f60048201610459565b0390fd5b50613a1f5f830161388f565b613a31613a2b86610491565b91610491565b1015613969565b613a4190610c00565b90565b613a4d90613a38565b90565b90613a6f73ffffffffffffffffffffffffffffffffffffffff916132e0565b9181191691161790565b613a8290613a38565b90565b90565b90613a9d613a98613aa492613a79565b613a85565b8254613a50565b9055565b613abd9150613ab690613a44565b6002613a88565b565b90613ac99161394b565b565b613ad361146e565b50613ae76004613ae1615d2e565b01611597565b90565b613b0791613af66115c2565b50613aff615d52565b919091616850565b600190565b606090565b613b19613b0c565b50613b2b613b265f61234e565b616edb565b90565b613b5c613b7091613b3d611ffa565b50613b57613b49615f99565b613b51612022565b926116ca565b61172c565b613b6a64e8d4a51000611781565b9061172c565b90565b613b87613b82613b8c92611833565b610bfd565b610491565b90565b90565b613ba6613ba1613bab92613b8f565b610bfd565b610491565b90565b613bb790610c1c565b90565b613bc390613b92565b9052565b9190613bda905f60208501940190613bba565b565b613be4616eb7565b90613bf9613bf35f8401613861565b156103de565b90613c055f840161388f565b80613c18613c125f613b73565b91610491565b1480613d52575b90613c33613c2d6001613b92565b91610491565b1480613d2a575b613c459091156103de565b9081613d19575b50613cdd57613c7590613c6a613c626001613b92565b5f86016138d8565b82613ccb575b613e31565b613c7d575b50565b613c8a905f80910161392b565b6001613cc27fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291613cb9610282565b91829182613bc7565b0390a15f613c7a565b613cd860015f860161392b565b613c70565b613ce5610282565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613d1560048201610459565b0390fd5b613d249150156103de565b5f613c4c565b50613c45613d3730613bae565b3b613d4a613d445f611836565b9161038b565b149050613c3a565b5082613c1f565b5f7f42616c756e690000000000000000000000000000000000000000000000000000910152565b613d8a6006610edb565b90613d9760208301613d59565b565b613da1613d80565b90565b5f7f42414c554e490000000000000000000000000000000000000000000000000000910152565b613dd56006610edb565b90613de260208301613da4565b565b613dec613dcb565b90565b90565b613e06613e01613e0b92613def565b610bfd565b61038b565b90565b90565b90613e26613e21613e2d92613796565b613e0e565b8254613a50565b9055565b613e92613e9991613e51613e43613d99565b613e4b613de4565b90616f23565b613e5a33616f4d565b613e62616f74565b613e6a616f88565b613e8d613e7630611772565b613e87670de0b6b3a7640000613df2565b90616241565b613a44565b6002613a88565b613ec66020613eb0613eab600261161c565b610c28565b631bf01e9b90613ebe610282565b93849261162d565b82528180613ed660048201610459565b03915afa8015613f2357613ef3915f91613ef5575b506003613e11565b565b613f16915060203d8111613f1c575b613f0e81836107f4565b810190611642565b5f613eeb565b503d613f04565b611660565b613f3190613bdc565b565b613f4490613f3f616c37565b613f46565b565b613f5890613f535f61234e565b616f92565b50565b613f6490613f33565b565b90613f7090613796565b5f5260205260405f2090565b613faa91613fa0613fa592613f8f611ffa565b506001613f9a615d2e565b01613f66565b6137a2565b612015565b90565b613fbe90613fb9616c37565b613fc0565b565b613fcc613fd391613a44565b6002613a88565b565b613fde90613fad565b565b613fe8611ffa565b50614002613ffd670de0b6b3a7640000613df2565b616d8f565b90565b9061401791614012615e0f565b614433565b61401f615ebb565b565b5f7f4167656e7420666163746f7279206e6f74207365740000000000000000000000910152565b61405560156020926102a3565b61405e81614021565b0190565b6140779060208101905f818303910152614048565b90565b1561408157565b614089610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806140b960048201614062565b0390fd5b67ffffffffffffffff81116140d55760208091020190565b6107c7565b906140ec6140e7836140bd565b61081d565b918252565b369037565b9061411b614103836140da565b9260208061411186936140bd565b92019103906140f1565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9061415482610daf565b811015614165576020809102010190565b61411d565b614174905161035c565b90565b5190565b9061418582614177565b811015614196576020809102010190565b61411d565b906141a5906103de565b9052565b906141b3826133df565b8110156141c4576020809102010190565b61411d565b906141d39061038b565b9052565b6141e090610c00565b90565b6141ec906141d7565b90565b6141f890610c1c565b90565b5190565b60209181520190565b60200190565b5190565b60209181520190565b61423a614243602093614248936142318161420e565b93848093614212565b958691016102ac565b6102b7565b0190565b61428991604060608201926142675f8201515f850190610dc2565b614279602082015160208501906133f2565b015190604081840391015261421b565b90565b906142969161424c565b90565b60200190565b906142b36142ac836141fb565b80926141ff565b90816142c460208302840194614208565b925f915b8383106142d757505050505090565b909192939460206142f96142f38385600195038752895161428c565b97614299565b93019301919392906142c8565b909161432061432e9360408401908482035f86015261429f565b916020818403910152610de6565b90565b61433a90610c00565b90565b61434690614331565b90565b61435290610c1c565b90565b90565b62ffffff1690565b61437461436f61437992614355565b610bfd565b614358565b90565b61438590614360565b9052565b6040906143b26143b994969593966143a860608401985f85019061060d565b602083019061060d565b019061437c565b565b90565b6143d26143cd6143d7926143bb565b610bfd565b614358565b90565b6143e3906143be565b9052565b604090614410614417949695939661440660608401985f85019061060d565b602083019061060d565b01906143da565b565b61442390516103de565b90565b614430905161038b565b90565b9190614462602061444c614447600261161c565b610c28565b63f5d2d9989061445a610282565b93849261162d565b8252818061447260048201610459565b03915afa908115614fee575f91614fc0575b506144b2602061449c614497600261161c565b610c28565b633e6dfa36906144aa610282565b93849261162d565b825281806144c260048201610459565b03915afa908115614fbb575f91614f8d575b509061450360206144ed6144e8600261161c565b610c28565b636c9c0078906144fb610282565b93849261162d565b8252818061451360048201610459565b03915afa908115614f88575f91614f5a575b5091614554602061453e614539600261161c565b610c28565b631bf01e9b9061454c610282565b93849261162d565b8252818061456460048201610459565b03915afa908115614f55576145b46145af6145df936020935f91614f28575b50956145aa816145a361459d6145985f61213a565b61035c565b9161035c565b141561407a565b612a18565b612a24565b639b76a5cd906145d45f33936145c8610282565b9687958694859361162d565b83526004830161061a565b03925af1908115614f23575f91614ef5575b50946146046145ff86610daf565b6140f6565b9361461661461187610daf565b613385565b976146205f611836565b5b8061463c6146366146318b610daf565b61038b565b9161038b565b101561474b576146e19061468a6146786146728b61466d6146676146625f93889061414a565b61416a565b9161234e565b616fcc565b156103de565b6146858a9184909261417b565b61419b565b60206146af6146aa6146a56146a08d869061414a565b61416a565b61175a565b611766565b6370a08231906146d66146c130611772565b926146ca610282565b9687948593849361162d565b83526004830161061a565b03915afa918215614746576147139261470e915f91614718575b506147098d918490926141a9565b6141c9565b61233f565b614621565b614739915060203d811161473f575b61473181836107f4565b81019061167f565b5f6146fb565b503d614727565b611660565b509091929497939596614760614765916141e3565b6141ef565b9063eedc3c50908892803b15614ef0576147925f809461479d614786610282565b9788968795869461162d565b845260048401614306565b03925af18015614eeb57614ebf575b506147b65f611836565b5b806147d26147cc6147c78a610daf565b61038b565b9161038b565b1015614eb5576147eb6147e688839061414a565b61416a565b9061483460206148026147fd8561175a565b611766565b6370a082319061482961481430611772565b9261481d610282565b9586948593849361162d565b83526004830161061a565b03915afa908115614eb0575f91614e82575b50916148596148548861433d565b614349565b6020631698ee82918390614882889461488d610bb8614876610282565b9788968795869561162d565b855260048501614389565b03915afa908115614e7d575f91614e4f575b506148b16148ac8961433d565b614349565b6020631698ee829184906148da89946148e56101f46148ce610282565b9788968795869561162d565b8552600485016143e7565b03915afa908115614e4a575f91614e1c575b509061490a6149058a61433d565b614349565b60208b631698ee829261493387929461493e6101f4614927610282565b9788968795869561162d565b8552600485016143e7565b03915afa908115614e17575f91614de9575b509161496361495e8b61433d565b614349565b60208c631698ee829261498c889294614997610bb8614980610282565b9788968795869561162d565b855260048501614389565b03915afa908115614de4575f91614db6575b50916149c56149bf6149ba5f61213a565b61035c565b9161035c565b1415908115614d92575b50908115614d6e575b50908115614d4a575b50926149f66149f18c859061417b565b614419565b80614d43575b614d2a575b614a28614a2182614a1b614a168b88906141a9565b614426565b9061231a565b94156103de565b614c9757614a596020614a43614a3e600261161c565b610c28565b633b19e84a90614a51610282565b93849261162d565b82528180614a6960048201610459565b03915afa908115614c92575f91614c64575b5093614aaa6020614a94614a8f600261161c565b610c28565b6385462d6f90614aa2610282565b93849261162d565b82528180614aba60048201610459565b03915afa908115614c5f575f91614c31575b5090614afb6020614ae5614ae0600261161c565b610c28565b634f4608a290614af3610282565b93849261162d565b82528180614b0b60048201610459565b03915afa908115614c2c575f91614bfe575b5092614b43614b3d614b38614b338d8a906141a9565b614426565b61038b565b9161038b565b11614b5c575b50505050614b57915061233f565b6147b7565b614b7860209493614b73614b8394614b7e946116ca565b61172c565b9261175a565b611766565b614ba65f63a9059cbb969396614bb1614b9a610282565b9889968795869461162d565b845260048401611a4c565b03925af1918215614bf957614b5792614bcd575b808080614b49565b614bed9060203d8111614bf2575b614be581836107f4565b8101906117c0565b614bc5565b503d614bdb565b611660565b614c1f915060203d8111614c25575b614c1781836107f4565b81019061167f565b5f614b1d565b503d614c0d565b611660565b614c52915060203d8111614c58575b614c4a81836107f4565b81019061167f565b5f614acc565b503d614c40565b611660565b614c85915060203d8111614c8b575b614c7d81836107f4565b810190611642565b5f614a7b565b503d614c73565b611660565b509398505095505060209350614cb79250614cb2915061175a565b611766565b9163a9059cbb92614cdc5f339395614ce7614cd0610282565b9788968795869461162d565b845260048401611a4c565b03925af18015614d2557614cf9575b50565b614d199060203d8111614d1e575b614d1181836107f4565b8101906117c0565b614cf6565b503d614d07565b611660565b614d3d5f614d38849161234e565b616f92565b50614a01565b50836149fc565b9050614d66614d60614d5b5f61213a565b61035c565b9161035c565b14155f6149e1565b9050614d8a614d84614d7f5f61213a565b61035c565b9161035c565b14155f6149d8565b9050614dae614da8614da35f61213a565b61035c565b9161035c565b14155f6149cf565b614dd7915060203d8111614ddd575b614dcf81836107f4565b810190611642565b5f6149a9565b503d614dc5565b611660565b614e0a915060203d8111614e10575b614e0281836107f4565b810190611642565b5f614950565b503d614df8565b611660565b614e3d915060203d8111614e43575b614e3581836107f4565b810190611642565b5f6148f7565b503d614e2b565b611660565b614e70915060203d8111614e76575b614e6881836107f4565b810190611642565b5f61489f565b503d614e5e565b611660565b614ea3915060203d8111614ea9575b614e9b81836107f4565b81019061167f565b5f614846565b503d614e91565b611660565b5050945050505050565b614ede905f3d8111614ee4575b614ed681836107f4565b8101906133d0565b5f6147ac565b503d614ecc565b611660565b611629565b614f16915060203d8111614f1c575b614f0e81836107f4565b810190611642565b5f6145f1565b503d614f04565b611660565b614f489150843d8111614f4e575b614f4081836107f4565b810190611642565b5f614583565b503d614f36565b611660565b614f7b915060203d8111614f81575b614f7381836107f4565b810190611642565b5f614525565b503d614f69565b611660565b614fae915060203d8111614fb4575b614fa681836107f4565b810190611642565b5f6144d4565b503d614f9c565b611660565b614fe1915060203d8111614fe7575b614fd981836107f4565b810190611642565b5f614484565b503d614fcf565b611660565b90614ffd91614005565b565b6150109061500b616c37565b615012565b565b8061502d6150276150225f61213a565b61035c565b9161035c565b1461503d5761503b90616d23565b565b6150806150495f61213a565b615051610282565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b61508d90614fff565b565b6150a09061509b615e0f565b6153b6565b6150a8615ebb565b565b5f7f556e6973776170466163746f7279206e6f742073657400000000000000000000910152565b6150de60166020926102a3565b6150e7816150aa565b0190565b6151009060208101905f8183039101526150d1565b90565b1561510a57565b615112610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615142600482016150eb565b0390fd5b5f7f574e4154495645206e6f74207365740000000000000000000000000000000000910152565b61517a600f6020926102a3565b61518381615146565b0190565b61519c9060208101905f81830391015261516d565b90565b156151a657565b6151ae610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806151de60048201615187565b0390fd5b5f7f42616c756e6953776170706572206e6f74207365740000000000000000000000910152565b61521660156020926102a3565b61521f816151e2565b0190565b6152389060208101905f818303910152615209565b90565b1561524257565b61524a610282565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061527a60048201615223565b0390fd5b5f7f53776170204661696c6564000000000000000000000000000000000000000000910152565b6152b2600b6020926102a3565b6152bb8161527e565b0190565b6152d49060208101905f8183039101526152a5565b90565b156152de57565b6152e6610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615316600482016152bf565b0390fd5b5f7f4d756c7469486f7053776170204661696c656400000000000000000000000000910152565b61534e60136020926102a3565b6153578161531a565b0190565b6153709060208101905f818303910152615341565b90565b1561537a57565b615382610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806153b26004820161535b565b0390fd5b6153d2816153cc6153c65f611836565b9161038b565b116120db565b6153ff60206153e96153e4600261161c565b610c28565b633e6dfa36906153f7610282565b93849261162d565b8252818061540f60048201610459565b03915afa8015615d0257615446915f91615cd4575b5061543f6154396154345f61213a565b61035c565b9161035c565b1415615103565b615473602061545d615458600261161c565b610c28565b633b19e84a9061546b610282565b93849261162d565b8252818061548360048201610459565b03915afa908115615ccf575f91615ca1575b506154bb816154b46154ae6154a95f61213a565b61035c565b9161035c565b141561219f565b6154e860206154d26154cd600261161c565b610c28565b636c9c0078906154e0610282565b93849261162d565b825281806154f860048201610459565b03915afa8015615c9c5761556b915f91615c6e575b50916155348361552d6155276155225f61213a565b61035c565b9161035c565b141561519f565b615565615540856162dd565b9461555e866155576155518461038b565b9161038b565b11156122d7565b859061231a565b90613aea565b50615574611ffa565b5b8061559861559261558d6155885f61234e565b616411565b61038b565b9161038b565b1015615c24576155b16155aa5f61234e565b8290616460565b6155d6816155cf6155c96155c45f61213a565b61035c565b9161035c565b14156123aa565b6155de612022565b906155fb826155f56155ef5f611836565b9161038b565b11612446565b615643602061561161560c8461175a565b611766565b6370a082319061563861562330611772565b9261562c610282565b9586948593849361162d565b83526004830161061a565b03915afa908115615c1f575f91615bf1575b50918261566a6156645f611836565b9161038b565b148015615bcf575b615bc3576156a390602061568d61568885612495565b6124a1565b63313ce5679061569b610282565b94859261162d565b825281806156b360048201610459565b03915afa908115615bbe576156d66156df926156fa945f91615b90575b506124ee565b85899192616608565b926156f36156ed859261038b565b9161038b565b1115612563565b8061571661571061570b6003612b8e565b61035c565b9161035c565b14615af757615748602061573261572d600261161c565b610c28565b6382755ebb90615740610282565b93849261162d565b8252818061575860048201610459565b03915afa908115615af2575f91615ac4575b506157908161578961578361577e5f61213a565b61035c565b9161035c565b141561523b565b6157a161579c8361175a565b611766565b602063095ea7b39183906157c85f88956157d36157bc610282565b9788968795869461162d565b845260048401611a4c565b03925af18015615abf57615a93575b506157f46157ef82612cc5565b612cd1565b6020632d6bc8ea9184906158275f61580c6003612b8e565b956158328a339061581b610282565b998a988997889661162d565b865260048601612cdd565b03925af180915f92615a63575b50155f146159ab57506001615862575b50505061585d905b5b61233f565b615575565b90615876615871602093612cc5565b612cd1565b6158a55f635efaaebb6158b0899761588e6003612b8e565b903391615899610282565b9a8b998a98899761162d565b875260048701612d1b565b03925af19081156159a6575f91615978575b50906158e0826158da6158d45f611836565b9161038b565b11615373565b60206158fc6158f76158f26003612b8e565b61175a565b611766565b9263a9059cbb936159215f33939661592c615915610282565b9889968795869461162d565b845260048401611a4c565b03925af19182156159735761585d92615947575b819261584f565b6159679060203d811161596c575b61595f81836107f4565b8101906117c0565b615940565b503d615955565b611660565b615999915060203d811161599f575b61599181836107f4565b81019061167f565b5f6158c2565b503d615987565b611660565b92505050906159cc826159c66159c05f611836565b9161038b565b116152d7565b60206159e86159e36159de6003612b8e565b61175a565b611766565b9263a9059cbb93615a0d5f339396615a18615a01610282565b9889968795869461162d565b845260048401611a4c565b03925af1918215615a5e5761585d92615a32575b50615857565b615a529060203d8111615a57575b615a4a81836107f4565b8101906117c0565b615a2c565b503d615a40565b611660565b615a8591925060203d8111615a8c575b615a7d81836107f4565b81019061167f565b905f61583f565b503d615a73565b615ab39060203d8111615ab8575b615aab81836107f4565b8101906117c0565b6157e2565b503d615aa1565b611660565b615ae5915060203d8111615aeb575b615add81836107f4565b810190611642565b5f61576a565b503d615ad3565b611660565b50906020615b15615b10615b0b6003612b8e565b61175a565b611766565b9263a9059cbb93615b3a5f339396615b45615b2e610282565b9889968795869461162d565b845260048401611a4c565b03925af1918215615b8b5761585d92615b5f575b50615858565b615b7f9060203d8111615b84575b615b7781836107f4565b8101906117c0565b615b59565b503d615b6d565b611660565b615bb1915060203d8111615bb7575b615ba981836107f4565b8101906124d0565b5f6156d0565b503d615b9f565b611660565b50505061585d90615858565b5081615beb615be5615be030611772565b61035c565b9161035c565b14615672565b615c12915060203d8111615c18575b615c0a81836107f4565b81019061167f565b5f615655565b503d615c00565b611660565b5050615c313382906166c6565b33907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca591615c69615c60610282565b92839283611a4c565b0390a1565b615c8f915060203d8111615c95575b615c8781836107f4565b810190611642565b5f61550d565b503d615c7d565b611660565b615cc2915060203d8111615cc8575b615cba81836107f4565b810190611642565b5f615495565b503d615cb0565b611660565b615cf5915060203d8111615cfb575b615ced81836107f4565b810190611642565b5f615424565b503d615ce3565b611660565b615d109061508f565b565b91615d2b939192615d21611ffa565b5092909192616608565b90565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b615d5a612a08565b503390565b91615d6d9291600192617006565b565b90565b615d86615d81615d8b92615d6f565b610bfd565b61038b565b90565b615d986002615d72565b90565b90615dc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916132e0565b9181191691161790565b615de4615ddf615de99261038b565b610bfd565b61038b565b90565b90565b90615e04615dff615e0b92615dd0565b615dec565b8254615d9b565b9055565b615e17617160565b615e225f8201612015565b615e3b615e35615e30615d8e565b61038b565b9161038b565b14615e5657615e54905f615e4d615d8e565b9101615def565b565b615e5e610282565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280615e8e60048201610459565b0390fd5b615ea6615ea1615eab92613b8f565b610bfd565b61038b565b90565b615eb86001615e92565b90565b615ed6615ec6617160565b5f615ecf615eae565b9101615def565b565b615ee7615eed9193929361038b565b9261038b565b8201809211615ef857565b61169d565b5f7f546f6b656e2076616c756174696f6e206973207a65726f000000000000000000910152565b615f3160176020926102a3565b615f3a81615efd565b0190565b615f539060208101905f818303910152615f24565b90565b15615f5d57565b615f65610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615f9560048201615f3e565b0390fd5b615fa1611ffa565b50615fab5f611836565b90615fb55f611836565b915b82615fda615fd4615fcf615fca5f61234e565b616411565b61038b565b9161038b565b101561623b57615ff3615fec5f61234e565b8490616460565b61603b60206160096160048461175a565b611766565b6370a082319061603061601b30611772565b92616024610282565b9586948593849361162d565b83526004830161061a565b03915afa908115616236575f91616208575b50908161606261605c5f611836565b9161038b565b146161fc578061608361607d6160786003612b8e565b61035c565b9161035c565b146161d0576160b69060206160a061609b600261161c565b610c28565b63bb3ba04c906160ae610282565b94859261162d565b825281806160c660048201610459565b03915afa80156161cb576160e76160ec916020945f9161619e575b50612b62565b612b6e565b61611663b27b5e756161216161016003612b8e565b9661610a610282565b9788968795869561162d565b8552600485016117de565b03915afa918215616199576161659261615e925f9161616b575b506161588161615261614c5f611836565b9161038b565b11615f56565b90615ed8565b925b61233f565b91615fb7565b61618c915060203d8111616192575b61618481836107f4565b81019061167f565b5f61613b565b503d61617a565b611660565b6161be9150853d81116161c4575b6161b681836107f4565b810190611642565b5f6160e1565b503d6161ac565b611660565b50616165916161f06161f6926161ea64e8d4a51000611781565b906116ca565b90615ed8565b92616160565b50509161616590616160565b616229915060203d811161622f575b61622181836107f4565b81019061167f565b5f61604d565b503d616217565b611660565b90915090565b8061625c6162566162515f61213a565b61035c565b9161035c565b14616278576162769161626e5f61213a565b919091617192565b565b6162bb6162845f61213a565b61628c610282565b9182917fec442f050000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b6162c7611fe2565b506162da5f6162d4616eb7565b0161388f565b90565b616314906162e9611ffa565b5060206162fe6162f9600261161c565b610c28565b6385462d6f9061630c610282565b94859261162d565b8252818061632460048201610459565b03915afa801561640957616364925f916163db575b50602061634e616349600261161c565b610c28565b634f4608a29061635c610282565b95869261162d565b8252818061637460048201610459565b03915afa9081156163d65761639a6163a0926163a5955f916163a8575b5093918461231a565b906116ca565b61172c565b90565b6163c9915060203d81116163cf575b6163c181836107f4565b81019061167f565b5f616391565b503d6163b7565b611660565b6163fc915060203d8111616402575b6163f481836107f4565b81019061167f565b5f616339565b503d6163ea565b611660565b90565b6164285f61642d92616421611ffa565b500161640e565b61733c565b90565b61643c61644191611603565b615dd0565b90565b61645861645361645d9261038b565b610bfd565b610343565b90565b61648b616486616495936164815f6164909561647a612a08565b500161640e565b6173ad565b616430565b616444565b610c1c565b90565b5f7f546f74616c20737570706c792063616e6e6f74206265207a65726f0000000000910152565b6164cc601b6020926102a3565b6164d581616498565b0190565b6164ee9060208101905f8183039101526164bf565b90565b156164f857565b616500610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280616530600482016164d9565b0390fd5b61654861654361654d926131ad565b610bfd565b61038b565b90565b5f7f546f6b656e20646563696d616c732073686f756c64206265203c3d2031380000910152565b616584601e6020926102a3565b61658d81616550565b0190565b6165a69060208101905f818303910152616577565b90565b156165b057565b6165b8610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806165e860048201616591565b0390fd5b6165f59061038b565b604d811161660357600a0a90565b61169d565b906166b7916166bc94616619611ffa565b506166368261663061662a5f611836565b9161038b565b116164f1565b6166548161664d6166476012616534565b9161038b565b11156165a9565b61665c611ffa565b50616665611ffa565b5061668261667d60126166788491616534565b61231a565b6165ec565b906166966166906012616534565b9161038b565b105f146166bf576166ab6166b192829061172c565b9461172c565b5b6116ca565b61172c565b90565b50926166b2565b90816166e26166dc6166d75f61213a565b61035c565b9161035c565b146166fe576166fc91906166f55f61213a565b9091617192565b565b61674161670a5f61213a565b616712610282565b9182917f96c6fd1e0000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b60409061676e616775949695939661676460608401985f85019061060d565b60208301906104f5565b01906104f5565b565b90616782910361038b565b90565b929192616793818390613f7c565b90816167c76167c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61038b565b9161038b565b036167d4575b5050509050565b816167e76167e18761038b565b9161038b565b1061680d5761680493946167fc919392616777565b905f92617006565b805f80806167cd565b5061684c8492919261681d610282565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501616745565b0390fd5b918261686c6168666168615f61213a565b61035c565b9161035c565b146168e6578161688c6168866168815f61213a565b61035c565b9161035c565b1461689f5761689d92919091617192565b565b6168e26168ab5f61213a565b6168b3610282565b9182917fec442f050000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b6169296168f25f61213a565b6168fa610282565b9182917f96c6fd1e0000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b61693690610c1c565b90565b6169423061692d565b61697461696e7f000000000000000000000000000000000000000000000000000000000000000061035c565b9161035c565b1480156169be575b61698257565b61698a610282565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806169ba60048201610459565b0390fd5b506169c76173ce565b6169f96169f37f000000000000000000000000000000000000000000000000000000000000000061035c565b9161035c565b141561697c565b50616a09616c37565b565b616a1490616a00565b565b616a1f90610c00565b90565b616a2b90616a16565b90565b616a3790610c1c565b90565b616a4381610928565b03616a4a57565b5f80fd5b90505190616a5b82616a3a565b565b90602082820312616a7657616a73915f01616a4e565b90565b61028c565b9190616aa96020616a93616a8e86616a22565b616a2e565b6352d1902d90616aa1610282565b93849261162d565b82528180616ab960048201610459565b03915afa80915f92616b89575b50155f14616b1a575050906001616adb57505b565b616b1690616ae7610282565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b9283616b35616b2f616b2a613301565b610928565b91610928565b03616b4a57616b459293506173f4565b616ad9565b616b8584616b56610282565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610938565b0390fd5b616bab91925060203d8111616bb2575b616ba381836107f4565b810190616a5d565b905f616ac6565b503d616b99565b616bc23061692d565b616bf4616bee7f000000000000000000000000000000000000000000000000000000000000000061035c565b9161035c565b03616bfb57565b616c03610282565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280616c3360048201610459565b0390fd5b616c3f613823565b616c58616c52616c4d615d52565b61035c565b9161035c565b03616c5f57565b616ca1616c6a615d52565b616c72610282565b9182917f118cdaa70000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b616cae90610c00565b90565b616cc5616cc0616cca92610343565b610bfd565b61038b565b90565b616ce1616cdc616ce69261038b565b6132e0565b610928565b90565b90616d1b616d15616d10616d0b5f616d2096616d036115c2565b500194616ca5565b616cb1565b616ccd565b9161640e565b6175f3565b90565b616d2b616e93565b616d43616d395f8301612b8e565b915f849101613e11565b90616d77616d717f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093613796565b91613796565b91616d80610282565b80616d8a81610459565b0390a3565b616dce90616d9b611ffa565b506020616db8616db3616dae6003612b8e565b612495565b6124a1565b63313ce56790616dc6610282565b94859261162d565b82528180616dde60048201610459565b03915afa8015616e8e57616e52616e42616e06616e5793616e5d965f91616e60575b506124ee565b93616e3d616e12612022565b91616e2f83616e29616e235f611836565b9161038b565b116164f1565b616e37615f99565b906116ca565b61172c565b92616e4d6012616534565b61231a565b6165ec565b9061172c565b90565b616e81915060203d8111616e87575b616e7981836107f4565b8101906124d0565b5f616e00565b503d616e6f565b611660565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b616ef25f616ef792616eeb613b0c565b500161640e565b6177de565b616eff613b0c565b5090565b90616f1591616f106177f5565b616f17565b565b90616f2191617a02565b565b90616f2d91616f03565b565b616f4090616f3b6177f5565b616f42565b565b616f4b90617a93565b565b616f5690616f2f565b565b616f606177f5565b616f68616f6a565b565b616f72617acd565b565b616f7c616f58565b565b616f866177f5565b565b616f90616f7e565b565b90616fc4616fbe616fb9616fb45f616fc996616fac6115c2565b500194616ca5565b616cb1565b616ccd565b9161640e565b617b0c565b90565b90616ffe616ff8616ff3616fee5f61700396616fe66115c2565b500194616ca5565b616cb1565b616ccd565b9161640e565b617b6f565b90565b9092617010615d2e565b8261702b6170256170205f61213a565b61035c565b9161035c565b14617119578461704b6170456170405f61213a565b61035c565b9161035c565b146170d2576170729061706d61706660018793018690613f66565b87906137a2565b615def565b61707c575b505050565b9190916170c76170b56170af7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593613796565b93613796565b936170be610282565b91829182610502565b0390a35f8080617077565b6171156170de5f61213a565b6170e6610282565b9182917f94280d620000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b61715c6171255f61213a565b61712d610282565b9182917fe602df050000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b9061718f910161038b565b90565b91909161719d615d2e565b816171b86171b26171ad5f61213a565b61035c565b9161035c565b145f146172a3576171df836171d960028401916171d483612015565b615ed8565b90615def565b5b836171fb6171f56171f05f61213a565b61035c565b9161035c565b145f14617274576172239061721d60028592019161721883612015565b616777565b90615def565b5b91909161726f61725d6172577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93613796565b93613796565b93617266610282565b91829182610502565b0390a3565b61729e906172986172895f86930187906137a2565b9161729383612015565b617184565b90615def565b617224565b6172b86172b35f830184906137a2565b612015565b806172cb6172c58661038b565b9161038b565b106172f5576172de6172f0918590616777565b6172eb5f840185906137a2565b615def565b6171e0565b9161733491509192617305610282565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501616745565b0390fd5b5490565b5f61735091617349611ffa565b5001617338565b90565b5f5260205f2090565b61736581617338565b82101561737f57617377600191617353565b910201905f90565b61411d565b90565b61739790600861739c9302610bab565b617384565b90565b906173aa9154617387565b90565b6173cb915f6173c5926173be6132c5565b500161735c565b9061739f565b90565b6173d6612a08565b506173f15f6173eb6173e6613301565b617ba4565b01612b8e565b90565b906173fe82617ba7565b816174297fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91613796565b90617432610282565b8061743c81610459565b0390a26174488161420e565b61745a6174545f611836565b9161038b565b115f1461746e5761746a91617cb7565b505b565b5050617478617c1c565b61746c565b61748690610928565b90565b906174939061747d565b5f5260205260405f2090565b1b90565b919060086174dd9102916174d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8461749f565b9261749f565b9181191691161790565b6174f090611603565b90565b91906175096175046175119361747d565b6174e7565b9083546174a3565b9055565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5490565b5f5260205f2090565b61755b81617545565b8210156175755761756d600191617549565b910201905f90565b61411d565b61758c916175866132c5565b916174f3565b565b61759781617545565b80156175b85760019003906175b56175af8383617552565b9061757a565b55565b617518565b91906175d36175ce6175db93615dd0565b615dec565b9083546174a3565b9055565b6175f1916175eb611ffa565b916175bd565b565b6175fb6115c2565b5061761261760d600183018490617489565b612015565b90816176266176205f611836565b9161038b565b14155f146176f2576176a492600161769f928461764d5f9661764785615e92565b9061231a565b61766a61765b888501617338565b61766486615e92565b9061231a565b8061767d6176778461038b565b9161038b565b036176a9575b505050617699617694868301617515565b61758e565b01617489565b6175df565b600190565b6176ea926176dc6176c86176c26176e5948c890161735c565b9061739f565b936176d685918c890161735c565b906174f3565b91858501617489565b615def565b5f8080617683565b5050505f90565b606090565b60209181520190565b61771090610928565b9052565b9061772181602093617707565b0190565b61773161773691611603565b617384565b90565b6177439054617725565b90565b60010190565b9061776961776361775c84617338565b80936176fe565b92617353565b905f5b8181106177795750505090565b90919261779961779360019261778e87617739565b617714565b94617746565b910191909161776c565b906177ad9161774c565b90565b906177d06177c9926177c0610282565b938480926177a3565b03836107f4565b565b6177db906177b0565b90565b5f6177f2916177eb6176f9565b50016177d2565b90565b617806617800617ce6565b156103de565b61780c57565b617814610282565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061784460048201610459565b0390fd5b9061785a916178556177f5565b6179de565b565b601f602091010490565b5b818110617872575050565b8061787f5f6001936175df565b01617867565b9190601f8111617895575b505050565b6178a16178c6936114d3565b9060206178ad8461785c565b830193106178ce575b6178bf9061785c565b0190617866565b5f8080617890565b91506178bf819290506178b6565b906178ec905f1990600802610bab565b191690565b816178fb916178dc565b906002021790565b9061790d8161029f565b9067ffffffffffffffff82116179cd576179318261792b85546114a0565b85617885565b602090601f831160011461796557918091617954935f92617959575b50506178f1565b90555b565b90915001515f8061794d565b601f19831691617974856114d3565b925f5b8181106179b55750916002939185600196941061799b575b50505002019055617957565b6179ab910151601f8416906178dc565b90555f808061798f565b91936020600181928787015181550195019201617977565b6107c7565b906179dc91617903565b565b6004617a00926179f96179ef615d2e565b93600385016179d2565b91016179d2565b565b90617a0c91617848565b565b617a1f90617a1a6177f5565b617a21565b565b80617a3c617a36617a315f61213a565b61035c565b9161035c565b14617a4c57617a4a90616d23565b565b617a8f617a585f61213a565b617a60610282565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b617a9c90617a0e565b565b617aa66177f5565b617aae617ab0565b565b617acb617abb617160565b5f617ac4615eae565b9101615def565b565b617ad5617a9e565b565b9081549168010000000000000000831015617b075782617aff916001617b0595018155617552565b906174f3565b565b6107c7565b617b146115c2565b50617b29617b23828490617b6f565b156103de565b5f14617b6957617b5f617b6492617b4b617b445f8501617515565b8290617ad7565b6001617b585f8501617338565b9301617489565b615def565b600190565b50505f90565b617b8d916001617b8892617b816115c2565b5001617489565b612015565b617b9f617b995f611836565b9161038b565b141590565b90565b803b617bbb617bb55f611836565b9161038b565b14617bdd57617bdb905f617bd5617bd0613301565b617ba4565b01613e11565b565b617c1890617be9610282565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b34617c2f617c295f611836565b9161038b565b11617c3657565b617c3e610282565b7fb398979f00000000000000000000000000000000000000000000000000000000815280617c6e60048201610459565b0390fd5b606090565b90617c89617c8483610832565b61081d565b918252565b3d5f14617ca957617c9e3d617c77565b903d5f602084013e5b565b617cb1617c72565b90617ca7565b5f80617ce393617cc5617c72565b508390602081019051915af490617cda617c8e565b90919091617d04565b90565b617cee6115c2565b50617d015f617cfb616eb7565b01613861565b90565b90617d1890617d11617c72565b50156103de565b5f14617d245750617da8565b617d2d8261420e565b617d3f617d395f611836565b9161038b565b1480617d8d575b617d4e575090565b617d8990617d5a610282565b9182917f9996b3150000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b50803b617da2617d9c5f611836565b9161038b565b14617d46565b617db18161420e565b617dc3617dbd5f611836565b9161038b565b115f14617dd257805190602001fd5b617dda610282565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280617e0a60048201610459565b0390fdfea26469706673582212209159a6065dd8b4ee1aca7be41a399ba6e883a08cb1c66c7f6775a544fd0c8ac364736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x7E44 PUSH2 0x94 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x694A ADD MSTORE DUP2 DUP2 PUSH2 0x69CF ADD MSTORE PUSH2 0x6BCA ADD MSTORE PUSH2 0x7E44 SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x87 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x6C PUSH1 0x68 PUSH1 0x70 SWAP3 PUSH1 0x4F JUMP JUMPDEST PUSH1 0x5A JUMP JUMPDEST PUSH1 0x4F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7A SWAP1 PUSH1 0x5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x73 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8E ADDRESS PUSH1 0x7D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x146A JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x27C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0xCFC7386 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD8E6E2C EQ PUSH2 0x268 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x1A168DA2 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x27D54A92 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x2BDD955A EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x2F865568 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x3C2066A9 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x599F69F7 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x5FA7B584 EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x71DDCFB8 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xAA6CA808 EQ PUSH2 0x1FA JUMPI DUP1 PUSH4 0xAA95D893 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xD48BFCA7 EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0xE67AD759 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xEEDC3C50 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFE0A4DD1 EQ PUSH2 0x1C3 JUMPI PUSH4 0xFE330A51 SUB PUSH2 0xE JUMPI PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x13B8 JUMP JUMPDEST PUSH2 0x1385 JUMP JUMPDEST PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x1107 JUMP JUMPDEST PUSH2 0x10D4 JUMP JUMPDEST PUSH2 0x109E JUMP JUMPDEST PUSH2 0x103E JUMP JUMPDEST PUSH2 0x1009 JUMP JUMPDEST PUSH2 0xF88 JUMP JUMPDEST PUSH2 0xF53 JUMP JUMPDEST PUSH2 0xE83 JUMP JUMPDEST PUSH2 0xE4E JUMP JUMPDEST PUSH2 0xD79 JUMP JUMPDEST PUSH2 0xD44 JUMP JUMPDEST PUSH2 0xD10 JUMP JUMPDEST PUSH2 0xC8B JUMP JUMPDEST PUSH2 0xC56 JUMP JUMPDEST PUSH2 0xB76 JUMP JUMPDEST PUSH2 0xB43 JUMP JUMPDEST PUSH2 0xB0E JUMP JUMPDEST PUSH2 0xADB JUMP JUMPDEST PUSH2 0xA9E JUMP JUMPDEST PUSH2 0x94D JUMP JUMPDEST PUSH2 0x8FE JUMP JUMPDEST PUSH2 0x78C JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH2 0x6FC JUMP JUMPDEST PUSH2 0x6C6 JUMP JUMPDEST PUSH2 0x664 JUMP JUMPDEST PUSH2 0x62F JUMP JUMPDEST PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x45E JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x29A JUMPI JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x2E0 PUSH2 0x2E9 PUSH1 0x20 SWAP4 PUSH2 0x2EE SWAP4 PUSH2 0x2D7 DUP2 PUSH2 0x29F JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x2A3 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x2AC JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x307 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x2C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x33A JUMPI PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x336 PUSH2 0x325 PUSH2 0x15A3 JUMP JUMPDEST PUSH2 0x32D PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x365 SWAP1 PUSH2 0x343 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH2 0x35C JUMP JUMPDEST SUB PUSH2 0x378 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x389 DUP3 PUSH2 0x368 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x397 DUP2 PUSH2 0x38B JUMP JUMPDEST SUB PUSH2 0x39E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x3AF DUP3 PUSH2 0x38E JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x3D9 JUMPI DUP1 PUSH2 0x3CD PUSH2 0x3D6 SWAP3 PUSH0 DUP7 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x3EC SWAP1 PUSH2 0x3DE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x403 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3E3 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x436 JUMPI PUSH2 0x432 PUSH2 0x421 PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST SWAP1 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3F0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x454 JUMPI PUSH2 0x451 SWAP2 PUSH0 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x48C JUMPI PUSH2 0x476 PUSH2 0x471 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1FD7 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x488 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4A7 SWAP1 PUSH2 0x491 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4BE SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x49E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4F0 JUMPI PUSH2 0x4D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0x4DB PUSH2 0x1FE6 JUMP JUMPDEST PUSH2 0x4E3 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4AB JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH2 0x4FE SWAP1 PUSH2 0x38B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x515 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x547 JUMPI PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x543 PUSH2 0x532 PUSH2 0x2022 JUMP JUMPDEST PUSH2 0x53A PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x57A JUMPI PUSH2 0x564 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x29CE JUMP JUMPDEST PUSH2 0x56C PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x576 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x5B4 JUMPI PUSH2 0x5B1 PUSH2 0x59A DUP5 PUSH0 DUP6 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH2 0x5A8 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x5EA JUMPI PUSH2 0x5E6 PUSH2 0x5D5 PUSH2 0x5CF CALLDATASIZE PUSH1 0x4 PUSH2 0x57F JUMP JUMPDEST SWAP2 PUSH2 0x29D9 JUMP JUMPDEST PUSH2 0x5DD PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3F0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x608 JUMPI PUSH2 0x605 SWAP2 PUSH0 ADD PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH2 0x616 SWAP1 PUSH2 0x35C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x62D SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x65F JUMPI PUSH2 0x65B PUSH2 0x64A PUSH2 0x645 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x2A30 JUMP JUMPDEST PUSH2 0x652 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x694 JUMPI PUSH2 0x674 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x690 PUSH2 0x67F PUSH2 0x2B42 JUMP JUMPDEST PUSH2 0x687 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x6C1 JUMPI DUP1 PUSH2 0x6B5 PUSH2 0x6BE SWAP3 PUSH0 DUP7 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x6F7 JUMPI PUSH2 0x6F3 PUSH2 0x6E2 PUSH2 0x6DC CALLDATASIZE PUSH1 0x4 PUSH2 0x699 JUMP JUMPDEST SWAP1 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x6EA PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x72A JUMPI PUSH2 0x714 PUSH2 0x70F CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x2E03 JUMP JUMPDEST PUSH2 0x71C PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x726 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x73E SWAP1 PUSH2 0x72F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x755 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x735 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x787 JUMPI PUSH2 0x767 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x783 PUSH2 0x772 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0x77A PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x742 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x7BA JUMPI PUSH2 0x79C CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x7A4 PUSH2 0x3286 JUMP JUMPDEST PUSH2 0x7AC PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x7B6 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x7FE SWAP1 PUSH2 0x2B7 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x818 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0x830 PUSH2 0x829 PUSH2 0x282 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x7F4 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x850 JUMPI PUSH2 0x84C PUSH1 0x20 SWAP2 PUSH2 0x2B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x875 PUSH2 0x870 DUP3 PUSH2 0x832 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x891 JUMPI PUSH2 0x88F SWAP3 PUSH2 0x855 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7C3 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x8B4 JUMPI DUP2 PUSH1 0x20 PUSH2 0x8B1 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x860 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x8F9 JUMPI PUSH2 0x8D2 DUP4 PUSH0 DUP4 ADD PUSH2 0x37C JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x8F4 JUMPI PUSH2 0x8F1 SWAP3 ADD PUSH2 0x896 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH2 0x912 PUSH2 0x90C CALLDATASIZE PUSH1 0x4 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x32B9 JUMP JUMPDEST PUSH2 0x91A PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x924 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x934 SWAP1 PUSH2 0x928 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x94B SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x92B JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x97D JUMPI PUSH2 0x95D CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x979 PUSH2 0x968 PUSH2 0x3339 JUMP JUMPDEST PUSH2 0x970 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x938 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x9C4 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x9BF JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x9BA JUMPI JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xA03 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x9FE JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x9F9 JUMPI JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH1 0xC0 DUP2 DUP4 SUB SLT PUSH2 0xA99 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA94 JUMPI DUP3 PUSH2 0xA31 SWAP2 DUP4 ADD PUSH2 0x98A JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA8F JUMPI DUP3 PUSH2 0xA54 SWAP2 DUP6 ADD PUSH2 0x9C9 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0xA64 DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x37C JUMP JUMPDEST SWAP3 PUSH2 0xA8C PUSH2 0xA75 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH2 0xA83 DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0xAD6 JUMPI PUSH2 0xAC0 PUSH2 0xAB1 CALLDATASIZE PUSH1 0x4 PUSH2 0xA08 JUMP JUMPDEST SWAP7 SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP5 SWAP4 SWAP3 SWAP4 PUSH2 0x35A6 JUMP JUMPDEST PUSH2 0xAC8 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xAD2 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xB09 JUMPI PUSH2 0xAF3 PUSH2 0xAEE CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x378B JUMP JUMPDEST PUSH2 0xAFB PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xB05 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xB3E JUMPI PUSH2 0xB3A PUSH2 0xB29 PUSH2 0xB24 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x37B8 JUMP JUMPDEST PUSH2 0xB31 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xB71 JUMPI PUSH2 0xB53 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xB5B PUSH2 0x3804 JUMP JUMPDEST PUSH2 0xB63 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xB6D DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xBA6 JUMPI PUSH2 0xBA2 PUSH2 0xB91 PUSH2 0xB8C CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x380E JUMP JUMPDEST PUSH2 0xB99 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xBD8 SWAP1 PUSH1 0x8 PUSH2 0xBDD SWAP4 MUL PUSH2 0xBAB JUMP JUMPDEST PUSH2 0xBAF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBEB SWAP2 SLOAD PUSH2 0xBC8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBFA PUSH1 0x2 PUSH0 SWAP1 PUSH2 0xBE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC14 PUSH2 0xC0F PUSH2 0xC19 SWAP3 PUSH2 0x343 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC25 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC31 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC3D SWAP1 PUSH2 0xC28 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xC54 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xC34 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xC86 JUMPI PUSH2 0xC66 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xC82 PUSH2 0xC71 PUSH2 0xBEE JUMP JUMPDEST PUSH2 0xC79 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC41 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xCBB JUMPI PUSH2 0xC9B CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xCB7 PUSH2 0xCA6 PUSH2 0x3823 JUMP JUMPDEST PUSH2 0xCAE PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH2 0xCC9 DUP2 PUSH2 0x491 JUMP JUMPDEST SUB PUSH2 0xCD0 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xCE1 DUP3 PUSH2 0xCC0 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xD0B JUMPI DUP1 PUSH2 0xCFF PUSH2 0xD08 SWAP3 PUSH0 DUP7 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0xCD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0xD3F JUMPI PUSH2 0xD29 PUSH2 0xD23 CALLDATASIZE PUSH1 0x4 PUSH2 0xCE3 JUMP JUMPDEST SWAP1 PUSH2 0x3ABF JUMP JUMPDEST PUSH2 0xD31 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xD3B DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xD74 JUMPI PUSH2 0xD54 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xD70 PUSH2 0xD5F PUSH2 0x3ACB JUMP JUMPDEST PUSH2 0xD67 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xDAA JUMPI PUSH2 0xDA6 PUSH2 0xD95 PUSH2 0xD8F CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST SWAP1 PUSH2 0x3AEA JUMP JUMPDEST PUSH2 0xD9D PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3F0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xDCB SWAP1 PUSH2 0x35C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xDDC DUP2 PUSH1 0x20 SWAP4 PUSH2 0xDC2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE03 PUSH2 0xDFD PUSH2 0xDF6 DUP5 PUSH2 0xDAF JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xDB3 JUMP JUMPDEST SWAP3 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xE13 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0xE2C PUSH2 0xE26 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0xDCF JUMP JUMPDEST SWAP5 PUSH2 0xDE0 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0xE4B SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xDE6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE7E JUMPI PUSH2 0xE5E CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xE7A PUSH2 0xE69 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0xE71 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xE36 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xEB3 JUMPI PUSH2 0xEAF PUSH2 0xE9E PUSH2 0xE99 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x3B2E JUMP JUMPDEST PUSH2 0xEA6 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xED6 JUMPI PUSH2 0xED2 PUSH1 0x20 SWAP2 PUSH2 0x2B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0xEED PUSH2 0xEE8 DUP4 PUSH2 0xEB8 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xF23 PUSH1 0x5 PUSH2 0xEDB JUMP JUMPDEST SWAP1 PUSH2 0xF30 PUSH1 0x20 DUP4 ADD PUSH2 0xEF2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF3A PUSH2 0xF19 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF45 PUSH2 0xF32 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF50 PUSH2 0xF3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF83 JUMPI PUSH2 0xF63 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xF7F PUSH2 0xF6E PUSH2 0xF48 JUMP JUMPDEST PUSH2 0xF76 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xFB6 JUMPI PUSH2 0xFA0 PUSH2 0xF9B CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x3F28 JUMP JUMPDEST PUSH2 0xFA8 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xFB2 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xFE4 SWAP1 PUSH1 0x8 PUSH2 0xFE9 SWAP4 MUL PUSH2 0xBAB JUMP JUMPDEST PUSH2 0xFBB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xFF7 SWAP2 SLOAD PUSH2 0xFD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1006 PUSH1 0x3 PUSH0 SWAP1 PUSH2 0xFEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1039 JUMPI PUSH2 0x1019 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x1035 PUSH2 0x1024 PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x102C PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x106C JUMPI PUSH2 0x1056 PUSH2 0x1051 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x3F5B JUMP JUMPDEST PUSH2 0x105E PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x1068 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x1099 JUMPI DUP1 PUSH2 0x108D PUSH2 0x1096 SWAP3 PUSH0 DUP7 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x10CF JUMPI PUSH2 0x10CB PUSH2 0x10BA PUSH2 0x10B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1071 JUMP JUMPDEST SWAP1 PUSH2 0x3F7C JUMP JUMPDEST PUSH2 0x10C2 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x1102 JUMPI PUSH2 0x10EC PUSH2 0x10E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x3FD5 JUMP JUMPDEST PUSH2 0x10F4 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x10FE DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x1137 JUMPI PUSH2 0x1117 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x1133 PUSH2 0x1122 PUSH2 0x3FE0 JUMP JUMPDEST PUSH2 0x112A PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1154 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x11C5 JUMPI PUSH2 0x1178 PUSH1 0x60 PUSH2 0x81D JUMP JUMPDEST SWAP3 PUSH2 0x1185 DUP2 PUSH0 DUP5 ADD PUSH2 0x37C JUMP JUMPDEST PUSH0 DUP6 ADD MSTORE PUSH2 0x1196 DUP2 PUSH1 0x20 DUP5 ADD PUSH2 0x3A2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x11C0 JUMPI PUSH2 0x11B9 SWAP3 ADD PUSH2 0x896 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x115D JUMP JUMPDEST PUSH2 0x1159 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x11DE PUSH2 0x11D9 DUP3 PUSH2 0x113C JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x1235 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1204 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1230 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x1225 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x1161 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1258 JUMPI DUP2 PUSH1 0x20 PUSH2 0x1255 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x11CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1275 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x128F PUSH2 0x128A DUP3 PUSH2 0x125D JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x12CC JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x12B3 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x12C1 DUP5 DUP7 PUSH2 0x37C JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x12A6 JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x12EF JUMPI DUP2 PUSH1 0x20 PUSH2 0x12EC SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x127A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x134C JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1347 JUMPI DUP4 PUSH2 0x1320 SWAP2 DUP4 ADD PUSH2 0x123A JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1342 JUMPI PUSH2 0x133F SWAP3 ADD PUSH2 0x12D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x1380 JUMPI PUSH2 0x136A PUSH2 0x1364 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F4 JUMP JUMPDEST SWAP1 PUSH2 0x4FF3 JUMP JUMPDEST PUSH2 0x1372 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x137C DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x13B3 JUMPI PUSH2 0x139D PUSH2 0x1398 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x5084 JUMP JUMPDEST PUSH2 0x13A5 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x13AF DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x13E6 JUMPI PUSH2 0x13D0 PUSH2 0x13CB CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x5D07 JUMP JUMPDEST PUSH2 0x13D8 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x13E2 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH1 0x80 DUP2 DUP4 SUB SLT PUSH2 0x142C JUMPI PUSH2 0x1401 DUP3 PUSH0 DUP4 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP3 PUSH2 0x1429 PUSH2 0x1412 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP4 PUSH2 0x1420 DUP2 PUSH1 0x40 DUP7 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP4 PUSH1 0x60 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x1465 JUMPI PUSH2 0x1461 PUSH2 0x1450 PUSH2 0x1447 CALLDATASIZE PUSH1 0x4 PUSH2 0x13EB JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x5D12 JUMP JUMPDEST PUSH2 0x1458 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x14C0 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x14BB JUMPI JUMP JUMPDEST PUSH2 0x1473 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x14F6 PUSH2 0x14EF DUP4 PUSH2 0x14A0 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x14CA JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x154D JUMPI POP PUSH1 0x1 EQ PUSH2 0x1511 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x151E SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x14D3 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x1535 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x150C JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x1522 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x150C JUMP JUMPDEST SWAP1 PUSH2 0x1572 SWAP2 PUSH2 0x14DC JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1595 PUSH2 0x158E SWAP3 PUSH2 0x1585 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x1568 JUMP JUMPDEST SUB DUP4 PUSH2 0x7F4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x15A0 SWAP1 PUSH2 0x1575 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15AB PUSH2 0x146E JUMP JUMPDEST POP PUSH2 0x15BF PUSH1 0x3 PUSH2 0x15B9 PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x1597 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x15E3 SWAP2 PUSH2 0x15D2 PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x15DB PUSH2 0x5D52 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x5D5F JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x15F9 SWAP1 PUSH2 0x15F4 PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x1601 PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x1614 PUSH2 0x1619 SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0xBAF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1626 SWAP1 SLOAD PUSH2 0x1608 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1640 DUP3 PUSH2 0x368 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x165B JUMPI PUSH2 0x1658 SWAP2 PUSH0 ADD PUSH2 0x1633 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH2 0x1668 PUSH2 0x282 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x167D DUP3 PUSH2 0x38E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1698 JUMPI PUSH2 0x1695 SWAP2 PUSH0 ADD PUSH2 0x1670 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x16D9 PUSH2 0x16DF SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x38B JUMP JUMPDEST SWAP3 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x16EB DUP4 DUP3 MUL PUSH2 0x38B JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x16FA JUMPI JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1738 PUSH2 0x173E SWAP2 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x1749 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x1757 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1763 SWAP1 PUSH2 0x174E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x176F SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x177B SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1795 PUSH2 0x1790 PUSH2 0x179A SWAP3 PUSH2 0x177E JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17A6 DUP2 PUSH2 0x3DE JUMP JUMPDEST SUB PUSH2 0x17AD JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x17BE DUP3 PUSH2 0x179D JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x17D9 JUMPI PUSH2 0x17D6 SWAP2 PUSH0 ADD PUSH2 0x17B1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x1807 PUSH2 0x180E SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x17FD PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1831 SWAP3 SWAP5 SWAP4 PUSH2 0x182A PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x184A PUSH2 0x1845 PUSH2 0x184F SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x726F000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x546F74616C2042414C554E4920737570706C792063616E6E6F74206265207A65 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x18AC PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x18B5 DUP2 PUSH2 0x1852 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x18CE SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x189F JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x18D8 JUMPI JUMP JUMPDEST PUSH2 0x18E0 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1910 PUSH1 0x4 DUP3 ADD PUSH2 0x18B9 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x555344432062616C616E636520697320696E73756666696369656E7400000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1948 PUSH1 0x1C PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x1951 DUP2 PUSH2 0x1914 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x196A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x193B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1974 JUMPI JUMP JUMPDEST PUSH2 0x197C PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19AC PUSH1 0x4 DUP3 ADD PUSH2 0x1955 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x436865636B2074686520746F6B656E20616C6C6F77616E636500000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x19E4 PUSH1 0x19 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x19ED DUP2 PUSH2 0x19B0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1A06 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x19D7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1A10 JUMPI JUMP JUMPDEST PUSH2 0x1A18 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1A48 PUSH1 0x4 DUP3 ADD PUSH2 0x19F1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1A6D SWAP3 SWAP5 SWAP4 PUSH2 0x1A66 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A9C PUSH1 0x20 PUSH2 0x1A86 PUSH2 0x1A81 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x1A94 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1AAC PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FD2 JUMPI PUSH0 SWAP2 PUSH2 0x1FA4 JUMPI JUMPDEST POP SWAP1 PUSH2 0x1AED PUSH1 0x20 PUSH2 0x1AD7 PUSH2 0x1AD2 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x1AE5 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1AFD PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F9F JUMPI PUSH0 SWAP2 PUSH2 0x1F71 JUMPI JUMPDEST POP PUSH2 0x1B3D PUSH1 0x20 PUSH2 0x1B27 PUSH2 0x1B22 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x1B35 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1B4D PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F6C JUMPI PUSH0 SWAP2 PUSH2 0x1F3E JUMPI JUMPDEST POP SWAP2 PUSH2 0x1B8E PUSH1 0x20 PUSH2 0x1B78 PUSH2 0x1B73 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x1B86 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1B9E PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F39 JUMPI PUSH0 SWAP2 PUSH2 0x1F0B JUMPI JUMPDEST POP SWAP3 PUSH2 0x1BBA PUSH2 0x5F99 JUMP JUMPDEST PUSH2 0x1BD6 PUSH2 0x1BCF PUSH2 0x1BC8 PUSH2 0x2022 JUMP JUMPDEST SWAP3 DUP6 PUSH2 0x16CA JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x172C JUMP JUMPDEST SWAP5 DUP6 PUSH1 0x20 PUSH2 0x1BEB PUSH2 0x1BE6 DUP9 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x23B872DD SWAP1 PUSH2 0x1C2F PUSH0 CALLER SWAP4 PUSH2 0x1C3A PUSH2 0x1C1B PUSH2 0x1C06 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP9 PUSH2 0x1C15 PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x1C23 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x17DE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1F06 JUMPI PUSH2 0x1EDA JUMPI JUMPDEST POP PUSH2 0x1C8A PUSH1 0x20 PUSH2 0x1C60 PUSH2 0x1C5B DUP9 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1C7F CALLER SWAP3 PUSH2 0x1C73 PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1ED5 JUMPI PUSH0 SWAP2 PUSH2 0x1EA7 JUMPI JUMPDEST POP PUSH2 0x1CAE PUSH2 0x1CA9 DUP8 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP4 PUSH1 0x20 PUSH4 0xDD62ED3E SWAP6 CALLER SWAP1 PUSH2 0x1CDD PUSH2 0x1CC5 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP9 PUSH2 0x1CE8 PUSH2 0x1CD1 PUSH2 0x282 JUMP JUMPDEST SWAP11 DUP12 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1810 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1EA2 JUMPI PUSH1 0x20 SWAP9 PUSH2 0x1E03 SWAP8 PUSH2 0x1D94 PUSH2 0x1DF8 SWAP8 PUSH2 0x1D64 PUSH2 0x1DEE SWAP6 PUSH2 0x1D34 PUSH2 0x1DF3 SWAP10 PUSH2 0x1DFE SWAP14 PUSH0 SWAP2 PUSH2 0x1E74 JUMPI JUMPDEST POP SWAP4 PUSH2 0x1D2E PUSH2 0x1D28 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x18D1 JUMP JUMPDEST PUSH2 0x1D5D PUSH2 0x1D57 PUSH2 0x1D52 DUP9 PUSH2 0x1D4C PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x196D JUMP JUMPDEST PUSH2 0x1D8D PUSH2 0x1D87 PUSH2 0x1D82 DUP7 PUSH2 0x1D7C PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x1A09 JUMP JUMPDEST PUSH2 0x1D9F CALLER DUP3 SWAP1 PUSH2 0x6241 JUMP JUMPDEST CALLER SWAP1 PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 SWAP2 PUSH2 0x1DD7 PUSH2 0x1DCE PUSH2 0x282 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x1DE8 PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP3 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH2 0x1E26 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x1E31 PUSH2 0x1E1A PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1E6F JUMPI PUSH2 0x1E43 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1E63 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E68 JUMPI JUMPDEST PUSH2 0x1E5B DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x1E40 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E51 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x1E95 SWAP3 POP RETURNDATASIZE DUP2 GT PUSH2 0x1E9B JUMPI JUMPDEST PUSH2 0x1E8D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x1D1A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E83 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1EC8 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1ECE JUMPI JUMPDEST PUSH2 0x1EC0 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x1C9C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EB6 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1EFA SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EFF JUMPI JUMPDEST PUSH2 0x1EF2 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x1C49 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EE8 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1F2C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F32 JUMPI JUMPDEST PUSH2 0x1F24 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x1BB0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F1A JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1F5F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F65 JUMPI JUMPDEST PUSH2 0x1F57 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x1B5F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1F92 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F98 JUMPI JUMPDEST PUSH2 0x1F8A DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x1B0F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F80 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1FC5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FCB JUMPI JUMPDEST PUSH2 0x1FBD DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x1ABE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1FB3 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1FE0 SWAP1 PUSH2 0x15E8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1FEE PUSH2 0x1FE2 JUMP JUMPDEST POP PUSH2 0x1FF7 PUSH2 0x62BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x200D PUSH2 0x2012 SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x1FFE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x201F SWAP1 SLOAD PUSH2 0x2001 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x202A PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x203E PUSH1 0x2 PUSH2 0x2038 PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x2015 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2052 SWAP1 PUSH2 0x204D PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x25A6 JUMP JUMPDEST PUSH2 0x205A PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x2030000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x4275726E20616D6F756E74206D7573742062652067726561746572207468616E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x20B6 PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x20BF DUP2 PUSH2 0x205C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x20D8 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x20A9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x20E2 JUMPI JUMP JUMPDEST PUSH2 0x20EA PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x211A PUSH1 0x4 DUP3 ADD PUSH2 0x20C3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2132 PUSH2 0x212D PUSH2 0x2137 SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2143 SWAP1 PUSH2 0x211E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x5472656173757279206E6F742073657400000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x217A PUSH1 0x10 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x2183 DUP2 PUSH2 0x2146 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x219C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x216D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x21A6 JUMPI JUMP JUMPDEST PUSH2 0x21AE PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x21DE PUSH1 0x4 DUP3 ADD PUSH2 0x2187 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742042414C00000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2216 PUSH1 0x10 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x221F DUP2 PUSH2 0x21E2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2238 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2209 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2242 JUMPI JUMP JUMPDEST PUSH2 0x224A PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x227A PUSH1 0x4 DUP3 ADD PUSH2 0x2223 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4665652063616C63756C6174696F6E206572726F720000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x22B2 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x22BB DUP2 PUSH2 0x227E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x22D4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x22A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x22DE JUMPI JUMP JUMPDEST PUSH2 0x22E6 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2316 PUSH1 0x4 DUP3 ADD PUSH2 0x22BF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2329 PUSH2 0x232F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x38B JUMP JUMPDEST SWAP3 PUSH2 0x38B JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x233A JUMPI JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST PUSH1 0x1 PUSH2 0x234B SWAP2 ADD PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420746F6B656E20616464726573730000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2385 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x238E DUP2 PUSH2 0x2351 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x23A7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2378 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x23B1 JUMPI JUMP JUMPDEST PUSH2 0x23B9 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x23E9 PUSH1 0x4 DUP3 ADD PUSH2 0x2392 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x546F74616C20737570706C792069732030000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2421 PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x242A DUP2 PUSH2 0x23ED JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2443 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2414 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x244D JUMPI JUMP JUMPDEST PUSH2 0x2455 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2485 PUSH1 0x4 DUP3 ADD PUSH2 0x242E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2492 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x249E SWAP1 PUSH2 0x2489 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24AA SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24B6 DUP2 PUSH2 0x72F JUMP JUMPDEST SUB PUSH2 0x24BD JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x24CE DUP3 PUSH2 0x24AD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x24E9 JUMPI PUSH2 0x24E6 SWAP2 PUSH0 ADD PUSH2 0x24C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH2 0x2502 PUSH2 0x24FD PUSH2 0x2507 SWAP3 PUSH2 0x72F JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x53686172652063616C63756C6174696F6E206572726F72000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x253E PUSH1 0x17 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x2547 DUP2 PUSH2 0x250A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2560 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2531 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x256A JUMPI JUMP JUMPDEST PUSH2 0x2572 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x25A2 PUSH1 0x4 DUP3 ADD PUSH2 0x254B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x25C3 DUP3 PUSH2 0x25BD PUSH2 0x25B7 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x20DB JUMP JUMPDEST PUSH2 0x25F0 PUSH1 0x20 PUSH2 0x25DA PUSH2 0x25D5 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x25E8 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2600 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x29C9 JUMPI PUSH2 0x2699 SWAP2 PUSH0 SWAP2 PUSH2 0x299B JUMPI JUMPDEST POP SWAP3 PUSH2 0x263C DUP5 PUSH2 0x2635 PUSH2 0x262F PUSH2 0x262A PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x219F JUMP JUMPDEST PUSH2 0x2661 PUSH2 0x2648 CALLER PUSH2 0x37B8 JUMP JUMPDEST PUSH2 0x265A PUSH2 0x2654 DUP5 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x223B JUMP JUMPDEST PUSH2 0x2693 PUSH2 0x266D DUP3 PUSH2 0x62DD JUMP JUMPDEST SWAP5 PUSH2 0x268B DUP7 PUSH2 0x2684 PUSH2 0x267E DUP7 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x22D7 JUMP JUMPDEST SWAP2 DUP6 SWAP1 PUSH2 0x231A JUMP JUMPDEST SWAP1 PUSH2 0x3AEA JUMP JUMPDEST POP PUSH2 0x26A2 PUSH2 0x1FFA JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x26C6 PUSH2 0x26C0 PUSH2 0x26BB PUSH2 0x26B6 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6411 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x2951 JUMPI PUSH2 0x26DF PUSH2 0x26D8 PUSH0 PUSH2 0x234E JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x6460 JUMP JUMPDEST SWAP1 PUSH2 0x2705 DUP3 PUSH2 0x26FE PUSH2 0x26F8 PUSH2 0x26F3 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x23AA JUMP JUMPDEST PUSH2 0x270D PUSH2 0x2022 JUMP JUMPDEST SWAP2 PUSH2 0x272A DUP4 PUSH2 0x2724 PUSH2 0x271E PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x2446 JUMP JUMPDEST PUSH2 0x2772 PUSH1 0x20 PUSH2 0x2740 PUSH2 0x273B DUP5 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2767 PUSH2 0x2752 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x275B PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x294C JUMPI PUSH0 SWAP2 PUSH2 0x291E JUMPI JUMPDEST POP SWAP3 DUP4 PUSH2 0x2799 PUSH2 0x2793 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x28FC JUMPI JUMPDEST PUSH2 0x28F0 JUMPI SWAP1 PUSH2 0x27D3 SWAP2 PUSH1 0x20 PUSH2 0x27BD PUSH2 0x27B8 DUP5 PUSH2 0x2495 JUMP JUMPDEST PUSH2 0x24A1 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x27CB PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x27E3 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x28EB JUMPI PUSH2 0x2833 PUSH2 0x2818 PUSH2 0x2838 SWAP4 PUSH2 0x280F PUSH2 0x283D SWAP7 PUSH1 0x20 SWAP9 PUSH0 SWAP2 PUSH2 0x28BE JUMPI JUMPDEST POP PUSH2 0x24EE JUMP JUMPDEST DUP10 DUP13 SWAP2 SWAP3 PUSH2 0x6608 JUMP JUMPDEST SWAP7 PUSH2 0x282C PUSH2 0x2826 DUP10 SWAP3 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x2563 JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x2862 PUSH0 CALLER SWAP4 SWAP7 PUSH2 0x286D PUSH2 0x2856 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x28B9 JUMPI PUSH2 0x2888 SWAP3 PUSH2 0x288D JUMPI JUMPDEST POP JUMPDEST PUSH2 0x233F JUMP JUMPDEST PUSH2 0x26A3 JUMP JUMPDEST PUSH2 0x28AD SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x28B2 JUMPI JUMPDEST PUSH2 0x28A5 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x2881 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x289B JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x28DE SWAP2 POP DUP10 RETURNDATASIZE DUP2 GT PUSH2 0x28E4 JUMPI JUMPDEST PUSH2 0x28D6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24D0 JUMP JUMPDEST PUSH0 PUSH2 0x2809 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x28CC JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP PUSH2 0x2888 SWAP2 POP PUSH2 0x2883 JUMP JUMPDEST POP DUP2 PUSH2 0x2918 PUSH2 0x2912 PUSH2 0x290D ADDRESS PUSH2 0x1772 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x27A1 JUMP JUMPDEST PUSH2 0x293F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2945 JUMPI JUMPDEST PUSH2 0x2937 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x2784 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x292D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP SWAP1 PUSH2 0x295E CALLER DUP3 SWAP1 PUSH2 0x66C6 JUMP JUMPDEST CALLER SWAP1 PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 SWAP2 PUSH2 0x2996 PUSH2 0x298D PUSH2 0x282 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x29BC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x29C2 JUMPI JUMPDEST PUSH2 0x29B4 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2615 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x29AA JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x29D7 SWAP1 PUSH2 0x2041 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH2 0x2A03 SWAP3 PUSH2 0x29E6 PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x29FB PUSH2 0x29F2 PUSH2 0x5D52 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x6785 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x6850 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2A15 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A21 SWAP1 PUSH2 0x2A0C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A2D SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A38 PUSH2 0x2A08 JUMP JUMPDEST POP PUSH2 0x2A66 PUSH1 0x20 PUSH2 0x2A50 PUSH2 0x2A4B PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xF5D2D998 SWAP1 PUSH2 0x2A5E PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2A76 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x2B3D JUMPI PUSH2 0x2AA0 PUSH2 0x2A9B PUSH2 0x2AC7 SWAP5 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0x2B10 JUMPI JUMPDEST POP PUSH2 0x2A18 JUMP JUMPDEST PUSH2 0x2A24 JUMP JUMPDEST PUSH2 0x2ABC PUSH4 0x27D54A92 PUSH2 0x2AB0 PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2B0B JUMPI PUSH0 SWAP2 PUSH2 0x2ADD JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2AFE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2B04 JUMPI JUMPDEST PUSH2 0x2AF6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2AD9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2AEC JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x2B30 SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x2B36 JUMPI JUMPDEST PUSH2 0x2B28 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2A95 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B1E JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x2B4A PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x2B53 PUSH2 0x5F99 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B5F SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B6B SWAP1 PUSH2 0x2B56 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B77 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B86 PUSH2 0x2B8B SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0xFBB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B98 SWAP1 SLOAD PUSH2 0x2B7A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2BD3 SWAP1 PUSH2 0x2BA8 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x2BBD PUSH2 0x2BB8 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2BCB PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BE3 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2CB4 JUMPI PUSH2 0x2C04 PUSH2 0x2C09 SWAP2 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0x2C87 JUMPI JUMPDEST POP PUSH2 0x2B62 JUMP JUMPDEST PUSH2 0x2B6E JUMP JUMPDEST PUSH2 0x2C33 PUSH4 0xB27B5E75 PUSH2 0x2C3E PUSH2 0x2C1E PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP7 PUSH2 0x2C27 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x17DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2C82 JUMPI PUSH0 SWAP2 PUSH2 0x2C54 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2C75 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2C7B JUMPI JUMPDEST PUSH2 0x2C6D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x2C50 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2C63 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x2CA7 SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x2CAD JUMPI JUMPDEST PUSH2 0x2C9F DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2BFE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2C95 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x2CC2 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CCE SWAP1 PUSH2 0x2CB9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CDA SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2D12 PUSH2 0x2D19 SWAP5 PUSH2 0x2D08 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x2CFE PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x2D66 SWAP5 PUSH2 0x2D55 PUSH2 0x2D5F SWAP3 PUSH2 0x2D4B PUSH1 0x80 SWAP7 PUSH2 0x2D41 PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x4D75746920486F702053776170204661696C65642C20547279204275726E2829 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2D9B PUSH1 0x20 DUP1 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x2DA4 DUP2 PUSH2 0x2D68 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2DBD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2D8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2DC7 JUMPI JUMP JUMPDEST PUSH2 0x2DCF PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2DFF PUSH1 0x4 DUP3 ADD PUSH2 0x2DA8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E30 PUSH1 0x20 PUSH2 0x2E1A PUSH2 0x2E15 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x2E28 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2E40 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x31A4 JUMPI PUSH0 SWAP2 PUSH2 0x3176 JUMPI JUMPDEST POP PUSH2 0x2E80 PUSH1 0x20 PUSH2 0x2E6A PUSH2 0x2E65 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x2E78 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2E90 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3171 JUMPI PUSH0 SWAP2 PUSH2 0x3143 JUMPI JUMPDEST POP SWAP1 PUSH2 0x2EEC PUSH1 0x20 PUSH2 0x2EBA PUSH2 0x2EB5 DUP7 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2EE1 PUSH2 0x2ECC ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x2ED5 PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x313E JUMPI PUSH0 SWAP2 PUSH2 0x3110 JUMPI JUMPDEST POP SWAP3 DUP4 PUSH2 0x2F13 PUSH2 0x2F0D PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x2F25 PUSH2 0x2F20 DUP4 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 DUP7 SWAP1 PUSH2 0x2F4D PUSH0 DUP11 SWAP7 PUSH2 0x2F58 PUSH2 0x2F41 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x310B JUMPI PUSH2 0x2F73 SWAP3 PUSH2 0x30DF JUMPI JUMPDEST POP ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x30D9 JUMPI PUSH2 0x2F88 PUSH2 0x2F83 DUP5 PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 DUP4 SWAP1 PUSH2 0x2FC3 PUSH0 PUSH2 0x2FA0 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP6 PUSH2 0x2FCE DUP12 PUSH2 0x2FAE ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP1 PUSH2 0x2FB7 PUSH2 0x282 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x162D JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x2CDD JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 PUSH2 0x30AD JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x30A7 JUMPI PUSH1 0x1 PUSH2 0x2FED JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x3039 PUSH0 PUSH2 0x3004 PUSH2 0x2FFF PUSH1 0x20 SWAP7 PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST SWAP3 PUSH2 0x3044 PUSH4 0x5EFAAEBB SWAP2 SWAP6 SWAP8 PUSH2 0x301A PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP1 PUSH2 0x3024 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP2 PUSH2 0x302D PUSH2 0x282 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0x162D JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x2D1B JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x30A2 JUMPI PUSH2 0x3072 SWAP2 PUSH0 SWAP2 PUSH2 0x3074 JUMPI JUMPDEST POP PUSH2 0x306C PUSH2 0x3066 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x2DC0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3095 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x309B JUMPI JUMPDEST PUSH2 0x308D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x3059 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3083 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x30CD SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x30D2 JUMPI JUMPDEST PUSH2 0x30C5 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH2 0x2FD9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30BB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x30FF SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3104 JUMPI JUMPDEST PUSH2 0x30F7 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x2F6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30ED JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3131 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3137 JUMPI JUMPDEST PUSH2 0x3129 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x2EFE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x311F JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3164 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x316A JUMPI JUMPDEST PUSH2 0x315C DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2EA2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3152 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3197 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x319D JUMPI JUMPDEST PUSH2 0x318F DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2E52 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C4 PUSH2 0x31BF PUSH2 0x31C9 SWAP3 PUSH2 0x31AD JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x72F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31D4 PUSH2 0x31A9 JUMP JUMPDEST POP PUSH2 0x31DF PUSH1 0x12 PUSH2 0x31B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31EA PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x31F2 PUSH2 0x31FC JUMP JUMPDEST PUSH2 0x31FA PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x320D PUSH2 0x3208 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6411 JUMP JUMPDEST PUSH2 0x3216 PUSH0 PUSH2 0x1836 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x322A PUSH2 0x3224 DUP5 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3277 SWAP1 PUSH2 0x3247 PUSH2 0x3240 PUSH0 PUSH2 0x234E JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x6460 JUMP JUMPDEST DUP1 PUSH2 0x3263 PUSH2 0x325D PUSH2 0x3258 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x327C JUMPI PUSH2 0x3271 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST JUMPDEST PUSH2 0x233F JUMP JUMPDEST PUSH2 0x3217 JUMP JUMPDEST POP PUSH2 0x3272 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x328E PUSH2 0x31E2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x32A2 SWAP2 PUSH2 0x329D PUSH2 0x6939 JUMP JUMPDEST PUSH2 0x32A4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x32B7 SWAP2 PUSH2 0x32B2 DUP2 PUSH2 0x6A0B JUMP JUMPDEST PUSH2 0x6A7B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x32C3 SWAP2 PUSH2 0x3290 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x32DA SWAP1 PUSH2 0x32D5 PUSH2 0x6BB9 JUMP JUMPDEST PUSH2 0x332D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x32F9 PUSH2 0x32F4 PUSH2 0x32FE SWAP3 PUSH2 0x32DD JUMP JUMPDEST PUSH2 0x32E0 JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x332A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x32E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x3336 PUSH2 0x3301 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3349 PUSH2 0x3344 PUSH2 0x32C5 JUMP JUMPDEST PUSH2 0x32C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3364 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0x337B PUSH2 0x3376 DUP4 PUSH2 0x334C JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x33AA PUSH2 0x3392 DUP4 PUSH2 0x3369 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x33A0 DUP7 SWAP4 PUSH2 0x334C JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x3380 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x33B5 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33C1 SWAP1 PUSH2 0x33AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33CD SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x33DA JUMPI JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x33FB SWAP1 PUSH2 0x38B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x340C DUP2 PUSH1 0x20 SWAP4 PUSH2 0x33F2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3433 PUSH2 0x342D PUSH2 0x3426 DUP5 PUSH2 0x33DF JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x33E3 JUMP JUMPDEST SWAP3 PUSH2 0x33EC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x3443 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x345C PUSH2 0x3456 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x33FF JUMP JUMPDEST SWAP5 PUSH2 0x3410 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x3436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x3478 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x348F DUP3 PUSH2 0x3495 SWAP3 PUSH2 0xDB3 JUMP JUMPDEST SWAP3 PUSH2 0x3466 JUMP JUMPDEST SWAP1 DUP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x34A8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 PUSH2 0x34CA PUSH2 0x34C4 PUSH1 0x1 SWAP3 PUSH2 0x34BF DUP9 DUP7 PUSH2 0x3469 JUMP JUMPDEST PUSH2 0xDCF JUMP JUMPDEST SWAP6 PUSH2 0x347B JUMP JUMPDEST SWAP3 ADD SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x349A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH2 0x34E9 SWAP2 PUSH2 0x33E3 JUMP JUMPDEST SWAP2 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3526 JUMPI DUP3 SWAP2 PUSH1 0x20 PUSH2 0x3522 SWAP3 MUL SWAP4 DUP5 SWAP2 PUSH2 0x34D9 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x34D5 JUMP JUMPDEST SWAP5 PUSH2 0x357E PUSH2 0x359D SWAP6 PUSH2 0x3589 SWAP3 PUSH2 0x3570 PUSH2 0x3593 SWAP7 PUSH1 0xC0 SWAP12 SWAP16 SWAP15 SWAP13 SWAP7 SWAP9 PUSH2 0x3561 PUSH2 0x35A4 SWAP16 SWAP11 DUP14 SWAP1 PUSH1 0xE0 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x3416 JUMP JUMPDEST SWAP2 DUP13 PUSH1 0x20 DUP2 DUP6 SUB SWAP2 ADD MSTORE PUSH2 0x3481 JUMP JUMPDEST SWAP2 DUP10 DUP4 SUB PUSH1 0x40 DUP12 ADD MSTORE PUSH2 0x34DD JUMP JUMPDEST SWAP11 PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST SWAP5 SWAP1 SWAP7 POP SWAP5 SWAP2 SWAP1 SWAP3 SWAP5 PUSH2 0x35DC PUSH1 0x20 PUSH2 0x35C6 PUSH2 0x35C1 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x35D4 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x35EC PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x375E JUMPI PUSH0 SWAP2 PUSH2 0x3730 JUMPI JUMPDEST POP SWAP4 PUSH2 0x362D PUSH1 0x20 PUSH2 0x3617 PUSH2 0x3612 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xCFF49D68 SWAP1 PUSH2 0x3625 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x363D PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x372B JUMPI PUSH0 SWAP2 PUSH2 0x36FD JUMPI JUMPDEST POP SWAP2 PUSH2 0x3673 PUSH2 0x366E PUSH2 0x3668 PUSH2 0x3663 PUSH0 PUSH2 0x1836 JUMP JUMPDEST PUSH2 0x3385 JUMP JUMPDEST SWAP5 PUSH2 0x33B8 JUMP JUMPDEST PUSH2 0x33C4 JUMP JUMPDEST SWAP6 PUSH4 0xF0BF7714 SWAP4 SWAP8 SWAP10 SWAP3 SWAP5 SWAP6 SWAP9 SWAP2 SWAP1 SWAP2 DUP8 EXTCODESIZE ISZERO PUSH2 0x36F8 JUMPI PUSH0 SWAP10 PUSH2 0x36AA SWAP8 DUP12 SWAP8 PUSH2 0x36B5 SWAP7 PUSH2 0x369E PUSH2 0x282 JUMP JUMPDEST SWAP15 DUP16 SWAP14 DUP15 SWAP13 DUP14 SWAP12 PUSH2 0x162D JUMP JUMPDEST DUP12 MSTORE PUSH1 0x4 DUP12 ADD PUSH2 0x352B JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x36F3 JUMPI PUSH2 0x36C7 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x36E6 SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x36EC JUMPI JUMPDEST PUSH2 0x36DE DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x33D0 JUMP JUMPDEST PUSH0 PUSH2 0x36C4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x36D4 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1629 JUMP JUMPDEST PUSH2 0x371E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3724 JUMPI JUMPDEST PUSH2 0x3716 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x364F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x370C JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3751 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3757 JUMPI JUMPDEST PUSH2 0x3749 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x35FE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x373F JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3774 SWAP1 PUSH2 0x376F PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x3776 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3788 SWAP1 PUSH2 0x3783 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6CE9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3794 SWAP1 PUSH2 0x3763 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x379F SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x37AC SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x37D7 PUSH2 0x37DC SWAP2 PUSH2 0x37C7 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH0 PUSH2 0x37D1 PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x37E7 PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x37EF PUSH2 0x37F1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3802 PUSH2 0x37FD PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x6D23 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x380C PUSH2 0x37DF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3820 SWAP1 PUSH2 0x381A PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x6D8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x382B PUSH2 0x2A08 JUMP JUMPDEST POP PUSH2 0x383E PUSH0 PUSH2 0x3838 PUSH2 0x6E93 JUMP JUMPDEST ADD PUSH2 0x2B8E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3859 PUSH2 0x385E SWAP2 PUSH2 0x3841 JUMP JUMPDEST PUSH2 0x3847 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x386B SWAP1 SLOAD PUSH2 0x384D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3887 PUSH2 0x388C SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x386E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3899 SWAP1 SLOAD PUSH2 0x387B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x38AF PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x32E0 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x38CD PUSH2 0x38C8 PUSH2 0x38D2 SWAP3 PUSH2 0x491 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x491 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x38ED PUSH2 0x38E8 PUSH2 0x38F4 SWAP3 PUSH2 0x38B9 JUMP JUMPDEST PUSH2 0x38D5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x389C JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3912 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x38F8 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3925 SWAP1 PUSH2 0x3DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3940 PUSH2 0x393B PUSH2 0x3947 SWAP3 PUSH2 0x391C JUMP JUMPDEST PUSH2 0x3928 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x38FE JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x3956 PUSH2 0x6EB7 JUMP JUMPDEST SWAP1 PUSH2 0x3962 PUSH0 DUP4 ADD PUSH2 0x3861 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3A13 JUMPI JUMPDEST PUSH2 0x39D7 JUMPI PUSH2 0x399C SWAP3 PUSH2 0x3993 SWAP2 PUSH2 0x3981 DUP7 PUSH0 DUP7 ADD PUSH2 0x38D8 JUMP JUMPDEST PUSH2 0x398E PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x392B JUMP JUMPDEST PUSH2 0x3AA8 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x392B JUMP JUMPDEST PUSH2 0x39D2 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x39C9 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4AB JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x39DF PUSH2 0x282 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3A0F PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x3A1F PUSH0 DUP4 ADD PUSH2 0x388F JUMP JUMPDEST PUSH2 0x3A31 PUSH2 0x3A2B DUP7 PUSH2 0x491 JUMP JUMPDEST SWAP2 PUSH2 0x491 JUMP JUMPDEST LT ISZERO PUSH2 0x3969 JUMP JUMPDEST PUSH2 0x3A41 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3A4D SWAP1 PUSH2 0x3A38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3A6F PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x32E0 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3A82 SWAP1 PUSH2 0x3A38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3A9D PUSH2 0x3A98 PUSH2 0x3AA4 SWAP3 PUSH2 0x3A79 JUMP JUMPDEST PUSH2 0x3A85 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3A50 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3ABD SWAP2 POP PUSH2 0x3AB6 SWAP1 PUSH2 0x3A44 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3A88 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3AC9 SWAP2 PUSH2 0x394B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3AD3 PUSH2 0x146E JUMP JUMPDEST POP PUSH2 0x3AE7 PUSH1 0x4 PUSH2 0x3AE1 PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x1597 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B07 SWAP2 PUSH2 0x3AF6 PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x3AFF PUSH2 0x5D52 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x6850 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH2 0x3B19 PUSH2 0x3B0C JUMP JUMPDEST POP PUSH2 0x3B2B PUSH2 0x3B26 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6EDB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B5C PUSH2 0x3B70 SWAP2 PUSH2 0x3B3D PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x3B57 PUSH2 0x3B49 PUSH2 0x5F99 JUMP JUMPDEST PUSH2 0x3B51 PUSH2 0x2022 JUMP JUMPDEST SWAP3 PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST PUSH2 0x3B6A PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B87 PUSH2 0x3B82 PUSH2 0x3B8C SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x491 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BA6 PUSH2 0x3BA1 PUSH2 0x3BAB SWAP3 PUSH2 0x3B8F JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x491 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BB7 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BC3 SWAP1 PUSH2 0x3B92 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3BDA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3BBA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3BE4 PUSH2 0x6EB7 JUMP JUMPDEST SWAP1 PUSH2 0x3BF9 PUSH2 0x3BF3 PUSH0 DUP5 ADD PUSH2 0x3861 JUMP JUMPDEST ISZERO PUSH2 0x3DE JUMP JUMPDEST SWAP1 PUSH2 0x3C05 PUSH0 DUP5 ADD PUSH2 0x388F JUMP JUMPDEST DUP1 PUSH2 0x3C18 PUSH2 0x3C12 PUSH0 PUSH2 0x3B73 JUMP JUMPDEST SWAP2 PUSH2 0x491 JUMP JUMPDEST EQ DUP1 PUSH2 0x3D52 JUMPI JUMPDEST SWAP1 PUSH2 0x3C33 PUSH2 0x3C2D PUSH1 0x1 PUSH2 0x3B92 JUMP JUMPDEST SWAP2 PUSH2 0x491 JUMP JUMPDEST EQ DUP1 PUSH2 0x3D2A JUMPI JUMPDEST PUSH2 0x3C45 SWAP1 SWAP2 ISZERO PUSH2 0x3DE JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x3D19 JUMPI JUMPDEST POP PUSH2 0x3CDD JUMPI PUSH2 0x3C75 SWAP1 PUSH2 0x3C6A PUSH2 0x3C62 PUSH1 0x1 PUSH2 0x3B92 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x38D8 JUMP JUMPDEST DUP3 PUSH2 0x3CCB JUMPI JUMPDEST PUSH2 0x3E31 JUMP JUMPDEST PUSH2 0x3C7D JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x3C8A SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x392B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3CC2 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x3CB9 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3BC7 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x3C7A JUMP JUMPDEST PUSH2 0x3CD8 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x392B JUMP JUMPDEST PUSH2 0x3C70 JUMP JUMPDEST PUSH2 0x3CE5 PUSH2 0x282 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3D15 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3D24 SWAP2 POP ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH0 PUSH2 0x3C4C JUMP JUMPDEST POP PUSH2 0x3C45 PUSH2 0x3D37 ADDRESS PUSH2 0x3BAE JUMP JUMPDEST EXTCODESIZE PUSH2 0x3D4A PUSH2 0x3D44 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x3C3A JUMP JUMPDEST POP DUP3 PUSH2 0x3C1F JUMP JUMPDEST PUSH0 PUSH32 0x42616C756E690000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3D8A PUSH1 0x6 PUSH2 0xEDB JUMP JUMPDEST SWAP1 PUSH2 0x3D97 PUSH1 0x20 DUP4 ADD PUSH2 0x3D59 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3DA1 PUSH2 0x3D80 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x42414C554E490000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3DD5 PUSH1 0x6 PUSH2 0xEDB JUMP JUMPDEST SWAP1 PUSH2 0x3DE2 PUSH1 0x20 DUP4 ADD PUSH2 0x3DA4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3DEC PUSH2 0x3DCB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E06 PUSH2 0x3E01 PUSH2 0x3E0B SWAP3 PUSH2 0x3DEF JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3E26 PUSH2 0x3E21 PUSH2 0x3E2D SWAP3 PUSH2 0x3796 JUMP JUMPDEST PUSH2 0x3E0E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3A50 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3E92 PUSH2 0x3E99 SWAP2 PUSH2 0x3E51 PUSH2 0x3E43 PUSH2 0x3D99 JUMP JUMPDEST PUSH2 0x3E4B PUSH2 0x3DE4 JUMP JUMPDEST SWAP1 PUSH2 0x6F23 JUMP JUMPDEST PUSH2 0x3E5A CALLER PUSH2 0x6F4D JUMP JUMPDEST PUSH2 0x3E62 PUSH2 0x6F74 JUMP JUMPDEST PUSH2 0x3E6A PUSH2 0x6F88 JUMP JUMPDEST PUSH2 0x3E8D PUSH2 0x3E76 ADDRESS PUSH2 0x1772 JUMP JUMPDEST PUSH2 0x3E87 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3DF2 JUMP JUMPDEST SWAP1 PUSH2 0x6241 JUMP JUMPDEST PUSH2 0x3A44 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3A88 JUMP JUMPDEST PUSH2 0x3EC6 PUSH1 0x20 PUSH2 0x3EB0 PUSH2 0x3EAB PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x3EBE PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3ED6 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3F23 JUMPI PUSH2 0x3EF3 SWAP2 PUSH0 SWAP2 PUSH2 0x3EF5 JUMPI JUMPDEST POP PUSH1 0x3 PUSH2 0x3E11 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3F16 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3F1C JUMPI JUMPDEST PUSH2 0x3F0E DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x3EEB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F04 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3F31 SWAP1 PUSH2 0x3BDC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3F44 SWAP1 PUSH2 0x3F3F PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x3F46 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3F58 SWAP1 PUSH2 0x3F53 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6F92 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3F64 SWAP1 PUSH2 0x3F33 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3F70 SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x3FAA SWAP2 PUSH2 0x3FA0 PUSH2 0x3FA5 SWAP3 PUSH2 0x3F8F PUSH2 0x1FFA JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x3F9A PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x3F66 JUMP JUMPDEST PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3FBE SWAP1 PUSH2 0x3FB9 PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x3FC0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3FCC PUSH2 0x3FD3 SWAP2 PUSH2 0x3A44 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3A88 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3FDE SWAP1 PUSH2 0x3FAD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3FE8 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x4002 PUSH2 0x3FFD PUSH8 0xDE0B6B3A7640000 PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x6D8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4017 SWAP2 PUSH2 0x4012 PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x4433 JUMP JUMPDEST PUSH2 0x401F PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x4167656E7420666163746F7279206E6F74207365740000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4055 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x405E DUP2 PUSH2 0x4021 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4077 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4048 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4081 JUMPI JUMP JUMPDEST PUSH2 0x4089 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x40B9 PUSH1 0x4 DUP3 ADD PUSH2 0x4062 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x40D5 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0x40EC PUSH2 0x40E7 DUP4 PUSH2 0x40BD JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x411B PUSH2 0x4103 DUP4 PUSH2 0x40DA JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x4111 DUP7 SWAP4 PUSH2 0x40BD JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x40F1 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x4154 DUP3 PUSH2 0xDAF JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x4165 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST PUSH2 0x4174 SWAP1 MLOAD PUSH2 0x35C JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4185 DUP3 PUSH2 0x4177 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x4196 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST SWAP1 PUSH2 0x41A5 SWAP1 PUSH2 0x3DE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x41B3 DUP3 PUSH2 0x33DF JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x41C4 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST SWAP1 PUSH2 0x41D3 SWAP1 PUSH2 0x38B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x41E0 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x41EC SWAP1 PUSH2 0x41D7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x41F8 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x423A PUSH2 0x4243 PUSH1 0x20 SWAP4 PUSH2 0x4248 SWAP4 PUSH2 0x4231 DUP2 PUSH2 0x420E JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x4212 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x2AC JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4289 SWAP2 PUSH1 0x40 PUSH1 0x60 DUP3 ADD SWAP3 PUSH2 0x4267 PUSH0 DUP3 ADD MLOAD PUSH0 DUP6 ADD SWAP1 PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0x4279 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x33F2 JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x421B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4296 SWAP2 PUSH2 0x424C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x42B3 PUSH2 0x42AC DUP4 PUSH2 0x41FB JUMP JUMPDEST DUP1 SWAP3 PUSH2 0x41FF JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x42C4 PUSH1 0x20 DUP4 MUL DUP5 ADD SWAP5 PUSH2 0x4208 JUMP JUMPDEST SWAP3 PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x42D7 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x20 PUSH2 0x42F9 PUSH2 0x42F3 DUP4 DUP6 PUSH1 0x1 SWAP6 SUB DUP8 MSTORE DUP10 MLOAD PUSH2 0x428C JUMP JUMPDEST SWAP8 PUSH2 0x4299 JUMP JUMPDEST SWAP4 ADD SWAP4 ADD SWAP2 SWAP4 SWAP3 SWAP1 PUSH2 0x42C8 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x4320 PUSH2 0x432E SWAP4 PUSH1 0x40 DUP5 ADD SWAP1 DUP5 DUP3 SUB PUSH0 DUP7 ADD MSTORE PUSH2 0x429F JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xDE6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x433A SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4346 SWAP1 PUSH2 0x4331 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4352 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4374 PUSH2 0x436F PUSH2 0x4379 SWAP3 PUSH2 0x4355 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x4358 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4385 SWAP1 PUSH2 0x4360 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x43B2 PUSH2 0x43B9 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x43A8 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x437C JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x43D2 PUSH2 0x43CD PUSH2 0x43D7 SWAP3 PUSH2 0x43BB JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x4358 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x43E3 SWAP1 PUSH2 0x43BE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x4410 PUSH2 0x4417 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x4406 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x43DA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4423 SWAP1 MLOAD PUSH2 0x3DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4430 SWAP1 MLOAD PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4462 PUSH1 0x20 PUSH2 0x444C PUSH2 0x4447 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xF5D2D998 SWAP1 PUSH2 0x445A PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4472 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4FEE JUMPI PUSH0 SWAP2 PUSH2 0x4FC0 JUMPI JUMPDEST POP PUSH2 0x44B2 PUSH1 0x20 PUSH2 0x449C PUSH2 0x4497 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3E6DFA36 SWAP1 PUSH2 0x44AA PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x44C2 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4FBB JUMPI PUSH0 SWAP2 PUSH2 0x4F8D JUMPI JUMPDEST POP SWAP1 PUSH2 0x4503 PUSH1 0x20 PUSH2 0x44ED PUSH2 0x44E8 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x44FB PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4513 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4F88 JUMPI PUSH0 SWAP2 PUSH2 0x4F5A JUMPI JUMPDEST POP SWAP2 PUSH2 0x4554 PUSH1 0x20 PUSH2 0x453E PUSH2 0x4539 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x454C PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4564 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4F55 JUMPI PUSH2 0x45B4 PUSH2 0x45AF PUSH2 0x45DF SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x4F28 JUMPI JUMPDEST POP SWAP6 PUSH2 0x45AA DUP2 PUSH2 0x45A3 PUSH2 0x459D PUSH2 0x4598 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x407A JUMP JUMPDEST PUSH2 0x2A18 JUMP JUMPDEST PUSH2 0x2A24 JUMP JUMPDEST PUSH4 0x9B76A5CD SWAP1 PUSH2 0x45D4 PUSH0 CALLER SWAP4 PUSH2 0x45C8 PUSH2 0x282 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x4F23 JUMPI PUSH0 SWAP2 PUSH2 0x4EF5 JUMPI JUMPDEST POP SWAP5 PUSH2 0x4604 PUSH2 0x45FF DUP7 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x40F6 JUMP JUMPDEST SWAP4 PUSH2 0x4616 PUSH2 0x4611 DUP8 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x3385 JUMP JUMPDEST SWAP8 PUSH2 0x4620 PUSH0 PUSH2 0x1836 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x463C PUSH2 0x4636 PUSH2 0x4631 DUP12 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x474B JUMPI PUSH2 0x46E1 SWAP1 PUSH2 0x468A PUSH2 0x4678 PUSH2 0x4672 DUP12 PUSH2 0x466D PUSH2 0x4667 PUSH2 0x4662 PUSH0 SWAP4 DUP9 SWAP1 PUSH2 0x414A JUMP JUMPDEST PUSH2 0x416A JUMP JUMPDEST SWAP2 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6FCC JUMP JUMPDEST ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x4685 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x417B JUMP JUMPDEST PUSH2 0x419B JUMP JUMPDEST PUSH1 0x20 PUSH2 0x46AF PUSH2 0x46AA PUSH2 0x46A5 PUSH2 0x46A0 DUP14 DUP7 SWAP1 PUSH2 0x414A JUMP JUMPDEST PUSH2 0x416A JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x46D6 PUSH2 0x46C1 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x46CA PUSH2 0x282 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x4746 JUMPI PUSH2 0x4713 SWAP3 PUSH2 0x470E SWAP2 PUSH0 SWAP2 PUSH2 0x4718 JUMPI JUMPDEST POP PUSH2 0x4709 DUP14 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x41A9 JUMP JUMPDEST PUSH2 0x41C9 JUMP JUMPDEST PUSH2 0x233F JUMP JUMPDEST PUSH2 0x4621 JUMP JUMPDEST PUSH2 0x4739 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x473F JUMPI JUMPDEST PUSH2 0x4731 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x46FB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4727 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP3 SWAP5 SWAP8 SWAP4 SWAP6 SWAP7 PUSH2 0x4760 PUSH2 0x4765 SWAP2 PUSH2 0x41E3 JUMP JUMPDEST PUSH2 0x41EF JUMP JUMPDEST SWAP1 PUSH4 0xEEDC3C50 SWAP1 DUP9 SWAP3 DUP1 EXTCODESIZE ISZERO PUSH2 0x4EF0 JUMPI PUSH2 0x4792 PUSH0 DUP1 SWAP5 PUSH2 0x479D PUSH2 0x4786 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x4306 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x4EEB JUMPI PUSH2 0x4EBF JUMPI JUMPDEST POP PUSH2 0x47B6 PUSH0 PUSH2 0x1836 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x47D2 PUSH2 0x47CC PUSH2 0x47C7 DUP11 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x4EB5 JUMPI PUSH2 0x47EB PUSH2 0x47E6 DUP9 DUP4 SWAP1 PUSH2 0x414A JUMP JUMPDEST PUSH2 0x416A JUMP JUMPDEST SWAP1 PUSH2 0x4834 PUSH1 0x20 PUSH2 0x4802 PUSH2 0x47FD DUP6 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x4829 PUSH2 0x4814 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x481D PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4EB0 JUMPI PUSH0 SWAP2 PUSH2 0x4E82 JUMPI JUMPDEST POP SWAP2 PUSH2 0x4859 PUSH2 0x4854 DUP9 PUSH2 0x433D JUMP JUMPDEST PUSH2 0x4349 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x1698EE82 SWAP2 DUP4 SWAP1 PUSH2 0x4882 DUP9 SWAP5 PUSH2 0x488D PUSH2 0xBB8 PUSH2 0x4876 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4389 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4E7D JUMPI PUSH0 SWAP2 PUSH2 0x4E4F JUMPI JUMPDEST POP PUSH2 0x48B1 PUSH2 0x48AC DUP10 PUSH2 0x433D JUMP JUMPDEST PUSH2 0x4349 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x1698EE82 SWAP2 DUP5 SWAP1 PUSH2 0x48DA DUP10 SWAP5 PUSH2 0x48E5 PUSH2 0x1F4 PUSH2 0x48CE PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x43E7 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4E4A JUMPI PUSH0 SWAP2 PUSH2 0x4E1C JUMPI JUMPDEST POP SWAP1 PUSH2 0x490A PUSH2 0x4905 DUP11 PUSH2 0x433D JUMP JUMPDEST PUSH2 0x4349 JUMP JUMPDEST PUSH1 0x20 DUP12 PUSH4 0x1698EE82 SWAP3 PUSH2 0x4933 DUP8 SWAP3 SWAP5 PUSH2 0x493E PUSH2 0x1F4 PUSH2 0x4927 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x43E7 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4E17 JUMPI PUSH0 SWAP2 PUSH2 0x4DE9 JUMPI JUMPDEST POP SWAP2 PUSH2 0x4963 PUSH2 0x495E DUP12 PUSH2 0x433D JUMP JUMPDEST PUSH2 0x4349 JUMP JUMPDEST PUSH1 0x20 DUP13 PUSH4 0x1698EE82 SWAP3 PUSH2 0x498C DUP9 SWAP3 SWAP5 PUSH2 0x4997 PUSH2 0xBB8 PUSH2 0x4980 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4389 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4DE4 JUMPI PUSH0 SWAP2 PUSH2 0x4DB6 JUMPI JUMPDEST POP SWAP2 PUSH2 0x49C5 PUSH2 0x49BF PUSH2 0x49BA PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO SWAP1 DUP2 ISZERO PUSH2 0x4D92 JUMPI JUMPDEST POP SWAP1 DUP2 ISZERO PUSH2 0x4D6E JUMPI JUMPDEST POP SWAP1 DUP2 ISZERO PUSH2 0x4D4A JUMPI JUMPDEST POP SWAP3 PUSH2 0x49F6 PUSH2 0x49F1 DUP13 DUP6 SWAP1 PUSH2 0x417B JUMP JUMPDEST PUSH2 0x4419 JUMP JUMPDEST DUP1 PUSH2 0x4D43 JUMPI JUMPDEST PUSH2 0x4D2A JUMPI JUMPDEST PUSH2 0x4A28 PUSH2 0x4A21 DUP3 PUSH2 0x4A1B PUSH2 0x4A16 DUP12 DUP9 SWAP1 PUSH2 0x41A9 JUMP JUMPDEST PUSH2 0x4426 JUMP JUMPDEST SWAP1 PUSH2 0x231A JUMP JUMPDEST SWAP5 ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x4C97 JUMPI PUSH2 0x4A59 PUSH1 0x20 PUSH2 0x4A43 PUSH2 0x4A3E PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x4A51 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4A69 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4C92 JUMPI PUSH0 SWAP2 PUSH2 0x4C64 JUMPI JUMPDEST POP SWAP4 PUSH2 0x4AAA PUSH1 0x20 PUSH2 0x4A94 PUSH2 0x4A8F PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x4AA2 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4ABA PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4C5F JUMPI PUSH0 SWAP2 PUSH2 0x4C31 JUMPI JUMPDEST POP SWAP1 PUSH2 0x4AFB PUSH1 0x20 PUSH2 0x4AE5 PUSH2 0x4AE0 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x4AF3 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4B0B PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4C2C JUMPI PUSH0 SWAP2 PUSH2 0x4BFE JUMPI JUMPDEST POP SWAP3 PUSH2 0x4B43 PUSH2 0x4B3D PUSH2 0x4B38 PUSH2 0x4B33 DUP14 DUP11 SWAP1 PUSH2 0x41A9 JUMP JUMPDEST PUSH2 0x4426 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x4B5C JUMPI JUMPDEST POP POP POP POP PUSH2 0x4B57 SWAP2 POP PUSH2 0x233F JUMP JUMPDEST PUSH2 0x47B7 JUMP JUMPDEST PUSH2 0x4B78 PUSH1 0x20 SWAP5 SWAP4 PUSH2 0x4B73 PUSH2 0x4B83 SWAP5 PUSH2 0x4B7E SWAP5 PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP3 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH2 0x4BA6 PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x4BB1 PUSH2 0x4B9A PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x4BF9 JUMPI PUSH2 0x4B57 SWAP3 PUSH2 0x4BCD JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x4B49 JUMP JUMPDEST PUSH2 0x4BED SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4BF2 JUMPI JUMPDEST PUSH2 0x4BE5 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x4BC5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4BDB JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4C1F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4C25 JUMPI JUMPDEST PUSH2 0x4C17 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x4B1D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C0D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4C52 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4C58 JUMPI JUMPDEST PUSH2 0x4C4A DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x4ACC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C40 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4C85 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4C8B JUMPI JUMPDEST PUSH2 0x4C7D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4A7B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C73 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP SWAP4 SWAP9 POP POP SWAP6 POP POP PUSH1 0x20 SWAP4 POP PUSH2 0x4CB7 SWAP3 POP PUSH2 0x4CB2 SWAP2 POP PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x4CDC PUSH0 CALLER SWAP4 SWAP6 PUSH2 0x4CE7 PUSH2 0x4CD0 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x4D25 JUMPI PUSH2 0x4CF9 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x4D19 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4D1E JUMPI JUMPDEST PUSH2 0x4D11 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x4CF6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4D07 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4D3D PUSH0 PUSH2 0x4D38 DUP5 SWAP2 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6F92 JUMP JUMPDEST POP PUSH2 0x4A01 JUMP JUMPDEST POP DUP4 PUSH2 0x49FC JUMP JUMPDEST SWAP1 POP PUSH2 0x4D66 PUSH2 0x4D60 PUSH2 0x4D5B PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH0 PUSH2 0x49E1 JUMP JUMPDEST SWAP1 POP PUSH2 0x4D8A PUSH2 0x4D84 PUSH2 0x4D7F PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH0 PUSH2 0x49D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x4DAE PUSH2 0x4DA8 PUSH2 0x4DA3 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH0 PUSH2 0x49CF JUMP JUMPDEST PUSH2 0x4DD7 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4DDD JUMPI JUMPDEST PUSH2 0x4DCF DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x49A9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4DC5 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4E0A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4E10 JUMPI JUMPDEST PUSH2 0x4E02 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4950 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4DF8 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4E3D SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4E43 JUMPI JUMPDEST PUSH2 0x4E35 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x48F7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E2B JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4E70 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4E76 JUMPI JUMPDEST PUSH2 0x4E68 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x489F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E5E JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4EA3 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4EA9 JUMPI JUMPDEST PUSH2 0x4E9B DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x4846 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E91 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4EDE SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x4EE4 JUMPI JUMPDEST PUSH2 0x4ED6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x33D0 JUMP JUMPDEST PUSH0 PUSH2 0x47AC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4ECC JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1629 JUMP JUMPDEST PUSH2 0x4F16 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4F1C JUMPI JUMPDEST PUSH2 0x4F0E DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x45F1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F04 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4F48 SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x4F4E JUMPI JUMPDEST PUSH2 0x4F40 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4583 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F36 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4F7B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4F81 JUMPI JUMPDEST PUSH2 0x4F73 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4525 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F69 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4FAE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4FB4 JUMPI JUMPDEST PUSH2 0x4FA6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x44D4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F9C JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4FE1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4FE7 JUMPI JUMPDEST PUSH2 0x4FD9 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4484 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4FCF JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST SWAP1 PUSH2 0x4FFD SWAP2 PUSH2 0x4005 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5010 SWAP1 PUSH2 0x500B PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x5012 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x502D PUSH2 0x5027 PUSH2 0x5022 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x503D JUMPI PUSH2 0x503B SWAP1 PUSH2 0x6D23 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5080 PUSH2 0x5049 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x5051 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x508D SWAP1 PUSH2 0x4FFF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x50A0 SWAP1 PUSH2 0x509B PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x53B6 JUMP JUMPDEST PUSH2 0x50A8 PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x556E6973776170466163746F7279206E6F742073657400000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x50DE PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x50E7 DUP2 PUSH2 0x50AA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5100 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x50D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x510A JUMPI JUMP JUMPDEST PUSH2 0x5112 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5142 PUSH1 0x4 DUP3 ADD PUSH2 0x50EB JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x574E4154495645206E6F74207365740000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x517A PUSH1 0xF PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x5183 DUP2 PUSH2 0x5146 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x519C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x516D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x51A6 JUMPI JUMP JUMPDEST PUSH2 0x51AE PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x51DE PUSH1 0x4 DUP3 ADD PUSH2 0x5187 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x42616C756E6953776170706572206E6F74207365740000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x5216 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x521F DUP2 PUSH2 0x51E2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5238 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5209 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5242 JUMPI JUMP JUMPDEST PUSH2 0x524A PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x527A PUSH1 0x4 DUP3 ADD PUSH2 0x5223 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x53776170204661696C6564000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x52B2 PUSH1 0xB PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x52BB DUP2 PUSH2 0x527E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x52D4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x52A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x52DE JUMPI JUMP JUMPDEST PUSH2 0x52E6 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5316 PUSH1 0x4 DUP3 ADD PUSH2 0x52BF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4D756C7469486F7053776170204661696C656400000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x534E PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x5357 DUP2 PUSH2 0x531A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5370 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5341 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x537A JUMPI JUMP JUMPDEST PUSH2 0x5382 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x53B2 PUSH1 0x4 DUP3 ADD PUSH2 0x535B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x53D2 DUP2 PUSH2 0x53CC PUSH2 0x53C6 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x20DB JUMP JUMPDEST PUSH2 0x53FF PUSH1 0x20 PUSH2 0x53E9 PUSH2 0x53E4 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3E6DFA36 SWAP1 PUSH2 0x53F7 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x540F PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5D02 JUMPI PUSH2 0x5446 SWAP2 PUSH0 SWAP2 PUSH2 0x5CD4 JUMPI JUMPDEST POP PUSH2 0x543F PUSH2 0x5439 PUSH2 0x5434 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x5103 JUMP JUMPDEST PUSH2 0x5473 PUSH1 0x20 PUSH2 0x545D PUSH2 0x5458 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x546B PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5483 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5CCF JUMPI PUSH0 SWAP2 PUSH2 0x5CA1 JUMPI JUMPDEST POP PUSH2 0x54BB DUP2 PUSH2 0x54B4 PUSH2 0x54AE PUSH2 0x54A9 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x219F JUMP JUMPDEST PUSH2 0x54E8 PUSH1 0x20 PUSH2 0x54D2 PUSH2 0x54CD PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x54E0 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x54F8 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5C9C JUMPI PUSH2 0x556B SWAP2 PUSH0 SWAP2 PUSH2 0x5C6E JUMPI JUMPDEST POP SWAP2 PUSH2 0x5534 DUP4 PUSH2 0x552D PUSH2 0x5527 PUSH2 0x5522 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x519F JUMP JUMPDEST PUSH2 0x5565 PUSH2 0x5540 DUP6 PUSH2 0x62DD JUMP JUMPDEST SWAP5 PUSH2 0x555E DUP7 PUSH2 0x5557 PUSH2 0x5551 DUP5 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x22D7 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0x231A JUMP JUMPDEST SWAP1 PUSH2 0x3AEA JUMP JUMPDEST POP PUSH2 0x5574 PUSH2 0x1FFA JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x5598 PUSH2 0x5592 PUSH2 0x558D PUSH2 0x5588 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6411 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x5C24 JUMPI PUSH2 0x55B1 PUSH2 0x55AA PUSH0 PUSH2 0x234E JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x6460 JUMP JUMPDEST PUSH2 0x55D6 DUP2 PUSH2 0x55CF PUSH2 0x55C9 PUSH2 0x55C4 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x23AA JUMP JUMPDEST PUSH2 0x55DE PUSH2 0x2022 JUMP JUMPDEST SWAP1 PUSH2 0x55FB DUP3 PUSH2 0x55F5 PUSH2 0x55EF PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x2446 JUMP JUMPDEST PUSH2 0x5643 PUSH1 0x20 PUSH2 0x5611 PUSH2 0x560C DUP5 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5638 PUSH2 0x5623 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x562C PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5C1F JUMPI PUSH0 SWAP2 PUSH2 0x5BF1 JUMPI JUMPDEST POP SWAP2 DUP3 PUSH2 0x566A PUSH2 0x5664 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x5BCF JUMPI JUMPDEST PUSH2 0x5BC3 JUMPI PUSH2 0x56A3 SWAP1 PUSH1 0x20 PUSH2 0x568D PUSH2 0x5688 DUP6 PUSH2 0x2495 JUMP JUMPDEST PUSH2 0x24A1 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x569B PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x56B3 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5BBE JUMPI PUSH2 0x56D6 PUSH2 0x56DF SWAP3 PUSH2 0x56FA SWAP5 PUSH0 SWAP2 PUSH2 0x5B90 JUMPI JUMPDEST POP PUSH2 0x24EE JUMP JUMPDEST DUP6 DUP10 SWAP2 SWAP3 PUSH2 0x6608 JUMP JUMPDEST SWAP3 PUSH2 0x56F3 PUSH2 0x56ED DUP6 SWAP3 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x2563 JUMP JUMPDEST DUP1 PUSH2 0x5716 PUSH2 0x5710 PUSH2 0x570B PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x5AF7 JUMPI PUSH2 0x5748 PUSH1 0x20 PUSH2 0x5732 PUSH2 0x572D PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x5740 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5758 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5AF2 JUMPI PUSH0 SWAP2 PUSH2 0x5AC4 JUMPI JUMPDEST POP PUSH2 0x5790 DUP2 PUSH2 0x5789 PUSH2 0x5783 PUSH2 0x577E PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x523B JUMP JUMPDEST PUSH2 0x57A1 PUSH2 0x579C DUP4 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 DUP4 SWAP1 PUSH2 0x57C8 PUSH0 DUP9 SWAP6 PUSH2 0x57D3 PUSH2 0x57BC PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x5ABF JUMPI PUSH2 0x5A93 JUMPI JUMPDEST POP PUSH2 0x57F4 PUSH2 0x57EF DUP3 PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 DUP5 SWAP1 PUSH2 0x5827 PUSH0 PUSH2 0x580C PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP6 PUSH2 0x5832 DUP11 CALLER SWAP1 PUSH2 0x581B PUSH2 0x282 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x162D JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x2CDD JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x5A63 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x59AB JUMPI POP PUSH1 0x1 PUSH2 0x5862 JUMPI JUMPDEST POP POP POP PUSH2 0x585D SWAP1 JUMPDEST JUMPDEST PUSH2 0x233F JUMP JUMPDEST PUSH2 0x5575 JUMP JUMPDEST SWAP1 PUSH2 0x5876 PUSH2 0x5871 PUSH1 0x20 SWAP4 PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST PUSH2 0x58A5 PUSH0 PUSH4 0x5EFAAEBB PUSH2 0x58B0 DUP10 SWAP8 PUSH2 0x588E PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP1 CALLER SWAP2 PUSH2 0x5899 PUSH2 0x282 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0x162D JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x2D1B JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x59A6 JUMPI PUSH0 SWAP2 PUSH2 0x5978 JUMPI JUMPDEST POP SWAP1 PUSH2 0x58E0 DUP3 PUSH2 0x58DA PUSH2 0x58D4 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x5373 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x58FC PUSH2 0x58F7 PUSH2 0x58F2 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x5921 PUSH0 CALLER SWAP4 SWAP7 PUSH2 0x592C PUSH2 0x5915 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x5973 JUMPI PUSH2 0x585D SWAP3 PUSH2 0x5947 JUMPI JUMPDEST DUP2 SWAP3 PUSH2 0x584F JUMP JUMPDEST PUSH2 0x5967 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x596C JUMPI JUMPDEST PUSH2 0x595F DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x5940 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5955 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5999 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x599F JUMPI JUMPDEST PUSH2 0x5991 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x58C2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5987 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 PUSH2 0x59CC DUP3 PUSH2 0x59C6 PUSH2 0x59C0 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x52D7 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x59E8 PUSH2 0x59E3 PUSH2 0x59DE PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x5A0D PUSH0 CALLER SWAP4 SWAP7 PUSH2 0x5A18 PUSH2 0x5A01 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x5A5E JUMPI PUSH2 0x585D SWAP3 PUSH2 0x5A32 JUMPI JUMPDEST POP PUSH2 0x5857 JUMP JUMPDEST PUSH2 0x5A52 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5A57 JUMPI JUMPDEST PUSH2 0x5A4A DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x5A2C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5A40 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5A85 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5A8C JUMPI JUMPDEST PUSH2 0x5A7D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x583F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5A73 JUMP JUMPDEST PUSH2 0x5AB3 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5AB8 JUMPI JUMPDEST PUSH2 0x5AAB DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x57E2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5AA1 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5AE5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5AEB JUMPI JUMPDEST PUSH2 0x5ADD DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x576A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5AD3 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP SWAP1 PUSH1 0x20 PUSH2 0x5B15 PUSH2 0x5B10 PUSH2 0x5B0B PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x5B3A PUSH0 CALLER SWAP4 SWAP7 PUSH2 0x5B45 PUSH2 0x5B2E PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x5B8B JUMPI PUSH2 0x585D SWAP3 PUSH2 0x5B5F JUMPI JUMPDEST POP PUSH2 0x5858 JUMP JUMPDEST PUSH2 0x5B7F SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5B84 JUMPI JUMPDEST PUSH2 0x5B77 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x5B59 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5B6D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5BB1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5BB7 JUMPI JUMPDEST PUSH2 0x5BA9 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24D0 JUMP JUMPDEST PUSH0 PUSH2 0x56D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5B9F JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP POP PUSH2 0x585D SWAP1 PUSH2 0x5858 JUMP JUMPDEST POP DUP2 PUSH2 0x5BEB PUSH2 0x5BE5 PUSH2 0x5BE0 ADDRESS PUSH2 0x1772 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x5672 JUMP JUMPDEST PUSH2 0x5C12 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5C18 JUMPI JUMPDEST PUSH2 0x5C0A DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x5655 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP PUSH2 0x5C31 CALLER DUP3 SWAP1 PUSH2 0x66C6 JUMP JUMPDEST CALLER SWAP1 PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 SWAP2 PUSH2 0x5C69 PUSH2 0x5C60 PUSH2 0x282 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x5C8F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5C95 JUMPI JUMPDEST PUSH2 0x5C87 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x550D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5C7D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5CC2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5CC8 JUMPI JUMPDEST PUSH2 0x5CBA DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x5495 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5CB0 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5CF5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5CFB JUMPI JUMPDEST PUSH2 0x5CED DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x5424 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5CE3 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5D10 SWAP1 PUSH2 0x508F JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH2 0x5D2B SWAP4 SWAP2 SWAP3 PUSH2 0x5D21 PUSH2 0x1FFA JUMP JUMPDEST POP SWAP3 SWAP1 SWAP2 SWAP3 PUSH2 0x6608 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x5D5A PUSH2 0x2A08 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5D6D SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x7006 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D86 PUSH2 0x5D81 PUSH2 0x5D8B SWAP3 PUSH2 0x5D6F JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D98 PUSH1 0x2 PUSH2 0x5D72 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5DC6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x32E0 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x5DE4 PUSH2 0x5DDF PUSH2 0x5DE9 SWAP3 PUSH2 0x38B JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5E04 PUSH2 0x5DFF PUSH2 0x5E0B SWAP3 PUSH2 0x5DD0 JUMP JUMPDEST PUSH2 0x5DEC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x5D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5E17 PUSH2 0x7160 JUMP JUMPDEST PUSH2 0x5E22 PUSH0 DUP3 ADD PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x5E3B PUSH2 0x5E35 PUSH2 0x5E30 PUSH2 0x5D8E JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ PUSH2 0x5E56 JUMPI PUSH2 0x5E54 SWAP1 PUSH0 PUSH2 0x5E4D PUSH2 0x5D8E JUMP JUMPDEST SWAP2 ADD PUSH2 0x5DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E5E PUSH2 0x282 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5E8E PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5EA6 PUSH2 0x5EA1 PUSH2 0x5EAB SWAP3 PUSH2 0x3B8F JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EB8 PUSH1 0x1 PUSH2 0x5E92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5ED6 PUSH2 0x5EC6 PUSH2 0x7160 JUMP JUMPDEST PUSH0 PUSH2 0x5ECF PUSH2 0x5EAE JUMP JUMPDEST SWAP2 ADD PUSH2 0x5DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5EE7 PUSH2 0x5EED SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x38B JUMP JUMPDEST SWAP3 PUSH2 0x38B JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x5EF8 JUMPI JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST PUSH0 PUSH32 0x546F6B656E2076616C756174696F6E206973207A65726F000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x5F31 PUSH1 0x17 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x5F3A DUP2 PUSH2 0x5EFD JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5F53 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5F24 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5F5D JUMPI JUMP JUMPDEST PUSH2 0x5F65 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5F95 PUSH1 0x4 DUP3 ADD PUSH2 0x5F3E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5FA1 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x5FAB PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP1 PUSH2 0x5FB5 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x5FDA PUSH2 0x5FD4 PUSH2 0x5FCF PUSH2 0x5FCA PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6411 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x623B JUMPI PUSH2 0x5FF3 PUSH2 0x5FEC PUSH0 PUSH2 0x234E JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x6460 JUMP JUMPDEST PUSH2 0x603B PUSH1 0x20 PUSH2 0x6009 PUSH2 0x6004 DUP5 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x6030 PUSH2 0x601B ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x6024 PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6236 JUMPI PUSH0 SWAP2 PUSH2 0x6208 JUMPI JUMPDEST POP SWAP1 DUP2 PUSH2 0x6062 PUSH2 0x605C PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ PUSH2 0x61FC JUMPI DUP1 PUSH2 0x6083 PUSH2 0x607D PUSH2 0x6078 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x61D0 JUMPI PUSH2 0x60B6 SWAP1 PUSH1 0x20 PUSH2 0x60A0 PUSH2 0x609B PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x60AE PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x60C6 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x61CB JUMPI PUSH2 0x60E7 PUSH2 0x60EC SWAP2 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0x619E JUMPI JUMPDEST POP PUSH2 0x2B62 JUMP JUMPDEST PUSH2 0x2B6E JUMP JUMPDEST PUSH2 0x6116 PUSH4 0xB27B5E75 PUSH2 0x6121 PUSH2 0x6101 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP7 PUSH2 0x610A PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x17DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x6199 JUMPI PUSH2 0x6165 SWAP3 PUSH2 0x615E SWAP3 PUSH0 SWAP2 PUSH2 0x616B JUMPI JUMPDEST POP PUSH2 0x6158 DUP2 PUSH2 0x6152 PUSH2 0x614C PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x5F56 JUMP JUMPDEST SWAP1 PUSH2 0x5ED8 JUMP JUMPDEST SWAP3 JUMPDEST PUSH2 0x233F JUMP JUMPDEST SWAP2 PUSH2 0x5FB7 JUMP JUMPDEST PUSH2 0x618C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6192 JUMPI JUMPDEST PUSH2 0x6184 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x613B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x617A JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x61BE SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x61C4 JUMPI JUMPDEST PUSH2 0x61B6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x60E1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x61AC JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP PUSH2 0x6165 SWAP2 PUSH2 0x61F0 PUSH2 0x61F6 SWAP3 PUSH2 0x61EA PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x16CA JUMP JUMPDEST SWAP1 PUSH2 0x5ED8 JUMP JUMPDEST SWAP3 PUSH2 0x6160 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x6165 SWAP1 PUSH2 0x6160 JUMP JUMPDEST PUSH2 0x6229 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x622F JUMPI JUMPDEST PUSH2 0x6221 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x604D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6217 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST SWAP1 SWAP2 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x625C PUSH2 0x6256 PUSH2 0x6251 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x6278 JUMPI PUSH2 0x6276 SWAP2 PUSH2 0x626E PUSH0 PUSH2 0x213A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x7192 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x62BB PUSH2 0x6284 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x628C PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x62C7 PUSH2 0x1FE2 JUMP JUMPDEST POP PUSH2 0x62DA PUSH0 PUSH2 0x62D4 PUSH2 0x6EB7 JUMP JUMPDEST ADD PUSH2 0x388F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6314 SWAP1 PUSH2 0x62E9 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x62FE PUSH2 0x62F9 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x630C PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6324 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6409 JUMPI PUSH2 0x6364 SWAP3 PUSH0 SWAP2 PUSH2 0x63DB JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x634E PUSH2 0x6349 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x635C PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6374 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x63D6 JUMPI PUSH2 0x639A PUSH2 0x63A0 SWAP3 PUSH2 0x63A5 SWAP6 PUSH0 SWAP2 PUSH2 0x63A8 JUMPI JUMPDEST POP SWAP4 SWAP2 DUP5 PUSH2 0x231A JUMP JUMPDEST SWAP1 PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x63C9 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x63CF JUMPI JUMPDEST PUSH2 0x63C1 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x6391 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x63B7 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x63FC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6402 JUMPI JUMPDEST PUSH2 0x63F4 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x6339 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x63EA JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6428 PUSH0 PUSH2 0x642D SWAP3 PUSH2 0x6421 PUSH2 0x1FFA JUMP JUMPDEST POP ADD PUSH2 0x640E JUMP JUMPDEST PUSH2 0x733C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x643C PUSH2 0x6441 SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x5DD0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6458 PUSH2 0x6453 PUSH2 0x645D SWAP3 PUSH2 0x38B JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x648B PUSH2 0x6486 PUSH2 0x6495 SWAP4 PUSH2 0x6481 PUSH0 PUSH2 0x6490 SWAP6 PUSH2 0x647A PUSH2 0x2A08 JUMP JUMPDEST POP ADD PUSH2 0x640E JUMP JUMPDEST PUSH2 0x73AD JUMP JUMPDEST PUSH2 0x6430 JUMP JUMPDEST PUSH2 0x6444 JUMP JUMPDEST PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x546F74616C20737570706C792063616E6E6F74206265207A65726F0000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x64CC PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x64D5 DUP2 PUSH2 0x6498 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x64EE SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x64BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x64F8 JUMPI JUMP JUMPDEST PUSH2 0x6500 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6530 PUSH1 0x4 DUP3 ADD PUSH2 0x64D9 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6548 PUSH2 0x6543 PUSH2 0x654D SWAP3 PUSH2 0x31AD JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x546F6B656E20646563696D616C732073686F756C64206265203C3D2031380000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x6584 PUSH1 0x1E PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x658D DUP2 PUSH2 0x6550 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x65A6 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x6577 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x65B0 JUMPI JUMP JUMPDEST PUSH2 0x65B8 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x65E8 PUSH1 0x4 DUP3 ADD PUSH2 0x6591 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x65F5 SWAP1 PUSH2 0x38B JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x6603 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST SWAP1 PUSH2 0x66B7 SWAP2 PUSH2 0x66BC SWAP5 PUSH2 0x6619 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x6636 DUP3 PUSH2 0x6630 PUSH2 0x662A PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x64F1 JUMP JUMPDEST PUSH2 0x6654 DUP2 PUSH2 0x664D PUSH2 0x6647 PUSH1 0x12 PUSH2 0x6534 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x65A9 JUMP JUMPDEST PUSH2 0x665C PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x6665 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x6682 PUSH2 0x667D PUSH1 0x12 PUSH2 0x6678 DUP5 SWAP2 PUSH2 0x6534 JUMP JUMPDEST PUSH2 0x231A JUMP JUMPDEST PUSH2 0x65EC JUMP JUMPDEST SWAP1 PUSH2 0x6696 PUSH2 0x6690 PUSH1 0x12 PUSH2 0x6534 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT PUSH0 EQ PUSH2 0x66BF JUMPI PUSH2 0x66AB PUSH2 0x66B1 SWAP3 DUP3 SWAP1 PUSH2 0x172C JUMP JUMPDEST SWAP5 PUSH2 0x172C JUMP JUMPDEST JUMPDEST PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP SWAP3 PUSH2 0x66B2 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x66E2 PUSH2 0x66DC PUSH2 0x66D7 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x66FE JUMPI PUSH2 0x66FC SWAP2 SWAP1 PUSH2 0x66F5 PUSH0 PUSH2 0x213A JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x7192 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6741 PUSH2 0x670A PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x6712 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x676E PUSH2 0x6775 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x6764 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6782 SWAP2 SUB PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x6793 DUP2 DUP4 SWAP1 PUSH2 0x3F7C JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x67C7 PUSH2 0x67C1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST SUB PUSH2 0x67D4 JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x67E7 PUSH2 0x67E1 DUP8 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT PUSH2 0x680D JUMPI PUSH2 0x6804 SWAP4 SWAP5 PUSH2 0x67FC SWAP2 SWAP4 SWAP3 PUSH2 0x6777 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x7006 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x67CD JUMP JUMPDEST POP PUSH2 0x684C DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x681D PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x6745 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x686C PUSH2 0x6866 PUSH2 0x6861 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x68E6 JUMPI DUP2 PUSH2 0x688C PUSH2 0x6886 PUSH2 0x6881 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x689F JUMPI PUSH2 0x689D SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x7192 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x68E2 PUSH2 0x68AB PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x68B3 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6929 PUSH2 0x68F2 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x68FA PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6936 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6942 ADDRESS PUSH2 0x692D JUMP JUMPDEST PUSH2 0x6974 PUSH2 0x696E PUSH32 0x0 PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x69BE JUMPI JUMPDEST PUSH2 0x6982 JUMPI JUMP JUMPDEST PUSH2 0x698A PUSH2 0x282 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x69BA PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x69C7 PUSH2 0x73CE JUMP JUMPDEST PUSH2 0x69F9 PUSH2 0x69F3 PUSH32 0x0 PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x697C JUMP JUMPDEST POP PUSH2 0x6A09 PUSH2 0x6C37 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6A14 SWAP1 PUSH2 0x6A00 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6A1F SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A2B SWAP1 PUSH2 0x6A16 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A37 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A43 DUP2 PUSH2 0x928 JUMP JUMPDEST SUB PUSH2 0x6A4A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x6A5B DUP3 PUSH2 0x6A3A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x6A76 JUMPI PUSH2 0x6A73 SWAP2 PUSH0 ADD PUSH2 0x6A4E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6AA9 PUSH1 0x20 PUSH2 0x6A93 PUSH2 0x6A8E DUP7 PUSH2 0x6A22 JUMP JUMPDEST PUSH2 0x6A2E JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x6AA1 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6AB9 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x6B89 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x6B1A JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x6ADB JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x6B16 SWAP1 PUSH2 0x6AE7 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x6B35 PUSH2 0x6B2F PUSH2 0x6B2A PUSH2 0x3301 JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP2 PUSH2 0x928 JUMP JUMPDEST SUB PUSH2 0x6B4A JUMPI PUSH2 0x6B45 SWAP3 SWAP4 POP PUSH2 0x73F4 JUMP JUMPDEST PUSH2 0x6AD9 JUMP JUMPDEST PUSH2 0x6B85 DUP5 PUSH2 0x6B56 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x938 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6BAB SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6BB2 JUMPI JUMPDEST PUSH2 0x6BA3 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6A5D JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x6AC6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6B99 JUMP JUMPDEST PUSH2 0x6BC2 ADDRESS PUSH2 0x692D JUMP JUMPDEST PUSH2 0x6BF4 PUSH2 0x6BEE PUSH32 0x0 PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST SUB PUSH2 0x6BFB JUMPI JUMP JUMPDEST PUSH2 0x6C03 PUSH2 0x282 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6C33 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6C3F PUSH2 0x3823 JUMP JUMPDEST PUSH2 0x6C58 PUSH2 0x6C52 PUSH2 0x6C4D PUSH2 0x5D52 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST SUB PUSH2 0x6C5F JUMPI JUMP JUMPDEST PUSH2 0x6CA1 PUSH2 0x6C6A PUSH2 0x5D52 JUMP JUMPDEST PUSH2 0x6C72 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6CAE SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6CC5 PUSH2 0x6CC0 PUSH2 0x6CCA SWAP3 PUSH2 0x343 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6CE1 PUSH2 0x6CDC PUSH2 0x6CE6 SWAP3 PUSH2 0x38B JUMP JUMPDEST PUSH2 0x32E0 JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6D1B PUSH2 0x6D15 PUSH2 0x6D10 PUSH2 0x6D0B PUSH0 PUSH2 0x6D20 SWAP7 PUSH2 0x6D03 PUSH2 0x15C2 JUMP JUMPDEST POP ADD SWAP5 PUSH2 0x6CA5 JUMP JUMPDEST PUSH2 0x6CB1 JUMP JUMPDEST PUSH2 0x6CCD JUMP JUMPDEST SWAP2 PUSH2 0x640E JUMP JUMPDEST PUSH2 0x75F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6D2B PUSH2 0x6E93 JUMP JUMPDEST PUSH2 0x6D43 PUSH2 0x6D39 PUSH0 DUP4 ADD PUSH2 0x2B8E JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x3E11 JUMP JUMPDEST SWAP1 PUSH2 0x6D77 PUSH2 0x6D71 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP2 PUSH2 0x3796 JUMP JUMPDEST SWAP2 PUSH2 0x6D80 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x6D8A DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x6DCE SWAP1 PUSH2 0x6D9B PUSH2 0x1FFA JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x6DB8 PUSH2 0x6DB3 PUSH2 0x6DAE PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x2495 JUMP JUMPDEST PUSH2 0x24A1 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x6DC6 PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6DDE PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6E8E JUMPI PUSH2 0x6E52 PUSH2 0x6E42 PUSH2 0x6E06 PUSH2 0x6E57 SWAP4 PUSH2 0x6E5D SWAP7 PUSH0 SWAP2 PUSH2 0x6E60 JUMPI JUMPDEST POP PUSH2 0x24EE JUMP JUMPDEST SWAP4 PUSH2 0x6E3D PUSH2 0x6E12 PUSH2 0x2022 JUMP JUMPDEST SWAP2 PUSH2 0x6E2F DUP4 PUSH2 0x6E29 PUSH2 0x6E23 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x64F1 JUMP JUMPDEST PUSH2 0x6E37 PUSH2 0x5F99 JUMP JUMPDEST SWAP1 PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP3 PUSH2 0x6E4D PUSH1 0x12 PUSH2 0x6534 JUMP JUMPDEST PUSH2 0x231A JUMP JUMPDEST PUSH2 0x65EC JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6E81 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6E87 JUMPI JUMPDEST PUSH2 0x6E79 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24D0 JUMP JUMPDEST PUSH0 PUSH2 0x6E00 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6E6F JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x6EF2 PUSH0 PUSH2 0x6EF7 SWAP3 PUSH2 0x6EEB PUSH2 0x3B0C JUMP JUMPDEST POP ADD PUSH2 0x640E JUMP JUMPDEST PUSH2 0x77DE JUMP JUMPDEST PUSH2 0x6EFF PUSH2 0x3B0C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6F15 SWAP2 PUSH2 0x6F10 PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x6F17 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6F21 SWAP2 PUSH2 0x7A02 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6F2D SWAP2 PUSH2 0x6F03 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F40 SWAP1 PUSH2 0x6F3B PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x6F42 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F4B SWAP1 PUSH2 0x7A93 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F56 SWAP1 PUSH2 0x6F2F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F60 PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x6F68 PUSH2 0x6F6A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F72 PUSH2 0x7ACD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F7C PUSH2 0x6F58 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F86 PUSH2 0x77F5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F90 PUSH2 0x6F7E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6FC4 PUSH2 0x6FBE PUSH2 0x6FB9 PUSH2 0x6FB4 PUSH0 PUSH2 0x6FC9 SWAP7 PUSH2 0x6FAC PUSH2 0x15C2 JUMP JUMPDEST POP ADD SWAP5 PUSH2 0x6CA5 JUMP JUMPDEST PUSH2 0x6CB1 JUMP JUMPDEST PUSH2 0x6CCD JUMP JUMPDEST SWAP2 PUSH2 0x640E JUMP JUMPDEST PUSH2 0x7B0C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6FFE PUSH2 0x6FF8 PUSH2 0x6FF3 PUSH2 0x6FEE PUSH0 PUSH2 0x7003 SWAP7 PUSH2 0x6FE6 PUSH2 0x15C2 JUMP JUMPDEST POP ADD SWAP5 PUSH2 0x6CA5 JUMP JUMPDEST PUSH2 0x6CB1 JUMP JUMPDEST PUSH2 0x6CCD JUMP JUMPDEST SWAP2 PUSH2 0x640E JUMP JUMPDEST PUSH2 0x7B6F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x7010 PUSH2 0x5D2E JUMP JUMPDEST DUP3 PUSH2 0x702B PUSH2 0x7025 PUSH2 0x7020 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x7119 JUMPI DUP5 PUSH2 0x704B PUSH2 0x7045 PUSH2 0x7040 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x70D2 JUMPI PUSH2 0x7072 SWAP1 PUSH2 0x706D PUSH2 0x7066 PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x3F66 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x5DEF JUMP JUMPDEST PUSH2 0x707C JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x70C7 PUSH2 0x70B5 PUSH2 0x70AF PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP4 PUSH2 0x70BE PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x7077 JUMP JUMPDEST PUSH2 0x7115 PUSH2 0x70DE PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x70E6 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x715C PUSH2 0x7125 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x712D PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x718F SWAP2 ADD PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x719D PUSH2 0x5D2E JUMP JUMPDEST DUP2 PUSH2 0x71B8 PUSH2 0x71B2 PUSH2 0x71AD PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x72A3 JUMPI PUSH2 0x71DF DUP4 PUSH2 0x71D9 PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x71D4 DUP4 PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x5ED8 JUMP JUMPDEST SWAP1 PUSH2 0x5DEF JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x71FB PUSH2 0x71F5 PUSH2 0x71F0 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x7274 JUMPI PUSH2 0x7223 SWAP1 PUSH2 0x721D PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x7218 DUP4 PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x6777 JUMP JUMPDEST SWAP1 PUSH2 0x5DEF JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x726F PUSH2 0x725D PUSH2 0x7257 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP4 PUSH2 0x7266 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x729E SWAP1 PUSH2 0x7298 PUSH2 0x7289 PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x37A2 JUMP JUMPDEST SWAP2 PUSH2 0x7293 DUP4 PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x7184 JUMP JUMPDEST SWAP1 PUSH2 0x5DEF JUMP JUMPDEST PUSH2 0x7224 JUMP JUMPDEST PUSH2 0x72B8 PUSH2 0x72B3 PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST DUP1 PUSH2 0x72CB PUSH2 0x72C5 DUP7 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT PUSH2 0x72F5 JUMPI PUSH2 0x72DE PUSH2 0x72F0 SWAP2 DUP6 SWAP1 PUSH2 0x6777 JUMP JUMPDEST PUSH2 0x72EB PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x5DEF JUMP JUMPDEST PUSH2 0x71E0 JUMP JUMPDEST SWAP2 PUSH2 0x7334 SWAP2 POP SWAP2 SWAP3 PUSH2 0x7305 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x6745 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x7350 SWAP2 PUSH2 0x7349 PUSH2 0x1FFA JUMP JUMPDEST POP ADD PUSH2 0x7338 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x7365 DUP2 PUSH2 0x7338 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x737F JUMPI PUSH2 0x7377 PUSH1 0x1 SWAP2 PUSH2 0x7353 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7397 SWAP1 PUSH1 0x8 PUSH2 0x739C SWAP4 MUL PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x7384 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x73AA SWAP2 SLOAD PUSH2 0x7387 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x73CB SWAP2 PUSH0 PUSH2 0x73C5 SWAP3 PUSH2 0x73BE PUSH2 0x32C5 JUMP JUMPDEST POP ADD PUSH2 0x735C JUMP JUMPDEST SWAP1 PUSH2 0x739F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x73D6 PUSH2 0x2A08 JUMP JUMPDEST POP PUSH2 0x73F1 PUSH0 PUSH2 0x73EB PUSH2 0x73E6 PUSH2 0x3301 JUMP JUMPDEST PUSH2 0x7BA4 JUMP JUMPDEST ADD PUSH2 0x2B8E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x73FE DUP3 PUSH2 0x7BA7 JUMP JUMPDEST DUP2 PUSH2 0x7429 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x3796 JUMP JUMPDEST SWAP1 PUSH2 0x7432 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x743C DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x7448 DUP2 PUSH2 0x420E JUMP JUMPDEST PUSH2 0x745A PUSH2 0x7454 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x746E JUMPI PUSH2 0x746A SWAP2 PUSH2 0x7CB7 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x7478 PUSH2 0x7C1C JUMP JUMPDEST PUSH2 0x746C JUMP JUMPDEST PUSH2 0x7486 SWAP1 PUSH2 0x928 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7493 SWAP1 PUSH2 0x747D JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x74DD SWAP2 MUL SWAP2 PUSH2 0x74D7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x749F JUMP JUMPDEST SWAP3 PUSH2 0x749F JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x74F0 SWAP1 PUSH2 0x1603 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x7509 PUSH2 0x7504 PUSH2 0x7511 SWAP4 PUSH2 0x747D JUMP JUMPDEST PUSH2 0x74E7 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x74A3 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x755B DUP2 PUSH2 0x7545 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x7575 JUMPI PUSH2 0x756D PUSH1 0x1 SWAP2 PUSH2 0x7549 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST PUSH2 0x758C SWAP2 PUSH2 0x7586 PUSH2 0x32C5 JUMP JUMPDEST SWAP2 PUSH2 0x74F3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7597 DUP2 PUSH2 0x7545 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x75B8 JUMPI PUSH1 0x1 SWAP1 SUB SWAP1 PUSH2 0x75B5 PUSH2 0x75AF DUP4 DUP4 PUSH2 0x7552 JUMP JUMPDEST SWAP1 PUSH2 0x757A JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0x7518 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x75D3 PUSH2 0x75CE PUSH2 0x75DB SWAP4 PUSH2 0x5DD0 JUMP JUMPDEST PUSH2 0x5DEC JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x74A3 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x75F1 SWAP2 PUSH2 0x75EB PUSH2 0x1FFA JUMP JUMPDEST SWAP2 PUSH2 0x75BD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x75FB PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x7612 PUSH2 0x760D PUSH1 0x1 DUP4 ADD DUP5 SWAP1 PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x7626 PUSH2 0x7620 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ ISZERO PUSH0 EQ PUSH2 0x76F2 JUMPI PUSH2 0x76A4 SWAP3 PUSH1 0x1 PUSH2 0x769F SWAP3 DUP5 PUSH2 0x764D PUSH0 SWAP7 PUSH2 0x7647 DUP6 PUSH2 0x5E92 JUMP JUMPDEST SWAP1 PUSH2 0x231A JUMP JUMPDEST PUSH2 0x766A PUSH2 0x765B DUP9 DUP6 ADD PUSH2 0x7338 JUMP JUMPDEST PUSH2 0x7664 DUP7 PUSH2 0x5E92 JUMP JUMPDEST SWAP1 PUSH2 0x231A JUMP JUMPDEST DUP1 PUSH2 0x767D PUSH2 0x7677 DUP5 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST SUB PUSH2 0x76A9 JUMPI JUMPDEST POP POP POP PUSH2 0x7699 PUSH2 0x7694 DUP7 DUP4 ADD PUSH2 0x7515 JUMP JUMPDEST PUSH2 0x758E JUMP JUMPDEST ADD PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x75DF JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x76EA SWAP3 PUSH2 0x76DC PUSH2 0x76C8 PUSH2 0x76C2 PUSH2 0x76E5 SWAP5 DUP13 DUP10 ADD PUSH2 0x735C JUMP JUMPDEST SWAP1 PUSH2 0x739F JUMP JUMPDEST SWAP4 PUSH2 0x76D6 DUP6 SWAP2 DUP13 DUP10 ADD PUSH2 0x735C JUMP JUMPDEST SWAP1 PUSH2 0x74F3 JUMP JUMPDEST SWAP2 DUP6 DUP6 ADD PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x5DEF JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x7683 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x7710 SWAP1 PUSH2 0x928 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x7721 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x7707 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7731 PUSH2 0x7736 SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x7384 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7743 SWAP1 SLOAD PUSH2 0x7725 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7769 PUSH2 0x7763 PUSH2 0x775C DUP5 PUSH2 0x7338 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x76FE JUMP JUMPDEST SWAP3 PUSH2 0x7353 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x7779 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x7799 PUSH2 0x7793 PUSH1 0x1 SWAP3 PUSH2 0x778E DUP8 PUSH2 0x7739 JUMP JUMPDEST PUSH2 0x7714 JUMP JUMPDEST SWAP5 PUSH2 0x7746 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x776C JUMP JUMPDEST SWAP1 PUSH2 0x77AD SWAP2 PUSH2 0x774C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x77D0 PUSH2 0x77C9 SWAP3 PUSH2 0x77C0 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x77A3 JUMP JUMPDEST SUB DUP4 PUSH2 0x7F4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x77DB SWAP1 PUSH2 0x77B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x77F2 SWAP2 PUSH2 0x77EB PUSH2 0x76F9 JUMP JUMPDEST POP ADD PUSH2 0x77D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7806 PUSH2 0x7800 PUSH2 0x7CE6 JUMP JUMPDEST ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x780C JUMPI JUMP JUMPDEST PUSH2 0x7814 PUSH2 0x282 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7844 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x785A SWAP2 PUSH2 0x7855 PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x79DE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x7872 JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x787F PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x75DF JUMP JUMPDEST ADD PUSH2 0x7867 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x7895 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x78A1 PUSH2 0x78C6 SWAP4 PUSH2 0x14D3 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x78AD DUP5 PUSH2 0x785C JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x78CE JUMPI JUMPDEST PUSH2 0x78BF SWAP1 PUSH2 0x785C JUMP JUMPDEST ADD SWAP1 PUSH2 0x7866 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x7890 JUMP JUMPDEST SWAP2 POP PUSH2 0x78BF DUP2 SWAP3 SWAP1 POP PUSH2 0x78B6 JUMP JUMPDEST SWAP1 PUSH2 0x78EC SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0xBAB JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x78FB SWAP2 PUSH2 0x78DC JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x790D DUP2 PUSH2 0x29F JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x79CD JUMPI PUSH2 0x7931 DUP3 PUSH2 0x792B DUP6 SLOAD PUSH2 0x14A0 JUMP JUMPDEST DUP6 PUSH2 0x7885 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x7965 JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x7954 SWAP4 PUSH0 SWAP3 PUSH2 0x7959 JUMPI JUMPDEST POP POP PUSH2 0x78F1 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x794D JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x7974 DUP6 PUSH2 0x14D3 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x79B5 JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x799B JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x7957 JUMP JUMPDEST PUSH2 0x79AB SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x78DC JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x798F JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x7977 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0x79DC SWAP2 PUSH2 0x7903 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x7A00 SWAP3 PUSH2 0x79F9 PUSH2 0x79EF PUSH2 0x5D2E JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x79D2 JUMP JUMPDEST SWAP2 ADD PUSH2 0x79D2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x7A0C SWAP2 PUSH2 0x7848 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7A1F SWAP1 PUSH2 0x7A1A PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x7A21 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x7A3C PUSH2 0x7A36 PUSH2 0x7A31 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x7A4C JUMPI PUSH2 0x7A4A SWAP1 PUSH2 0x6D23 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7A8F PUSH2 0x7A58 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x7A60 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x7A9C SWAP1 PUSH2 0x7A0E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7AA6 PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x7AAE PUSH2 0x7AB0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7ACB PUSH2 0x7ABB PUSH2 0x7160 JUMP JUMPDEST PUSH0 PUSH2 0x7AC4 PUSH2 0x5EAE JUMP JUMPDEST SWAP2 ADD PUSH2 0x5DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7AD5 PUSH2 0x7A9E JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x7B07 JUMPI DUP3 PUSH2 0x7AFF SWAP2 PUSH1 0x1 PUSH2 0x7B05 SWAP6 ADD DUP2 SSTORE PUSH2 0x7552 JUMP JUMPDEST SWAP1 PUSH2 0x74F3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x7B14 PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x7B29 PUSH2 0x7B23 DUP3 DUP5 SWAP1 PUSH2 0x7B6F JUMP JUMPDEST ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH0 EQ PUSH2 0x7B69 JUMPI PUSH2 0x7B5F PUSH2 0x7B64 SWAP3 PUSH2 0x7B4B PUSH2 0x7B44 PUSH0 DUP6 ADD PUSH2 0x7515 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x7AD7 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x7B58 PUSH0 DUP6 ADD PUSH2 0x7338 JUMP JUMPDEST SWAP4 ADD PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x5DEF JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x7B8D SWAP2 PUSH1 0x1 PUSH2 0x7B88 SWAP3 PUSH2 0x7B81 PUSH2 0x15C2 JUMP JUMPDEST POP ADD PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x7B9F PUSH2 0x7B99 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x7BBB PUSH2 0x7BB5 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ PUSH2 0x7BDD JUMPI PUSH2 0x7BDB SWAP1 PUSH0 PUSH2 0x7BD5 PUSH2 0x7BD0 PUSH2 0x3301 JUMP JUMPDEST PUSH2 0x7BA4 JUMP JUMPDEST ADD PUSH2 0x3E11 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7C18 SWAP1 PUSH2 0x7BE9 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x7C2F PUSH2 0x7C29 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x7C36 JUMPI JUMP JUMPDEST PUSH2 0x7C3E PUSH2 0x282 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7C6E PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7C89 PUSH2 0x7C84 DUP4 PUSH2 0x832 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x7CA9 JUMPI PUSH2 0x7C9E RETURNDATASIZE PUSH2 0x7C77 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x7CB1 PUSH2 0x7C72 JUMP JUMPDEST SWAP1 PUSH2 0x7CA7 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x7CE3 SWAP4 PUSH2 0x7CC5 PUSH2 0x7C72 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x7CDA PUSH2 0x7C8E JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x7D04 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7CEE PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x7D01 PUSH0 PUSH2 0x7CFB PUSH2 0x6EB7 JUMP JUMPDEST ADD PUSH2 0x3861 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7D18 SWAP1 PUSH2 0x7D11 PUSH2 0x7C72 JUMP JUMPDEST POP ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH0 EQ PUSH2 0x7D24 JUMPI POP PUSH2 0x7DA8 JUMP JUMPDEST PUSH2 0x7D2D DUP3 PUSH2 0x420E JUMP JUMPDEST PUSH2 0x7D3F PUSH2 0x7D39 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ DUP1 PUSH2 0x7D8D JUMPI JUMPDEST PUSH2 0x7D4E JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x7D89 SWAP1 PUSH2 0x7D5A PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x7DA2 PUSH2 0x7D9C PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ PUSH2 0x7D46 JUMP JUMPDEST PUSH2 0x7DB1 DUP2 PUSH2 0x420E JUMP JUMPDEST PUSH2 0x7DC3 PUSH2 0x7DBD PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x7DD2 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x7DDA PUSH2 0x282 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7E0A PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 MSIZE 0xA6 MOD TSTORE 0xD8 0xB4 0xEE BYTE 0xCA PUSH28 0xE41A399BA6E883A08CB1C66C7F6775A544FD0C8AC364736F6C634300 ADDMOD NOT STOP CALLER ","sourceMap":"2383:22992:60:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":656,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":892,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":5683,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":4209,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":1407,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_bytes":{"entryPoint":2233,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint256":{"entryPoint":945,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":3299,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn":{"entryPoint":4817,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dyn_calldata":{"entryPoint":2442,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn_calldatat_array_uint256_dyn_calldatat_addresst_addresst_uint256t_address":{"entryPoint":2568,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_array_struct_Call_dyn":{"entryPoint":4666,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_struct_Call_dynt_array_address_dyn":{"entryPoint":4852,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn_calldata":{"entryPoint":2505,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_array_address_dyn":{"entryPoint":4730,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_array_struct_Call_dyn":{"entryPoint":4554,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":2144,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":6080,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":2198,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":27229,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_fromMemory":{"entryPoint":13264,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_struct_Call":{"entryPoint":4449,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":6065,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":27214,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":5744,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":1519,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":5698,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint256":{"entryPoint":1083,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":9424,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":930,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":5759,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_address":{"entryPoint":1689,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint256t_uint256t_uint256t_uint256":{"entryPoint":5099,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_uint64":{"entryPoint":3284,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":9409,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_address":{"entryPoint":3535,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_array_bytes32_dyn_storage":{"entryPoint":30627,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_bytes32":{"entryPoint":30484,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_string_storage":{"entryPoint":5480,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_Call":{"entryPoint":17036,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_uint256":{"entryPoint":13311,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":1549,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address":{"entryPoint":6160,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_address_uint256_address":{"entryPoint":11547,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_address_rational_by":{"entryPoint":17383,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":6110,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_address":{"entryPoint":11485,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_to_address":{"entryPoint":3522,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_uint256":{"entryPoint":6732,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_uint256_uint256":{"entryPoint":26437,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_address_dyn":{"entryPoint":3558,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_calldata":{"entryPoint":13441,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_address_dyn_memory_ptr":{"entryPoint":3638,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_bytes32_dyn_storage":{"entryPoint":30540,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_Call_dyn":{"entryPoint":17055,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_Call_dyn_array_address_dyn":{"entryPoint":17158,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":13334,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_array_address_dyn_calldata_array_uint256_dyn_calldata_uint256_address_address_address":{"entryPoint":13611,"id":null,"parameterSlots":10,"returnSlots":1},"abi_encode_array_uint256_dyn_calldata":{"entryPoint":13533,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_bool":{"entryPoint":1008,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":995,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes":{"entryPoint":16923,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32":{"entryPoint":30471,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32_to_bytes32":{"entryPoint":2347,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":3124,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":15303,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint24":{"entryPoint":17370,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by_to_uint24_fromStack":{"entryPoint":17276,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by_to_uint64":{"entryPoint":15290,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":754,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":705,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":5340,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":24356,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_05dd":{"entryPoint":8361,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_0751":{"entryPoint":25817,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b":{"entryPoint":25791,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_19ae":{"entryPoint":8583,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_19ae815948d188a4017d21662744b2e39ca52dd9e0c04ca7540cb50ca889bf62":{"entryPoint":8557,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1ddc":{"entryPoint":6329,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1ddcc9d8f2a6704234c103a6ef7b2e41a8659f7661115b0460a24c8abe542fd0":{"entryPoint":6303,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_277b":{"entryPoint":20871,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_277b788f6bc7cefc93f8369ac2f11d44c3d87b9ef59c2dd3a42e3f629340b86f":{"entryPoint":20845,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_2d5d":{"entryPoint":8869,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_3802":{"entryPoint":8713,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_3bfb":{"entryPoint":11663,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_40ed":{"entryPoint":20689,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_69c3":{"entryPoint":21339,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_69c3c275e229957bd624940053bb5e224e915c9b003c39a1899996718abe87b0":{"entryPoint":21313,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_727f":{"entryPoint":6615,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_87d7":{"entryPoint":9547,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_87d7498470f76c7b536e2b3ec9816474a9844e531fdac32c215159c083e5c40c":{"entryPoint":9521,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bad2":{"entryPoint":6485,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bad2ba4e17745a4d4fd221dac6ffa18dd2cdb7d74e252bb930552ebc273a413c":{"entryPoint":6459,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c069":{"entryPoint":16456,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c263":{"entryPoint":21157,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_d34d":{"entryPoint":9106,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743":{"entryPoint":9080,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_e16f":{"entryPoint":9236,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ebe7":{"entryPoint":25975,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f8a5":{"entryPoint":21027,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f8a54059e31ba8035a6fc0cc512134c3fd2ca3508fc8500195d25c2966df732b":{"entryPoint":21001,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_struct_Call":{"entryPoint":16972,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple":{"entryPoint":1113,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":1562,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_address_address_rational_by":{"entryPoint":17289,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_bytes32":{"entryPoint":2360,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":3137,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":8739,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_05dd":{"entryPoint":8387,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_2951":{"entryPoint":24382,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_2d5d":{"entryPoint":8895,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_3bfb":{"entryPoint":11688,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_40ed":{"entryPoint":20715,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_727f":{"entryPoint":6641,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_c069":{"entryPoint":16482,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_c263":{"entryPoint":21183,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_e16f":{"entryPoint":9262,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_ebe7":{"entryPoint":26001,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":1195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":1282,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":13298,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_to_uint256_fromStack":{"entryPoint":1269,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint64":{"entryPoint":1182,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint8":{"entryPoint":1858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint8_to_uint8":{"entryPoint":1845,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_bool_dyn":{"entryPoint":16630,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":13189,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":2077,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_bool_dyn":{"entryPoint":16602,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_uint256_dyn":{"entryPoint":13161,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":31863,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":3803,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":642,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":4701,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_bool_dyn":{"entryPoint":16573,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_struct_Call_dyn":{"entryPoint":4412,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":13132,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":2098,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":3768,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn":{"entryPoint":3516,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn_calldata":{"entryPoint":13414,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_bytes32_dyn_storage":{"entryPoint":29523,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_bytes32_dyn_storage_ptr":{"entryPoint":30025,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_struct_Call_dyn":{"entryPoint":16904,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_uint256_dyn":{"entryPoint":13292,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":5331,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":3503,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_bool_dyn":{"entryPoint":16759,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_bytes32_dyn_storage":{"entryPoint":29496,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_bytes32_dyn_storage_ptr":{"entryPoint":30021,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_struct_Call_dyn":{"entryPoint":16891,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_uint256_dyn":{"entryPoint":13279,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":16910,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":671,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn":{"entryPoint":3552,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn_calldata":{"entryPoint":13435,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_bytes32_dyn_storage":{"entryPoint":30534,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_struct_Call_dyn":{"entryPoint":17049,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_uint256_dyn":{"entryPoint":13328,"id":null,"parameterSlots":1,"returnSlots":1},"array_pop_array_bytes32_dyn_storage_ptr":{"entryPoint":30094,"id":null,"parameterSlots":1,"returnSlots":0},"array_push_from_bytes32_to_array_bytes32_dyn_storage_ptr":{"entryPoint":31447,"id":null,"parameterSlots":2,"returnSlots":0},"array_storeLengthForEncoding_array_address_dyn":{"entryPoint":3507,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_bytes32_dyn":{"entryPoint":30462,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_struct_Call_dyn":{"entryPoint":16895,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_uint256_dyn":{"entryPoint":13283,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_bytes":{"entryPoint":16914,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":5322,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string_fromStack":{"entryPoint":675,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_access_address":{"entryPoint":13417,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":24280,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":5932,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint256":{"entryPoint":26092,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":5834,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":8986,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":30853,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_address":{"entryPoint":860,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":990,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":2344,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":4027,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":14407,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bytes32":{"entryPoint":29572,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":2991,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":8190,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":14446,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_0_by":{"entryPoint":6195,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1000000000000_by":{"entryPoint":6014,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by":{"entryPoint":13021,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_2_by":{"entryPoint":23919,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_3000_by":{"entryPoint":17237,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":12717,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":17339,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":15855,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":15247,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":835,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint24":{"entryPoint":17240,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":907,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":1169,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":1839,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":30822,"id":null,"parameterSlots":2,"returnSlots":0},"constant_ENTERED":{"entryPoint":23950,"id":null,"parameterSlots":0,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":13057,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NOT_ENTERED":{"entryPoint":24238,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":3901,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":14230,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Agent":{"entryPoint":16867,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1AgentFactory":{"entryPoint":10776,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Oracle":{"entryPoint":11106,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Rebalancer":{"entryPoint":13240,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":14916,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Swapper":{"entryPoint":11461,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":27170,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":5978,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":9365,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IUniswapV3Factory":{"entryPoint":17213,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_uint160":{"entryPoint":27813,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_bytes32_dyn_storage_to_array_bytes32_dyn":{"entryPoint":30674,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_bytes32_dyn_storage_to_array_bytes32_dyn_ptr":{"entryPoint":29973,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_string_storage_to_string":{"entryPoint":5527,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":14620,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bytes32_to_bytes32":{"entryPoint":29821,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bytes32_to_uint256":{"entryPoint":25648,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1Router_to_address":{"entryPoint":6002,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1AgentFactory_to_address":{"entryPoint":10788,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Agent_to_address":{"entryPoint":16879,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Oracle_to_address":{"entryPoint":11118,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Rebalancer_to_address":{"entryPoint":13252,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":3112,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":14969,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_address":{"entryPoint":11473,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":27182,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":9377,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":5990,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IUniswapV3Factory_to_address":{"entryPoint":17225,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":15278,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":26925,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":6198,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_18_by_1_to_uint256":{"entryPoint":25908,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1_by_1_to_uint256":{"entryPoint":24210,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":23922,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":8506,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":13029,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":8478,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint24":{"entryPoint":17342,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":15858,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":15250,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint8":{"entryPoint":12720,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":3890,"id":null,"parameterSlots":0,"returnSlots":1},"convert_stringliteral_7dbb_to_string":{"entryPoint":15844,"id":null,"parameterSlots":0,"returnSlots":1},"convert_stringliteral_d434_to_string":{"entryPoint":15769,"id":null,"parameterSlots":0,"returnSlots":1},"convert_struct_AddressSet_storage_to_struct_AddressSet_ptr":{"entryPoint":9038,"id":null,"parameterSlots":1,"returnSlots":1},"convert_struct_Set_storage_to_struct_Set_ptr":{"entryPoint":25614,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint24":{"entryPoint":17248,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":6017,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":15219,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":3100,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Agent":{"entryPoint":16855,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1AgentFactory":{"entryPoint":10764,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Oracle":{"entryPoint":11094,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Rebalancer":{"entryPoint":13228,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":14904,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Swapper":{"entryPoint":11449,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":27158,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":5966,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":9353,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IUniswapV3Factory":{"entryPoint":17201,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":3072,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint256":{"entryPoint":27825,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_bytes32":{"entryPoint":27853,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint160":{"entryPoint":25668,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":24016,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":14521,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint8_to_uint256":{"entryPoint":9454,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_array_bytes32_dyn":{"entryPoint":30640,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_string":{"entryPoint":5493,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_string_to_string":{"entryPoint":30979,"id":null,"parameterSlots":2,"returnSlots":0},"copy_calldata_to_memory":{"entryPoint":13529,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":2133,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":3865,"id":null,"parameterSlots":0,"returnSlots":1},"copy_literal_to_memory_7dbbcf8e986894bb951b03a039da22e5dd38b473b6e36e83d09344a88817b0fb":{"entryPoint":15819,"id":null,"parameterSlots":0,"returnSlots":1},"copy_literal_to_memory_d434daf865c4172431fe963e09dfffee59bf02a039f2a16ac1512baa0b52f5ad":{"entryPoint":15744,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":684,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_ceil":{"entryPoint":30812,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":3923,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_addToken":{"entryPoint":4158,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allowance":{"entryPoint":4254,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":1029,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":2830,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baseAsset":{"entryPoint":4105,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_burnERC20":{"entryPoint":1356,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_burnUSDC":{"entryPoint":5048,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_calculateTokenShare":{"entryPoint":5169,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_callRebalance":{"entryPoint":2718,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_decimals":{"entryPoint":1879,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_execute":{"entryPoint":4945,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAgentAddress":{"entryPoint":1583,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getTokens":{"entryPoint":3662,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getUSDCShareValue":{"entryPoint":2934,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVersion":{"entryPoint":1216,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":3976,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_liquidate":{"entryPoint":1788,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_liquidateAll":{"entryPoint":1932,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintWithUSDC":{"entryPoint":1118,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_name":{"entryPoint":778,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":3211,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":2381,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":3158,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":3344,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_removeToken":{"entryPoint":2779,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":2883,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_requiredUSDCtoMint":{"entryPoint":3715,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_resetContract":{"entryPoint":4308,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_symbol":{"entryPoint":3396,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_tokenValuation":{"entryPoint":1734,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":1303,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalValuation":{"entryPoint":1636,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transfer":{"entryPoint":3449,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":1465,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":4997,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unitPrice":{"entryPoint":4359,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":2302,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":5280,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_dynamict_address":{"entryPoint":4052,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_bytes32":{"entryPoint":29575,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":3016,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":11130,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":14413,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bytes32":{"entryPoint":30501,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":5640,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":8193,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":14459,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":31886,"id":null,"parameterSlots":0,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":30961,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":2036,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init":{"entryPoint":28451,"id":698,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_inner":{"entryPoint":28439,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained":{"entryPoint":31234,"id":726,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained_inner":{"entryPoint":31198,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":28493,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":28482,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":31379,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":31265,"id":null,"parameterSlots":1,"returnSlots":0},"fun_ReentrancyGuard_init":{"entryPoint":28532,"id":1509,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_inner":{"entryPoint":28522,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained":{"entryPoint":31437,"id":1527,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained_inner":{"entryPoint":31408,"id":null,"parameterSlots":0,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":28552,"id":502,"parameterSlots":0,"returnSlots":0},"fun__add":{"entryPoint":31500,"id":6059,"parameterSlots":2,"returnSlots":1},"fun__approve":{"entryPoint":23903,"id":1130,"parameterSlots":3,"returnSlots":0},"fun__at":{"entryPoint":29613,"id":6193,"parameterSlots":2,"returnSlots":1},"fun__length":{"entryPoint":29500,"id":6176,"parameterSlots":1,"returnSlots":1},"fun__transfer":{"entryPoint":26704,"id":954,"parameterSlots":3,"returnSlots":0},"fun__transferOwnership":{"entryPoint":27939,"id":193,"parameterSlots":1,"returnSlots":0},"fun__values":{"entryPoint":30686,"id":6207,"parameterSlots":1,"returnSlots":1},"fun_add":{"entryPoint":28562,"id":6345,"parameterSlots":2,"returnSlots":1},"fun_addToken":{"entryPoint":16219,"id":14122,"parameterSlots":1,"returnSlots":0},"fun_addToken_inner":{"entryPoint":16198,"id":null,"parameterSlots":1,"returnSlots":0},"fun_allowance":{"entryPoint":16252,"id":851,"parameterSlots":2,"returnSlots":1},"fun_approve":{"entryPoint":5574,"id":875,"parameterSlots":2,"returnSlots":1},"fun_approve_1198":{"entryPoint":28678,"id":1198,"parameterSlots":4,"returnSlots":0},"fun_at":{"entryPoint":25696,"id":6441,"parameterSlots":2,"returnSlots":1},"fun_authorizeUpgrade":{"entryPoint":27147,"id":12521,"parameterSlots":1,"returnSlots":0},"fun_balanceOf":{"entryPoint":14264,"id":803,"parameterSlots":1,"returnSlots":1},"fun_burn":{"entryPoint":26310,"id":1112,"parameterSlots":2,"returnSlots":0},"fun_burnERC20":{"entryPoint":10702,"id":13170,"parameterSlots":1,"returnSlots":0},"fun_burnERC20_inner":{"entryPoint":9638,"id":null,"parameterSlots":1,"returnSlots":0},"fun_burnUSDC":{"entryPoint":23815,"id":13466,"parameterSlots":1,"returnSlots":0},"fun_burnUSDC_inner":{"entryPoint":21430,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateBaluniToUSDC":{"entryPoint":28047,"id":13875,"parameterSlots":1,"returnSlots":1},"fun_calculateERC20Share":{"entryPoint":26120,"id":13957,"parameterSlots":4,"returnSlots":1},"fun_calculateNetAmountAfterFee":{"entryPoint":25309,"id":14084,"parameterSlots":1,"returnSlots":1},"fun_calculateTokenShare":{"entryPoint":23826,"id":13748,"parameterSlots":4,"returnSlots":1},"fun_callRebalance":{"entryPoint":13734,"id":13694,"parameterSlots":8,"returnSlots":0},"fun_checkInitializing":{"entryPoint":30709,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":31772,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":27577,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":27703,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":26937,"id":562,"parameterSlots":0,"returnSlots":0},"fun_contains":{"entryPoint":31599,"id":6162,"parameterSlots":2,"returnSlots":1},"fun_contains_6399":{"entryPoint":28620,"id":6399,"parameterSlots":2,"returnSlots":1},"fun_decimals":{"entryPoint":12748,"id":767,"parameterSlots":0,"returnSlots":1},"fun_execute":{"entryPoint":20467,"id":12862,"parameterSlots":2,"returnSlots":0},"fun_execute_inner":{"entryPoint":17459,"id":null,"parameterSlots":2,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":31927,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":31652,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getAgentAddress":{"entryPoint":10800,"id":13488,"parameterSlots":1,"returnSlots":1},"fun_getERC20Storage":{"entryPoint":23854,"id":682,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":29646,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":28343,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getInitializedVersion":{"entryPoint":25279,"id":427,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":28307,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getReentrancyGuardStorage":{"entryPoint":29024,"id":1497,"parameterSlots":0,"returnSlots":1},"fun_getTokens":{"entryPoint":15121,"id":14106,"parameterSlots":0,"returnSlots":1},"fun_getUSDCShareValue":{"entryPoint":14350,"id":13797,"parameterSlots":1,"returnSlots":1},"fun_getVersion":{"entryPoint":8166,"id":14094,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":16168,"id":12480,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":15921,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":31974,"id":438,"parameterSlots":0,"returnSlots":1},"fun_length":{"entryPoint":25617,"id":6414,"parameterSlots":1,"returnSlots":1},"fun_liquidate":{"entryPoint":11779,"id":12956,"parameterSlots":1,"returnSlots":0},"fun_liquidateAll":{"entryPoint":12934,"id":12997,"parameterSlots":0,"returnSlots":0},"fun_liquidateAll_inner":{"entryPoint":12796,"id":null,"parameterSlots":0,"returnSlots":0},"fun_mint":{"entryPoint":25153,"id":1079,"parameterSlots":2,"returnSlots":0},"fun_mintWithUSDC":{"entryPoint":8151,"id":13639,"parameterSlots":1,"returnSlots":0},"fun_mintWithUSDC_inner":{"entryPoint":6767,"id":null,"parameterSlots":1,"returnSlots":0},"fun_msgSender":{"entryPoint":23890,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_name":{"entryPoint":5539,"id":742,"parameterSlots":0,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":24251,"id":1579,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":24079,"id":1563,"parameterSlots":0,"returnSlots":0},"fun_owner":{"entryPoint":14371,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":13113,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":13101,"id":null,"parameterSlots":1,"returnSlots":1},"fun_reinitialize":{"entryPoint":15039,"id":12497,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":15016,"id":null,"parameterSlots":2,"returnSlots":0},"fun_remove":{"entryPoint":30195,"id":6143,"parameterSlots":2,"returnSlots":1},"fun_removeToken":{"entryPoint":14219,"id":14138,"parameterSlots":1,"returnSlots":0},"fun_removeToken_inner":{"entryPoint":14198,"id":null,"parameterSlots":1,"returnSlots":0},"fun_remove_6372":{"entryPoint":27881,"id":6372,"parameterSlots":2,"returnSlots":1},"fun_renounceOwnership":{"entryPoint":14340,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":14321,"id":null,"parameterSlots":0,"returnSlots":0},"fun_requiredUSDCtoMint":{"entryPoint":15150,"id":13726,"parameterSlots":1,"returnSlots":1},"fun_resetContract":{"entryPoint":16341,"id":12511,"parameterSlots":1,"returnSlots":0},"fun_resetContract_inner":{"entryPoint":16320,"id":null,"parameterSlots":1,"returnSlots":0},"fun_revert":{"entryPoint":32168,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":31655,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_spendAllowance":{"entryPoint":26501,"id":1246,"parameterSlots":3,"returnSlots":0},"fun_symbol":{"entryPoint":15051,"id":758,"parameterSlots":0,"returnSlots":1},"fun_tokenValuation":{"entryPoint":11163,"id":13774,"parameterSlots":2,"returnSlots":1},"fun_totalSupply":{"entryPoint":8226,"id":783,"parameterSlots":0,"returnSlots":1},"fun_totalValuation":{"entryPoint":11074,"id":13784,"parameterSlots":0,"returnSlots":1},"fun_totalValuationScaled":{"entryPoint":24473,"id":14048,"parameterSlots":0,"returnSlots":1},"fun_transfer":{"entryPoint":15082,"id":827,"parameterSlots":2,"returnSlots":1},"fun_transferFrom":{"entryPoint":10713,"id":907,"parameterSlots":3,"returnSlots":1},"fun_transferOwnership":{"entryPoint":20612,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":20498,"id":null,"parameterSlots":1,"returnSlots":0},"fun_unitPrice":{"entryPoint":16352,"id":12532,"parameterSlots":0,"returnSlots":1},"fun_update":{"entryPoint":29074,"id":1046,"parameterSlots":3,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":29684,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":27259,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":12985,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":12964,"id":null,"parameterSlots":2,"returnSlots":0},"fun_values":{"entryPoint":28379,"id":6471,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":32004,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":3912,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_baseAsset":{"entryPoint":4090,"id":12406,"parameterSlots":0,"returnSlots":1},"getter_fun_registry":{"entryPoint":3054,"id":12400,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":3069,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":9023,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":16230,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":14242,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_bytes32_uint256_of_bytes32":{"entryPoint":29833,"id":null,"parameterSlots":2,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":30940,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":16714,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_bool_dyn":{"entryPoint":16763,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":16809,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":15324,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_nonReentrant":{"entryPoint":5608,"id":1538,"parameterSlots":1,"returnSlots":0},"modifier_nonReentrant_12543":{"entryPoint":16389,"id":1538,"parameterSlots":2,"returnSlots":0},"modifier_nonReentrant_12960":{"entryPoint":12770,"id":1538,"parameterSlots":0,"returnSlots":0},"modifier_nonReentrant_13003":{"entryPoint":8257,"id":1538,"parameterSlots":1,"returnSlots":0},"modifier_nonReentrant_13176":{"entryPoint":20623,"id":1538,"parameterSlots":1,"returnSlots":0},"modifier_notDelegated":{"entryPoint":13001,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":31246,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_1503":{"entryPoint":28504,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1512":{"entryPoint":31390,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":28463,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":28542,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_690":{"entryPoint":28419,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyInitializing_705":{"entryPoint":30792,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":27136,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_12502":{"entryPoint":16301,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":14303,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_14112":{"entryPoint":16179,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_14128":{"entryPoint":14179,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":20479,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":12944,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":14667,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":5789,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5887,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":5235,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":29976,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":16669,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1991,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":15886,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":14632,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bytes32":{"entryPoint":29927,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":14981,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":24044,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":14549,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":16746,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_bool":{"entryPoint":17433,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_uint256":{"entryPoint":17446,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_offset_bytes32":{"entryPoint":30521,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":4076,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_bytes32":{"entryPoint":29599,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":3040,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":11150,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":14433,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":5660,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":8213,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":14479,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":25841,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_05dd":{"entryPoint":8411,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_19ae":{"entryPoint":8607,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_1ddc":{"entryPoint":6353,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_277b":{"entryPoint":20895,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_2951":{"entryPoint":24406,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_2d5d":{"entryPoint":8919,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_3802":{"entryPoint":8763,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_3bfb":{"entryPoint":11712,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_40ed":{"entryPoint":20739,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_69c3":{"entryPoint":21363,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_727f":{"entryPoint":6665,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_87d7":{"entryPoint":9571,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_bad2":{"entryPoint":6509,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_c069":{"entryPoint":16506,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_c263":{"entryPoint":21207,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_d34d":{"entryPoint":9130,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_e16f":{"entryPoint":9286,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ebe7":{"entryPoint":26025,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_f8a5":{"entryPoint":21051,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_0cc013b6b3b6beabea4e3a74a6d380f0df81852ca99887912475e1f66b2a2c20":{"entryPoint":5673,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":2434,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":1983,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":4441,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":5226,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":4445,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2438,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":1987,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":831,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":648,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec":{"entryPoint":13525,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":652,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":5728,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":695,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":13024,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":5677,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":14584,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":29855,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":5635,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":14401,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":636,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":2987,"id":null,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_bytes32_dyn":{"entryPoint":29532,"id":null,"parameterSlots":2,"returnSlots":2},"storage_array_index_access_bytes32_dyn_ptr":{"entryPoint":30034,"id":null,"parameterSlots":2,"returnSlots":2},"storage_set_to_zero_bytes32":{"entryPoint":30074,"id":null,"parameterSlots":2,"returnSlots":0},"storage_set_to_zero_uint256":{"entryPoint":30175,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_05dde7ba458fa57c690848c203ec960214f35b18f13e857028bd34ad518b5575":{"entryPoint":8284,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_075182a57f83974087c76763cd3bc4eedd97b16a8f6ac226f0c2ef23a69b575b":{"entryPoint":25752,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_19ae815948d188a4017d21662744b2e39ca52dd9e0c04ca7540cb50ca889bf62":{"entryPoint":8518,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_1ddcc9d8f2a6704234c103a6ef7b2e41a8659f7661115b0460a24c8abe542fd0":{"entryPoint":6226,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_277b788f6bc7cefc93f8369ac2f11d44c3d87b9ef59c2dd3a42e3f629340b86f":{"entryPoint":20806,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_295121eae2e38ce539c65fbd804cefee3e5836ff4e56c455d35a6afed6773125":{"entryPoint":24317,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":3826,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2d5dedc64e58ec2dfd9d57a4a8363c0fd7692430e9d02e08dba505855fefef17":{"entryPoint":8830,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3802b739a1b061f89edd5fd7a12d8792298aa749cedf62bac9eac44415882c7f":{"entryPoint":8674,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3bfb1910864572988af91047c2a74bf6c8bc662651e6ced4da8e59a423cae87d":{"entryPoint":11624,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_40edaaaeefde7a606ab22e3c37f33984fb3b1e0058b05ccc31b572de63cd1497":{"entryPoint":20650,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_69c3c275e229957bd624940053bb5e224e915c9b003c39a1899996718abe87b0":{"entryPoint":21274,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_727fc1e09070e074c1e4faeaff9f905dd58d37cba7b8f174a2a35f24c4fc6650":{"entryPoint":6576,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7dbbcf8e986894bb951b03a039da22e5dd38b473b6e36e83d09344a88817b0fb":{"entryPoint":15780,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_87d7498470f76c7b536e2b3ec9816474a9844e531fdac32c215159c083e5c40c":{"entryPoint":9482,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_bad2ba4e17745a4d4fd221dac6ffa18dd2cdb7d74e252bb930552ebc273a413c":{"entryPoint":6420,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c0699f179d2a1b62cb97d8e7fffb6f849ca18ed4e697b2f010f29e743716b888":{"entryPoint":16417,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c26370c748e399efe4c5a302d20f1fe22da5300fc60bdab39924790733506945":{"entryPoint":21118,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743":{"entryPoint":9041,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d434daf865c4172431fe963e09dfffee59bf02a039f2a16ac1512baa0b52f5ad":{"entryPoint":15705,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_e16f85873456a830f1ff99f4c2c493d8a3c64696cfa808146bb8fc6bce2e7570":{"entryPoint":9197,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ebe7cb95a2dc7ec969883b54c3194e315832305fa1026cbcfb27ede2b2283804":{"entryPoint":25936,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f8a54059e31ba8035a6fc0cc512134c3fd2ca3508fc8500195d25c2966df732b":{"entryPoint":20962,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":14492,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_dynamic32":{"entryPoint":29859,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":23963,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":14928,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":14590,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_bytes32_to_bytes32":{"entryPoint":29939,"id":null,"parameterSlots":3,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":15889,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":14635,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":14984,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_string_to_string":{"entryPoint":31186,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":24047,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":14552,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_uint256_to_uint256":{"entryPoint":30141,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":872,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":6045,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":27194,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":910,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":3264,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":9389,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_add_uint256":{"entryPoint":29060,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_sub_uint256":{"entryPoint":26487,"id":null,"parameterSlots":2,"returnSlots":1},"write_to_memory_bool":{"entryPoint":16795,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint256":{"entryPoint":16841,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_bool":{"entryPoint":16625,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_uint256":{"entryPoint":13184,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":10760,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_address_dyn":{"entryPoint":15116,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_bytes32_dyn":{"entryPoint":30457,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":5570,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":31858,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":12997,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_string":{"entryPoint":5230,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":8186,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint64":{"entryPoint":8162,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint8":{"entryPoint":12713,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":26954},{"length":32,"start":27087},{"length":32,"start":27594}]},"linkReferences":{},"object":"60806040526004361015610013575b61146a565b61001d5f3561027c565b806306fdde0314610277578063095ea7b3146102725780630cfc73861461026d5780630d8e6e2c1461026857806318160ddd146102635780631a168da21461025e57806323b872dd1461025957806327d54a9214610254578063295b93001461024f5780632bdd955a1461024a5780632f86556814610245578063313ce567146102405780633c2066a91461023b5780634f1ef2861461023657806352d1902d14610231578063599f69f71461022c5780635fa7b5841461022757806370a0823114610222578063715018a61461021d57806371ddcfb8146102185780637b103999146102135780638da5cb5b1461020e5780638f2248bc1461020957806395d89b4114610204578063a9059cbb146101ff578063aa6ca808146101fa578063aa95d893146101f5578063ad3cb1cc146101f0578063c4d66de8146101eb578063cdf456e1146101e6578063d48bfca7146101e1578063dd62ed3e146101dc578063e67ad759146101d7578063e73faa2d146101d2578063eedc3c50146101cd578063f2fde38b146101c8578063fe0a4dd1146101c35763fe330a510361000e57611431565b6113b8565b611385565b611351565b611107565b6110d4565b61109e565b61103e565b611009565b610f88565b610f53565b610e83565b610e4e565b610d79565b610d44565b610d10565b610c8b565b610c56565b610b76565b610b43565b610b0e565b610adb565b610a9e565b61094d565b6108fe565b61078c565b610757565b6106fc565b6106c6565b610664565b61062f565b6105b9565b61054c565b610517565b6104c0565b61045e565b610405565b61030a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261029a57565b61028c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6102e06102e96020936102ee936102d78161029f565b938480936102a3565b958691016102ac565b6102b7565b0190565b6103079160208201915f8184039101526102c1565b90565b3461033a5761031a366004610290565b6103366103256115a3565b61032d610282565b918291826102f2565b0390f35b610288565b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61036590610343565b90565b6103718161035c565b0361037857565b5f80fd5b9050359061038982610368565b565b90565b6103978161038b565b0361039e57565b5f80fd5b905035906103af8261038e565b565b91906040838203126103d957806103cd6103d6925f860161037c565b936020016103a2565b90565b61028c565b151590565b6103ec906103de565b9052565b9190610403905f602085019401906103e3565b565b346104365761043261042161041b3660046103b1565b906115c6565b610429610282565b918291826103f0565b0390f35b610288565b9060208282031261045457610451915f016103a2565b90565b61028c565b5f0190565b3461048c5761047661047136600461043b565b611fd7565b61047e610282565b8061048881610459565b0390f35b610288565b67ffffffffffffffff1690565b6104a790610491565b9052565b91906104be905f6020850194019061049e565b565b346104f0576104d0366004610290565b6104ec6104db611fe6565b6104e3610282565b918291826104ab565b0390f35b610288565b6104fe9061038b565b9052565b9190610515905f602085019401906104f5565b565b3461054757610527366004610290565b610543610532612022565b61053a610282565b91829182610502565b0390f35b610288565b3461057a5761056461055f36600461043b565b6129ce565b61056c610282565b8061057681610459565b0390f35b610288565b90916060828403126105b4576105b161059a845f850161037c565b936105a8816020860161037c565b936040016103a2565b90565b61028c565b346105ea576105e66105d56105cf36600461057f565b916129d9565b6105dd610282565b918291826103f0565b0390f35b610288565b9060208282031261060857610605915f0161037c565b90565b61028c565b6106169061035c565b9052565b919061062d905f6020850194019061060d565b565b3461065f5761065b61064a6106453660046105ef565b612a30565b610652610282565b9182918261061a565b0390f35b610288565b3461069457610674366004610290565b61069061067f612b42565b610687610282565b91829182610502565b0390f35b610288565b91906040838203126106c157806106b56106be925f86016103a2565b9360200161037c565b90565b61028c565b346106f7576106f36106e26106dc366004610699565b90612b9b565b6106ea610282565b91829182610502565b0390f35b610288565b3461072a5761071461070f3660046105ef565b612e03565b61071c610282565b8061072681610459565b0390f35b610288565b60ff1690565b61073e9061072f565b9052565b9190610755905f60208501940190610735565b565b3461078757610767366004610290565b6107836107726131cc565b61077a610282565b91829182610742565b0390f35b610288565b346107ba5761079c366004610290565b6107a4613286565b6107ac610282565b806107b681610459565b0390f35b610288565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906107fe906102b7565b810190811067ffffffffffffffff82111761081857604052565b6107c7565b90610830610829610282565b92836107f4565b565b67ffffffffffffffff81116108505761084c6020916102b7565b0190565b6107c7565b90825f939282370152565b9092919261087561087082610832565b61081d565b938185526020850190828401116108915761088f92610855565b565b6107c3565b9080601f830112156108b4578160206108b193359101610860565b90565b6107bf565b9190916040818403126108f9576108d2835f830161037c565b92602082013567ffffffffffffffff81116108f4576108f19201610896565b90565b61033f565b61028c565b61091261090c3660046108b9565b906132b9565b61091a610282565b8061092481610459565b0390f35b90565b61093490610928565b9052565b919061094b905f6020850194019061092b565b565b3461097d5761095d366004610290565b610979610968613339565b610970610282565b91829182610938565b0390f35b610288565b5f80fd5b5f80fd5b909182601f830112156109c45781359167ffffffffffffffff83116109bf5760200192602083028401116109ba57565b610986565b610982565b6107bf565b909182601f83011215610a035781359167ffffffffffffffff83116109fe5760200192602083028401116109f957565b610986565b610982565b6107bf565b60c081830312610a99575f81013567ffffffffffffffff8111610a945782610a3191830161098a565b929093602083013567ffffffffffffffff8111610a8f5782610a549185016109c9565b929093610a64826040830161037c565b92610a8c610a75846060850161037c565b93610a8381608086016103a2565b9360a00161037c565b90565b61033f565b61033f565b61028c565b34610ad657610ac0610ab1366004610a08565b969590959491949392936135a6565b610ac8610282565b80610ad281610459565b0390f35b610288565b34610b0957610af3610aee3660046105ef565b61378b565b610afb610282565b80610b0581610459565b0390f35b610288565b34610b3e57610b3a610b29610b243660046105ef565b6137b8565b610b31610282565b91829182610502565b0390f35b610288565b34610b7157610b53366004610290565b610b5b613804565b610b63610282565b80610b6d81610459565b0390f35b610288565b34610ba657610ba2610b91610b8c36600461043b565b61380e565b610b99610282565b91829182610502565b0390f35b610288565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b610bd8906008610bdd9302610bab565b610baf565b90565b90610beb9154610bc8565b90565b610bfa60025f90610be0565b90565b90565b610c14610c0f610c1992610343565b610bfd565b610343565b90565b610c2590610c00565b90565b610c3190610c1c565b90565b610c3d90610c28565b9052565b9190610c54905f60208501940190610c34565b565b34610c8657610c66366004610290565b610c82610c71610bee565b610c79610282565b91829182610c41565b0390f35b610288565b34610cbb57610c9b366004610290565b610cb7610ca6613823565b610cae610282565b9182918261061a565b0390f35b610288565b610cc981610491565b03610cd057565b5f80fd5b90503590610ce182610cc0565b565b9190604083820312610d0b5780610cff610d08925f860161037c565b93602001610cd4565b90565b61028c565b34610d3f57610d29610d23366004610ce3565b90613abf565b610d31610282565b80610d3b81610459565b0390f35b610288565b34610d7457610d54366004610290565b610d70610d5f613acb565b610d67610282565b918291826102f2565b0390f35b610288565b34610daa57610da6610d95610d8f3660046103b1565b90613aea565b610d9d610282565b918291826103f0565b0390f35b610288565b5190565b60209181520190565b60200190565b610dcb9061035c565b9052565b90610ddc81602093610dc2565b0190565b60200190565b90610e03610dfd610df684610daf565b8093610db3565b92610dbc565b905f5b818110610e135750505090565b909192610e2c610e266001928651610dcf565b94610de0565b9101919091610e06565b610e4b9160208201915f818403910152610de6565b90565b34610e7e57610e5e366004610290565b610e7a610e69613b11565b610e71610282565b91829182610e36565b0390f35b610288565b34610eb357610eaf610e9e610e9936600461043b565b613b2e565b610ea6610282565b91829182610502565b0390f35b610288565b67ffffffffffffffff8111610ed657610ed26020916102b7565b0190565b6107c7565b90610eed610ee883610eb8565b61081d565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610f236005610edb565b90610f3060208301610ef2565b565b610f3a610f19565b90565b610f45610f32565b90565b610f50610f3d565b90565b34610f8357610f63366004610290565b610f7f610f6e610f48565b610f76610282565b918291826102f2565b0390f35b610288565b34610fb657610fa0610f9b3660046105ef565b613f28565b610fa8610282565b80610fb281610459565b0390f35b610288565b73ffffffffffffffffffffffffffffffffffffffff1690565b610fe4906008610fe99302610bab565b610fbb565b90565b90610ff79154610fd4565b90565b61100660035f90610fec565b90565b3461103957611019366004610290565b611035611024610ffa565b61102c610282565b9182918261061a565b0390f35b610288565b3461106c576110566110513660046105ef565b613f5b565b61105e610282565b8061106881610459565b0390f35b610288565b9190604083820312611099578061108d611096925f860161037c565b9360200161037c565b90565b61028c565b346110cf576110cb6110ba6110b4366004611071565b90613f7c565b6110c2610282565b91829182610502565b0390f35b610288565b34611102576110ec6110e73660046105ef565b613fd5565b6110f4610282565b806110fe81610459565b0390f35b610288565b3461113757611117366004610290565b611133611122613fe0565b61112a610282565b91829182610502565b0390f35b610288565b67ffffffffffffffff81116111545760208091020190565b6107c7565b5f80fd5b5f80fd5b9190916060818403126111c557611178606061081d565b92611185815f840161037c565b5f85015261119681602084016103a2565b6020850152604082013567ffffffffffffffff81116111c0576111b99201610896565b6040830152565b61115d565b611159565b9291906111de6111d98261113c565b61081d565b93818552602080860192028101918383116112355781905b838210611204575050505050565b813567ffffffffffffffff8111611230576020916112258784938701611161565b8152019101906111f6565b6107bf565b610986565b9080601f8301121561125857816020611255933591016111ca565b90565b6107bf565b67ffffffffffffffff81116112755760208091020190565b6107c7565b9092919261128f61128a8261125d565b61081d565b93818552602080860192028301928184116112cc57915b8383106112b35750505050565b602080916112c1848661037c565b8152019201916112a6565b610986565b9080601f830112156112ef578160206112ec9335910161127a565b90565b6107bf565b91909160408184031261134c575f81013567ffffffffffffffff8111611347578361132091830161123a565b92602082013567ffffffffffffffff81116113425761133f92016112d1565b90565b61033f565b61033f565b61028c565b346113805761136a6113643660046112f4565b90614ff3565b611372610282565b8061137c81610459565b0390f35b610288565b346113b35761139d6113983660046105ef565b615084565b6113a5610282565b806113af81610459565b0390f35b610288565b346113e6576113d06113cb36600461043b565b615d07565b6113d8610282565b806113e281610459565b0390f35b610288565b60808183031261142c57611401825f83016103a2565b9261142961141284602085016103a2565b9361142081604086016103a2565b936060016103a2565b90565b61028c565b34611465576114616114506114473660046113eb565b92919091615d12565b611458610282565b91829182610502565b0390f35b610288565b5f80fd5b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90600160028304921680156114c0575b60208310146114bb57565b611473565b91607f16916114b0565b60209181520190565b5f5260205f2090565b905f92918054906114f66114ef836114a0565b80946114ca565b916001811690815f1461154d5750600114611511575b505050565b61151e91929394506114d3565b915f925b81841061153557505001905f808061150c565b60018160209295939554848601520191019290611522565b92949550505060ff19168252151560200201905f808061150c565b90611572916114dc565b90565b9061159561158e92611585610282565b93848092611568565b03836107f4565b565b6115a090611575565b90565b6115ab61146e565b506115bf60036115b9615d2e565b01611597565b90565b5f90565b6115e3916115d26115c2565b506115db615d52565b919091615d5f565b600190565b6115f9906115f4615e0f565b611a6f565b611601615ebb565b565b5f1c90565b61161461161991611603565b610baf565b90565b6116269054611608565b90565b5f80fd5b60e01b90565b9050519061164082610368565b565b9060208282031261165b57611658915f01611633565b90565b61028c565b611668610282565b3d5f823e3d90fd5b9050519061167d8261038e565b565b9060208282031261169857611695915f01611670565b90565b61028c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6116d96116df9193929361038b565b9261038b565b916116eb83820261038b565b9281840414901517156116fa57565b61169d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61173861173e9161038b565b9161038b565b908115611749570490565b6116ff565b61175790610c00565b90565b6117639061174e565b90565b61176f90610c1c565b90565b61177b90610c1c565b90565b90565b61179561179061179a9261177e565b610bfd565b61038b565b90565b6117a6816103de565b036117ad57565b5f80fd5b905051906117be8261179d565b565b906020828203126117d9576117d6915f016117b1565b90565b61028c565b60409061180761180e94969593966117fd60608401985f85019061060d565b602083019061060d565b01906104f5565b565b91602061183192949361182a60408201965f83019061060d565b019061060d565b565b90565b61184a61184561184f92611833565b610bfd565b61038b565b90565b60207f726f000000000000000000000000000000000000000000000000000000000000917f546f74616c2042414c554e4920737570706c792063616e6e6f74206265207a655f8201520152565b6118ac60226040926102a3565b6118b581611852565b0190565b6118ce9060208101905f81830391015261189f565b90565b156118d857565b6118e0610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611910600482016118b9565b0390fd5b5f7f555344432062616c616e636520697320696e73756666696369656e7400000000910152565b611948601c6020926102a3565b61195181611914565b0190565b61196a9060208101905f81830391015261193b565b90565b1561197457565b61197c610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806119ac60048201611955565b0390fd5b5f7f436865636b2074686520746f6b656e20616c6c6f77616e636500000000000000910152565b6119e460196020926102a3565b6119ed816119b0565b0190565b611a069060208101905f8183039101526119d7565b90565b15611a1057565b611a18610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611a48600482016119f1565b0390fd5b916020611a6d929493611a6660408201965f83019061060d565b01906104f5565b565b611a9c6020611a86611a81600261161c565b610c28565b633b19e84a90611a94610282565b93849261162d565b82528180611aac60048201610459565b03915afa908115611fd2575f91611fa4575b5090611aed6020611ad7611ad2600261161c565b610c28565b631bf01e9b90611ae5610282565b93849261162d565b82528180611afd60048201610459565b03915afa908115611f9f575f91611f71575b50611b3d6020611b27611b22600261161c565b610c28565b6385462d6f90611b35610282565b93849261162d565b82528180611b4d60048201610459565b03915afa908115611f6c575f91611f3e575b5091611b8e6020611b78611b73600261161c565b610c28565b634f4608a290611b86610282565b93849261162d565b82528180611b9e60048201610459565b03915afa908115611f39575f91611f0b575b5092611bba615f99565b611bd6611bcf611bc8612022565b92856116ca565b829061172c565b94856020611beb611be68861175a565b611766565b6323b872dd90611c2f5f3393611c3a611c1b611c0630611772565b98611c1564e8d4a51000611781565b9061172c565b611c23610282565b9889978896879561162d565b8552600485016117de565b03925af18015611f0657611eda575b50611c8a6020611c60611c5b8861175a565b611766565b6370a0823190611c7f3392611c73610282565b9586948593849361162d565b83526004830161061a565b03915afa908115611ed5575f91611ea7575b50611cae611ca98761175a565b611766565b93602063dd62ed3e953390611cdd611cc530611772565b98611ce8611cd1610282565b9a8b958694859461162d565b845260048401611810565b03915afa918215611ea257602098611e0397611d94611df897611d64611dee95611d34611df399611dfe9d5f91611e74575b5093611d2e611d285f611836565b9161038b565b116118d1565b611d5d611d57611d5288611d4c64e8d4a51000611781565b9061172c565b61038b565b9161038b565b101561196d565b611d8d611d87611d8286611d7c64e8d4a51000611781565b9061172c565b61038b565b9161038b565b1015611a09565b611d9f338290616241565b33907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688591611dd7611dce610282565b92839283611a4c565b0390a1611de864e8d4a51000611781565b9061172c565b6116ca565b61172c565b9261175a565b611766565b611e265f63a9059cbb959395611e31611e1a610282565b9788968795869461162d565b845260048401611a4c565b03925af18015611e6f57611e43575b50565b611e639060203d8111611e68575b611e5b81836107f4565b8101906117c0565b611e40565b503d611e51565b611660565b6020611e9592503d8111611e9b575b611e8d81836107f4565b81019061167f565b5f611d1a565b503d611e83565b611660565b611ec8915060203d8111611ece575b611ec081836107f4565b81019061167f565b5f611c9c565b503d611eb6565b611660565b611efa9060203d8111611eff575b611ef281836107f4565b8101906117c0565b611c49565b503d611ee8565b611660565b611f2c915060203d8111611f32575b611f2481836107f4565b81019061167f565b5f611bb0565b503d611f1a565b611660565b611f5f915060203d8111611f65575b611f5781836107f4565b81019061167f565b5f611b5f565b503d611f4d565b611660565b611f92915060203d8111611f98575b611f8a81836107f4565b810190611642565b5f611b0f565b503d611f80565b611660565b611fc5915060203d8111611fcb575b611fbd81836107f4565b810190611642565b5f611abe565b503d611fb3565b611660565b611fe0906115e8565b565b5f90565b611fee611fe2565b50611ff76162bf565b90565b5f90565b90565b61200d61201291611603565b611ffe565b90565b61201f9054612001565b90565b61202a611ffa565b5061203e6002612038615d2e565b01612015565b90565b6120529061204d615e0f565b6125a6565b61205a615ebb565b565b60207f2030000000000000000000000000000000000000000000000000000000000000917f4275726e20616d6f756e74206d7573742062652067726561746572207468616e5f8201520152565b6120b660226040926102a3565b6120bf8161205c565b0190565b6120d89060208101905f8183039101526120a9565b90565b156120e257565b6120ea610282565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061211a600482016120c3565b0390fd5b61213261212d61213792611833565b610bfd565b610343565b90565b6121439061211e565b90565b5f7f5472656173757279206e6f742073657400000000000000000000000000000000910152565b61217a60106020926102a3565b61218381612146565b0190565b61219c9060208101905f81830391015261216d565b90565b156121a657565b6121ae610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806121de60048201612187565b0390fd5b5f7f496e73756666696369656e742042414c00000000000000000000000000000000910152565b61221660106020926102a3565b61221f816121e2565b0190565b6122389060208101905f818303910152612209565b90565b1561224257565b61224a610282565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061227a60048201612223565b0390fd5b5f7f4665652063616c63756c6174696f6e206572726f720000000000000000000000910152565b6122b260156020926102a3565b6122bb8161227e565b0190565b6122d49060208101905f8183039101526122a5565b90565b156122de57565b6122e6610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612316600482016122bf565b0390fd5b61232961232f9193929361038b565b9261038b565b820391821161233a57565b61169d565b600161234b910161038b565b90565b90565b5f7f496e76616c696420746f6b656e20616464726573730000000000000000000000910152565b61238560156020926102a3565b61238e81612351565b0190565b6123a79060208101905f818303910152612378565b90565b156123b157565b6123b9610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806123e960048201612392565b0390fd5b5f7f546f74616c20737570706c792069732030000000000000000000000000000000910152565b61242160116020926102a3565b61242a816123ed565b0190565b6124439060208101905f818303910152612414565b90565b1561244d57565b612455610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806124856004820161242e565b0390fd5b61249290610c00565b90565b61249e90612489565b90565b6124aa90610c1c565b90565b6124b68161072f565b036124bd57565b5f80fd5b905051906124ce826124ad565b565b906020828203126124e9576124e6915f016124c1565b90565b61028c565b6125026124fd6125079261072f565b610bfd565b61038b565b90565b5f7f53686172652063616c63756c6174696f6e206572726f72000000000000000000910152565b61253e60176020926102a3565b6125478161250a565b0190565b6125609060208101905f818303910152612531565b90565b1561256a57565b612572610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806125a26004820161254b565b0390fd5b906125c3826125bd6125b75f611836565b9161038b565b116120db565b6125f060206125da6125d5600261161c565b610c28565b633b19e84a906125e8610282565b93849261162d565b8252818061260060048201610459565b03915afa80156129c957612699915f9161299b575b509261263c8461263561262f61262a5f61213a565b61035c565b9161035c565b141561219f565b612661612648336137b8565b61265a6126548461038b565b9161038b565b101561223b565b61269361266d826162dd565b9461268b8661268461267e8661038b565b9161038b565b11156122d7565b91859061231a565b90613aea565b506126a2611ffa565b5b806126c66126c06126bb6126b65f61234e565b616411565b61038b565b9161038b565b1015612951576126df6126d85f61234e565b8290616460565b90612705826126fe6126f86126f35f61213a565b61035c565b9161035c565b14156123aa565b61270d612022565b9161272a8361272461271e5f611836565b9161038b565b11612446565b612772602061274061273b8461175a565b611766565b6370a082319061276761275230611772565b9261275b610282565b9586948593849361162d565b83526004830161061a565b03915afa90811561294c575f9161291e575b5092836127996127935f611836565b9161038b565b1480156128fc575b6128f057906127d39160206127bd6127b884612495565b6124a1565b63313ce567906127cb610282565b95869261162d565b825281806127e360048201610459565b03915afa9182156128eb576128336128186128389361280f61283d966020985f916128be575b506124ee565b898c9192616608565b9661282c612826899261038b565b9161038b565b1115612563565b61175a565b611766565b9263a9059cbb936128625f33939661286d612856610282565b9889968795869461162d565b845260048401611a4c565b03925af19182156128b9576128889261288d575b505b61233f565b6126a3565b6128ad9060203d81116128b2575b6128a581836107f4565b8101906117c0565b612881565b503d61289b565b611660565b6128de9150893d81116128e4575b6128d681836107f4565b8101906124d0565b5f612809565b503d6128cc565b611660565b50506128889150612883565b508161291861291261290d30611772565b61035c565b9161035c565b146127a1565b61293f915060203d8111612945575b61293781836107f4565b81019061167f565b5f612784565b503d61292d565b611660565b509061295e3382906166c6565b33907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59161299661298d610282565b92839283611a4c565b0390a1565b6129bc915060203d81116129c2575b6129b481836107f4565b810190611642565b5f612615565b503d6129aa565b611660565b6129d790612041565b565b91612a03926129e66115c2565b506129fb6129f2615d52565b82908491616785565b919091616850565b600190565b5f90565b612a1590610c00565b90565b612a2190612a0c565b90565b612a2d90610c1c565b90565b612a38612a08565b50612a666020612a50612a4b600261161c565b610c28565b63f5d2d99890612a5e610282565b93849261162d565b82528180612a7660048201610459565b03915afa918215612b3d57612aa0612a9b612ac7946020945f91612b10575b50612a18565b612a24565b612abc6327d54a92612ab0610282565b9586948593849361162d565b83526004830161061a565b03915afa908115612b0b575f91612add575b5090565b612afe915060203d8111612b04575b612af681836107f4565b810190611642565b5f612ad9565b503d612aec565b611660565b612b309150853d8111612b36575b612b2881836107f4565b810190611642565b5f612a95565b503d612b1e565b611660565b612b4a611ffa565b50612b53615f99565b90565b612b5f90610c00565b90565b612b6b90612b56565b90565b612b7790610c1c565b90565b612b86612b8b91611603565b610fbb565b90565b612b989054612b7a565b90565b90612bd390612ba8611ffa565b506020612bbd612bb8600261161c565b610c28565b63bb3ba04c90612bcb610282565b94859261162d565b82528180612be360048201610459565b03915afa8015612cb457612c04612c09916020945f91612c87575b50612b62565b612b6e565b612c3363b27b5e75612c3e612c1e6003612b8e565b96612c27610282565b9788968795869561162d565b8552600485016117de565b03915afa908115612c82575f91612c54575b5090565b612c75915060203d8111612c7b575b612c6d81836107f4565b81019061167f565b5f612c50565b503d612c63565b611660565b612ca79150853d8111612cad575b612c9f81836107f4565b810190611642565b5f612bfe565b503d612c95565b611660565b612cc290610c00565b90565b612cce90612cb9565b90565b612cda90610c1c565b90565b612d12612d1994612d08606094989795612cfe608086019a5f87019061060d565b602085019061060d565b60408301906104f5565b019061060d565b565b90959492612d6694612d55612d5f92612d4b608096612d4160a088019c5f89019061060d565b602087019061060d565b604085019061060d565b60608301906104f5565b019061060d565b565b5f7f4d75746920486f702053776170204661696c65642c20547279204275726e2829910152565b612d9b602080926102a3565b612da481612d68565b0190565b612dbd9060208101905f818303910152612d8f565b90565b15612dc757565b612dcf610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612dff60048201612da8565b0390fd5b612e306020612e1a612e15600261161c565b610c28565b636c9c007890612e28610282565b93849261162d565b82528180612e4060048201610459565b03915afa9081156131a4575f91613176575b50612e806020612e6a612e65600261161c565b610c28565b6382755ebb90612e78610282565b93849261162d565b82528180612e9060048201610459565b03915afa908115613171575f91613143575b5090612eec6020612eba612eb58661175a565b611766565b6370a0823190612ee1612ecc30611772565b92612ed5610282565b9586948593849361162d565b83526004830161061a565b03915afa90811561313e575f91613110575b509283612f13612f0d5f611836565b9161038b565b11612f25612f208361175a565b611766565b90602063095ea7b3928690612f4d5f8a96612f58612f41610282565b9889968795869461162d565b845260048401611a4c565b03925af191821561310b57612f73926130df575b50156103de565b6130d957612f88612f8384612cc5565b612cd1565b6020632d6bc8ea918390612fc35f612fa06003612b8e565b95612fce8b612fae30611772565b90612fb7610282565b998a988997889661162d565b865260048601612cdd565b03925af190816130ad575b50155f146130a7576001612fed5750505050565b6130395f613004612fff602096612cc5565b612cd1565b92613044635efaaebb91959761301a6003612b8e565b9061302430611772565b9161302d610282565b9a8b998a98899761162d565b875260048701612d1b565b03925af180156130a257613072915f91613074575b5061306c6130665f611836565b9161038b565b11612dc0565b565b613095915060203d811161309b575b61308d81836107f4565b81019061167f565b5f613059565b503d613083565b611660565b50505050565b6130cd9060203d81116130d2575b6130c581836107f4565b81019061167f565b612fd9565b503d6130bb565b50505050565b6130ff9060203d8111613104575b6130f781836107f4565b8101906117c0565b612f6c565b503d6130ed565b611660565b613131915060203d8111613137575b61312981836107f4565b81019061167f565b5f612efe565b503d61311f565b611660565b613164915060203d811161316a575b61315c81836107f4565b810190611642565b5f612ea2565b503d613152565b611660565b613197915060203d811161319d575b61318f81836107f4565b810190611642565b5f612e52565b503d613185565b611660565b5f90565b90565b6131c46131bf6131c9926131ad565b610bfd565b61072f565b90565b6131d46131a9565b506131df60126131b0565b90565b6131ea615e0f565b6131f26131fc565b6131fa615ebb565b565b61320d6132085f61234e565b616411565b6132165f611836565b5b8061322a6132248461038b565b9161038b565b101561328257613277906132476132405f61234e565b8290616460565b8061326361325d6132586003612b8e565b61035c565b9161035c565b1461327c5761327190612e03565b5b61233f565b613217565b50613272565b5050565b61328e6131e2565b565b906132a29161329d616939565b6132a4565b565b906132b7916132b281616a0b565b616a7b565b565b906132c391613290565b565b5f90565b6132da906132d5616bb9565b61332d565b90565b90565b5f1b90565b6132f96132f46132fe926132dd565b6132e0565b610928565b90565b61332a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6132e5565b90565b50613336613301565b90565b6133496133446132c5565b6132c9565b90565b67ffffffffffffffff81116133645760208091020190565b6107c7565b9061337b6133768361334c565b61081d565b918252565b369037565b906133aa61339283613369565b926020806133a0869361334c565b9201910390613380565b565b6133b590610c00565b90565b6133c1906133ac565b90565b6133cd90610c1c565b90565b5f9103126133da57565b61028c565b5190565b60209181520190565b60200190565b6133fb9061038b565b9052565b9061340c816020936133f2565b0190565b60200190565b9061343361342d613426846133df565b80936133e3565b926133ec565b905f5b8181106134435750505090565b90919261345c61345660019286516133ff565b94613410565b9101919091613436565b90565b5061347890602081019061037c565b90565b60200190565b9161348f8261349592610db3565b92613466565b90815f905b8282106134a8575050505090565b909192936134ca6134c46001926134bf8886613469565b610dcf565b9561347b565b92019092919261349a565b5f80fd5b9037565b9091826134e9916133e3565b917f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111613526578291602061352292029384916134d9565b0190565b6134d5565b9461357e61359d95613589926135706135939660c09b9f9e9c96986135616135a49f9a8d9060e08201915f818403910152613416565b918c6020818503910152613481565b9189830360408b01526134dd565b9a60608701906104f5565b608085019061060d565b60a083019061060d565b019061060d565b565b9490965094919092946135dc60206135c66135c1600261161c565b610c28565b631bf01e9b906135d4610282565b93849261162d565b825281806135ec60048201610459565b03915afa90811561375e575f91613730575b509361362d6020613617613612600261161c565b610c28565b63cff49d6890613625610282565b93849261162d565b8252818061363d60048201610459565b03915afa90811561372b575f916136fd575b509161367361366e6136686136635f611836565b613385565b946133b8565b6133c4565b9563f0bf771493979992949598919091873b156136f8575f996136aa978b976136b59661369e610282565b9e8f9d8e9c8d9b61162d565b8b5260048b0161352b565b03925af180156136f3576136c7575b50565b6136e6905f3d81116136ec575b6136de81836107f4565b8101906133d0565b5f6136c4565b503d6136d4565b611660565b611629565b61371e915060203d8111613724575b61371681836107f4565b810190611642565b5f61364f565b503d61370c565b611660565b613751915060203d8111613757575b61374981836107f4565b810190611642565b5f6135fe565b503d61373f565b611660565b6137749061376f616c37565b613776565b565b613788906137835f61234e565b616ce9565b50565b61379490613763565b565b61379f90610c1c565b90565b906137ac90613796565b5f5260205260405f2090565b6137d76137dc916137c7611ffa565b505f6137d1615d2e565b016137a2565b612015565b90565b6137e7616c37565b6137ef6137f1565b565b6138026137fd5f61213a565b616d23565b565b61380c6137df565b565b6138209061381a611ffa565b50616d8f565b90565b61382b612a08565b5061383e5f613838616e93565b01612b8e565b90565b60401c90565b60ff1690565b61385961385e91613841565b613847565b90565b61386b905461384d565b90565b67ffffffffffffffff1690565b61388761388c91611603565b61386e565b90565b613899905461387b565b90565b906138af67ffffffffffffffff916132e0565b9181191691161790565b6138cd6138c86138d292610491565b610bfd565b610491565b90565b90565b906138ed6138e86138f4926138b9565b6138d5565b825461389c565b9055565b60401b90565b9061391268ff0000000000000000916138f8565b9181191691161790565b613925906103de565b90565b90565b9061394061393b6139479261391c565b613928565b82546138fe565b9055565b908091613956616eb7565b906139625f8301613861565b8015613a13575b6139d75761399c9261399391613981865f86016138d8565b61398e60015f860161392b565b613aa8565b5f80910161392b565b6139d27fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916139c9610282565b918291826104ab565b0390a1565b6139df610282565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613a0f60048201610459565b0390fd5b50613a1f5f830161388f565b613a31613a2b86610491565b91610491565b1015613969565b613a4190610c00565b90565b613a4d90613a38565b90565b90613a6f73ffffffffffffffffffffffffffffffffffffffff916132e0565b9181191691161790565b613a8290613a38565b90565b90565b90613a9d613a98613aa492613a79565b613a85565b8254613a50565b9055565b613abd9150613ab690613a44565b6002613a88565b565b90613ac99161394b565b565b613ad361146e565b50613ae76004613ae1615d2e565b01611597565b90565b613b0791613af66115c2565b50613aff615d52565b919091616850565b600190565b606090565b613b19613b0c565b50613b2b613b265f61234e565b616edb565b90565b613b5c613b7091613b3d611ffa565b50613b57613b49615f99565b613b51612022565b926116ca565b61172c565b613b6a64e8d4a51000611781565b9061172c565b90565b613b87613b82613b8c92611833565b610bfd565b610491565b90565b90565b613ba6613ba1613bab92613b8f565b610bfd565b610491565b90565b613bb790610c1c565b90565b613bc390613b92565b9052565b9190613bda905f60208501940190613bba565b565b613be4616eb7565b90613bf9613bf35f8401613861565b156103de565b90613c055f840161388f565b80613c18613c125f613b73565b91610491565b1480613d52575b90613c33613c2d6001613b92565b91610491565b1480613d2a575b613c459091156103de565b9081613d19575b50613cdd57613c7590613c6a613c626001613b92565b5f86016138d8565b82613ccb575b613e31565b613c7d575b50565b613c8a905f80910161392b565b6001613cc27fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291613cb9610282565b91829182613bc7565b0390a15f613c7a565b613cd860015f860161392b565b613c70565b613ce5610282565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613d1560048201610459565b0390fd5b613d249150156103de565b5f613c4c565b50613c45613d3730613bae565b3b613d4a613d445f611836565b9161038b565b149050613c3a565b5082613c1f565b5f7f42616c756e690000000000000000000000000000000000000000000000000000910152565b613d8a6006610edb565b90613d9760208301613d59565b565b613da1613d80565b90565b5f7f42414c554e490000000000000000000000000000000000000000000000000000910152565b613dd56006610edb565b90613de260208301613da4565b565b613dec613dcb565b90565b90565b613e06613e01613e0b92613def565b610bfd565b61038b565b90565b90565b90613e26613e21613e2d92613796565b613e0e565b8254613a50565b9055565b613e92613e9991613e51613e43613d99565b613e4b613de4565b90616f23565b613e5a33616f4d565b613e62616f74565b613e6a616f88565b613e8d613e7630611772565b613e87670de0b6b3a7640000613df2565b90616241565b613a44565b6002613a88565b613ec66020613eb0613eab600261161c565b610c28565b631bf01e9b90613ebe610282565b93849261162d565b82528180613ed660048201610459565b03915afa8015613f2357613ef3915f91613ef5575b506003613e11565b565b613f16915060203d8111613f1c575b613f0e81836107f4565b810190611642565b5f613eeb565b503d613f04565b611660565b613f3190613bdc565b565b613f4490613f3f616c37565b613f46565b565b613f5890613f535f61234e565b616f92565b50565b613f6490613f33565b565b90613f7090613796565b5f5260205260405f2090565b613faa91613fa0613fa592613f8f611ffa565b506001613f9a615d2e565b01613f66565b6137a2565b612015565b90565b613fbe90613fb9616c37565b613fc0565b565b613fcc613fd391613a44565b6002613a88565b565b613fde90613fad565b565b613fe8611ffa565b50614002613ffd670de0b6b3a7640000613df2565b616d8f565b90565b9061401791614012615e0f565b614433565b61401f615ebb565b565b5f7f4167656e7420666163746f7279206e6f74207365740000000000000000000000910152565b61405560156020926102a3565b61405e81614021565b0190565b6140779060208101905f818303910152614048565b90565b1561408157565b614089610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806140b960048201614062565b0390fd5b67ffffffffffffffff81116140d55760208091020190565b6107c7565b906140ec6140e7836140bd565b61081d565b918252565b369037565b9061411b614103836140da565b9260208061411186936140bd565b92019103906140f1565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9061415482610daf565b811015614165576020809102010190565b61411d565b614174905161035c565b90565b5190565b9061418582614177565b811015614196576020809102010190565b61411d565b906141a5906103de565b9052565b906141b3826133df565b8110156141c4576020809102010190565b61411d565b906141d39061038b565b9052565b6141e090610c00565b90565b6141ec906141d7565b90565b6141f890610c1c565b90565b5190565b60209181520190565b60200190565b5190565b60209181520190565b61423a614243602093614248936142318161420e565b93848093614212565b958691016102ac565b6102b7565b0190565b61428991604060608201926142675f8201515f850190610dc2565b614279602082015160208501906133f2565b015190604081840391015261421b565b90565b906142969161424c565b90565b60200190565b906142b36142ac836141fb565b80926141ff565b90816142c460208302840194614208565b925f915b8383106142d757505050505090565b909192939460206142f96142f38385600195038752895161428c565b97614299565b93019301919392906142c8565b909161432061432e9360408401908482035f86015261429f565b916020818403910152610de6565b90565b61433a90610c00565b90565b61434690614331565b90565b61435290610c1c565b90565b90565b62ffffff1690565b61437461436f61437992614355565b610bfd565b614358565b90565b61438590614360565b9052565b6040906143b26143b994969593966143a860608401985f85019061060d565b602083019061060d565b019061437c565b565b90565b6143d26143cd6143d7926143bb565b610bfd565b614358565b90565b6143e3906143be565b9052565b604090614410614417949695939661440660608401985f85019061060d565b602083019061060d565b01906143da565b565b61442390516103de565b90565b614430905161038b565b90565b9190614462602061444c614447600261161c565b610c28565b63f5d2d9989061445a610282565b93849261162d565b8252818061447260048201610459565b03915afa908115614fee575f91614fc0575b506144b2602061449c614497600261161c565b610c28565b633e6dfa36906144aa610282565b93849261162d565b825281806144c260048201610459565b03915afa908115614fbb575f91614f8d575b509061450360206144ed6144e8600261161c565b610c28565b636c9c0078906144fb610282565b93849261162d565b8252818061451360048201610459565b03915afa908115614f88575f91614f5a575b5091614554602061453e614539600261161c565b610c28565b631bf01e9b9061454c610282565b93849261162d565b8252818061456460048201610459565b03915afa908115614f55576145b46145af6145df936020935f91614f28575b50956145aa816145a361459d6145985f61213a565b61035c565b9161035c565b141561407a565b612a18565b612a24565b639b76a5cd906145d45f33936145c8610282565b9687958694859361162d565b83526004830161061a565b03925af1908115614f23575f91614ef5575b50946146046145ff86610daf565b6140f6565b9361461661461187610daf565b613385565b976146205f611836565b5b8061463c6146366146318b610daf565b61038b565b9161038b565b101561474b576146e19061468a6146786146728b61466d6146676146625f93889061414a565b61416a565b9161234e565b616fcc565b156103de565b6146858a9184909261417b565b61419b565b60206146af6146aa6146a56146a08d869061414a565b61416a565b61175a565b611766565b6370a08231906146d66146c130611772565b926146ca610282565b9687948593849361162d565b83526004830161061a565b03915afa918215614746576147139261470e915f91614718575b506147098d918490926141a9565b6141c9565b61233f565b614621565b614739915060203d811161473f575b61473181836107f4565b81019061167f565b5f6146fb565b503d614727565b611660565b509091929497939596614760614765916141e3565b6141ef565b9063eedc3c50908892803b15614ef0576147925f809461479d614786610282565b9788968795869461162d565b845260048401614306565b03925af18015614eeb57614ebf575b506147b65f611836565b5b806147d26147cc6147c78a610daf565b61038b565b9161038b565b1015614eb5576147eb6147e688839061414a565b61416a565b9061483460206148026147fd8561175a565b611766565b6370a082319061482961481430611772565b9261481d610282565b9586948593849361162d565b83526004830161061a565b03915afa908115614eb0575f91614e82575b50916148596148548861433d565b614349565b6020631698ee82918390614882889461488d610bb8614876610282565b9788968795869561162d565b855260048501614389565b03915afa908115614e7d575f91614e4f575b506148b16148ac8961433d565b614349565b6020631698ee829184906148da89946148e56101f46148ce610282565b9788968795869561162d565b8552600485016143e7565b03915afa908115614e4a575f91614e1c575b509061490a6149058a61433d565b614349565b60208b631698ee829261493387929461493e6101f4614927610282565b9788968795869561162d565b8552600485016143e7565b03915afa908115614e17575f91614de9575b509161496361495e8b61433d565b614349565b60208c631698ee829261498c889294614997610bb8614980610282565b9788968795869561162d565b855260048501614389565b03915afa908115614de4575f91614db6575b50916149c56149bf6149ba5f61213a565b61035c565b9161035c565b1415908115614d92575b50908115614d6e575b50908115614d4a575b50926149f66149f18c859061417b565b614419565b80614d43575b614d2a575b614a28614a2182614a1b614a168b88906141a9565b614426565b9061231a565b94156103de565b614c9757614a596020614a43614a3e600261161c565b610c28565b633b19e84a90614a51610282565b93849261162d565b82528180614a6960048201610459565b03915afa908115614c92575f91614c64575b5093614aaa6020614a94614a8f600261161c565b610c28565b6385462d6f90614aa2610282565b93849261162d565b82528180614aba60048201610459565b03915afa908115614c5f575f91614c31575b5090614afb6020614ae5614ae0600261161c565b610c28565b634f4608a290614af3610282565b93849261162d565b82528180614b0b60048201610459565b03915afa908115614c2c575f91614bfe575b5092614b43614b3d614b38614b338d8a906141a9565b614426565b61038b565b9161038b565b11614b5c575b50505050614b57915061233f565b6147b7565b614b7860209493614b73614b8394614b7e946116ca565b61172c565b9261175a565b611766565b614ba65f63a9059cbb969396614bb1614b9a610282565b9889968795869461162d565b845260048401611a4c565b03925af1918215614bf957614b5792614bcd575b808080614b49565b614bed9060203d8111614bf2575b614be581836107f4565b8101906117c0565b614bc5565b503d614bdb565b611660565b614c1f915060203d8111614c25575b614c1781836107f4565b81019061167f565b5f614b1d565b503d614c0d565b611660565b614c52915060203d8111614c58575b614c4a81836107f4565b81019061167f565b5f614acc565b503d614c40565b611660565b614c85915060203d8111614c8b575b614c7d81836107f4565b810190611642565b5f614a7b565b503d614c73565b611660565b509398505095505060209350614cb79250614cb2915061175a565b611766565b9163a9059cbb92614cdc5f339395614ce7614cd0610282565b9788968795869461162d565b845260048401611a4c565b03925af18015614d2557614cf9575b50565b614d199060203d8111614d1e575b614d1181836107f4565b8101906117c0565b614cf6565b503d614d07565b611660565b614d3d5f614d38849161234e565b616f92565b50614a01565b50836149fc565b9050614d66614d60614d5b5f61213a565b61035c565b9161035c565b14155f6149e1565b9050614d8a614d84614d7f5f61213a565b61035c565b9161035c565b14155f6149d8565b9050614dae614da8614da35f61213a565b61035c565b9161035c565b14155f6149cf565b614dd7915060203d8111614ddd575b614dcf81836107f4565b810190611642565b5f6149a9565b503d614dc5565b611660565b614e0a915060203d8111614e10575b614e0281836107f4565b810190611642565b5f614950565b503d614df8565b611660565b614e3d915060203d8111614e43575b614e3581836107f4565b810190611642565b5f6148f7565b503d614e2b565b611660565b614e70915060203d8111614e76575b614e6881836107f4565b810190611642565b5f61489f565b503d614e5e565b611660565b614ea3915060203d8111614ea9575b614e9b81836107f4565b81019061167f565b5f614846565b503d614e91565b611660565b5050945050505050565b614ede905f3d8111614ee4575b614ed681836107f4565b8101906133d0565b5f6147ac565b503d614ecc565b611660565b611629565b614f16915060203d8111614f1c575b614f0e81836107f4565b810190611642565b5f6145f1565b503d614f04565b611660565b614f489150843d8111614f4e575b614f4081836107f4565b810190611642565b5f614583565b503d614f36565b611660565b614f7b915060203d8111614f81575b614f7381836107f4565b810190611642565b5f614525565b503d614f69565b611660565b614fae915060203d8111614fb4575b614fa681836107f4565b810190611642565b5f6144d4565b503d614f9c565b611660565b614fe1915060203d8111614fe7575b614fd981836107f4565b810190611642565b5f614484565b503d614fcf565b611660565b90614ffd91614005565b565b6150109061500b616c37565b615012565b565b8061502d6150276150225f61213a565b61035c565b9161035c565b1461503d5761503b90616d23565b565b6150806150495f61213a565b615051610282565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b61508d90614fff565b565b6150a09061509b615e0f565b6153b6565b6150a8615ebb565b565b5f7f556e6973776170466163746f7279206e6f742073657400000000000000000000910152565b6150de60166020926102a3565b6150e7816150aa565b0190565b6151009060208101905f8183039101526150d1565b90565b1561510a57565b615112610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615142600482016150eb565b0390fd5b5f7f574e4154495645206e6f74207365740000000000000000000000000000000000910152565b61517a600f6020926102a3565b61518381615146565b0190565b61519c9060208101905f81830391015261516d565b90565b156151a657565b6151ae610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806151de60048201615187565b0390fd5b5f7f42616c756e6953776170706572206e6f74207365740000000000000000000000910152565b61521660156020926102a3565b61521f816151e2565b0190565b6152389060208101905f818303910152615209565b90565b1561524257565b61524a610282565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061527a60048201615223565b0390fd5b5f7f53776170204661696c6564000000000000000000000000000000000000000000910152565b6152b2600b6020926102a3565b6152bb8161527e565b0190565b6152d49060208101905f8183039101526152a5565b90565b156152de57565b6152e6610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615316600482016152bf565b0390fd5b5f7f4d756c7469486f7053776170204661696c656400000000000000000000000000910152565b61534e60136020926102a3565b6153578161531a565b0190565b6153709060208101905f818303910152615341565b90565b1561537a57565b615382610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806153b26004820161535b565b0390fd5b6153d2816153cc6153c65f611836565b9161038b565b116120db565b6153ff60206153e96153e4600261161c565b610c28565b633e6dfa36906153f7610282565b93849261162d565b8252818061540f60048201610459565b03915afa8015615d0257615446915f91615cd4575b5061543f6154396154345f61213a565b61035c565b9161035c565b1415615103565b615473602061545d615458600261161c565b610c28565b633b19e84a9061546b610282565b93849261162d565b8252818061548360048201610459565b03915afa908115615ccf575f91615ca1575b506154bb816154b46154ae6154a95f61213a565b61035c565b9161035c565b141561219f565b6154e860206154d26154cd600261161c565b610c28565b636c9c0078906154e0610282565b93849261162d565b825281806154f860048201610459565b03915afa8015615c9c5761556b915f91615c6e575b50916155348361552d6155276155225f61213a565b61035c565b9161035c565b141561519f565b615565615540856162dd565b9461555e866155576155518461038b565b9161038b565b11156122d7565b859061231a565b90613aea565b50615574611ffa565b5b8061559861559261558d6155885f61234e565b616411565b61038b565b9161038b565b1015615c24576155b16155aa5f61234e565b8290616460565b6155d6816155cf6155c96155c45f61213a565b61035c565b9161035c565b14156123aa565b6155de612022565b906155fb826155f56155ef5f611836565b9161038b565b11612446565b615643602061561161560c8461175a565b611766565b6370a082319061563861562330611772565b9261562c610282565b9586948593849361162d565b83526004830161061a565b03915afa908115615c1f575f91615bf1575b50918261566a6156645f611836565b9161038b565b148015615bcf575b615bc3576156a390602061568d61568885612495565b6124a1565b63313ce5679061569b610282565b94859261162d565b825281806156b360048201610459565b03915afa908115615bbe576156d66156df926156fa945f91615b90575b506124ee565b85899192616608565b926156f36156ed859261038b565b9161038b565b1115612563565b8061571661571061570b6003612b8e565b61035c565b9161035c565b14615af757615748602061573261572d600261161c565b610c28565b6382755ebb90615740610282565b93849261162d565b8252818061575860048201610459565b03915afa908115615af2575f91615ac4575b506157908161578961578361577e5f61213a565b61035c565b9161035c565b141561523b565b6157a161579c8361175a565b611766565b602063095ea7b39183906157c85f88956157d36157bc610282565b9788968795869461162d565b845260048401611a4c565b03925af18015615abf57615a93575b506157f46157ef82612cc5565b612cd1565b6020632d6bc8ea9184906158275f61580c6003612b8e565b956158328a339061581b610282565b998a988997889661162d565b865260048601612cdd565b03925af180915f92615a63575b50155f146159ab57506001615862575b50505061585d905b5b61233f565b615575565b90615876615871602093612cc5565b612cd1565b6158a55f635efaaebb6158b0899761588e6003612b8e565b903391615899610282565b9a8b998a98899761162d565b875260048701612d1b565b03925af19081156159a6575f91615978575b50906158e0826158da6158d45f611836565b9161038b565b11615373565b60206158fc6158f76158f26003612b8e565b61175a565b611766565b9263a9059cbb936159215f33939661592c615915610282565b9889968795869461162d565b845260048401611a4c565b03925af19182156159735761585d92615947575b819261584f565b6159679060203d811161596c575b61595f81836107f4565b8101906117c0565b615940565b503d615955565b611660565b615999915060203d811161599f575b61599181836107f4565b81019061167f565b5f6158c2565b503d615987565b611660565b92505050906159cc826159c66159c05f611836565b9161038b565b116152d7565b60206159e86159e36159de6003612b8e565b61175a565b611766565b9263a9059cbb93615a0d5f339396615a18615a01610282565b9889968795869461162d565b845260048401611a4c565b03925af1918215615a5e5761585d92615a32575b50615857565b615a529060203d8111615a57575b615a4a81836107f4565b8101906117c0565b615a2c565b503d615a40565b611660565b615a8591925060203d8111615a8c575b615a7d81836107f4565b81019061167f565b905f61583f565b503d615a73565b615ab39060203d8111615ab8575b615aab81836107f4565b8101906117c0565b6157e2565b503d615aa1565b611660565b615ae5915060203d8111615aeb575b615add81836107f4565b810190611642565b5f61576a565b503d615ad3565b611660565b50906020615b15615b10615b0b6003612b8e565b61175a565b611766565b9263a9059cbb93615b3a5f339396615b45615b2e610282565b9889968795869461162d565b845260048401611a4c565b03925af1918215615b8b5761585d92615b5f575b50615858565b615b7f9060203d8111615b84575b615b7781836107f4565b8101906117c0565b615b59565b503d615b6d565b611660565b615bb1915060203d8111615bb7575b615ba981836107f4565b8101906124d0565b5f6156d0565b503d615b9f565b611660565b50505061585d90615858565b5081615beb615be5615be030611772565b61035c565b9161035c565b14615672565b615c12915060203d8111615c18575b615c0a81836107f4565b81019061167f565b5f615655565b503d615c00565b611660565b5050615c313382906166c6565b33907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca591615c69615c60610282565b92839283611a4c565b0390a1565b615c8f915060203d8111615c95575b615c8781836107f4565b810190611642565b5f61550d565b503d615c7d565b611660565b615cc2915060203d8111615cc8575b615cba81836107f4565b810190611642565b5f615495565b503d615cb0565b611660565b615cf5915060203d8111615cfb575b615ced81836107f4565b810190611642565b5f615424565b503d615ce3565b611660565b615d109061508f565b565b91615d2b939192615d21611ffa565b5092909192616608565b90565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b615d5a612a08565b503390565b91615d6d9291600192617006565b565b90565b615d86615d81615d8b92615d6f565b610bfd565b61038b565b90565b615d986002615d72565b90565b90615dc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916132e0565b9181191691161790565b615de4615ddf615de99261038b565b610bfd565b61038b565b90565b90565b90615e04615dff615e0b92615dd0565b615dec565b8254615d9b565b9055565b615e17617160565b615e225f8201612015565b615e3b615e35615e30615d8e565b61038b565b9161038b565b14615e5657615e54905f615e4d615d8e565b9101615def565b565b615e5e610282565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280615e8e60048201610459565b0390fd5b615ea6615ea1615eab92613b8f565b610bfd565b61038b565b90565b615eb86001615e92565b90565b615ed6615ec6617160565b5f615ecf615eae565b9101615def565b565b615ee7615eed9193929361038b565b9261038b565b8201809211615ef857565b61169d565b5f7f546f6b656e2076616c756174696f6e206973207a65726f000000000000000000910152565b615f3160176020926102a3565b615f3a81615efd565b0190565b615f539060208101905f818303910152615f24565b90565b15615f5d57565b615f65610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615f9560048201615f3e565b0390fd5b615fa1611ffa565b50615fab5f611836565b90615fb55f611836565b915b82615fda615fd4615fcf615fca5f61234e565b616411565b61038b565b9161038b565b101561623b57615ff3615fec5f61234e565b8490616460565b61603b60206160096160048461175a565b611766565b6370a082319061603061601b30611772565b92616024610282565b9586948593849361162d565b83526004830161061a565b03915afa908115616236575f91616208575b50908161606261605c5f611836565b9161038b565b146161fc578061608361607d6160786003612b8e565b61035c565b9161035c565b146161d0576160b69060206160a061609b600261161c565b610c28565b63bb3ba04c906160ae610282565b94859261162d565b825281806160c660048201610459565b03915afa80156161cb576160e76160ec916020945f9161619e575b50612b62565b612b6e565b61611663b27b5e756161216161016003612b8e565b9661610a610282565b9788968795869561162d565b8552600485016117de565b03915afa918215616199576161659261615e925f9161616b575b506161588161615261614c5f611836565b9161038b565b11615f56565b90615ed8565b925b61233f565b91615fb7565b61618c915060203d8111616192575b61618481836107f4565b81019061167f565b5f61613b565b503d61617a565b611660565b6161be9150853d81116161c4575b6161b681836107f4565b810190611642565b5f6160e1565b503d6161ac565b611660565b50616165916161f06161f6926161ea64e8d4a51000611781565b906116ca565b90615ed8565b92616160565b50509161616590616160565b616229915060203d811161622f575b61622181836107f4565b81019061167f565b5f61604d565b503d616217565b611660565b90915090565b8061625c6162566162515f61213a565b61035c565b9161035c565b14616278576162769161626e5f61213a565b919091617192565b565b6162bb6162845f61213a565b61628c610282565b9182917fec442f050000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b6162c7611fe2565b506162da5f6162d4616eb7565b0161388f565b90565b616314906162e9611ffa565b5060206162fe6162f9600261161c565b610c28565b6385462d6f9061630c610282565b94859261162d565b8252818061632460048201610459565b03915afa801561640957616364925f916163db575b50602061634e616349600261161c565b610c28565b634f4608a29061635c610282565b95869261162d565b8252818061637460048201610459565b03915afa9081156163d65761639a6163a0926163a5955f916163a8575b5093918461231a565b906116ca565b61172c565b90565b6163c9915060203d81116163cf575b6163c181836107f4565b81019061167f565b5f616391565b503d6163b7565b611660565b6163fc915060203d8111616402575b6163f481836107f4565b81019061167f565b5f616339565b503d6163ea565b611660565b90565b6164285f61642d92616421611ffa565b500161640e565b61733c565b90565b61643c61644191611603565b615dd0565b90565b61645861645361645d9261038b565b610bfd565b610343565b90565b61648b616486616495936164815f6164909561647a612a08565b500161640e565b6173ad565b616430565b616444565b610c1c565b90565b5f7f546f74616c20737570706c792063616e6e6f74206265207a65726f0000000000910152565b6164cc601b6020926102a3565b6164d581616498565b0190565b6164ee9060208101905f8183039101526164bf565b90565b156164f857565b616500610282565b7f08c379a000000000000000000000000000000000000000000000000000000000815280616530600482016164d9565b0390fd5b61654861654361654d926131ad565b610bfd565b61038b565b90565b5f7f546f6b656e20646563696d616c732073686f756c64206265203c3d2031380000910152565b616584601e6020926102a3565b61658d81616550565b0190565b6165a69060208101905f818303910152616577565b90565b156165b057565b6165b8610282565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806165e860048201616591565b0390fd5b6165f59061038b565b604d811161660357600a0a90565b61169d565b906166b7916166bc94616619611ffa565b506166368261663061662a5f611836565b9161038b565b116164f1565b6166548161664d6166476012616534565b9161038b565b11156165a9565b61665c611ffa565b50616665611ffa565b5061668261667d60126166788491616534565b61231a565b6165ec565b906166966166906012616534565b9161038b565b105f146166bf576166ab6166b192829061172c565b9461172c565b5b6116ca565b61172c565b90565b50926166b2565b90816166e26166dc6166d75f61213a565b61035c565b9161035c565b146166fe576166fc91906166f55f61213a565b9091617192565b565b61674161670a5f61213a565b616712610282565b9182917f96c6fd1e0000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b60409061676e616775949695939661676460608401985f85019061060d565b60208301906104f5565b01906104f5565b565b90616782910361038b565b90565b929192616793818390613f7c565b90816167c76167c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61038b565b9161038b565b036167d4575b5050509050565b816167e76167e18761038b565b9161038b565b1061680d5761680493946167fc919392616777565b905f92617006565b805f80806167cd565b5061684c8492919261681d610282565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501616745565b0390fd5b918261686c6168666168615f61213a565b61035c565b9161035c565b146168e6578161688c6168866168815f61213a565b61035c565b9161035c565b1461689f5761689d92919091617192565b565b6168e26168ab5f61213a565b6168b3610282565b9182917fec442f050000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b6169296168f25f61213a565b6168fa610282565b9182917f96c6fd1e0000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b61693690610c1c565b90565b6169423061692d565b61697461696e7f000000000000000000000000000000000000000000000000000000000000000061035c565b9161035c565b1480156169be575b61698257565b61698a610282565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806169ba60048201610459565b0390fd5b506169c76173ce565b6169f96169f37f000000000000000000000000000000000000000000000000000000000000000061035c565b9161035c565b141561697c565b50616a09616c37565b565b616a1490616a00565b565b616a1f90610c00565b90565b616a2b90616a16565b90565b616a3790610c1c565b90565b616a4381610928565b03616a4a57565b5f80fd5b90505190616a5b82616a3a565b565b90602082820312616a7657616a73915f01616a4e565b90565b61028c565b9190616aa96020616a93616a8e86616a22565b616a2e565b6352d1902d90616aa1610282565b93849261162d565b82528180616ab960048201610459565b03915afa80915f92616b89575b50155f14616b1a575050906001616adb57505b565b616b1690616ae7610282565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b9283616b35616b2f616b2a613301565b610928565b91610928565b03616b4a57616b459293506173f4565b616ad9565b616b8584616b56610282565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610938565b0390fd5b616bab91925060203d8111616bb2575b616ba381836107f4565b810190616a5d565b905f616ac6565b503d616b99565b616bc23061692d565b616bf4616bee7f000000000000000000000000000000000000000000000000000000000000000061035c565b9161035c565b03616bfb57565b616c03610282565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280616c3360048201610459565b0390fd5b616c3f613823565b616c58616c52616c4d615d52565b61035c565b9161035c565b03616c5f57565b616ca1616c6a615d52565b616c72610282565b9182917f118cdaa70000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b616cae90610c00565b90565b616cc5616cc0616cca92610343565b610bfd565b61038b565b90565b616ce1616cdc616ce69261038b565b6132e0565b610928565b90565b90616d1b616d15616d10616d0b5f616d2096616d036115c2565b500194616ca5565b616cb1565b616ccd565b9161640e565b6175f3565b90565b616d2b616e93565b616d43616d395f8301612b8e565b915f849101613e11565b90616d77616d717f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093613796565b91613796565b91616d80610282565b80616d8a81610459565b0390a3565b616dce90616d9b611ffa565b506020616db8616db3616dae6003612b8e565b612495565b6124a1565b63313ce56790616dc6610282565b94859261162d565b82528180616dde60048201610459565b03915afa8015616e8e57616e52616e42616e06616e5793616e5d965f91616e60575b506124ee565b93616e3d616e12612022565b91616e2f83616e29616e235f611836565b9161038b565b116164f1565b616e37615f99565b906116ca565b61172c565b92616e4d6012616534565b61231a565b6165ec565b9061172c565b90565b616e81915060203d8111616e87575b616e7981836107f4565b8101906124d0565b5f616e00565b503d616e6f565b611660565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b616ef25f616ef792616eeb613b0c565b500161640e565b6177de565b616eff613b0c565b5090565b90616f1591616f106177f5565b616f17565b565b90616f2191617a02565b565b90616f2d91616f03565b565b616f4090616f3b6177f5565b616f42565b565b616f4b90617a93565b565b616f5690616f2f565b565b616f606177f5565b616f68616f6a565b565b616f72617acd565b565b616f7c616f58565b565b616f866177f5565b565b616f90616f7e565b565b90616fc4616fbe616fb9616fb45f616fc996616fac6115c2565b500194616ca5565b616cb1565b616ccd565b9161640e565b617b0c565b90565b90616ffe616ff8616ff3616fee5f61700396616fe66115c2565b500194616ca5565b616cb1565b616ccd565b9161640e565b617b6f565b90565b9092617010615d2e565b8261702b6170256170205f61213a565b61035c565b9161035c565b14617119578461704b6170456170405f61213a565b61035c565b9161035c565b146170d2576170729061706d61706660018793018690613f66565b87906137a2565b615def565b61707c575b505050565b9190916170c76170b56170af7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593613796565b93613796565b936170be610282565b91829182610502565b0390a35f8080617077565b6171156170de5f61213a565b6170e6610282565b9182917f94280d620000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b61715c6171255f61213a565b61712d610282565b9182917fe602df050000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b9061718f910161038b565b90565b91909161719d615d2e565b816171b86171b26171ad5f61213a565b61035c565b9161035c565b145f146172a3576171df836171d960028401916171d483612015565b615ed8565b90615def565b5b836171fb6171f56171f05f61213a565b61035c565b9161035c565b145f14617274576172239061721d60028592019161721883612015565b616777565b90615def565b5b91909161726f61725d6172577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93613796565b93613796565b93617266610282565b91829182610502565b0390a3565b61729e906172986172895f86930187906137a2565b9161729383612015565b617184565b90615def565b617224565b6172b86172b35f830184906137a2565b612015565b806172cb6172c58661038b565b9161038b565b106172f5576172de6172f0918590616777565b6172eb5f840185906137a2565b615def565b6171e0565b9161733491509192617305610282565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501616745565b0390fd5b5490565b5f61735091617349611ffa565b5001617338565b90565b5f5260205f2090565b61736581617338565b82101561737f57617377600191617353565b910201905f90565b61411d565b90565b61739790600861739c9302610bab565b617384565b90565b906173aa9154617387565b90565b6173cb915f6173c5926173be6132c5565b500161735c565b9061739f565b90565b6173d6612a08565b506173f15f6173eb6173e6613301565b617ba4565b01612b8e565b90565b906173fe82617ba7565b816174297fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91613796565b90617432610282565b8061743c81610459565b0390a26174488161420e565b61745a6174545f611836565b9161038b565b115f1461746e5761746a91617cb7565b505b565b5050617478617c1c565b61746c565b61748690610928565b90565b906174939061747d565b5f5260205260405f2090565b1b90565b919060086174dd9102916174d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8461749f565b9261749f565b9181191691161790565b6174f090611603565b90565b91906175096175046175119361747d565b6174e7565b9083546174a3565b9055565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5490565b5f5260205f2090565b61755b81617545565b8210156175755761756d600191617549565b910201905f90565b61411d565b61758c916175866132c5565b916174f3565b565b61759781617545565b80156175b85760019003906175b56175af8383617552565b9061757a565b55565b617518565b91906175d36175ce6175db93615dd0565b615dec565b9083546174a3565b9055565b6175f1916175eb611ffa565b916175bd565b565b6175fb6115c2565b5061761261760d600183018490617489565b612015565b90816176266176205f611836565b9161038b565b14155f146176f2576176a492600161769f928461764d5f9661764785615e92565b9061231a565b61766a61765b888501617338565b61766486615e92565b9061231a565b8061767d6176778461038b565b9161038b565b036176a9575b505050617699617694868301617515565b61758e565b01617489565b6175df565b600190565b6176ea926176dc6176c86176c26176e5948c890161735c565b9061739f565b936176d685918c890161735c565b906174f3565b91858501617489565b615def565b5f8080617683565b5050505f90565b606090565b60209181520190565b61771090610928565b9052565b9061772181602093617707565b0190565b61773161773691611603565b617384565b90565b6177439054617725565b90565b60010190565b9061776961776361775c84617338565b80936176fe565b92617353565b905f5b8181106177795750505090565b90919261779961779360019261778e87617739565b617714565b94617746565b910191909161776c565b906177ad9161774c565b90565b906177d06177c9926177c0610282565b938480926177a3565b03836107f4565b565b6177db906177b0565b90565b5f6177f2916177eb6176f9565b50016177d2565b90565b617806617800617ce6565b156103de565b61780c57565b617814610282565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061784460048201610459565b0390fd5b9061785a916178556177f5565b6179de565b565b601f602091010490565b5b818110617872575050565b8061787f5f6001936175df565b01617867565b9190601f8111617895575b505050565b6178a16178c6936114d3565b9060206178ad8461785c565b830193106178ce575b6178bf9061785c565b0190617866565b5f8080617890565b91506178bf819290506178b6565b906178ec905f1990600802610bab565b191690565b816178fb916178dc565b906002021790565b9061790d8161029f565b9067ffffffffffffffff82116179cd576179318261792b85546114a0565b85617885565b602090601f831160011461796557918091617954935f92617959575b50506178f1565b90555b565b90915001515f8061794d565b601f19831691617974856114d3565b925f5b8181106179b55750916002939185600196941061799b575b50505002019055617957565b6179ab910151601f8416906178dc565b90555f808061798f565b91936020600181928787015181550195019201617977565b6107c7565b906179dc91617903565b565b6004617a00926179f96179ef615d2e565b93600385016179d2565b91016179d2565b565b90617a0c91617848565b565b617a1f90617a1a6177f5565b617a21565b565b80617a3c617a36617a315f61213a565b61035c565b9161035c565b14617a4c57617a4a90616d23565b565b617a8f617a585f61213a565b617a60610282565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b617a9c90617a0e565b565b617aa66177f5565b617aae617ab0565b565b617acb617abb617160565b5f617ac4615eae565b9101615def565b565b617ad5617a9e565b565b9081549168010000000000000000831015617b075782617aff916001617b0595018155617552565b906174f3565b565b6107c7565b617b146115c2565b50617b29617b23828490617b6f565b156103de565b5f14617b6957617b5f617b6492617b4b617b445f8501617515565b8290617ad7565b6001617b585f8501617338565b9301617489565b615def565b600190565b50505f90565b617b8d916001617b8892617b816115c2565b5001617489565b612015565b617b9f617b995f611836565b9161038b565b141590565b90565b803b617bbb617bb55f611836565b9161038b565b14617bdd57617bdb905f617bd5617bd0613301565b617ba4565b01613e11565b565b617c1890617be9610282565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b34617c2f617c295f611836565b9161038b565b11617c3657565b617c3e610282565b7fb398979f00000000000000000000000000000000000000000000000000000000815280617c6e60048201610459565b0390fd5b606090565b90617c89617c8483610832565b61081d565b918252565b3d5f14617ca957617c9e3d617c77565b903d5f602084013e5b565b617cb1617c72565b90617ca7565b5f80617ce393617cc5617c72565b508390602081019051915af490617cda617c8e565b90919091617d04565b90565b617cee6115c2565b50617d015f617cfb616eb7565b01613861565b90565b90617d1890617d11617c72565b50156103de565b5f14617d245750617da8565b617d2d8261420e565b617d3f617d395f611836565b9161038b565b1480617d8d575b617d4e575090565b617d8990617d5a610282565b9182917f9996b3150000000000000000000000000000000000000000000000000000000083526004830161061a565b0390fd5b50803b617da2617d9c5f611836565b9161038b565b14617d46565b617db18161420e565b617dc3617dbd5f611836565b9161038b565b115f14617dd257805190602001fd5b617dda610282565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280617e0a60048201610459565b0390fdfea26469706673582212209159a6065dd8b4ee1aca7be41a399ba6e883a08cb1c66c7f6775a544fd0c8ac364736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x146A JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x27C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0xCFC7386 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xD8E6E2C EQ PUSH2 0x268 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x1A168DA2 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x27D54A92 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x2BDD955A EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x2F865568 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x3C2066A9 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x599F69F7 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x5FA7B584 EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x71DDCFB8 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xAA6CA808 EQ PUSH2 0x1FA JUMPI DUP1 PUSH4 0xAA95D893 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xD48BFCA7 EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0xE67AD759 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xEEDC3C50 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFE0A4DD1 EQ PUSH2 0x1C3 JUMPI PUSH4 0xFE330A51 SUB PUSH2 0xE JUMPI PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x13B8 JUMP JUMPDEST PUSH2 0x1385 JUMP JUMPDEST PUSH2 0x1351 JUMP JUMPDEST PUSH2 0x1107 JUMP JUMPDEST PUSH2 0x10D4 JUMP JUMPDEST PUSH2 0x109E JUMP JUMPDEST PUSH2 0x103E JUMP JUMPDEST PUSH2 0x1009 JUMP JUMPDEST PUSH2 0xF88 JUMP JUMPDEST PUSH2 0xF53 JUMP JUMPDEST PUSH2 0xE83 JUMP JUMPDEST PUSH2 0xE4E JUMP JUMPDEST PUSH2 0xD79 JUMP JUMPDEST PUSH2 0xD44 JUMP JUMPDEST PUSH2 0xD10 JUMP JUMPDEST PUSH2 0xC8B JUMP JUMPDEST PUSH2 0xC56 JUMP JUMPDEST PUSH2 0xB76 JUMP JUMPDEST PUSH2 0xB43 JUMP JUMPDEST PUSH2 0xB0E JUMP JUMPDEST PUSH2 0xADB JUMP JUMPDEST PUSH2 0xA9E JUMP JUMPDEST PUSH2 0x94D JUMP JUMPDEST PUSH2 0x8FE JUMP JUMPDEST PUSH2 0x78C JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH2 0x6FC JUMP JUMPDEST PUSH2 0x6C6 JUMP JUMPDEST PUSH2 0x664 JUMP JUMPDEST PUSH2 0x62F JUMP JUMPDEST PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x45E JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x29A JUMPI JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x2E0 PUSH2 0x2E9 PUSH1 0x20 SWAP4 PUSH2 0x2EE SWAP4 PUSH2 0x2D7 DUP2 PUSH2 0x29F JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x2A3 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x2AC JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x307 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x2C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x33A JUMPI PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x336 PUSH2 0x325 PUSH2 0x15A3 JUMP JUMPDEST PUSH2 0x32D PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x365 SWAP1 PUSH2 0x343 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x371 DUP2 PUSH2 0x35C JUMP JUMPDEST SUB PUSH2 0x378 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x389 DUP3 PUSH2 0x368 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x397 DUP2 PUSH2 0x38B JUMP JUMPDEST SUB PUSH2 0x39E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x3AF DUP3 PUSH2 0x38E JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x3D9 JUMPI DUP1 PUSH2 0x3CD PUSH2 0x3D6 SWAP3 PUSH0 DUP7 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x3EC SWAP1 PUSH2 0x3DE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x403 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3E3 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x436 JUMPI PUSH2 0x432 PUSH2 0x421 PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST SWAP1 PUSH2 0x15C6 JUMP JUMPDEST PUSH2 0x429 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3F0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x454 JUMPI PUSH2 0x451 SWAP2 PUSH0 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x48C JUMPI PUSH2 0x476 PUSH2 0x471 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x1FD7 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x488 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4A7 SWAP1 PUSH2 0x491 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4BE SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x49E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4F0 JUMPI PUSH2 0x4D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x4EC PUSH2 0x4DB PUSH2 0x1FE6 JUMP JUMPDEST PUSH2 0x4E3 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4AB JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH2 0x4FE SWAP1 PUSH2 0x38B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x515 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x547 JUMPI PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x543 PUSH2 0x532 PUSH2 0x2022 JUMP JUMPDEST PUSH2 0x53A PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x57A JUMPI PUSH2 0x564 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x29CE JUMP JUMPDEST PUSH2 0x56C PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x576 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x5B4 JUMPI PUSH2 0x5B1 PUSH2 0x59A DUP5 PUSH0 DUP6 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH2 0x5A8 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x5EA JUMPI PUSH2 0x5E6 PUSH2 0x5D5 PUSH2 0x5CF CALLDATASIZE PUSH1 0x4 PUSH2 0x57F JUMP JUMPDEST SWAP2 PUSH2 0x29D9 JUMP JUMPDEST PUSH2 0x5DD PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3F0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x608 JUMPI PUSH2 0x605 SWAP2 PUSH0 ADD PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH2 0x616 SWAP1 PUSH2 0x35C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x62D SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x65F JUMPI PUSH2 0x65B PUSH2 0x64A PUSH2 0x645 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x2A30 JUMP JUMPDEST PUSH2 0x652 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x694 JUMPI PUSH2 0x674 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x690 PUSH2 0x67F PUSH2 0x2B42 JUMP JUMPDEST PUSH2 0x687 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x6C1 JUMPI DUP1 PUSH2 0x6B5 PUSH2 0x6BE SWAP3 PUSH0 DUP7 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x6F7 JUMPI PUSH2 0x6F3 PUSH2 0x6E2 PUSH2 0x6DC CALLDATASIZE PUSH1 0x4 PUSH2 0x699 JUMP JUMPDEST SWAP1 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x6EA PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x72A JUMPI PUSH2 0x714 PUSH2 0x70F CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x2E03 JUMP JUMPDEST PUSH2 0x71C PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x726 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x73E SWAP1 PUSH2 0x72F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x755 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x735 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x787 JUMPI PUSH2 0x767 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x783 PUSH2 0x772 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0x77A PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x742 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x7BA JUMPI PUSH2 0x79C CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x7A4 PUSH2 0x3286 JUMP JUMPDEST PUSH2 0x7AC PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x7B6 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x7FE SWAP1 PUSH2 0x2B7 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x818 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0x830 PUSH2 0x829 PUSH2 0x282 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x7F4 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x850 JUMPI PUSH2 0x84C PUSH1 0x20 SWAP2 PUSH2 0x2B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x875 PUSH2 0x870 DUP3 PUSH2 0x832 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x891 JUMPI PUSH2 0x88F SWAP3 PUSH2 0x855 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7C3 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x8B4 JUMPI DUP2 PUSH1 0x20 PUSH2 0x8B1 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x860 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x8F9 JUMPI PUSH2 0x8D2 DUP4 PUSH0 DUP4 ADD PUSH2 0x37C JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x8F4 JUMPI PUSH2 0x8F1 SWAP3 ADD PUSH2 0x896 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH2 0x912 PUSH2 0x90C CALLDATASIZE PUSH1 0x4 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x32B9 JUMP JUMPDEST PUSH2 0x91A PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x924 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x934 SWAP1 PUSH2 0x928 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x94B SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x92B JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x97D JUMPI PUSH2 0x95D CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x979 PUSH2 0x968 PUSH2 0x3339 JUMP JUMPDEST PUSH2 0x970 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x938 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x9C4 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x9BF JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x9BA JUMPI JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xA03 JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x9FE JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0x9F9 JUMPI JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH1 0xC0 DUP2 DUP4 SUB SLT PUSH2 0xA99 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA94 JUMPI DUP3 PUSH2 0xA31 SWAP2 DUP4 ADD PUSH2 0x98A JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA8F JUMPI DUP3 PUSH2 0xA54 SWAP2 DUP6 ADD PUSH2 0x9C9 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0xA64 DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x37C JUMP JUMPDEST SWAP3 PUSH2 0xA8C PUSH2 0xA75 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH2 0xA83 DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0xAD6 JUMPI PUSH2 0xAC0 PUSH2 0xAB1 CALLDATASIZE PUSH1 0x4 PUSH2 0xA08 JUMP JUMPDEST SWAP7 SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP5 SWAP4 SWAP3 SWAP4 PUSH2 0x35A6 JUMP JUMPDEST PUSH2 0xAC8 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xAD2 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xB09 JUMPI PUSH2 0xAF3 PUSH2 0xAEE CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x378B JUMP JUMPDEST PUSH2 0xAFB PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xB05 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xB3E JUMPI PUSH2 0xB3A PUSH2 0xB29 PUSH2 0xB24 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x37B8 JUMP JUMPDEST PUSH2 0xB31 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xB71 JUMPI PUSH2 0xB53 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xB5B PUSH2 0x3804 JUMP JUMPDEST PUSH2 0xB63 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xB6D DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xBA6 JUMPI PUSH2 0xBA2 PUSH2 0xB91 PUSH2 0xB8C CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x380E JUMP JUMPDEST PUSH2 0xB99 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xBD8 SWAP1 PUSH1 0x8 PUSH2 0xBDD SWAP4 MUL PUSH2 0xBAB JUMP JUMPDEST PUSH2 0xBAF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBEB SWAP2 SLOAD PUSH2 0xBC8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBFA PUSH1 0x2 PUSH0 SWAP1 PUSH2 0xBE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC14 PUSH2 0xC0F PUSH2 0xC19 SWAP3 PUSH2 0x343 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC25 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC31 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC3D SWAP1 PUSH2 0xC28 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xC54 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xC34 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xC86 JUMPI PUSH2 0xC66 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xC82 PUSH2 0xC71 PUSH2 0xBEE JUMP JUMPDEST PUSH2 0xC79 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC41 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xCBB JUMPI PUSH2 0xC9B CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xCB7 PUSH2 0xCA6 PUSH2 0x3823 JUMP JUMPDEST PUSH2 0xCAE PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH2 0xCC9 DUP2 PUSH2 0x491 JUMP JUMPDEST SUB PUSH2 0xCD0 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xCE1 DUP3 PUSH2 0xCC0 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xD0B JUMPI DUP1 PUSH2 0xCFF PUSH2 0xD08 SWAP3 PUSH0 DUP7 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0xCD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0xD3F JUMPI PUSH2 0xD29 PUSH2 0xD23 CALLDATASIZE PUSH1 0x4 PUSH2 0xCE3 JUMP JUMPDEST SWAP1 PUSH2 0x3ABF JUMP JUMPDEST PUSH2 0xD31 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xD3B DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xD74 JUMPI PUSH2 0xD54 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xD70 PUSH2 0xD5F PUSH2 0x3ACB JUMP JUMPDEST PUSH2 0xD67 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xDAA JUMPI PUSH2 0xDA6 PUSH2 0xD95 PUSH2 0xD8F CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST SWAP1 PUSH2 0x3AEA JUMP JUMPDEST PUSH2 0xD9D PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3F0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xDCB SWAP1 PUSH2 0x35C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xDDC DUP2 PUSH1 0x20 SWAP4 PUSH2 0xDC2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE03 PUSH2 0xDFD PUSH2 0xDF6 DUP5 PUSH2 0xDAF JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xDB3 JUMP JUMPDEST SWAP3 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xE13 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0xE2C PUSH2 0xE26 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0xDCF JUMP JUMPDEST SWAP5 PUSH2 0xDE0 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0xE4B SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xDE6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE7E JUMPI PUSH2 0xE5E CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xE7A PUSH2 0xE69 PUSH2 0x3B11 JUMP JUMPDEST PUSH2 0xE71 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xE36 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xEB3 JUMPI PUSH2 0xEAF PUSH2 0xE9E PUSH2 0xE99 CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x3B2E JUMP JUMPDEST PUSH2 0xEA6 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xED6 JUMPI PUSH2 0xED2 PUSH1 0x20 SWAP2 PUSH2 0x2B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0xEED PUSH2 0xEE8 DUP4 PUSH2 0xEB8 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xF23 PUSH1 0x5 PUSH2 0xEDB JUMP JUMPDEST SWAP1 PUSH2 0xF30 PUSH1 0x20 DUP4 ADD PUSH2 0xEF2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF3A PUSH2 0xF19 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF45 PUSH2 0xF32 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF50 PUSH2 0xF3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF83 JUMPI PUSH2 0xF63 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0xF7F PUSH2 0xF6E PUSH2 0xF48 JUMP JUMPDEST PUSH2 0xF76 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0xFB6 JUMPI PUSH2 0xFA0 PUSH2 0xF9B CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x3F28 JUMP JUMPDEST PUSH2 0xFA8 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0xFB2 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xFE4 SWAP1 PUSH1 0x8 PUSH2 0xFE9 SWAP4 MUL PUSH2 0xBAB JUMP JUMPDEST PUSH2 0xFBB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xFF7 SWAP2 SLOAD PUSH2 0xFD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1006 PUSH1 0x3 PUSH0 SWAP1 PUSH2 0xFEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1039 JUMPI PUSH2 0x1019 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x1035 PUSH2 0x1024 PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x102C PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x106C JUMPI PUSH2 0x1056 PUSH2 0x1051 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x3F5B JUMP JUMPDEST PUSH2 0x105E PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x1068 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x1099 JUMPI DUP1 PUSH2 0x108D PUSH2 0x1096 SWAP3 PUSH0 DUP7 ADD PUSH2 0x37C JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x10CF JUMPI PUSH2 0x10CB PUSH2 0x10BA PUSH2 0x10B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1071 JUMP JUMPDEST SWAP1 PUSH2 0x3F7C JUMP JUMPDEST PUSH2 0x10C2 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x1102 JUMPI PUSH2 0x10EC PUSH2 0x10E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x3FD5 JUMP JUMPDEST PUSH2 0x10F4 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x10FE DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x1137 JUMPI PUSH2 0x1117 CALLDATASIZE PUSH1 0x4 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x1133 PUSH2 0x1122 PUSH2 0x3FE0 JUMP JUMPDEST PUSH2 0x112A PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1154 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SLT PUSH2 0x11C5 JUMPI PUSH2 0x1178 PUSH1 0x60 PUSH2 0x81D JUMP JUMPDEST SWAP3 PUSH2 0x1185 DUP2 PUSH0 DUP5 ADD PUSH2 0x37C JUMP JUMPDEST PUSH0 DUP6 ADD MSTORE PUSH2 0x1196 DUP2 PUSH1 0x20 DUP5 ADD PUSH2 0x3A2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x11C0 JUMPI PUSH2 0x11B9 SWAP3 ADD PUSH2 0x896 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x115D JUMP JUMPDEST PUSH2 0x1159 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x11DE PUSH2 0x11D9 DUP3 PUSH2 0x113C JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x1235 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1204 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1230 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x1225 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x1161 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x11F6 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1258 JUMPI DUP2 PUSH1 0x20 PUSH2 0x1255 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x11CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1275 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x128F PUSH2 0x128A DUP3 PUSH2 0x125D JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x12CC JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x12B3 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x12C1 DUP5 DUP7 PUSH2 0x37C JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x12A6 JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x12EF JUMPI DUP2 PUSH1 0x20 PUSH2 0x12EC SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x127A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7BF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x134C JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1347 JUMPI DUP4 PUSH2 0x1320 SWAP2 DUP4 ADD PUSH2 0x123A JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1342 JUMPI PUSH2 0x133F SWAP3 ADD PUSH2 0x12D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x33F JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x1380 JUMPI PUSH2 0x136A PUSH2 0x1364 CALLDATASIZE PUSH1 0x4 PUSH2 0x12F4 JUMP JUMPDEST SWAP1 PUSH2 0x4FF3 JUMP JUMPDEST PUSH2 0x1372 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x137C DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x13B3 JUMPI PUSH2 0x139D PUSH2 0x1398 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x5084 JUMP JUMPDEST PUSH2 0x13A5 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x13AF DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST CALLVALUE PUSH2 0x13E6 JUMPI PUSH2 0x13D0 PUSH2 0x13CB CALLDATASIZE PUSH1 0x4 PUSH2 0x43B JUMP JUMPDEST PUSH2 0x5D07 JUMP JUMPDEST PUSH2 0x13D8 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x13E2 DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH1 0x80 DUP2 DUP4 SUB SLT PUSH2 0x142C JUMPI PUSH2 0x1401 DUP3 PUSH0 DUP4 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP3 PUSH2 0x1429 PUSH2 0x1412 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP4 PUSH2 0x1420 DUP2 PUSH1 0x40 DUP7 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP4 PUSH1 0x60 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST CALLVALUE PUSH2 0x1465 JUMPI PUSH2 0x1461 PUSH2 0x1450 PUSH2 0x1447 CALLDATASIZE PUSH1 0x4 PUSH2 0x13EB JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x5D12 JUMP JUMPDEST PUSH2 0x1458 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x14C0 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x14BB JUMPI JUMP JUMPDEST PUSH2 0x1473 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x14F6 PUSH2 0x14EF DUP4 PUSH2 0x14A0 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x14CA JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x154D JUMPI POP PUSH1 0x1 EQ PUSH2 0x1511 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x151E SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x14D3 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x1535 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x150C JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x1522 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x150C JUMP JUMPDEST SWAP1 PUSH2 0x1572 SWAP2 PUSH2 0x14DC JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1595 PUSH2 0x158E SWAP3 PUSH2 0x1585 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x1568 JUMP JUMPDEST SUB DUP4 PUSH2 0x7F4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x15A0 SWAP1 PUSH2 0x1575 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15AB PUSH2 0x146E JUMP JUMPDEST POP PUSH2 0x15BF PUSH1 0x3 PUSH2 0x15B9 PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x1597 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x15E3 SWAP2 PUSH2 0x15D2 PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x15DB PUSH2 0x5D52 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x5D5F JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x15F9 SWAP1 PUSH2 0x15F4 PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x1601 PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x1614 PUSH2 0x1619 SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0xBAF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1626 SWAP1 SLOAD PUSH2 0x1608 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1640 DUP3 PUSH2 0x368 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x165B JUMPI PUSH2 0x1658 SWAP2 PUSH0 ADD PUSH2 0x1633 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH2 0x1668 PUSH2 0x282 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x167D DUP3 PUSH2 0x38E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1698 JUMPI PUSH2 0x1695 SWAP2 PUSH0 ADD PUSH2 0x1670 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x16D9 PUSH2 0x16DF SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x38B JUMP JUMPDEST SWAP3 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x16EB DUP4 DUP3 MUL PUSH2 0x38B JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x16FA JUMPI JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1738 PUSH2 0x173E SWAP2 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x1749 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x16FF JUMP JUMPDEST PUSH2 0x1757 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1763 SWAP1 PUSH2 0x174E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x176F SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x177B SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1795 PUSH2 0x1790 PUSH2 0x179A SWAP3 PUSH2 0x177E JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17A6 DUP2 PUSH2 0x3DE JUMP JUMPDEST SUB PUSH2 0x17AD JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x17BE DUP3 PUSH2 0x179D JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x17D9 JUMPI PUSH2 0x17D6 SWAP2 PUSH0 ADD PUSH2 0x17B1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x1807 PUSH2 0x180E SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x17FD PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1831 SWAP3 SWAP5 SWAP4 PUSH2 0x182A PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x184A PUSH2 0x1845 PUSH2 0x184F SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x726F000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x546F74616C2042414C554E4920737570706C792063616E6E6F74206265207A65 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x18AC PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x18B5 DUP2 PUSH2 0x1852 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x18CE SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x189F JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x18D8 JUMPI JUMP JUMPDEST PUSH2 0x18E0 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1910 PUSH1 0x4 DUP3 ADD PUSH2 0x18B9 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x555344432062616C616E636520697320696E73756666696369656E7400000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1948 PUSH1 0x1C PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x1951 DUP2 PUSH2 0x1914 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x196A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x193B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1974 JUMPI JUMP JUMPDEST PUSH2 0x197C PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19AC PUSH1 0x4 DUP3 ADD PUSH2 0x1955 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x436865636B2074686520746F6B656E20616C6C6F77616E636500000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x19E4 PUSH1 0x19 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x19ED DUP2 PUSH2 0x19B0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1A06 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x19D7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1A10 JUMPI JUMP JUMPDEST PUSH2 0x1A18 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1A48 PUSH1 0x4 DUP3 ADD PUSH2 0x19F1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1A6D SWAP3 SWAP5 SWAP4 PUSH2 0x1A66 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A9C PUSH1 0x20 PUSH2 0x1A86 PUSH2 0x1A81 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x1A94 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1AAC PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FD2 JUMPI PUSH0 SWAP2 PUSH2 0x1FA4 JUMPI JUMPDEST POP SWAP1 PUSH2 0x1AED PUSH1 0x20 PUSH2 0x1AD7 PUSH2 0x1AD2 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x1AE5 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1AFD PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F9F JUMPI PUSH0 SWAP2 PUSH2 0x1F71 JUMPI JUMPDEST POP PUSH2 0x1B3D PUSH1 0x20 PUSH2 0x1B27 PUSH2 0x1B22 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x1B35 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1B4D PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F6C JUMPI PUSH0 SWAP2 PUSH2 0x1F3E JUMPI JUMPDEST POP SWAP2 PUSH2 0x1B8E PUSH1 0x20 PUSH2 0x1B78 PUSH2 0x1B73 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x1B86 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1B9E PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F39 JUMPI PUSH0 SWAP2 PUSH2 0x1F0B JUMPI JUMPDEST POP SWAP3 PUSH2 0x1BBA PUSH2 0x5F99 JUMP JUMPDEST PUSH2 0x1BD6 PUSH2 0x1BCF PUSH2 0x1BC8 PUSH2 0x2022 JUMP JUMPDEST SWAP3 DUP6 PUSH2 0x16CA JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x172C JUMP JUMPDEST SWAP5 DUP6 PUSH1 0x20 PUSH2 0x1BEB PUSH2 0x1BE6 DUP9 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x23B872DD SWAP1 PUSH2 0x1C2F PUSH0 CALLER SWAP4 PUSH2 0x1C3A PUSH2 0x1C1B PUSH2 0x1C06 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP9 PUSH2 0x1C15 PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x1C23 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x17DE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1F06 JUMPI PUSH2 0x1EDA JUMPI JUMPDEST POP PUSH2 0x1C8A PUSH1 0x20 PUSH2 0x1C60 PUSH2 0x1C5B DUP9 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1C7F CALLER SWAP3 PUSH2 0x1C73 PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1ED5 JUMPI PUSH0 SWAP2 PUSH2 0x1EA7 JUMPI JUMPDEST POP PUSH2 0x1CAE PUSH2 0x1CA9 DUP8 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP4 PUSH1 0x20 PUSH4 0xDD62ED3E SWAP6 CALLER SWAP1 PUSH2 0x1CDD PUSH2 0x1CC5 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP9 PUSH2 0x1CE8 PUSH2 0x1CD1 PUSH2 0x282 JUMP JUMPDEST SWAP11 DUP12 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1810 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1EA2 JUMPI PUSH1 0x20 SWAP9 PUSH2 0x1E03 SWAP8 PUSH2 0x1D94 PUSH2 0x1DF8 SWAP8 PUSH2 0x1D64 PUSH2 0x1DEE SWAP6 PUSH2 0x1D34 PUSH2 0x1DF3 SWAP10 PUSH2 0x1DFE SWAP14 PUSH0 SWAP2 PUSH2 0x1E74 JUMPI JUMPDEST POP SWAP4 PUSH2 0x1D2E PUSH2 0x1D28 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x18D1 JUMP JUMPDEST PUSH2 0x1D5D PUSH2 0x1D57 PUSH2 0x1D52 DUP9 PUSH2 0x1D4C PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x196D JUMP JUMPDEST PUSH2 0x1D8D PUSH2 0x1D87 PUSH2 0x1D82 DUP7 PUSH2 0x1D7C PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x1A09 JUMP JUMPDEST PUSH2 0x1D9F CALLER DUP3 SWAP1 PUSH2 0x6241 JUMP JUMPDEST CALLER SWAP1 PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 SWAP2 PUSH2 0x1DD7 PUSH2 0x1DCE PUSH2 0x282 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP1 LOG1 PUSH2 0x1DE8 PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP3 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH2 0x1E26 PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x1E31 PUSH2 0x1E1A PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1E6F JUMPI PUSH2 0x1E43 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1E63 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E68 JUMPI JUMPDEST PUSH2 0x1E5B DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x1E40 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E51 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x1E95 SWAP3 POP RETURNDATASIZE DUP2 GT PUSH2 0x1E9B JUMPI JUMPDEST PUSH2 0x1E8D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x1D1A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E83 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1EC8 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1ECE JUMPI JUMPDEST PUSH2 0x1EC0 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x1C9C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EB6 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1EFA SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EFF JUMPI JUMPDEST PUSH2 0x1EF2 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x1C49 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EE8 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1F2C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F32 JUMPI JUMPDEST PUSH2 0x1F24 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x1BB0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F1A JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1F5F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F65 JUMPI JUMPDEST PUSH2 0x1F57 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x1B5F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F4D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1F92 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F98 JUMPI JUMPDEST PUSH2 0x1F8A DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x1B0F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F80 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1FC5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FCB JUMPI JUMPDEST PUSH2 0x1FBD DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x1ABE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1FB3 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1FE0 SWAP1 PUSH2 0x15E8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1FEE PUSH2 0x1FE2 JUMP JUMPDEST POP PUSH2 0x1FF7 PUSH2 0x62BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x200D PUSH2 0x2012 SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x1FFE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x201F SWAP1 SLOAD PUSH2 0x2001 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x202A PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x203E PUSH1 0x2 PUSH2 0x2038 PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x2015 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2052 SWAP1 PUSH2 0x204D PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x25A6 JUMP JUMPDEST PUSH2 0x205A PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x2030000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x4275726E20616D6F756E74206D7573742062652067726561746572207468616E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x20B6 PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x20BF DUP2 PUSH2 0x205C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x20D8 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x20A9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x20E2 JUMPI JUMP JUMPDEST PUSH2 0x20EA PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x211A PUSH1 0x4 DUP3 ADD PUSH2 0x20C3 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2132 PUSH2 0x212D PUSH2 0x2137 SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2143 SWAP1 PUSH2 0x211E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x5472656173757279206E6F742073657400000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x217A PUSH1 0x10 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x2183 DUP2 PUSH2 0x2146 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x219C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x216D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x21A6 JUMPI JUMP JUMPDEST PUSH2 0x21AE PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x21DE PUSH1 0x4 DUP3 ADD PUSH2 0x2187 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742042414C00000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2216 PUSH1 0x10 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x221F DUP2 PUSH2 0x21E2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2238 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2209 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2242 JUMPI JUMP JUMPDEST PUSH2 0x224A PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x227A PUSH1 0x4 DUP3 ADD PUSH2 0x2223 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4665652063616C63756C6174696F6E206572726F720000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x22B2 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x22BB DUP2 PUSH2 0x227E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x22D4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x22A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x22DE JUMPI JUMP JUMPDEST PUSH2 0x22E6 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2316 PUSH1 0x4 DUP3 ADD PUSH2 0x22BF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2329 PUSH2 0x232F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x38B JUMP JUMPDEST SWAP3 PUSH2 0x38B JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x233A JUMPI JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST PUSH1 0x1 PUSH2 0x234B SWAP2 ADD PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420746F6B656E20616464726573730000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2385 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x238E DUP2 PUSH2 0x2351 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x23A7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2378 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x23B1 JUMPI JUMP JUMPDEST PUSH2 0x23B9 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x23E9 PUSH1 0x4 DUP3 ADD PUSH2 0x2392 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x546F74616C20737570706C792069732030000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2421 PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x242A DUP2 PUSH2 0x23ED JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2443 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2414 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x244D JUMPI JUMP JUMPDEST PUSH2 0x2455 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2485 PUSH1 0x4 DUP3 ADD PUSH2 0x242E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2492 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x249E SWAP1 PUSH2 0x2489 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24AA SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24B6 DUP2 PUSH2 0x72F JUMP JUMPDEST SUB PUSH2 0x24BD JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x24CE DUP3 PUSH2 0x24AD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x24E9 JUMPI PUSH2 0x24E6 SWAP2 PUSH0 ADD PUSH2 0x24C1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH2 0x2502 PUSH2 0x24FD PUSH2 0x2507 SWAP3 PUSH2 0x72F JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x53686172652063616C63756C6174696F6E206572726F72000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x253E PUSH1 0x17 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x2547 DUP2 PUSH2 0x250A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2560 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2531 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x256A JUMPI JUMP JUMPDEST PUSH2 0x2572 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x25A2 PUSH1 0x4 DUP3 ADD PUSH2 0x254B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x25C3 DUP3 PUSH2 0x25BD PUSH2 0x25B7 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x20DB JUMP JUMPDEST PUSH2 0x25F0 PUSH1 0x20 PUSH2 0x25DA PUSH2 0x25D5 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x25E8 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2600 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x29C9 JUMPI PUSH2 0x2699 SWAP2 PUSH0 SWAP2 PUSH2 0x299B JUMPI JUMPDEST POP SWAP3 PUSH2 0x263C DUP5 PUSH2 0x2635 PUSH2 0x262F PUSH2 0x262A PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x219F JUMP JUMPDEST PUSH2 0x2661 PUSH2 0x2648 CALLER PUSH2 0x37B8 JUMP JUMPDEST PUSH2 0x265A PUSH2 0x2654 DUP5 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x223B JUMP JUMPDEST PUSH2 0x2693 PUSH2 0x266D DUP3 PUSH2 0x62DD JUMP JUMPDEST SWAP5 PUSH2 0x268B DUP7 PUSH2 0x2684 PUSH2 0x267E DUP7 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x22D7 JUMP JUMPDEST SWAP2 DUP6 SWAP1 PUSH2 0x231A JUMP JUMPDEST SWAP1 PUSH2 0x3AEA JUMP JUMPDEST POP PUSH2 0x26A2 PUSH2 0x1FFA JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x26C6 PUSH2 0x26C0 PUSH2 0x26BB PUSH2 0x26B6 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6411 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x2951 JUMPI PUSH2 0x26DF PUSH2 0x26D8 PUSH0 PUSH2 0x234E JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x6460 JUMP JUMPDEST SWAP1 PUSH2 0x2705 DUP3 PUSH2 0x26FE PUSH2 0x26F8 PUSH2 0x26F3 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x23AA JUMP JUMPDEST PUSH2 0x270D PUSH2 0x2022 JUMP JUMPDEST SWAP2 PUSH2 0x272A DUP4 PUSH2 0x2724 PUSH2 0x271E PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x2446 JUMP JUMPDEST PUSH2 0x2772 PUSH1 0x20 PUSH2 0x2740 PUSH2 0x273B DUP5 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2767 PUSH2 0x2752 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x275B PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x294C JUMPI PUSH0 SWAP2 PUSH2 0x291E JUMPI JUMPDEST POP SWAP3 DUP4 PUSH2 0x2799 PUSH2 0x2793 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x28FC JUMPI JUMPDEST PUSH2 0x28F0 JUMPI SWAP1 PUSH2 0x27D3 SWAP2 PUSH1 0x20 PUSH2 0x27BD PUSH2 0x27B8 DUP5 PUSH2 0x2495 JUMP JUMPDEST PUSH2 0x24A1 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x27CB PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x27E3 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x28EB JUMPI PUSH2 0x2833 PUSH2 0x2818 PUSH2 0x2838 SWAP4 PUSH2 0x280F PUSH2 0x283D SWAP7 PUSH1 0x20 SWAP9 PUSH0 SWAP2 PUSH2 0x28BE JUMPI JUMPDEST POP PUSH2 0x24EE JUMP JUMPDEST DUP10 DUP13 SWAP2 SWAP3 PUSH2 0x6608 JUMP JUMPDEST SWAP7 PUSH2 0x282C PUSH2 0x2826 DUP10 SWAP3 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x2563 JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x2862 PUSH0 CALLER SWAP4 SWAP7 PUSH2 0x286D PUSH2 0x2856 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x28B9 JUMPI PUSH2 0x2888 SWAP3 PUSH2 0x288D JUMPI JUMPDEST POP JUMPDEST PUSH2 0x233F JUMP JUMPDEST PUSH2 0x26A3 JUMP JUMPDEST PUSH2 0x28AD SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x28B2 JUMPI JUMPDEST PUSH2 0x28A5 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x2881 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x289B JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x28DE SWAP2 POP DUP10 RETURNDATASIZE DUP2 GT PUSH2 0x28E4 JUMPI JUMPDEST PUSH2 0x28D6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24D0 JUMP JUMPDEST PUSH0 PUSH2 0x2809 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x28CC JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP PUSH2 0x2888 SWAP2 POP PUSH2 0x2883 JUMP JUMPDEST POP DUP2 PUSH2 0x2918 PUSH2 0x2912 PUSH2 0x290D ADDRESS PUSH2 0x1772 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x27A1 JUMP JUMPDEST PUSH2 0x293F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2945 JUMPI JUMPDEST PUSH2 0x2937 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x2784 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x292D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP SWAP1 PUSH2 0x295E CALLER DUP3 SWAP1 PUSH2 0x66C6 JUMP JUMPDEST CALLER SWAP1 PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 SWAP2 PUSH2 0x2996 PUSH2 0x298D PUSH2 0x282 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x29BC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x29C2 JUMPI JUMPDEST PUSH2 0x29B4 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2615 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x29AA JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x29D7 SWAP1 PUSH2 0x2041 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH2 0x2A03 SWAP3 PUSH2 0x29E6 PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x29FB PUSH2 0x29F2 PUSH2 0x5D52 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x6785 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x6850 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2A15 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A21 SWAP1 PUSH2 0x2A0C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A2D SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2A38 PUSH2 0x2A08 JUMP JUMPDEST POP PUSH2 0x2A66 PUSH1 0x20 PUSH2 0x2A50 PUSH2 0x2A4B PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xF5D2D998 SWAP1 PUSH2 0x2A5E PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2A76 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x2B3D JUMPI PUSH2 0x2AA0 PUSH2 0x2A9B PUSH2 0x2AC7 SWAP5 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0x2B10 JUMPI JUMPDEST POP PUSH2 0x2A18 JUMP JUMPDEST PUSH2 0x2A24 JUMP JUMPDEST PUSH2 0x2ABC PUSH4 0x27D54A92 PUSH2 0x2AB0 PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2B0B JUMPI PUSH0 SWAP2 PUSH2 0x2ADD JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2AFE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2B04 JUMPI JUMPDEST PUSH2 0x2AF6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2AD9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2AEC JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x2B30 SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x2B36 JUMPI JUMPDEST PUSH2 0x2B28 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2A95 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B1E JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x2B4A PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x2B53 PUSH2 0x5F99 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B5F SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B6B SWAP1 PUSH2 0x2B56 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B77 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B86 PUSH2 0x2B8B SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0xFBB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B98 SWAP1 SLOAD PUSH2 0x2B7A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2BD3 SWAP1 PUSH2 0x2BA8 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x2BBD PUSH2 0x2BB8 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2BCB PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BE3 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2CB4 JUMPI PUSH2 0x2C04 PUSH2 0x2C09 SWAP2 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0x2C87 JUMPI JUMPDEST POP PUSH2 0x2B62 JUMP JUMPDEST PUSH2 0x2B6E JUMP JUMPDEST PUSH2 0x2C33 PUSH4 0xB27B5E75 PUSH2 0x2C3E PUSH2 0x2C1E PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP7 PUSH2 0x2C27 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x17DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2C82 JUMPI PUSH0 SWAP2 PUSH2 0x2C54 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2C75 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2C7B JUMPI JUMPDEST PUSH2 0x2C6D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x2C50 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2C63 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x2CA7 SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x2CAD JUMPI JUMPDEST PUSH2 0x2C9F DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2BFE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2C95 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x2CC2 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CCE SWAP1 PUSH2 0x2CB9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CDA SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2D12 PUSH2 0x2D19 SWAP5 PUSH2 0x2D08 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x2CFE PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP6 SWAP5 SWAP3 PUSH2 0x2D66 SWAP5 PUSH2 0x2D55 PUSH2 0x2D5F SWAP3 PUSH2 0x2D4B PUSH1 0x80 SWAP7 PUSH2 0x2D41 PUSH1 0xA0 DUP9 ADD SWAP13 PUSH0 DUP10 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP8 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x4D75746920486F702053776170204661696C65642C20547279204275726E2829 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2D9B PUSH1 0x20 DUP1 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x2DA4 DUP2 PUSH2 0x2D68 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2DBD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2D8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2DC7 JUMPI JUMP JUMPDEST PUSH2 0x2DCF PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2DFF PUSH1 0x4 DUP3 ADD PUSH2 0x2DA8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E30 PUSH1 0x20 PUSH2 0x2E1A PUSH2 0x2E15 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x2E28 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2E40 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x31A4 JUMPI PUSH0 SWAP2 PUSH2 0x3176 JUMPI JUMPDEST POP PUSH2 0x2E80 PUSH1 0x20 PUSH2 0x2E6A PUSH2 0x2E65 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x2E78 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2E90 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3171 JUMPI PUSH0 SWAP2 PUSH2 0x3143 JUMPI JUMPDEST POP SWAP1 PUSH2 0x2EEC PUSH1 0x20 PUSH2 0x2EBA PUSH2 0x2EB5 DUP7 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2EE1 PUSH2 0x2ECC ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x2ED5 PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x313E JUMPI PUSH0 SWAP2 PUSH2 0x3110 JUMPI JUMPDEST POP SWAP3 DUP4 PUSH2 0x2F13 PUSH2 0x2F0D PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x2F25 PUSH2 0x2F20 DUP4 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 DUP7 SWAP1 PUSH2 0x2F4D PUSH0 DUP11 SWAP7 PUSH2 0x2F58 PUSH2 0x2F41 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x310B JUMPI PUSH2 0x2F73 SWAP3 PUSH2 0x30DF JUMPI JUMPDEST POP ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x30D9 JUMPI PUSH2 0x2F88 PUSH2 0x2F83 DUP5 PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 DUP4 SWAP1 PUSH2 0x2FC3 PUSH0 PUSH2 0x2FA0 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP6 PUSH2 0x2FCE DUP12 PUSH2 0x2FAE ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP1 PUSH2 0x2FB7 PUSH2 0x282 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x162D JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x2CDD JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 PUSH2 0x30AD JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x30A7 JUMPI PUSH1 0x1 PUSH2 0x2FED JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x3039 PUSH0 PUSH2 0x3004 PUSH2 0x2FFF PUSH1 0x20 SWAP7 PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST SWAP3 PUSH2 0x3044 PUSH4 0x5EFAAEBB SWAP2 SWAP6 SWAP8 PUSH2 0x301A PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP1 PUSH2 0x3024 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP2 PUSH2 0x302D PUSH2 0x282 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0x162D JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x2D1B JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x30A2 JUMPI PUSH2 0x3072 SWAP2 PUSH0 SWAP2 PUSH2 0x3074 JUMPI JUMPDEST POP PUSH2 0x306C PUSH2 0x3066 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x2DC0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3095 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x309B JUMPI JUMPDEST PUSH2 0x308D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x3059 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3083 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x30CD SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x30D2 JUMPI JUMPDEST PUSH2 0x30C5 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH2 0x2FD9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30BB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x30FF SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3104 JUMPI JUMPDEST PUSH2 0x30F7 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x2F6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30ED JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3131 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3137 JUMPI JUMPDEST PUSH2 0x3129 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x2EFE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x311F JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3164 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x316A JUMPI JUMPDEST PUSH2 0x315C DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2EA2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3152 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3197 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x319D JUMPI JUMPDEST PUSH2 0x318F DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x2E52 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C4 PUSH2 0x31BF PUSH2 0x31C9 SWAP3 PUSH2 0x31AD JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x72F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31D4 PUSH2 0x31A9 JUMP JUMPDEST POP PUSH2 0x31DF PUSH1 0x12 PUSH2 0x31B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31EA PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x31F2 PUSH2 0x31FC JUMP JUMPDEST PUSH2 0x31FA PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x320D PUSH2 0x3208 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6411 JUMP JUMPDEST PUSH2 0x3216 PUSH0 PUSH2 0x1836 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x322A PUSH2 0x3224 DUP5 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3277 SWAP1 PUSH2 0x3247 PUSH2 0x3240 PUSH0 PUSH2 0x234E JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x6460 JUMP JUMPDEST DUP1 PUSH2 0x3263 PUSH2 0x325D PUSH2 0x3258 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x327C JUMPI PUSH2 0x3271 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST JUMPDEST PUSH2 0x233F JUMP JUMPDEST PUSH2 0x3217 JUMP JUMPDEST POP PUSH2 0x3272 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x328E PUSH2 0x31E2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x32A2 SWAP2 PUSH2 0x329D PUSH2 0x6939 JUMP JUMPDEST PUSH2 0x32A4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x32B7 SWAP2 PUSH2 0x32B2 DUP2 PUSH2 0x6A0B JUMP JUMPDEST PUSH2 0x6A7B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x32C3 SWAP2 PUSH2 0x3290 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x32DA SWAP1 PUSH2 0x32D5 PUSH2 0x6BB9 JUMP JUMPDEST PUSH2 0x332D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x32F9 PUSH2 0x32F4 PUSH2 0x32FE SWAP3 PUSH2 0x32DD JUMP JUMPDEST PUSH2 0x32E0 JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x332A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x32E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x3336 PUSH2 0x3301 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3349 PUSH2 0x3344 PUSH2 0x32C5 JUMP JUMPDEST PUSH2 0x32C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3364 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0x337B PUSH2 0x3376 DUP4 PUSH2 0x334C JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x33AA PUSH2 0x3392 DUP4 PUSH2 0x3369 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x33A0 DUP7 SWAP4 PUSH2 0x334C JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x3380 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x33B5 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33C1 SWAP1 PUSH2 0x33AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x33CD SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x33DA JUMPI JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x33FB SWAP1 PUSH2 0x38B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x340C DUP2 PUSH1 0x20 SWAP4 PUSH2 0x33F2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3433 PUSH2 0x342D PUSH2 0x3426 DUP5 PUSH2 0x33DF JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x33E3 JUMP JUMPDEST SWAP3 PUSH2 0x33EC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x3443 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x345C PUSH2 0x3456 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x33FF JUMP JUMPDEST SWAP5 PUSH2 0x3410 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x3436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x3478 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x37C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x348F DUP3 PUSH2 0x3495 SWAP3 PUSH2 0xDB3 JUMP JUMPDEST SWAP3 PUSH2 0x3466 JUMP JUMPDEST SWAP1 DUP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x34A8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 PUSH2 0x34CA PUSH2 0x34C4 PUSH1 0x1 SWAP3 PUSH2 0x34BF DUP9 DUP7 PUSH2 0x3469 JUMP JUMPDEST PUSH2 0xDCF JUMP JUMPDEST SWAP6 PUSH2 0x347B JUMP JUMPDEST SWAP3 ADD SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x349A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH2 0x34E9 SWAP2 PUSH2 0x33E3 JUMP JUMPDEST SWAP2 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3526 JUMPI DUP3 SWAP2 PUSH1 0x20 PUSH2 0x3522 SWAP3 MUL SWAP4 DUP5 SWAP2 PUSH2 0x34D9 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x34D5 JUMP JUMPDEST SWAP5 PUSH2 0x357E PUSH2 0x359D SWAP6 PUSH2 0x3589 SWAP3 PUSH2 0x3570 PUSH2 0x3593 SWAP7 PUSH1 0xC0 SWAP12 SWAP16 SWAP15 SWAP13 SWAP7 SWAP9 PUSH2 0x3561 PUSH2 0x35A4 SWAP16 SWAP11 DUP14 SWAP1 PUSH1 0xE0 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x3416 JUMP JUMPDEST SWAP2 DUP13 PUSH1 0x20 DUP2 DUP6 SUB SWAP2 ADD MSTORE PUSH2 0x3481 JUMP JUMPDEST SWAP2 DUP10 DUP4 SUB PUSH1 0x40 DUP12 ADD MSTORE PUSH2 0x34DD JUMP JUMPDEST SWAP11 PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST JUMP JUMPDEST SWAP5 SWAP1 SWAP7 POP SWAP5 SWAP2 SWAP1 SWAP3 SWAP5 PUSH2 0x35DC PUSH1 0x20 PUSH2 0x35C6 PUSH2 0x35C1 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x35D4 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x35EC PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x375E JUMPI PUSH0 SWAP2 PUSH2 0x3730 JUMPI JUMPDEST POP SWAP4 PUSH2 0x362D PUSH1 0x20 PUSH2 0x3617 PUSH2 0x3612 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xCFF49D68 SWAP1 PUSH2 0x3625 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x363D PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x372B JUMPI PUSH0 SWAP2 PUSH2 0x36FD JUMPI JUMPDEST POP SWAP2 PUSH2 0x3673 PUSH2 0x366E PUSH2 0x3668 PUSH2 0x3663 PUSH0 PUSH2 0x1836 JUMP JUMPDEST PUSH2 0x3385 JUMP JUMPDEST SWAP5 PUSH2 0x33B8 JUMP JUMPDEST PUSH2 0x33C4 JUMP JUMPDEST SWAP6 PUSH4 0xF0BF7714 SWAP4 SWAP8 SWAP10 SWAP3 SWAP5 SWAP6 SWAP9 SWAP2 SWAP1 SWAP2 DUP8 EXTCODESIZE ISZERO PUSH2 0x36F8 JUMPI PUSH0 SWAP10 PUSH2 0x36AA SWAP8 DUP12 SWAP8 PUSH2 0x36B5 SWAP7 PUSH2 0x369E PUSH2 0x282 JUMP JUMPDEST SWAP15 DUP16 SWAP14 DUP15 SWAP13 DUP14 SWAP12 PUSH2 0x162D JUMP JUMPDEST DUP12 MSTORE PUSH1 0x4 DUP12 ADD PUSH2 0x352B JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x36F3 JUMPI PUSH2 0x36C7 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x36E6 SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x36EC JUMPI JUMPDEST PUSH2 0x36DE DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x33D0 JUMP JUMPDEST PUSH0 PUSH2 0x36C4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x36D4 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1629 JUMP JUMPDEST PUSH2 0x371E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3724 JUMPI JUMPDEST PUSH2 0x3716 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x364F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x370C JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3751 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3757 JUMPI JUMPDEST PUSH2 0x3749 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x35FE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x373F JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3774 SWAP1 PUSH2 0x376F PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x3776 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3788 SWAP1 PUSH2 0x3783 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6CE9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3794 SWAP1 PUSH2 0x3763 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x379F SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x37AC SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x37D7 PUSH2 0x37DC SWAP2 PUSH2 0x37C7 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH0 PUSH2 0x37D1 PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x37E7 PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x37EF PUSH2 0x37F1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3802 PUSH2 0x37FD PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x6D23 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x380C PUSH2 0x37DF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3820 SWAP1 PUSH2 0x381A PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x6D8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x382B PUSH2 0x2A08 JUMP JUMPDEST POP PUSH2 0x383E PUSH0 PUSH2 0x3838 PUSH2 0x6E93 JUMP JUMPDEST ADD PUSH2 0x2B8E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3859 PUSH2 0x385E SWAP2 PUSH2 0x3841 JUMP JUMPDEST PUSH2 0x3847 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x386B SWAP1 SLOAD PUSH2 0x384D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3887 PUSH2 0x388C SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x386E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3899 SWAP1 SLOAD PUSH2 0x387B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x38AF PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x32E0 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x38CD PUSH2 0x38C8 PUSH2 0x38D2 SWAP3 PUSH2 0x491 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x491 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x38ED PUSH2 0x38E8 PUSH2 0x38F4 SWAP3 PUSH2 0x38B9 JUMP JUMPDEST PUSH2 0x38D5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x389C JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3912 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x38F8 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3925 SWAP1 PUSH2 0x3DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3940 PUSH2 0x393B PUSH2 0x3947 SWAP3 PUSH2 0x391C JUMP JUMPDEST PUSH2 0x3928 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x38FE JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x3956 PUSH2 0x6EB7 JUMP JUMPDEST SWAP1 PUSH2 0x3962 PUSH0 DUP4 ADD PUSH2 0x3861 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3A13 JUMPI JUMPDEST PUSH2 0x39D7 JUMPI PUSH2 0x399C SWAP3 PUSH2 0x3993 SWAP2 PUSH2 0x3981 DUP7 PUSH0 DUP7 ADD PUSH2 0x38D8 JUMP JUMPDEST PUSH2 0x398E PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x392B JUMP JUMPDEST PUSH2 0x3AA8 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x392B JUMP JUMPDEST PUSH2 0x39D2 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x39C9 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4AB JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x39DF PUSH2 0x282 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3A0F PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x3A1F PUSH0 DUP4 ADD PUSH2 0x388F JUMP JUMPDEST PUSH2 0x3A31 PUSH2 0x3A2B DUP7 PUSH2 0x491 JUMP JUMPDEST SWAP2 PUSH2 0x491 JUMP JUMPDEST LT ISZERO PUSH2 0x3969 JUMP JUMPDEST PUSH2 0x3A41 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3A4D SWAP1 PUSH2 0x3A38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3A6F PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x32E0 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3A82 SWAP1 PUSH2 0x3A38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3A9D PUSH2 0x3A98 PUSH2 0x3AA4 SWAP3 PUSH2 0x3A79 JUMP JUMPDEST PUSH2 0x3A85 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3A50 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3ABD SWAP2 POP PUSH2 0x3AB6 SWAP1 PUSH2 0x3A44 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3A88 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3AC9 SWAP2 PUSH2 0x394B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3AD3 PUSH2 0x146E JUMP JUMPDEST POP PUSH2 0x3AE7 PUSH1 0x4 PUSH2 0x3AE1 PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x1597 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B07 SWAP2 PUSH2 0x3AF6 PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x3AFF PUSH2 0x5D52 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x6850 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH2 0x3B19 PUSH2 0x3B0C JUMP JUMPDEST POP PUSH2 0x3B2B PUSH2 0x3B26 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6EDB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B5C PUSH2 0x3B70 SWAP2 PUSH2 0x3B3D PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x3B57 PUSH2 0x3B49 PUSH2 0x5F99 JUMP JUMPDEST PUSH2 0x3B51 PUSH2 0x2022 JUMP JUMPDEST SWAP3 PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST PUSH2 0x3B6A PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3B87 PUSH2 0x3B82 PUSH2 0x3B8C SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x491 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BA6 PUSH2 0x3BA1 PUSH2 0x3BAB SWAP3 PUSH2 0x3B8F JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x491 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BB7 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3BC3 SWAP1 PUSH2 0x3B92 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3BDA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3BBA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3BE4 PUSH2 0x6EB7 JUMP JUMPDEST SWAP1 PUSH2 0x3BF9 PUSH2 0x3BF3 PUSH0 DUP5 ADD PUSH2 0x3861 JUMP JUMPDEST ISZERO PUSH2 0x3DE JUMP JUMPDEST SWAP1 PUSH2 0x3C05 PUSH0 DUP5 ADD PUSH2 0x388F JUMP JUMPDEST DUP1 PUSH2 0x3C18 PUSH2 0x3C12 PUSH0 PUSH2 0x3B73 JUMP JUMPDEST SWAP2 PUSH2 0x491 JUMP JUMPDEST EQ DUP1 PUSH2 0x3D52 JUMPI JUMPDEST SWAP1 PUSH2 0x3C33 PUSH2 0x3C2D PUSH1 0x1 PUSH2 0x3B92 JUMP JUMPDEST SWAP2 PUSH2 0x491 JUMP JUMPDEST EQ DUP1 PUSH2 0x3D2A JUMPI JUMPDEST PUSH2 0x3C45 SWAP1 SWAP2 ISZERO PUSH2 0x3DE JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x3D19 JUMPI JUMPDEST POP PUSH2 0x3CDD JUMPI PUSH2 0x3C75 SWAP1 PUSH2 0x3C6A PUSH2 0x3C62 PUSH1 0x1 PUSH2 0x3B92 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x38D8 JUMP JUMPDEST DUP3 PUSH2 0x3CCB JUMPI JUMPDEST PUSH2 0x3E31 JUMP JUMPDEST PUSH2 0x3C7D JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x3C8A SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x392B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3CC2 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x3CB9 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3BC7 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x3C7A JUMP JUMPDEST PUSH2 0x3CD8 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x392B JUMP JUMPDEST PUSH2 0x3C70 JUMP JUMPDEST PUSH2 0x3CE5 PUSH2 0x282 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3D15 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3D24 SWAP2 POP ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH0 PUSH2 0x3C4C JUMP JUMPDEST POP PUSH2 0x3C45 PUSH2 0x3D37 ADDRESS PUSH2 0x3BAE JUMP JUMPDEST EXTCODESIZE PUSH2 0x3D4A PUSH2 0x3D44 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x3C3A JUMP JUMPDEST POP DUP3 PUSH2 0x3C1F JUMP JUMPDEST PUSH0 PUSH32 0x42616C756E690000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3D8A PUSH1 0x6 PUSH2 0xEDB JUMP JUMPDEST SWAP1 PUSH2 0x3D97 PUSH1 0x20 DUP4 ADD PUSH2 0x3D59 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3DA1 PUSH2 0x3D80 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x42414C554E490000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3DD5 PUSH1 0x6 PUSH2 0xEDB JUMP JUMPDEST SWAP1 PUSH2 0x3DE2 PUSH1 0x20 DUP4 ADD PUSH2 0x3DA4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3DEC PUSH2 0x3DCB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E06 PUSH2 0x3E01 PUSH2 0x3E0B SWAP3 PUSH2 0x3DEF JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3E26 PUSH2 0x3E21 PUSH2 0x3E2D SWAP3 PUSH2 0x3796 JUMP JUMPDEST PUSH2 0x3E0E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x3A50 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3E92 PUSH2 0x3E99 SWAP2 PUSH2 0x3E51 PUSH2 0x3E43 PUSH2 0x3D99 JUMP JUMPDEST PUSH2 0x3E4B PUSH2 0x3DE4 JUMP JUMPDEST SWAP1 PUSH2 0x6F23 JUMP JUMPDEST PUSH2 0x3E5A CALLER PUSH2 0x6F4D JUMP JUMPDEST PUSH2 0x3E62 PUSH2 0x6F74 JUMP JUMPDEST PUSH2 0x3E6A PUSH2 0x6F88 JUMP JUMPDEST PUSH2 0x3E8D PUSH2 0x3E76 ADDRESS PUSH2 0x1772 JUMP JUMPDEST PUSH2 0x3E87 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3DF2 JUMP JUMPDEST SWAP1 PUSH2 0x6241 JUMP JUMPDEST PUSH2 0x3A44 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3A88 JUMP JUMPDEST PUSH2 0x3EC6 PUSH1 0x20 PUSH2 0x3EB0 PUSH2 0x3EAB PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x3EBE PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3ED6 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3F23 JUMPI PUSH2 0x3EF3 SWAP2 PUSH0 SWAP2 PUSH2 0x3EF5 JUMPI JUMPDEST POP PUSH1 0x3 PUSH2 0x3E11 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3F16 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3F1C JUMPI JUMPDEST PUSH2 0x3F0E DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x3EEB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F04 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x3F31 SWAP1 PUSH2 0x3BDC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3F44 SWAP1 PUSH2 0x3F3F PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x3F46 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3F58 SWAP1 PUSH2 0x3F53 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6F92 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3F64 SWAP1 PUSH2 0x3F33 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3F70 SWAP1 PUSH2 0x3796 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x3FAA SWAP2 PUSH2 0x3FA0 PUSH2 0x3FA5 SWAP3 PUSH2 0x3F8F PUSH2 0x1FFA JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x3F9A PUSH2 0x5D2E JUMP JUMPDEST ADD PUSH2 0x3F66 JUMP JUMPDEST PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3FBE SWAP1 PUSH2 0x3FB9 PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x3FC0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3FCC PUSH2 0x3FD3 SWAP2 PUSH2 0x3A44 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x3A88 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3FDE SWAP1 PUSH2 0x3FAD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3FE8 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x4002 PUSH2 0x3FFD PUSH8 0xDE0B6B3A7640000 PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x6D8F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4017 SWAP2 PUSH2 0x4012 PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x4433 JUMP JUMPDEST PUSH2 0x401F PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x4167656E7420666163746F7279206E6F74207365740000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4055 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x405E DUP2 PUSH2 0x4021 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4077 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4048 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4081 JUMPI JUMP JUMPDEST PUSH2 0x4089 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x40B9 PUSH1 0x4 DUP3 ADD PUSH2 0x4062 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x40D5 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0x40EC PUSH2 0x40E7 DUP4 PUSH2 0x40BD JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x411B PUSH2 0x4103 DUP4 PUSH2 0x40DA JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x4111 DUP7 SWAP4 PUSH2 0x40BD JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x40F1 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x4154 DUP3 PUSH2 0xDAF JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x4165 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST PUSH2 0x4174 SWAP1 MLOAD PUSH2 0x35C JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4185 DUP3 PUSH2 0x4177 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x4196 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST SWAP1 PUSH2 0x41A5 SWAP1 PUSH2 0x3DE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x41B3 DUP3 PUSH2 0x33DF JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x41C4 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST SWAP1 PUSH2 0x41D3 SWAP1 PUSH2 0x38B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x41E0 SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x41EC SWAP1 PUSH2 0x41D7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x41F8 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x423A PUSH2 0x4243 PUSH1 0x20 SWAP4 PUSH2 0x4248 SWAP4 PUSH2 0x4231 DUP2 PUSH2 0x420E JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x4212 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x2AC JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4289 SWAP2 PUSH1 0x40 PUSH1 0x60 DUP3 ADD SWAP3 PUSH2 0x4267 PUSH0 DUP3 ADD MLOAD PUSH0 DUP6 ADD SWAP1 PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0x4279 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x33F2 JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x421B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4296 SWAP2 PUSH2 0x424C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x42B3 PUSH2 0x42AC DUP4 PUSH2 0x41FB JUMP JUMPDEST DUP1 SWAP3 PUSH2 0x41FF JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x42C4 PUSH1 0x20 DUP4 MUL DUP5 ADD SWAP5 PUSH2 0x4208 JUMP JUMPDEST SWAP3 PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x42D7 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH1 0x20 PUSH2 0x42F9 PUSH2 0x42F3 DUP4 DUP6 PUSH1 0x1 SWAP6 SUB DUP8 MSTORE DUP10 MLOAD PUSH2 0x428C JUMP JUMPDEST SWAP8 PUSH2 0x4299 JUMP JUMPDEST SWAP4 ADD SWAP4 ADD SWAP2 SWAP4 SWAP3 SWAP1 PUSH2 0x42C8 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x4320 PUSH2 0x432E SWAP4 PUSH1 0x40 DUP5 ADD SWAP1 DUP5 DUP3 SUB PUSH0 DUP7 ADD MSTORE PUSH2 0x429F JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xDE6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x433A SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4346 SWAP1 PUSH2 0x4331 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4352 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4374 PUSH2 0x436F PUSH2 0x4379 SWAP3 PUSH2 0x4355 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x4358 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4385 SWAP1 PUSH2 0x4360 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x43B2 PUSH2 0x43B9 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x43A8 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x437C JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x43D2 PUSH2 0x43CD PUSH2 0x43D7 SWAP3 PUSH2 0x43BB JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x4358 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x43E3 SWAP1 PUSH2 0x43BE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x4410 PUSH2 0x4417 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x4406 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST ADD SWAP1 PUSH2 0x43DA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4423 SWAP1 MLOAD PUSH2 0x3DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4430 SWAP1 MLOAD PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4462 PUSH1 0x20 PUSH2 0x444C PUSH2 0x4447 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xF5D2D998 SWAP1 PUSH2 0x445A PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4472 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4FEE JUMPI PUSH0 SWAP2 PUSH2 0x4FC0 JUMPI JUMPDEST POP PUSH2 0x44B2 PUSH1 0x20 PUSH2 0x449C PUSH2 0x4497 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3E6DFA36 SWAP1 PUSH2 0x44AA PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x44C2 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4FBB JUMPI PUSH0 SWAP2 PUSH2 0x4F8D JUMPI JUMPDEST POP SWAP1 PUSH2 0x4503 PUSH1 0x20 PUSH2 0x44ED PUSH2 0x44E8 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x44FB PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4513 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4F88 JUMPI PUSH0 SWAP2 PUSH2 0x4F5A JUMPI JUMPDEST POP SWAP2 PUSH2 0x4554 PUSH1 0x20 PUSH2 0x453E PUSH2 0x4539 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x454C PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4564 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4F55 JUMPI PUSH2 0x45B4 PUSH2 0x45AF PUSH2 0x45DF SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x4F28 JUMPI JUMPDEST POP SWAP6 PUSH2 0x45AA DUP2 PUSH2 0x45A3 PUSH2 0x459D PUSH2 0x4598 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x407A JUMP JUMPDEST PUSH2 0x2A18 JUMP JUMPDEST PUSH2 0x2A24 JUMP JUMPDEST PUSH4 0x9B76A5CD SWAP1 PUSH2 0x45D4 PUSH0 CALLER SWAP4 PUSH2 0x45C8 PUSH2 0x282 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x4F23 JUMPI PUSH0 SWAP2 PUSH2 0x4EF5 JUMPI JUMPDEST POP SWAP5 PUSH2 0x4604 PUSH2 0x45FF DUP7 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x40F6 JUMP JUMPDEST SWAP4 PUSH2 0x4616 PUSH2 0x4611 DUP8 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x3385 JUMP JUMPDEST SWAP8 PUSH2 0x4620 PUSH0 PUSH2 0x1836 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x463C PUSH2 0x4636 PUSH2 0x4631 DUP12 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x474B JUMPI PUSH2 0x46E1 SWAP1 PUSH2 0x468A PUSH2 0x4678 PUSH2 0x4672 DUP12 PUSH2 0x466D PUSH2 0x4667 PUSH2 0x4662 PUSH0 SWAP4 DUP9 SWAP1 PUSH2 0x414A JUMP JUMPDEST PUSH2 0x416A JUMP JUMPDEST SWAP2 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6FCC JUMP JUMPDEST ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x4685 DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x417B JUMP JUMPDEST PUSH2 0x419B JUMP JUMPDEST PUSH1 0x20 PUSH2 0x46AF PUSH2 0x46AA PUSH2 0x46A5 PUSH2 0x46A0 DUP14 DUP7 SWAP1 PUSH2 0x414A JUMP JUMPDEST PUSH2 0x416A JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x46D6 PUSH2 0x46C1 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x46CA PUSH2 0x282 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x4746 JUMPI PUSH2 0x4713 SWAP3 PUSH2 0x470E SWAP2 PUSH0 SWAP2 PUSH2 0x4718 JUMPI JUMPDEST POP PUSH2 0x4709 DUP14 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x41A9 JUMP JUMPDEST PUSH2 0x41C9 JUMP JUMPDEST PUSH2 0x233F JUMP JUMPDEST PUSH2 0x4621 JUMP JUMPDEST PUSH2 0x4739 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x473F JUMPI JUMPDEST PUSH2 0x4731 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x46FB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4727 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP3 SWAP5 SWAP8 SWAP4 SWAP6 SWAP7 PUSH2 0x4760 PUSH2 0x4765 SWAP2 PUSH2 0x41E3 JUMP JUMPDEST PUSH2 0x41EF JUMP JUMPDEST SWAP1 PUSH4 0xEEDC3C50 SWAP1 DUP9 SWAP3 DUP1 EXTCODESIZE ISZERO PUSH2 0x4EF0 JUMPI PUSH2 0x4792 PUSH0 DUP1 SWAP5 PUSH2 0x479D PUSH2 0x4786 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x4306 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x4EEB JUMPI PUSH2 0x4EBF JUMPI JUMPDEST POP PUSH2 0x47B6 PUSH0 PUSH2 0x1836 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x47D2 PUSH2 0x47CC PUSH2 0x47C7 DUP11 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x4EB5 JUMPI PUSH2 0x47EB PUSH2 0x47E6 DUP9 DUP4 SWAP1 PUSH2 0x414A JUMP JUMPDEST PUSH2 0x416A JUMP JUMPDEST SWAP1 PUSH2 0x4834 PUSH1 0x20 PUSH2 0x4802 PUSH2 0x47FD DUP6 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x4829 PUSH2 0x4814 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x481D PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4EB0 JUMPI PUSH0 SWAP2 PUSH2 0x4E82 JUMPI JUMPDEST POP SWAP2 PUSH2 0x4859 PUSH2 0x4854 DUP9 PUSH2 0x433D JUMP JUMPDEST PUSH2 0x4349 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x1698EE82 SWAP2 DUP4 SWAP1 PUSH2 0x4882 DUP9 SWAP5 PUSH2 0x488D PUSH2 0xBB8 PUSH2 0x4876 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4389 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4E7D JUMPI PUSH0 SWAP2 PUSH2 0x4E4F JUMPI JUMPDEST POP PUSH2 0x48B1 PUSH2 0x48AC DUP10 PUSH2 0x433D JUMP JUMPDEST PUSH2 0x4349 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x1698EE82 SWAP2 DUP5 SWAP1 PUSH2 0x48DA DUP10 SWAP5 PUSH2 0x48E5 PUSH2 0x1F4 PUSH2 0x48CE PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x43E7 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4E4A JUMPI PUSH0 SWAP2 PUSH2 0x4E1C JUMPI JUMPDEST POP SWAP1 PUSH2 0x490A PUSH2 0x4905 DUP11 PUSH2 0x433D JUMP JUMPDEST PUSH2 0x4349 JUMP JUMPDEST PUSH1 0x20 DUP12 PUSH4 0x1698EE82 SWAP3 PUSH2 0x4933 DUP8 SWAP3 SWAP5 PUSH2 0x493E PUSH2 0x1F4 PUSH2 0x4927 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x43E7 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4E17 JUMPI PUSH0 SWAP2 PUSH2 0x4DE9 JUMPI JUMPDEST POP SWAP2 PUSH2 0x4963 PUSH2 0x495E DUP12 PUSH2 0x433D JUMP JUMPDEST PUSH2 0x4349 JUMP JUMPDEST PUSH1 0x20 DUP13 PUSH4 0x1698EE82 SWAP3 PUSH2 0x498C DUP9 SWAP3 SWAP5 PUSH2 0x4997 PUSH2 0xBB8 PUSH2 0x4980 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4389 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4DE4 JUMPI PUSH0 SWAP2 PUSH2 0x4DB6 JUMPI JUMPDEST POP SWAP2 PUSH2 0x49C5 PUSH2 0x49BF PUSH2 0x49BA PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO SWAP1 DUP2 ISZERO PUSH2 0x4D92 JUMPI JUMPDEST POP SWAP1 DUP2 ISZERO PUSH2 0x4D6E JUMPI JUMPDEST POP SWAP1 DUP2 ISZERO PUSH2 0x4D4A JUMPI JUMPDEST POP SWAP3 PUSH2 0x49F6 PUSH2 0x49F1 DUP13 DUP6 SWAP1 PUSH2 0x417B JUMP JUMPDEST PUSH2 0x4419 JUMP JUMPDEST DUP1 PUSH2 0x4D43 JUMPI JUMPDEST PUSH2 0x4D2A JUMPI JUMPDEST PUSH2 0x4A28 PUSH2 0x4A21 DUP3 PUSH2 0x4A1B PUSH2 0x4A16 DUP12 DUP9 SWAP1 PUSH2 0x41A9 JUMP JUMPDEST PUSH2 0x4426 JUMP JUMPDEST SWAP1 PUSH2 0x231A JUMP JUMPDEST SWAP5 ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x4C97 JUMPI PUSH2 0x4A59 PUSH1 0x20 PUSH2 0x4A43 PUSH2 0x4A3E PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x4A51 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4A69 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4C92 JUMPI PUSH0 SWAP2 PUSH2 0x4C64 JUMPI JUMPDEST POP SWAP4 PUSH2 0x4AAA PUSH1 0x20 PUSH2 0x4A94 PUSH2 0x4A8F PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x4AA2 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4ABA PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4C5F JUMPI PUSH0 SWAP2 PUSH2 0x4C31 JUMPI JUMPDEST POP SWAP1 PUSH2 0x4AFB PUSH1 0x20 PUSH2 0x4AE5 PUSH2 0x4AE0 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x4AF3 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4B0B PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4C2C JUMPI PUSH0 SWAP2 PUSH2 0x4BFE JUMPI JUMPDEST POP SWAP3 PUSH2 0x4B43 PUSH2 0x4B3D PUSH2 0x4B38 PUSH2 0x4B33 DUP14 DUP11 SWAP1 PUSH2 0x41A9 JUMP JUMPDEST PUSH2 0x4426 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x4B5C JUMPI JUMPDEST POP POP POP POP PUSH2 0x4B57 SWAP2 POP PUSH2 0x233F JUMP JUMPDEST PUSH2 0x47B7 JUMP JUMPDEST PUSH2 0x4B78 PUSH1 0x20 SWAP5 SWAP4 PUSH2 0x4B73 PUSH2 0x4B83 SWAP5 PUSH2 0x4B7E SWAP5 PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP3 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH2 0x4BA6 PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x4BB1 PUSH2 0x4B9A PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x4BF9 JUMPI PUSH2 0x4B57 SWAP3 PUSH2 0x4BCD JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x4B49 JUMP JUMPDEST PUSH2 0x4BED SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4BF2 JUMPI JUMPDEST PUSH2 0x4BE5 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x4BC5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4BDB JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4C1F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4C25 JUMPI JUMPDEST PUSH2 0x4C17 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x4B1D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C0D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4C52 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4C58 JUMPI JUMPDEST PUSH2 0x4C4A DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x4ACC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C40 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4C85 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4C8B JUMPI JUMPDEST PUSH2 0x4C7D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4A7B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C73 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP SWAP4 SWAP9 POP POP SWAP6 POP POP PUSH1 0x20 SWAP4 POP PUSH2 0x4CB7 SWAP3 POP PUSH2 0x4CB2 SWAP2 POP PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x4CDC PUSH0 CALLER SWAP4 SWAP6 PUSH2 0x4CE7 PUSH2 0x4CD0 PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x4D25 JUMPI PUSH2 0x4CF9 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x4D19 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4D1E JUMPI JUMPDEST PUSH2 0x4D11 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x4CF6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4D07 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4D3D PUSH0 PUSH2 0x4D38 DUP5 SWAP2 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6F92 JUMP JUMPDEST POP PUSH2 0x4A01 JUMP JUMPDEST POP DUP4 PUSH2 0x49FC JUMP JUMPDEST SWAP1 POP PUSH2 0x4D66 PUSH2 0x4D60 PUSH2 0x4D5B PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH0 PUSH2 0x49E1 JUMP JUMPDEST SWAP1 POP PUSH2 0x4D8A PUSH2 0x4D84 PUSH2 0x4D7F PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH0 PUSH2 0x49D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x4DAE PUSH2 0x4DA8 PUSH2 0x4DA3 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH0 PUSH2 0x49CF JUMP JUMPDEST PUSH2 0x4DD7 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4DDD JUMPI JUMPDEST PUSH2 0x4DCF DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x49A9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4DC5 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4E0A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4E10 JUMPI JUMPDEST PUSH2 0x4E02 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4950 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4DF8 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4E3D SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4E43 JUMPI JUMPDEST PUSH2 0x4E35 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x48F7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E2B JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4E70 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4E76 JUMPI JUMPDEST PUSH2 0x4E68 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x489F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E5E JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4EA3 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4EA9 JUMPI JUMPDEST PUSH2 0x4E9B DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x4846 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E91 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4EDE SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x4EE4 JUMPI JUMPDEST PUSH2 0x4ED6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x33D0 JUMP JUMPDEST PUSH0 PUSH2 0x47AC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4ECC JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x1629 JUMP JUMPDEST PUSH2 0x4F16 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4F1C JUMPI JUMPDEST PUSH2 0x4F0E DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x45F1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F04 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4F48 SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x4F4E JUMPI JUMPDEST PUSH2 0x4F40 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4583 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F36 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4F7B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4F81 JUMPI JUMPDEST PUSH2 0x4F73 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4525 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F69 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4FAE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4FB4 JUMPI JUMPDEST PUSH2 0x4FA6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x44D4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F9C JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x4FE1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4FE7 JUMPI JUMPDEST PUSH2 0x4FD9 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x4484 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4FCF JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST SWAP1 PUSH2 0x4FFD SWAP2 PUSH2 0x4005 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5010 SWAP1 PUSH2 0x500B PUSH2 0x6C37 JUMP JUMPDEST PUSH2 0x5012 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x502D PUSH2 0x5027 PUSH2 0x5022 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x503D JUMPI PUSH2 0x503B SWAP1 PUSH2 0x6D23 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5080 PUSH2 0x5049 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x5051 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x508D SWAP1 PUSH2 0x4FFF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x50A0 SWAP1 PUSH2 0x509B PUSH2 0x5E0F JUMP JUMPDEST PUSH2 0x53B6 JUMP JUMPDEST PUSH2 0x50A8 PUSH2 0x5EBB JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x556E6973776170466163746F7279206E6F742073657400000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x50DE PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x50E7 DUP2 PUSH2 0x50AA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5100 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x50D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x510A JUMPI JUMP JUMPDEST PUSH2 0x5112 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5142 PUSH1 0x4 DUP3 ADD PUSH2 0x50EB JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x574E4154495645206E6F74207365740000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x517A PUSH1 0xF PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x5183 DUP2 PUSH2 0x5146 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x519C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x516D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x51A6 JUMPI JUMP JUMPDEST PUSH2 0x51AE PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x51DE PUSH1 0x4 DUP3 ADD PUSH2 0x5187 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x42616C756E6953776170706572206E6F74207365740000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x5216 PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x521F DUP2 PUSH2 0x51E2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5238 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5209 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5242 JUMPI JUMP JUMPDEST PUSH2 0x524A PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x527A PUSH1 0x4 DUP3 ADD PUSH2 0x5223 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x53776170204661696C6564000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x52B2 PUSH1 0xB PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x52BB DUP2 PUSH2 0x527E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x52D4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x52A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x52DE JUMPI JUMP JUMPDEST PUSH2 0x52E6 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5316 PUSH1 0x4 DUP3 ADD PUSH2 0x52BF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4D756C7469486F7053776170204661696C656400000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x534E PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x5357 DUP2 PUSH2 0x531A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5370 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5341 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x537A JUMPI JUMP JUMPDEST PUSH2 0x5382 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x53B2 PUSH1 0x4 DUP3 ADD PUSH2 0x535B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x53D2 DUP2 PUSH2 0x53CC PUSH2 0x53C6 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x20DB JUMP JUMPDEST PUSH2 0x53FF PUSH1 0x20 PUSH2 0x53E9 PUSH2 0x53E4 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3E6DFA36 SWAP1 PUSH2 0x53F7 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x540F PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5D02 JUMPI PUSH2 0x5446 SWAP2 PUSH0 SWAP2 PUSH2 0x5CD4 JUMPI JUMPDEST POP PUSH2 0x543F PUSH2 0x5439 PUSH2 0x5434 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x5103 JUMP JUMPDEST PUSH2 0x5473 PUSH1 0x20 PUSH2 0x545D PUSH2 0x5458 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x546B PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5483 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5CCF JUMPI PUSH0 SWAP2 PUSH2 0x5CA1 JUMPI JUMPDEST POP PUSH2 0x54BB DUP2 PUSH2 0x54B4 PUSH2 0x54AE PUSH2 0x54A9 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x219F JUMP JUMPDEST PUSH2 0x54E8 PUSH1 0x20 PUSH2 0x54D2 PUSH2 0x54CD PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x6C9C0078 SWAP1 PUSH2 0x54E0 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x54F8 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5C9C JUMPI PUSH2 0x556B SWAP2 PUSH0 SWAP2 PUSH2 0x5C6E JUMPI JUMPDEST POP SWAP2 PUSH2 0x5534 DUP4 PUSH2 0x552D PUSH2 0x5527 PUSH2 0x5522 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x519F JUMP JUMPDEST PUSH2 0x5565 PUSH2 0x5540 DUP6 PUSH2 0x62DD JUMP JUMPDEST SWAP5 PUSH2 0x555E DUP7 PUSH2 0x5557 PUSH2 0x5551 DUP5 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x22D7 JUMP JUMPDEST DUP6 SWAP1 PUSH2 0x231A JUMP JUMPDEST SWAP1 PUSH2 0x3AEA JUMP JUMPDEST POP PUSH2 0x5574 PUSH2 0x1FFA JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x5598 PUSH2 0x5592 PUSH2 0x558D PUSH2 0x5588 PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6411 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x5C24 JUMPI PUSH2 0x55B1 PUSH2 0x55AA PUSH0 PUSH2 0x234E JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x6460 JUMP JUMPDEST PUSH2 0x55D6 DUP2 PUSH2 0x55CF PUSH2 0x55C9 PUSH2 0x55C4 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x23AA JUMP JUMPDEST PUSH2 0x55DE PUSH2 0x2022 JUMP JUMPDEST SWAP1 PUSH2 0x55FB DUP3 PUSH2 0x55F5 PUSH2 0x55EF PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x2446 JUMP JUMPDEST PUSH2 0x5643 PUSH1 0x20 PUSH2 0x5611 PUSH2 0x560C DUP5 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5638 PUSH2 0x5623 ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x562C PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5C1F JUMPI PUSH0 SWAP2 PUSH2 0x5BF1 JUMPI JUMPDEST POP SWAP2 DUP3 PUSH2 0x566A PUSH2 0x5664 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x5BCF JUMPI JUMPDEST PUSH2 0x5BC3 JUMPI PUSH2 0x56A3 SWAP1 PUSH1 0x20 PUSH2 0x568D PUSH2 0x5688 DUP6 PUSH2 0x2495 JUMP JUMPDEST PUSH2 0x24A1 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x569B PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x56B3 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5BBE JUMPI PUSH2 0x56D6 PUSH2 0x56DF SWAP3 PUSH2 0x56FA SWAP5 PUSH0 SWAP2 PUSH2 0x5B90 JUMPI JUMPDEST POP PUSH2 0x24EE JUMP JUMPDEST DUP6 DUP10 SWAP2 SWAP3 PUSH2 0x6608 JUMP JUMPDEST SWAP3 PUSH2 0x56F3 PUSH2 0x56ED DUP6 SWAP3 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x2563 JUMP JUMPDEST DUP1 PUSH2 0x5716 PUSH2 0x5710 PUSH2 0x570B PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x5AF7 JUMPI PUSH2 0x5748 PUSH1 0x20 PUSH2 0x5732 PUSH2 0x572D PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x5740 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5758 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5AF2 JUMPI PUSH0 SWAP2 PUSH2 0x5AC4 JUMPI JUMPDEST POP PUSH2 0x5790 DUP2 PUSH2 0x5789 PUSH2 0x5783 PUSH2 0x577E PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x523B JUMP JUMPDEST PUSH2 0x57A1 PUSH2 0x579C DUP4 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 DUP4 SWAP1 PUSH2 0x57C8 PUSH0 DUP9 SWAP6 PUSH2 0x57D3 PUSH2 0x57BC PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x5ABF JUMPI PUSH2 0x5A93 JUMPI JUMPDEST POP PUSH2 0x57F4 PUSH2 0x57EF DUP3 PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 DUP5 SWAP1 PUSH2 0x5827 PUSH0 PUSH2 0x580C PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP6 PUSH2 0x5832 DUP11 CALLER SWAP1 PUSH2 0x581B PUSH2 0x282 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x162D JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x2CDD JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x5A63 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x59AB JUMPI POP PUSH1 0x1 PUSH2 0x5862 JUMPI JUMPDEST POP POP POP PUSH2 0x585D SWAP1 JUMPDEST JUMPDEST PUSH2 0x233F JUMP JUMPDEST PUSH2 0x5575 JUMP JUMPDEST SWAP1 PUSH2 0x5876 PUSH2 0x5871 PUSH1 0x20 SWAP4 PUSH2 0x2CC5 JUMP JUMPDEST PUSH2 0x2CD1 JUMP JUMPDEST PUSH2 0x58A5 PUSH0 PUSH4 0x5EFAAEBB PUSH2 0x58B0 DUP10 SWAP8 PUSH2 0x588E PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP1 CALLER SWAP2 PUSH2 0x5899 PUSH2 0x282 JUMP JUMPDEST SWAP11 DUP12 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH2 0x162D JUMP JUMPDEST DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x2D1B JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x59A6 JUMPI PUSH0 SWAP2 PUSH2 0x5978 JUMPI JUMPDEST POP SWAP1 PUSH2 0x58E0 DUP3 PUSH2 0x58DA PUSH2 0x58D4 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x5373 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x58FC PUSH2 0x58F7 PUSH2 0x58F2 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x5921 PUSH0 CALLER SWAP4 SWAP7 PUSH2 0x592C PUSH2 0x5915 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x5973 JUMPI PUSH2 0x585D SWAP3 PUSH2 0x5947 JUMPI JUMPDEST DUP2 SWAP3 PUSH2 0x584F JUMP JUMPDEST PUSH2 0x5967 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x596C JUMPI JUMPDEST PUSH2 0x595F DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x5940 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5955 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5999 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x599F JUMPI JUMPDEST PUSH2 0x5991 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x58C2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5987 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 PUSH2 0x59CC DUP3 PUSH2 0x59C6 PUSH2 0x59C0 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x52D7 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x59E8 PUSH2 0x59E3 PUSH2 0x59DE PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x5A0D PUSH0 CALLER SWAP4 SWAP7 PUSH2 0x5A18 PUSH2 0x5A01 PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x5A5E JUMPI PUSH2 0x585D SWAP3 PUSH2 0x5A32 JUMPI JUMPDEST POP PUSH2 0x5857 JUMP JUMPDEST PUSH2 0x5A52 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5A57 JUMPI JUMPDEST PUSH2 0x5A4A DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x5A2C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5A40 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5A85 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5A8C JUMPI JUMPDEST PUSH2 0x5A7D DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x583F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5A73 JUMP JUMPDEST PUSH2 0x5AB3 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5AB8 JUMPI JUMPDEST PUSH2 0x5AAB DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x57E2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5AA1 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5AE5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5AEB JUMPI JUMPDEST PUSH2 0x5ADD DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x576A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5AD3 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP SWAP1 PUSH1 0x20 PUSH2 0x5B15 PUSH2 0x5B10 PUSH2 0x5B0B PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x5B3A PUSH0 CALLER SWAP4 SWAP7 PUSH2 0x5B45 PUSH2 0x5B2E PUSH2 0x282 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x162D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x5B8B JUMPI PUSH2 0x585D SWAP3 PUSH2 0x5B5F JUMPI JUMPDEST POP PUSH2 0x5858 JUMP JUMPDEST PUSH2 0x5B7F SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5B84 JUMPI JUMPDEST PUSH2 0x5B77 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17C0 JUMP JUMPDEST PUSH2 0x5B59 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5B6D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5BB1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5BB7 JUMPI JUMPDEST PUSH2 0x5BA9 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24D0 JUMP JUMPDEST PUSH0 PUSH2 0x56D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5B9F JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP POP PUSH2 0x585D SWAP1 PUSH2 0x5858 JUMP JUMPDEST POP DUP2 PUSH2 0x5BEB PUSH2 0x5BE5 PUSH2 0x5BE0 ADDRESS PUSH2 0x1772 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x5672 JUMP JUMPDEST PUSH2 0x5C12 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5C18 JUMPI JUMPDEST PUSH2 0x5C0A DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x5655 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5C00 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP POP PUSH2 0x5C31 CALLER DUP3 SWAP1 PUSH2 0x66C6 JUMP JUMPDEST CALLER SWAP1 PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 SWAP2 PUSH2 0x5C69 PUSH2 0x5C60 PUSH2 0x282 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1A4C JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x5C8F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5C95 JUMPI JUMPDEST PUSH2 0x5C87 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x550D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5C7D JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5CC2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5CC8 JUMPI JUMPDEST PUSH2 0x5CBA DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x5495 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5CB0 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5CF5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5CFB JUMPI JUMPDEST PUSH2 0x5CED DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x5424 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5CE3 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x5D10 SWAP1 PUSH2 0x508F JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH2 0x5D2B SWAP4 SWAP2 SWAP3 PUSH2 0x5D21 PUSH2 0x1FFA JUMP JUMPDEST POP SWAP3 SWAP1 SWAP2 SWAP3 PUSH2 0x6608 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x5D5A PUSH2 0x2A08 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5D6D SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x7006 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D86 PUSH2 0x5D81 PUSH2 0x5D8B SWAP3 PUSH2 0x5D6F JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5D98 PUSH1 0x2 PUSH2 0x5D72 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5DC6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x32E0 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x5DE4 PUSH2 0x5DDF PUSH2 0x5DE9 SWAP3 PUSH2 0x38B JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5E04 PUSH2 0x5DFF PUSH2 0x5E0B SWAP3 PUSH2 0x5DD0 JUMP JUMPDEST PUSH2 0x5DEC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x5D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5E17 PUSH2 0x7160 JUMP JUMPDEST PUSH2 0x5E22 PUSH0 DUP3 ADD PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x5E3B PUSH2 0x5E35 PUSH2 0x5E30 PUSH2 0x5D8E JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ PUSH2 0x5E56 JUMPI PUSH2 0x5E54 SWAP1 PUSH0 PUSH2 0x5E4D PUSH2 0x5D8E JUMP JUMPDEST SWAP2 ADD PUSH2 0x5DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E5E PUSH2 0x282 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5E8E PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5EA6 PUSH2 0x5EA1 PUSH2 0x5EAB SWAP3 PUSH2 0x3B8F JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5EB8 PUSH1 0x1 PUSH2 0x5E92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5ED6 PUSH2 0x5EC6 PUSH2 0x7160 JUMP JUMPDEST PUSH0 PUSH2 0x5ECF PUSH2 0x5EAE JUMP JUMPDEST SWAP2 ADD PUSH2 0x5DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5EE7 PUSH2 0x5EED SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x38B JUMP JUMPDEST SWAP3 PUSH2 0x38B JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x5EF8 JUMPI JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST PUSH0 PUSH32 0x546F6B656E2076616C756174696F6E206973207A65726F000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x5F31 PUSH1 0x17 PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x5F3A DUP2 PUSH2 0x5EFD JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5F53 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5F24 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5F5D JUMPI JUMP JUMPDEST PUSH2 0x5F65 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5F95 PUSH1 0x4 DUP3 ADD PUSH2 0x5F3E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5FA1 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x5FAB PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP1 PUSH2 0x5FB5 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x5FDA PUSH2 0x5FD4 PUSH2 0x5FCF PUSH2 0x5FCA PUSH0 PUSH2 0x234E JUMP JUMPDEST PUSH2 0x6411 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT ISZERO PUSH2 0x623B JUMPI PUSH2 0x5FF3 PUSH2 0x5FEC PUSH0 PUSH2 0x234E JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x6460 JUMP JUMPDEST PUSH2 0x603B PUSH1 0x20 PUSH2 0x6009 PUSH2 0x6004 DUP5 PUSH2 0x175A JUMP JUMPDEST PUSH2 0x1766 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x6030 PUSH2 0x601B ADDRESS PUSH2 0x1772 JUMP JUMPDEST SWAP3 PUSH2 0x6024 PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x162D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6236 JUMPI PUSH0 SWAP2 PUSH2 0x6208 JUMPI JUMPDEST POP SWAP1 DUP2 PUSH2 0x6062 PUSH2 0x605C PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ PUSH2 0x61FC JUMPI DUP1 PUSH2 0x6083 PUSH2 0x607D PUSH2 0x6078 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x61D0 JUMPI PUSH2 0x60B6 SWAP1 PUSH1 0x20 PUSH2 0x60A0 PUSH2 0x609B PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x60AE PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x60C6 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x61CB JUMPI PUSH2 0x60E7 PUSH2 0x60EC SWAP2 PUSH1 0x20 SWAP5 PUSH0 SWAP2 PUSH2 0x619E JUMPI JUMPDEST POP PUSH2 0x2B62 JUMP JUMPDEST PUSH2 0x2B6E JUMP JUMPDEST PUSH2 0x6116 PUSH4 0xB27B5E75 PUSH2 0x6121 PUSH2 0x6101 PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST SWAP7 PUSH2 0x610A PUSH2 0x282 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x162D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x17DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x6199 JUMPI PUSH2 0x6165 SWAP3 PUSH2 0x615E SWAP3 PUSH0 SWAP2 PUSH2 0x616B JUMPI JUMPDEST POP PUSH2 0x6158 DUP2 PUSH2 0x6152 PUSH2 0x614C PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x5F56 JUMP JUMPDEST SWAP1 PUSH2 0x5ED8 JUMP JUMPDEST SWAP3 JUMPDEST PUSH2 0x233F JUMP JUMPDEST SWAP2 PUSH2 0x5FB7 JUMP JUMPDEST PUSH2 0x618C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6192 JUMPI JUMPDEST PUSH2 0x6184 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x613B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x617A JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x61BE SWAP2 POP DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x61C4 JUMPI JUMPDEST PUSH2 0x61B6 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1642 JUMP JUMPDEST PUSH0 PUSH2 0x60E1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x61AC JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST POP PUSH2 0x6165 SWAP2 PUSH2 0x61F0 PUSH2 0x61F6 SWAP3 PUSH2 0x61EA PUSH5 0xE8D4A51000 PUSH2 0x1781 JUMP JUMPDEST SWAP1 PUSH2 0x16CA JUMP JUMPDEST SWAP1 PUSH2 0x5ED8 JUMP JUMPDEST SWAP3 PUSH2 0x6160 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x6165 SWAP1 PUSH2 0x6160 JUMP JUMPDEST PUSH2 0x6229 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x622F JUMPI JUMPDEST PUSH2 0x6221 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x604D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6217 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST SWAP1 SWAP2 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x625C PUSH2 0x6256 PUSH2 0x6251 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x6278 JUMPI PUSH2 0x6276 SWAP2 PUSH2 0x626E PUSH0 PUSH2 0x213A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x7192 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x62BB PUSH2 0x6284 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x628C PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x62C7 PUSH2 0x1FE2 JUMP JUMPDEST POP PUSH2 0x62DA PUSH0 PUSH2 0x62D4 PUSH2 0x6EB7 JUMP JUMPDEST ADD PUSH2 0x388F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6314 SWAP1 PUSH2 0x62E9 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x62FE PUSH2 0x62F9 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x630C PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6324 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6409 JUMPI PUSH2 0x6364 SWAP3 PUSH0 SWAP2 PUSH2 0x63DB JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x634E PUSH2 0x6349 PUSH1 0x2 PUSH2 0x161C JUMP JUMPDEST PUSH2 0xC28 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x635C PUSH2 0x282 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6374 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x63D6 JUMPI PUSH2 0x639A PUSH2 0x63A0 SWAP3 PUSH2 0x63A5 SWAP6 PUSH0 SWAP2 PUSH2 0x63A8 JUMPI JUMPDEST POP SWAP4 SWAP2 DUP5 PUSH2 0x231A JUMP JUMPDEST SWAP1 PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x63C9 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x63CF JUMPI JUMPDEST PUSH2 0x63C1 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x6391 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x63B7 JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH2 0x63FC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6402 JUMPI JUMPDEST PUSH2 0x63F4 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x167F JUMP JUMPDEST PUSH0 PUSH2 0x6339 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x63EA JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6428 PUSH0 PUSH2 0x642D SWAP3 PUSH2 0x6421 PUSH2 0x1FFA JUMP JUMPDEST POP ADD PUSH2 0x640E JUMP JUMPDEST PUSH2 0x733C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x643C PUSH2 0x6441 SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x5DD0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6458 PUSH2 0x6453 PUSH2 0x645D SWAP3 PUSH2 0x38B JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x648B PUSH2 0x6486 PUSH2 0x6495 SWAP4 PUSH2 0x6481 PUSH0 PUSH2 0x6490 SWAP6 PUSH2 0x647A PUSH2 0x2A08 JUMP JUMPDEST POP ADD PUSH2 0x640E JUMP JUMPDEST PUSH2 0x73AD JUMP JUMPDEST PUSH2 0x6430 JUMP JUMPDEST PUSH2 0x6444 JUMP JUMPDEST PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x546F74616C20737570706C792063616E6E6F74206265207A65726F0000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x64CC PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x64D5 DUP2 PUSH2 0x6498 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x64EE SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x64BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x64F8 JUMPI JUMP JUMPDEST PUSH2 0x6500 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6530 PUSH1 0x4 DUP3 ADD PUSH2 0x64D9 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6548 PUSH2 0x6543 PUSH2 0x654D SWAP3 PUSH2 0x31AD JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x546F6B656E20646563696D616C732073686F756C64206265203C3D2031380000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x6584 PUSH1 0x1E PUSH1 0x20 SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0x658D DUP2 PUSH2 0x6550 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x65A6 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x6577 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x65B0 JUMPI JUMP JUMPDEST PUSH2 0x65B8 PUSH2 0x282 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x65E8 PUSH1 0x4 DUP3 ADD PUSH2 0x6591 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x65F5 SWAP1 PUSH2 0x38B JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x6603 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x169D JUMP JUMPDEST SWAP1 PUSH2 0x66B7 SWAP2 PUSH2 0x66BC SWAP5 PUSH2 0x6619 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x6636 DUP3 PUSH2 0x6630 PUSH2 0x662A PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x64F1 JUMP JUMPDEST PUSH2 0x6654 DUP2 PUSH2 0x664D PUSH2 0x6647 PUSH1 0x12 PUSH2 0x6534 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT ISZERO PUSH2 0x65A9 JUMP JUMPDEST PUSH2 0x665C PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x6665 PUSH2 0x1FFA JUMP JUMPDEST POP PUSH2 0x6682 PUSH2 0x667D PUSH1 0x12 PUSH2 0x6678 DUP5 SWAP2 PUSH2 0x6534 JUMP JUMPDEST PUSH2 0x231A JUMP JUMPDEST PUSH2 0x65EC JUMP JUMPDEST SWAP1 PUSH2 0x6696 PUSH2 0x6690 PUSH1 0x12 PUSH2 0x6534 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT PUSH0 EQ PUSH2 0x66BF JUMPI PUSH2 0x66AB PUSH2 0x66B1 SWAP3 DUP3 SWAP1 PUSH2 0x172C JUMP JUMPDEST SWAP5 PUSH2 0x172C JUMP JUMPDEST JUMPDEST PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP SWAP3 PUSH2 0x66B2 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x66E2 PUSH2 0x66DC PUSH2 0x66D7 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x66FE JUMPI PUSH2 0x66FC SWAP2 SWAP1 PUSH2 0x66F5 PUSH0 PUSH2 0x213A JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x7192 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6741 PUSH2 0x670A PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x6712 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x676E PUSH2 0x6775 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x6764 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4F5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6782 SWAP2 SUB PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x6793 DUP2 DUP4 SWAP1 PUSH2 0x3F7C JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x67C7 PUSH2 0x67C1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST SUB PUSH2 0x67D4 JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x67E7 PUSH2 0x67E1 DUP8 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT PUSH2 0x680D JUMPI PUSH2 0x6804 SWAP4 SWAP5 PUSH2 0x67FC SWAP2 SWAP4 SWAP3 PUSH2 0x6777 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x7006 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x67CD JUMP JUMPDEST POP PUSH2 0x684C DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x681D PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x6745 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x686C PUSH2 0x6866 PUSH2 0x6861 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x68E6 JUMPI DUP2 PUSH2 0x688C PUSH2 0x6886 PUSH2 0x6881 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x689F JUMPI PUSH2 0x689D SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x7192 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x68E2 PUSH2 0x68AB PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x68B3 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6929 PUSH2 0x68F2 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x68FA PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6936 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6942 ADDRESS PUSH2 0x692D JUMP JUMPDEST PUSH2 0x6974 PUSH2 0x696E PUSH32 0x0 PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x69BE JUMPI JUMPDEST PUSH2 0x6982 JUMPI JUMP JUMPDEST PUSH2 0x698A PUSH2 0x282 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x69BA PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x69C7 PUSH2 0x73CE JUMP JUMPDEST PUSH2 0x69F9 PUSH2 0x69F3 PUSH32 0x0 PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ ISZERO PUSH2 0x697C JUMP JUMPDEST POP PUSH2 0x6A09 PUSH2 0x6C37 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6A14 SWAP1 PUSH2 0x6A00 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6A1F SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A2B SWAP1 PUSH2 0x6A16 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A37 SWAP1 PUSH2 0xC1C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A43 DUP2 PUSH2 0x928 JUMP JUMPDEST SUB PUSH2 0x6A4A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x6A5B DUP3 PUSH2 0x6A3A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x6A76 JUMPI PUSH2 0x6A73 SWAP2 PUSH0 ADD PUSH2 0x6A4E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6AA9 PUSH1 0x20 PUSH2 0x6A93 PUSH2 0x6A8E DUP7 PUSH2 0x6A22 JUMP JUMPDEST PUSH2 0x6A2E JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x6AA1 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6AB9 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x6B89 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x6B1A JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x6ADB JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x6B16 SWAP1 PUSH2 0x6AE7 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x6B35 PUSH2 0x6B2F PUSH2 0x6B2A PUSH2 0x3301 JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP2 PUSH2 0x928 JUMP JUMPDEST SUB PUSH2 0x6B4A JUMPI PUSH2 0x6B45 SWAP3 SWAP4 POP PUSH2 0x73F4 JUMP JUMPDEST PUSH2 0x6AD9 JUMP JUMPDEST PUSH2 0x6B85 DUP5 PUSH2 0x6B56 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x938 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6BAB SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6BB2 JUMPI JUMPDEST PUSH2 0x6BA3 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6A5D JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x6AC6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6B99 JUMP JUMPDEST PUSH2 0x6BC2 ADDRESS PUSH2 0x692D JUMP JUMPDEST PUSH2 0x6BF4 PUSH2 0x6BEE PUSH32 0x0 PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST SUB PUSH2 0x6BFB JUMPI JUMP JUMPDEST PUSH2 0x6C03 PUSH2 0x282 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6C33 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6C3F PUSH2 0x3823 JUMP JUMPDEST PUSH2 0x6C58 PUSH2 0x6C52 PUSH2 0x6C4D PUSH2 0x5D52 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST SUB PUSH2 0x6C5F JUMPI JUMP JUMPDEST PUSH2 0x6CA1 PUSH2 0x6C6A PUSH2 0x5D52 JUMP JUMPDEST PUSH2 0x6C72 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6CAE SWAP1 PUSH2 0xC00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6CC5 PUSH2 0x6CC0 PUSH2 0x6CCA SWAP3 PUSH2 0x343 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6CE1 PUSH2 0x6CDC PUSH2 0x6CE6 SWAP3 PUSH2 0x38B JUMP JUMPDEST PUSH2 0x32E0 JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6D1B PUSH2 0x6D15 PUSH2 0x6D10 PUSH2 0x6D0B PUSH0 PUSH2 0x6D20 SWAP7 PUSH2 0x6D03 PUSH2 0x15C2 JUMP JUMPDEST POP ADD SWAP5 PUSH2 0x6CA5 JUMP JUMPDEST PUSH2 0x6CB1 JUMP JUMPDEST PUSH2 0x6CCD JUMP JUMPDEST SWAP2 PUSH2 0x640E JUMP JUMPDEST PUSH2 0x75F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6D2B PUSH2 0x6E93 JUMP JUMPDEST PUSH2 0x6D43 PUSH2 0x6D39 PUSH0 DUP4 ADD PUSH2 0x2B8E JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x3E11 JUMP JUMPDEST SWAP1 PUSH2 0x6D77 PUSH2 0x6D71 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP2 PUSH2 0x3796 JUMP JUMPDEST SWAP2 PUSH2 0x6D80 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x6D8A DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x6DCE SWAP1 PUSH2 0x6D9B PUSH2 0x1FFA JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x6DB8 PUSH2 0x6DB3 PUSH2 0x6DAE PUSH1 0x3 PUSH2 0x2B8E JUMP JUMPDEST PUSH2 0x2495 JUMP JUMPDEST PUSH2 0x24A1 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x6DC6 PUSH2 0x282 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x162D JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6DDE PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6E8E JUMPI PUSH2 0x6E52 PUSH2 0x6E42 PUSH2 0x6E06 PUSH2 0x6E57 SWAP4 PUSH2 0x6E5D SWAP7 PUSH0 SWAP2 PUSH2 0x6E60 JUMPI JUMPDEST POP PUSH2 0x24EE JUMP JUMPDEST SWAP4 PUSH2 0x6E3D PUSH2 0x6E12 PUSH2 0x2022 JUMP JUMPDEST SWAP2 PUSH2 0x6E2F DUP4 PUSH2 0x6E29 PUSH2 0x6E23 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x64F1 JUMP JUMPDEST PUSH2 0x6E37 PUSH2 0x5F99 JUMP JUMPDEST SWAP1 PUSH2 0x16CA JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST SWAP3 PUSH2 0x6E4D PUSH1 0x12 PUSH2 0x6534 JUMP JUMPDEST PUSH2 0x231A JUMP JUMPDEST PUSH2 0x65EC JUMP JUMPDEST SWAP1 PUSH2 0x172C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6E81 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6E87 JUMPI JUMPDEST PUSH2 0x6E79 DUP2 DUP4 PUSH2 0x7F4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24D0 JUMP JUMPDEST PUSH0 PUSH2 0x6E00 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6E6F JUMP JUMPDEST PUSH2 0x1660 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x6EF2 PUSH0 PUSH2 0x6EF7 SWAP3 PUSH2 0x6EEB PUSH2 0x3B0C JUMP JUMPDEST POP ADD PUSH2 0x640E JUMP JUMPDEST PUSH2 0x77DE JUMP JUMPDEST PUSH2 0x6EFF PUSH2 0x3B0C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6F15 SWAP2 PUSH2 0x6F10 PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x6F17 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6F21 SWAP2 PUSH2 0x7A02 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6F2D SWAP2 PUSH2 0x6F03 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F40 SWAP1 PUSH2 0x6F3B PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x6F42 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F4B SWAP1 PUSH2 0x7A93 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F56 SWAP1 PUSH2 0x6F2F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F60 PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x6F68 PUSH2 0x6F6A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F72 PUSH2 0x7ACD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F7C PUSH2 0x6F58 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F86 PUSH2 0x77F5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6F90 PUSH2 0x6F7E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6FC4 PUSH2 0x6FBE PUSH2 0x6FB9 PUSH2 0x6FB4 PUSH0 PUSH2 0x6FC9 SWAP7 PUSH2 0x6FAC PUSH2 0x15C2 JUMP JUMPDEST POP ADD SWAP5 PUSH2 0x6CA5 JUMP JUMPDEST PUSH2 0x6CB1 JUMP JUMPDEST PUSH2 0x6CCD JUMP JUMPDEST SWAP2 PUSH2 0x640E JUMP JUMPDEST PUSH2 0x7B0C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6FFE PUSH2 0x6FF8 PUSH2 0x6FF3 PUSH2 0x6FEE PUSH0 PUSH2 0x7003 SWAP7 PUSH2 0x6FE6 PUSH2 0x15C2 JUMP JUMPDEST POP ADD SWAP5 PUSH2 0x6CA5 JUMP JUMPDEST PUSH2 0x6CB1 JUMP JUMPDEST PUSH2 0x6CCD JUMP JUMPDEST SWAP2 PUSH2 0x640E JUMP JUMPDEST PUSH2 0x7B6F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x7010 PUSH2 0x5D2E JUMP JUMPDEST DUP3 PUSH2 0x702B PUSH2 0x7025 PUSH2 0x7020 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x7119 JUMPI DUP5 PUSH2 0x704B PUSH2 0x7045 PUSH2 0x7040 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x70D2 JUMPI PUSH2 0x7072 SWAP1 PUSH2 0x706D PUSH2 0x7066 PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x3F66 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x5DEF JUMP JUMPDEST PUSH2 0x707C JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x70C7 PUSH2 0x70B5 PUSH2 0x70AF PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP4 PUSH2 0x70BE PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x7077 JUMP JUMPDEST PUSH2 0x7115 PUSH2 0x70DE PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x70E6 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x715C PUSH2 0x7125 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x712D PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x718F SWAP2 ADD PUSH2 0x38B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x719D PUSH2 0x5D2E JUMP JUMPDEST DUP2 PUSH2 0x71B8 PUSH2 0x71B2 PUSH2 0x71AD PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x72A3 JUMPI PUSH2 0x71DF DUP4 PUSH2 0x71D9 PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x71D4 DUP4 PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x5ED8 JUMP JUMPDEST SWAP1 PUSH2 0x5DEF JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x71FB PUSH2 0x71F5 PUSH2 0x71F0 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x7274 JUMPI PUSH2 0x7223 SWAP1 PUSH2 0x721D PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x7218 DUP4 PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x6777 JUMP JUMPDEST SWAP1 PUSH2 0x5DEF JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x726F PUSH2 0x725D PUSH2 0x7257 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP4 PUSH2 0x3796 JUMP JUMPDEST SWAP4 PUSH2 0x7266 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x502 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x729E SWAP1 PUSH2 0x7298 PUSH2 0x7289 PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x37A2 JUMP JUMPDEST SWAP2 PUSH2 0x7293 DUP4 PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x7184 JUMP JUMPDEST SWAP1 PUSH2 0x5DEF JUMP JUMPDEST PUSH2 0x7224 JUMP JUMPDEST PUSH2 0x72B8 PUSH2 0x72B3 PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST DUP1 PUSH2 0x72CB PUSH2 0x72C5 DUP7 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST LT PUSH2 0x72F5 JUMPI PUSH2 0x72DE PUSH2 0x72F0 SWAP2 DUP6 SWAP1 PUSH2 0x6777 JUMP JUMPDEST PUSH2 0x72EB PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x37A2 JUMP JUMPDEST PUSH2 0x5DEF JUMP JUMPDEST PUSH2 0x71E0 JUMP JUMPDEST SWAP2 PUSH2 0x7334 SWAP2 POP SWAP2 SWAP3 PUSH2 0x7305 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x6745 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x7350 SWAP2 PUSH2 0x7349 PUSH2 0x1FFA JUMP JUMPDEST POP ADD PUSH2 0x7338 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x7365 DUP2 PUSH2 0x7338 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x737F JUMPI PUSH2 0x7377 PUSH1 0x1 SWAP2 PUSH2 0x7353 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7397 SWAP1 PUSH1 0x8 PUSH2 0x739C SWAP4 MUL PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x7384 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x73AA SWAP2 SLOAD PUSH2 0x7387 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x73CB SWAP2 PUSH0 PUSH2 0x73C5 SWAP3 PUSH2 0x73BE PUSH2 0x32C5 JUMP JUMPDEST POP ADD PUSH2 0x735C JUMP JUMPDEST SWAP1 PUSH2 0x739F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x73D6 PUSH2 0x2A08 JUMP JUMPDEST POP PUSH2 0x73F1 PUSH0 PUSH2 0x73EB PUSH2 0x73E6 PUSH2 0x3301 JUMP JUMPDEST PUSH2 0x7BA4 JUMP JUMPDEST ADD PUSH2 0x2B8E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x73FE DUP3 PUSH2 0x7BA7 JUMP JUMPDEST DUP2 PUSH2 0x7429 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x3796 JUMP JUMPDEST SWAP1 PUSH2 0x7432 PUSH2 0x282 JUMP JUMPDEST DUP1 PUSH2 0x743C DUP2 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x7448 DUP2 PUSH2 0x420E JUMP JUMPDEST PUSH2 0x745A PUSH2 0x7454 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x746E JUMPI PUSH2 0x746A SWAP2 PUSH2 0x7CB7 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x7478 PUSH2 0x7C1C JUMP JUMPDEST PUSH2 0x746C JUMP JUMPDEST PUSH2 0x7486 SWAP1 PUSH2 0x928 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7493 SWAP1 PUSH2 0x747D JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x74DD SWAP2 MUL SWAP2 PUSH2 0x74D7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x749F JUMP JUMPDEST SWAP3 PUSH2 0x749F JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x74F0 SWAP1 PUSH2 0x1603 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x7509 PUSH2 0x7504 PUSH2 0x7511 SWAP4 PUSH2 0x747D JUMP JUMPDEST PUSH2 0x74E7 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x74A3 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x755B DUP2 PUSH2 0x7545 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x7575 JUMPI PUSH2 0x756D PUSH1 0x1 SWAP2 PUSH2 0x7549 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x411D JUMP JUMPDEST PUSH2 0x758C SWAP2 PUSH2 0x7586 PUSH2 0x32C5 JUMP JUMPDEST SWAP2 PUSH2 0x74F3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7597 DUP2 PUSH2 0x7545 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x75B8 JUMPI PUSH1 0x1 SWAP1 SUB SWAP1 PUSH2 0x75B5 PUSH2 0x75AF DUP4 DUP4 PUSH2 0x7552 JUMP JUMPDEST SWAP1 PUSH2 0x757A JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0x7518 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x75D3 PUSH2 0x75CE PUSH2 0x75DB SWAP4 PUSH2 0x5DD0 JUMP JUMPDEST PUSH2 0x5DEC JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x74A3 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x75F1 SWAP2 PUSH2 0x75EB PUSH2 0x1FFA JUMP JUMPDEST SWAP2 PUSH2 0x75BD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x75FB PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x7612 PUSH2 0x760D PUSH1 0x1 DUP4 ADD DUP5 SWAP1 PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x7626 PUSH2 0x7620 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ ISZERO PUSH0 EQ PUSH2 0x76F2 JUMPI PUSH2 0x76A4 SWAP3 PUSH1 0x1 PUSH2 0x769F SWAP3 DUP5 PUSH2 0x764D PUSH0 SWAP7 PUSH2 0x7647 DUP6 PUSH2 0x5E92 JUMP JUMPDEST SWAP1 PUSH2 0x231A JUMP JUMPDEST PUSH2 0x766A PUSH2 0x765B DUP9 DUP6 ADD PUSH2 0x7338 JUMP JUMPDEST PUSH2 0x7664 DUP7 PUSH2 0x5E92 JUMP JUMPDEST SWAP1 PUSH2 0x231A JUMP JUMPDEST DUP1 PUSH2 0x767D PUSH2 0x7677 DUP5 PUSH2 0x38B JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST SUB PUSH2 0x76A9 JUMPI JUMPDEST POP POP POP PUSH2 0x7699 PUSH2 0x7694 DUP7 DUP4 ADD PUSH2 0x7515 JUMP JUMPDEST PUSH2 0x758E JUMP JUMPDEST ADD PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x75DF JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x76EA SWAP3 PUSH2 0x76DC PUSH2 0x76C8 PUSH2 0x76C2 PUSH2 0x76E5 SWAP5 DUP13 DUP10 ADD PUSH2 0x735C JUMP JUMPDEST SWAP1 PUSH2 0x739F JUMP JUMPDEST SWAP4 PUSH2 0x76D6 DUP6 SWAP2 DUP13 DUP10 ADD PUSH2 0x735C JUMP JUMPDEST SWAP1 PUSH2 0x74F3 JUMP JUMPDEST SWAP2 DUP6 DUP6 ADD PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x5DEF JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x7683 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x7710 SWAP1 PUSH2 0x928 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x7721 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x7707 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7731 PUSH2 0x7736 SWAP2 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x7384 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7743 SWAP1 SLOAD PUSH2 0x7725 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7769 PUSH2 0x7763 PUSH2 0x775C DUP5 PUSH2 0x7338 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x76FE JUMP JUMPDEST SWAP3 PUSH2 0x7353 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x7779 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x7799 PUSH2 0x7793 PUSH1 0x1 SWAP3 PUSH2 0x778E DUP8 PUSH2 0x7739 JUMP JUMPDEST PUSH2 0x7714 JUMP JUMPDEST SWAP5 PUSH2 0x7746 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x776C JUMP JUMPDEST SWAP1 PUSH2 0x77AD SWAP2 PUSH2 0x774C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x77D0 PUSH2 0x77C9 SWAP3 PUSH2 0x77C0 PUSH2 0x282 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x77A3 JUMP JUMPDEST SUB DUP4 PUSH2 0x7F4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x77DB SWAP1 PUSH2 0x77B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x77F2 SWAP2 PUSH2 0x77EB PUSH2 0x76F9 JUMP JUMPDEST POP ADD PUSH2 0x77D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7806 PUSH2 0x7800 PUSH2 0x7CE6 JUMP JUMPDEST ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH2 0x780C JUMPI JUMP JUMPDEST PUSH2 0x7814 PUSH2 0x282 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7844 PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x785A SWAP2 PUSH2 0x7855 PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x79DE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x7872 JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x787F PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x75DF JUMP JUMPDEST ADD PUSH2 0x7867 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x7895 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x78A1 PUSH2 0x78C6 SWAP4 PUSH2 0x14D3 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x78AD DUP5 PUSH2 0x785C JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x78CE JUMPI JUMPDEST PUSH2 0x78BF SWAP1 PUSH2 0x785C JUMP JUMPDEST ADD SWAP1 PUSH2 0x7866 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x7890 JUMP JUMPDEST SWAP2 POP PUSH2 0x78BF DUP2 SWAP3 SWAP1 POP PUSH2 0x78B6 JUMP JUMPDEST SWAP1 PUSH2 0x78EC SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0xBAB JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x78FB SWAP2 PUSH2 0x78DC JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x790D DUP2 PUSH2 0x29F JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x79CD JUMPI PUSH2 0x7931 DUP3 PUSH2 0x792B DUP6 SLOAD PUSH2 0x14A0 JUMP JUMPDEST DUP6 PUSH2 0x7885 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x7965 JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x7954 SWAP4 PUSH0 SWAP3 PUSH2 0x7959 JUMPI JUMPDEST POP POP PUSH2 0x78F1 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x794D JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x7974 DUP6 PUSH2 0x14D3 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x79B5 JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x799B JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x7957 JUMP JUMPDEST PUSH2 0x79AB SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x78DC JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x798F JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x7977 JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST SWAP1 PUSH2 0x79DC SWAP2 PUSH2 0x7903 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x7A00 SWAP3 PUSH2 0x79F9 PUSH2 0x79EF PUSH2 0x5D2E JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x79D2 JUMP JUMPDEST SWAP2 ADD PUSH2 0x79D2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x7A0C SWAP2 PUSH2 0x7848 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7A1F SWAP1 PUSH2 0x7A1A PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x7A21 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x7A3C PUSH2 0x7A36 PUSH2 0x7A31 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP2 PUSH2 0x35C JUMP JUMPDEST EQ PUSH2 0x7A4C JUMPI PUSH2 0x7A4A SWAP1 PUSH2 0x6D23 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7A8F PUSH2 0x7A58 PUSH0 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x7A60 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x7A9C SWAP1 PUSH2 0x7A0E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7AA6 PUSH2 0x77F5 JUMP JUMPDEST PUSH2 0x7AAE PUSH2 0x7AB0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7ACB PUSH2 0x7ABB PUSH2 0x7160 JUMP JUMPDEST PUSH0 PUSH2 0x7AC4 PUSH2 0x5EAE JUMP JUMPDEST SWAP2 ADD PUSH2 0x5DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7AD5 PUSH2 0x7A9E JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x7B07 JUMPI DUP3 PUSH2 0x7AFF SWAP2 PUSH1 0x1 PUSH2 0x7B05 SWAP6 ADD DUP2 SSTORE PUSH2 0x7552 JUMP JUMPDEST SWAP1 PUSH2 0x74F3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x7B14 PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x7B29 PUSH2 0x7B23 DUP3 DUP5 SWAP1 PUSH2 0x7B6F JUMP JUMPDEST ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH0 EQ PUSH2 0x7B69 JUMPI PUSH2 0x7B5F PUSH2 0x7B64 SWAP3 PUSH2 0x7B4B PUSH2 0x7B44 PUSH0 DUP6 ADD PUSH2 0x7515 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x7AD7 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x7B58 PUSH0 DUP6 ADD PUSH2 0x7338 JUMP JUMPDEST SWAP4 ADD PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x5DEF JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x7B8D SWAP2 PUSH1 0x1 PUSH2 0x7B88 SWAP3 PUSH2 0x7B81 PUSH2 0x15C2 JUMP JUMPDEST POP ADD PUSH2 0x7489 JUMP JUMPDEST PUSH2 0x2015 JUMP JUMPDEST PUSH2 0x7B9F PUSH2 0x7B99 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x7BBB PUSH2 0x7BB5 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ PUSH2 0x7BDD JUMPI PUSH2 0x7BDB SWAP1 PUSH0 PUSH2 0x7BD5 PUSH2 0x7BD0 PUSH2 0x3301 JUMP JUMPDEST PUSH2 0x7BA4 JUMP JUMPDEST ADD PUSH2 0x3E11 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7C18 SWAP1 PUSH2 0x7BE9 PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x7C2F PUSH2 0x7C29 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH2 0x7C36 JUMPI JUMP JUMPDEST PUSH2 0x7C3E PUSH2 0x282 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7C6E PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7C89 PUSH2 0x7C84 DUP4 PUSH2 0x832 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x7CA9 JUMPI PUSH2 0x7C9E RETURNDATASIZE PUSH2 0x7C77 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x7CB1 PUSH2 0x7C72 JUMP JUMPDEST SWAP1 PUSH2 0x7CA7 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x7CE3 SWAP4 PUSH2 0x7CC5 PUSH2 0x7C72 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x7CDA PUSH2 0x7C8E JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x7D04 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7CEE PUSH2 0x15C2 JUMP JUMPDEST POP PUSH2 0x7D01 PUSH0 PUSH2 0x7CFB PUSH2 0x6EB7 JUMP JUMPDEST ADD PUSH2 0x3861 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7D18 SWAP1 PUSH2 0x7D11 PUSH2 0x7C72 JUMP JUMPDEST POP ISZERO PUSH2 0x3DE JUMP JUMPDEST PUSH0 EQ PUSH2 0x7D24 JUMPI POP PUSH2 0x7DA8 JUMP JUMPDEST PUSH2 0x7D2D DUP3 PUSH2 0x420E JUMP JUMPDEST PUSH2 0x7D3F PUSH2 0x7D39 PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ DUP1 PUSH2 0x7D8D JUMPI JUMPDEST PUSH2 0x7D4E JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x7D89 SWAP1 PUSH2 0x7D5A PUSH2 0x282 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x7DA2 PUSH2 0x7D9C PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST EQ PUSH2 0x7D46 JUMP JUMPDEST PUSH2 0x7DB1 DUP2 PUSH2 0x420E JUMP JUMPDEST PUSH2 0x7DC3 PUSH2 0x7DBD PUSH0 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x38B JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x7DD2 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x7DDA PUSH2 0x282 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7E0A PUSH1 0x4 DUP3 ADD PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 MSIZE 0xA6 MOD TSTORE 0xD8 0xB4 0xEE BYTE 0xCA PUSH28 0xE41A399BA6E883A08CB1C66C7F6775A544FD0C8AC364736F6C634300 ADDMOD NOT STOP CALLER ","sourceMap":"2383:22992:60:-:0;;;;;;;;;-1:-1:-1;2383:22992:60;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2693:33::-;;;;;;:::i;:::-;;:::o;2383:22992::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;2383:22992:60:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2814:24::-;;;;;;:::i;:::-;;:::o;2383:22992::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;3011:144:3:-;3056:13;;:::i;:::-;3106:18;3134:14;3141:7;3106:18;;:::i;:::-;3141:7;3134:14;:::i;:::-;;:::o;2383:22992:60:-;;;:::o;5505:186:3:-;5657:5;5505:186;5578:4;;:::i;:::-;5610:12;;;:::i;:::-;5648:7;5657:5;;;:::i;:::-;5680:4;5673:11;:::o;3217:103:6:-;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2383:22992:60:-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;15576:1163::-;15673:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;15576:1163;15654:41;15721:8;:18;;:16;:8;;;:::i;:::-;:16;:::i;:::-;;:18;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;15576:1163;15706:33;15769:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;15576:1163;15750:40;15821:8;:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;15576:1163;15801:42;15882:23;;;:::i;:::-;15988:54;15989:35;15941:13;;:::i;:::-;15989:15;;:35;:::i;:::-;16028:14;15988:54;;:::i;:::-;16060:4;;16053:73;:25;:12;16060:4;16053:12;:::i;:::-;:25;:::i;:::-;;16079:10;16053:73;;16079:10;16099:4;16053:73;16106:19;16091:13;16099:4;16091:13;:::i;:::-;16106:12;:19;16121:4;16106:19;:::i;:::-;;;:::i;:::-;16053:73;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;15576:1163;16162:4;16155:34;;:22;:12;16162:4;16155:12;:::i;:::-;:22;:::i;:::-;;16178:10;16155:34;16178:10;16155:34;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;15576:1163;16137:52;16218:22;:12;16225:4;16218:12;:::i;:::-;:22;:::i;:::-;;:49;:22;16241:10;;16261:4;16218:49;16253:13;16261:4;16253:13;:::i;:::-;16218:49;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;16686:45;16218:49;16686:30;16218:49;16438:68;16629:46;16218:49;16356:71;16631:19;16218:49;16280:65;16630:32;16218:49;16686:21;16218:49;;;;;15576:1163;16200:67;16288:14;:18;;16305:1;16288:18;:::i;:::-;;;:::i;:::-;;16280:65;:::i;:::-;16364:30;;16375:19;:12;:19;16390:4;16375:19;:::i;:::-;;;:::i;:::-;16364:30;:::i;:::-;;;:::i;:::-;;;16356:71;:::i;:::-;16446:30;;16457:19;:12;:19;16472:4;16457:19;:::i;:::-;;;:::i;:::-;16446:30;:::i;:::-;;;:::i;:::-;;;16438:68;:::i;:::-;16537:15;16525:10;16537:15;;;:::i;:::-;16574:10;16586:15;16569:33;;;;;:::i;:::-;;;;;;:::i;:::-;;;;16631:19;16646:4;16631:19;:::i;:::-;;;:::i;:::-;16630:32;:::i;:::-;16629:46;:::i;:::-;16701:4;16686:21;:::i;:::-;:30;:::i;:::-;:45;;:30;16717:8;16727:3;16686:45;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;15576:1163;;:::o;16686:45::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;16218:49::-;16686:45;16218:49;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;16155:34::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;16053:73::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;15821:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;15769:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;15721:18::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;15673:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;15576:1163::-;;;;:::i;:::-;:::o;2383:22992::-;;;:::o;24398:103::-;24443:6;;:::i;:::-;24469:24;;;:::i;:::-;24462:31;:::o;2383:22992::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4191:152:3:-;4243:7;;:::i;:::-;4287:18;4322:14;;4287:18;;:::i;:::-;4322:14;;:::i;:::-;4315:21;:::o;3217:103:6:-;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2383:22992:60:-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;10618:1405;;10690:61;10698:10;:14;;10711:1;10698:14;:::i;:::-;;;:::i;:::-;;10690:61;:::i;:::-;10781:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;11107:51;10781:22;;;;;10618:1405;10762:41;10822:8;10814:51;10822:8;:22;;10834:10;10842:1;10834:10;:::i;:::-;10822:22;:::i;:::-;;;:::i;:::-;;;10814:51;:::i;:::-;10876:64;10884:21;10894:10;10884:21;:::i;:::-;:35;;10909:10;10884:35;:::i;:::-;;;:::i;:::-;;;10876:64;:::i;:::-;11126:31;10980:39;11008:10;10980:39;:::i;:::-;11038:18;11030:66;11038:18;:32;;11060:10;11038:32;:::i;:::-;;;:::i;:::-;;;11030:66;:::i;:::-;11126:10;11139:18;11126:31;;:::i;:::-;11107:51;;:::i;:::-;;11176:9;;:::i;:::-;11208:3;11187:1;:19;;11191:15;:13;:6;:13;:::i;:::-;:15;:::i;:::-;11187:19;:::i;:::-;;;:::i;:::-;;;;;11244:12;:9;:6;:9;:::i;:::-;11254:1;11244:12;;:::i;:::-;11279:5;11271:53;11279:5;:19;;11288:10;11296:1;11288:10;:::i;:::-;11279:19;:::i;:::-;;;:::i;:::-;;;11271:53;:::i;:::-;11361:13;;:::i;:::-;11397:11;11389:45;11397:11;:15;;11411:1;11397:15;:::i;:::-;;;:::i;:::-;;11389:45;:::i;:::-;11477:38;;:23;:13;11484:5;11477:13;:::i;:::-;:23;:::i;:::-;;11509:4;11477:38;11501:13;11509:4;11501:13;:::i;:::-;11477:38;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;11208:3;11449:66;11534:17;;:22;;11555:1;11534:22;:::i;:::-;;;:::i;:::-;;:48;;;;11208:3;11530:62;;11641:5;11626:32;11641:5;11626:32;:30;:21;11641:5;11626:21;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;11786:62;11689:82;11863:13;11626:32;11607:51;11863:22;11626:32;11863:41;11626:32;;;;;11208:3;11607:51;;:::i;:::-;11723:17;11742:18;11762:8;11689:82;;:::i;:::-;11794:5;:26;;:5;11803:17;11794:26;:::i;:::-;;;:::i;:::-;;;11786:62;:::i;:::-;11863:13;:::i;:::-;:22;:::i;:::-;;;11886:10;11863:41;;11886:10;11898:5;11863:41;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;11208:3;11863:41;;;11208:3;;11176:9;11208:3;:::i;:::-;11176:9;;11863:41;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;11626:32::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11530:62::-;11584:8;;11208:3;11584:8;;;;11534:48;11560:5;;:22;;11569:13;11577:4;11569:13;:::i;:::-;11560:22;:::i;:::-;;;:::i;:::-;;11534:48;;11477:38;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;11187:19::-;;;11944:18;11932:10;11944:18;;;:::i;:::-;11984:10;11996:18;11979:36;;;;;:::i;:::-;;;;;;:::i;:::-;;;;10618:1405::o;10781:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10618:1405::-;;;;:::i;:::-;:::o;6251:244:3:-;;6461:5;6251:244;6338:4;;:::i;:::-;6372:12;6425:5;6372:12;;:::i;:::-;6410:4;6416:7;6425:5;;;:::i;:::-;6457:2;6461:5;;;:::i;:::-;6484:4;6477:11;:::o;2383:22992:60:-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;15183:222::-;15246:7;;:::i;:::-;15289:8;:32;;:30;:8;;;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;15339:51;:35;:58;15289:32;15339:58;15289:32;;;;;15183:222;15266:55;15339:35;:::i;:::-;:51;:::i;:::-;:58;:51;:58;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;15183:222;15332:65;;:::o;15339:58::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;15289:32::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19717:107::-;19766:7;;:::i;:::-;19793:23;;;:::i;:::-;19786:30;:::o;2383:22992::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;19322:242::-;;19443:26;19322:242;19400:7;;:::i;:::-;19443:8;:26;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;19487:29;:43;19443:26;19487:69;19443:26;;;;;19322:242;19420:49;19487:29;:::i;:::-;:43;:::i;:::-;:69;:43;:69;19538:9;;;:::i;:::-;19549:6;19487:69;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;19322:242;19480:76;;:::o;19487:69::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19443:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2383:22992::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;8407:920;8477:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8407:920;8459:39;8533:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8407:920;8509:51;8608:5;8601:38;;:23;:13;8608:5;8601:13;:::i;:::-;:23;:::i;:::-;;8633:4;8601:38;8625:13;8633:4;8625:13;:::i;:::-;8601:38;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8407:920;8573:66;8669:17;;:21;;8689:1;8669:21;:::i;:::-;;;:::i;:::-;;8701;:13;8708:5;8701:13;:::i;:::-;:21;:::i;:::-;;:55;:21;8723:13;;8738:17;8701:55;;8738:17;8701:55;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;8773:12;8701:55;;;8407:920;8774:11;8773:12;;:::i;:::-;8769:25;;8810:42;:31;8827:13;8810:31;:::i;:::-;:42;:::i;:::-;:94;:42;8853:5;;8860:9;8810:94;;8860:9;;;:::i;:::-;8871:17;8810:94;8871:17;8890:13;8898:4;8890:13;:::i;:::-;8810:94;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;8407:920;8806:514;;;;;;;;;;;;;8407:920::o;8806:514::-;8989:214;;:44;:31;:214;9006:13;8989:31;:::i;:::-;:44;:::i;:::-;;:214;:44;9052:5;9084:7;9111:9;;;;:::i;:::-;9139:17;9175:13;9183:4;9175:13;:::i;:::-;8989:214;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9220:67;8989:214;;;;;8806:514;8960:243;9228:22;;9249:1;9228:22;:::i;:::-;;;:::i;:::-;;9220:67;:::i;:::-;9302:7::o;8989:214::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8806:514::-;8920:7;;;;:::o;8810:94::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;8769:25;8787:7;;;;:::o;8701:55::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;8601:38::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8533:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8477:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2383:22992::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;4049:82:3:-;4098:5;;:::i;:::-;4122:2;4115:9;4122:2;4115:9;:::i;:::-;;:::o;3217:103:6:-;;;:::i;:::-;3282:1;;:::i;:::-;;;:::i;:::-;3217:103::o;9576:275:60:-;9648:15;:13;:6;:13;:::i;:::-;:15;:::i;:::-;9679:13;9691:1;9679:13;:::i;:::-;9706:3;9694:1;:10;;9698:6;9694:10;:::i;:::-;;;:::i;:::-;;;;;9706:3;9742:6;:12;:9;:6;:9;:::i;:::-;9752:1;9742:12;;:::i;:::-;9773:5;:18;;9782:9;;;:::i;:::-;9773:18;:::i;:::-;;;:::i;:::-;;9769:32;;9826:5;;;:::i;:::-;9679:13;9706:3;:::i;:::-;9679:13;;9769:32;9793:8;;;9694:10;;;9576:275::o;:::-;;;:::i;:::-;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;2383:22992:60:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;2383:22992:60:-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2383:22992:60:-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;17177:501::-;;;;;;;;;;17425:18;;:16;:8;;;:::i;:::-;:16;:::i;:::-;;:18;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;17177:501;17410:33;17475:8;:30;;:28;:8;;;:::i;:::-;:28;:::i;:::-;;:30;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;17177:501;17454:51;17558:1;17571:41;:31;17544:16;;17558:1;17544:16;:::i;:::-;;:::i;:::-;17591:10;17571:31;:::i;:::-;:41;:::i;:::-;;;17613:8;17623:6;;17631:7;;17640:5;17647:6;17655:8;17665:4;17571:99;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;17177:501;;:::o;17571:99::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;17475:30::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;17425:18::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;25250:122:60:-;25317:47;25250:122;25317:47;25349:6;25317:47;:::i;:::-;;:::i;:::-;;25250:122::o;:::-;;;;:::i;:::-;:::o;2383:22992::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4401:171:3:-;4545:20;;4401:171;4466:7;;:::i;:::-;4510:18;4545:11;4510:18;;:::i;:::-;4545:11;:20;:::i;:::-;;:::i;:::-;4538:27;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;3155:101::-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;20046:131:60:-;20139:30;20046:131;20112:7;;:::i;:::-;20162:6;20139:30;:::i;:::-;20132:37;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;2383:22992:60:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;6252:431:1:-;;3888:7:60;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;2383:22992:60;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3810:223::-;3986:39;3810:223;;3997:28;3810:223;3997:28;:::i;:::-;3986:39;;:::i;:::-;3810:223::o;:::-;;;;;:::i;:::-;:::o;3268:148:3:-;3315:13;;:::i;:::-;3365:18;3393:16;3400:9;3365:18;;:::i;:::-;3400:9;3393:16;:::i;:::-;;:::o;4767:178::-;4911:5;4767:178;4836:4;;:::i;:::-;4868:12;;;:::i;:::-;4907:2;4911:5;;;:::i;:::-;4934:4;4927:11;:::o;2383:22992:60:-;;;:::o;24658:103::-;24702:16;;:::i;:::-;24738:6;:15;:13;:6;:13;:::i;:::-;:15;:::i;:::-;24731:22;:::o;17952:327::-;18180:54;18252:19;17952:327;18026:7;;:::i;:::-;18074:23;18181:35;18074:23;;:::i;:::-;18133:13;;:::i;:::-;18181:15;:35;:::i;:::-;18180:54;:::i;:::-;18252:19;18267:4;18252:19;:::i;:::-;;;:::i;:::-;18245:26;:::o;2383:22992::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2383:22992:60;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3453:349::-;3725:28;3714:39;3453:349;3522:32;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;3580:10;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;3672:29;3678:13;3686:4;3678:13;:::i;:::-;3672:29;3693:7;3672:29;:::i;:::-;;;:::i;:::-;3725:28;:::i;:::-;3714:39;;:::i;:::-;3776:18;;:16;:8;;;:::i;:::-;:16;:::i;:::-;;:18;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;3764:30;3776:18;;;;;3453:349;3764:30;;;:::i;:::-;3453:349::o;3776:18::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3453:349::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;24944:116:60:-;25008:44;24944:116;25008:44;25037:6;25008:44;:::i;:::-;;:::i;:::-;;24944:116::o;:::-;;;;:::i;:::-;:::o;2383:22992::-;;;;;:::i;:::-;;;;;;;;;:::o;5003:195:3:-;5162:29;5003:195;5162:20;:29;5003:195;5083:7;;:::i;:::-;5127:18;5162:13;5127:18;;:::i;:::-;5162:13;:20;:::i;:::-;:29;:::i;:::-;;:::i;:::-;5155:36;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4041:117:60:-;4122:28;4111:39;4041:117;4122:28;:::i;:::-;4111:39;;:::i;:::-;4041:117::o;:::-;;;;:::i;:::-;:::o;4647:105::-;4689:7;;:::i;:::-;4739:4;4716:28;;4739:4;4716:28;:::i;:::-;;:::i;:::-;4709:35;:::o;3217:103:6:-;;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2383:22992:60:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;5381:2491::-;;;5521:32;;:30;:8;;;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5381:2491;5498:55;5589:28;;:26;:8;;;:::i;:::-;:26;:::i;:::-;;:28;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5381:2491;5564:53;5646:8;:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5381:2491;5628:39;5693:8;:18;;:16;:8;;;:::i;:::-;:16;:::i;:::-;;:18;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;5820:52;:35;:64;5693:18;5820:64;5693:18;;;;;5381:2491;5678:33;5740:12;5724:69;5740:12;5732:35;;5757:10;5765:1;5757:10;:::i;:::-;5732:35;:::i;:::-;;;:::i;:::-;;;5724:69;:::i;:::-;5820:35;:::i;:::-;:52;:::i;:::-;;5873:10;5820:64;;5873:10;5820:64;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;5381:2491;5804:80;5933:12;5922:31;5933:19;:12;:19;:::i;:::-;5922:31;:::i;:::-;6011:12;5997:34;6011:19;:12;:19;:::i;:::-;5997:34;:::i;:::-;6061:1;6049:13;6061:1;6049:13;:::i;:::-;6089:3;6064:1;:23;;6068:19;:12;:19;:::i;:::-;6064:23;:::i;:::-;;;:::i;:::-;;;;;6218:48;6160:6;6109:75;6125:59;6126:58;6160:6;6126:58;6168:15;;6160:6;6168:12;6181:1;6168:15;;:::i;:::-;;:::i;:::-;6126:58;;:::i;:::-;;:::i;:::-;6125:59;;:::i;:::-;6109:75;:10;6120:1;;6109:75;;;:::i;:::-;;:::i;:::-;6218:48;:33;:23;6225:15;;:12;6238:1;6225:15;;:::i;:::-;;:::i;:::-;6218:23;:::i;:::-;:33;:::i;:::-;;6260:4;6218:48;6252:13;6260:4;6252:13;:::i;:::-;6218:48;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6089:3;6218:48;6199:67;6218:48;;;;;6089:3;6199:13;:67;:13;6213:1;;6199:67;;;:::i;:::-;;:::i;:::-;6089:3;:::i;:::-;6049:13;;6218:48;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6064:23::-;;;;;;;;;;6290:21;:29;6064:23;6290:21;:::i;:::-;:29;:::i;:::-;;;6320:5;6327:12;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;6044:234;6370:1;6358:13;6370:1;6358:13;:::i;:::-;6398:3;6373:1;:23;;6377:19;:12;:19;:::i;:::-;6373:23;:::i;:::-;;;:::i;:::-;;;;;6434:15;;:12;6447:1;6434:15;;:::i;:::-;;:::i;:::-;6489:5;6482:38;;:23;:13;6489:5;6482:13;:::i;:::-;:23;:::i;:::-;;6514:4;6482:38;6506:13;6514:4;6506:13;:::i;:::-;6482:38;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6398:3;6464:56;6578:14;6560:41;:33;6578:14;6560:33;:::i;:::-;:41;:::i;:::-;:72;:41;6602:5;;6617:7;6560:72;6617:7;6627:4;6560:72;6627:4;6560:72;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6398:3;6535:97;6671:41;:33;6689:14;6671:33;:::i;:::-;:41;:::i;:::-;:71;:41;6713:5;;6728:7;6671:71;6728:7;6738:3;6671:71;6738:3;6671:71;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6398:3;6647:95;6797:14;6779:41;:33;6797:14;6779:33;:::i;:::-;:41;:::i;:::-;:68;:41;;6821:5;6779:68;6821:5;6836:4;6843:3;6779:68;6843:3;6779:68;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6398:3;6757:90;6903:14;6885:41;:33;6903:14;6885:33;:::i;:::-;:41;:::i;:::-;:69;:41;;6927:5;6885:69;6927:5;6942:4;6949;6885:69;6949:4;6885:69;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6398:3;6862:92;6986:14;:28;;7004:10;7012:1;7004:10;:::i;:::-;6986:28;:::i;:::-;;;:::i;:::-;;;:76;;;;;6398:3;6986:123;;;;;;6398:3;6986:169;;;;;;6398:3;6969:186;7176:10;:13;;:10;7187:1;7176:13;;:::i;:::-;;:::i;:::-;:26;;;6398:3;7172:110;;6398:3;7370:10;7323:26;:7;7333:16;;:13;7347:1;7333:16;;:::i;:::-;;:::i;:::-;7323:26;;:::i;:::-;7371:9;7370:10;;:::i;:::-;7366:126;;7527:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;6398:3;7508:41;7583:8;:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;6398:3;7564:40;7639:8;:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;6398:3;7619:42;7682:7;:26;;7692:16;;:13;7706:1;7692:16;;:::i;:::-;;:::i;:::-;7682:26;:::i;:::-;;;:::i;:::-;;7678:176;;6398:3;;;;;;;;;:::i;:::-;6358:13;;7678:176;7743:39;7801:37;7744:14;;:25;7801:22;7744:14;7801:13;7744:14;:25;:::i;:::-;7743:39;:::i;:::-;7808:5;7801:13;:::i;:::-;:22;:::i;:::-;:37;;:22;7824:8;7834:3;7801:37;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6398:3;7801:37;;;7678:176;;;;;;7801:37;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;7639:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7583:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7527:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7366:126::-;7408:5;;;;;;;;7401:50;7408:5;;7401:22;7408:5;;7401:13;7408:5;;7401:13;:::i;:::-;:22;:::i;:::-;;;7424:10;7401:50;;7424:10;7436:14;7401:50;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;7366:126;7470:7;:::o;7401:50::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;7172:110::-;7223:43;7252:6;7223:43;7260:5;7223:43;;:::i;:::-;;:::i;:::-;;7172:110;;7176:26;7193:9;;7176:26;;6986:169;7130:11;;:25;;7145:10;7153:1;7145:10;:::i;:::-;7130:25;:::i;:::-;;;:::i;:::-;;;6986:169;;;:123;7083:12;;:26;;7099:10;7107:1;7099:10;:::i;:::-;7083:26;:::i;:::-;;;:::i;:::-;;;6986:123;;;:76;7035:13;;:27;;7052:10;7060:1;7052:10;:::i;:::-;7035:27;:::i;:::-;;;:::i;:::-;;;6986:76;;;6885:69;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6779:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6671:71::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6560:72::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6482:38::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6373:23::-;;;;;;;;;5381:2491::o;6290:50::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;5820:64::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5693:18::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5646:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5589:28::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5521:32::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5381:2491::-;;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;3217:103:6:-;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2383:22992:60:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;12206:2810;12275:61;12283:10;:14;;12296:1;12283:14;:::i;:::-;;;:::i;:::-;;12275:61;:::i;:::-;12372:28;;:26;:8;;;:::i;:::-;:26;:::i;:::-;;:28;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;12411:63;12372:28;;;;;12206:2810;12347:53;12419:28;;12437:10;12445:1;12437:10;:::i;:::-;12419:28;:::i;:::-;;;:::i;:::-;;;12411:63;:::i;:::-;12504:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;12206:2810;12485:41;12537:51;12545:8;:22;;12557:10;12565:1;12557:10;:::i;:::-;12545:22;:::i;:::-;;;:::i;:::-;;;12537:51;:::i;:::-;12617:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;12937:36;12617:21;;;;;12206:2810;12599:39;12657:7;12649:49;12657:7;:21;;12668:10;12676:1;12668:10;:::i;:::-;12657:21;:::i;:::-;;;:::i;:::-;;;12649:49;:::i;:::-;12893:31;12740:39;12768:10;12740:39;:::i;:::-;12798:18;12790:66;12798:18;:32;;12820:10;12798:32;:::i;:::-;;;:::i;:::-;;;12790:66;:::i;:::-;12906:18;12893:31;;:::i;:::-;12937:36;;:::i;:::-;;12991:9;;:::i;:::-;13023:3;13002:1;:19;;13006:15;:13;:6;:13;:::i;:::-;:15;:::i;:::-;13002:19;:::i;:::-;;;:::i;:::-;;;;;13059:12;:9;:6;:9;:::i;:::-;13069:1;13059:12;;:::i;:::-;13086:53;13094:5;:19;;13103:10;13111:1;13103:10;:::i;:::-;13094:19;:::i;:::-;;;:::i;:::-;;;13086:53;:::i;:::-;13178:13;;:::i;:::-;13214:11;13206:45;13214:11;:15;;13228:1;13214:15;:::i;:::-;;;:::i;:::-;;13206:45;:::i;:::-;13296:38;;:23;:13;13303:5;13296:13;:::i;:::-;:23;:::i;:::-;;13328:4;13296:38;13320:13;13328:4;13320:13;:::i;:::-;13296:38;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;13023:3;13268:66;13355:17;;:22;;13376:1;13355:22;:::i;:::-;;;:::i;:::-;;:48;;;;13023:3;13351:62;;13449:32;13464:5;13449:32;:30;:21;13464:5;13449:21;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;13430:51;13524:165;13449:32;13706:72;13449:32;;;;;13023:3;13430:51;;:::i;:::-;13593:17;13629:18;13666:8;13524:165;;:::i;:::-;13714:15;:36;;:15;13733:17;13714:36;:::i;:::-;;;:::i;:::-;;;13706:72;:::i;:::-;13799:5;:18;;13808:9;;;:::i;:::-;13799:18;:::i;:::-;;;:::i;:::-;;13795:141;;13976:27;;:25;:8;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;13023:3;13952:51;14018:61;14026:13;:27;;14043:10;14051:1;14043:10;:::i;:::-;14026:27;:::i;:::-;;;:::i;:::-;;;14018:61;:::i;:::-;14096:21;:13;14103:5;14096:13;:::i;:::-;:21;:::i;:::-;:53;:21;14118:13;;14133:15;14096:53;;14133:15;14096:53;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;13023:3;14187:13;14170:42;:31;14187:13;14170:31;:::i;:::-;:42;:::i;:::-;:89;:42;14213:5;;14220:9;14170:89;;14220:9;;;:::i;:::-;14231:15;14170:89;14231:15;14248:10;14170:89;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;13023:3;14166:730;;;;;;;;;;;;;;13023:3;14166:730;;12991:9;13023:3;:::i;:::-;12991:9;;14166:730;14526:13;14509:44;:31;:233;14526:13;14509:31;:::i;:::-;:44;:::i;:::-;:233;;:44;:233;14612:7;14643:9;;;;:::i;:::-;14675:15;14713:10;14509:233;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;14166:730;14486:256;14769:12;14761:48;14769:12;:16;;14784:1;14769:16;:::i;:::-;;;:::i;:::-;;14761:48;:::i;:::-;14828:52;:26;:17;14835:9;;;:::i;:::-;14828:17;:::i;:::-;:26;:::i;:::-;;;14855:10;14828:52;;14855:10;14867:12;14828:52;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;13023:3;14828:52;;;14166:730;;;;;14828:52;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;14509:233::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;14166:730::-;;;;;14347:9;14339:37;14347:9;:13;;14359:1;14347:13;:::i;:::-;;;:::i;:::-;;14339:37;:::i;:::-;14395:49;:26;:17;14402:9;;;:::i;:::-;14395:17;:::i;:::-;:26;:::i;:::-;;;14422:10;14395:49;;14422:10;14434:9;14395:49;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;13023:3;14395:49;;;14166:730;;;;14395:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;14170:89::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;14096:53;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;13976:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;13795:141::-;13845:9;;13838:55;:26;:17;13845:9;;;:::i;:::-;13838:17;:::i;:::-;:26;:::i;:::-;;;13865:10;13838:55;;13865:10;13877:15;13838:55;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;13023:3;13838:55;;;13795:141;13912:8;;;13838:55;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;13449:32::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;13351:62::-;13405:8;;;13023:3;13405:8;;;13355:48;13381:5;;:22;;13390:13;13398:4;13390:13;:::i;:::-;13381:22;:::i;:::-;;;:::i;:::-;;13355:48;;13296:38;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;13002:19::-;;;14937:18;14925:10;14937:18;;;:::i;:::-;14977:10;14989:18;14972:36;;;;;:::i;:::-;;;;;;:::i;:::-;;;;12206:2810::o;12617:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;12504:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;12372:28::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;12206:2810::-;;;;:::i;:::-;:::o;18742:304::-;;18957:81;18742:304;;;18930:7;;:::i;:::-;18978:11;18991:17;19010:12;19024:13;18957:81;;:::i;:::-;18950:88;:::o;2242:153:3:-;2326:63;2242:153;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;10264:128:3:-;;10380:4;10264:128;10364:7;10380:4;;;:::i;:::-;10264:128::o;2383:22992:60:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1812:36:6:-;1847:1;;;:::i;:::-;1812:36;:::o;1847:1::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3326:384::-;3410:28;;:::i;:::-;3526:9;;:1;:9;;:::i;:::-;:20;;3539:7;;:::i;:::-;3526:20;:::i;:::-;;;:::i;:::-;;3522:88;;3684:19;3696:7;3684:9;3696:7;;:::i;:::-;3684:1;:9;:19;:::i;:::-;3326:384::o;3522:88::-;3569:30;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2383:22992:60;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1766:40:6:-;1805:1;;;:::i;:::-;1766:40;:::o;3716:283::-;3969:23;3799:28;;:::i;:::-;3969:9;3981:11;;:::i;:::-;3969:1;:9;:23;:::i;:::-;3716:283::o;2383:22992:60:-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;22995:788;23051:7;;:::i;:::-;23089:1;23071:19;23089:1;23071:19;:::i;:::-;23120:1;23108:13;23120:1;23108:13;:::i;:::-;23103:648;23144:3;23123:1;:19;;23127:15;:13;:6;:13;:::i;:::-;:15;:::i;:::-;23123:19;:::i;:::-;;;:::i;:::-;;;;;23180:12;:9;:6;:9;:::i;:::-;23190:1;23180:12;;:::i;:::-;23225:38;;:23;:13;23232:5;23225:13;:::i;:::-;:23;:::i;:::-;;23257:4;23225:38;23249:13;23257:4;23249:13;:::i;:::-;23225:38;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;23144:3;23207:56;23284:7;;:12;;23295:1;23284:12;:::i;:::-;;;:::i;:::-;;23280:26;;23327:5;:18;;23336:9;;;:::i;:::-;23327:18;:::i;:::-;;;:::i;:::-;;23323:111;;23473:26;:8;:26;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;23546:29;:43;23473:26;23546:70;23473:26;;;;;23144:3;23450:49;23546:29;:::i;:::-;:43;:::i;:::-;:70;:43;:70;23597:9;;;:::i;:::-;23608:7;23546:70;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;23144:3;23546:70;23707:32;23546:70;;;;;23144:3;23514:102;23631:61;23639:21;:25;;23663:1;23639:25;:::i;:::-;;;:::i;:::-;;23631:61;:::i;:::-;23707:32;;:::i;:::-;23144:3;23108:13;23144:3;:::i;:::-;23108:13;;;23546:70;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;23473:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;23323:111::-;23377:7;23144:3;23377:7;:14;23366:25;23377:7;:14;23387:4;23377:14;:::i;:::-;;;:::i;:::-;23366:25;;:::i;:::-;23410:8;;;23280:26;23298:8;;;23144:3;23298:8;;;23225:38;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;23123:19::-;;;;23761:14;:::o;8996:208:3:-;9066:7;:21;;9077:10;9085:1;9077:10;:::i;:::-;9066:21;:::i;:::-;;;:::i;:::-;;9062:91;;9191:5;9178:1;9170:10;9178:1;9170:10;:::i;:::-;9182:7;9191:5;;;:::i;:::-;8996:208::o;9062:91::-;9110:32;9131:10;9139:1;9131:10;:::i;:::-;9110:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;8243:128:1;8300:6;;:::i;:::-;8325:26;:39;;:26;;:::i;:::-;:39;;:::i;:::-;8318:46;:::o;23970:316:60:-;24086:21;23970:316;24047:7;;:::i;:::-;24086:8;:21;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;24138:22;24086:21;;;;;23970:316;24067:40;24138:22;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;24209;24198:34;24138:22;24197:48;24138:22;;;;;23970:316;24118:42;24198:7;24209:9;;:22;:::i;:::-;24198:34;;:::i;:::-;24197:48;:::i;:::-;24256:22;:::o;24138:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;24086:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2383:22992::-;;:::o;9095:117:48:-;9185:19;9193:10;9185:19;9095:117;9158:7;;:::i;:::-;9193:3;:10;9185:19;:::i;:::-;;:::i;:::-;9178:26;:::o;2383:22992:60:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9566:158:48:-;9683:31;9691:22;9667:49;9566:158;9691:22;9695:10;9675:40;9566:158;9640:7;;:::i;:::-;9695:3;:10;9691:22;:::i;:::-;;:::i;:::-;9683:31;:::i;:::-;9675:40;:::i;:::-;9667:49;:::i;:::-;9660:56;:::o;2383:22992:60:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;21974:834::-;;22722:34;21974:834;22721:53;21974:834;22163:7;;:::i;:::-;22191:11;22183:55;22191:11;:15;;22205:1;22191:15;:::i;:::-;;;:::i;:::-;;22183:55;:::i;:::-;22249:62;22257:13;:19;;22274:2;22257:19;:::i;:::-;;;:::i;:::-;;;22249:62;:::i;:::-;22322:22;;:::i;:::-;22355;;;:::i;:::-;22413:2;22406:26;22413:18;:2;:18;22418:13;22413:18;;:::i;:::-;;:::i;:::-;22406:26;:::i;:::-;22450:13;:18;;22466:2;22450:18;:::i;:::-;;;:::i;:::-;;22446:246;;;;22502:20;22554:21;22502:11;22516:6;22502:20;;:::i;:::-;22554:12;:21;:::i;:::-;22446:246;22722:34;:::i;:::-;22721:53;:::i;:::-;22787:13;:::o;22446:246::-;22625:11;22668:12;22446:246;;9522:206:3;;9592:7;:21;;9603:10;9611:1;9603:10;:::i;:::-;9592:21;:::i;:::-;;;:::i;:::-;;9588:89;;9715:5;9694:7;9711:1;9703:10;9711:1;9703:10;:::i;:::-;9715:5;;;:::i;:::-;9522:206::o;9588:89::-;9636:30;9655:10;9663:1;9655:10;:::i;:::-;9636:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2383:22992:60;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::o;11993:477:3:-;;;;12119:25;12129:5;12136:7;12119:25;;:::i;:::-;12158:16;;:37;;12178:17;12158:37;:::i;:::-;;;:::i;:::-;;12154:310;;11993:477;;;;;;:::o;12154:310::-;12215:16;:24;;12234:5;12215:24;:::i;:::-;;;:::i;:::-;;12211:130;;12433:5;12391;;12407:24;12391:5;12398:7;12407:16;:24;:::i;:::-;12433:5;;;;:::i;:::-;12154:310;;;;;;12211:130;12293:7;12266:60;12293:7;;12302:16;12320:5;12266:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6868:300;;6951:4;:18;;6959:10;6967:1;6959:10;:::i;:::-;6951:18;:::i;:::-;;;:::i;:::-;;6947:86;;7046:2;:16;;7052:10;7060:1;7052:10;:::i;:::-;7046:16;:::i;:::-;;;:::i;:::-;;7042:86;;7155:5;7145:4;7151:2;7155:5;;;:::i;:::-;6868:300::o;7042:86::-;7085:32;7106:10;7114:1;7106:10;:::i;:::-;7085:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6947:86;6992:30;7011:10;7019:1;7011:10;:::i;:::-;6992:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2383:22992:60;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;4426:84:60:-;;;;:::i;:::-;:::o;2383:22992::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2658:162:0;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2383:22992:60;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;8598:158:48:-;;8695:53;8715:32;8723:23;8731:14;8703:10;8695:53;8598:158;8671:4;;:::i;:::-;8703:3;:10;8739:5;8731:14;:::i;:::-;8723:23;:::i;:::-;8715:32;:::i;:::-;8695:53;;:::i;:::-;;:::i;:::-;8688:60;:::o;3774:248:0:-;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;21065:438:60:-;21188:36;21065:438;21136:17;;:::i;:::-;21203:9;21188:36;:34;:25;21203:9;;;:::i;:::-;21188:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;21478:16;21413:34;21166:58;21471:24;21188:36;21458:37;21188:36;;;;;21065:438;21166:58;;:::i;:::-;21257:13;21414:18;21257:13;;:::i;:::-;21289:11;21281:55;21289:11;:15;;21303:1;21289:15;:::i;:::-;;;:::i;:::-;;21281:55;:::i;:::-;21367:23;;:::i;:::-;21414:18;;:::i;:::-;21413:34;:::i;:::-;21478:2;:16;:2;:16;:::i;:::-;;:::i;:::-;21471:24;:::i;:::-;21458:37;;:::i;:::-;21065:438;:::o;21188:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1192:159:0:-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;10274:310:48:-;10391:19;10399:10;10391:19;10274:310;10337:16;;:::i;:::-;10399:3;:10;10391:19;:::i;:::-;;:::i;:::-;10421:23;;:::i;:::-;10501:50;10563:13;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;2577:147:3:-;;2709:7;2577:147;2709:7;:::i;:::-;2577:147::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2540:111:6:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;8270:152:48:-;;8364:50;8381:32;8389:23;8397:14;8369:10;8364:50;8270:152;8340:4;;:::i;:::-;8369:3;:10;8405:5;8397:14;:::i;:::-;8389:23;:::i;:::-;8381:32;:::i;:::-;8364:50;;:::i;:::-;;:::i;:::-;8357:57;:::o;8842:167::-;;8946:55;8968:32;8976:23;8984:14;8956:10;8946:55;8842:167;8922:4;;:::i;:::-;8956:3;:10;8992:5;8984:14;:::i;:::-;8976:23;:::i;:::-;8968:32;:::i;:::-;8946:55;;:::i;:::-;;:::i;:::-;8939:62;:::o;11224:487:3:-;;;11357:18;;:::i;:::-;11389:5;:19;;11398:10;11406:1;11398:10;:::i;:::-;11389:19;:::i;:::-;;;:::i;:::-;;11385:89;;11487:7;:21;;11498:10;11506:1;11498:10;:::i;:::-;11487:21;:::i;:::-;;;:::i;:::-;;11483:90;;11582:37;11614:5;11582:29;:20;:13;11614:5;11582:1;:13;11596:5;11582:20;;:::i;:::-;11603:7;11582:29;;:::i;:::-;:37;:::i;:::-;11629:76;;11224:487;;;;:::o;11629:76::-;11679:7;11688:5;11663:31;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;11629:76;;;;;11483:90;11531:31;11551:10;11559:1;11551:10;:::i;:::-;11531:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11385:89;11431:32;11452:10;11460:1;11452:10;:::i;:::-;11431:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2251:183:6;2355:73;2251:183;:::o;2383:22992:60:-;;;;;;:::i;:::-;;:::o;7483:1170:3:-;;;;7593:18;;:::i;:::-;7625:4;:18;;7633:10;7641:1;7633:10;:::i;:::-;7625:18;:::i;:::-;;;:::i;:::-;;7621:546;;;;7761:23;7779:5;7761:23;:14;:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;7621:546;8181:2;:16;;8187:10;8195:1;8187:10;:::i;:::-;8181:16;:::i;:::-;;;:::i;:::-;;8177:429;;;;8344:23;8362:5;8344:23;:14;8362:5;8344:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;8636:2;8640:5;8621:25;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;7483:1170::o;8177:429::-;8557:24;8576:5;8557:24;:15;:11;8576:5;8557:1;:11;8569:2;8557:15;;:::i;:::-;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;;7621:546;7837:17;;:11;:1;:11;7849:4;7837:17;;:::i;:::-;;:::i;:::-;7872:11;:19;;7886:5;7872:19;:::i;:::-;;;:::i;:::-;;7868:115;;8123:19;8103:39;8123:11;8137:5;8123:19;;:::i;:::-;8103:17;:11;:1;:11;8115:4;8103:17;;:::i;:::-;:39;:::i;:::-;7621:546;;7868:115;7943:4;7918:50;7943:4;;7949:11;7962:5;7918:50;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2383:22992:60;;;:::o;4496:109:48:-;4579:11;:18;4496:109;4552:7;;:::i;:::-;4579:3;:11;:18;:::i;:::-;4572:25;:::o;2383:22992:60:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4959:120:48:-;5053:18;4959:120;5053:11;:18;4959:120;5026:7;;:::i;:::-;5053:3;:11;:18;:::i;:::-;;;:::i;:::-;5046:25;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;2779:335::-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;2383:22992:60;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2775:1420:48:-;2841:4;;:::i;:::-;2980:3;:19;;:12;:3;:12;2993:5;2980:19;;:::i;:::-;;:::i;:::-;3016:10;;:15;;3030:1;3016:15;:::i;:::-;;;:::i;:::-;;;3012:1176;;;;4077:26;3415:10;4084:12;:19;3415:10;;:14;4077:26;3415:10;:14;3428:1;3415:14;:::i;:::-;;;:::i;:::-;3464:22;:18;:3;;:11;:18;:::i;:::-;:22;3485:1;3464:22;:::i;:::-;;;:::i;:::-;3507:9;:26;;3520:13;3507:26;:::i;:::-;;;:::i;:::-;;3503:405;;3012:1176;3989:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4084:12;:19;:::i;:::-;4077:26;:::i;:::-;4127:4;4120:11;:::o;3503:405::-;3813:36;3574:3;3699:38;3574:22;;3813:23;3574:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3728:9;3699:26;3728:9;3699:3;;;:11;:26;:::i;:::-;:38;;:::i;:::-;3813:3;;;:12;:23;:::i;:::-;:36;:::i;:::-;3503:405;;;;;3012:1176;4171:5;;;;4164:12;:::o;2383:22992:60:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;5629:111:48:-;5721:11;5714:18;5629:111;5685:16;;:::i;:::-;5721:3;:11;5714:18;:::i;:::-;;:::o;7084:141:1:-;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;2383:22992:60:-;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;2730:216:3:-;2920:9;:19;2730:216;2895:15;2867:18;;:::i;:::-;2905:5;2895:7;:1;:7;:15;:::i;:::-;2920:1;:9;:19;:::i;:::-;2730:216::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2657:183:6:-;2810:23;2772:28;;:::i;:::-;2810:9;2822:11;;:::i;:::-;2810:1;:9;:23;:::i;:::-;2657:183::o;:::-;;;:::i;:::-;:::o;2383:22992:60:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;2185:414:48:-;2248:4;;:::i;:::-;2280:3;2269:22;2270:21;2280:3;2285:5;2270:21;;:::i;:::-;2269:22;;:::i;:::-;2265:327;;;;2469:19;:40;2308:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2325:5;2308:23;;:::i;:::-;2469:12;2491:18;:11;:3;:11;:18;:::i;:::-;2469:3;:12;:19;:::i;:::-;:40;:::i;:::-;2531:4;2524:11;:::o;2265:327::-;2575:5;;;2568:12;:::o;4281:129::-;4378:19;4281:129;4378:12;:19;4281:129;4354:4;;:::i;:::-;4378:3;:12;:19;:::i;:::-;;:::i;:::-;:24;;4401:1;4378:24;:::i;:::-;;;:::i;:::-;;;4371:31;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2383:22992:60;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"6464800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","addToken(address)":"infinite","allowance(address,address)":"infinite","approve(address,uint256)":"infinite","balanceOf(address)":"infinite","baseAsset()":"3300","burnERC20(uint256)":"infinite","burnUSDC(uint256)":"infinite","calculateTokenShare(uint256,uint256,uint256,uint256)":"infinite","callRebalance(address[],uint256[],address,address,uint256,address)":"infinite","decimals()":"infinite","execute((address,uint256,bytes)[],address[])":"infinite","getAgentAddress(address)":"infinite","getTokens()":"infinite","getUSDCShareValue(uint256)":"infinite","getVersion()":"infinite","initialize(address)":"infinite","liquidate(address)":"infinite","liquidateAll()":"infinite","mintWithUSDC(uint256)":"infinite","name()":"infinite","owner()":"3170","proxiableUUID()":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","removeToken(address)":"infinite","renounceOwnership()":"infinite","requiredUSDCtoMint(uint256)":"infinite","resetContract(address)":"infinite","symbol()":"infinite","tokenValuation(uint256,address)":"infinite","totalSupply()":"2755","totalValuation()":"infinite","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"infinite","unitPrice()":"infinite","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_calculateBaluniToUSDC(uint256)":"infinite","_calculateERC20Share(uint256,uint256,uint256,uint256)":"infinite","_calculateERC20ValuationScaled(uint256,address)":"infinite","_calculateNetAmountAfterFee(uint256)":"infinite","_totalValuationScaled()":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addToken(address)":"d48bfca7","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseAsset()":"cdf456e1","burnERC20(uint256)":"1a168da2","burnUSDC(uint256)":"fe0a4dd1","calculateTokenShare(uint256,uint256,uint256,uint256)":"fe330a51","callRebalance(address[],uint256[],address,address,uint256,address)":"599f69f7","decimals()":"313ce567","execute((address,uint256,bytes)[],address[])":"eedc3c50","getAgentAddress(address)":"27d54a92","getTokens()":"aa6ca808","getUSDCShareValue(uint256)":"71ddcfb8","getVersion()":"0d8e6e2c","initialize(address)":"c4d66de8","liquidate(address)":"2f865568","liquidateAll()":"3c2066a9","mintWithUSDC(uint256)":"0cfc7386","name()":"06fdde03","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","removeToken(address)":"5fa7b584","renounceOwnership()":"715018a6","requiredUSDCtoMint(uint256)":"aa95d893","resetContract(address)":"e67ad759","symbol()":"95d89b41","tokenValuation(uint256,address)":"2bdd955a","totalSupply()":"18160ddd","totalValuation()":"295b9300","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unitPrice()":"e73faa2d","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IBaluniV1Agent.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"tokensReturn\",\"type\":\"address[]\"}],\"name\":\"Execute\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"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\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"addToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"burnERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"burnUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBaluni\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalERC20Balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baluniAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenDecimals\",\"type\":\"uint256\"}],\"name\":\"calculateTokenShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"weights\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"callRebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IBaluniV1Agent.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensReturn\",\"type\":\"address[]\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getAgentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getUSDCShareValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"liquidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidateAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balAmountToMint\",\"type\":\"uint256\"}],\"name\":\"mintWithUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balAmountToMint\",\"type\":\"uint256\"}],\"name\":\"requiredUSDCtoMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"resetContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tokenValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addToken(address)\":{\"details\":\"Adds a token to the `tokens` set. Can only be called by the contract owner.\",\"params\":{\"_token\":\"The address of the token to be added.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burnERC20(uint256)\":{\"details\":\"Burns a specified amount of BALUNI tokens from the caller's balance.\",\"params\":{\"burnAmount\":\"The amount of BALUNI tokens to burn.\"}},\"burnUSDC(uint256)\":{\"details\":\"Burns a specified amount of BAL tokens and performs token swaps on multiple tokens.\",\"params\":{\"burnAmount\":\"The amount of BAL tokens to burn.\"}},\"calculateTokenShare(uint256,uint256,uint256,uint256)\":{\"details\":\"Calculates the token share based on the total Baluni supply, total ERC20 balance, Baluni amount, and token decimals.\",\"params\":{\"baluniAmount\":\"The amount of Baluni tokens.\",\"tokenDecimals\":\"The number of decimals for the ERC20 token.\",\"totalBaluni\":\"The total supply of Baluni tokens.\",\"totalERC20Balance\":\"The total balance of the ERC20 token.\"},\"returns\":{\"_0\":\"The calculated token share.\"}},\"callRebalance(address[],uint256[],address,address,uint256,address)\":{\"details\":\"Calls the `rebalance` function of the `rebalancer` contract.\",\"params\":{\"assets\":\"An array of addresses representing the assets to rebalance.\",\"limit\":\"The maximum number of assets to rebalance.\",\"receiver\":\"The address of the receiver.\",\"sender\":\"The address of the sender.\",\"weights\":\"An array of uint256 values representing the weights of the assets.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"execute((address,uint256,bytes)[],address[])\":{\"details\":\"Executes a series of calls to a BaluniV1Agent contract and handles token returns.\",\"params\":{\"calls\":\"An array of IBaluniV1Agent.Call structs representing the calls to be executed.\",\"tokensReturn\":\"An array of addresses representing the tokens to be returned.\"}},\"getAgentAddress(address)\":{\"details\":\"Retrieves the agent address associated with a user.\",\"params\":{\"_user\":\"The user's address.\"},\"returns\":{\"_0\":\"The agent address.\"}},\"getTokens()\":{\"details\":\"Returns an array of addresses representing the tokens.\",\"returns\":{\"_0\":\"An array of addresses representing the tokens.\"}},\"getUSDCShareValue(uint256)\":{\"details\":\"Calculates the value of a given amount of Baluni tokens in USDC.\",\"params\":{\"amount\":\"The amount of Baluni tokens.\"},\"returns\":{\"_0\":\"The calculated value of the Baluni tokens in USDC.\"}},\"getVersion()\":{\"details\":\"Returns the version of the contract.\",\"returns\":{\"_0\":\"The version string.\"}},\"initialize(address)\":{\"details\":\"Initializes the BaluniV1Router contract. It sets the initial values for various variables and mints 1 ether to the contract's address. It also sets the USDC token address, WNATIVE token address, oracle address, Uniswap router address, and Uniswap factory address. Finally, it adds the USDC token address to the tokens set.\"},\"liquidate(address)\":{\"details\":\"Liquidates the specified token by swapping it for USDC.\",\"params\":{\"token\":\"The address of the token to be liquidated.\"}},\"liquidateAll()\":{\"details\":\"Liquidates all tokens in the contract. This function iterates through all the tokens in the contract and calls the `liquidate` function for each token. Can only be called by the contract owner.\"},\"mintWithUSDC(uint256)\":{\"details\":\"Mints a specified amount of BALUNI tokens in exchange for USDC.\",\"params\":{\"balAmountToMint\":\"The amount of BALUNI tokens to mint.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeToken(address)\":{\"details\":\"Removes a token from the `tokens` set. Can only be called by the contract owner.\",\"params\":{\"_token\":\"The address of the token to be removed.\"}},\"renounceOwnership()\":{\"details\":\"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.\"},\"requiredUSDCtoMint(uint256)\":{\"details\":\"Calculates the amount of USDC required to mint a given amount of BAL tokens.\",\"params\":{\"balAmountToMint\":\"The amount of BAL tokens to be minted.\"},\"returns\":{\"_0\":\"The amount of USDC required to mint the specified amount of BAL tokens.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"tokenValuation(uint256,address)\":{\"details\":\"Calculates the valuation of a given amount of a specific ERC20 token.\",\"params\":{\"amount\":\"The amount of the ERC20 token.\",\"token\":\"The address of the ERC20 token.\"},\"returns\":{\"_0\":\"The calculated valuation of the ERC20 token.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"totalValuation()\":{\"details\":\"Returns the total valuation of the Baluni ecosystem.\",\"returns\":{\"_0\":\"The total valuation of the Baluni ecosystem.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unitPrice()\":{\"details\":\"Returns the unit price of the token in USDC.\",\"returns\":{\"_0\":\"The unit price of the token in USDC.\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burnERC20(uint256)\":{\"notice\":\"This function requires the caller to have a balance of at least `burnAmount` BAL tokens.The function also checks the USDC balance before burning the tokens.After burning the tokens, the function transfers a proportional share of each ERC20 token held by the contract to the caller.The share is calculated based on the total supply of BAL tokens, the balance of each ERC20 token, and the decimals of each token.Finally, the function emits a `Burn` event with the caller's address and the amount of tokens burned.\"},\"execute((address,uint256,bytes)[],address[])\":{\"notice\":\"This function requires the agentFactory to be set and creates a new agent if necessary.If a token is new and a Uniswap pool exists for it, the token is added to the tokens set.If no Uniswap pool exists for a token, the token balance is transferred back to the caller.\"},\"liquidate(address)\":{\"notice\":\"The contract must have sufficient approval to spend the specified token.If a pool exists for the token and USDC on Uniswap, a direct swap is performed.If no pool exists, a multi-hop swap is performed through the WNATIVE token.If the swap fails, the `burn` function should be called to handle the failed swap.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/orchestators/BaluniV1Router.sol\":\"BaluniV1Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title The interface for the Uniswap V3 Factory\\n/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\\ninterface IUniswapV3Factory {\\n    /// @notice Emitted when the owner of the factory is changed\\n    /// @param oldOwner The owner before the owner was changed\\n    /// @param newOwner The owner after the owner was changed\\n    event OwnerChanged(address indexed oldOwner, address indexed newOwner);\\n\\n    /// @notice Emitted when a pool is created\\n    /// @param token0 The first token of the pool by address sort order\\n    /// @param token1 The second token of the pool by address sort order\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks\\n    /// @param pool The address of the created pool\\n    event PoolCreated(\\n        address indexed token0,\\n        address indexed token1,\\n        uint24 indexed fee,\\n        int24 tickSpacing,\\n        address pool\\n    );\\n\\n    /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\\n    /// @param fee The enabled fee, denominated in hundredths of a bip\\n    /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\\n    event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\\n\\n    /// @notice Returns the current owner of the factory\\n    /// @dev Can be changed by the current owner via setOwner\\n    /// @return The address of the factory owner\\n    function owner() external view returns (address);\\n\\n    /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\\n    /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\\n    /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\\n    /// @return The tick spacing\\n    function feeAmountTickSpacing(uint24 fee) external view returns (int24);\\n\\n    /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\\n    /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\\n    /// @param tokenA The contract address of either token0 or token1\\n    /// @param tokenB The contract address of the other token\\n    /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\\n    /// @return pool The pool address\\n    function getPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external view returns (address pool);\\n\\n    /// @notice Creates a pool for the given two tokens and fee\\n    /// @param tokenA One of the two tokens in the desired pool\\n    /// @param tokenB The other of the two tokens in the desired pool\\n    /// @param fee The desired fee for the pool\\n    /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\\n    /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\\n    /// are invalid.\\n    /// @return pool The address of the newly created pool\\n    function createPool(\\n        address tokenA,\\n        address tokenB,\\n        uint24 fee\\n    ) external returns (address pool);\\n\\n    /// @notice Updates the owner of the factory\\n    /// @dev Must be called by the current owner\\n    /// @param _owner The new owner of the factory\\n    function setOwner(address _owner) external;\\n\\n    /// @notice Enables a fee amount with the given tickSpacing\\n    /// @dev Fee amounts may never be removed once enabled\\n    /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\\n    /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\\n    function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\\n}\\n\",\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.5.0;\\n\\n/// @title Callback for IUniswapV3PoolActions#swap\\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\\ninterface IUniswapV3SwapCallback {\\n    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\\n    /// @dev In the implementation you must pay the pool tokens owed for the swap.\\n    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\\n    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\\n    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\\n    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\\n    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\\n    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\\n    function uniswapV3SwapCallback(\\n        int256 amount0Delta,\\n        int256 amount1Delta,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\"},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\npragma solidity >=0.7.5;\\npragma abicoder v2;\\n\\nimport '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';\\n\\n/// @title Router token swapping functionality\\n/// @notice Functions for swapping tokens via Uniswap V3\\ninterface ISwapRouter is IUniswapV3SwapCallback {\\n    struct ExactInputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Swaps `amountIn` of one token for as much as possible of another token\\n    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\\n    /// @return amountOut The amount of the received token\\n    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\\n\\n    struct ExactInputParams {\\n        bytes path;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n    }\\n\\n    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\\n    /// @return amountOut The amount of the received token\\n    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\\n\\n    struct ExactOutputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountOut;\\n        uint256 amountInMaximum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Swaps as little as possible of one token for `amountOut` of another token\\n    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\\n    /// @return amountIn The amount of the input token\\n    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\\n\\n    struct ExactOutputParams {\\n        bytes path;\\n        address recipient;\\n        uint256 deadline;\\n        uint256 amountOut;\\n        uint256 amountInMaximum;\\n    }\\n\\n    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\\n    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\\n    /// @return amountIn The amount of the input token\\n    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\\n}\\n\",\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\"},\"contracts/interfaces/I1inchSpotAgg.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\\r\\n\\r\\ninterface I1inchSpotAgg {\\r\\n  function getRate(IERC20 srcToken, IERC20 dstToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n\\r\\n  function getRateToEth(IERC20 srcToken, bool useWrappers) external view returns (uint256 weightedRate);\\r\\n}\\r\\n\",\"keccak256\":\"0x29417a441b068263f01adb36906270f1b76431d3017d214f506824ee41ada1b3\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Agent.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Agent {\\r\\n  struct Call {\\r\\n    address to;\\r\\n    uint256 value;\\r\\n    bytes data;\\r\\n  }\\r\\n\\r\\n  function execute(Call[] memory calls, address[] memory tokensReturn) external;\\r\\n}\\r\\n\",\"keccak256\":\"0x1bbf5ddbc4f525451e727d6997e6a20a6238d69232b58b3813760a16e7f60bbe\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1AgentFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1AgentFactory {\\r\\n    function getAgentAddress(address user) external view returns (address);\\r\\n\\r\\n    function getOrCreateAgent(address user) external returns (address);\\r\\n\\r\\n    function getRegistry() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x7de0683d187e1b0dbbffde17f943b24e1481351949e7b292a9bff33cdc4b3d71\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Rebalancer.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Rebalancer {\\r\\n    struct RebalanceVars {\\r\\n        uint256 length;\\r\\n        uint256 totalValue;\\r\\n        uint256 finalUsdBalance;\\r\\n        uint256 overweightVaultsLength;\\r\\n        uint256 underweightVaultsLength;\\r\\n        uint256 totalActiveWeight;\\r\\n        uint256 amountOut;\\r\\n        uint256[] overweightVaults;\\r\\n        uint256[] overweightAmounts;\\r\\n        uint256[] underweightVaults;\\r\\n        uint256[] underweightAmounts;\\r\\n        uint256[] balances;\\r\\n    }\\r\\n\\r\\n    // Functions\\r\\n    function rebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address receiver,\\r\\n        address baseAsset\\r\\n    ) external;\\r\\n\\r\\n    function checkRebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address baseAsset\\r\\n    ) external view returns (RebalanceVars memory);\\r\\n\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x61c44c9208ab5c5638160706c4737e8032440e73054a90378d0b65559653d57a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/libs/EnumerableSetUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\\r\\n\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\n/**\\r\\n * @dev Library for managing\\r\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\r\\n * types.\\r\\n *\\r\\n * Sets have the following properties:\\r\\n *\\r\\n * - Elements are added, removed, and checked for existence in constant time\\r\\n * (O(1)).\\r\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\r\\n *\\r\\n * ```\\r\\n * contract Example {\\r\\n *     // Add the library methods\\r\\n *     using EnumerableSet for EnumerableSet.AddressSet;\\r\\n *\\r\\n *     // Declare a set state variable\\r\\n *     EnumerableSet.AddressSet private mySet;\\r\\n * }\\r\\n * ```\\r\\n *\\r\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\r\\n * and `uint256` (`UintSet`) are supported.\\r\\n *\\r\\n * [WARNING]\\r\\n * ====\\r\\n *  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\\r\\n *  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\r\\n *\\r\\n *  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\\r\\n * ====\\r\\n */\\r\\nlibrary EnumerableSetUpgradeable {\\r\\n    // To implement this library for multiple types with as little code\\r\\n    // repetition as possible, we write it in terms of a generic Set type with\\r\\n    // bytes32 values.\\r\\n    // The Set implementation uses private functions, and user-facing\\r\\n    // implementations (such as AddressSet) are just wrappers around the\\r\\n    // underlying Set.\\r\\n    // This means that we can only create new EnumerableSets for types that fit\\r\\n    // in bytes32.\\r\\n\\r\\n    struct Set {\\r\\n        // Storage of set values\\r\\n        bytes32[] _values;\\r\\n        // Position of the value in the `values` array, plus 1 because index 0\\r\\n        // means a value is not in the set.\\r\\n        mapping(bytes32 => uint256) _indexes;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Add a value to a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was added to the set, that is if it was not\\r\\n     * already present.\\r\\n     */\\r\\n    function _add(Set storage set, bytes32 value) private returns (bool) {\\r\\n        if (!_contains(set, value)) {\\r\\n            set._values.push(value);\\r\\n            // The value is stored at length-1, but we add 1 to all indexes\\r\\n            // and use 0 as a sentinel value\\r\\n            set._indexes[value] = set._values.length;\\r\\n            return true;\\r\\n        } else {\\r\\n            return false;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a value from a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was removed from the set, that is if it was\\r\\n     * present.\\r\\n     */\\r\\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\\r\\n        // We read and store the value's index to prevent multiple reads from the same storage slot\\r\\n        uint256 valueIndex = set._indexes[value];\\r\\n\\r\\n        if (valueIndex != 0) {\\r\\n            // Equivalent to contains(set, value)\\r\\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\r\\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\\r\\n            // This modifies the order of the array, as noted in {at}.\\r\\n\\r\\n            uint256 toDeleteIndex = valueIndex - 1;\\r\\n            uint256 lastIndex = set._values.length - 1;\\r\\n\\r\\n            if (lastIndex != toDeleteIndex) {\\r\\n                bytes32 lastValue = set._values[lastIndex];\\r\\n\\r\\n                // Move the last value to the index where the value to delete is\\r\\n                set._values[toDeleteIndex] = lastValue;\\r\\n                // Update the index for the moved value\\r\\n                set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\r\\n            }\\r\\n\\r\\n            // Delete the slot where the moved value was stored\\r\\n            set._values.pop();\\r\\n\\r\\n            // Delete the index for the deleted slot\\r\\n            delete set._indexes[value];\\r\\n\\r\\n            return true;\\r\\n        } else {\\r\\n            return false;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns true if the value is in the set. O(1).\\r\\n     */\\r\\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\\r\\n        return set._indexes[value] != 0;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the number of values on the set. O(1).\\r\\n     */\\r\\n    function _length(Set storage set) private view returns (uint256) {\\r\\n        return set._values.length;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the value stored at position `index` in the set. O(1).\\r\\n     *\\r\\n     * Note that there are no guarantees on the ordering of values inside the\\r\\n     * array, and it may change when more values are added or removed.\\r\\n     *\\r\\n     * Requirements:\\r\\n     *\\r\\n     * - `index` must be strictly less than {length}.\\r\\n     */\\r\\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\\r\\n        return set._values[index];\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Return the entire set in an array\\r\\n     *\\r\\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\r\\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\r\\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\r\\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\r\\n     */\\r\\n    function _values(Set storage set) private view returns (bytes32[] memory) {\\r\\n        return set._values;\\r\\n    }\\r\\n\\r\\n    // Bytes32Set\\r\\n\\r\\n    struct Bytes32Set {\\r\\n        Set _inner;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Add a value to a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was added to the set, that is if it was not\\r\\n     * already present.\\r\\n     */\\r\\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\r\\n        return _add(set._inner, value);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a value from a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was removed from the set, that is if it was\\r\\n     * present.\\r\\n     */\\r\\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\r\\n        return _remove(set._inner, value);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns true if the value is in the set. O(1).\\r\\n     */\\r\\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\r\\n        return _contains(set._inner, value);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the number of values in the set. O(1).\\r\\n     */\\r\\n    function length(Bytes32Set storage set) internal view returns (uint256) {\\r\\n        return _length(set._inner);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the value stored at position `index` in the set. O(1).\\r\\n     *\\r\\n     * Note that there are no guarantees on the ordering of values inside the\\r\\n     * array, and it may change when more values are added or removed.\\r\\n     *\\r\\n     * Requirements:\\r\\n     *\\r\\n     * - `index` must be strictly less than {length}.\\r\\n     */\\r\\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\r\\n        return _at(set._inner, index);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Return the entire set in an array\\r\\n     *\\r\\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\r\\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\r\\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\r\\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\r\\n     */\\r\\n    function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\r\\n        return _values(set._inner);\\r\\n    }\\r\\n\\r\\n    // AddressSet\\r\\n\\r\\n    struct AddressSet {\\r\\n        Set _inner;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Add a value to a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was added to the set, that is if it was not\\r\\n     * already present.\\r\\n     */\\r\\n    function add(AddressSet storage set, address value) internal returns (bool) {\\r\\n        return _add(set._inner, bytes32(uint256(uint160(value))));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a value from a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was removed from the set, that is if it was\\r\\n     * present.\\r\\n     */\\r\\n    function remove(AddressSet storage set, address value) internal returns (bool) {\\r\\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns true if the value is in the set. O(1).\\r\\n     */\\r\\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\\r\\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the number of values in the set. O(1).\\r\\n     */\\r\\n    function length(AddressSet storage set) internal view returns (uint256) {\\r\\n        return _length(set._inner);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the value stored at position `index` in the set. O(1).\\r\\n     *\\r\\n     * Note that there are no guarantees on the ordering of values inside the\\r\\n     * array, and it may change when more values are added or removed.\\r\\n     *\\r\\n     * Requirements:\\r\\n     *\\r\\n     * - `index` must be strictly less than {length}.\\r\\n     */\\r\\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\\r\\n        return address(uint160(uint256(_at(set._inner, index))));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Return the entire set in an array\\r\\n     *\\r\\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\r\\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\r\\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\r\\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\r\\n     */\\r\\n    function values(AddressSet storage set) internal view returns (address[] memory) {\\r\\n        bytes32[] memory store = _values(set._inner);\\r\\n        address[] memory result;\\r\\n\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            result := store\\r\\n        }\\r\\n\\r\\n        return result;\\r\\n    }\\r\\n\\r\\n    // UintSet\\r\\n\\r\\n    struct UintSet {\\r\\n        Set _inner;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Add a value to a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was added to the set, that is if it was not\\r\\n     * already present.\\r\\n     */\\r\\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\\r\\n        return _add(set._inner, bytes32(value));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a value from a set. O(1).\\r\\n     *\\r\\n     * Returns true if the value was removed from the set, that is if it was\\r\\n     * present.\\r\\n     */\\r\\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\\r\\n        return _remove(set._inner, bytes32(value));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns true if the value is in the set. O(1).\\r\\n     */\\r\\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\r\\n        return _contains(set._inner, bytes32(value));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the number of values on the set. O(1).\\r\\n     */\\r\\n    function length(UintSet storage set) internal view returns (uint256) {\\r\\n        return _length(set._inner);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the value stored at position `index` in the set. O(1).\\r\\n     *\\r\\n     * Note that there are no guarantees on the ordering of values inside the\\r\\n     * array, and it may change when more values are added or removed.\\r\\n     *\\r\\n     * Requirements:\\r\\n     *\\r\\n     * - `index` must be strictly less than {length}.\\r\\n     */\\r\\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\r\\n        return uint256(_at(set._inner, index));\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Return the entire set in an array\\r\\n     *\\r\\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\r\\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\r\\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\r\\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\r\\n     */\\r\\n    function values(UintSet storage set) internal view returns (uint256[] memory) {\\r\\n        bytes32[] memory store = _values(set._inner);\\r\\n        uint256[] memory result;\\r\\n\\r\\n        /// @solidity memory-safe-assembly\\r\\n        assembly {\\r\\n            result := store\\r\\n        }\\r\\n\\r\\n        return result;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x0e86a06de431b687eaf963847642f6f5f857bcc08b5ad5334097669d83d46ab9\",\"license\":\"MIT\"},\"contracts/orchestators/BaluniV1Router.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';\\r\\nimport '@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Agent.sol';\\r\\nimport '../interfaces/IBaluniV1AgentFactory.sol';\\r\\nimport '../interfaces/IBaluniV1Rebalancer.sol';\\r\\nimport '../interfaces/I1inchSpotAgg.sol';\\r\\nimport '../interfaces/IBaluniV1Oracle.sol';\\r\\nimport '../libs/EnumerableSetUpgradeable.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\n\\r\\ncontract BaluniV1Router is\\r\\n    Initializable,\\r\\n    ERC20Upgradeable,\\r\\n    OwnableUpgradeable,\\r\\n    ReentrancyGuardUpgradeable,\\r\\n    UUPSUpgradeable\\r\\n{\\r\\n    struct Call {\\r\\n        address to;\\r\\n        uint256 value;\\r\\n        bytes data;\\r\\n    }\\r\\n\\r\\n    EnumerableSetUpgradeable.AddressSet private tokens;\\r\\n\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    using EnumerableSetUpgradeable for EnumerableSetUpgradeable.AddressSet;\\r\\n\\r\\n    address public baseAsset;\\r\\n\\r\\n    event Execute(address user, IBaluniV1Agent.Call[] calls, address[] tokensReturn);\\r\\n    event Burn(address user, uint256 value);\\r\\n    event Mint(address user, uint256 value);\\r\\n    event Log(string message, uint256 value);\\r\\n\\r\\n    /**\\r\\n     * @dev Initializes the BaluniV1Router contract.\\r\\n     * It sets the initial values for various variables and mints 1 ether to the contract's address.\\r\\n     * It also sets the USDC token address, WNATIVE token address, oracle address, Uniswap router address, and Uniswap factory address.\\r\\n     * Finally, it adds the USDC token address to the tokens set.\\r\\n     */\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __ERC20_init('Baluni', 'BALUNI');\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ReentrancyGuard_init();\\r\\n        __UUPSUpgradeable_init();\\r\\n        _mint(address(this), 1 ether);\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        baseAsset = registry.getUSDC();\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\\r\\n        // __UUPSUpgradeable_init();\\r\\n        // __Ownable_init(msg.sender);\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function resetContract(address _registry) public onlyOwner {\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\\r\\n     * @param newImplementation The address of the new implementation contract.\\r\\n     * @notice This function can only be called by the contract owner.\\r\\n     */\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the unit price of the token in USDC.\\r\\n     * @return The unit price of the token in USDC.\\r\\n     */\\r\\n    function unitPrice() public view returns (uint256) {\\r\\n        return _calculateBaluniToUSDC(1e18);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Executes a series of calls to a BaluniV1Agent contract and handles token returns.\\r\\n     * @param calls An array of IBaluniV1Agent.Call structs representing the calls to be executed.\\r\\n     * @param tokensReturn An array of addresses representing the tokens to be returned.\\r\\n     * @notice This function requires the agentFactory to be set and creates a new agent if necessary.\\r\\n     * @notice If a token is new and a Uniswap pool exists for it, the token is added to the tokens set.\\r\\n     * @notice If no Uniswap pool exists for a token, the token balance is transferred back to the caller.\\r\\n     */\\r\\n    function execute(IBaluniV1Agent.Call[] memory calls, address[] memory tokensReturn) external nonReentrant {\\r\\n        address agentFactory = registry.getBaluniAgentFactory();\\r\\n        address uniswapFactory = registry.getUniswapFactory();\\r\\n        address WNATIVE = registry.getWNATIVE();\\r\\n        address USDC = registry.getUSDC();\\r\\n\\r\\n        require(address(agentFactory) != address(0), 'Agent factory not set');\\r\\n        address agent = IBaluniV1AgentFactory(agentFactory).getOrCreateAgent(msg.sender);\\r\\n        bool[] memory isTokenNew = new bool[](tokensReturn.length);\\r\\n        uint256[] memory tokenBalances = new uint256[](tokensReturn.length);\\r\\n\\r\\n        for (uint256 i = 0; i < tokensReturn.length; i++) {\\r\\n            isTokenNew[i] = !EnumerableSetUpgradeable.contains(tokens, tokensReturn[i]);\\r\\n            tokenBalances[i] = IERC20(tokensReturn[i]).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        IBaluniV1Agent(agent).execute(calls, tokensReturn);\\r\\n\\r\\n        for (uint256 i = 0; i < tokensReturn.length; i++) {\\r\\n            address token = tokensReturn[i];\\r\\n            uint256 balance = IERC20(token).balanceOf(address(this));\\r\\n            address poolNative3000 = IUniswapV3Factory(uniswapFactory).getPool(token, address(WNATIVE), 3000);\\r\\n            address poolNative500 = IUniswapV3Factory(uniswapFactory).getPool(token, address(WNATIVE), 500);\\r\\n            address poolUSDC500 = IUniswapV3Factory(uniswapFactory).getPool(token, address(USDC), 500);\\r\\n            address poolUSDC3000 = IUniswapV3Factory(uniswapFactory).getPool(token, address(USDC), 3000);\\r\\n            bool poolExist = poolNative3000 != address(0) ||\\r\\n                poolNative500 != address(0) ||\\r\\n                poolUSDC3000 != address(0) ||\\r\\n                poolUSDC500 != address(0);\\r\\n\\r\\n            if (isTokenNew[i] && poolExist) {\\r\\n                EnumerableSetUpgradeable.add(tokens, token);\\r\\n            }\\r\\n\\r\\n            uint256 amountReceived = balance - tokenBalances[i];\\r\\n\\r\\n            if (!poolExist) {\\r\\n                IERC20(token).transfer(msg.sender, amountReceived);\\r\\n                return;\\r\\n            }\\r\\n\\r\\n            address treasury = registry.getTreasury();\\r\\n            uint256 _BPS_FEE = registry.getBPS_FEE();\\r\\n            uint256 _BPS_BASE = registry.getBPS_BASE();\\r\\n\\r\\n            if (balance > tokenBalances[i]) {\\r\\n                uint256 fee = (amountReceived * _BPS_FEE) / _BPS_BASE;\\r\\n                IERC20(token).transfer(treasury, fee);\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Liquidates the specified token by swapping it for USDC.\\r\\n     * @param token The address of the token to be liquidated.\\r\\n     * @notice The contract must have sufficient approval to spend the specified token.\\r\\n     * @notice If a pool exists for the token and USDC on Uniswap, a direct swap is performed.\\r\\n     * @notice If no pool exists, a multi-hop swap is performed through the WNATIVE token.\\r\\n     * @notice If the swap fails, the `burn` function should be called to handle the failed swap.\\r\\n     */\\r\\n    function liquidate(address token) public {\\r\\n        address WNATIVE = registry.getWNATIVE();\\r\\n        address baluniSwapper = registry.getBaluniSwapper();\\r\\n\\r\\n        uint256 totalERC20Balance = IERC20(token).balanceOf(address(this));\\r\\n        bool haveBalance = totalERC20Balance > 0;\\r\\n        IERC20(token).approve(baluniSwapper, totalERC20Balance);\\r\\n\\r\\n        if (!haveBalance) return;\\r\\n\\r\\n        try IBaluniV1Swapper(baluniSwapper).singleSwap(token, baseAsset, totalERC20Balance, address(this)) {\\r\\n            return;\\r\\n        } catch {\\r\\n            uint256 multiHopSwapResult = IBaluniV1Swapper(baluniSwapper).multiHopSwap(\\r\\n                token,\\r\\n                address(WNATIVE),\\r\\n                baseAsset,\\r\\n                totalERC20Balance,\\r\\n                address(this)\\r\\n            );\\r\\n\\r\\n            require(multiHopSwapResult > 0, 'Muti Hop Swap Failed, Try Burn()');\\r\\n            return;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Liquidates all tokens in the contract.\\r\\n     * This function iterates through all the tokens in the contract and calls the `liquidate` function for each token.\\r\\n     * Can only be called by the contract owner.\\r\\n     */\\r\\n    function liquidateAll() public nonReentrant {\\r\\n        uint256 length = tokens.length();\\r\\n        for (uint256 i = 0; i < length; i++) {\\r\\n            address token = tokens.at(i);\\r\\n            if (token == baseAsset) continue;\\r\\n            liquidate(token);\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Burns a specified amount of BALUNI tokens from the caller's balance.\\r\\n     * @param burnAmount The amount of BALUNI tokens to burn.\\r\\n     * @notice This function requires the caller to have a balance of at least `burnAmount` BAL tokens.\\r\\n     * @notice The function also checks the USDC balance before burning the tokens.\\r\\n     * @notice After burning the tokens, the function transfers a proportional share of each ERC20 token held by the contract to the caller.\\r\\n     * @notice The share is calculated based on the total supply of BAL tokens, the balance of each ERC20 token, and the decimals of each token.\\r\\n     * @notice Finally, the function emits a `Burn` event with the caller's address and the amount of tokens burned.\\r\\n     */\\r\\n    function burnERC20(uint256 burnAmount) external nonReentrant {\\r\\n        require(burnAmount > 0, 'Burn amount must be greater than 0');\\r\\n        address treasury = registry.getTreasury();\\r\\n        require(treasury != address(0), 'Treasury not set');\\r\\n        require(balanceOf(msg.sender) >= burnAmount, 'Insufficient BAL');\\r\\n        uint256 burnAmountAfterFee = _calculateNetAmountAfterFee(burnAmount);\\r\\n        require(burnAmountAfterFee <= burnAmount, 'Fee calculation error');\\r\\n        transfer(treasury, burnAmount - burnAmountAfterFee);\\r\\n\\r\\n        for (uint256 i; i < tokens.length(); i++) {\\r\\n            address token = tokens.at(i);\\r\\n            require(token != address(0), 'Invalid token address');\\r\\n            uint256 totalBaluni = totalSupply();\\r\\n            require(totalBaluni > 0, 'Total supply is 0');\\r\\n            uint256 totalERC20Balance = IERC20(token).balanceOf(address(this));\\r\\n            if (totalERC20Balance == 0 || token == address(this)) continue;\\r\\n            uint256 decimals = IERC20Metadata(token).decimals();\\r\\n            uint256 share = _calculateERC20Share(totalBaluni, totalERC20Balance, burnAmountAfterFee, decimals);\\r\\n            require(share <= totalERC20Balance, 'Share calculation error');\\r\\n            IERC20(token).transfer(msg.sender, share);\\r\\n        }\\r\\n        _burn(msg.sender, burnAmountAfterFee);\\r\\n        emit Burn(msg.sender, burnAmountAfterFee);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Burns a specified amount of BAL tokens and performs token swaps on multiple tokens.\\r\\n     * @param burnAmount The amount of BAL tokens to burn.\\r\\n     */\\r\\n    function burnUSDC(uint256 burnAmount) public nonReentrant {\\r\\n        require(burnAmount > 0, 'Burn amount must be greater than 0');\\r\\n        address uniswapFactory = registry.getUniswapFactory();\\r\\n        require(uniswapFactory != address(0), 'UniswapFactory not set');\\r\\n        address treasury = registry.getTreasury();\\r\\n        require(treasury != address(0), 'Treasury not set');\\r\\n        address WNATIVE = registry.getWNATIVE();\\r\\n        require(WNATIVE != address(0), 'WNATIVE not set');\\r\\n\\r\\n        uint256 burnAmountAfterFee = _calculateNetAmountAfterFee(burnAmount);\\r\\n        require(burnAmountAfterFee <= burnAmount, 'Fee calculation error');\\r\\n\\r\\n        uint burnAmountToSend = burnAmount - burnAmountAfterFee;\\r\\n\\r\\n        transfer(treasury, burnAmountToSend);\\r\\n\\r\\n        for (uint256 i; i < tokens.length(); i++) {\\r\\n            address token = tokens.at(i);\\r\\n            require(token != address(0), 'Invalid token address');\\r\\n\\r\\n            uint256 totalBaluni = totalSupply();\\r\\n            require(totalBaluni > 0, 'Total supply is 0');\\r\\n\\r\\n            uint256 totalERC20Balance = IERC20(token).balanceOf(address(this));\\r\\n\\r\\n            if (totalERC20Balance == 0 || token == address(this)) continue;\\r\\n\\r\\n            uint256 decimals = IERC20Metadata(token).decimals();\\r\\n\\r\\n            uint256 burnAmountToken = _calculateERC20Share(\\r\\n                totalBaluni,\\r\\n                totalERC20Balance,\\r\\n                burnAmountAfterFee,\\r\\n                decimals\\r\\n            );\\r\\n\\r\\n            require(burnAmountToken <= totalERC20Balance, 'Share calculation error');\\r\\n\\r\\n            if (token == baseAsset) {\\r\\n                IERC20(baseAsset).transfer(msg.sender, burnAmountToken);\\r\\n                continue;\\r\\n            }\\r\\n\\r\\n            address baluniSwapper = registry.getBaluniSwapper();\\r\\n            require(baluniSwapper != address(0), 'BaluniSwapper not set');\\r\\n\\r\\n            IERC20(token).approve(baluniSwapper, burnAmountToken);\\r\\n\\r\\n            try IBaluniV1Swapper(baluniSwapper).singleSwap(token, baseAsset, burnAmountToken, msg.sender) returns (\\r\\n                uint256 amountOut\\r\\n            ) {\\r\\n                require(amountOut > 0, 'Swap Failed');\\r\\n                IERC20(baseAsset).transfer(msg.sender, amountOut);\\r\\n            } catch {\\r\\n                uint256 amountOutHop = IBaluniV1Swapper(baluniSwapper).multiHopSwap(\\r\\n                    token,\\r\\n                    address(WNATIVE),\\r\\n                    baseAsset,\\r\\n                    burnAmountToken,\\r\\n                    msg.sender\\r\\n                );\\r\\n                require(amountOutHop > 0, 'MultiHopSwap Failed');\\r\\n                IERC20(baseAsset).transfer(msg.sender, amountOutHop);\\r\\n            }\\r\\n        }\\r\\n\\r\\n        _burn(msg.sender, burnAmountAfterFee);\\r\\n        emit Burn(msg.sender, burnAmountAfterFee);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the agent address associated with a user.\\r\\n     * @param _user The user's address.\\r\\n     * @return The agent address.\\r\\n     */\\r\\n    function getAgentAddress(address _user) external view returns (address) {\\r\\n        address agentFactory = registry.getBaluniAgentFactory();\\r\\n        return IBaluniV1AgentFactory(agentFactory).getAgentAddress(_user);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Mints a specified amount of BALUNI tokens in exchange for USDC.\\r\\n     * @param balAmountToMint The amount of BALUNI tokens to mint.\\r\\n     */\\r\\n    function mintWithUSDC(uint256 balAmountToMint) public nonReentrant {\\r\\n        address treasury = registry.getTreasury();\\r\\n        address USDC = registry.getUSDC();\\r\\n        uint256 _BPS_FEE = registry.getBPS_FEE();\\r\\n        uint256 _BPS_BASE = registry.getBPS_BASE();\\r\\n        uint256 totalUSDValuation = _totalValuationScaled();\\r\\n        uint256 totalBalSupply = totalSupply();\\r\\n        uint256 usdcRequired = (balAmountToMint * totalUSDValuation) / totalBalSupply;\\r\\n        IERC20(USDC).transferFrom(msg.sender, address(this), usdcRequired / 1e12);\\r\\n        uint256 balance = IERC20(USDC).balanceOf(msg.sender);\\r\\n        uint256 allowed = IERC20(USDC).allowance(msg.sender, address(this));\\r\\n\\r\\n        require(totalBalSupply > 0, 'Total BALUNI supply cannot be zero');\\r\\n        require(balance >= usdcRequired / 1e12, 'USDC balance is insufficient');\\r\\n        require(allowed >= usdcRequired / 1e12, 'Check the token allowance');\\r\\n\\r\\n        _mint(msg.sender, balAmountToMint);\\r\\n        emit Mint(msg.sender, balAmountToMint);\\r\\n\\r\\n        uint256 fee = ((usdcRequired / 1e12) * _BPS_FEE) / _BPS_BASE;\\r\\n        IERC20(address(USDC)).transfer(treasury, fee);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calls the `rebalance` function of the `rebalancer` contract.\\r\\n     * @param assets An array of addresses representing the assets to rebalance.\\r\\n     * @param weights An array of uint256 values representing the weights of the assets.\\r\\n     * @param sender The address of the sender.\\r\\n     * @param receiver The address of the receiver.\\r\\n     * @param limit The maximum number of assets to rebalance.\\r\\n     */\\r\\n    function callRebalance(\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        address sender,\\r\\n        address receiver,\\r\\n        uint256 limit,\\r\\n        address /* baseAsset */\\r\\n    ) external {\\r\\n        address USDC = registry.getUSDC();\\r\\n        address rebalancer = registry.getBaluniRebalancer();\\r\\n        uint256[] memory balances = new uint256[](0);\\r\\n        IBaluniV1Rebalancer(rebalancer).rebalance(balances, assets, weights, limit, sender, receiver, USDC);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the amount of USDC required to mint a given amount of BAL tokens.\\r\\n     * @param balAmountToMint The amount of BAL tokens to be minted.\\r\\n     * @return The amount of USDC required to mint the specified amount of BAL tokens.\\r\\n     */\\r\\n    function requiredUSDCtoMint(uint256 balAmountToMint) public view returns (uint256) {\\r\\n        uint256 totalUSDValuation = _totalValuationScaled();\\r\\n        uint256 totalBalSupply = totalSupply();\\r\\n        uint256 usdcRequired = (balAmountToMint * totalUSDValuation) / totalBalSupply;\\r\\n        return usdcRequired / 1e12;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the token share based on the total Baluni supply, total ERC20 balance, Baluni amount, and token decimals.\\r\\n     * @param totalBaluni The total supply of Baluni tokens.\\r\\n     * @param totalERC20Balance The total balance of the ERC20 token.\\r\\n     * @param baluniAmount The amount of Baluni tokens.\\r\\n     * @param tokenDecimals The number of decimals for the ERC20 token.\\r\\n     * @return The calculated token share.\\r\\n     */\\r\\n    function calculateTokenShare(\\r\\n        uint256 totalBaluni,\\r\\n        uint256 totalERC20Balance,\\r\\n        uint256 baluniAmount,\\r\\n        uint256 tokenDecimals\\r\\n    ) external pure returns (uint256) {\\r\\n        return _calculateERC20Share(totalBaluni, totalERC20Balance, baluniAmount, tokenDecimals);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the valuation of a given amount of a specific ERC20 token.\\r\\n     * @param amount The amount of the ERC20 token.\\r\\n     * @param token The address of the ERC20 token.\\r\\n     * @return The calculated valuation of the ERC20 token.\\r\\n     */\\r\\n    function tokenValuation(uint256 amount, address token) external view returns (uint256) {\\r\\n        address baluniOracle = registry.getBaluniOracle();\\r\\n        return IBaluniV1Oracle(baluniOracle).convertScaled(token, baseAsset, amount);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the total valuation of the Baluni ecosystem.\\r\\n     * @return The total valuation of the Baluni ecosystem.\\r\\n     */\\r\\n    function totalValuation() external view returns (uint256) {\\r\\n        return _totalValuationScaled();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the value of a given amount of Baluni tokens in USDC.\\r\\n     * @param amount The amount of Baluni tokens.\\r\\n     * @return The calculated value of the Baluni tokens in USDC.\\r\\n     */\\r\\n    function getUSDCShareValue(uint256 amount) external view returns (uint256) {\\r\\n        return _calculateBaluniToUSDC(amount);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the valuation of an ERC20 token based on the amount and token address.\\r\\n     * @param amount The amount of the token.\\r\\n     * @param token The address of the token.\\r\\n     * @return valuation The valuation of the token.\\r\\n     */\\r\\n    function _calculateERC20ValuationScaled(uint256 amount, address token) internal view returns (uint256 valuation) {\\r\\n        address baluniOracle = registry.getBaluniOracle();\\r\\n        return IBaluniV1Oracle(baluniOracle).convertScaled(token, baseAsset, amount);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the equivalent amount of USDC tokens for a given amount of Baluni tokens.\\r\\n     * @param amount The amount of Baluni tokens to convert.\\r\\n     * @return shareUSDC The equivalent amount of USDC tokens.\\r\\n     *\\r\\n     * Requirements:\\r\\n     * - The total supply of Baluni tokens must be greater than zero.\\r\\n     */\\r\\n    function _calculateBaluniToUSDC(uint256 amount) internal view returns (uint256 shareUSDC) {\\r\\n        uint256 baseDecimal = IERC20Metadata(baseAsset).decimals();\\r\\n        uint256 totalBaluni = totalSupply();\\r\\n        require(totalBaluni > 0, 'Total supply cannot be zero');\\r\\n        uint256 totalUSDC = _totalValuationScaled();\\r\\n        shareUSDC = (amount * totalUSDC) / totalBaluni;\\r\\n        shareUSDC /= 10 ** (18 - baseDecimal);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the ERC20 share based on the total Baluni supply, total ERC20 balance,\\r\\n     * Baluni amount, and token decimals.\\r\\n     * @param totalBaluni The total supply of Baluni tokens.\\r\\n     * @param totalERC20Balance The total balance of the ERC20 token.\\r\\n     * @param baluniAmount The amount of Baluni tokens.\\r\\n     * @param tokenDecimals The number of decimals for the ERC20 token.\\r\\n     * @return The calculated ERC20 share.\\r\\n     */\\r\\n    function _calculateERC20Share(\\r\\n        uint256 totalBaluni,\\r\\n        uint256 totalERC20Balance,\\r\\n        uint256 baluniAmount,\\r\\n        uint256 tokenDecimals\\r\\n    ) internal pure returns (uint256) {\\r\\n        require(totalBaluni > 0, 'Total supply cannot be zero');\\r\\n        require(tokenDecimals <= 18, 'Token decimals should be <= 18');\\r\\n        uint256 baluniAdjusted;\\r\\n        uint256 amountAdjusted;\\r\\n        uint256 factor = (10 ** (18 - tokenDecimals));\\r\\n\\r\\n        if (tokenDecimals < 18) {\\r\\n            baluniAdjusted = totalBaluni / factor;\\r\\n            amountAdjusted = baluniAmount / factor;\\r\\n        } else {\\r\\n            baluniAdjusted = totalBaluni;\\r\\n            amountAdjusted = baluniAmount;\\r\\n        }\\r\\n\\r\\n        uint256 result = (amountAdjusted * totalERC20Balance) / baluniAdjusted;\\r\\n\\r\\n        return result;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the total valuation of the contract by summing up the valuation of each token held.\\r\\n     * @return The total valuation of the contract.\\r\\n     */\\r\\n    function _totalValuationScaled() internal view returns (uint256) {\\r\\n        uint256 _totalV = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < tokens.length(); i++) {\\r\\n            address token = tokens.at(i);\\r\\n            uint256 balance = IERC20(token).balanceOf(address(this));\\r\\n\\r\\n            if (balance == 0) continue;\\r\\n\\r\\n            if (token == baseAsset) {\\r\\n                _totalV += balance * 1e12;\\r\\n                continue;\\r\\n            }\\r\\n\\r\\n            address baluniOracle = registry.getBaluniOracle();\\r\\n            uint256 tokenBalanceValuation = IBaluniV1Oracle(baluniOracle).convertScaled(token, baseAsset, balance);\\r\\n            require(tokenBalanceValuation > 0, 'Token valuation is zero');\\r\\n            _totalV += tokenBalanceValuation;\\r\\n        }\\r\\n        return _totalV;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the net amount after deducting the fee.\\r\\n     * @param _amount The input amount.\\r\\n     * @return The net amount after deducting the fee.\\r\\n     */\\r\\n    function _calculateNetAmountAfterFee(uint256 _amount) internal view returns (uint256) {\\r\\n        uint256 _BPS_FEE = registry.getBPS_FEE();\\r\\n        uint256 _BPS_BASE = registry.getBPS_BASE();\\r\\n        uint256 amountInWithFee = (_amount * (_BPS_BASE - (_BPS_FEE))) / _BPS_BASE;\\r\\n        return amountInWithFee;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the version of the contract.\\r\\n     * @return The version string.\\r\\n     */\\r\\n    function getVersion() external view returns (uint64) {\\r\\n        return _getInitializedVersion();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns an array of addresses representing the tokens.\\r\\n     * @return An array of addresses representing the tokens.\\r\\n     */\\r\\n    function getTokens() external view returns (address[] memory) {\\r\\n        return tokens.values();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Adds a token to the `tokens` set.\\r\\n     * Can only be called by the contract owner.\\r\\n     * @param _token The address of the token to be added.\\r\\n     */\\r\\n    function addToken(address _token) external onlyOwner {\\r\\n        EnumerableSetUpgradeable.add(tokens, _token);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Removes a token from the `tokens` set.\\r\\n     * Can only be called by the contract owner.\\r\\n     * @param _token The address of the token to be removed.\\r\\n     */\\r\\n    function removeToken(address _token) external onlyOwner {\\r\\n        EnumerableSetUpgradeable.remove(tokens, _token);\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0xbc637078f2deda2a3b3bc3f971c2124b77d809c3c77630f48672d0a20c8c7c06\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":12397,"contract":"contracts/orchestators/BaluniV1Router.sol:BaluniV1Router","label":"tokens","offset":0,"slot":"0","type":"t_struct(AddressSet)6318_storage"},{"astId":12400,"contract":"contracts/orchestators/BaluniV1Router.sol:BaluniV1Router","label":"registry","offset":0,"slot":"2","type":"t_contract(IBaluniV1Registry)4909"},{"astId":12406,"contract":"contracts/orchestators/BaluniV1Router.sol:BaluniV1Router","label":"baseAsset","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_bytes32)dyn_storage":{"base":"t_bytes32","encoding":"dynamic_array","label":"bytes32[]","numberOfBytes":"32"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_mapping(t_bytes32,t_uint256)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_struct(AddressSet)6318_storage":{"encoding":"inplace","label":"struct EnumerableSetUpgradeable.AddressSet","members":[{"astId":6317,"contract":"contracts/orchestators/BaluniV1Router.sol:BaluniV1Router","label":"_inner","offset":0,"slot":"0","type":"t_struct(Set)6017_storage"}],"numberOfBytes":"64"},"t_struct(Set)6017_storage":{"encoding":"inplace","label":"struct EnumerableSetUpgradeable.Set","members":[{"astId":6012,"contract":"contracts/orchestators/BaluniV1Router.sol:BaluniV1Router","label":"_values","offset":0,"slot":"0","type":"t_array(t_bytes32)dyn_storage"},{"astId":6016,"contract":"contracts/orchestators/BaluniV1Router.sol:BaluniV1Router","label":"_indexes","offset":0,"slot":"1","type":"t_mapping(t_bytes32,t_uint256)"}],"numberOfBytes":"64"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{"burnERC20(uint256)":{"notice":"This function requires the caller to have a balance of at least `burnAmount` BAL tokens.The function also checks the USDC balance before burning the tokens.After burning the tokens, the function transfers a proportional share of each ERC20 token held by the contract to the caller.The share is calculated based on the total supply of BAL tokens, the balance of each ERC20 token, and the decimals of each token.Finally, the function emits a `Burn` event with the caller's address and the amount of tokens burned."},"execute((address,uint256,bytes)[],address[])":{"notice":"This function requires the agentFactory to be set and creates a new agent if necessary.If a token is new and a Uniswap pool exists for it, the token is added to the tokens set.If no Uniswap pool exists for a token, the token balance is transferred back to the caller."},"liquidate(address)":{"notice":"The contract must have sufficient approval to spend the specified token.If a pool exists for the token and USDC on Uniswap, a direct swap is performed.If no pool exists, a multi-hop swap is performed through the WNATIVE token.If the swap fails, the `burn` function should be called to handle the failed swap."}},"version":1}}},"contracts/pools/BaluniV1Pool.sol":{"BaluniV1Pool":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address[]","name":"assets","type":"address[]"}],"name":"RebalancePerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"fromToken","type":"address"},{"indexed":false,"internalType":"address","name":"toToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"amountsToAdd","type":"uint256[]"}],"name":"WeightsRebalanced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"assetInfos","outputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"weight","type":"uint256"},{"internalType":"uint256","name":"slippage","type":"uint256"},{"internalType":"uint256","name":"reserve","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetIndex","type":"uint256"}],"name":"assetLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"share","type":"uint256"}],"name":"calculateAssetShare","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":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getAssetReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAssets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getDeviationForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeviations","outputs":[{"internalType":"bool[]","name":"directions","type":"bool[]"},{"internalType":"uint256[]","name":"deviations","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getSlippage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSlippageParams","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWeights","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address[]","name":"_assets","type":"address[]"},{"internalType":"uint256[]","name":"_weights","type":"uint256[]"},{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isRebalanceNeeded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","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":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"quotePotentialSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"rebalanceAndDeposit","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address[]","name":"_assets","type":"address[]"},{"internalType":"uint256[]","name":"_weights","type":"uint256[]"},{"internalType":"address","name":"_registry","type":"address"},{"internalType":"uint64","name":"_version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"totalVal","type":"uint256"},{"internalType":"uint256[]","name":"valuations","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"assetLiquidity(uint256)":{"details":"Returns the liquidity of a specific asset in the pool.","params":{"assetIndex":"The index of the asset."},"returns":{"_0":"The liquidity of the asset."}},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"calculateAssetShare(uint256)":{"details":"Calculates the asset shares based on the provided share amount.","params":{"share":"The share amount to calculate the asset shares for."},"returns":{"_0":"An array of asset shares corresponding to each asset in the pool."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"deposit(address,uint256[],uint256)":{"details":"Mints new tokens and adds them to the specified address.","params":{"to":"The address to which the new tokens will be minted."},"returns":{"_0":"The amount of tokens minted."}},"getAmountOut(address,address,uint256)":{"details":"Calculates the amount of `toToken` that will be received when swapping `fromToken` for `toToken`.","params":{"amount":"The amount of `fromToken` being swapped.","fromToken":"The address of the token being swapped from.","toToken":"The address of the token being swapped to."},"returns":{"_0":"The amount of `toToken` that will be received."}},"getAssetReserve(address)":{"details":"Returns the reserve amount of the specified asset.","params":{"asset":"The address of the asset."},"returns":{"_0":"The reserve amount of the asset."}},"getAssets()":{"details":"Retrieves the list of assets in the pool.","returns":{"_0":"An array of addresses representing the assets."}},"getDeviationForToken(address)":{"details":"Returns the deviation for a token in the pool.","params":{"token":"The address of the token."},"returns":{"_0":"The deviation for the token."}},"getDeviations()":{"details":"Returns the deviation between the current weights and target weights of the assets in the pool.","returns":{"directions":"An array of boolean values indicating whether the current weight is higher (true) or lower (false) than the target weight."}},"getReserves()":{"details":"Returns an array of reserves for each asset in the pool.","returns":{"_0":"An array of reserves."}},"getSlippage(address)":{"details":"Restituisce lo slippage attuale per un dato token.","params":{"token":"The address of the token."},"returns":{"_0":"Lo slippage attuale per il token."}},"getSlippageParams()":{"details":"Returns an array of slippage parameters for each token in the pool.","returns":{"_0":"An array of slippage parameters."}},"getTokenWeight(address)":{"details":"Returns the weight of a token in the pool.","params":{"token":"The address of the token."},"returns":{"_0":"The weight of the token."}},"getWeights()":{"details":"Retrieves the list of weights associated with the assets in the pool.","returns":{"_0":"An array of uint256 values representing the weights."}},"initialize(string,string,address[],uint256[],address)":{"details":"Initializes the BaluniV1Pool contract.","params":{"_assets":"The array of asset addresses.","_registry":"The address of the BaluniV1Registry contract.","_weights":"The array of asset weights."}},"isRebalanceNeeded()":{"details":"Checks if rebalancing is needed for the pool.","returns":{"_0":"A boolean value indicating whether rebalancing is needed or not."}},"liquidity()":{"details":"Returns the total liquidity of the pool.","returns":{"_0":"The total liquidity of the pool."}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"pause()":{"details":"pause pool, restricting certain operations"},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"quotePotentialSwap(address,address,uint256)":{"details":"Calculates the potential amount of `toToken` that can be obtained by swapping `amount` of `fromToken`. This function takes into account the slippage and token weights to provide an accurate estimation.","params":{"amount":"The amount of `fromToken` being swapped.","fromToken":"The address of the token being swapped from.","toToken":"The address of the token being swapped to."},"returns":{"_0":"The potential amount of `toToken` that can be obtained."}},"rebalance()":{"details":"Performs rebalance"},"rebalanceAndDeposit(address)":{"details":"Rebalances the weights of the pool by calculating the amounts to add for each token, transferring the calculated amounts from the user to the pool, minting the total added liquidity, updating the reserves, and emitting an event to indicate the rebalancing of weights.","params":{"receiver":"The address to receive the minted liquidity tokens."}},"renounceOwnership()":{"details":"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."},"swap(address,address,uint256,uint256,address,uint256)":{"details":"Swaps `amount` of `fromToken` to `toToken` and transfers the received amount to `receiver`. Requirements: - `fromToken` and `toToken` must be different tokens. - `amount` must be greater than zero. - Sufficient liquidity of `toToken` must be available in the contract. Emits a `Swap` event with the details of the swap. Updates the reserves after the swap.","params":{"amount":"The amount of `fromToken` to swap.","fromToken":"The address of the token to swap from.","receiver":"The address to receive the swapped tokens.","toToken":"The address of the token to swap to."},"returns":{"amountOut":"The amount of `toToken` received after the swap."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"totalValuation()":{"details":"Computes the total valuation of the pool and returns the total valuation and an array of individual valuations.","returns":{"totalVal":"The total valuation of the pool.","valuations":"An array of individual valuations."}},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unitPrice()":{"details":"Returns the unit price of the pool.","returns":{"_0":"The unit price of the pool."}},"unpause()":{"details":"unpause pool, enabling certain operations"},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"withdraw(uint256,address,uint256)":{"details":"Burns the pool tokens and transfers the underlying assets to the specified address.","params":{"to":"The address to transfer the underlying assets to."}}},"stateVariables":{"reserves":{"details":"A mapping that stores the reserves for each address."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":177,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1Pool":{"entryPoint":77,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ContextUpgradeable":{"entryPoint":167,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ERC20Upgradeable":{"entryPoint":117,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IBaluniV1Pool":{"entryPoint":87,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20":{"entryPoint":147,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20Errors":{"entryPoint":127,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20Metadata":{"entryPoint":137,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_OwnableUpgradeable":{"entryPoint":157,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_PausableUpgradeable":{"entryPoint":97,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ReentrancyGuardUpgradeable":{"entryPoint":107,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":243,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":231,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":219,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":191,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":188,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":73,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a06040523461003e5761001161004d565b610019610043565b618aef6101028239608051818181616d1401528181616d990152616f940152618aef90f35b610049565b60405190565b5f80fd5b610055610057565b565b61005f610061565b565b61006961006b565b565b610073610075565b565b61007d61007f565b565b610087610089565b565b610091610093565b565b61009b61009d565b565b6100a56100a7565b565b6100af6100f3565b565b60018060a01b031690565b90565b6100d36100ce6100d8926100b1565b6100bc565b6100b1565b90565b6100e4906100bf565b90565b6100f0906100db565b90565b6100fc306100e7565b60805256fe60806040526004361015610013575b611a3e565b61001d5f3561030c565b806306fdde03146103075780630902f1ac14610302578063095ea7b3146102fd57806312899068146102f857806318160ddd146102f35780631a686502146102ee57806322acb867146102e957806323b872dd146102e4578063250aa683146102df578063295b9300146102da578063313ce567146102d557806334de9b8d146102d05780633f4ba83a146102cb57806343c2e2f5146102c65780634aa06652146102c15780634f1ef286146102bc57806352d1902d146102b75780635c975abb146102b257806367e4ac2c146102ad57806370a08231146102a8578063715018a6146102a35780637b1039991461029e5780637d7c2a1c146102995780637ff1c179146102945780638456cb591461028f57806389b3179b1461028a5780638a77c8dc146102855780638da5cb5b146102805780638de30f301461027b57806395d89b41146102765780639908fc8b14610271578063a9059cbb1461026c578063ad3cb1cc14610267578063b2b55d7014610262578063b3bf9d321461025d578063b7110e1314610258578063c2ee3a0814610253578063cdf456e11461024e578063cf8fa76414610249578063d14ef46d14610244578063d66bd5241461023f578063dd62ed3e1461023a578063e63697c814610235578063e64ebdd214610230578063e73faa2d1461022b578063f2fde38b146102265763fb33a6c00361000e57611a04565b6118dd565b6118a8565b611873565b61183d565b6117cd565b61176b565b6116f7565b611586565b611533565b6114b0565b611442565b61135a565b6112d2565b61129d565b6111ef565b6111b2565b6110f6565b6110c1565b61108c565b611035565b611000565b610fcd565b610f98565b610f65565b610f30565b610e52565b610e1d565b610de8565b610d14565b610cdf565b610c90565b610b99565b610b63565b610b30565b610af9565b6107dc565b61077e565b610723565b6106ed565b61067e565b610649565b610614565b6105df565b610569565b610471565b61039a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261032a57565b61031c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b61037061037960209361037e936103678161032f565b93848093610333565b9586910161033c565b610347565b0190565b6103979160208201915f818403910152610351565b90565b346103ca576103aa366004610320565b6103c66103b5611b77565b6103bd610312565b91829182610382565b0390f35b610318565b5190565b60209181520190565b60200190565b90565b6103ee906103e2565b9052565b906103ff816020936103e5565b0190565b60200190565b90610426610420610419846103cf565b80936103d3565b926103dc565b905f5b8181106104365750505090565b90919261044f61044960019286516103f2565b94610403565b9101919091610429565b61046e9160208201915f818403910152610409565b90565b346104a157610481366004610320565b61049d61048c611cb1565b610494610312565b91829182610459565b0390f35b610318565b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6104cc906104aa565b90565b6104d8816104c3565b036104df57565b5f80fd5b905035906104f0826104cf565b565b6104fb816103e2565b0361050257565b5f80fd5b90503590610513826104f2565b565b919060408382031261053d578061053161053a925f86016104e3565b93602001610506565b90565b61031c565b151590565b61055090610542565b9052565b9190610567905f60208501940190610547565b565b3461059a5761059661058561057f366004610515565b90611dc6565b61058d610312565b91829182610554565b0390f35b610318565b906020828203126105b8576105b5915f016104e3565b90565b61031c565b6105c6906103e2565b9052565b91906105dd905f602085019401906105bd565b565b3461060f5761060b6105fa6105f536600461059f565b611dec565b610602610312565b918291826105ca565b0390f35b610318565b3461064457610624366004610320565b61064061062f611e84565b610637610312565b918291826105ca565b0390f35b610318565b3461067957610659366004610320565b610675610664611ea3565b61066c610312565b918291826105ca565b0390f35b610318565b346106ae5761068e366004610320565b6106aa610699611eb8565b6106a1610312565b91829182610459565b0390f35b610318565b90916060828403126106e8576106e56106ce845f85016104e3565b936106dc81602086016104e3565b93604001610506565b90565b61031c565b3461071e5761071a6107096107033660046106b3565b91611f3b565b610711610312565b91829182610554565b0390f35b610318565b346107535761074f61073e61073936600461059f565b611f6a565b610746610312565b918291826105ca565b0390f35b610318565b9161077b9261076e60408201935f8301906105bd565b6020818403910152610409565b90565b346107af5761078e366004610320565b610796612002565b906107ab6107a2610312565b92839283610758565b0390f35b610318565b60ff1690565b6107c3906107b4565b9052565b91906107da905f602085019401906107ba565b565b3461080c576107ec366004610320565b6108086107f7612045565b6107ff610312565b918291826107c7565b0390f35b610318565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061085090610347565b810190811067ffffffffffffffff82111761086a57604052565b610819565b9061088261087b610312565b9283610846565b565b67ffffffffffffffff81116108a25761089e602091610347565b0190565b610819565b90825f939282370152565b909291926108c76108c282610884565b61086f565b938185526020850190828401116108e3576108e1926108a7565b565b610815565b9080601f8301121561090657816020610903933591016108b2565b90565b610811565b67ffffffffffffffff81116109235760208091020190565b610819565b5f80fd5b9092919261094161093c8261090b565b61086f565b938185526020808601920283019281841161097e57915b8383106109655750505050565b6020809161097384866104e3565b815201920191610958565b610928565b9080601f830112156109a15781602061099e9335910161092c565b90565b610811565b67ffffffffffffffff81116109be5760208091020190565b610819565b909291926109d86109d3826109a6565b61086f565b9381855260208086019202830192818411610a1557915b8383106109fc5750505050565b60208091610a0a8486610506565b8152019201916109ef565b610928565b9080601f83011215610a3857816020610a35933591016109c3565b90565b610811565b919060a083820312610aef575f83013567ffffffffffffffff8111610aea5781610a689185016108e8565b92602081013567ffffffffffffffff8111610ae55782610a899183016108e8565b92604082013567ffffffffffffffff8111610ae05783610aaa918401610983565b9260608301359067ffffffffffffffff8211610adb57610acf81610ad8938601610a1a565b936080016104e3565b90565b6104a6565b6104a6565b6104a6565b6104a6565b61031c565b5f0190565b34610b2b57610b15610b0c366004610a3d565b93929092612928565b610b1d610312565b80610b2781610af4565b0390f35b610318565b34610b5e57610b40366004610320565b610b48612953565b610b50610312565b80610b5a81610af4565b0390f35b610318565b34610b9457610b90610b7f610b793660046106b3565b91612a06565b610b87610312565b918291826105ca565b0390f35b610318565b34610bca57610bc6610bb5610baf3660046106b3565b91612beb565b610bbd610312565b918291826105ca565b0390f35b610318565b67ffffffffffffffff8111610bed57610be9602091610347565b0190565b610819565b90929192610c07610c0282610bcf565b61086f565b93818552602085019082840111610c2357610c21926108a7565b565b610815565b9080601f83011215610c4657816020610c4393359101610bf2565b90565b610811565b919091604081840312610c8b57610c64835f83016104e3565b92602082013567ffffffffffffffff8111610c8657610c839201610c28565b90565b6104a6565b61031c565b610ca4610c9e366004610c4b565b90612dd3565b610cac610312565b80610cb681610af4565b0390f35b90565b610cc690610cba565b9052565b9190610cdd905f60208501940190610cbd565b565b34610d0f57610cef366004610320565b610d0b610cfa612e4e565b610d02610312565b91829182610cca565b0390f35b610318565b34610d4457610d24366004610320565b610d40610d2f612e82565b610d37610312565b91829182610554565b0390f35b610318565b5190565b60209181520190565b60200190565b610d65906104c3565b9052565b90610d7681602093610d5c565b0190565b60200190565b90610d9d610d97610d9084610d49565b8093610d4d565b92610d56565b905f5b818110610dad5750505090565b909192610dc6610dc06001928651610d69565b94610d7a565b9101919091610da0565b610de59160208201915f818403910152610d80565b90565b34610e1857610df8366004610320565b610e14610e03612f16565b610e0b610312565b91829182610dd0565b0390f35b610318565b34610e4d57610e49610e38610e3336600461059f565b612f98565b610e40610312565b918291826105ca565b0390f35b610318565b34610e8057610e62366004610320565b610e6a612fe4565b610e72610312565b80610e7c81610af4565b0390f35b610318565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b610eb2906008610eb79302610e85565b610e89565b90565b90610ec59154610ea2565b90565b610ed460045f90610eba565b90565b90565b610eee610ee9610ef3926104aa565b610ed7565b6104aa565b90565b610eff90610eda565b90565b610f0b90610ef6565b90565b610f1790610f02565b9052565b9190610f2e905f60208501940190610f0e565b565b34610f6057610f40366004610320565b610f5c610f4b610ec8565b610f53610312565b91829182610f1b565b0390f35b610318565b34610f9357610f75366004610320565b610f7d61308a565b610f85610312565b80610f8f81610af4565b0390f35b610318565b34610fc857610fa8366004610320565b610fc4610fb36130a4565b610fbb610312565b91829182610459565b0390f35b610318565b34610ffb57610fdd366004610320565b610fe5613143565b610fed610312565b80610ff781610af4565b0390f35b610318565b346110305761102c61101b61101636600461059f565b61314d565b611023610312565b918291826105ca565b0390f35b610318565b3461106557611045366004610320565b611061611050613218565b611058610312565b91829182610554565b0390f35b610318565b611073906104c3565b9052565b919061108a905f6020850194019061106a565b565b346110bc5761109c366004610320565b6110b86110a7613347565b6110af610312565b91829182611077565b0390f35b610318565b346110f1576110ed6110dc6110d736600461059f565b6133a6565b6110e4610312565b91829182610459565b0390f35b610318565b3461112657611106366004610320565b6111226111116135bb565b611119610312565b91829182610382565b0390f35b610318565b909160c08284031261118a57611143835f84016104e3565b9261115181602085016104e3565b9261115f8260408301610506565b926111876111708460608501610506565b9361117e81608086016104e3565b9360a001610506565b90565b61031c565b9160206111b09294936111a960408201965f8301906105bd565b01906105bd565b565b346111ea576111d16111c536600461112b565b94939093929192613f1a565b906111e66111dd610312565b9283928361118f565b0390f35b610318565b346112205761121c61120b611205366004610515565b90613f3d565b611213610312565b91829182610554565b0390f35b610318565b9061123761123283610884565b61086f565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61126d6005611225565b9061127a6020830161123c565b565b611284611263565b90565b61128f61127c565b90565b61129a611287565b90565b346112cd576112ad366004610320565b6112c96112b8611292565b6112c0610312565b91829182610382565b0390f35b610318565b34611302576112fe6112ed6112e836600461059f565b613f5f565b6112f5610312565b918291826105ca565b0390f35b610318565b90916060828403126113555761131f835f84016104e3565b9260208301359067ffffffffffffffff8211611350576113448161134d938601610a1a565b93604001610506565b90565b6104a6565b61031c565b3461138b57611387611376611370366004611307565b91614807565b61137e610312565b918291826105ca565b0390f35b610318565b5190565b60209181520190565b60200190565b6113ac90610542565b9052565b906113bd816020936113a3565b0190565b60200190565b906113e46113de6113d784611390565b8093611394565b9261139d565b905f5b8181106113f45750505090565b90919261140d61140760019286516113b0565b946113c1565b91019190916113e7565b909161143161143f9360408401908482035f8601526113c7565b916020818403910152610409565b90565b3461147357611452366004610320565b61145a614890565b9061146f611466610312565b92839283611417565b0390f35b610318565b90565b61148b9060086114909302610e85565b611478565b90565b9061149e915461147b565b90565b6114ad60015f90611493565b90565b346114e0576114c0366004610320565b6114dc6114cb6114a1565b6114d3610312565b918291826105ca565b0390f35b610318565b73ffffffffffffffffffffffffffffffffffffffff1690565b61150e9060086115139302610e85565b6114e5565b90565b9061152191546114fe565b90565b61153060025f90611516565b90565b3461156357611543366004610320565b61155f61154e611524565b611556610312565b91829182611077565b0390f35b610318565b906020828203126115815761157e915f01610506565b90565b61031c565b346115b6576115b26115a161159c366004611568565b614a72565b6115a9610312565b918291826105ca565b0390f35b610318565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5490565b5f5260205f2090565b6115fe816115e8565b821015611618576116106004916115ec565b910201905f90565b6115bb565b5f1c90565b61162e6116339161161d565b6114e5565b90565b6116409054611622565b90565b61164f6116549161161d565b611478565b90565b6116619054611643565b90565b5f9061166f826115e8565b8110156116b55761167f916115f5565b509061168c5f8301611636565b9161169960018201611657565b916116b260036116ab60028501611657565b9301611657565b90565b5f80fd5b6116ee6116f5946116e46060949897956116da608086019a5f87019061106a565b60208501906105bd565b60408301906105bd565b01906105bd565b565b3461172b5761172761171261170d366004611568565b611664565b9061171e949294610312565b948594856116b9565b0390f35b610318565b61173990610ef6565b90565b9061174690611730565b5f5260205260405f2090565b611768906117636005915f9261173c565b611493565b90565b3461179b5761179761178661178136600461059f565b611752565b61178e610312565b918291826105ca565b0390f35b610318565b91906040838203126117c857806117bc6117c5925f86016104e3565b936020016104e3565b90565b61031c565b346117fe576117fa6117e96117e33660046117a0565b90614ad3565b6117f1610312565b918291826105ca565b0390f35b610318565b90916060828403126118385761183561181e845f8501610506565b9361182c81602086016104e3565b93604001610506565b90565b61031c565b3461186e5761186a611859611853366004611803565b9161578e565b611861610312565b918291826105ca565b0390f35b610318565b346118a35761189f61188e611889366004611568565b6157a4565b611896610312565b91829182610459565b0390f35b610318565b346118d8576118b8366004610320565b6118d46118c36159bf565b6118cb610312565b918291826105ca565b0390f35b610318565b3461190b576118f56118f036600461059f565b615b82565b6118fd610312565b8061190781610af4565b0390f35b610318565b67ffffffffffffffff1690565b61192681611910565b0361192d57565b5f80fd5b9050359061193e8261191d565b565b909160c0828403126119ff575f82013567ffffffffffffffff81116119fa578361196b9184016108e8565b92602083013567ffffffffffffffff81116119f5578161198c9185016108e8565b92604081013567ffffffffffffffff81116119f057826119ad918301610983565b92606082013567ffffffffffffffff81116119eb576119d1846119e8928501610a1a565b936119df81608086016104e3565b9360a001611931565b90565b6104a6565b6104a6565b6104a6565b6104a6565b61031c565b34611a3957611a23611a17366004611940565b94939093929192615e6a565b611a2b610312565b80611a3581610af4565b0390f35b610318565b5f80fd5b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b9060016002830492168015611a94575b6020831014611a8f57565b611a47565b91607f1691611a84565b60209181520190565b5f5260205f2090565b905f9291805490611aca611ac383611a74565b8094611a9e565b916001811690815f14611b215750600114611ae5575b505050565b611af29192939450611aa7565b915f925b818410611b0957505001905f8080611ae0565b60018160209295939554848601520191019290611af6565b92949550505060ff19168252151560200201905f8080611ae0565b90611b4691611ab0565b90565b90611b69611b6292611b59610312565b93848092611b3c565b0383610846565b565b611b7490611b49565b90565b611b7f611a42565b50611b936003611b8d615e7a565b01611b6b565b90565b606090565b90611bad611ba8836109a6565b61086f565b918252565b369037565b90611bdc611bc483611b9b565b92602080611bd286936109a6565b9201910390611bb2565b565b90565b611bf5611bf0611bfa92611bde565b610ed7565b6103e2565b90565b6001611c0991016103e2565b90565b611c1590610eda565b90565b611c2190611c0c565b90565b611c2d90610ef6565b90565b611c3990610ef6565b90565b5f80fd5b60e01b90565b90505190611c53826104f2565b565b90602082820312611c6e57611c6b915f01611c46565b90565b61031c565b611c7b610312565b3d5f823e3d90fd5b90611c8d826103cf565b811015611c9e576020809102010190565b6115bb565b90611cad906103e2565b9052565b611cb9611b96565b50611ccb611cc65f6115e8565b611bb7565b90611cd55f611be1565b5b80611cf1611ceb611ce65f6115e8565b6103e2565b916103e2565b1015611dbf57611d55906020611d23611d1e611d195f611d128187906115f5565b5001611636565b611c18565b611c24565b6370a0823190611d4a611d3530611c30565b92611d3e610312565b96879485938493611c40565b835260048301611077565b03915afa918215611dba57611d8792611d82915f91611d8c575b50611d7d8691849092611c83565b611ca3565b611bfd565b611cd6565b611dad915060203d8111611db3575b611da58183610846565b810190611c55565b5f611d6f565b503d611d9b565b611c73565b50565b5f90565b611de391611dd2611dc2565b50611ddb615e9e565b919091615eab565b600190565b5f90565b611df4611de8565b50611dfe5f611be1565b5b80611e1a611e14611e0f5f6115e8565b6103e2565b916103e2565b1015611e7657611e365f611e2f8184906115f5565b5001611636565b611e48611e42846104c3565b916104c3565b14611e5b57611e5690611bfd565b611dff565b611e739150611e6c6002915f6115f5565b5001611657565b90565b5050611e815f611be1565b90565b611e8c611de8565b50611ea06002611e9a615e7a565b01611657565b90565b611eab611de8565b50611eb4615ebb565b5090565b611ec0611b96565b50611ed2611ecd5f6115e8565b611bb7565b611edb5f611be1565b5b80611ef7611ef1611eec5f6115e8565b6103e2565b916103e2565b1015611f3757611f3290611f2d611f1b6001611f145f85906115f5565b5001611657565b611f288591849092611c83565b611ca3565b611bfd565b611edc565b5090565b91611f6592611f48611dc2565b50611f5d611f54615e9e565b8290849161601e565b9190916160e9565b600190565b611f72611de8565b50611f7c5f611be1565b5b80611f98611f92611f8d5f6115e8565b6103e2565b916103e2565b1015611ff457611fb45f611fad8184906115f5565b5001611636565b611fc6611fc0846104c3565b916104c3565b14611fd957611fd490611bfd565b611f7d565b611ff19150611fea6001915f6115f5565b5001611657565b90565b5050611fff5f611be1565b90565b61200a611de8565b50612013611b96565b5061201c615ebb565b91909190565b5f90565b90565b61203d61203861204292612026565b610ed7565b6107b4565b90565b61204d612022565b506120586012612029565b90565b60401c90565b60ff1690565b6120736120789161205b565b612061565b90565b6120859054612067565b90565b67ffffffffffffffff1690565b6120a16120a69161161d565b612088565b90565b6120b39054612095565b90565b6120ca6120c56120cf92611bde565b610ed7565b611910565b90565b90565b6120e96120e46120ee926120d2565b610ed7565b611910565b90565b6120fa90610ef6565b90565b5f1b90565b9061211567ffffffffffffffff916120fd565b9181191691161790565b61213361212e61213892611910565b610ed7565b611910565b90565b90565b9061215361214e61215a9261211f565b61213b565b8254612102565b9055565b60401b90565b9061217868ff00000000000000009161215e565b9181191691161790565b61218b90610542565b90565b90565b906121a66121a16121ad92612182565b61218e565b8254612164565b9055565b6121ba906120d5565b9052565b91906121d1905f602085019401906121b1565b565b919390926121df6161c6565b946121f46121ee5f880161207b565b15610542565b946122005f88016120a9565b8061221361220d5f6120b6565b91611910565b148061234d575b9061222e61222860016120d5565b91611910565b1480612325575b612240909115610542565b9081612314575b506122d8576122709461226561225d60016120d5565b5f8a0161213e565b866122c6575b612761565b612278575b50565b612285905f809101612191565b60016122bd7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916122b4610312565b918291826121be565b0390a15f612275565b6122d360015f8a01612191565b61226b565b6122e0610312565b7ff92ee8a90000000000000000000000000000000000000000000000000000000081528061231060048201610af4565b0390fd5b61231f915015610542565b5f612247565b50612240612332306120f1565b3b61234561233f5f611be1565b916103e2565b149050612235565b508661221a565b61235d90610eda565b90565b61236990612354565b90565b9061238b73ffffffffffffffffffffffffffffffffffffffff916120fd565b9181191691161790565b61239e90612354565b90565b90565b906123b96123b46123c092612395565b6123a1565b825461236c565b9055565b90565b6123db6123d66123e0926123c4565b610ed7565b6103e2565b90565b9061240e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916120fd565b9181191691161790565b61242c612427612431926103e2565b610ed7565b6103e2565b90565b90565b9061244c61244761245392612418565b612434565b82546123e3565b9055565b6124636124689161161d565b610e89565b90565b6124759054612457565b90565b90505190612485826104cf565b565b906020828203126124a05761249d915f01612478565b90565b61031c565b90565b906124bd6124b86124c492611730565b6124a5565b825461236c565b9055565b90565b6124df6124da6124e4926124c8565b610ed7565b6103e2565b90565b6124fb6124f661250092611bde565b610ed7565b6104aa565b90565b61250c906124e7565b90565b5f7f496e76616c696420626173652061737365742061646472657373000000000000910152565b612543601a602092610333565b61254c8161250f565b0190565b6125659060208101905f818303910152612536565b90565b1561256f57565b612577610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806125a760048201612550565b0390fd5b5f7f496e697469616c697a6174696f6e206661696c65640000000000000000000000910152565b6125df6015602092610333565b6125e8816125ab565b0190565b6126019060208101905f8183039101526125d2565b90565b1561260b57565b612613610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612643600482016125ec565b0390fd5b61265190516103e2565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b612690612696919392936103e2565b926103e2565b82018092116126a157565b612654565b90565b6126bd6126b86126c2926126a6565b610ed7565b6103e2565b90565b5f7f496e76616c696420776569676874730000000000000000000000000000000000910152565b6126f9600f602092610333565b612702816126c5565b0190565b61271b9060208101905f8183039101526126ec565b90565b1561272557565b61272d610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061275d60048201612706565b0390fd5b6127e99395946127806127a49361279d9361277b33616208565b616233565b612788616249565b61279061626f565b612798616295565b612360565b60046123a4565b6127bf6127b8670de0b6b3a76400006123c7565b6001612437565b60206127d36127ce600461246b565b610f02565b631bf01e9b906127e1610312565b948592611c40565b825281806127f960048201610af4565b03915afa9081156129235761281e61286b92612870945f916128f5575b5060026124a8565b61283661282f64e8d4a510006124cb565b6003612437565b6128646128436002611636565b61285d6128576128525f612503565b6104c3565b916104c3565b1415612568565b84906167e4565b612604565b6128795f611be1565b6128825f611be1565b905b8161289f612899612894876103cf565b6103e2565b916103e2565b10156128d1576128c56128cb916128bf6128ba878690611c83565b612647565b90612681565b91611bfd565b90612884565b90506128f39192506128ed6128e76127106126a9565b916103e2565b1461271e565b565b612916915060203d811161291c575b61290e8183610846565b810190612487565b5f612816565b503d612904565b611c73565b90612935949392916121d3565b565b61293f616be0565b612947612949565b565b612951616ced565b565b61295b612937565b565b61296c612972919392936103e2565b926103e2565b9161297e8382026103e2565b92818404149015171561298d57565b612654565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6129cb6129d1916103e2565b916103e2565b9081156129dc570490565b612992565b6129f06129f6919392936103e2565b926103e2565b8203918211612a0157565b612654565b91612ac8612ac2612abd612a288594612a1d611de8565b508790869091612beb565b612a3187611dec565b96612a3b86611dec565b90612aa5612a9f612a9a612a93612a82612a7b612a6a612a63612a5d89611f6a565b9f611f6a565b9f8a61295d565b612a756127106126a9565b906129bf565b968861295d565b612a8d6127106126a9565b906129bf565b9a9361314d565b6103e2565b916103e2565b115f14612aea57612ab5916129e1565b955b9361314d565b6103e2565b916103e2565b105f14612adc57612ad891612681565b5b90565b612ae5916129e1565b612ad9565b612af391612681565b95612ab7565b612b0290610eda565b90565b612b0e90612af9565b90565b5f7f496e76616c6964206f7261636c65206164647265737300000000000000000000910152565b612b456016602092610333565b612b4e81612b11565b0190565b612b679060208101905f818303910152612b38565b90565b15612b7157565b612b79610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612ba960048201612b52565b0390fd5b612bb690610ef6565b90565b604090612be2612be99496959396612bd860608401985f85019061106a565b602083019061106a565b01906105bd565b565b90612bf4611de8565b50612c226020612c0c612c07600461246b565b610f02565b63bb3ba04c90612c1a610312565b938492611c40565b82528180612c3260048201610af4565b03915afa8015612da557612c4d915f91612d77575b50612b05565b91612c7b6020612c65612c60600461246b565b610f02565b63bb3ba04c90612c73610312565b938492611c40565b82528180612c8b60048201610af4565b03915afa8015612d7257602094612ccc612cd192612cf1945f91612d45575b50612cc5612cbf612cba5f612503565b6104c3565b916104c3565b1415612b6a565b612bad565b91612cfc63248391ff919496612ce5610312565b97889687958695611c40565b855260048501612bb9565b03915afa908115612d40575f91612d12575b5090565b612d33915060203d8111612d39575b612d2b8183610846565b810190611c55565b5f612d0e565b503d612d21565b611c73565b612d659150883d8111612d6b575b612d5d8183610846565b810190612487565b5f612caa565b503d612d53565b611c73565b612d98915060203d8111612d9e575b612d908183610846565b810190612487565b5f612c47565b503d612d86565b611c73565b90612dbc91612db7616d03565b612dbe565b565b90612dd191612dcc81616dd5565b616e45565b565b90612ddd91612daa565b565b5f90565b612df490612def616f83565b612e42565b90565b90565b612e0e612e09612e1392612df7565b6120fd565b610cba565b90565b612e3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc612dfa565b90565b50612e4b612e16565b90565b612e5e612e59612ddf565b612de3565b90565b612e6d612e729161161d565b612061565b90565b612e7f9054612e61565b90565b612e8a611dc2565b50612e9d5f612e97617001565b01612e75565b90565b606090565b90612eb7612eb28361090b565b61086f565b918252565b369037565b90612ee6612ece83612ea5565b92602080612edc869361090b565b9201910390612ebc565b565b90612ef282610d49565b811015612f03576020809102010190565b6115bb565b90612f12906104c3565b9052565b612f1e612ea0565b50612f30612f2b5f6115e8565b612ec1565b612f395f611be1565b5b80612f55612f4f612f4a5f6115e8565b6103e2565b916103e2565b1015612f9457612f8f90612f8a612f785f612f718185906115f5565b5001611636565b612f858591849092612ee8565b612f08565b611bfd565b612f3a565b5090565b612fb7612fbc91612fa7611de8565b505f612fb1615e7a565b0161173c565b611657565b90565b612fc7616be0565b612fcf612fd1565b565b612fe2612fdd5f612503565b617025565b565b612fec612fbf565b565b5f7f526562616c616e6365206e6f74206e6565646564000000000000000000000000910152565b6130226014602092610333565b61302b81612fee565b0190565b6130449060208101905f818303910152613015565b90565b1561304e57565b613056610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806130866004820161302f565b0390fd5b61309a613095613218565b613047565b6130a261713a565b565b6130ac611b96565b506130be6130b95f6115e8565b611bb7565b6130c75f611be1565b5b806130e36130dd6130d85f6115e8565b6103e2565b916103e2565b10156131235761311e9061311961310760026131005f85906115f5565b5001611657565b6131148591849092611c83565b611ca3565b611bfd565b6130c8565b5090565b61312f616be0565b613137613139565b565b6131416175ab565b565b61314b613127565b565b613155611de8565b5061315e614890565b90506131695f611be1565b5b8061318561317f61317a5f6115e8565b6103e2565b916103e2565b10156131dc576131a15f61319a8184906115f5565b5001611636565b6131b36131ad856104c3565b916104c3565b146131c6576131c190611bfd565b61316a565b6131d992506131d491611c83565b612647565b90565b5050506131e85f611be1565b90565b906131f582611390565b811015613206576020809102010190565b6115bb565b6132159051610542565b90565b613220611dc2565b5061324e6020613238613233600461246b565b610f02565b63ea233c0590613246610312565b938492611c40565b8252818061325e60048201610af4565b03915afa90811561333e575f91613310575b50613279614890565b919091906132865f611be1565b5b806132a261329c613297866103cf565b6103e2565b916103e2565b1015613308576132bb6132b68583906131eb565b61320b565b806132dc575b6132d3576132ce90611bfd565b613287565b50505050600190565b506132f06132eb848390611c83565b612647565b6133026132fc846103e2565b916103e2565b116132c1565b505050505f90565b613331915060203d8111613337575b6133298183610846565b810190611c55565b5f613270565b503d61331f565b611c73565b5f90565b61334f613343565b506133625f61335c6175b5565b01611636565b90565b61336e81610542565b0361337557565b5f80fd5b9050519061338682613365565b565b906020828203126133a15761339e915f01613379565b90565b61031c565b6133ae611b96565b506133bf6133ba613218565b613047565b6133d06133ca615ebb565b906175d9565b916133e26133dd5f6115e8565b611bb7565b906133ff6133ef856176cf565b6133f96003611657565b9061295d565b6134085f611be1565b5b8061342461341e613419896103cf565b6103e2565b916103e2565b101561355857859061343f61343a838390611c83565b612647565b61345161344b5f611be1565b916103e2565b11613466575b6134619150611bfd565b613409565b6134986134868261348061347b868690611c83565b612647565b906177d2565b6134938791849092611c83565b611ca3565b60206134c06134bb6134b65f6134af8187906115f5565b5001611636565b611c18565b611c24565b6323b872dd906134ff5f339361350a6134eb6134e66134de30611c30565b9a8a90611c83565b612647565b6134f3610312565b998a9788968795611c40565b855260048501612bb9565b03925af19182156135535761346192613527575b50869150613457565b6135479060203d811161354c575b61353f8183610846565b810190613388565b61351e565b503d613535565b611c73565b5061356591949293617852565b61356d617a27565b613575617ce2565b336135b56135a37fa95ad530009c6f929555e70a66aadbeae7231e45756c5b028ca77fbaa376e73e92611730565b926135ac610312565b91829182610459565b0390a290565b6135c3611a42565b506135d760046135d1615e7a565b01611b6b565b90565b5f7f4558504952454400000000000000000000000000000000000000000000000000910152565b61360e6007602092610333565b613617816135da565b0190565b6136309060208101905f818303910152613601565b90565b1561363a57565b613642610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806136726004820161361b565b0390fd5b906136a39796959493929161369e88613697613691426103e2565b916103e2565b1015613633565b6136a7565b9091565b906136bf979695949392916136ba617e06565b613c57565b90916136c9617eb2565b565b5f7f496e76616c696420746f6b656e20616464726573730000000000000000000000910152565b6136ff6015602092610333565b613708816136cb565b0190565b6137219060208101905f8183039101526136f2565b90565b1561372b57565b613733610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806137636004820161370c565b0390fd5b5f7f43616e6e6f742073776170207468652073616d6520746f6b656e000000000000910152565b61379b601a602092610333565b6137a481613767565b0190565b6137bd9060208101905f81830391015261378e565b90565b156137c757565b6137cf610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806137ff600482016137a8565b0390fd5b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b61383660208092610333565b61383f81613803565b0190565b6138589060208101905f81830391015261382a565b90565b1561386257565b61386a610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061389a60048201613843565b0390fd5b5f7f496e76616c696420726563656976657220616464726573730000000000000000910152565b6138d26018602092610333565b6138db8161389e565b0190565b6138f49060208101905f8183039101526138c5565b90565b156138fe57565b613906610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613936600482016138df565b0390fd5b5f7f546f6b656e207472616e73666572206661696c65640000000000000000000000910152565b61396e6015602092610333565b6139778161393a565b0190565b6139909060208101905f818303910152613961565b90565b1561399a57565b6139a2610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806139d26004820161397b565b0390fd5b5f7f496e73756666696369656e74204c697175696469747900000000000000000000910152565b613a0a6016602092610333565b613a13816139d6565b0190565b613a2c9060208101905f8183039101526139fd565b90565b15613a3657565b613a3e610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613a6e60048201613a17565b0390fd5b60207f68616e2030000000000000000000000000000000000000000000000000000000917f416d6f756e7420746f2073656e64206d757374206265206772656174657220745f8201520152565b613acc6025604092610333565b613ad581613a72565b0190565b613aee9060208101905f818303910152613abf565b90565b15613af857565b613b00610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613b3060048201613ad9565b0390fd5b60207f6d696e20616d6f756e7400000000000000000000000000000000000000000000917f416d6f756e74206f7574206d7573742062652067726561746572207468616e205f8201520152565b613b8e602a604092610333565b613b9781613b34565b0190565b613bb09060208101905f818303910152613b81565b90565b15613bba57565b613bc2610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613bf260048201613b9b565b0390fd5b916020613c17929493613c1060408201965f83019061106a565b01906105bd565b565b613c4e613c5594613c44606094989795613c3a608086019a5f87019061106a565b602085019061106a565b60408301906105bd565b01906105bd565b565b909193929495979650505081613c7d613c77613c725f612503565b6104c3565b916104c3565b141580613ef2575b613c8e90613724565b613cab82613ca4613c9e866104c3565b916104c3565b14156137c0565b613cc781613cc1613cbb5f611be1565b916103e2565b1161385b565b613cec86613ce5613cdf613cda5f612503565b6104c3565b916104c3565b14156138f7565b613cfd613cf883611c18565b611c24565b60206323b872dd913390613d2d5f613d1430611c30565b95613d3888613d21610312565b98899788968795611c40565b855260048501612bb9565b03925af18015613eed57613d53915f91613ebf575b50613993565b613d5f82848391612a06565b95613d85613d6c85613f5f565b613d7e613d788a6103e2565b916103e2565b1015613a2f565b613dd3613d9c613d9489617ecf565b9889906129e1565b95613db987613db3613dad5f611be1565b916103e2565b11613af1565b613dcc613dc688926103e2565b916103e2565b1015613bb3565b613de4613ddf85611c18565b611c24565b602063a9059cbb918390613e0b5f8a95613e16613dff610312565b97889687958694611c40565b845260048401613bf6565b03925af18015613eba57613e31915f91613e8c575b50613993565b613e39617a27565b613e41617ce2565b91929092613e8585613e737fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e4606295611730565b95613e7c610312565b94859485613c19565b0390a29190565b613ead915060203d8111613eb3575b613ea58183610846565b810190613388565b5f613e2b565b503d613e9b565b611c73565b613ee0915060203d8111613ee6575b613ed88183610846565b810190613388565b5f613d4d565b503d613ece565b611c73565b50613c8e83613f11613f0b613f065f612503565b6104c3565b916104c3565b14159050613c85565b90613f399594939291613f2b611de8565b613f33611de8565b90613676565b9091565b613f5a91613f49611dc2565b50613f52615e9e565b9190916160e9565b600190565b613f67611de8565b90613f715f611be1565b5b80613f8d613f87613f825f6115e8565b6103e2565b916103e2565b10156140625781613fbb613fb5613fb05f613fa98187906115f5565b5001611636565b6104c3565b916104c3565b14613fce57613fc990611bfd565b613f72565b506140199150613fe7613fe2602092611c18565b611c24565b6370a082319061400e613ff930611c30565b92614002610312565b95869485938493611c40565b835260048301611077565b03915afa90811561405d575f9161402f575b5090565b614050915060203d8111614056575b6140488183610846565b810190611c55565b5f61402b565b503d61403e565b611c73565b505090565b9061409093929161408b8461408461407e426103e2565b916103e2565b1015613633565b614093565b90565b906140a79392916140a2617e06565b6140b2565b906140b0617eb2565b565b906140c69392916140c1617ff5565b6144e3565b90565b5f7f496e76616c6964207265736572766573206c656e677468000000000000000000910152565b6140fd6017602092610333565b614106816140c9565b0190565b61411f9060208101905f8183039101526140f0565b90565b1561412957565b614131610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806141616004820161410a565b0390fd5b5f7f4e6f206173736574730000000000000000000000000000000000000000000000910152565b6141996009602092610333565b6141a281614165565b0190565b6141bb9060208101905f81830391015261418c565b90565b156141c557565b6141cd610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806141fd600482016141a6565b0390fd5b60207f6564000000000000000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c3a205472616e736665722066726f6d206661696c5f8201520152565b61425b6022604092610333565b61426481614201565b0190565b61427d9060208101905f81830391015261424e565b90565b1561428757565b61428f610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806142bf60048201614268565b0390fd5b60207f2030000000000000000000000000000000000000000000000000000000000000917f546f74616c2076616c7565206d7573742062652067726561746572207468616e5f8201520152565b61431d6022604092610333565b614326816142c3565b0190565b61433f9060208101905f818303910152614310565b90565b1561434957565b614351610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806143816004820161432a565b0390fd5b60207f7468616e20300000000000000000000000000000000000000000000000000000917f546f74616c206c6971756964697479206d7573742062652067726561746572205f8201520152565b6143df6026604092610333565b6143e881614385565b0190565b6144019060208101905f8183039101526143d2565b90565b1561440b57565b614413610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614443600482016143ec565b0390fd5b5f7f4d696e7420717479206973203000000000000000000000000000000000000000910152565b61447b600d602092610333565b61448481614447565b0190565b61449d9060208101905f81830391015261446e565b90565b156144a757565b6144af610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806144df60048201614488565b0390fd5b90939250506144f0611e84565b916144fa5f611be1565b9361452f614506611cb1565b61452961452361451e6145185f6115e8565b936103cf565b6103e2565b916103e2565b14614122565b61455361453b5f6115e8565b61454d6145475f611be1565b916103e2565b116141be565b61455c5f611be1565b945b8561457961457361456e5f6115e8565b6103e2565b916103e2565b10156146c75783906145975f614590818a906115f5565b5001611636565b906020886145ac6145a785611c18565b611c24565b6145e85f6323b872dd6145f36145d46145cf33976145c930611c30565b9c611c83565b612647565b6145dc610312565b9a8b9788968795611c40565b855260048501612bb9565b03925af19283156146c25761466a93614613915f91614694575b50614280565b61461b611de8565b508161463861463261462d6002611636565b6104c3565b916104c3565b146146705761465d61466392614657614652898c90611c83565b612647565b9061803f565b90612681565b955b611bfd565b9461455e565b61468e9150614688614683878a90611c83565b612647565b90612681565b95614665565b6146b5915060203d81116146bb575b6146ad8183610846565b810190613388565b5f61460d565b503d6146a3565b611c73565b9194509291506146e9816146e36146dd5f611be1565b916103e2565b11614342565b6146f1611de8565b50816147056146ff5f611be1565b916103e2565b145f146147a257614721915061471b6003611657565b9061295d565b905b614740826147396147335f611be1565b916103e2565b14156144a0565b61474b818390617852565b614753617a27565b61475b617ce2565b819061479c61478a7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c92611730565b92614793610312565b918291826105ca565b0390a290565b6147fb6147ea614801936147e56147b7615ebb565b50946147d5866147cf6147c95f611be1565b916103e2565b11614404565b6147df6003611657565b9061295d565b61295d565b916147f56003611657565b9061295d565b906129bf565b90614723565b9061481a9291614815611de8565b614067565b90565b606090565b67ffffffffffffffff811161483a5760208091020190565b610819565b9061485161484c83614822565b61086f565b918252565b369037565b906148806148688361483f565b926020806148768693614822565b9201910390614856565b565b9061488c90610542565b9052565b61489861481d565b506148a1611b96565b506148aa615ebb565b6148b35f6115e8565b916148bd8361485b565b916148c784611bb7565b946148d15f611be1565b5b806148e56148df886103e2565b916103e2565b10156149cd5761498e90614920614919614908614903878590611c83565b612647565b6149136127106126a9565b9061295d565b86906129bf565b61493760016149305f85906115f5565b5001611657565b908061494b614945846103e2565b916103e2565b115f14614993576149719161495f916129e1565b61496c8a91849092611c83565b611ca3565b614988600161498388918490926131eb565b614882565b5b611bfd565b6148d2565b6149a0906149b2926129e1565b6149ad8a91849092611c83565b611ca3565b6149c85f6149c388918490926131eb565b614882565b614989565b50935050509190565b5f7f496e76616c696420617373657420696e64657800000000000000000000000000910152565b614a0a6013602092610333565b614a13816149d6565b0190565b614a2c9060208101905f8183039101526149fd565b90565b15614a3657565b614a3e610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614a6e60048201614a17565b0390fd5b614ab5614aba91614a81611de8565b50614a8a615ebb565b9050614ab082614aaa614aa4614a9f856103cf565b6103e2565b916103e2565b10614a2f565b611c83565b612647565b90565b90614ac790611730565b5f5260205260405f2090565b614b0191614af7614afc92614ae6611de8565b506001614af1615e7a565b01614abd565b61173c565b611657565b90565b90614b2d939291614b2884614b21614b1b426103e2565b916103e2565b1015613633565b614b30565b90565b90614b44939291614b3f617e06565b614b4f565b90614b4d617eb2565b565b90614b63939291614b5e617ff5565b615213565b90565b5f7f496e76616c696420616464726573730000000000000000000000000000000000910152565b614b9a600f602092610333565b614ba381614b66565b0190565b614bbc9060208101905f818303910152614b8d565b90565b15614bc657565b614bce610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614bfe60048201614ba7565b0390fd5b5f7f5368617265206d7573742062652067726561746572207468616e203000000000910152565b614c36601c602092610333565b614c3f81614c02565b0190565b614c589060208101905f818303910152614c29565b90565b15614c6257565b614c6a610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614c9a60048201614c43565b0390fd5b916020614cbf929493614cb860408201965f83019061106a565b019061106a565b565b60207f616e636500000000000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c3a20496e73756666696369656e7420416c6c6f775f8201520152565b614d1b6024604092610333565b614d2481614cc1565b0190565b614d3d9060208101905f818303910152614d0e565b90565b15614d4757565b614d4f610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614d7f60048201614d28565b0390fd5b5f7f5472616e736665722046726f6d204661696c6564000000000000000000000000910152565b614db76014602092610333565b614dc081614d83565b0190565b614dd99060208101905f818303910152614daa565b90565b15614de357565b614deb610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614e1b60048201614dc4565b0390fd5b5f7f4e6f206c69717569646974790000000000000000000000000000000000000000910152565b614e53600c602092610333565b614e5c81614e1f565b0190565b614e759060208101905f818303910152614e46565b90565b15614e7f57565b614e87610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614eb760048201614e60565b0390fd5b5f7f496e76616c696420747265617375727920616464726573730000000000000000910152565b614eef6018602092610333565b614ef881614ebb565b0190565b614f119060208101905f818303910152614ee2565b90565b15614f1b57565b614f23610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614f5360048201614efc565b0390fd5b60207f2042616c616e6365000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c3a20496e73756666696369656e742041737365745f8201520152565b614fb16028604092610333565b614fba81614f57565b0190565b614fd39060208101905f818303910152614fa4565b90565b15614fdd57565b614fe5610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061501560048201614fbe565b0390fd5b60207f6400000000000000000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c3a20466565205472616e73666572204661696c655f8201520152565b6150736021604092610333565b61507c81615019565b0190565b6150959060208101905f818303910152615066565b90565b1561509f57565b6150a7610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806150d760048201615080565b0390fd5b5f7f4173736574207472616e73666572206661696c65640000000000000000000000910152565b61510f6015602092610333565b615118816150db565b0190565b6151319060208101905f818303910152615102565b90565b1561513b57565b615143610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806151736004820161511c565b0390fd5b5f7f496e73756666696369656e742042414c554e49206c6971756964697479000000910152565b6151ab601d602092610333565b6151b481615177565b0190565b6151cd9060208101905f81830391015261519e565b90565b156151d757565b6151df610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061520f600482016151b8565b0390fd5b90919392505061523e8361523761523161522c5f612503565b6104c3565b916104c3565b1415614bbf565b61525a8161525461524e5f611be1565b916103e2565b11614c5b565b61527361526e61526930611c30565b611c18565b611c24565b602063dd62ed3e9133906152a161528930611c30565b946152ac615295610312565b96879586948594611c40565b845260048401614c9e565b03915afa8015615789576152db915f9161575b575b506152d46152ce846103e2565b916103e2565b1015614d40565b6152f46152ef6152ea30611c30565b611c18565b611c24565b60206323b872dd9133906153245f61530b30611c30565b9561532f88615318610312565b98899788968795611c40565b855260048501612bb9565b03925af180156157565761534a915f91615728575b50614ddc565b61536d615355611e84565b6153676153615f611be1565b916103e2565b11614e78565b61539a602061538461537f600461246b565b610f02565b633b19e84a90615392610312565b938492611c40565b825281806153aa60048201610af4565b03915afa908115615723575f916156f5575b50906153e3826153dc6153d66153d15f612503565b6104c3565b916104c3565b1415614f14565b6153ec5f611be1565b5b806154086154026153fd5f6115e8565b6103e2565b916103e2565b10156156595761542961542461541d846157a4565b8390611c83565b612647565b90615487602061545561545061544b5f6154448188906115f5565b5001611636565b611c18565b611c24565b6370a082319061547c61546730611c30565b92615470610312565b95869485938493611c40565b835260048301611077565b03915afa8015615654576154b6915f91615626575b506154af6154a9856103e2565b916103e2565b1015614fd6565b6154ca6154c283617ecf565b9283906129e1565b9160206154f36154ee6154e95f6154e28188906115f5565b5001611636565b611c18565b611c24565b9163a9059cbb926155185f89939561552361550c610312565b97889687958694611c40565b845260048401613bf6565b03925af180156156215761553e915f916155f3575b50615098565b602061556661556161555c5f6155558187906115f5565b5001611636565b611c18565b611c24565b9263a9059cbb9361558b5f8a939661559661557f610312565b98899687958694611c40565b845260048401613bf6565b03925af19182156155ee576155bb926155b6915f916155c0575b50615134565b611bfd565b6153ed565b6155e1915060203d81116155e7575b6155d98183610846565b810190613388565b5f6155b0565b503d6155cf565b611c73565b615614915060203d811161561a575b61560c8183610846565b810190613388565b5f615538565b503d615602565b611c73565b615647915060203d811161564d575b61563f8183610846565b810190611c55565b5f61549c565b503d615635565b611c73565b509192905061568b61567261566d30611c30565b612f98565b61568461567e856103e2565b916103e2565b10156151d0565b61569e61569730611c30565b8390618062565b6156a6617a27565b6156ae617ce2565b81906156ef6156dd7f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436492611730565b926156e6610312565b918291826105ca565b0390a290565b615716915060203d811161571c575b61570e8183610846565b810190612487565b5f6153bc565b503d615704565b611c73565b615749915060203d811161574f575b6157418183610846565b810190613388565b5f615344565b503d615737565b611c73565b61577c915060203d8111615782575b6157748183610846565b810190611c55565b5f6152c1565b503d61576a565b611c73565b906157a1929161579c611de8565b614b04565b90565b6157c0906157b0611b96565b506157ba81617ecf565b906129e1565b906157d26157cd5f6115e8565b611bb7565b6157db5f611be1565b5b806157f76157f16157ec5f6115e8565b6103e2565b916103e2565b10156158e05761585b90602061582961582461581f5f6158188187906115f5565b5001611636565b611c18565b611c24565b6370a082319061585061583b30611c30565b92615844610312565b96879485938493611c40565b835260048301611077565b03915afa9182156158db576158916158836158a8946158a3935f916158ad575b50889061295d565b61588b611e84565b906129bf565b61589e8591849092611c83565b611ca3565b611bfd565b6157dc565b6158ce915060203d81116158d4575b6158c68183610846565b810190611c55565b5f61587b565b503d6158bc565b611c73565b5090915090565b6158f090610eda565b90565b6158fc906158e7565b90565b61590890610ef6565b90565b615914816107b4565b0361591b57565b5f80fd5b9050519061592c8261590b565b565b9060208282031261594757615944915f0161591f565b90565b61031c565b61596061595b615965926107b4565b610ed7565b6103e2565b90565b61597c61597761598192612026565b610ed7565b6103e2565b90565b90565b61599b6159966159a092615984565b610ed7565b6103e2565b90565b6159ac906103e2565b604d81116159ba57600a0a90565b612654565b6159c7611de8565b506159fd60206159e76159e26159dd6002611636565b6158f3565b6158ff565b63313ce567906159f5610312565b938492611c40565b82528180615a0d60048201610af4565b03915afa8015615af857615a2f615a3e91615a43935f91615aca575b5061594c565b615a396012615968565b6129e1565b6159a3565b615a4b611e84565b80615a5e615a585f611be1565b916103e2565b14615abc57615a6b615ebb565b509182615a80615a7a5f611be1565b916103e2565b14615aad57615a95615aa591615aaa9461295d565b615a9f6001611657565b9061295d565b6129bf565b90565b505050615ab95f611be1565b90565b5050615ac75f611be1565b90565b615aeb915060203d8111615af1575b615ae38183610846565b81019061592e565b5f615a29565b503d615ad9565b611c73565b615b0e90615b09616be0565b615b10565b565b80615b2b615b25615b205f612503565b6104c3565b916104c3565b14615b3b57615b3990617025565b565b615b7e615b475f612503565b615b4f610312565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b615b8b90615afd565b565b615b9690611910565b9052565b9190615bad905f60208501940190615b8d565b565b91929490938195615bbe6161c6565b94615bca5f870161207b565b8015615c7b575b615c3f57615c0496615bfb95615be98a5f8a0161213e565b615bf660015f8a01612191565b615ca0565b5f809101612191565b615c3a7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291615c31610312565b91829182615b9a565b0390a1565b615c47610312565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280615c7760048201610af4565b0390fd5b50615c875f87016120a9565b615c99615c938a611910565b91611910565b1015615bd1565b615ce6929396955093615cc2615cdf92615d2b96615cbd33616208565b616233565b615cca616249565b615cd261626f565b615cda616295565b612360565b60046123a4565b615d01615cfa670de0b6b3a76400006123c7565b6001612437565b6020615d15615d10600461246b565b610f02565b631bf01e9b90615d23610312565b948592611c40565b82528180615d3b60048201610af4565b03915afa908115615e6557615d60615dad92615db2945f91615e37575b5060026124a8565b615d78615d7164e8d4a510006124cb565b6003612437565b615da6615d856002611636565b615d9f615d99615d945f612503565b6104c3565b916104c3565b1415612568565b84906167e4565b612604565b615dbb5f611be1565b615dc45f611be1565b905b81615de1615ddb615dd6876103cf565b6103e2565b916103e2565b1015615e1357615e07615e0d91615e01615dfc878690611c83565b612647565b90612681565b91611bfd565b90615dc6565b9050615e35919250615e2f615e296127106126a9565b916103e2565b1461271e565b565b615e58915060203d8111615e5e575b615e508183610846565b810190612487565b5f615d58565b503d615e46565b611c73565b90615e789594939291615baf565b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b615ea6613343565b503390565b91615eb992916001926180e1565b565b615ec3611de8565b615ecb611b96565b50615ed55f6115e8565b90615edf82611bb7565b92615ee95f611be1565b915b82615efe615ef8866103e2565b916103e2565b1015615fd657615f1a5f615f138186906115f5565b5001611636565b615f2381613f5f565b9081615f37615f315f611be1565b916103e2565b14615fca5791615f999183615fa094615f61615f5b615f566002611636565b6104c3565b916104c3565b145f14615fa65750615f7f90615f7a8991889092611c83565b611ca3565b5b615f93615f8e888790611c83565b612647565b90612681565b925b611bfd565b91615eeb565b615fc591615fb39161803f565b615fc08991889092611c83565b611ca3565b615f80565b505091615fa090615f9b565b915091509190565b60409061600761600e9496959396615ffd60608401985f85019061106a565b60208301906105bd565b01906105bd565b565b9061601b91036103e2565b90565b92919261602c818390614ad3565b908161606061605a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103e2565b916103e2565b0361606d575b5050509050565b8161608061607a876103e2565b916103e2565b106160a65761609d9394616095919392616010565b905f926180e1565b805f8080616066565b506160e5849291926160b6610312565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501615fde565b0390fd5b91826161056160ff6160fa5f612503565b6104c3565b916104c3565b1461617f578161612561611f61611a5f612503565b6104c3565b916104c3565b146161385761613692919091618249565b565b61617b6161445f612503565b61614c610312565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b6161c261618b5f612503565b616193610312565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6161fb906161f66183ef565b6161fd565b565b616206906184c7565b565b616211906161ea565b565b90616225916162206183ef565b616227565b565b906162319161868c565b565b9061623d91616213565b565b6162476183ef565b565b61625161623f565b565b61625b6183ef565b616263616265565b565b61626d6186c7565b565b616277616253565b565b6162816183ef565b61628961628b565b565b6162936186f9565b565b61629d616279565b565b5f7f496e76616c696420726562616c616e6365722061646472657373000000000000910152565b6162d3601a602092610333565b6162dc8161629f565b0190565b6162f59060208101905f8183039101526162c6565b90565b156162ff57565b616307610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280616337600482016162e0565b0390fd5b60207f6368000000000000000000000000000000000000000000000000000000000000917f41737365747320616e642077656967687473206c656e677468206d69736d61745f8201520152565b6163956022604092610333565b61639e8161633b565b0190565b6163b79060208101905f818303910152616388565b90565b156163c157565b6163c9610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806163f9600482016163a2565b0390fd5b61640890600461295d565b90565b1b90565b919060086164499102916164437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8461640b565b9261640b565b9181191691161790565b919061646961646461647193612418565b612434565b90835461640f565b9055565b61648791616481611de8565b91616453565b565b5f60036164b59282808201556164a28360018301616475565b6164af8360028301616475565b01616475565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b905f036164f5576164f390616489565b565b6164b7565b5b818110616506575050565b806165135f6004936164e3565b016164fb565b9091828110616528575b505050565b61654661654061653a616551956163fd565b926163fd565b926115ec565b9182019101906164fa565b5f8080616523565b906801000000000000000081116165825781616577616580936115e8565b90828155616519565b565b610819565b5f61659191616559565b565b905f036165a5576165a390616587565b565b6164b7565b6165b490516104c3565b90565b5f7f496e76616c696420617373657420616464726573730000000000000000000000910152565b6165eb6015602092610333565b6165f4816165b7565b0190565b61660d9060208101905f8183039101526165de565b90565b1561661757565b61661f610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061664f600482016165f8565b0390fd5b5f7f496e76616c696420776569676874000000000000000000000000000000000000910152565b616687600e602092610333565b61669081616653565b0190565b6166a99060208101905f81830391015261667a565b90565b156166b357565b6166bb610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806166eb60048201616694565b0390fd5b90565b6166fc608061086f565b90565b5f5260205f2090565b5490565b61671581616708565b82101561672f576167276004916166ff565b910201905f90565b6115bb565b9061679160606003616797946167575f82016167515f88016165aa565b906124a8565b6167706001820161676a60208801612647565b90612437565b6167896002820161678360408801612647565b90612437565b019201612647565b90612437565b565b91906167aa576167a891616734565b565b6164b7565b90815491680100000000000000008310156167df57826167d79160016167dd9501815561670c565b90616799565b565b610819565b9190916167ef611dc2565b5061681d6020616807616802600461246b565b610f02565b63cff49d6890616815610312565b938492611c40565b8252818061682d60048201610af4565b03915afa908115616bdb575f91616bad575b509261686e6020616858616853600461246b565b610f02565b63cff49d6890616866610312565b938492611c40565b8252818061687e60048201610af4565b03915afa8015616ba8576168b5915f91616b7a575b506168ae6168a86168a35f612503565b6104c3565b916104c3565b14156162f8565b6168e16168c183610d49565b6168db6168d56168d0856103cf565b6103e2565b916103e2565b146163ba565b6168eb5f80616593565b6168f45f611be1565b5b8061691061690a61690586610d49565b6103e2565b916103e2565b1015616b705761694d61692c616927858490612ee8565b6165aa565b61694661694061693b5f612503565b6104c3565b916104c3565b1415616610565b61697b61696361695e848490611c83565b612647565b61697561696f5f611be1565b916103e2565b116166ac565b6169fe6169875f6166ef565b61699a616995868590612ee8565b6165aa565b906169f96169f06169b46169af888890611c83565b612647565b6169eb6169e25f6169dd5f946169d46169cb6166f2565b9a5f8c01612f08565b60208a01611ca3565b611be1565b60408701611ca3565b611be1565b60608401611ca3565b6167af565b616a19616a14616a0f858490612ee8565b6165aa565b611c18565b616a2281611c24565b602063dd62ed3e91616a3330611c30565b90616a508a94616a5b616a44610312565b96879586948594611c40565b845260048401614c9e565b03915afa908115616b6b575f91616b3d575b50616a80616a7a5f611be1565b916103e2565b14616a95575b50616a9090611bfd565b6168f5565b616a9e90611c24565b90602063095ea7b3928790616ae65f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96616af1616ada610312565b98899687958694611c40565b845260048401613bf6565b03925af1918215616b3857616a9092616b0c575b5090616a86565b616b2c9060203d8111616b31575b616b248183610846565b810190613388565b616b05565b503d616b1a565b611c73565b616b5e915060203d8111616b64575b616b568183610846565b810190611c55565b5f616a6d565b503d616b4c565b611c73565b5050509050600190565b616b9b915060203d8111616ba1575b616b938183610846565b810190612487565b5f616893565b503d616b89565b611c73565b616bce915060203d8111616bd4575b616bc68183610846565b810190612487565b5f61683f565b503d616bbc565b611c73565b616be8613347565b616c01616bfb616bf6615e9e565b6104c3565b916104c3565b03616c0857565b616c4a616c13615e9e565b616c1b610312565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b616c56618703565b616c5e616c96565b565b90616c6c60ff916120fd565b9181191691161790565b90616c8b616c86616c9292612182565b61218e565b8254616c60565b9055565b616caa616ca1617001565b5f809101616c76565b616cb2615e9e565b616ce87f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa91616cdf610312565b91829182611077565b0390a1565b616cf5616c4e565b565b616d0090610ef6565b90565b616d0c30616cf7565b616d3e616d387f00000000000000000000000000000000000000000000000000000000000000006104c3565b916104c3565b148015616d88575b616d4c57565b616d54610312565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280616d8460048201610af4565b0390fd5b50616d91618756565b616dc3616dbd7f00000000000000000000000000000000000000000000000000000000000000006104c3565b916104c3565b1415616d46565b50616dd3616be0565b565b616dde90616dca565b565b616de990610eda565b90565b616df590616de0565b90565b616e0190610ef6565b90565b616e0d81610cba565b03616e1457565b5f80fd5b90505190616e2582616e04565b565b90602082820312616e4057616e3d915f01616e18565b90565b61031c565b9190616e736020616e5d616e5886616dec565b616df8565b6352d1902d90616e6b610312565b938492611c40565b82528180616e8360048201610af4565b03915afa80915f92616f53575b50155f14616ee4575050906001616ea557505b565b616ee090616eb1610312565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b9283616eff616ef9616ef4612e16565b610cba565b91610cba565b03616f1457616f0f929350618780565b616ea3565b616f4f84616f20610312565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610cca565b0390fd5b616f7591925060203d8111616f7c575b616f6d8183610846565b810190616e27565b905f616e90565b503d616f63565b616f8c30616cf7565b616fbe616fb87f00000000000000000000000000000000000000000000000000000000000000006104c3565b916104c3565b03616fc557565b616fcd610312565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280616ffd60048201610af4565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b61702d6175b5565b61704561703b5f8301611636565b915f8491016124a8565b906170796170737f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611730565b91611730565b91617082610312565b8061708c81610af4565b0390a3565b61709a90610eda565b90565b6170a690617091565b90565b6170b290610ef6565b90565b5f9103126170bf57565b61031c565b9260c09498979561711d61711261712793617104617131976170f66171389d9860e08c01908c5f818403910152610409565b908a820360208c0152610d80565b9088820360408a0152610409565b9a60608701906105bd565b608085019061106a565b60a083019061106a565b019061106a565b565b617167602061715161714c600461246b565b610f02565b63cff49d689061715f610312565b938492611c40565b8252818061717760048201610af4565b03915afa90811561753c575f9161750e575b5090617193612f16565b9061719c611eb8565b916171a65f611be1565b5b806171c26171bc6171b75f6115e8565b6103e2565b916103e2565b1015617379576171ee6171e96171e45f6171dd8186906115f5565b5001611636565b611c18565b611c24565b602063dd62ed3e916171ff30611c30565b9061721c8994617227617210610312565b96879586948594611c40565b845260048401614c9e565b03915afa908115617374575f91617346575b5061726c6172667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103e2565b916103e2565b10617280575b61727b90611bfd565b6171a7565b6172a66172a161729c5f6172958186906115f5565b5001611636565b611c18565b611c24565b90602063095ea7b39287906172ee5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff966172f96172e2610312565b98899687958694611c40565b845260048401613bf6565b03925af19182156173415761727b92617315575b509050617272565b6173359060203d811161733a575b61732d8183610846565b810190613388565b61730d565b503d617323565b611c73565b617367915060203d811161736d575b61735f8183610846565b810190611c55565b5f617239565b503d617355565b611c73565b50919092617385611cb1565b6173b2602061739c617397600461246b565b610f02565b63ea233c05906173aa610312565b938492611c40565b825281806173c260048201610af4565b03915afa908115617509576173e8916173e3915f916174db575b509361709d565b6170a9565b63f0bf77148594936173f930611c30565b9161740330611c30565b9561740e6002611636565b853b156174d6575f9761743595899561744094617429610312565b9c8d9b8c9a8b99611c40565b8952600489016170c4565b03925af180156174d1576174a5575b50617458617a27565b617460617ce2565b336174a061748e7f279b343370f587af7fb675ae7c8578e9c8abcc373236ad02c501a4771fe7a7b892611730565b92617497610312565b91829182610dd0565b0390a2565b6174c4905f3d81116174ca575b6174bc8183610846565b8101906170b5565b5f61744f565b503d6174b2565b611c73565b611c3c565b6174fc915060203d8111617502575b6174f48183610846565b810190611c55565b5f6173dc565b503d6174ea565b611c73565b61752f915060203d8111617535575b6175278183610846565b810190612487565b5f617189565b503d61751d565b611c73565b617549617ff5565b617551617553565b565b61756861755e617001565b5f60019101616c76565b617570615e9e565b6175a67f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589161759d610312565b91829182611077565b0390a1565b6175b3617541565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b91906175e3611b96565b506175f56175f05f6115e8565b611bb7565b6175fe5f611be1565b5b8061761a61761461760f5f6115e8565b6103e2565b916103e2565b10156176c75761768a9061765961764887617642600161763b5f87906115f5565b5001611657565b9061295d565b6176536127106126a9565b906129bf565b61766c617667868490611c83565b612647565b61767e617678836103e2565b916103e2565b1061768f575b50611bfd565b6175ff565b6176af6176c1916176a96176a4888690611c83565b612647565b906129e1565b6176bc8591849092611c83565b611ca3565b5f617684565b509192505090565b6176d7611de8565b906176e15f611be1565b915b826176fe6176f86176f35f6115e8565b6103e2565b916103e2565b10156177305761772461772a9161771e617719858790611c83565b612647565b90612681565b92611bfd565b916176e3565b91505090565b5f7f496e76616c696420746f6b656e20616d6f756e7420746f206164640000000000910152565b61776a601b602092610333565b61777381617736565b0190565b61778c9060208101905f81830391015261775d565b90565b1561779657565b61779e610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806177ce60048201617777565b0390fd5b6177da611de8565b506177f15f6177ea8184906115f5565b5001611636565b61780c6178066178016002611636565b6104c3565b916104c3565b1461784e579061782a5f61782361782f94826115f5565b5001611636565b618809565b61784b8161784561783f5f611be1565b916103e2565b1161778f565b90565b5090565b8061786d6178676178625f612503565b6104c3565b916104c3565b14617889576178879161787f5f612503565b919091618249565b565b6178cc6178955f612503565b61789d610312565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b90565b6178e76178e26178ec926178d0565b610ed7565b6103e2565b90565b5f7f556e646572666c6f772064656372656d656e74696e6720736c69707061676500910152565b617923601f602092610333565b61792c816178ef565b0190565b6179459060208101905f818303910152617916565b90565b1561794f57565b617957610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061798760048201617930565b0390fd5b5f7f4f766572666c6f7720696e6372656d656e74696e6720736c6970706167650000910152565b6179bf601e602092610333565b6179c88161798b565b0190565b6179e19060208101905f8183039101526179b2565b90565b156179eb57565b6179f3610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280617a23600482016179cc565b0390fd5b617a2f614890565b90617a3a60646178d3565b91617a45600a615987565b91617a4f5f611be1565b5b80617a6b617a65617a605f6115e8565b6103e2565b916103e2565b1015617cdb57617b8190617a8c6002617a855f84906115f5565b5001611657565b617a9f617a9a868490611c83565b612647565b617ab1617aab896103e2565b916103e2565b1115617cbd57617aca617ac58584906131eb565b61320b565b5f14617ba357617b4b90617b1b617af4617aed617ae8898790611c83565b612647565b8a906129bf565b617b156002617b045f88906115f5565b500191617b1083611657565b612681565b90612437565b617b44617b3e617b386002617b315f88906115f5565b5001611657565b926103e2565b916103e2565b10156179e4565b5b617b636002617b5c5f84906115f5565b5001611657565b617b75617b6f876103e2565b916103e2565b11617b86575b5b611bfd565b617a50565b617b9e856002617b975f85906115f5565b5001612437565b617b7b565b617bba6002617bb35f85906115f5565b5001611657565b617be8617be2617bdd617bd6617bd18a8890611c83565b612647565b8b906129bf565b6103e2565b916103e2565b115f14617c7057617c6a90617c3a617c13617c0c617c07898790611c83565b612647565b8a906129bf565b617c346002617c235f88906115f5565b500191617c2f83611657565b6129e1565b90612437565b617c63617c5d617c576002617c505f88906115f5565b5001611657565b926103e2565b916103e2565b1115617948565b5b617b4c565b50617cb8617c91617c8a617c85878590611c83565b612647565b88906129bf565b617cb26002617ca15f86906115f5565b500191617cad83611657565b612681565b90612437565b617c6b565b50617cd6856002617ccf5f85906115f5565b5001612437565b617b7c565b5050505050565b617ceb5f611be1565b5b80617d07617d01617cfc5f6115e8565b6103e2565b916103e2565b1015617dd757617d6b906020617d39617d34617d2f5f617d288187906115f5565b5001611636565b611c18565b611c24565b6370a0823190617d60617d4b30611c30565b92617d54610312565b96879485938493611c40565b835260048301611077565b03915afa918215617dd257617d9f92617d9a915f91617da4575b506003617d935f85906115f5565b5001612437565b611bfd565b617cec565b617dc5915060203d8111617dcb575b617dbd8183610846565b810190611c55565b5f617d85565b503d617db3565b611c73565b50565b90565b617df1617dec617df692617dda565b610ed7565b6103e2565b90565b617e036002617ddd565b90565b617e0e61882b565b617e195f8201611657565b617e32617e2c617e27617df9565b6103e2565b916103e2565b14617e4d57617e4b905f617e44617df9565b9101612437565b565b617e55610312565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280617e8560048201610af4565b0390fd5b617e9d617e98617ea2926120d2565b610ed7565b6103e2565b90565b617eaf6001617e89565b90565b617ecd617ebd61882b565b5f617ec6617ea5565b9101612437565b565b617ed7611de8565b50617f056020617eef617eea600461246b565b610f02565b6385462d6f90617efd610312565b938492611c40565b82528180617f1560048201610af4565b03915afa908115617ff0575f91617fc2575b5090617f566020617f40617f3b600461246b565b610f02565b634f4608a290617f4e610312565b938492611c40565b82528180617f6660048201610af4565b03915afa928315617fbd57617f8c93617f87925f91617f8f575b509261295d565b6129bf565b90565b617fb0915060203d8111617fb6575b617fa88183610846565b810190611c55565b5f617f80565b503d617f9e565b611c73565b617fe3915060203d8111617fe9575b617fdb8183610846565b810190611c55565b5f617f27565b503d617fd1565b611c73565b617ffd612e82565b61800357565b61800b610312565b7fd93c06650000000000000000000000000000000000000000000000000000000081528061803b60048201610af4565b0390fd5b9061805f9161804c611de8565b50906180586002611636565b9091612beb565b90565b908161807e6180786180735f612503565b6104c3565b916104c3565b1461809a5761809891906180915f612503565b9091618249565b565b6180dd6180a65f612503565b6180ae610312565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b90926180eb615e7a565b826181066181006180fb5f612503565b6104c3565b916104c3565b146181f4578461812661812061811b5f612503565b6104c3565b916104c3565b146181ad5761814d9061814861814160018793018690614abd565b879061173c565b612437565b618157575b505050565b9190916181a261819061818a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593611730565b93611730565b93618199610312565b918291826105ca565b0390a35f8080618152565b6181f06181b95f612503565b6181c1610312565b9182917f94280d6200000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b6182376182005f612503565b618208610312565b9182917fe602df0500000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b9061824691016103e2565b90565b919091618254615e7a565b8161826f6182696182645f612503565b6104c3565b916104c3565b145f1461835a5761829683618290600284019161828b83611657565b612681565b90612437565b5b836182b26182ac6182a75f612503565b6104c3565b916104c3565b145f1461832b576182da906182d46002859201916182cf83611657565b616010565b90612437565b5b91909161832661831461830e7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93611730565b93611730565b9361831d610312565b918291826105ca565b0390a3565b6183559061834f6183405f869301879061173c565b9161834a83611657565b61823b565b90612437565b6182db565b61836f61836a5f8301849061173c565b611657565b8061838261837c866103e2565b916103e2565b106183ac576183956183a7918590616010565b6183a25f8401859061173c565b612437565b618297565b916183eb915091926183bc610312565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501615fde565b0390fd5b6184006183fa61884f565b15610542565b61840657565b61840e610312565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061843e60048201610af4565b0390fd5b6184539061844e6183ef565b618455565b565b8061847061846a6184655f612503565b6104c3565b916104c3565b146184805761847e90617025565b565b6184c361848c5f612503565b618494610312565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b6184d090618442565b565b906184e4916184df6183ef565b618668565b565b601f602091010490565b5b8181106184fc575050565b806185095f600193616475565b016184f1565b9190601f811161851f575b505050565b61852b61855093611aa7565b906020618537846184e6565b83019310618558575b618549906184e6565b01906184f0565b5f808061851a565b915061854981929050618540565b90618576905f1990600802610e85565b191690565b8161858591618566565b906002021790565b906185978161032f565b9067ffffffffffffffff8211618657576185bb826185b58554611a74565b8561850f565b602090601f83116001146185ef579180916185de935f926185e3575b505061857b565b90555b565b90915001515f806185d7565b601f198316916185fe85611aa7565b925f5b81811061863f57509160029391856001969410618625575b505050020190556185e1565b618635910151601f841690618566565b90555f8080618619565b91936020600181928787015181550195019201618601565b610819565b906186669161858d565b565b600461868a92618683618679615e7a565b936003850161865c565b910161865c565b565b90618696916184d2565b565b6186a06183ef565b6186a86186aa565b565b6186c56186b561882b565b5f6186be617ea5565b9101612437565b565b6186cf618698565b565b6186d96183ef565b6186e16186e3565b565b6186f76186ee617001565b5f809101616c76565b565b6187016186d1565b565b61871461870e612e82565b15610542565b61871a57565b618722610312565b7f8dfc202b0000000000000000000000000000000000000000000000000000000081528061875260048201610af4565b0390fd5b61875e613343565b506187795f61877361876e612e16565b61886d565b01611636565b90565b5190565b9061878a82618870565b816187b57fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91611730565b906187be610312565b806187c881610af4565b0390a26187d48161877c565b6187e66187e05f611be1565b916103e2565b115f146187fa576187f691618980565b505b565b50506188046188e5565b6187f8565b61882891618815611de8565b506188206002611636565b919091612beb565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b618857611dc2565b5061886a5f6188646161c6565b0161207b565b90565b90565b803b61888461887e5f611be1565b916103e2565b146188a6576188a4905f61889e618899612e16565b61886d565b016124a8565b565b6188e1906188b2610312565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b346188f86188f25f611be1565b916103e2565b116188ff57565b618907610312565b7fb398979f0000000000000000000000000000000000000000000000000000000081528061893760048201610af4565b0390fd5b606090565b9061895261894d83610bcf565b61086f565b918252565b3d5f14618972576189673d618940565b903d5f602084013e5b565b61897a61893b565b90618970565b5f806189ac9361898e61893b565b508390602081019051915af4906189a3618957565b909190916189af565b90565b906189c3906189bc61893b565b5015610542565b5f146189cf5750618a53565b6189d88261877c565b6189ea6189e45f611be1565b916103e2565b1480618a38575b6189f9575090565b618a3490618a05610312565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b50803b618a4d618a475f611be1565b916103e2565b146189f1565b618a5c8161877c565b618a6e618a685f611be1565b916103e2565b115f14618a7d57805190602001fd5b618a85610312565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280618ab560048201610af4565b0390fdfea2646970667358221220c9917cfc9bfdd74b7291619426fceb93e7bfca689514990ecb531a91c62de1db64736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x3E JUMPI PUSH2 0x11 PUSH2 0x4D JUMP JUMPDEST PUSH2 0x19 PUSH2 0x43 JUMP JUMPDEST PUSH2 0x8AEF PUSH2 0x102 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x6D14 ADD MSTORE DUP2 DUP2 PUSH2 0x6D99 ADD MSTORE PUSH2 0x6F94 ADD MSTORE PUSH2 0x8AEF SWAP1 RETURN JUMPDEST PUSH2 0x49 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH2 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5F PUSH2 0x61 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69 PUSH2 0x6B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x73 PUSH2 0x75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7D PUSH2 0x7F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x87 PUSH2 0x89 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x91 PUSH2 0x93 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9B PUSH2 0x9D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA5 PUSH2 0xA7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xAF PUSH2 0xF3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD3 PUSH2 0xCE PUSH2 0xD8 SWAP3 PUSH2 0xB1 JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH2 0xB1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE4 SWAP1 PUSH2 0xBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF0 SWAP1 PUSH2 0xDB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC ADDRESS PUSH2 0xE7 JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x1A3E JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0x12899068 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x2EE JUMPI DUP1 PUSH4 0x22ACB867 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x250AA683 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x2DA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x34DE9B8D EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x2CB JUMPI DUP1 PUSH4 0x43C2E2F5 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x4AA06652 EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x7D7C2A1C EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x7FF1C179 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x89B3179B EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x8A77C8DC EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x8DE30F30 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x9908FC8B EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xB2B55D70 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xB3BF9D32 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0xB7110E13 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0xC2EE3A08 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xCF8FA764 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xD14EF46D EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0xD66BD524 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xE63697C8 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0xE64EBDD2 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x226 JUMPI PUSH4 0xFB33A6C0 SUB PUSH2 0xE JUMPI PUSH2 0x1A04 JUMP JUMPDEST PUSH2 0x18DD JUMP JUMPDEST PUSH2 0x18A8 JUMP JUMPDEST PUSH2 0x1873 JUMP JUMPDEST PUSH2 0x183D JUMP JUMPDEST PUSH2 0x17CD JUMP JUMPDEST PUSH2 0x176B JUMP JUMPDEST PUSH2 0x16F7 JUMP JUMPDEST PUSH2 0x1586 JUMP JUMPDEST PUSH2 0x1533 JUMP JUMPDEST PUSH2 0x14B0 JUMP JUMPDEST PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x135A JUMP JUMPDEST PUSH2 0x12D2 JUMP JUMPDEST PUSH2 0x129D JUMP JUMPDEST PUSH2 0x11EF JUMP JUMPDEST PUSH2 0x11B2 JUMP JUMPDEST PUSH2 0x10F6 JUMP JUMPDEST PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x108C JUMP JUMPDEST PUSH2 0x1035 JUMP JUMPDEST PUSH2 0x1000 JUMP JUMPDEST PUSH2 0xFCD JUMP JUMPDEST PUSH2 0xF98 JUMP JUMPDEST PUSH2 0xF65 JUMP JUMPDEST PUSH2 0xF30 JUMP JUMPDEST PUSH2 0xE52 JUMP JUMPDEST PUSH2 0xE1D JUMP JUMPDEST PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH2 0xCDF JUMP JUMPDEST PUSH2 0xC90 JUMP JUMPDEST PUSH2 0xB99 JUMP JUMPDEST PUSH2 0xB63 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xAF9 JUMP JUMPDEST PUSH2 0x7DC JUMP JUMPDEST PUSH2 0x77E JUMP JUMPDEST PUSH2 0x723 JUMP JUMPDEST PUSH2 0x6ED JUMP JUMPDEST PUSH2 0x67E JUMP JUMPDEST PUSH2 0x649 JUMP JUMPDEST PUSH2 0x614 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST PUSH2 0x569 JUMP JUMPDEST PUSH2 0x471 JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x32A JUMPI JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x370 PUSH2 0x379 PUSH1 0x20 SWAP4 PUSH2 0x37E SWAP4 PUSH2 0x367 DUP2 PUSH2 0x32F JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x333 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x33C JUMP JUMPDEST PUSH2 0x347 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x397 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x351 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3CA JUMPI PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x3C6 PUSH2 0x3B5 PUSH2 0x1B77 JUMP JUMPDEST PUSH2 0x3BD PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x382 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EE SWAP1 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x3FF DUP2 PUSH1 0x20 SWAP4 PUSH2 0x3E5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x426 PUSH2 0x420 PUSH2 0x419 DUP5 PUSH2 0x3CF JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x3D3 JUMP JUMPDEST SWAP3 PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x436 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x44F PUSH2 0x449 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x3F2 JUMP JUMPDEST SWAP5 PUSH2 0x403 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x429 JUMP JUMPDEST PUSH2 0x46E SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x4A1 JUMPI PUSH2 0x481 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x49D PUSH2 0x48C PUSH2 0x1CB1 JUMP JUMPDEST PUSH2 0x494 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4CC SWAP1 PUSH2 0x4AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4D8 DUP2 PUSH2 0x4C3 JUMP JUMPDEST SUB PUSH2 0x4DF JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x4F0 DUP3 PUSH2 0x4CF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4FB DUP2 PUSH2 0x3E2 JUMP JUMPDEST SUB PUSH2 0x502 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x513 DUP3 PUSH2 0x4F2 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x53D JUMPI DUP1 PUSH2 0x531 PUSH2 0x53A SWAP3 PUSH0 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x550 SWAP1 PUSH2 0x542 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x567 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x547 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x59A JUMPI PUSH2 0x596 PUSH2 0x585 PUSH2 0x57F CALLDATASIZE PUSH1 0x4 PUSH2 0x515 JUMP JUMPDEST SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x5B8 JUMPI PUSH2 0x5B5 SWAP2 PUSH0 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0x5C6 SWAP1 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5DD SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x60F JUMPI PUSH2 0x60B PUSH2 0x5FA PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x602 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x644 JUMPI PUSH2 0x624 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x640 PUSH2 0x62F PUSH2 0x1E84 JUMP JUMPDEST PUSH2 0x637 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x679 JUMPI PUSH2 0x659 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x675 PUSH2 0x664 PUSH2 0x1EA3 JUMP JUMPDEST PUSH2 0x66C PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x6AE JUMPI PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x6AA PUSH2 0x699 PUSH2 0x1EB8 JUMP JUMPDEST PUSH2 0x6A1 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x6E8 JUMPI PUSH2 0x6E5 PUSH2 0x6CE DUP5 PUSH0 DUP6 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH2 0x6DC DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x71E JUMPI PUSH2 0x71A PUSH2 0x709 PUSH2 0x703 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B3 JUMP JUMPDEST SWAP2 PUSH2 0x1F3B JUMP JUMPDEST PUSH2 0x711 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x753 JUMPI PUSH2 0x74F PUSH2 0x73E PUSH2 0x739 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x1F6A JUMP JUMPDEST PUSH2 0x746 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP2 PUSH2 0x77B SWAP3 PUSH2 0x76E PUSH1 0x40 DUP3 ADD SWAP4 PUSH0 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x7AF JUMPI PUSH2 0x78E CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x796 PUSH2 0x2002 JUMP JUMPDEST SWAP1 PUSH2 0x7AB PUSH2 0x7A2 PUSH2 0x312 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x758 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7C3 SWAP1 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x7DA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7BA JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x80C JUMPI PUSH2 0x7EC CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x808 PUSH2 0x7F7 PUSH2 0x2045 JUMP JUMPDEST PUSH2 0x7FF PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7C7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x850 SWAP1 PUSH2 0x347 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x86A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 PUSH2 0x882 PUSH2 0x87B PUSH2 0x312 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x846 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x8A2 JUMPI PUSH2 0x89E PUSH1 0x20 SWAP2 PUSH2 0x347 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x8C7 PUSH2 0x8C2 DUP3 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x8E3 JUMPI PUSH2 0x8E1 SWAP3 PUSH2 0x8A7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x815 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x906 JUMPI DUP2 PUSH1 0x20 PUSH2 0x903 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x8B2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x923 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x941 PUSH2 0x93C DUP3 PUSH2 0x90B JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x97E JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x965 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x973 DUP5 DUP7 PUSH2 0x4E3 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x958 JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x9A1 JUMPI DUP2 PUSH1 0x20 PUSH2 0x99E SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x92C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x9BE JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x9D8 PUSH2 0x9D3 DUP3 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0xA15 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x9FC JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0xA0A DUP5 DUP7 PUSH2 0x506 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x9EF JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xA38 JUMPI DUP2 PUSH1 0x20 PUSH2 0xA35 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x9C3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0xAEF JUMPI PUSH0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xAEA JUMPI DUP2 PUSH2 0xA68 SWAP2 DUP6 ADD PUSH2 0x8E8 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xAE5 JUMPI DUP3 PUSH2 0xA89 SWAP2 DUP4 ADD PUSH2 0x8E8 JUMP JUMPDEST SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xAE0 JUMPI DUP4 PUSH2 0xAAA SWAP2 DUP5 ADD PUSH2 0x983 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xADB JUMPI PUSH2 0xACF DUP2 PUSH2 0xAD8 SWAP4 DUP7 ADD PUSH2 0xA1A JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB2B JUMPI PUSH2 0xB15 PUSH2 0xB0C CALLDATASIZE PUSH1 0x4 PUSH2 0xA3D JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x2928 JUMP JUMPDEST PUSH2 0xB1D PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xB27 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xB5E JUMPI PUSH2 0xB40 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xB48 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0xB50 PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xB5A DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xB94 JUMPI PUSH2 0xB90 PUSH2 0xB7F PUSH2 0xB79 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B3 JUMP JUMPDEST SWAP2 PUSH2 0x2A06 JUMP JUMPDEST PUSH2 0xB87 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xBCA JUMPI PUSH2 0xBC6 PUSH2 0xBB5 PUSH2 0xBAF CALLDATASIZE PUSH1 0x4 PUSH2 0x6B3 JUMP JUMPDEST SWAP2 PUSH2 0x2BEB JUMP JUMPDEST PUSH2 0xBBD PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBED JUMPI PUSH2 0xBE9 PUSH1 0x20 SWAP2 PUSH2 0x347 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xC07 PUSH2 0xC02 DUP3 PUSH2 0xBCF JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xC23 JUMPI PUSH2 0xC21 SWAP3 PUSH2 0x8A7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x815 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xC46 JUMPI DUP2 PUSH1 0x20 PUSH2 0xC43 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xBF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0xC8B JUMPI PUSH2 0xC64 DUP4 PUSH0 DUP4 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC86 JUMPI PUSH2 0xC83 SWAP3 ADD PUSH2 0xC28 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0xCA4 PUSH2 0xC9E CALLDATASIZE PUSH1 0x4 PUSH2 0xC4B JUMP JUMPDEST SWAP1 PUSH2 0x2DD3 JUMP JUMPDEST PUSH2 0xCAC PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xCB6 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC6 SWAP1 PUSH2 0xCBA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xCDD SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xCBD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xD0F JUMPI PUSH2 0xCEF CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xD0B PUSH2 0xCFA PUSH2 0x2E4E JUMP JUMPDEST PUSH2 0xD02 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xCCA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xD44 JUMPI PUSH2 0xD24 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xD40 PUSH2 0xD2F PUSH2 0x2E82 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xD65 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xD76 DUP2 PUSH1 0x20 SWAP4 PUSH2 0xD5C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD9D PUSH2 0xD97 PUSH2 0xD90 DUP5 PUSH2 0xD49 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xD4D JUMP JUMPDEST SWAP3 PUSH2 0xD56 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xDAD JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0xDC6 PUSH2 0xDC0 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0xD69 JUMP JUMPDEST SWAP5 PUSH2 0xD7A JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0xDA0 JUMP JUMPDEST PUSH2 0xDE5 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xD80 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE18 JUMPI PUSH2 0xDF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xE14 PUSH2 0xE03 PUSH2 0x2F16 JUMP JUMPDEST PUSH2 0xE0B PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xDD0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xE4D JUMPI PUSH2 0xE49 PUSH2 0xE38 PUSH2 0xE33 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x2F98 JUMP JUMPDEST PUSH2 0xE40 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xE80 JUMPI PUSH2 0xE62 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xE6A PUSH2 0x2FE4 JUMP JUMPDEST PUSH2 0xE72 PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xE7C DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xEB2 SWAP1 PUSH1 0x8 PUSH2 0xEB7 SWAP4 MUL PUSH2 0xE85 JUMP JUMPDEST PUSH2 0xE89 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xEC5 SWAP2 SLOAD PUSH2 0xEA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xED4 PUSH1 0x4 PUSH0 SWAP1 PUSH2 0xEBA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEEE PUSH2 0xEE9 PUSH2 0xEF3 SWAP3 PUSH2 0x4AA JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEFF SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF0B SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF17 SWAP1 PUSH2 0xF02 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF2E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xF0E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xF60 JUMPI PUSH2 0xF40 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xF5C PUSH2 0xF4B PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0xF53 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xF1B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xF93 JUMPI PUSH2 0xF75 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xF7D PUSH2 0x308A JUMP JUMPDEST PUSH2 0xF85 PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xF8F DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xFC8 JUMPI PUSH2 0xFA8 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xFC4 PUSH2 0xFB3 PUSH2 0x30A4 JUMP JUMPDEST PUSH2 0xFBB PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xFFB JUMPI PUSH2 0xFDD CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xFE5 PUSH2 0x3143 JUMP JUMPDEST PUSH2 0xFED PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xFF7 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1030 JUMPI PUSH2 0x102C PUSH2 0x101B PUSH2 0x1016 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x314D JUMP JUMPDEST PUSH2 0x1023 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1065 JUMPI PUSH2 0x1045 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x1061 PUSH2 0x1050 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x1058 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH2 0x1073 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x108A SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x10BC JUMPI PUSH2 0x109C CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x10B8 PUSH2 0x10A7 PUSH2 0x3347 JUMP JUMPDEST PUSH2 0x10AF PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x10F1 JUMPI PUSH2 0x10ED PUSH2 0x10DC PUSH2 0x10D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x33A6 JUMP JUMPDEST PUSH2 0x10E4 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1126 JUMPI PUSH2 0x1106 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x1122 PUSH2 0x1111 PUSH2 0x35BB JUMP JUMPDEST PUSH2 0x1119 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x382 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0x118A JUMPI PUSH2 0x1143 DUP4 PUSH0 DUP5 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP3 PUSH2 0x1151 DUP2 PUSH1 0x20 DUP6 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP3 PUSH2 0x115F DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x506 JUMP JUMPDEST SWAP3 PUSH2 0x1187 PUSH2 0x1170 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x506 JUMP JUMPDEST SWAP4 PUSH2 0x117E DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x11B0 SWAP3 SWAP5 SWAP4 PUSH2 0x11A9 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x11EA JUMPI PUSH2 0x11D1 PUSH2 0x11C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x112B JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x3F1A JUMP JUMPDEST SWAP1 PUSH2 0x11E6 PUSH2 0x11DD PUSH2 0x312 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x118F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1220 JUMPI PUSH2 0x121C PUSH2 0x120B PUSH2 0x1205 CALLDATASIZE PUSH1 0x4 PUSH2 0x515 JUMP JUMPDEST SWAP1 PUSH2 0x3F3D JUMP JUMPDEST PUSH2 0x1213 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 PUSH2 0x1237 PUSH2 0x1232 DUP4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x126D PUSH1 0x5 PUSH2 0x1225 JUMP JUMPDEST SWAP1 PUSH2 0x127A PUSH1 0x20 DUP4 ADD PUSH2 0x123C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1284 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x128F PUSH2 0x127C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x129A PUSH2 0x1287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x12CD JUMPI PUSH2 0x12AD CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x12C9 PUSH2 0x12B8 PUSH2 0x1292 JUMP JUMPDEST PUSH2 0x12C0 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x382 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1302 JUMPI PUSH2 0x12FE PUSH2 0x12ED PUSH2 0x12E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x3F5F JUMP JUMPDEST PUSH2 0x12F5 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x1355 JUMPI PUSH2 0x131F DUP4 PUSH0 DUP5 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1350 JUMPI PUSH2 0x1344 DUP2 PUSH2 0x134D SWAP4 DUP7 ADD PUSH2 0xA1A JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x138B JUMPI PUSH2 0x1387 PUSH2 0x1376 PUSH2 0x1370 CALLDATASIZE PUSH1 0x4 PUSH2 0x1307 JUMP JUMPDEST SWAP2 PUSH2 0x4807 JUMP JUMPDEST PUSH2 0x137E PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x13AC SWAP1 PUSH2 0x542 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x13BD DUP2 PUSH1 0x20 SWAP4 PUSH2 0x13A3 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x13E4 PUSH2 0x13DE PUSH2 0x13D7 DUP5 PUSH2 0x1390 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x1394 JUMP JUMPDEST SWAP3 PUSH2 0x139D JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x13F4 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x140D PUSH2 0x1407 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x13B0 JUMP JUMPDEST SWAP5 PUSH2 0x13C1 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x13E7 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1431 PUSH2 0x143F SWAP4 PUSH1 0x40 DUP5 ADD SWAP1 DUP5 DUP3 SUB PUSH0 DUP7 ADD MSTORE PUSH2 0x13C7 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1473 JUMPI PUSH2 0x1452 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x145A PUSH2 0x4890 JUMP JUMPDEST SWAP1 PUSH2 0x146F PUSH2 0x1466 PUSH2 0x312 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1417 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x148B SWAP1 PUSH1 0x8 PUSH2 0x1490 SWAP4 MUL PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x1478 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x149E SWAP2 SLOAD PUSH2 0x147B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14AD PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x1493 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x14E0 JUMPI PUSH2 0x14C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x14DC PUSH2 0x14CB PUSH2 0x14A1 JUMP JUMPDEST PUSH2 0x14D3 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x150E SWAP1 PUSH1 0x8 PUSH2 0x1513 SWAP4 MUL PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x14E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1521 SWAP2 SLOAD PUSH2 0x14FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1530 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x1516 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1563 JUMPI PUSH2 0x1543 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x155F PUSH2 0x154E PUSH2 0x1524 JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1581 JUMPI PUSH2 0x157E SWAP2 PUSH0 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x15B6 JUMPI PUSH2 0x15B2 PUSH2 0x15A1 PUSH2 0x159C CALLDATASIZE PUSH1 0x4 PUSH2 0x1568 JUMP JUMPDEST PUSH2 0x4A72 JUMP JUMPDEST PUSH2 0x15A9 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x15FE DUP2 PUSH2 0x15E8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x1618 JUMPI PUSH2 0x1610 PUSH1 0x4 SWAP2 PUSH2 0x15EC JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x162E PUSH2 0x1633 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x14E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1640 SWAP1 SLOAD PUSH2 0x1622 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x164F PUSH2 0x1654 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x1478 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1661 SWAP1 SLOAD PUSH2 0x1643 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 PUSH2 0x166F DUP3 PUSH2 0x15E8 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x16B5 JUMPI PUSH2 0x167F SWAP2 PUSH2 0x15F5 JUMP JUMPDEST POP SWAP1 PUSH2 0x168C PUSH0 DUP4 ADD PUSH2 0x1636 JUMP JUMPDEST SWAP2 PUSH2 0x1699 PUSH1 0x1 DUP3 ADD PUSH2 0x1657 JUMP JUMPDEST SWAP2 PUSH2 0x16B2 PUSH1 0x3 PUSH2 0x16AB PUSH1 0x2 DUP6 ADD PUSH2 0x1657 JUMP JUMPDEST SWAP4 ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x16EE PUSH2 0x16F5 SWAP5 PUSH2 0x16E4 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x16DA PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x172B JUMPI PUSH2 0x1727 PUSH2 0x1712 PUSH2 0x170D CALLDATASIZE PUSH1 0x4 PUSH2 0x1568 JUMP JUMPDEST PUSH2 0x1664 JUMP JUMPDEST SWAP1 PUSH2 0x171E SWAP5 SWAP3 SWAP5 PUSH2 0x312 JUMP JUMPDEST SWAP5 DUP6 SWAP5 DUP6 PUSH2 0x16B9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH2 0x1739 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1746 SWAP1 PUSH2 0x1730 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1768 SWAP1 PUSH2 0x1763 PUSH1 0x5 SWAP2 PUSH0 SWAP3 PUSH2 0x173C JUMP JUMPDEST PUSH2 0x1493 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x179B JUMPI PUSH2 0x1797 PUSH2 0x1786 PUSH2 0x1781 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x1752 JUMP JUMPDEST PUSH2 0x178E PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x17C8 JUMPI DUP1 PUSH2 0x17BC PUSH2 0x17C5 SWAP3 PUSH0 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x17FE JUMPI PUSH2 0x17FA PUSH2 0x17E9 PUSH2 0x17E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x17A0 JUMP JUMPDEST SWAP1 PUSH2 0x4AD3 JUMP JUMPDEST PUSH2 0x17F1 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x1838 JUMPI PUSH2 0x1835 PUSH2 0x181E DUP5 PUSH0 DUP6 ADD PUSH2 0x506 JUMP JUMPDEST SWAP4 PUSH2 0x182C DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x186E JUMPI PUSH2 0x186A PUSH2 0x1859 PUSH2 0x1853 CALLDATASIZE PUSH1 0x4 PUSH2 0x1803 JUMP JUMPDEST SWAP2 PUSH2 0x578E JUMP JUMPDEST PUSH2 0x1861 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x18A3 JUMPI PUSH2 0x189F PUSH2 0x188E PUSH2 0x1889 CALLDATASIZE PUSH1 0x4 PUSH2 0x1568 JUMP JUMPDEST PUSH2 0x57A4 JUMP JUMPDEST PUSH2 0x1896 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x18D8 JUMPI PUSH2 0x18B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x18D4 PUSH2 0x18C3 PUSH2 0x59BF JUMP JUMPDEST PUSH2 0x18CB PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x190B JUMPI PUSH2 0x18F5 PUSH2 0x18F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x5B82 JUMP JUMPDEST PUSH2 0x18FD PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0x1907 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1926 DUP2 PUSH2 0x1910 JUMP JUMPDEST SUB PUSH2 0x192D JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x193E DUP3 PUSH2 0x191D JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0x19FF JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19FA JUMPI DUP4 PUSH2 0x196B SWAP2 DUP5 ADD PUSH2 0x8E8 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19F5 JUMPI DUP2 PUSH2 0x198C SWAP2 DUP6 ADD PUSH2 0x8E8 JUMP JUMPDEST SWAP3 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19F0 JUMPI DUP3 PUSH2 0x19AD SWAP2 DUP4 ADD PUSH2 0x983 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19EB JUMPI PUSH2 0x19D1 DUP5 PUSH2 0x19E8 SWAP3 DUP6 ADD PUSH2 0xA1A JUMP JUMPDEST SWAP4 PUSH2 0x19DF DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x1931 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x1A39 JUMPI PUSH2 0x1A23 PUSH2 0x1A17 CALLDATASIZE PUSH1 0x4 PUSH2 0x1940 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x5E6A JUMP JUMPDEST PUSH2 0x1A2B PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0x1A35 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x1A94 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1A8F JUMPI JUMP JUMPDEST PUSH2 0x1A47 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1A84 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x1ACA PUSH2 0x1AC3 DUP4 PUSH2 0x1A74 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x1A9E JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x1B21 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1AE5 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1AF2 SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x1AA7 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x1B09 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1AE0 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x1AF6 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1AE0 JUMP JUMPDEST SWAP1 PUSH2 0x1B46 SWAP2 PUSH2 0x1AB0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1B69 PUSH2 0x1B62 SWAP3 PUSH2 0x1B59 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x1B3C JUMP JUMPDEST SUB DUP4 PUSH2 0x846 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B74 SWAP1 PUSH2 0x1B49 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B7F PUSH2 0x1A42 JUMP JUMPDEST POP PUSH2 0x1B93 PUSH1 0x3 PUSH2 0x1B8D PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x1B6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1BAD PUSH2 0x1BA8 DUP4 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x1BDC PUSH2 0x1BC4 DUP4 PUSH2 0x1B9B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x1BD2 DUP7 SWAP4 PUSH2 0x9A6 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x1BB2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1BF5 PUSH2 0x1BF0 PUSH2 0x1BFA SWAP3 PUSH2 0x1BDE JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1C09 SWAP2 ADD PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C15 SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C21 SWAP1 PUSH2 0x1C0C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C2D SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C39 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1C53 DUP3 PUSH2 0x4F2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1C6E JUMPI PUSH2 0x1C6B SWAP2 PUSH0 ADD PUSH2 0x1C46 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0x1C7B PUSH2 0x312 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x1C8D DUP3 PUSH2 0x3CF JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1C9E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST SWAP1 PUSH2 0x1CAD SWAP1 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1CB9 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x1CCB PUSH2 0x1CC6 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 PUSH2 0x1CD5 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1CF1 PUSH2 0x1CEB PUSH2 0x1CE6 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x1DBF JUMPI PUSH2 0x1D55 SWAP1 PUSH1 0x20 PUSH2 0x1D23 PUSH2 0x1D1E PUSH2 0x1D19 PUSH0 PUSH2 0x1D12 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1D4A PUSH2 0x1D35 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x1D3E PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1DBA JUMPI PUSH2 0x1D87 SWAP3 PUSH2 0x1D82 SWAP2 PUSH0 SWAP2 PUSH2 0x1D8C JUMPI JUMPDEST POP PUSH2 0x1D7D DUP7 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x1CD6 JUMP JUMPDEST PUSH2 0x1DAD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1DB3 JUMPI JUMPDEST PUSH2 0x1DA5 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x1D6F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D9B JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1DE3 SWAP2 PUSH2 0x1DD2 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x1DDB PUSH2 0x5E9E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x5EAB JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1DF4 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x1DFE PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1E1A PUSH2 0x1E14 PUSH2 0x1E0F PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x1E76 JUMPI PUSH2 0x1E36 PUSH0 PUSH2 0x1E2F DUP2 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1E48 PUSH2 0x1E42 DUP5 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x1E5B JUMPI PUSH2 0x1E56 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x1DFF JUMP JUMPDEST PUSH2 0x1E73 SWAP2 POP PUSH2 0x1E6C PUSH1 0x2 SWAP2 PUSH0 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP PUSH2 0x1E81 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E8C PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x1EA0 PUSH1 0x2 PUSH2 0x1E9A PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1EAB PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x1EB4 PUSH2 0x5EBB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1EC0 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x1ED2 PUSH2 0x1ECD PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x1EDB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1EF7 PUSH2 0x1EF1 PUSH2 0x1EEC PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x1F37 JUMPI PUSH2 0x1F32 SWAP1 PUSH2 0x1F2D PUSH2 0x1F1B PUSH1 0x1 PUSH2 0x1F14 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x1F28 DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x1EDC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x1F65 SWAP3 PUSH2 0x1F48 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x1F5D PUSH2 0x1F54 PUSH2 0x5E9E JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x601E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x60E9 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x1F72 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x1F7C PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1F98 PUSH2 0x1F92 PUSH2 0x1F8D PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x1FF4 JUMPI PUSH2 0x1FB4 PUSH0 PUSH2 0x1FAD DUP2 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1FC6 PUSH2 0x1FC0 DUP5 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x1FD9 JUMPI PUSH2 0x1FD4 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x1F7D JUMP JUMPDEST PUSH2 0x1FF1 SWAP2 POP PUSH2 0x1FEA PUSH1 0x1 SWAP2 PUSH0 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP PUSH2 0x1FFF PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x200A PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x2013 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x201C PUSH2 0x5EBB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x203D PUSH2 0x2038 PUSH2 0x2042 SWAP3 PUSH2 0x2026 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x7B4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x204D PUSH2 0x2022 JUMP JUMPDEST POP PUSH2 0x2058 PUSH1 0x12 PUSH2 0x2029 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2073 PUSH2 0x2078 SWAP2 PUSH2 0x205B JUMP JUMPDEST PUSH2 0x2061 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2085 SWAP1 SLOAD PUSH2 0x2067 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x20A1 PUSH2 0x20A6 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x2088 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20B3 SWAP1 SLOAD PUSH2 0x2095 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20CA PUSH2 0x20C5 PUSH2 0x20CF SWAP3 PUSH2 0x1BDE JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x1910 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20E9 PUSH2 0x20E4 PUSH2 0x20EE SWAP3 PUSH2 0x20D2 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x1910 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20FA SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2115 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x20FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2133 PUSH2 0x212E PUSH2 0x2138 SWAP3 PUSH2 0x1910 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x1910 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2153 PUSH2 0x214E PUSH2 0x215A SWAP3 PUSH2 0x211F JUMP JUMPDEST PUSH2 0x213B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2102 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2178 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x215E JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x218B SWAP1 PUSH2 0x542 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x21A6 PUSH2 0x21A1 PUSH2 0x21AD SWAP3 PUSH2 0x2182 JUMP JUMPDEST PUSH2 0x218E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2164 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x21BA SWAP1 PUSH2 0x20D5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x21D1 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x21B1 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 PUSH2 0x21DF PUSH2 0x61C6 JUMP JUMPDEST SWAP5 PUSH2 0x21F4 PUSH2 0x21EE PUSH0 DUP9 ADD PUSH2 0x207B JUMP JUMPDEST ISZERO PUSH2 0x542 JUMP JUMPDEST SWAP5 PUSH2 0x2200 PUSH0 DUP9 ADD PUSH2 0x20A9 JUMP JUMPDEST DUP1 PUSH2 0x2213 PUSH2 0x220D PUSH0 PUSH2 0x20B6 JUMP JUMPDEST SWAP2 PUSH2 0x1910 JUMP JUMPDEST EQ DUP1 PUSH2 0x234D JUMPI JUMPDEST SWAP1 PUSH2 0x222E PUSH2 0x2228 PUSH1 0x1 PUSH2 0x20D5 JUMP JUMPDEST SWAP2 PUSH2 0x1910 JUMP JUMPDEST EQ DUP1 PUSH2 0x2325 JUMPI JUMPDEST PUSH2 0x2240 SWAP1 SWAP2 ISZERO PUSH2 0x542 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x2314 JUMPI JUMPDEST POP PUSH2 0x22D8 JUMPI PUSH2 0x2270 SWAP5 PUSH2 0x2265 PUSH2 0x225D PUSH1 0x1 PUSH2 0x20D5 JUMP JUMPDEST PUSH0 DUP11 ADD PUSH2 0x213E JUMP JUMPDEST DUP7 PUSH2 0x22C6 JUMPI JUMPDEST PUSH2 0x2761 JUMP JUMPDEST PUSH2 0x2278 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x2285 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x2191 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x22BD PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x22B4 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x21BE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x2275 JUMP JUMPDEST PUSH2 0x22D3 PUSH1 0x1 PUSH0 DUP11 ADD PUSH2 0x2191 JUMP JUMPDEST PUSH2 0x226B JUMP JUMPDEST PUSH2 0x22E0 PUSH2 0x312 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2310 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x231F SWAP2 POP ISZERO PUSH2 0x542 JUMP JUMPDEST PUSH0 PUSH2 0x2247 JUMP JUMPDEST POP PUSH2 0x2240 PUSH2 0x2332 ADDRESS PUSH2 0x20F1 JUMP JUMPDEST EXTCODESIZE PUSH2 0x2345 PUSH2 0x233F PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x2235 JUMP JUMPDEST POP DUP7 PUSH2 0x221A JUMP JUMPDEST PUSH2 0x235D SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2369 SWAP1 PUSH2 0x2354 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x238B PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x20FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x239E SWAP1 PUSH2 0x2354 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x23B9 PUSH2 0x23B4 PUSH2 0x23C0 SWAP3 PUSH2 0x2395 JUMP JUMPDEST PUSH2 0x23A1 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x236C JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23DB PUSH2 0x23D6 PUSH2 0x23E0 SWAP3 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x240E PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x20FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x242C PUSH2 0x2427 PUSH2 0x2431 SWAP3 PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x244C PUSH2 0x2447 PUSH2 0x2453 SWAP3 PUSH2 0x2418 JUMP JUMPDEST PUSH2 0x2434 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x23E3 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2463 PUSH2 0x2468 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0xE89 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2475 SWAP1 SLOAD PUSH2 0x2457 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x2485 DUP3 PUSH2 0x4CF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x24A0 JUMPI PUSH2 0x249D SWAP2 PUSH0 ADD PUSH2 0x2478 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x24BD PUSH2 0x24B8 PUSH2 0x24C4 SWAP3 PUSH2 0x1730 JUMP JUMPDEST PUSH2 0x24A5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x236C JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24DF PUSH2 0x24DA PUSH2 0x24E4 SWAP3 PUSH2 0x24C8 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24FB PUSH2 0x24F6 PUSH2 0x2500 SWAP3 PUSH2 0x1BDE JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x250C SWAP1 PUSH2 0x24E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420626173652061737365742061646472657373000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2543 PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x254C DUP2 PUSH2 0x250F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2565 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2536 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x256F JUMPI JUMP JUMPDEST PUSH2 0x2577 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x25A7 PUSH1 0x4 DUP3 ADD PUSH2 0x2550 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E697469616C697A6174696F6E206661696C65640000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x25DF PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x25E8 DUP2 PUSH2 0x25AB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2601 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x25D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x260B JUMPI JUMP JUMPDEST PUSH2 0x2613 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2643 PUSH1 0x4 DUP3 ADD PUSH2 0x25EC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2651 SWAP1 MLOAD PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x2690 PUSH2 0x2696 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x3E2 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x26A1 JUMPI JUMP JUMPDEST PUSH2 0x2654 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26BD PUSH2 0x26B8 PUSH2 0x26C2 SWAP3 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420776569676874730000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x26F9 PUSH1 0xF PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x2702 DUP2 PUSH2 0x26C5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x271B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x26EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2725 JUMPI JUMP JUMPDEST PUSH2 0x272D PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x275D PUSH1 0x4 DUP3 ADD PUSH2 0x2706 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27E9 SWAP4 SWAP6 SWAP5 PUSH2 0x2780 PUSH2 0x27A4 SWAP4 PUSH2 0x279D SWAP4 PUSH2 0x277B CALLER PUSH2 0x6208 JUMP JUMPDEST PUSH2 0x6233 JUMP JUMPDEST PUSH2 0x2788 PUSH2 0x6249 JUMP JUMPDEST PUSH2 0x2790 PUSH2 0x626F JUMP JUMPDEST PUSH2 0x2798 PUSH2 0x6295 JUMP JUMPDEST PUSH2 0x2360 JUMP JUMPDEST PUSH1 0x4 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0x27BF PUSH2 0x27B8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x23C7 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x27D3 PUSH2 0x27CE PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x27E1 PUSH2 0x312 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x27F9 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2923 JUMPI PUSH2 0x281E PUSH2 0x286B SWAP3 PUSH2 0x2870 SWAP5 PUSH0 SWAP2 PUSH2 0x28F5 JUMPI JUMPDEST POP PUSH1 0x2 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x2836 PUSH2 0x282F PUSH5 0xE8D4A51000 PUSH2 0x24CB JUMP JUMPDEST PUSH1 0x3 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x2864 PUSH2 0x2843 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x285D PUSH2 0x2857 PUSH2 0x2852 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x2568 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x67E4 JUMP JUMPDEST PUSH2 0x2604 JUMP JUMPDEST PUSH2 0x2879 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST PUSH2 0x2882 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMPDEST DUP2 PUSH2 0x289F PUSH2 0x2899 PUSH2 0x2894 DUP8 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x28D1 JUMPI PUSH2 0x28C5 PUSH2 0x28CB SWAP2 PUSH2 0x28BF PUSH2 0x28BA DUP8 DUP7 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP2 PUSH2 0x1BFD JUMP JUMPDEST SWAP1 PUSH2 0x2884 JUMP JUMPDEST SWAP1 POP PUSH2 0x28F3 SWAP2 SWAP3 POP PUSH2 0x28ED PUSH2 0x28E7 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x271E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2916 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x291C JUMPI JUMPDEST PUSH2 0x290E DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x2816 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2904 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP1 PUSH2 0x2935 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x21D3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x293F PUSH2 0x6BE0 JUMP JUMPDEST PUSH2 0x2947 PUSH2 0x2949 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2951 PUSH2 0x6CED JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x295B PUSH2 0x2937 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x296C PUSH2 0x2972 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x3E2 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x297E DUP4 DUP3 MUL PUSH2 0x3E2 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x298D JUMPI JUMP JUMPDEST PUSH2 0x2654 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x29CB PUSH2 0x29D1 SWAP2 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x29DC JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x2992 JUMP JUMPDEST PUSH2 0x29F0 PUSH2 0x29F6 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x3E2 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x2A01 JUMPI JUMP JUMPDEST PUSH2 0x2654 JUMP JUMPDEST SWAP2 PUSH2 0x2AC8 PUSH2 0x2AC2 PUSH2 0x2ABD PUSH2 0x2A28 DUP6 SWAP5 PUSH2 0x2A1D PUSH2 0x1DE8 JUMP JUMPDEST POP DUP8 SWAP1 DUP7 SWAP1 SWAP2 PUSH2 0x2BEB JUMP JUMPDEST PUSH2 0x2A31 DUP8 PUSH2 0x1DEC JUMP JUMPDEST SWAP7 PUSH2 0x2A3B DUP7 PUSH2 0x1DEC JUMP JUMPDEST SWAP1 PUSH2 0x2AA5 PUSH2 0x2A9F PUSH2 0x2A9A PUSH2 0x2A93 PUSH2 0x2A82 PUSH2 0x2A7B PUSH2 0x2A6A PUSH2 0x2A63 PUSH2 0x2A5D DUP10 PUSH2 0x1F6A JUMP JUMPDEST SWAP16 PUSH2 0x1F6A JUMP JUMPDEST SWAP16 DUP11 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x2A75 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST SWAP7 DUP9 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x2A8D PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST SWAP11 SWAP4 PUSH2 0x314D JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2AEA JUMPI PUSH2 0x2AB5 SWAP2 PUSH2 0x29E1 JUMP JUMPDEST SWAP6 JUMPDEST SWAP4 PUSH2 0x314D JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH0 EQ PUSH2 0x2ADC JUMPI PUSH2 0x2AD8 SWAP2 PUSH2 0x2681 JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2AE5 SWAP2 PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x2AD9 JUMP JUMPDEST PUSH2 0x2AF3 SWAP2 PUSH2 0x2681 JUMP JUMPDEST SWAP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2B02 SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B0E SWAP1 PUSH2 0x2AF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C6964206F7261636C65206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2B45 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x2B4E DUP2 PUSH2 0x2B11 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2B67 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2B38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2B71 JUMPI JUMP JUMPDEST PUSH2 0x2B79 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2BA9 PUSH1 0x4 DUP3 ADD PUSH2 0x2B52 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2BB6 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x2BE2 PUSH2 0x2BE9 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x2BD8 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2BF4 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x2C22 PUSH1 0x20 PUSH2 0x2C0C PUSH2 0x2C07 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2C1A PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2C32 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2DA5 JUMPI PUSH2 0x2C4D SWAP2 PUSH0 SWAP2 PUSH2 0x2D77 JUMPI JUMPDEST POP PUSH2 0x2B05 JUMP JUMPDEST SWAP2 PUSH2 0x2C7B PUSH1 0x20 PUSH2 0x2C65 PUSH2 0x2C60 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2C73 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2C8B PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2D72 JUMPI PUSH1 0x20 SWAP5 PUSH2 0x2CCC PUSH2 0x2CD1 SWAP3 PUSH2 0x2CF1 SWAP5 PUSH0 SWAP2 PUSH2 0x2D45 JUMPI JUMPDEST POP PUSH2 0x2CC5 PUSH2 0x2CBF PUSH2 0x2CBA PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x2B6A JUMP JUMPDEST PUSH2 0x2BAD JUMP JUMPDEST SWAP2 PUSH2 0x2CFC PUSH4 0x248391FF SWAP2 SWAP5 SWAP7 PUSH2 0x2CE5 PUSH2 0x312 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2D40 JUMPI PUSH0 SWAP2 PUSH2 0x2D12 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2D33 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D39 JUMPI JUMPDEST PUSH2 0x2D2B DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x2D0E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D21 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x2D65 SWAP2 POP DUP9 RETURNDATASIZE DUP2 GT PUSH2 0x2D6B JUMPI JUMPDEST PUSH2 0x2D5D DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x2CAA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D53 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x2D98 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D9E JUMPI JUMPDEST PUSH2 0x2D90 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x2C47 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D86 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP1 PUSH2 0x2DBC SWAP2 PUSH2 0x2DB7 PUSH2 0x6D03 JUMP JUMPDEST PUSH2 0x2DBE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2DD1 SWAP2 PUSH2 0x2DCC DUP2 PUSH2 0x6DD5 JUMP JUMPDEST PUSH2 0x6E45 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2DDD SWAP2 PUSH2 0x2DAA JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2DF4 SWAP1 PUSH2 0x2DEF PUSH2 0x6F83 JUMP JUMPDEST PUSH2 0x2E42 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E0E PUSH2 0x2E09 PUSH2 0x2E13 SWAP3 PUSH2 0x2DF7 JUMP JUMPDEST PUSH2 0x20FD JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E3F PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x2DFA JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x2E4B PUSH2 0x2E16 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E5E PUSH2 0x2E59 PUSH2 0x2DDF JUMP JUMPDEST PUSH2 0x2DE3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E6D PUSH2 0x2E72 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x2061 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E7F SWAP1 SLOAD PUSH2 0x2E61 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E8A PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x2E9D PUSH0 PUSH2 0x2E97 PUSH2 0x7001 JUMP JUMPDEST ADD PUSH2 0x2E75 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2EB7 PUSH2 0x2EB2 DUP4 PUSH2 0x90B JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x2EE6 PUSH2 0x2ECE DUP4 PUSH2 0x2EA5 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x2EDC DUP7 SWAP4 PUSH2 0x90B JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x2EBC JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2EF2 DUP3 PUSH2 0xD49 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x2F03 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST SWAP1 PUSH2 0x2F12 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2F1E PUSH2 0x2EA0 JUMP JUMPDEST POP PUSH2 0x2F30 PUSH2 0x2F2B PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x2EC1 JUMP JUMPDEST PUSH2 0x2F39 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x2F55 PUSH2 0x2F4F PUSH2 0x2F4A PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x2F94 JUMPI PUSH2 0x2F8F SWAP1 PUSH2 0x2F8A PUSH2 0x2F78 PUSH0 PUSH2 0x2F71 DUP2 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x2F85 DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x2EE8 JUMP JUMPDEST PUSH2 0x2F08 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x2F3A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2FB7 PUSH2 0x2FBC SWAP2 PUSH2 0x2FA7 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH0 PUSH2 0x2FB1 PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x173C JUMP JUMPDEST PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FC7 PUSH2 0x6BE0 JUMP JUMPDEST PUSH2 0x2FCF PUSH2 0x2FD1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2FE2 PUSH2 0x2FDD PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x7025 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2FEC PUSH2 0x2FBF JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x526562616C616E6365206E6F74206E6565646564000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3022 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x302B DUP2 PUSH2 0x2FEE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3044 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3015 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x304E JUMPI JUMP JUMPDEST PUSH2 0x3056 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3086 PUSH1 0x4 DUP3 ADD PUSH2 0x302F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x309A PUSH2 0x3095 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x3047 JUMP JUMPDEST PUSH2 0x30A2 PUSH2 0x713A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x30AC PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x30BE PUSH2 0x30B9 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x30C7 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x30E3 PUSH2 0x30DD PUSH2 0x30D8 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3123 JUMPI PUSH2 0x311E SWAP1 PUSH2 0x3119 PUSH2 0x3107 PUSH1 0x2 PUSH2 0x3100 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x3114 DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x30C8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x312F PUSH2 0x6BE0 JUMP JUMPDEST PUSH2 0x3137 PUSH2 0x3139 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3141 PUSH2 0x75AB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x314B PUSH2 0x3127 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3155 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x315E PUSH2 0x4890 JUMP JUMPDEST SWAP1 POP PUSH2 0x3169 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x3185 PUSH2 0x317F PUSH2 0x317A PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x31DC JUMPI PUSH2 0x31A1 PUSH0 PUSH2 0x319A DUP2 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x31B3 PUSH2 0x31AD DUP6 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x31C6 JUMPI PUSH2 0x31C1 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x316A JUMP JUMPDEST PUSH2 0x31D9 SWAP3 POP PUSH2 0x31D4 SWAP2 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP POP PUSH2 0x31E8 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x31F5 DUP3 PUSH2 0x1390 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x3206 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x3215 SWAP1 MLOAD PUSH2 0x542 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3220 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x324E PUSH1 0x20 PUSH2 0x3238 PUSH2 0x3233 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xEA233C05 SWAP1 PUSH2 0x3246 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x325E PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x333E JUMPI PUSH0 SWAP2 PUSH2 0x3310 JUMPI JUMPDEST POP PUSH2 0x3279 PUSH2 0x4890 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SWAP1 PUSH2 0x3286 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x32A2 PUSH2 0x329C PUSH2 0x3297 DUP7 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3308 JUMPI PUSH2 0x32BB PUSH2 0x32B6 DUP6 DUP4 SWAP1 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x320B JUMP JUMPDEST DUP1 PUSH2 0x32DC JUMPI JUMPDEST PUSH2 0x32D3 JUMPI PUSH2 0x32CE SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x3287 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH2 0x32F0 PUSH2 0x32EB DUP5 DUP4 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x3302 PUSH2 0x32FC DUP5 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x32C1 JUMP JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3331 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3337 JUMPI JUMPDEST PUSH2 0x3329 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x3270 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x331F JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x334F PUSH2 0x3343 JUMP JUMPDEST POP PUSH2 0x3362 PUSH0 PUSH2 0x335C PUSH2 0x75B5 JUMP JUMPDEST ADD PUSH2 0x1636 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x336E DUP2 PUSH2 0x542 JUMP JUMPDEST SUB PUSH2 0x3375 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x3386 DUP3 PUSH2 0x3365 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x33A1 JUMPI PUSH2 0x339E SWAP2 PUSH0 ADD PUSH2 0x3379 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0x33AE PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x33BF PUSH2 0x33BA PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x3047 JUMP JUMPDEST PUSH2 0x33D0 PUSH2 0x33CA PUSH2 0x5EBB JUMP JUMPDEST SWAP1 PUSH2 0x75D9 JUMP JUMPDEST SWAP2 PUSH2 0x33E2 PUSH2 0x33DD PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 PUSH2 0x33FF PUSH2 0x33EF DUP6 PUSH2 0x76CF JUMP JUMPDEST PUSH2 0x33F9 PUSH1 0x3 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x3408 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x3424 PUSH2 0x341E PUSH2 0x3419 DUP10 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3558 JUMPI DUP6 SWAP1 PUSH2 0x343F PUSH2 0x343A DUP4 DUP4 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x3451 PUSH2 0x344B PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x3466 JUMPI JUMPDEST PUSH2 0x3461 SWAP2 POP PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x3409 JUMP JUMPDEST PUSH2 0x3498 PUSH2 0x3486 DUP3 PUSH2 0x3480 PUSH2 0x347B DUP7 DUP7 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x77D2 JUMP JUMPDEST PUSH2 0x3493 DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x34C0 PUSH2 0x34BB PUSH2 0x34B6 PUSH0 PUSH2 0x34AF DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x23B872DD SWAP1 PUSH2 0x34FF PUSH0 CALLER SWAP4 PUSH2 0x350A PUSH2 0x34EB PUSH2 0x34E6 PUSH2 0x34DE ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP11 DUP11 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x34F3 PUSH2 0x312 JUMP JUMPDEST SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3553 JUMPI PUSH2 0x3461 SWAP3 PUSH2 0x3527 JUMPI JUMPDEST POP DUP7 SWAP2 POP PUSH2 0x3457 JUMP JUMPDEST PUSH2 0x3547 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x354C JUMPI JUMPDEST PUSH2 0x353F DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH2 0x351E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3535 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP PUSH2 0x3565 SWAP2 SWAP5 SWAP3 SWAP4 PUSH2 0x7852 JUMP JUMPDEST PUSH2 0x356D PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x3575 PUSH2 0x7CE2 JUMP JUMPDEST CALLER PUSH2 0x35B5 PUSH2 0x35A3 PUSH32 0xA95AD530009C6F929555E70A66AADBEAE7231E45756C5B028CA77FBAA376E73E SWAP3 PUSH2 0x1730 JUMP JUMPDEST SWAP3 PUSH2 0x35AC PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x35C3 PUSH2 0x1A42 JUMP JUMPDEST POP PUSH2 0x35D7 PUSH1 0x4 PUSH2 0x35D1 PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x1B6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x360E PUSH1 0x7 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3617 DUP2 PUSH2 0x35DA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3630 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3601 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x363A JUMPI JUMP JUMPDEST PUSH2 0x3642 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3672 PUSH1 0x4 DUP3 ADD PUSH2 0x361B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x36A3 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x369E DUP9 PUSH2 0x3697 PUSH2 0x3691 TIMESTAMP PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3633 JUMP JUMPDEST PUSH2 0x36A7 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP1 PUSH2 0x36BF SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x36BA PUSH2 0x7E06 JUMP JUMPDEST PUSH2 0x3C57 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x36C9 PUSH2 0x7EB2 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420746F6B656E20616464726573730000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x36FF PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3708 DUP2 PUSH2 0x36CB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3721 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x36F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x372B JUMPI JUMP JUMPDEST PUSH2 0x3733 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3763 PUSH1 0x4 DUP3 ADD PUSH2 0x370C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x43616E6E6F742073776170207468652073616D6520746F6B656E000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x379B PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x37A4 DUP2 PUSH2 0x3767 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x37BD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x378E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x37C7 JUMPI JUMP JUMPDEST PUSH2 0x37CF PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x37FF PUSH1 0x4 DUP3 ADD PUSH2 0x37A8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3836 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x383F DUP2 PUSH2 0x3803 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3858 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x382A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3862 JUMPI JUMP JUMPDEST PUSH2 0x386A PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x389A PUSH1 0x4 DUP3 ADD PUSH2 0x3843 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420726563656976657220616464726573730000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x38D2 PUSH1 0x18 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x38DB DUP2 PUSH2 0x389E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x38F4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x38C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x38FE JUMPI JUMP JUMPDEST PUSH2 0x3906 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3936 PUSH1 0x4 DUP3 ADD PUSH2 0x38DF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x546F6B656E207472616E73666572206661696C65640000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x396E PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3977 DUP2 PUSH2 0x393A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3990 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3961 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x399A JUMPI JUMP JUMPDEST PUSH2 0x39A2 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x39D2 PUSH1 0x4 DUP3 ADD PUSH2 0x397B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E74204C697175696469747900000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3A0A PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3A13 DUP2 PUSH2 0x39D6 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3A2C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x39FD JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3A36 JUMPI JUMP JUMPDEST PUSH2 0x3A3E PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3A6E PUSH1 0x4 DUP3 ADD PUSH2 0x3A17 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x68616E2030000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x416D6F756E7420746F2073656E64206D75737420626520677265617465722074 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x3ACC PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3AD5 DUP2 PUSH2 0x3A72 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3AEE SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3ABF JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3AF8 JUMPI JUMP JUMPDEST PUSH2 0x3B00 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3B30 PUSH1 0x4 DUP3 ADD PUSH2 0x3AD9 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6D696E20616D6F756E7400000000000000000000000000000000000000000000 SWAP2 PUSH32 0x416D6F756E74206F7574206D7573742062652067726561746572207468616E20 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x3B8E PUSH1 0x2A PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3B97 DUP2 PUSH2 0x3B34 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3BB0 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3B81 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3BBA JUMPI JUMP JUMPDEST PUSH2 0x3BC2 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3BF2 PUSH1 0x4 DUP3 ADD PUSH2 0x3B9B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x3C17 SWAP3 SWAP5 SWAP4 PUSH2 0x3C10 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3C4E PUSH2 0x3C55 SWAP5 PUSH2 0x3C44 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x3C3A PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 SWAP4 SWAP3 SWAP5 SWAP6 SWAP8 SWAP7 POP POP POP DUP2 PUSH2 0x3C7D PUSH2 0x3C77 PUSH2 0x3C72 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO DUP1 PUSH2 0x3EF2 JUMPI JUMPDEST PUSH2 0x3C8E SWAP1 PUSH2 0x3724 JUMP JUMPDEST PUSH2 0x3CAB DUP3 PUSH2 0x3CA4 PUSH2 0x3C9E DUP7 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x37C0 JUMP JUMPDEST PUSH2 0x3CC7 DUP2 PUSH2 0x3CC1 PUSH2 0x3CBB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x385B JUMP JUMPDEST PUSH2 0x3CEC DUP7 PUSH2 0x3CE5 PUSH2 0x3CDF PUSH2 0x3CDA PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x38F7 JUMP JUMPDEST PUSH2 0x3CFD PUSH2 0x3CF8 DUP4 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x3D2D PUSH0 PUSH2 0x3D14 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP6 PUSH2 0x3D38 DUP9 PUSH2 0x3D21 PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3EED JUMPI PUSH2 0x3D53 SWAP2 PUSH0 SWAP2 PUSH2 0x3EBF JUMPI JUMPDEST POP PUSH2 0x3993 JUMP JUMPDEST PUSH2 0x3D5F DUP3 DUP5 DUP4 SWAP2 PUSH2 0x2A06 JUMP JUMPDEST SWAP6 PUSH2 0x3D85 PUSH2 0x3D6C DUP6 PUSH2 0x3F5F JUMP JUMPDEST PUSH2 0x3D7E PUSH2 0x3D78 DUP11 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3A2F JUMP JUMPDEST PUSH2 0x3DD3 PUSH2 0x3D9C PUSH2 0x3D94 DUP10 PUSH2 0x7ECF JUMP JUMPDEST SWAP9 DUP10 SWAP1 PUSH2 0x29E1 JUMP JUMPDEST SWAP6 PUSH2 0x3DB9 DUP8 PUSH2 0x3DB3 PUSH2 0x3DAD PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x3AF1 JUMP JUMPDEST PUSH2 0x3DCC PUSH2 0x3DC6 DUP9 SWAP3 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3BB3 JUMP JUMPDEST PUSH2 0x3DE4 PUSH2 0x3DDF DUP6 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xA9059CBB SWAP2 DUP4 SWAP1 PUSH2 0x3E0B PUSH0 DUP11 SWAP6 PUSH2 0x3E16 PUSH2 0x3DFF PUSH2 0x312 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3EBA JUMPI PUSH2 0x3E31 SWAP2 PUSH0 SWAP2 PUSH2 0x3E8C JUMPI JUMPDEST POP PUSH2 0x3993 JUMP JUMPDEST PUSH2 0x3E39 PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x3E41 PUSH2 0x7CE2 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP3 PUSH2 0x3E85 DUP6 PUSH2 0x3E73 PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 SWAP6 PUSH2 0x1730 JUMP JUMPDEST SWAP6 PUSH2 0x3E7C PUSH2 0x312 JUMP JUMPDEST SWAP5 DUP6 SWAP5 DUP6 PUSH2 0x3C19 JUMP JUMPDEST SUB SWAP1 LOG2 SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x3EAD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3EB3 JUMPI JUMPDEST PUSH2 0x3EA5 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x3E2B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3E9B JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x3EE0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3EE6 JUMPI JUMPDEST PUSH2 0x3ED8 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x3D4D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3ECE JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP PUSH2 0x3C8E DUP4 PUSH2 0x3F11 PUSH2 0x3F0B PUSH2 0x3F06 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH2 0x3C85 JUMP JUMPDEST SWAP1 PUSH2 0x3F39 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x3F2B PUSH2 0x1DE8 JUMP JUMPDEST PUSH2 0x3F33 PUSH2 0x1DE8 JUMP JUMPDEST SWAP1 PUSH2 0x3676 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x3F5A SWAP2 PUSH2 0x3F49 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x3F52 PUSH2 0x5E9E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x60E9 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x3F67 PUSH2 0x1DE8 JUMP JUMPDEST SWAP1 PUSH2 0x3F71 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x3F8D PUSH2 0x3F87 PUSH2 0x3F82 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x4062 JUMPI DUP2 PUSH2 0x3FBB PUSH2 0x3FB5 PUSH2 0x3FB0 PUSH0 PUSH2 0x3FA9 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x3FCE JUMPI PUSH2 0x3FC9 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x3F72 JUMP JUMPDEST POP PUSH2 0x4019 SWAP2 POP PUSH2 0x3FE7 PUSH2 0x3FE2 PUSH1 0x20 SWAP3 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x400E PUSH2 0x3FF9 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x4002 PUSH2 0x312 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x405D JUMPI PUSH0 SWAP2 PUSH2 0x402F JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x4050 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4056 JUMPI JUMPDEST PUSH2 0x4048 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x402B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x403E JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4090 SWAP4 SWAP3 SWAP2 PUSH2 0x408B DUP5 PUSH2 0x4084 PUSH2 0x407E TIMESTAMP PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3633 JUMP JUMPDEST PUSH2 0x4093 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x40A7 SWAP4 SWAP3 SWAP2 PUSH2 0x40A2 PUSH2 0x7E06 JUMP JUMPDEST PUSH2 0x40B2 JUMP JUMPDEST SWAP1 PUSH2 0x40B0 PUSH2 0x7EB2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x40C6 SWAP4 SWAP3 SWAP2 PUSH2 0x40C1 PUSH2 0x7FF5 JUMP JUMPDEST PUSH2 0x44E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C6964207265736572766573206C656E677468000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x40FD PUSH1 0x17 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4106 DUP2 PUSH2 0x40C9 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x411F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x40F0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4129 JUMPI JUMP JUMPDEST PUSH2 0x4131 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4161 PUSH1 0x4 DUP3 ADD PUSH2 0x410A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4E6F206173736574730000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4199 PUSH1 0x9 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x41A2 DUP2 PUSH2 0x4165 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x41BB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x418C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x41C5 JUMPI JUMP JUMPDEST PUSH2 0x41CD PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x41FD PUSH1 0x4 DUP3 ADD PUSH2 0x41A6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6564000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C3A205472616E736665722066726F6D206661696C PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x425B PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4264 DUP2 PUSH2 0x4201 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x427D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x424E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4287 JUMPI JUMP JUMPDEST PUSH2 0x428F PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x42BF PUSH1 0x4 DUP3 ADD PUSH2 0x4268 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x2030000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x546F74616C2076616C7565206D7573742062652067726561746572207468616E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x431D PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4326 DUP2 PUSH2 0x42C3 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x433F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4310 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4349 JUMPI JUMP JUMPDEST PUSH2 0x4351 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4381 PUSH1 0x4 DUP3 ADD PUSH2 0x432A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x7468616E20300000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x546F74616C206C6971756964697479206D757374206265206772656174657220 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x43DF PUSH1 0x26 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x43E8 DUP2 PUSH2 0x4385 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4401 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x43D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x440B JUMPI JUMP JUMPDEST PUSH2 0x4413 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4443 PUSH1 0x4 DUP3 ADD PUSH2 0x43EC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4D696E7420717479206973203000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x447B PUSH1 0xD PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4484 DUP2 PUSH2 0x4447 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x449D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x446E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x44A7 JUMPI JUMP JUMPDEST PUSH2 0x44AF PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x44DF PUSH1 0x4 DUP3 ADD PUSH2 0x4488 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP4 SWAP3 POP POP PUSH2 0x44F0 PUSH2 0x1E84 JUMP JUMPDEST SWAP2 PUSH2 0x44FA PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP4 PUSH2 0x452F PUSH2 0x4506 PUSH2 0x1CB1 JUMP JUMPDEST PUSH2 0x4529 PUSH2 0x4523 PUSH2 0x451E PUSH2 0x4518 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST SWAP4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x4122 JUMP JUMPDEST PUSH2 0x4553 PUSH2 0x453B PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x454D PUSH2 0x4547 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x41BE JUMP JUMPDEST PUSH2 0x455C PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP5 JUMPDEST DUP6 PUSH2 0x4579 PUSH2 0x4573 PUSH2 0x456E PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x46C7 JUMPI DUP4 SWAP1 PUSH2 0x4597 PUSH0 PUSH2 0x4590 DUP2 DUP11 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP9 PUSH2 0x45AC PUSH2 0x45A7 DUP6 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH2 0x45E8 PUSH0 PUSH4 0x23B872DD PUSH2 0x45F3 PUSH2 0x45D4 PUSH2 0x45CF CALLER SWAP8 PUSH2 0x45C9 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP13 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x45DC PUSH2 0x312 JUMP JUMPDEST SWAP11 DUP12 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x46C2 JUMPI PUSH2 0x466A SWAP4 PUSH2 0x4613 SWAP2 PUSH0 SWAP2 PUSH2 0x4694 JUMPI JUMPDEST POP PUSH2 0x4280 JUMP JUMPDEST PUSH2 0x461B PUSH2 0x1DE8 JUMP JUMPDEST POP DUP2 PUSH2 0x4638 PUSH2 0x4632 PUSH2 0x462D PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x4670 JUMPI PUSH2 0x465D PUSH2 0x4663 SWAP3 PUSH2 0x4657 PUSH2 0x4652 DUP10 DUP13 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x803F JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP6 JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST SWAP5 PUSH2 0x455E JUMP JUMPDEST PUSH2 0x468E SWAP2 POP PUSH2 0x4688 PUSH2 0x4683 DUP8 DUP11 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP6 PUSH2 0x4665 JUMP JUMPDEST PUSH2 0x46B5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x46BB JUMPI JUMPDEST PUSH2 0x46AD DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x460D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x46A3 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 SWAP2 POP PUSH2 0x46E9 DUP2 PUSH2 0x46E3 PUSH2 0x46DD PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x4342 JUMP JUMPDEST PUSH2 0x46F1 PUSH2 0x1DE8 JUMP JUMPDEST POP DUP2 PUSH2 0x4705 PUSH2 0x46FF PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x47A2 JUMPI PUSH2 0x4721 SWAP2 POP PUSH2 0x471B PUSH1 0x3 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST SWAP1 JUMPDEST PUSH2 0x4740 DUP3 PUSH2 0x4739 PUSH2 0x4733 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ ISZERO PUSH2 0x44A0 JUMP JUMPDEST PUSH2 0x474B DUP2 DUP4 SWAP1 PUSH2 0x7852 JUMP JUMPDEST PUSH2 0x4753 PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x475B PUSH2 0x7CE2 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x479C PUSH2 0x478A PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 PUSH2 0x1730 JUMP JUMPDEST SWAP3 PUSH2 0x4793 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x47FB PUSH2 0x47EA PUSH2 0x4801 SWAP4 PUSH2 0x47E5 PUSH2 0x47B7 PUSH2 0x5EBB JUMP JUMPDEST POP SWAP5 PUSH2 0x47D5 DUP7 PUSH2 0x47CF PUSH2 0x47C9 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x4404 JUMP JUMPDEST PUSH2 0x47DF PUSH1 0x3 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x295D JUMP JUMPDEST SWAP2 PUSH2 0x47F5 PUSH1 0x3 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST SWAP1 PUSH2 0x4723 JUMP JUMPDEST SWAP1 PUSH2 0x481A SWAP3 SWAP2 PUSH2 0x4815 PUSH2 0x1DE8 JUMP JUMPDEST PUSH2 0x4067 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x483A JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 PUSH2 0x4851 PUSH2 0x484C DUP4 PUSH2 0x4822 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x4880 PUSH2 0x4868 DUP4 PUSH2 0x483F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x4876 DUP7 SWAP4 PUSH2 0x4822 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x4856 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x488C SWAP1 PUSH2 0x542 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x4898 PUSH2 0x481D JUMP JUMPDEST POP PUSH2 0x48A1 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x48AA PUSH2 0x5EBB JUMP JUMPDEST PUSH2 0x48B3 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST SWAP2 PUSH2 0x48BD DUP4 PUSH2 0x485B JUMP JUMPDEST SWAP2 PUSH2 0x48C7 DUP5 PUSH2 0x1BB7 JUMP JUMPDEST SWAP5 PUSH2 0x48D1 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x48E5 PUSH2 0x48DF DUP9 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x49CD JUMPI PUSH2 0x498E SWAP1 PUSH2 0x4920 PUSH2 0x4919 PUSH2 0x4908 PUSH2 0x4903 DUP8 DUP6 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x4913 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x4937 PUSH1 0x1 PUSH2 0x4930 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 DUP1 PUSH2 0x494B PUSH2 0x4945 DUP5 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x4993 JUMPI PUSH2 0x4971 SWAP2 PUSH2 0x495F SWAP2 PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x496C DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x4988 PUSH1 0x1 PUSH2 0x4983 DUP9 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x4882 JUMP JUMPDEST JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x48D2 JUMP JUMPDEST PUSH2 0x49A0 SWAP1 PUSH2 0x49B2 SWAP3 PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x49AD DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x49C8 PUSH0 PUSH2 0x49C3 DUP9 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x4882 JUMP JUMPDEST PUSH2 0x4989 JUMP JUMPDEST POP SWAP4 POP POP POP SWAP2 SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657420696E64657800000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4A0A PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4A13 DUP2 PUSH2 0x49D6 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4A2C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x49FD JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4A36 JUMPI JUMP JUMPDEST PUSH2 0x4A3E PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4A6E PUSH1 0x4 DUP3 ADD PUSH2 0x4A17 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4AB5 PUSH2 0x4ABA SWAP2 PUSH2 0x4A81 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x4A8A PUSH2 0x5EBB JUMP JUMPDEST SWAP1 POP PUSH2 0x4AB0 DUP3 PUSH2 0x4AAA PUSH2 0x4AA4 PUSH2 0x4A9F DUP6 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x4A2F JUMP JUMPDEST PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4AC7 SWAP1 PUSH2 0x1730 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4B01 SWAP2 PUSH2 0x4AF7 PUSH2 0x4AFC SWAP3 PUSH2 0x4AE6 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x4AF1 PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x4ABD JUMP JUMPDEST PUSH2 0x173C JUMP JUMPDEST PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4B2D SWAP4 SWAP3 SWAP2 PUSH2 0x4B28 DUP5 PUSH2 0x4B21 PUSH2 0x4B1B TIMESTAMP PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3633 JUMP JUMPDEST PUSH2 0x4B30 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4B44 SWAP4 SWAP3 SWAP2 PUSH2 0x4B3F PUSH2 0x7E06 JUMP JUMPDEST PUSH2 0x4B4F JUMP JUMPDEST SWAP1 PUSH2 0x4B4D PUSH2 0x7EB2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4B63 SWAP4 SWAP3 SWAP2 PUSH2 0x4B5E PUSH2 0x7FF5 JUMP JUMPDEST PUSH2 0x5213 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420616464726573730000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4B9A PUSH1 0xF PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4BA3 DUP2 PUSH2 0x4B66 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4BBC SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4B8D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4BC6 JUMPI JUMP JUMPDEST PUSH2 0x4BCE PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4BFE PUSH1 0x4 DUP3 ADD PUSH2 0x4BA7 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x5368617265206D7573742062652067726561746572207468616E203000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4C36 PUSH1 0x1C PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4C3F DUP2 PUSH2 0x4C02 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4C58 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4C29 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4C62 JUMPI JUMP JUMPDEST PUSH2 0x4C6A PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4C9A PUSH1 0x4 DUP3 ADD PUSH2 0x4C43 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x4CBF SWAP3 SWAP5 SWAP4 PUSH2 0x4CB8 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x616E636500000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C3A20496E73756666696369656E7420416C6C6F77 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x4D1B PUSH1 0x24 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4D24 DUP2 PUSH2 0x4CC1 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4D3D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4D0E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4D47 JUMPI JUMP JUMPDEST PUSH2 0x4D4F PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4D7F PUSH1 0x4 DUP3 ADD PUSH2 0x4D28 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x5472616E736665722046726F6D204661696C6564000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4DB7 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4DC0 DUP2 PUSH2 0x4D83 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4DD9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4DAA JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4DE3 JUMPI JUMP JUMPDEST PUSH2 0x4DEB PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4E1B PUSH1 0x4 DUP3 ADD PUSH2 0x4DC4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4E6F206C69717569646974790000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4E53 PUSH1 0xC PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4E5C DUP2 PUSH2 0x4E1F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4E75 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4E46 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4E7F JUMPI JUMP JUMPDEST PUSH2 0x4E87 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4EB7 PUSH1 0x4 DUP3 ADD PUSH2 0x4E60 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420747265617375727920616464726573730000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4EEF PUSH1 0x18 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4EF8 DUP2 PUSH2 0x4EBB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4F11 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4EE2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4F1B JUMPI JUMP JUMPDEST PUSH2 0x4F23 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4F53 PUSH1 0x4 DUP3 ADD PUSH2 0x4EFC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x2042616C616E6365000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C3A20496E73756666696369656E74204173736574 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x4FB1 PUSH1 0x28 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4FBA DUP2 PUSH2 0x4F57 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4FD3 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4FA4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4FDD JUMPI JUMP JUMPDEST PUSH2 0x4FE5 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5015 PUSH1 0x4 DUP3 ADD PUSH2 0x4FBE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6400000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C3A20466565205472616E73666572204661696C65 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x5073 PUSH1 0x21 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x507C DUP2 PUSH2 0x5019 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5095 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5066 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x509F JUMPI JUMP JUMPDEST PUSH2 0x50A7 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x50D7 PUSH1 0x4 DUP3 ADD PUSH2 0x5080 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4173736574207472616E73666572206661696C65640000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x510F PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x5118 DUP2 PUSH2 0x50DB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5131 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5102 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x513B JUMPI JUMP JUMPDEST PUSH2 0x5143 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5173 PUSH1 0x4 DUP3 ADD PUSH2 0x511C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742042414C554E49206C6971756964697479000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x51AB PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x51B4 DUP2 PUSH2 0x5177 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x51CD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x519E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x51D7 JUMPI JUMP JUMPDEST PUSH2 0x51DF PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x520F PUSH1 0x4 DUP3 ADD PUSH2 0x51B8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP4 SWAP3 POP POP PUSH2 0x523E DUP4 PUSH2 0x5237 PUSH2 0x5231 PUSH2 0x522C PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x4BBF JUMP JUMPDEST PUSH2 0x525A DUP2 PUSH2 0x5254 PUSH2 0x524E PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x4C5B JUMP JUMPDEST PUSH2 0x5273 PUSH2 0x526E PUSH2 0x5269 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 CALLER SWAP1 PUSH2 0x52A1 PUSH2 0x5289 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP5 PUSH2 0x52AC PUSH2 0x5295 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x4C9E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5789 JUMPI PUSH2 0x52DB SWAP2 PUSH0 SWAP2 PUSH2 0x575B JUMPI JUMPDEST POP PUSH2 0x52D4 PUSH2 0x52CE DUP5 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x4D40 JUMP JUMPDEST PUSH2 0x52F4 PUSH2 0x52EF PUSH2 0x52EA ADDRESS PUSH2 0x1C30 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x5324 PUSH0 PUSH2 0x530B ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP6 PUSH2 0x532F DUP9 PUSH2 0x5318 PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x5756 JUMPI PUSH2 0x534A SWAP2 PUSH0 SWAP2 PUSH2 0x5728 JUMPI JUMPDEST POP PUSH2 0x4DDC JUMP JUMPDEST PUSH2 0x536D PUSH2 0x5355 PUSH2 0x1E84 JUMP JUMPDEST PUSH2 0x5367 PUSH2 0x5361 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x4E78 JUMP JUMPDEST PUSH2 0x539A PUSH1 0x20 PUSH2 0x5384 PUSH2 0x537F PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x5392 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x53AA PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5723 JUMPI PUSH0 SWAP2 PUSH2 0x56F5 JUMPI JUMPDEST POP SWAP1 PUSH2 0x53E3 DUP3 PUSH2 0x53DC PUSH2 0x53D6 PUSH2 0x53D1 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x4F14 JUMP JUMPDEST PUSH2 0x53EC PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x5408 PUSH2 0x5402 PUSH2 0x53FD PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x5659 JUMPI PUSH2 0x5429 PUSH2 0x5424 PUSH2 0x541D DUP5 PUSH2 0x57A4 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x5487 PUSH1 0x20 PUSH2 0x5455 PUSH2 0x5450 PUSH2 0x544B PUSH0 PUSH2 0x5444 DUP2 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x547C PUSH2 0x5467 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x5470 PUSH2 0x312 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5654 JUMPI PUSH2 0x54B6 SWAP2 PUSH0 SWAP2 PUSH2 0x5626 JUMPI JUMPDEST POP PUSH2 0x54AF PUSH2 0x54A9 DUP6 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x4FD6 JUMP JUMPDEST PUSH2 0x54CA PUSH2 0x54C2 DUP4 PUSH2 0x7ECF JUMP JUMPDEST SWAP3 DUP4 SWAP1 PUSH2 0x29E1 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x54F3 PUSH2 0x54EE PUSH2 0x54E9 PUSH0 PUSH2 0x54E2 DUP2 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x5518 PUSH0 DUP10 SWAP4 SWAP6 PUSH2 0x5523 PUSH2 0x550C PUSH2 0x312 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x5621 JUMPI PUSH2 0x553E SWAP2 PUSH0 SWAP2 PUSH2 0x55F3 JUMPI JUMPDEST POP PUSH2 0x5098 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x5566 PUSH2 0x5561 PUSH2 0x555C PUSH0 PUSH2 0x5555 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x558B PUSH0 DUP11 SWAP4 SWAP7 PUSH2 0x5596 PUSH2 0x557F PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x55EE JUMPI PUSH2 0x55BB SWAP3 PUSH2 0x55B6 SWAP2 PUSH0 SWAP2 PUSH2 0x55C0 JUMPI JUMPDEST POP PUSH2 0x5134 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x53ED JUMP JUMPDEST PUSH2 0x55E1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x55E7 JUMPI JUMPDEST PUSH2 0x55D9 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x55B0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x55CF JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x5614 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x561A JUMPI JUMPDEST PUSH2 0x560C DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x5538 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5602 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x5647 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x564D JUMPI JUMPDEST PUSH2 0x563F DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x549C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5635 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP1 POP PUSH2 0x568B PUSH2 0x5672 PUSH2 0x566D ADDRESS PUSH2 0x1C30 JUMP JUMPDEST PUSH2 0x2F98 JUMP JUMPDEST PUSH2 0x5684 PUSH2 0x567E DUP6 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x51D0 JUMP JUMPDEST PUSH2 0x569E PUSH2 0x5697 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x8062 JUMP JUMPDEST PUSH2 0x56A6 PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x56AE PUSH2 0x7CE2 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x56EF PUSH2 0x56DD PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 SWAP3 PUSH2 0x1730 JUMP JUMPDEST SWAP3 PUSH2 0x56E6 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x5716 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x571C JUMPI JUMPDEST PUSH2 0x570E DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x53BC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5704 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x5749 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x574F JUMPI JUMPDEST PUSH2 0x5741 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x5344 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5737 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x577C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5782 JUMPI JUMPDEST PUSH2 0x5774 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x52C1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x576A JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP1 PUSH2 0x57A1 SWAP3 SWAP2 PUSH2 0x579C PUSH2 0x1DE8 JUMP JUMPDEST PUSH2 0x4B04 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x57C0 SWAP1 PUSH2 0x57B0 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x57BA DUP2 PUSH2 0x7ECF JUMP JUMPDEST SWAP1 PUSH2 0x29E1 JUMP JUMPDEST SWAP1 PUSH2 0x57D2 PUSH2 0x57CD PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x57DB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x57F7 PUSH2 0x57F1 PUSH2 0x57EC PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x58E0 JUMPI PUSH2 0x585B SWAP1 PUSH1 0x20 PUSH2 0x5829 PUSH2 0x5824 PUSH2 0x581F PUSH0 PUSH2 0x5818 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5850 PUSH2 0x583B ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x5844 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x58DB JUMPI PUSH2 0x5891 PUSH2 0x5883 PUSH2 0x58A8 SWAP5 PUSH2 0x58A3 SWAP4 PUSH0 SWAP2 PUSH2 0x58AD JUMPI JUMPDEST POP DUP9 SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x588B PUSH2 0x1E84 JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x589E DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x57DC JUMP JUMPDEST PUSH2 0x58CE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x58D4 JUMPI JUMPDEST PUSH2 0x58C6 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x587B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x58BC JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP SWAP1 SWAP2 POP SWAP1 JUMP JUMPDEST PUSH2 0x58F0 SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x58FC SWAP1 PUSH2 0x58E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5908 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5914 DUP2 PUSH2 0x7B4 JUMP JUMPDEST SUB PUSH2 0x591B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x592C DUP3 PUSH2 0x590B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x5947 JUMPI PUSH2 0x5944 SWAP2 PUSH0 ADD PUSH2 0x591F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0x5960 PUSH2 0x595B PUSH2 0x5965 SWAP3 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x597C PUSH2 0x5977 PUSH2 0x5981 SWAP3 PUSH2 0x2026 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x599B PUSH2 0x5996 PUSH2 0x59A0 SWAP3 PUSH2 0x5984 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x59AC SWAP1 PUSH2 0x3E2 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x59BA JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x2654 JUMP JUMPDEST PUSH2 0x59C7 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x59FD PUSH1 0x20 PUSH2 0x59E7 PUSH2 0x59E2 PUSH2 0x59DD PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x58F3 JUMP JUMPDEST PUSH2 0x58FF JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x59F5 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5A0D PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5AF8 JUMPI PUSH2 0x5A2F PUSH2 0x5A3E SWAP2 PUSH2 0x5A43 SWAP4 PUSH0 SWAP2 PUSH2 0x5ACA JUMPI JUMPDEST POP PUSH2 0x594C JUMP JUMPDEST PUSH2 0x5A39 PUSH1 0x12 PUSH2 0x5968 JUMP JUMPDEST PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x59A3 JUMP JUMPDEST PUSH2 0x5A4B PUSH2 0x1E84 JUMP JUMPDEST DUP1 PUSH2 0x5A5E PUSH2 0x5A58 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x5ABC JUMPI PUSH2 0x5A6B PUSH2 0x5EBB JUMP JUMPDEST POP SWAP2 DUP3 PUSH2 0x5A80 PUSH2 0x5A7A PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x5AAD JUMPI PUSH2 0x5A95 PUSH2 0x5AA5 SWAP2 PUSH2 0x5AAA SWAP5 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x5A9F PUSH1 0x1 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x29BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP POP PUSH2 0x5AB9 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP PUSH2 0x5AC7 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5AEB SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5AF1 JUMPI JUMPDEST PUSH2 0x5AE3 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x592E JUMP JUMPDEST PUSH0 PUSH2 0x5A29 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5AD9 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x5B0E SWAP1 PUSH2 0x5B09 PUSH2 0x6BE0 JUMP JUMPDEST PUSH2 0x5B10 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x5B2B PUSH2 0x5B25 PUSH2 0x5B20 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x5B3B JUMPI PUSH2 0x5B39 SWAP1 PUSH2 0x7025 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B7E PUSH2 0x5B47 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x5B4F PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5B8B SWAP1 PUSH2 0x5AFD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B96 SWAP1 PUSH2 0x1910 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5BAD SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5B8D JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP3 SWAP5 SWAP1 SWAP4 DUP2 SWAP6 PUSH2 0x5BBE PUSH2 0x61C6 JUMP JUMPDEST SWAP5 PUSH2 0x5BCA PUSH0 DUP8 ADD PUSH2 0x207B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5C7B JUMPI JUMPDEST PUSH2 0x5C3F JUMPI PUSH2 0x5C04 SWAP7 PUSH2 0x5BFB SWAP6 PUSH2 0x5BE9 DUP11 PUSH0 DUP11 ADD PUSH2 0x213E JUMP JUMPDEST PUSH2 0x5BF6 PUSH1 0x1 PUSH0 DUP11 ADD PUSH2 0x2191 JUMP JUMPDEST PUSH2 0x5CA0 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x2191 JUMP JUMPDEST PUSH2 0x5C3A PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x5C31 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5B9A JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x5C47 PUSH2 0x312 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5C77 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x5C87 PUSH0 DUP8 ADD PUSH2 0x20A9 JUMP JUMPDEST PUSH2 0x5C99 PUSH2 0x5C93 DUP11 PUSH2 0x1910 JUMP JUMPDEST SWAP2 PUSH2 0x1910 JUMP JUMPDEST LT ISZERO PUSH2 0x5BD1 JUMP JUMPDEST PUSH2 0x5CE6 SWAP3 SWAP4 SWAP7 SWAP6 POP SWAP4 PUSH2 0x5CC2 PUSH2 0x5CDF SWAP3 PUSH2 0x5D2B SWAP7 PUSH2 0x5CBD CALLER PUSH2 0x6208 JUMP JUMPDEST PUSH2 0x6233 JUMP JUMPDEST PUSH2 0x5CCA PUSH2 0x6249 JUMP JUMPDEST PUSH2 0x5CD2 PUSH2 0x626F JUMP JUMPDEST PUSH2 0x5CDA PUSH2 0x6295 JUMP JUMPDEST PUSH2 0x2360 JUMP JUMPDEST PUSH1 0x4 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0x5D01 PUSH2 0x5CFA PUSH8 0xDE0B6B3A7640000 PUSH2 0x23C7 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x5D15 PUSH2 0x5D10 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x5D23 PUSH2 0x312 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5D3B PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5E65 JUMPI PUSH2 0x5D60 PUSH2 0x5DAD SWAP3 PUSH2 0x5DB2 SWAP5 PUSH0 SWAP2 PUSH2 0x5E37 JUMPI JUMPDEST POP PUSH1 0x2 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x5D78 PUSH2 0x5D71 PUSH5 0xE8D4A51000 PUSH2 0x24CB JUMP JUMPDEST PUSH1 0x3 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x5DA6 PUSH2 0x5D85 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x5D9F PUSH2 0x5D99 PUSH2 0x5D94 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x2568 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x67E4 JUMP JUMPDEST PUSH2 0x2604 JUMP JUMPDEST PUSH2 0x5DBB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST PUSH2 0x5DC4 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMPDEST DUP2 PUSH2 0x5DE1 PUSH2 0x5DDB PUSH2 0x5DD6 DUP8 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x5E13 JUMPI PUSH2 0x5E07 PUSH2 0x5E0D SWAP2 PUSH2 0x5E01 PUSH2 0x5DFC DUP8 DUP7 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP2 PUSH2 0x1BFD JUMP JUMPDEST SWAP1 PUSH2 0x5DC6 JUMP JUMPDEST SWAP1 POP PUSH2 0x5E35 SWAP2 SWAP3 POP PUSH2 0x5E2F PUSH2 0x5E29 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x271E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E58 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5E5E JUMPI JUMPDEST PUSH2 0x5E50 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x5D58 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5E46 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP1 PUSH2 0x5E78 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x5BAF JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x5EA6 PUSH2 0x3343 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5EB9 SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x80E1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5EC3 PUSH2 0x1DE8 JUMP JUMPDEST PUSH2 0x5ECB PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x5ED5 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST SWAP1 PUSH2 0x5EDF DUP3 PUSH2 0x1BB7 JUMP JUMPDEST SWAP3 PUSH2 0x5EE9 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x5EFE PUSH2 0x5EF8 DUP7 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x5FD6 JUMPI PUSH2 0x5F1A PUSH0 PUSH2 0x5F13 DUP2 DUP7 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x5F23 DUP2 PUSH2 0x3F5F JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x5F37 PUSH2 0x5F31 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x5FCA JUMPI SWAP2 PUSH2 0x5F99 SWAP2 DUP4 PUSH2 0x5FA0 SWAP5 PUSH2 0x5F61 PUSH2 0x5F5B PUSH2 0x5F56 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x5FA6 JUMPI POP PUSH2 0x5F7F SWAP1 PUSH2 0x5F7A DUP10 SWAP2 DUP9 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST JUMPDEST PUSH2 0x5F93 PUSH2 0x5F8E DUP9 DUP8 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP3 JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST SWAP2 PUSH2 0x5EEB JUMP JUMPDEST PUSH2 0x5FC5 SWAP2 PUSH2 0x5FB3 SWAP2 PUSH2 0x803F JUMP JUMPDEST PUSH2 0x5FC0 DUP10 SWAP2 DUP9 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x5F80 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x5FA0 SWAP1 PUSH2 0x5F9B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x6007 PUSH2 0x600E SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x5FFD PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x601B SWAP2 SUB PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x602C DUP2 DUP4 SWAP1 PUSH2 0x4AD3 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x6060 PUSH2 0x605A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST SUB PUSH2 0x606D JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x6080 PUSH2 0x607A DUP8 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x60A6 JUMPI PUSH2 0x609D SWAP4 SWAP5 PUSH2 0x6095 SWAP2 SWAP4 SWAP3 PUSH2 0x6010 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x80E1 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x6066 JUMP JUMPDEST POP PUSH2 0x60E5 DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x60B6 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x5FDE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x6105 PUSH2 0x60FF PUSH2 0x60FA PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x617F JUMPI DUP2 PUSH2 0x6125 PUSH2 0x611F PUSH2 0x611A PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x6138 JUMPI PUSH2 0x6136 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x8249 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x617B PUSH2 0x6144 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x614C PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x61C2 PUSH2 0x618B PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x6193 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x61FB SWAP1 PUSH2 0x61F6 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x61FD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6206 SWAP1 PUSH2 0x84C7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6211 SWAP1 PUSH2 0x61EA JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6225 SWAP2 PUSH2 0x6220 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x6227 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6231 SWAP2 PUSH2 0x868C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x623D SWAP2 PUSH2 0x6213 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6247 PUSH2 0x83EF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6251 PUSH2 0x623F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x625B PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x6263 PUSH2 0x6265 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x626D PUSH2 0x86C7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6277 PUSH2 0x6253 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6281 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x6289 PUSH2 0x628B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6293 PUSH2 0x86F9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x629D PUSH2 0x6279 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420726562616C616E6365722061646472657373000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x62D3 PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x62DC DUP2 PUSH2 0x629F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x62F5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x62C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x62FF JUMPI JUMP JUMPDEST PUSH2 0x6307 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6337 PUSH1 0x4 DUP3 ADD PUSH2 0x62E0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6368000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x41737365747320616E642077656967687473206C656E677468206D69736D6174 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x6395 PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x639E DUP2 PUSH2 0x633B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x63B7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x6388 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x63C1 JUMPI JUMP JUMPDEST PUSH2 0x63C9 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x63F9 PUSH1 0x4 DUP3 ADD PUSH2 0x63A2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6408 SWAP1 PUSH1 0x4 PUSH2 0x295D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x6449 SWAP2 MUL SWAP2 PUSH2 0x6443 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x640B JUMP JUMPDEST SWAP3 PUSH2 0x640B JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6469 PUSH2 0x6464 PUSH2 0x6471 SWAP4 PUSH2 0x2418 JUMP JUMPDEST PUSH2 0x2434 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x640F JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x6487 SWAP2 PUSH2 0x6481 PUSH2 0x1DE8 JUMP JUMPDEST SWAP2 PUSH2 0x6453 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x3 PUSH2 0x64B5 SWAP3 DUP3 DUP1 DUP3 ADD SSTORE PUSH2 0x64A2 DUP4 PUSH1 0x1 DUP4 ADD PUSH2 0x6475 JUMP JUMPDEST PUSH2 0x64AF DUP4 PUSH1 0x2 DUP4 ADD PUSH2 0x6475 JUMP JUMPDEST ADD PUSH2 0x6475 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 SUB PUSH2 0x64F5 JUMPI PUSH2 0x64F3 SWAP1 PUSH2 0x6489 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x64B7 JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x6506 JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x6513 PUSH0 PUSH1 0x4 SWAP4 PUSH2 0x64E3 JUMP JUMPDEST ADD PUSH2 0x64FB JUMP JUMPDEST SWAP1 SWAP2 DUP3 DUP2 LT PUSH2 0x6528 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6546 PUSH2 0x6540 PUSH2 0x653A PUSH2 0x6551 SWAP6 PUSH2 0x63FD JUMP JUMPDEST SWAP3 PUSH2 0x63FD JUMP JUMPDEST SWAP3 PUSH2 0x15EC JUMP JUMPDEST SWAP2 DUP3 ADD SWAP2 ADD SWAP1 PUSH2 0x64FA JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x6523 JUMP JUMPDEST SWAP1 PUSH9 0x10000000000000000 DUP2 GT PUSH2 0x6582 JUMPI DUP2 PUSH2 0x6577 PUSH2 0x6580 SWAP4 PUSH2 0x15E8 JUMP JUMPDEST SWAP1 DUP3 DUP2 SSTORE PUSH2 0x6519 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST PUSH0 PUSH2 0x6591 SWAP2 PUSH2 0x6559 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH0 SUB PUSH2 0x65A5 JUMPI PUSH2 0x65A3 SWAP1 PUSH2 0x6587 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x64B7 JUMP JUMPDEST PUSH2 0x65B4 SWAP1 MLOAD PUSH2 0x4C3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657420616464726573730000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x65EB PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x65F4 DUP2 PUSH2 0x65B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x660D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x65DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x6617 JUMPI JUMP JUMPDEST PUSH2 0x661F PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x664F PUSH1 0x4 DUP3 ADD PUSH2 0x65F8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420776569676874000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x6687 PUSH1 0xE PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x6690 DUP2 PUSH2 0x6653 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x66A9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x667A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x66B3 JUMPI JUMP JUMPDEST PUSH2 0x66BB PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x66EB PUSH1 0x4 DUP3 ADD PUSH2 0x6694 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x66FC PUSH1 0x80 PUSH2 0x86F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6715 DUP2 PUSH2 0x6708 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x672F JUMPI PUSH2 0x6727 PUSH1 0x4 SWAP2 PUSH2 0x66FF JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST SWAP1 PUSH2 0x6791 PUSH1 0x60 PUSH1 0x3 PUSH2 0x6797 SWAP5 PUSH2 0x6757 PUSH0 DUP3 ADD PUSH2 0x6751 PUSH0 DUP9 ADD PUSH2 0x65AA JUMP JUMPDEST SWAP1 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x6770 PUSH1 0x1 DUP3 ADD PUSH2 0x676A PUSH1 0x20 DUP9 ADD PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x6789 PUSH1 0x2 DUP3 ADD PUSH2 0x6783 PUSH1 0x40 DUP9 ADD PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST ADD SWAP3 ADD PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x67AA JUMPI PUSH2 0x67A8 SWAP2 PUSH2 0x6734 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x64B7 JUMP JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x67DF JUMPI DUP3 PUSH2 0x67D7 SWAP2 PUSH1 0x1 PUSH2 0x67DD SWAP6 ADD DUP2 SSTORE PUSH2 0x670C JUMP JUMPDEST SWAP1 PUSH2 0x6799 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x67EF PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x681D PUSH1 0x20 PUSH2 0x6807 PUSH2 0x6802 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xCFF49D68 SWAP1 PUSH2 0x6815 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x682D PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6BDB JUMPI PUSH0 SWAP2 PUSH2 0x6BAD JUMPI JUMPDEST POP SWAP3 PUSH2 0x686E PUSH1 0x20 PUSH2 0x6858 PUSH2 0x6853 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xCFF49D68 SWAP1 PUSH2 0x6866 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x687E PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6BA8 JUMPI PUSH2 0x68B5 SWAP2 PUSH0 SWAP2 PUSH2 0x6B7A JUMPI JUMPDEST POP PUSH2 0x68AE PUSH2 0x68A8 PUSH2 0x68A3 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x62F8 JUMP JUMPDEST PUSH2 0x68E1 PUSH2 0x68C1 DUP4 PUSH2 0xD49 JUMP JUMPDEST PUSH2 0x68DB PUSH2 0x68D5 PUSH2 0x68D0 DUP6 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x63BA JUMP JUMPDEST PUSH2 0x68EB PUSH0 DUP1 PUSH2 0x6593 JUMP JUMPDEST PUSH2 0x68F4 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x6910 PUSH2 0x690A PUSH2 0x6905 DUP7 PUSH2 0xD49 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x6B70 JUMPI PUSH2 0x694D PUSH2 0x692C PUSH2 0x6927 DUP6 DUP5 SWAP1 PUSH2 0x2EE8 JUMP JUMPDEST PUSH2 0x65AA JUMP JUMPDEST PUSH2 0x6946 PUSH2 0x6940 PUSH2 0x693B PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x697B PUSH2 0x6963 PUSH2 0x695E DUP5 DUP5 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x6975 PUSH2 0x696F PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x66AC JUMP JUMPDEST PUSH2 0x69FE PUSH2 0x6987 PUSH0 PUSH2 0x66EF JUMP JUMPDEST PUSH2 0x699A PUSH2 0x6995 DUP7 DUP6 SWAP1 PUSH2 0x2EE8 JUMP JUMPDEST PUSH2 0x65AA JUMP JUMPDEST SWAP1 PUSH2 0x69F9 PUSH2 0x69F0 PUSH2 0x69B4 PUSH2 0x69AF DUP9 DUP9 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x69EB PUSH2 0x69E2 PUSH0 PUSH2 0x69DD PUSH0 SWAP5 PUSH2 0x69D4 PUSH2 0x69CB PUSH2 0x66F2 JUMP JUMPDEST SWAP11 PUSH0 DUP13 ADD PUSH2 0x2F08 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x67AF JUMP JUMPDEST PUSH2 0x6A19 PUSH2 0x6A14 PUSH2 0x6A0F DUP6 DUP5 SWAP1 PUSH2 0x2EE8 JUMP JUMPDEST PUSH2 0x65AA JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x6A22 DUP2 PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 PUSH2 0x6A33 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP1 PUSH2 0x6A50 DUP11 SWAP5 PUSH2 0x6A5B PUSH2 0x6A44 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x4C9E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6B6B JUMPI PUSH0 SWAP2 PUSH2 0x6B3D JUMPI JUMPDEST POP PUSH2 0x6A80 PUSH2 0x6A7A PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x6A95 JUMPI JUMPDEST POP PUSH2 0x6A90 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x68F5 JUMP JUMPDEST PUSH2 0x6A9E SWAP1 PUSH2 0x1C24 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 DUP8 SWAP1 PUSH2 0x6AE6 PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 PUSH2 0x6AF1 PUSH2 0x6ADA PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x6B38 JUMPI PUSH2 0x6A90 SWAP3 PUSH2 0x6B0C JUMPI JUMPDEST POP SWAP1 PUSH2 0x6A86 JUMP JUMPDEST PUSH2 0x6B2C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6B31 JUMPI JUMPDEST PUSH2 0x6B24 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH2 0x6B05 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6B1A JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x6B5E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6B64 JUMPI JUMPDEST PUSH2 0x6B56 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x6A6D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6B4C JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP POP POP SWAP1 POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x6B9B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6BA1 JUMPI JUMPDEST PUSH2 0x6B93 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x6893 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6B89 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x6BCE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6BD4 JUMPI JUMPDEST PUSH2 0x6BC6 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x683F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6BBC JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x6BE8 PUSH2 0x3347 JUMP JUMPDEST PUSH2 0x6C01 PUSH2 0x6BFB PUSH2 0x6BF6 PUSH2 0x5E9E JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST SUB PUSH2 0x6C08 JUMPI JUMP JUMPDEST PUSH2 0x6C4A PUSH2 0x6C13 PUSH2 0x5E9E JUMP JUMPDEST PUSH2 0x6C1B PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6C56 PUSH2 0x8703 JUMP JUMPDEST PUSH2 0x6C5E PUSH2 0x6C96 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6C6C PUSH1 0xFF SWAP2 PUSH2 0x20FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6C8B PUSH2 0x6C86 PUSH2 0x6C92 SWAP3 PUSH2 0x2182 JUMP JUMPDEST PUSH2 0x218E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x6C60 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x6CAA PUSH2 0x6CA1 PUSH2 0x7001 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x6C76 JUMP JUMPDEST PUSH2 0x6CB2 PUSH2 0x5E9E JUMP JUMPDEST PUSH2 0x6CE8 PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 PUSH2 0x6CDF PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x6CF5 PUSH2 0x6C4E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6D00 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6D0C ADDRESS PUSH2 0x6CF7 JUMP JUMPDEST PUSH2 0x6D3E PUSH2 0x6D38 PUSH32 0x0 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x6D88 JUMPI JUMPDEST PUSH2 0x6D4C JUMPI JUMP JUMPDEST PUSH2 0x6D54 PUSH2 0x312 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6D84 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x6D91 PUSH2 0x8756 JUMP JUMPDEST PUSH2 0x6DC3 PUSH2 0x6DBD PUSH32 0x0 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x6D46 JUMP JUMPDEST POP PUSH2 0x6DD3 PUSH2 0x6BE0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6DDE SWAP1 PUSH2 0x6DCA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6DE9 SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6DF5 SWAP1 PUSH2 0x6DE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6E01 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6E0D DUP2 PUSH2 0xCBA JUMP JUMPDEST SUB PUSH2 0x6E14 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x6E25 DUP3 PUSH2 0x6E04 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x6E40 JUMPI PUSH2 0x6E3D SWAP2 PUSH0 ADD PUSH2 0x6E18 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6E73 PUSH1 0x20 PUSH2 0x6E5D PUSH2 0x6E58 DUP7 PUSH2 0x6DEC JUMP JUMPDEST PUSH2 0x6DF8 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x6E6B PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6E83 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x6F53 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x6EE4 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x6EA5 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x6EE0 SWAP1 PUSH2 0x6EB1 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x6EFF PUSH2 0x6EF9 PUSH2 0x6EF4 PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP2 PUSH2 0xCBA JUMP JUMPDEST SUB PUSH2 0x6F14 JUMPI PUSH2 0x6F0F SWAP3 SWAP4 POP PUSH2 0x8780 JUMP JUMPDEST PUSH2 0x6EA3 JUMP JUMPDEST PUSH2 0x6F4F DUP5 PUSH2 0x6F20 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xCCA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6F75 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6F7C JUMPI JUMPDEST PUSH2 0x6F6D DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6E27 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x6E90 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6F63 JUMP JUMPDEST PUSH2 0x6F8C ADDRESS PUSH2 0x6CF7 JUMP JUMPDEST PUSH2 0x6FBE PUSH2 0x6FB8 PUSH32 0x0 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST SUB PUSH2 0x6FC5 JUMPI JUMP JUMPDEST PUSH2 0x6FCD PUSH2 0x312 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6FFD PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH2 0x702D PUSH2 0x75B5 JUMP JUMPDEST PUSH2 0x7045 PUSH2 0x703B PUSH0 DUP4 ADD PUSH2 0x1636 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x24A8 JUMP JUMPDEST SWAP1 PUSH2 0x7079 PUSH2 0x7073 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP2 PUSH2 0x1730 JUMP JUMPDEST SWAP2 PUSH2 0x7082 PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0x708C DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x709A SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x70A6 SWAP1 PUSH2 0x7091 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x70B2 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x70BF JUMPI JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST SWAP3 PUSH1 0xC0 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x711D PUSH2 0x7112 PUSH2 0x7127 SWAP4 PUSH2 0x7104 PUSH2 0x7131 SWAP8 PUSH2 0x70F6 PUSH2 0x7138 SWAP14 SWAP9 PUSH1 0xE0 DUP13 ADD SWAP1 DUP13 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP1 DUP11 DUP3 SUB PUSH1 0x20 DUP13 ADD MSTORE PUSH2 0xD80 JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x40 DUP11 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP11 PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7167 PUSH1 0x20 PUSH2 0x7151 PUSH2 0x714C PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xCFF49D68 SWAP1 PUSH2 0x715F PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x7177 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x753C JUMPI PUSH0 SWAP2 PUSH2 0x750E JUMPI JUMPDEST POP SWAP1 PUSH2 0x7193 PUSH2 0x2F16 JUMP JUMPDEST SWAP1 PUSH2 0x719C PUSH2 0x1EB8 JUMP JUMPDEST SWAP2 PUSH2 0x71A6 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x71C2 PUSH2 0x71BC PUSH2 0x71B7 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x7379 JUMPI PUSH2 0x71EE PUSH2 0x71E9 PUSH2 0x71E4 PUSH0 PUSH2 0x71DD DUP2 DUP7 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 PUSH2 0x71FF ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP1 PUSH2 0x721C DUP10 SWAP5 PUSH2 0x7227 PUSH2 0x7210 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x4C9E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7374 JUMPI PUSH0 SWAP2 PUSH2 0x7346 JUMPI JUMPDEST POP PUSH2 0x726C PUSH2 0x7266 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x7280 JUMPI JUMPDEST PUSH2 0x727B SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x71A7 JUMP JUMPDEST PUSH2 0x72A6 PUSH2 0x72A1 PUSH2 0x729C PUSH0 PUSH2 0x7295 DUP2 DUP7 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 DUP8 SWAP1 PUSH2 0x72EE PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 PUSH2 0x72F9 PUSH2 0x72E2 PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x7341 JUMPI PUSH2 0x727B SWAP3 PUSH2 0x7315 JUMPI JUMPDEST POP SWAP1 POP PUSH2 0x7272 JUMP JUMPDEST PUSH2 0x7335 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x733A JUMPI JUMPDEST PUSH2 0x732D DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH2 0x730D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7323 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x7367 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x736D JUMPI JUMPDEST PUSH2 0x735F DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x7239 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7355 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP SWAP2 SWAP1 SWAP3 PUSH2 0x7385 PUSH2 0x1CB1 JUMP JUMPDEST PUSH2 0x73B2 PUSH1 0x20 PUSH2 0x739C PUSH2 0x7397 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xEA233C05 SWAP1 PUSH2 0x73AA PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x73C2 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7509 JUMPI PUSH2 0x73E8 SWAP2 PUSH2 0x73E3 SWAP2 PUSH0 SWAP2 PUSH2 0x74DB JUMPI JUMPDEST POP SWAP4 PUSH2 0x709D JUMP JUMPDEST PUSH2 0x70A9 JUMP JUMPDEST PUSH4 0xF0BF7714 DUP6 SWAP5 SWAP4 PUSH2 0x73F9 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP2 PUSH2 0x7403 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP6 PUSH2 0x740E PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST DUP6 EXTCODESIZE ISZERO PUSH2 0x74D6 JUMPI PUSH0 SWAP8 PUSH2 0x7435 SWAP6 DUP10 SWAP6 PUSH2 0x7440 SWAP5 PUSH2 0x7429 PUSH2 0x312 JUMP JUMPDEST SWAP13 DUP14 SWAP12 DUP13 SWAP11 DUP12 SWAP10 PUSH2 0x1C40 JUMP JUMPDEST DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0x70C4 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x74D1 JUMPI PUSH2 0x74A5 JUMPI JUMPDEST POP PUSH2 0x7458 PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x7460 PUSH2 0x7CE2 JUMP JUMPDEST CALLER PUSH2 0x74A0 PUSH2 0x748E PUSH32 0x279B343370F587AF7FB675AE7C8578E9C8ABCC373236AD02C501A4771FE7A7B8 SWAP3 PUSH2 0x1730 JUMP JUMPDEST SWAP3 PUSH2 0x7497 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xDD0 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x74C4 SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x74CA JUMPI JUMPDEST PUSH2 0x74BC DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x70B5 JUMP JUMPDEST PUSH0 PUSH2 0x744F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x74B2 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x1C3C JUMP JUMPDEST PUSH2 0x74FC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7502 JUMPI JUMPDEST PUSH2 0x74F4 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x73DC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x74EA JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x752F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7535 JUMPI JUMPDEST PUSH2 0x7527 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x7189 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x751D JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x7549 PUSH2 0x7FF5 JUMP JUMPDEST PUSH2 0x7551 PUSH2 0x7553 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7568 PUSH2 0x755E PUSH2 0x7001 JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP2 ADD PUSH2 0x6C76 JUMP JUMPDEST PUSH2 0x7570 PUSH2 0x5E9E JUMP JUMPDEST PUSH2 0x75A6 PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 PUSH2 0x759D PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x75B3 PUSH2 0x7541 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x75E3 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x75F5 PUSH2 0x75F0 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x75FE PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x761A PUSH2 0x7614 PUSH2 0x760F PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x76C7 JUMPI PUSH2 0x768A SWAP1 PUSH2 0x7659 PUSH2 0x7648 DUP8 PUSH2 0x7642 PUSH1 0x1 PUSH2 0x763B PUSH0 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x7653 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x766C PUSH2 0x7667 DUP7 DUP5 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x767E PUSH2 0x7678 DUP4 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x768F JUMPI JUMPDEST POP PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x75FF JUMP JUMPDEST PUSH2 0x76AF PUSH2 0x76C1 SWAP2 PUSH2 0x76A9 PUSH2 0x76A4 DUP9 DUP7 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x76BC DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH0 PUSH2 0x7684 JUMP JUMPDEST POP SWAP2 SWAP3 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x76D7 PUSH2 0x1DE8 JUMP JUMPDEST SWAP1 PUSH2 0x76E1 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x76FE PUSH2 0x76F8 PUSH2 0x76F3 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x7730 JUMPI PUSH2 0x7724 PUSH2 0x772A SWAP2 PUSH2 0x771E PUSH2 0x7719 DUP6 DUP8 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP3 PUSH2 0x1BFD JUMP JUMPDEST SWAP2 PUSH2 0x76E3 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420746F6B656E20616D6F756E7420746F206164640000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x776A PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x7773 DUP2 PUSH2 0x7736 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x778C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x775D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x7796 JUMPI JUMP JUMPDEST PUSH2 0x779E PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x77CE PUSH1 0x4 DUP3 ADD PUSH2 0x7777 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x77DA PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x77F1 PUSH0 PUSH2 0x77EA DUP2 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x780C PUSH2 0x7806 PUSH2 0x7801 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x784E JUMPI SWAP1 PUSH2 0x782A PUSH0 PUSH2 0x7823 PUSH2 0x782F SWAP5 DUP3 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x8809 JUMP JUMPDEST PUSH2 0x784B DUP2 PUSH2 0x7845 PUSH2 0x783F PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x778F JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x786D PUSH2 0x7867 PUSH2 0x7862 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x7889 JUMPI PUSH2 0x7887 SWAP2 PUSH2 0x787F PUSH0 PUSH2 0x2503 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x8249 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x78CC PUSH2 0x7895 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x789D PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x78E7 PUSH2 0x78E2 PUSH2 0x78EC SWAP3 PUSH2 0x78D0 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x556E646572666C6F772064656372656D656E74696E6720736C69707061676500 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x7923 PUSH1 0x1F PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x792C DUP2 PUSH2 0x78EF JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7945 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x7916 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x794F JUMPI JUMP JUMPDEST PUSH2 0x7957 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7987 PUSH1 0x4 DUP3 ADD PUSH2 0x7930 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4F766572666C6F7720696E6372656D656E74696E6720736C6970706167650000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x79BF PUSH1 0x1E PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x79C8 DUP2 PUSH2 0x798B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x79E1 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x79B2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x79EB JUMPI JUMP JUMPDEST PUSH2 0x79F3 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7A23 PUSH1 0x4 DUP3 ADD PUSH2 0x79CC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x7A2F PUSH2 0x4890 JUMP JUMPDEST SWAP1 PUSH2 0x7A3A PUSH1 0x64 PUSH2 0x78D3 JUMP JUMPDEST SWAP2 PUSH2 0x7A45 PUSH1 0xA PUSH2 0x5987 JUMP JUMPDEST SWAP2 PUSH2 0x7A4F PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x7A6B PUSH2 0x7A65 PUSH2 0x7A60 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x7CDB JUMPI PUSH2 0x7B81 SWAP1 PUSH2 0x7A8C PUSH1 0x2 PUSH2 0x7A85 PUSH0 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x7A9F PUSH2 0x7A9A DUP7 DUP5 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x7AB1 PUSH2 0x7AAB DUP10 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT ISZERO PUSH2 0x7CBD JUMPI PUSH2 0x7ACA PUSH2 0x7AC5 DUP6 DUP5 SWAP1 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x320B JUMP JUMPDEST PUSH0 EQ PUSH2 0x7BA3 JUMPI PUSH2 0x7B4B SWAP1 PUSH2 0x7B1B PUSH2 0x7AF4 PUSH2 0x7AED PUSH2 0x7AE8 DUP10 DUP8 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST DUP11 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x7B15 PUSH1 0x2 PUSH2 0x7B04 PUSH0 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD SWAP2 PUSH2 0x7B10 DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x2681 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7B44 PUSH2 0x7B3E PUSH2 0x7B38 PUSH1 0x2 PUSH2 0x7B31 PUSH0 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x79E4 JUMP JUMPDEST JUMPDEST PUSH2 0x7B63 PUSH1 0x2 PUSH2 0x7B5C PUSH0 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x7B75 PUSH2 0x7B6F DUP8 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x7B86 JUMPI JUMPDEST JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x7A50 JUMP JUMPDEST PUSH2 0x7B9E DUP6 PUSH1 0x2 PUSH2 0x7B97 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7B7B JUMP JUMPDEST PUSH2 0x7BBA PUSH1 0x2 PUSH2 0x7BB3 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x7BE8 PUSH2 0x7BE2 PUSH2 0x7BDD PUSH2 0x7BD6 PUSH2 0x7BD1 DUP11 DUP9 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x7C70 JUMPI PUSH2 0x7C6A SWAP1 PUSH2 0x7C3A PUSH2 0x7C13 PUSH2 0x7C0C PUSH2 0x7C07 DUP10 DUP8 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST DUP11 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x7C34 PUSH1 0x2 PUSH2 0x7C23 PUSH0 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD SWAP2 PUSH2 0x7C2F DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x29E1 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7C63 PUSH2 0x7C5D PUSH2 0x7C57 PUSH1 0x2 PUSH2 0x7C50 PUSH0 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT ISZERO PUSH2 0x7948 JUMP JUMPDEST JUMPDEST PUSH2 0x7B4C JUMP JUMPDEST POP PUSH2 0x7CB8 PUSH2 0x7C91 PUSH2 0x7C8A PUSH2 0x7C85 DUP8 DUP6 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x7CB2 PUSH1 0x2 PUSH2 0x7CA1 PUSH0 DUP7 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD SWAP2 PUSH2 0x7CAD DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x2681 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7C6B JUMP JUMPDEST POP PUSH2 0x7CD6 DUP6 PUSH1 0x2 PUSH2 0x7CCF PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7B7C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7CEB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x7D07 PUSH2 0x7D01 PUSH2 0x7CFC PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x7DD7 JUMPI PUSH2 0x7D6B SWAP1 PUSH1 0x20 PUSH2 0x7D39 PUSH2 0x7D34 PUSH2 0x7D2F PUSH0 PUSH2 0x7D28 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x7D60 PUSH2 0x7D4B ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x7D54 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7DD2 JUMPI PUSH2 0x7D9F SWAP3 PUSH2 0x7D9A SWAP2 PUSH0 SWAP2 PUSH2 0x7DA4 JUMPI JUMPDEST POP PUSH1 0x3 PUSH2 0x7D93 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x7CEC JUMP JUMPDEST PUSH2 0x7DC5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7DCB JUMPI JUMPDEST PUSH2 0x7DBD DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x7D85 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7DB3 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7DF1 PUSH2 0x7DEC PUSH2 0x7DF6 SWAP3 PUSH2 0x7DDA JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E03 PUSH1 0x2 PUSH2 0x7DDD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E0E PUSH2 0x882B JUMP JUMPDEST PUSH2 0x7E19 PUSH0 DUP3 ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x7E32 PUSH2 0x7E2C PUSH2 0x7E27 PUSH2 0x7DF9 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x7E4D JUMPI PUSH2 0x7E4B SWAP1 PUSH0 PUSH2 0x7E44 PUSH2 0x7DF9 JUMP JUMPDEST SWAP2 ADD PUSH2 0x2437 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7E55 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7E85 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E9D PUSH2 0x7E98 PUSH2 0x7EA2 SWAP3 PUSH2 0x20D2 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7EAF PUSH1 0x1 PUSH2 0x7E89 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7ECD PUSH2 0x7EBD PUSH2 0x882B JUMP JUMPDEST PUSH0 PUSH2 0x7EC6 PUSH2 0x7EA5 JUMP JUMPDEST SWAP2 ADD PUSH2 0x2437 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7ED7 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x7F05 PUSH1 0x20 PUSH2 0x7EEF PUSH2 0x7EEA PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x7EFD PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x7F15 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7FF0 JUMPI PUSH0 SWAP2 PUSH2 0x7FC2 JUMPI JUMPDEST POP SWAP1 PUSH2 0x7F56 PUSH1 0x20 PUSH2 0x7F40 PUSH2 0x7F3B PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x7F4E PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x7F66 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x7FBD JUMPI PUSH2 0x7F8C SWAP4 PUSH2 0x7F87 SWAP3 PUSH0 SWAP2 PUSH2 0x7F8F JUMPI JUMPDEST POP SWAP3 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x29BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7FB0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7FB6 JUMPI JUMPDEST PUSH2 0x7FA8 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x7F80 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7F9E JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x7FE3 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7FE9 JUMPI JUMPDEST PUSH2 0x7FDB DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x7F27 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7FD1 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x7FFD PUSH2 0x2E82 JUMP JUMPDEST PUSH2 0x8003 JUMPI JUMP JUMPDEST PUSH2 0x800B PUSH2 0x312 JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x803B PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x805F SWAP2 PUSH2 0x804C PUSH2 0x1DE8 JUMP JUMPDEST POP SWAP1 PUSH2 0x8058 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x2BEB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x807E PUSH2 0x8078 PUSH2 0x8073 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x809A JUMPI PUSH2 0x8098 SWAP2 SWAP1 PUSH2 0x8091 PUSH0 PUSH2 0x2503 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x8249 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x80DD PUSH2 0x80A6 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x80AE PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP3 PUSH2 0x80EB PUSH2 0x5E7A JUMP JUMPDEST DUP3 PUSH2 0x8106 PUSH2 0x8100 PUSH2 0x80FB PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x81F4 JUMPI DUP5 PUSH2 0x8126 PUSH2 0x8120 PUSH2 0x811B PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x81AD JUMPI PUSH2 0x814D SWAP1 PUSH2 0x8148 PUSH2 0x8141 PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x4ABD JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x8157 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x81A2 PUSH2 0x8190 PUSH2 0x818A PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP4 PUSH2 0x8199 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x8152 JUMP JUMPDEST PUSH2 0x81F0 PUSH2 0x81B9 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x81C1 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x8237 PUSH2 0x8200 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x8208 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x8246 SWAP2 ADD PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x8254 PUSH2 0x5E7A JUMP JUMPDEST DUP2 PUSH2 0x826F PUSH2 0x8269 PUSH2 0x8264 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x835A JUMPI PUSH2 0x8296 DUP4 PUSH2 0x8290 PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x828B DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x2681 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x82B2 PUSH2 0x82AC PUSH2 0x82A7 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x832B JUMPI PUSH2 0x82DA SWAP1 PUSH2 0x82D4 PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x82CF DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x6010 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x8326 PUSH2 0x8314 PUSH2 0x830E PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP4 PUSH2 0x831D PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x8355 SWAP1 PUSH2 0x834F PUSH2 0x8340 PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x173C JUMP JUMPDEST SWAP2 PUSH2 0x834A DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x823B JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x82DB JUMP JUMPDEST PUSH2 0x836F PUSH2 0x836A PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH2 0x1657 JUMP JUMPDEST DUP1 PUSH2 0x8382 PUSH2 0x837C DUP7 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x83AC JUMPI PUSH2 0x8395 PUSH2 0x83A7 SWAP2 DUP6 SWAP1 PUSH2 0x6010 JUMP JUMPDEST PUSH2 0x83A2 PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x8297 JUMP JUMPDEST SWAP2 PUSH2 0x83EB SWAP2 POP SWAP2 SWAP3 PUSH2 0x83BC PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x5FDE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x8400 PUSH2 0x83FA PUSH2 0x884F JUMP JUMPDEST ISZERO PUSH2 0x542 JUMP JUMPDEST PUSH2 0x8406 JUMPI JUMP JUMPDEST PUSH2 0x840E PUSH2 0x312 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x843E PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x8453 SWAP1 PUSH2 0x844E PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x8455 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x8470 PUSH2 0x846A PUSH2 0x8465 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x8480 JUMPI PUSH2 0x847E SWAP1 PUSH2 0x7025 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x84C3 PUSH2 0x848C PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x8494 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x84D0 SWAP1 PUSH2 0x8442 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x84E4 SWAP2 PUSH2 0x84DF PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x8668 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x84FC JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x8509 PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x6475 JUMP JUMPDEST ADD PUSH2 0x84F1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x851F JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x852B PUSH2 0x8550 SWAP4 PUSH2 0x1AA7 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x8537 DUP5 PUSH2 0x84E6 JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x8558 JUMPI JUMPDEST PUSH2 0x8549 SWAP1 PUSH2 0x84E6 JUMP JUMPDEST ADD SWAP1 PUSH2 0x84F0 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x851A JUMP JUMPDEST SWAP2 POP PUSH2 0x8549 DUP2 SWAP3 SWAP1 POP PUSH2 0x8540 JUMP JUMPDEST SWAP1 PUSH2 0x8576 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0xE85 JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x8585 SWAP2 PUSH2 0x8566 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8597 DUP2 PUSH2 0x32F JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x8657 JUMPI PUSH2 0x85BB DUP3 PUSH2 0x85B5 DUP6 SLOAD PUSH2 0x1A74 JUMP JUMPDEST DUP6 PUSH2 0x850F JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x85EF JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x85DE SWAP4 PUSH0 SWAP3 PUSH2 0x85E3 JUMPI JUMPDEST POP POP PUSH2 0x857B JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x85D7 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x85FE DUP6 PUSH2 0x1AA7 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x863F JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x8625 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x85E1 JUMP JUMPDEST PUSH2 0x8635 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x8566 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x8619 JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x8601 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 PUSH2 0x8666 SWAP2 PUSH2 0x858D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x868A SWAP3 PUSH2 0x8683 PUSH2 0x8679 PUSH2 0x5E7A JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x865C JUMP JUMPDEST SWAP2 ADD PUSH2 0x865C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x8696 SWAP2 PUSH2 0x84D2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86A0 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x86A8 PUSH2 0x86AA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86C5 PUSH2 0x86B5 PUSH2 0x882B JUMP JUMPDEST PUSH0 PUSH2 0x86BE PUSH2 0x7EA5 JUMP JUMPDEST SWAP2 ADD PUSH2 0x2437 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86CF PUSH2 0x8698 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86D9 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x86E1 PUSH2 0x86E3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86F7 PUSH2 0x86EE PUSH2 0x7001 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x6C76 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8701 PUSH2 0x86D1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8714 PUSH2 0x870E PUSH2 0x2E82 JUMP JUMPDEST ISZERO PUSH2 0x542 JUMP JUMPDEST PUSH2 0x871A JUMPI JUMP JUMPDEST PUSH2 0x8722 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x8752 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x875E PUSH2 0x3343 JUMP JUMPDEST POP PUSH2 0x8779 PUSH0 PUSH2 0x8773 PUSH2 0x876E PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0x886D JUMP JUMPDEST ADD PUSH2 0x1636 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x878A DUP3 PUSH2 0x8870 JUMP JUMPDEST DUP2 PUSH2 0x87B5 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x87BE PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0x87C8 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x87D4 DUP2 PUSH2 0x877C JUMP JUMPDEST PUSH2 0x87E6 PUSH2 0x87E0 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x87FA JUMPI PUSH2 0x87F6 SWAP2 PUSH2 0x8980 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x8804 PUSH2 0x88E5 JUMP JUMPDEST PUSH2 0x87F8 JUMP JUMPDEST PUSH2 0x8828 SWAP2 PUSH2 0x8815 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x8820 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x2BEB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH2 0x8857 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x886A PUSH0 PUSH2 0x8864 PUSH2 0x61C6 JUMP JUMPDEST ADD PUSH2 0x207B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x8884 PUSH2 0x887E PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x88A6 JUMPI PUSH2 0x88A4 SWAP1 PUSH0 PUSH2 0x889E PUSH2 0x8899 PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0x886D JUMP JUMPDEST ADD PUSH2 0x24A8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x88E1 SWAP1 PUSH2 0x88B2 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x88F8 PUSH2 0x88F2 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x88FF JUMPI JUMP JUMPDEST PUSH2 0x8907 PUSH2 0x312 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x8937 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8952 PUSH2 0x894D DUP4 PUSH2 0xBCF JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x8972 JUMPI PUSH2 0x8967 RETURNDATASIZE PUSH2 0x8940 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x897A PUSH2 0x893B JUMP JUMPDEST SWAP1 PUSH2 0x8970 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x89AC SWAP4 PUSH2 0x898E PUSH2 0x893B JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x89A3 PUSH2 0x8957 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x89AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x89C3 SWAP1 PUSH2 0x89BC PUSH2 0x893B JUMP JUMPDEST POP ISZERO PUSH2 0x542 JUMP JUMPDEST PUSH0 EQ PUSH2 0x89CF JUMPI POP PUSH2 0x8A53 JUMP JUMPDEST PUSH2 0x89D8 DUP3 PUSH2 0x877C JUMP JUMPDEST PUSH2 0x89EA PUSH2 0x89E4 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ DUP1 PUSH2 0x8A38 JUMPI JUMPDEST PUSH2 0x89F9 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x8A34 SWAP1 PUSH2 0x8A05 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x8A4D PUSH2 0x8A47 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x89F1 JUMP JUMPDEST PUSH2 0x8A5C DUP2 PUSH2 0x877C JUMP JUMPDEST PUSH2 0x8A6E PUSH2 0x8A68 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x8A7D JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x8A85 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x8AB5 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 SWAP2 PUSH29 0xFC9BFDD74B7291619426FCEB93E7BFCA689514990ECB531A91C62DE1DB PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"2182:33293:61:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;151:2446:35:-;;;:::i;:::-;:::o;701:3153:5:-;;;:::i;:::-;:::o;950:3411:6:-;;;:::i;:::-;:::o;1576:10896:3:-;;;:::i;:::-;:::o;278:1764:8:-;;;:::i;:::-;:::o;277:405:13:-;;;:::i;:::-;:::o;203:2575:12:-;;;:::i;:::-;:::o;749:3275:0:-;;;:::i;:::-;:::o;688:505:4:-;;;:::i;:::-;:::o;2182:33293:61:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":800,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":1251,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":9336,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":6048,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":1715,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_addresst_uint256t_uint256t_addresst_uint256":{"entryPoint":4395,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_addresst_array_uint256_dynt_uint256":{"entryPoint":4871,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_bytes":{"entryPoint":3147,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint256":{"entryPoint":1301,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn":{"entryPoint":2435,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":2586,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_array_address_dyn":{"entryPoint":2348,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_array_uint256_dyn":{"entryPoint":2499,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":3058,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_string":{"entryPoint":2226,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":13192,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":28199,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_fromMemory":{"entryPoint":28853,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_string":{"entryPoint":2280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_stringt_stringt_array_address_dynt_array_uint256_dynt_address":{"entryPoint":2621,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_stringt_stringt_array_address_dynt_array_uint256_dynt_addresst_uint64":{"entryPoint":6464,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_t_bool_fromMemory":{"entryPoint":13177,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":28184,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":7238,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":1439,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":9351,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint256":{"entryPoint":5480,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":22830,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":1286,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":7253,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_addresst_uint256":{"entryPoint":6147,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint64":{"entryPoint":6449,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":22815,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_address":{"entryPoint":3433,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_bool":{"entryPoint":5040,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_string_storage":{"entryPoint":6972,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_uint256":{"entryPoint":1010,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":4202,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address":{"entryPoint":19614,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":11193,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_uint256":{"entryPoint":15385,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_to_address":{"entryPoint":3420,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_uint256":{"entryPoint":15350,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_uint256_uint256":{"entryPoint":24542,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_uint256_uint256_uint256":{"entryPoint":5817,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_array_address_dyn":{"entryPoint":3456,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_memory_ptr":{"entryPoint":3536,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_bool_dyn":{"entryPoint":5063,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_bool_dyn_array_uint256_dyn":{"entryPoint":5143,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":1113,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_array_address_dyn_array_uint256_dyn_uint256_address_address_address":{"entryPoint":28868,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_array_uint256_dyn_memory_ptr":{"entryPoint":1033,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":5027,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bool_to_bool":{"entryPoint":1351,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":3274,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":3261,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":3854,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":8638,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":8625,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":898,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":849,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":6832,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":17518,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_0ced":{"entryPoint":9708,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4":{"entryPoint":9682,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1462":{"entryPoint":19341,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1957":{"entryPoint":16806,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_195739df032cb3c07c5ed70a4cae73c5d077df4296263c6db3d1f3b4671efbd0":{"entryPoint":16780,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_2313":{"entryPoint":30557,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_293e":{"entryPoint":15039,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_2b2c":{"entryPoint":20608,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_2b2c7f7f6207be48a0d3cd2cc9fdd002faa3beed1d5d8e029fc4651619e97737":{"entryPoint":20582,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335f":{"entryPoint":14403,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":14378,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_379a":{"entryPoint":20064,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_379a432f00aa43993bfbf4e01492a8eab5138dcd2e395864ede728644390fc31":{"entryPoint":20038,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_37b2":{"entryPoint":19497,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_391a":{"entryPoint":9552,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_391a75680d8ec99739af126cde56833526e4b720a416f24f1d7ee98c294a45b1":{"entryPoint":9526,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5590":{"entryPoint":15233,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5cbb":{"entryPoint":14533,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5cbb24ca678c0bc148b6d1d734942e230f1d3686258ae74c758d5ae27e1715ef":{"entryPoint":14559,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5cbb8d647918028d0523fccac550113bbbb71d463bbb8b573c02c32bc5cf2b89":{"entryPoint":9964,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_6f3b":{"entryPoint":14222,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_74c7":{"entryPoint":14689,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_788c":{"entryPoint":16624,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_795f":{"entryPoint":26104,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_795f8eca8a22be2e70f1d9bdebdbf85a1dc43e172c3964e13eac586b45ff2b92":{"entryPoint":26078,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7c81":{"entryPoint":20764,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7c814c07c32441cfc9da2a21de4a11134ec9451c699d8fbc5bbba1c5f5bc0385":{"entryPoint":20738,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7fe0":{"entryPoint":30998,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_85d3":{"entryPoint":14871,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_85d32796faf4bbe37cfdb7e983d4048fee52ebcfc8d2f22a939ce47e85d98ae8":{"entryPoint":14845,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_9500":{"entryPoint":31154,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_a245":{"entryPoint":17388,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_a245c00c976af272c663e732300fe860097516364a0d92887494f54e860fa54c":{"entryPoint":17362,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ad62":{"entryPoint":20194,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b15d":{"entryPoint":19908,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b15dc5b153b2c449b92f843a705e400d626f4dd8b96994ac655c7b213dc2911a":{"entryPoint":19882,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b326":{"entryPoint":25286,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b5c2":{"entryPoint":11064,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b6d2":{"entryPoint":19726,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bd72":{"entryPoint":13825,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_d34d":{"entryPoint":14092,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743":{"entryPoint":14066,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_e4fc":{"entryPoint":12335,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_e4fcae9c0286e861087281117e0a3185ced905823104b290e1fe3ba826d8d280":{"entryPoint":12309,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_e8ec":{"entryPoint":17168,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ebb5":{"entryPoint":25506,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ebb567ad160cf2ebbf5e53ab40a3ffae6f6492169d006ee3f8bad6794e36f372":{"entryPoint":25480,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ecd1":{"entryPoint":17000,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ecd1f43c49e42563d3d1cb2a475a1c07f80ae9004e2e7b217754177af01e7482":{"entryPoint":16974,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f8b1":{"entryPoint":18967,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f8b105b0b4a7ff5c11f41135d6d4600fd47da6168663f6cb1810745b08d83918":{"entryPoint":18941,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_fc2f":{"entryPoint":20920,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_fc2f8692ca59eb8838d740ab96a08e7dab54c967cc56eb0a9b640ce78eb1103e":{"entryPoint":20894,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_fd98":{"entryPoint":20388,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ff1e":{"entryPoint":26260,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ff1ef73e4333da4da038aba1312a1df349427c8859c23d4b6d4a7df22bfc1a19":{"entryPoint":26234,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":2804,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":4215,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_bool":{"entryPoint":1364,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":3867,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":31180,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_1462":{"entryPoint":19367,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_2313":{"entryPoint":30583,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_293e":{"entryPoint":15065,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_37b2":{"entryPoint":19523,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_5032":{"entryPoint":17544,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_5590":{"entryPoint":15259,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_5cbb":{"entryPoint":9990,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_6f3b":{"entryPoint":14248,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_74c7":{"entryPoint":14715,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_788c":{"entryPoint":16650,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_7fe0":{"entryPoint":31024,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_ad62":{"entryPoint":20220,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_b326":{"entryPoint":25312,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_b5c2":{"entryPoint":11090,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_b6d2":{"entryPoint":19752,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_bd72":{"entryPoint":13851,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_e8ec":{"entryPoint":17194,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_fd98":{"entryPoint":20414,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":23450,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":1482,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn":{"entryPoint":1880,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":997,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_to_uint256_fromStack":{"entryPoint":1469,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_uint256":{"entryPoint":4495,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint64":{"entryPoint":23437,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint8":{"entryPoint":1991,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint8_to_uint8":{"entryPoint":1978,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_address_dyn":{"entryPoint":11969,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_bool_dyn":{"entryPoint":18523,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":7095,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":2159,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_address_dyn":{"entryPoint":11941,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_bool_dyn":{"entryPoint":18495,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_uint256_dyn":{"entryPoint":7067,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":35136,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":4645,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_struct_struct_AssetInfo_storage_ptr":{"entryPoint":26354,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_unbounded":{"entryPoint":786,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":2315,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_bool_dyn":{"entryPoint":18466,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":2470,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":3023,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2180,"id":null,"parameterSlots":1,"returnSlots":1},"array_convert_length_to_size_array_struct_AssetInfo_storage_dyn":{"entryPoint":25597,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn":{"entryPoint":3414,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_bool_dyn":{"entryPoint":5021,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_struct_AssetInfo_storage_dyn":{"entryPoint":5612,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_struct_AssetInfo_storage_dyn_ptr":{"entryPoint":26367,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_uint256_dyn":{"entryPoint":988,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":6823,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":3401,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_bool_dyn":{"entryPoint":5008,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_struct_AssetInfo_storage_dyn":{"entryPoint":5608,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_struct_AssetInfo_storage_dyn_ptr":{"entryPoint":26376,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_uint256_dyn":{"entryPoint":975,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":34684,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":815,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn":{"entryPoint":3450,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_bool_dyn":{"entryPoint":5057,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_uint256_dyn":{"entryPoint":1027,"id":null,"parameterSlots":1,"returnSlots":1},"array_push_from_struct_AssetInfo_to_array_struct_AssetInfo_storage_dyn_ptr":{"entryPoint":26543,"id":null,"parameterSlots":2,"returnSlots":0},"array_storeLengthForEncoding_array_address_dyn":{"entryPoint":3405,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_bool_dyn":{"entryPoint":5012,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_uint256_dyn":{"entryPoint":979,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":6814,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string_fromStack":{"entryPoint":819,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":9857,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":10687,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint256":{"entryPoint":22947,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":10589,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":10721,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":34063,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_address":{"entryPoint":1219,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":1346,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":3258,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":5349,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":8289,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":3721,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":5240,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":8328,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_0_by":{"entryPoint":7134,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1000000000000_by":{"entryPoint":9416,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_10_by":{"entryPoint":22916,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1_by":{"entryPoint":8402,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by":{"entryPoint":11767,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_2_by":{"entryPoint":32218,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":30928,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":8230,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_storage_array_end_array_struct_AssetInfo__dyn":{"entryPoint":25881,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_rational_by":{"entryPoint":9894,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":9156,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":1194,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":994,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":6416,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":1972,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_array_array_struct_AssetInfo__dyn":{"entryPoint":25991,"id":null,"parameterSlots":1,"returnSlots":0},"clear_storage_range_bytes1":{"entryPoint":34032,"id":null,"parameterSlots":2,"returnSlots":0},"clear_storage_range_struct_AssetInfo":{"entryPoint":25850,"id":null,"parameterSlots":2,"returnSlots":0},"clear_struct_storage_struct_AssetInfo":{"entryPoint":25737,"id":null,"parameterSlots":1,"returnSlots":0},"constant_ENTERED":{"entryPoint":32249,"id":null,"parameterSlots":0,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":11798,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NOT_ENTERED":{"entryPoint":32421,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":4743,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":5936,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Oracle":{"entryPoint":11013,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Rebalancer":{"entryPoint":28829,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":9056,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":28140,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":7192,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":22771,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_struct_AssetInfo_storage_dyn_storage_to_array_struct_AssetInfo__dyn_ptr":{"entryPoint":26351,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_string_storage_to_string":{"entryPoint":7019,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":8578,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1Pool_to_address":{"entryPoint":7216,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Oracle_to_address":{"entryPoint":11181,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Rebalancer_to_address":{"entryPoint":28841,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":3842,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":9109,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":28152,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":22783,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":7204,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":8433,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":27895,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":7137,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_10000_by_1_to_uint256":{"entryPoint":9897,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_100_by_1_to_uint256":{"entryPoint":30931,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_10_by_1_to_uint256":{"entryPoint":22919,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_18_by_1_to_uint256":{"entryPoint":22888,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1_by_1_to_uint256":{"entryPoint":32393,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":32221,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":9475,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":11770,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":9447,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":9159,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":8405,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint8":{"entryPoint":8233,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":4732,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":9419,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":8374,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":3830,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Oracle":{"entryPoint":11001,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Rebalancer":{"entryPoint":28817,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":9044,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":28128,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":7180,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":22759,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":3802,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":9240,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":8479,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint8_to_uint256":{"entryPoint":22860,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_string":{"entryPoint":6985,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_string_to_string":{"entryPoint":34189,"id":null,"parameterSlots":2,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":2215,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":4707,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":828,"id":null,"parameterSlots":3,"returnSlots":0},"copy_struct_to_storage_from_struct_AssetInfo_to_struct_AssetInfo":{"entryPoint":26420,"id":null,"parameterSlots":2,"returnSlots":0},"divide_by_ceil":{"entryPoint":34022,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_ONE":{"entryPoint":5296,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":4765,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allowance":{"entryPoint":6093,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":1385,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_assetInfos":{"entryPoint":5879,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_assetLiquidity":{"entryPoint":5510,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":3613,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baseAsset":{"entryPoint":5427,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_calculateAssetShare":{"entryPoint":6259,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_decimals":{"entryPoint":2012,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_deposit":{"entryPoint":4954,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAmountOut":{"entryPoint":2969,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAssetReserve":{"entryPoint":4818,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAssets":{"entryPoint":3560,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getDeviationForToken":{"entryPoint":4096,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getDeviations":{"entryPoint":5186,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getReserves":{"entryPoint":1137,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getSlippage":{"entryPoint":1503,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getSlippageParams":{"entryPoint":3992,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getTokenWeight":{"entryPoint":1827,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getWeights":{"entryPoint":1662,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2809,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isRebalanceNeeded":{"entryPoint":4149,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_liquidity":{"entryPoint":1609,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_name":{"entryPoint":922,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":4236,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_pause":{"entryPoint":4045,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_paused":{"entryPoint":3348,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":3295,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quotePotentialSwap":{"entryPoint":2915,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_rebalance":{"entryPoint":3941,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_rebalanceAndDeposit":{"entryPoint":4289,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":3888,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":6660,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":3666,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reserves":{"entryPoint":5995,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_swap":{"entryPoint":4530,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_symbol":{"entryPoint":4342,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":1556,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalValuation":{"entryPoint":1918,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transfer":{"entryPoint":4591,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":1773,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":6365,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unitPrice":{"entryPoint":6312,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unpause":{"entryPoint":2864,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":3216,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_withdraw":{"entryPoint":6205,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6772,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_dynamict_address":{"entryPoint":5374,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":3746,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_uint256":{"entryPoint":5243,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offset_8t_bool":{"entryPoint":8295,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":5666,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":11873,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":9303,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":5699,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":8341,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":35159,"id":null,"parameterSlots":0,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":34171,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":2118,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init":{"entryPoint":25139,"id":698,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_inner":{"entryPoint":25127,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained":{"entryPoint":34444,"id":726,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained_inner":{"entryPoint":34408,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":25096,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":25085,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":33991,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":33877,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Pausable_init":{"entryPoint":25237,"id":1345,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_inner":{"entryPoint":25227,"id":null,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_unchained":{"entryPoint":34553,"id":1363,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_unchained_inner":{"entryPoint":34531,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init":{"entryPoint":25199,"id":1509,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_inner":{"entryPoint":25189,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained":{"entryPoint":34503,"id":1527,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained_inner":{"entryPoint":34474,"id":null,"parameterSlots":0,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":25161,"id":502,"parameterSlots":0,"returnSlots":0},"fun__approve":{"entryPoint":24235,"id":1130,"parameterSlots":3,"returnSlots":0},"fun__pause":{"entryPoint":30123,"id":1444,"parameterSlots":0,"returnSlots":0},"fun__pause_inner":{"entryPoint":30035,"id":null,"parameterSlots":0,"returnSlots":0},"fun__transfer":{"entryPoint":24809,"id":954,"parameterSlots":3,"returnSlots":0},"fun__transferOwnership":{"entryPoint":28709,"id":193,"parameterSlots":1,"returnSlots":0},"fun__update":{"entryPoint":33353,"id":1046,"parameterSlots":3,"returnSlots":0},"fun_allowance":{"entryPoint":19155,"id":851,"parameterSlots":2,"returnSlots":1},"fun_approve":{"entryPoint":7622,"id":875,"parameterSlots":2,"returnSlots":1},"fun_approve_1198":{"entryPoint":32993,"id":1198,"parameterSlots":4,"returnSlots":0},"fun_assetLiquidity":{"entryPoint":19058,"id":16012,"parameterSlots":1,"returnSlots":1},"fun_authorizeUpgrade":{"entryPoint":28117,"id":14433,"parameterSlots":1,"returnSlots":0},"fun_balanceOf":{"entryPoint":12184,"id":803,"parameterSlots":1,"returnSlots":1},"fun_burn":{"entryPoint":32866,"id":1112,"parameterSlots":2,"returnSlots":0},"fun_calculateAmountsToAdd":{"entryPoint":30169,"id":16670,"parameterSlots":2,"returnSlots":1},"fun_calculateAssetShare":{"entryPoint":22436,"id":15784,"parameterSlots":1,"returnSlots":1},"fun_calculateLiquidity":{"entryPoint":30674,"id":16709,"parameterSlots":2,"returnSlots":1},"fun_calculateTotalAddedLiquidity":{"entryPoint":30415,"id":16604,"parameterSlots":1,"returnSlots":1},"fun_checkInitializing":{"entryPoint":33775,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":35045,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":28547,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":27616,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":27907,"id":562,"parameterSlots":0,"returnSlots":0},"fun_computeTotalValuation":{"entryPoint":24251,"id":16448,"parameterSlots":0,"returnSlots":2},"fun_convertBaseToToken":{"entryPoint":34825,"id":16726,"parameterSlots":2,"returnSlots":1},"fun_convertTokenToBase":{"entryPoint":32831,"id":16743,"parameterSlots":2,"returnSlots":1},"fun_decimals":{"entryPoint":8261,"id":767,"parameterSlots":0,"returnSlots":1},"fun_deposit":{"entryPoint":18439,"id":15477,"parameterSlots":3,"returnSlots":1},"fun_deposit_inner":{"entryPoint":17635,"id":null,"parameterSlots":4,"returnSlots":1},"fun_functionDelegateCall":{"entryPoint":35200,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":34925,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getAmountOut":{"entryPoint":11243,"id":15858,"parameterSlots":3,"returnSlots":1},"fun_getAssetReserve":{"entryPoint":16223,"id":16208,"parameterSlots":1,"returnSlots":1},"fun_getAssets":{"entryPoint":12054,"id":16253,"parameterSlots":0,"returnSlots":1},"fun_getDeviationForToken":{"entryPoint":12621,"id":15228,"parameterSlots":1,"returnSlots":1},"fun_getDeviations":{"entryPoint":18576,"id":15982,"parameterSlots":0,"returnSlots":2},"fun_getERC20Storage":{"entryPoint":24186,"id":682,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":34646,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":25030,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":30133,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getPausableStorage":{"entryPoint":28673,"id":1319,"parameterSlots":0,"returnSlots":1},"fun_getReentrancyGuardStorage":{"entryPoint":34859,"id":1497,"parameterSlots":0,"returnSlots":1},"fun_getReserves":{"entryPoint":7345,"id":16168,"parameterSlots":0,"returnSlots":1},"fun_getSlippage":{"entryPoint":7660,"id":14999,"parameterSlots":1,"returnSlots":1},"fun_getSlippageParams":{"entryPoint":12452,"id":15273,"parameterSlots":0,"returnSlots":1},"fun_getTokenWeight":{"entryPoint":8042,"id":15183,"parameterSlots":1,"returnSlots":1},"fun_getWeights":{"entryPoint":7864,"id":16298,"parameterSlots":0,"returnSlots":1},"fun_haircut":{"entryPoint":32463,"id":15812,"parameterSlots":1,"returnSlots":1},"fun_initialize":{"entryPoint":10536,"id":14310,"parameterSlots":5,"returnSlots":0},"fun_initializeAssets":{"entryPoint":26596,"id":14565,"parameterSlots":2,"returnSlots":1},"fun_initialize_inner":{"entryPoint":10081,"id":null,"parameterSlots":5,"returnSlots":0},"fun_isInitializing":{"entryPoint":34895,"id":438,"parameterSlots":0,"returnSlots":1},"fun_isRebalanceNeeded":{"entryPoint":12824,"id":16350,"parameterSlots":0,"returnSlots":1},"fun_liquidity":{"entryPoint":7843,"id":16049,"parameterSlots":0,"returnSlots":1},"fun_mint":{"entryPoint":30802,"id":1079,"parameterSlots":2,"returnSlots":0},"fun_msgSender":{"entryPoint":24222,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_name":{"entryPoint":7031,"id":742,"parameterSlots":0,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":32434,"id":1579,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":32262,"id":1563,"parameterSlots":0,"returnSlots":0},"fun_owner":{"entryPoint":13127,"id":105,"parameterSlots":0,"returnSlots":1},"fun_pause":{"entryPoint":12611,"id":16839,"parameterSlots":0,"returnSlots":0},"fun_pause_inner":{"entryPoint":12601,"id":null,"parameterSlots":0,"returnSlots":0},"fun_paused":{"entryPoint":11906,"id":1395,"parameterSlots":0,"returnSlots":1},"fun_performRebalanceIfNeeded":{"entryPoint":28986,"id":16573,"parameterSlots":0,"returnSlots":0},"fun_proxiableUUID":{"entryPoint":11854,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":11842,"id":null,"parameterSlots":1,"returnSlots":1},"fun_quotePotentialSwap":{"entryPoint":10758,"id":14961,"parameterSlots":3,"returnSlots":1},"fun_rebalance":{"entryPoint":12426,"id":15873,"parameterSlots":0,"returnSlots":0},"fun_rebalanceAndDeposit":{"entryPoint":13222,"id":14690,"parameterSlots":1,"returnSlots":1},"fun_reinitialize":{"entryPoint":24170,"id":14423,"parameterSlots":6,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":23712,"id":null,"parameterSlots":6,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":12260,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":12241,"id":null,"parameterSlots":0,"returnSlots":0},"fun_requireNotPaused":{"entryPoint":32757,"id":1407,"parameterSlots":0,"returnSlots":0},"fun_requirePaused":{"entryPoint":34563,"id":1420,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":35411,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":34928,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_spendAllowance":{"entryPoint":24606,"id":1246,"parameterSlots":3,"returnSlots":0},"fun_swap":{"entryPoint":16154,"id":14854,"parameterSlots":6,"returnSlots":2},"fun_swap_inner":{"entryPoint":15447,"id":null,"parameterSlots":8,"returnSlots":2},"fun_symbol":{"entryPoint":13755,"id":758,"parameterSlots":0,"returnSlots":1},"fun_totalSupply":{"entryPoint":7812,"id":783,"parameterSlots":0,"returnSlots":1},"fun_totalValuation":{"entryPoint":8194,"id":16034,"parameterSlots":0,"returnSlots":2},"fun_transfer":{"entryPoint":16189,"id":827,"parameterSlots":2,"returnSlots":1},"fun_transferFrom":{"entryPoint":7995,"id":907,"parameterSlots":3,"returnSlots":1},"fun_transferOwnership":{"entryPoint":23426,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":23312,"id":null,"parameterSlots":1,"returnSlots":0},"fun_unitPrice":{"entryPoint":22975,"id":16115,"parameterSlots":0,"returnSlots":1},"fun_unpause":{"entryPoint":27885,"id":1468,"parameterSlots":0,"returnSlots":0},"fun_unpause_16849":{"entryPoint":10579,"id":16849,"parameterSlots":0,"returnSlots":0},"fun_unpause_16849_inner":{"entryPoint":10569,"id":null,"parameterSlots":0,"returnSlots":0},"fun_unpause_inner":{"entryPoint":27798,"id":null,"parameterSlots":0,"returnSlots":0},"fun_update":{"entryPoint":31970,"id":16884,"parameterSlots":0,"returnSlots":0},"fun_updateSlippage":{"entryPoint":31271,"id":15145,"parameterSlots":0,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":34688,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":28229,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":11731,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":11710,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":35247,"id":2889,"parameterSlots":3,"returnSlots":1},"fun_withdraw":{"entryPoint":22414,"id":15708,"parameterSlots":3,"returnSlots":1},"fun_withdraw_inner":{"entryPoint":21011,"id":null,"parameterSlots":4,"returnSlots":1},"getter_fun_ONE":{"entryPoint":5281,"id":14172,"parameterSlots":0,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":4754,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_assetInfos":{"entryPoint":5732,"id":14170,"parameterSlots":1,"returnSlots":4},"getter_fun_baseAsset":{"entryPoint":5412,"id":14174,"parameterSlots":0,"returnSlots":1},"getter_fun_registry":{"entryPoint":3784,"id":14179,"parameterSlots":0,"returnSlots":1},"getter_fun_reserves":{"entryPoint":5970,"id":14184,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":3799,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":7165,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":19133,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":5948,"id":null,"parameterSlots":2,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":34150,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":12008,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_bool_dyn":{"entryPoint":12779,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":7299,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_ensure":{"entryPoint":19204,"id":14199,"parameterSlots":4,"returnSlots":1},"modifier_ensure_14708":{"entryPoint":13942,"id":14199,"parameterSlots":8,"returnSlots":2},"modifier_ensure_15286":{"entryPoint":16487,"id":14199,"parameterSlots":4,"returnSlots":1},"modifier_initializer":{"entryPoint":8659,"id":302,"parameterSlots":5,"returnSlots":0},"modifier_nonReentrant":{"entryPoint":19248,"id":1538,"parameterSlots":4,"returnSlots":1},"modifier_nonReentrant_14710":{"entryPoint":13991,"id":1538,"parameterSlots":8,"returnSlots":2},"modifier_nonReentrant_15288":{"entryPoint":16531,"id":1538,"parameterSlots":4,"returnSlots":1},"modifier_notDelegated":{"entryPoint":11747,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":33858,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_1339":{"entryPoint":25209,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1348":{"entryPoint":34513,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1503":{"entryPoint":25171,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1512":{"entryPoint":34456,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":25066,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":25151,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_690":{"entryPoint":25107,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyInitializing_705":{"entryPoint":34002,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":28106,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":12223,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":23293,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_16833":{"entryPoint":12583,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_16843":{"entryPoint":10551,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":11690,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":23471,"id":349,"parameterSlots":6,"returnSlots":0},"modifier_whenNotPaused":{"entryPoint":19279,"id":1371,"parameterSlots":4,"returnSlots":1},"modifier_whenNotPaused_1424":{"entryPoint":30017,"id":1371,"parameterSlots":0,"returnSlots":0},"modifier_whenNotPaused_15290":{"entryPoint":16562,"id":1371,"parameterSlots":4,"returnSlots":1},"modifier_whenPaused":{"entryPoint":27726,"id":1379,"parameterSlots":0,"returnSlots":0},"panic_error_0x00":{"entryPoint":25783,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":9812,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":10642,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":6727,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":5563,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2073,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":9381,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":8590,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":9121,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":9268,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":8507,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":26026,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_bool":{"entryPoint":12811,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_uint256":{"entryPoint":9799,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":5398,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":3770,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_uint256":{"entryPoint":5267,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":5686,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":8315,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":9323,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_t_bool":{"entryPoint":11893,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":5719,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":8361,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":16830,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_0ced":{"entryPoint":9732,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_1462":{"entryPoint":19391,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_2313":{"entryPoint":30607,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_293e":{"entryPoint":15089,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_2b2c":{"entryPoint":20632,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_335f":{"entryPoint":14427,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_379a":{"entryPoint":20088,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_37b2":{"entryPoint":19547,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_391a":{"entryPoint":9576,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_5032":{"entryPoint":17568,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_5590":{"entryPoint":15283,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_5cbb":{"entryPoint":14583,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_5cbb8d647918028d0523fccac550113bbbb71d463bbb8b573c02c32bc5cf2b89":{"entryPoint":10014,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_6f3b":{"entryPoint":14272,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_74c7":{"entryPoint":14739,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_788c":{"entryPoint":16674,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_795f":{"entryPoint":26128,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_7c81":{"entryPoint":20788,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_7fe0":{"entryPoint":31048,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_85d3":{"entryPoint":14895,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_9500":{"entryPoint":31204,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_a245":{"entryPoint":17412,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ad62":{"entryPoint":20244,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b15d":{"entryPoint":19932,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b326":{"entryPoint":25336,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b5c2":{"entryPoint":11114,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b6d2":{"entryPoint":19776,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_bd72":{"entryPoint":13875,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_d34d":{"entryPoint":14116,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_e4fc":{"entryPoint":12359,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_e8ec":{"entryPoint":17218,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ebb5":{"entryPoint":25530,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ecd1":{"entryPoint":17024,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_f8b1":{"entryPoint":18991,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_fc2f":{"entryPoint":20944,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_fd98":{"entryPoint":20438,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ff1e":{"entryPoint":26284,"id":null,"parameterSlots":1,"returnSlots":0},"resize_array_array_struct_AssetInfo_storage_dyn":{"entryPoint":25945,"id":null,"parameterSlots":2,"returnSlots":0},"revert_error_0cc013b6b3b6beabea4e3a74a6d380f0df81852ca99887912475e1f66b2a2c20":{"entryPoint":7228,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2065,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":6718,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2344,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":2069,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":1190,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":792,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":796,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":7283,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":839,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":8445,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":7232,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":8542,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":25611,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":5661,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":8283,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":780,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":3717,"id":null,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_struct_AssetInfo__dyn":{"entryPoint":5621,"id":null,"parameterSlots":2,"returnSlots":2},"storage_array_index_access_struct_AssetInfo__dyn_ptr":{"entryPoint":26380,"id":null,"parameterSlots":2,"returnSlots":2},"storage_set_to_zero_array_struct_AssetInfo__dyn":{"entryPoint":26003,"id":null,"parameterSlots":2,"returnSlots":0},"storage_set_to_zero_struct_AssetInfo":{"entryPoint":25827,"id":null,"parameterSlots":2,"returnSlots":0},"storage_set_to_zero_uint256":{"entryPoint":25717,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4":{"entryPoint":9643,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226":{"entryPoint":19302,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_195739df032cb3c07c5ed70a4cae73c5d077df4296263c6db3d1f3b4671efbd0":{"entryPoint":16741,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_231381c7ce9cab5a06140be844586c7572b2dd117d8de83c9f9bda39108cd19d":{"entryPoint":30518,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_293eab1376cea4527a492c75c5b4d240032b8920c86961428e65758e4fd3daec":{"entryPoint":14962,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":4668,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2b2c7f7f6207be48a0d3cd2cc9fdd002faa3beed1d5d8e029fc4651619e97737":{"entryPoint":20505,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":14339,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_379a432f00aa43993bfbf4e01492a8eab5138dcd2e395864ede728644390fc31":{"entryPoint":19999,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_37b2136db8906a0fa9dcfb36fa22f3e5724d70ae1dfd30e29853723b16bc684b":{"entryPoint":19458,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_391a75680d8ec99739af126cde56833526e4b720a416f24f1d7ee98c294a45b1":{"entryPoint":9487,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_50327403b25acc6e0d15796c676b8320f8d9ffcece005326d31f4226e4f741bb":{"entryPoint":17479,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_5590d0c003582064788189be9385d3fd358617fb2f790bf579ac35c799d59517":{"entryPoint":15156,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_5cbb24ca678c0bc148b6d1d734942e230f1d3686258ae74c758d5ae27e1715ef":{"entryPoint":14494,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_5cbb8d647918028d0523fccac550113bbbb71d463bbb8b573c02c32bc5cf2b89":{"entryPoint":9925,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6f3b6914a8f4e42f0dc4d6fcf60d1470463793693c123b4b0782b9cd43668c23":{"entryPoint":14183,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_74c7d57a908ebeca4ca501d4682067d5006fafb2a418959e98aa45be0419cba4":{"entryPoint":14650,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_788ce755d61da147edad70af92467c8a383af859573990e9defde5b6e0bdf24d":{"entryPoint":16585,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_795f8eca8a22be2e70f1d9bdebdbf85a1dc43e172c3964e13eac586b45ff2b92":{"entryPoint":26039,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7c814c07c32441cfc9da2a21de4a11134ec9451c699d8fbc5bbba1c5f5bc0385":{"entryPoint":20699,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7fe042c7e90969a67f580740cd6d07f084ba832097aca9eaaa282ad95462461f":{"entryPoint":30959,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_85d32796faf4bbe37cfdb7e983d4048fee52ebcfc8d2f22a939ce47e85d98ae8":{"entryPoint":14806,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9500bef01f061c69a5831abd395429bc0d4bf975a9340af0622098e5d0422cc6":{"entryPoint":31115,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_a245c00c976af272c663e732300fe860097516364a0d92887494f54e860fa54c":{"entryPoint":17285,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ad62b1c0bd29081661072d57b01cc0cf06650cc62be9f64a16c6eeb674febe7f":{"entryPoint":20155,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b15dc5b153b2c449b92f843a705e400d626f4dd8b96994ac655c7b213dc2911a":{"entryPoint":19843,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b3262886d4e83856703b764357b6a852eb26ef34a7982063b49217460e097ddc":{"entryPoint":25247,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b5c25d5c4ca6addfa23ca815554bb7bee3a9885ce01501a275168a62aa7cded3":{"entryPoint":11025,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b6d2d6ed3de7b13511d7f92187f8e921546e64c2ccd493001d0ee9932e446fff":{"entryPoint":19649,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a":{"entryPoint":13786,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743":{"entryPoint":14027,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_e4fcae9c0286e861087281117e0a3185ced905823104b290e1fe3ba826d8d280":{"entryPoint":12270,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_e8ec4a06d76118e3b24afbc30b183e086aa6aaa6e137c81160fc8d59e1a33e3f":{"entryPoint":17091,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ebb567ad160cf2ebbf5e53ab40a3ffae6f6492169d006ee3f8bad6794e36f372":{"entryPoint":25403,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ecd1f43c49e42563d3d1cb2a475a1c07f80ae9004e2e7b217754177af01e7482":{"entryPoint":16897,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f8b105b0b4a7ff5c11f41135d6d4600fd47da6168663f6cb1810745b08d83918":{"entryPoint":18902,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_fc2f8692ca59eb8838d740ab96a08e7dab54c967cc56eb0a9b640ce78eb1103e":{"entryPoint":20855,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_fd987e4cb46a85ad4b37f517550f430c97a96691c59a0e0f199442627bc51361":{"entryPoint":20311,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ff1ef73e4333da4da038aba1312a1df349427c8859c23d4b6d4a7df22bfc1a19":{"entryPoint":26195,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_20_shift":{"entryPoint":9068,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_8_shift":{"entryPoint":8450,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_dynamic32":{"entryPoint":25615,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":9187,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":27744,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":8548,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":9384,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":8593,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_t_bool":{"entryPoint":27766,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":9124,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_string_to_string":{"entryPoint":34396,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":9271,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":8510,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_struct_AssetInfo_to_struct_AssetInfo":{"entryPoint":26521,"id":null,"parameterSlots":3,"returnSlots":0},"update_storage_value_uint256_to_uint256":{"entryPoint":25683,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":1231,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":13157,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":28164,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":1266,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":6429,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":22795,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_add_uint256":{"entryPoint":33339,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_sub_uint256":{"entryPoint":24592,"id":null,"parameterSlots":2,"returnSlots":1},"write_to_memory_address":{"entryPoint":12040,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_bool":{"entryPoint":18562,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint256":{"entryPoint":7331,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_address":{"entryPoint":11964,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_bool":{"entryPoint":18518,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_uint256":{"entryPoint":7090,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":13123,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_address_dyn":{"entryPoint":11936,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_bool_dyn":{"entryPoint":18461,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_uint256_dyn":{"entryPoint":7062,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":7618,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":35131,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":11743,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_string":{"entryPoint":6722,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":7656,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint8":{"entryPoint":8226,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":27924},{"length":32,"start":28057},{"length":32,"start":28564}]},"linkReferences":{},"object":"60806040526004361015610013575b611a3e565b61001d5f3561030c565b806306fdde03146103075780630902f1ac14610302578063095ea7b3146102fd57806312899068146102f857806318160ddd146102f35780631a686502146102ee57806322acb867146102e957806323b872dd146102e4578063250aa683146102df578063295b9300146102da578063313ce567146102d557806334de9b8d146102d05780633f4ba83a146102cb57806343c2e2f5146102c65780634aa06652146102c15780634f1ef286146102bc57806352d1902d146102b75780635c975abb146102b257806367e4ac2c146102ad57806370a08231146102a8578063715018a6146102a35780637b1039991461029e5780637d7c2a1c146102995780637ff1c179146102945780638456cb591461028f57806389b3179b1461028a5780638a77c8dc146102855780638da5cb5b146102805780638de30f301461027b57806395d89b41146102765780639908fc8b14610271578063a9059cbb1461026c578063ad3cb1cc14610267578063b2b55d7014610262578063b3bf9d321461025d578063b7110e1314610258578063c2ee3a0814610253578063cdf456e11461024e578063cf8fa76414610249578063d14ef46d14610244578063d66bd5241461023f578063dd62ed3e1461023a578063e63697c814610235578063e64ebdd214610230578063e73faa2d1461022b578063f2fde38b146102265763fb33a6c00361000e57611a04565b6118dd565b6118a8565b611873565b61183d565b6117cd565b61176b565b6116f7565b611586565b611533565b6114b0565b611442565b61135a565b6112d2565b61129d565b6111ef565b6111b2565b6110f6565b6110c1565b61108c565b611035565b611000565b610fcd565b610f98565b610f65565b610f30565b610e52565b610e1d565b610de8565b610d14565b610cdf565b610c90565b610b99565b610b63565b610b30565b610af9565b6107dc565b61077e565b610723565b6106ed565b61067e565b610649565b610614565b6105df565b610569565b610471565b61039a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261032a57565b61031c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b61037061037960209361037e936103678161032f565b93848093610333565b9586910161033c565b610347565b0190565b6103979160208201915f818403910152610351565b90565b346103ca576103aa366004610320565b6103c66103b5611b77565b6103bd610312565b91829182610382565b0390f35b610318565b5190565b60209181520190565b60200190565b90565b6103ee906103e2565b9052565b906103ff816020936103e5565b0190565b60200190565b90610426610420610419846103cf565b80936103d3565b926103dc565b905f5b8181106104365750505090565b90919261044f61044960019286516103f2565b94610403565b9101919091610429565b61046e9160208201915f818403910152610409565b90565b346104a157610481366004610320565b61049d61048c611cb1565b610494610312565b91829182610459565b0390f35b610318565b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6104cc906104aa565b90565b6104d8816104c3565b036104df57565b5f80fd5b905035906104f0826104cf565b565b6104fb816103e2565b0361050257565b5f80fd5b90503590610513826104f2565b565b919060408382031261053d578061053161053a925f86016104e3565b93602001610506565b90565b61031c565b151590565b61055090610542565b9052565b9190610567905f60208501940190610547565b565b3461059a5761059661058561057f366004610515565b90611dc6565b61058d610312565b91829182610554565b0390f35b610318565b906020828203126105b8576105b5915f016104e3565b90565b61031c565b6105c6906103e2565b9052565b91906105dd905f602085019401906105bd565b565b3461060f5761060b6105fa6105f536600461059f565b611dec565b610602610312565b918291826105ca565b0390f35b610318565b3461064457610624366004610320565b61064061062f611e84565b610637610312565b918291826105ca565b0390f35b610318565b3461067957610659366004610320565b610675610664611ea3565b61066c610312565b918291826105ca565b0390f35b610318565b346106ae5761068e366004610320565b6106aa610699611eb8565b6106a1610312565b91829182610459565b0390f35b610318565b90916060828403126106e8576106e56106ce845f85016104e3565b936106dc81602086016104e3565b93604001610506565b90565b61031c565b3461071e5761071a6107096107033660046106b3565b91611f3b565b610711610312565b91829182610554565b0390f35b610318565b346107535761074f61073e61073936600461059f565b611f6a565b610746610312565b918291826105ca565b0390f35b610318565b9161077b9261076e60408201935f8301906105bd565b6020818403910152610409565b90565b346107af5761078e366004610320565b610796612002565b906107ab6107a2610312565b92839283610758565b0390f35b610318565b60ff1690565b6107c3906107b4565b9052565b91906107da905f602085019401906107ba565b565b3461080c576107ec366004610320565b6108086107f7612045565b6107ff610312565b918291826107c7565b0390f35b610318565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061085090610347565b810190811067ffffffffffffffff82111761086a57604052565b610819565b9061088261087b610312565b9283610846565b565b67ffffffffffffffff81116108a25761089e602091610347565b0190565b610819565b90825f939282370152565b909291926108c76108c282610884565b61086f565b938185526020850190828401116108e3576108e1926108a7565b565b610815565b9080601f8301121561090657816020610903933591016108b2565b90565b610811565b67ffffffffffffffff81116109235760208091020190565b610819565b5f80fd5b9092919261094161093c8261090b565b61086f565b938185526020808601920283019281841161097e57915b8383106109655750505050565b6020809161097384866104e3565b815201920191610958565b610928565b9080601f830112156109a15781602061099e9335910161092c565b90565b610811565b67ffffffffffffffff81116109be5760208091020190565b610819565b909291926109d86109d3826109a6565b61086f565b9381855260208086019202830192818411610a1557915b8383106109fc5750505050565b60208091610a0a8486610506565b8152019201916109ef565b610928565b9080601f83011215610a3857816020610a35933591016109c3565b90565b610811565b919060a083820312610aef575f83013567ffffffffffffffff8111610aea5781610a689185016108e8565b92602081013567ffffffffffffffff8111610ae55782610a899183016108e8565b92604082013567ffffffffffffffff8111610ae05783610aaa918401610983565b9260608301359067ffffffffffffffff8211610adb57610acf81610ad8938601610a1a565b936080016104e3565b90565b6104a6565b6104a6565b6104a6565b6104a6565b61031c565b5f0190565b34610b2b57610b15610b0c366004610a3d565b93929092612928565b610b1d610312565b80610b2781610af4565b0390f35b610318565b34610b5e57610b40366004610320565b610b48612953565b610b50610312565b80610b5a81610af4565b0390f35b610318565b34610b9457610b90610b7f610b793660046106b3565b91612a06565b610b87610312565b918291826105ca565b0390f35b610318565b34610bca57610bc6610bb5610baf3660046106b3565b91612beb565b610bbd610312565b918291826105ca565b0390f35b610318565b67ffffffffffffffff8111610bed57610be9602091610347565b0190565b610819565b90929192610c07610c0282610bcf565b61086f565b93818552602085019082840111610c2357610c21926108a7565b565b610815565b9080601f83011215610c4657816020610c4393359101610bf2565b90565b610811565b919091604081840312610c8b57610c64835f83016104e3565b92602082013567ffffffffffffffff8111610c8657610c839201610c28565b90565b6104a6565b61031c565b610ca4610c9e366004610c4b565b90612dd3565b610cac610312565b80610cb681610af4565b0390f35b90565b610cc690610cba565b9052565b9190610cdd905f60208501940190610cbd565b565b34610d0f57610cef366004610320565b610d0b610cfa612e4e565b610d02610312565b91829182610cca565b0390f35b610318565b34610d4457610d24366004610320565b610d40610d2f612e82565b610d37610312565b91829182610554565b0390f35b610318565b5190565b60209181520190565b60200190565b610d65906104c3565b9052565b90610d7681602093610d5c565b0190565b60200190565b90610d9d610d97610d9084610d49565b8093610d4d565b92610d56565b905f5b818110610dad5750505090565b909192610dc6610dc06001928651610d69565b94610d7a565b9101919091610da0565b610de59160208201915f818403910152610d80565b90565b34610e1857610df8366004610320565b610e14610e03612f16565b610e0b610312565b91829182610dd0565b0390f35b610318565b34610e4d57610e49610e38610e3336600461059f565b612f98565b610e40610312565b918291826105ca565b0390f35b610318565b34610e8057610e62366004610320565b610e6a612fe4565b610e72610312565b80610e7c81610af4565b0390f35b610318565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b610eb2906008610eb79302610e85565b610e89565b90565b90610ec59154610ea2565b90565b610ed460045f90610eba565b90565b90565b610eee610ee9610ef3926104aa565b610ed7565b6104aa565b90565b610eff90610eda565b90565b610f0b90610ef6565b90565b610f1790610f02565b9052565b9190610f2e905f60208501940190610f0e565b565b34610f6057610f40366004610320565b610f5c610f4b610ec8565b610f53610312565b91829182610f1b565b0390f35b610318565b34610f9357610f75366004610320565b610f7d61308a565b610f85610312565b80610f8f81610af4565b0390f35b610318565b34610fc857610fa8366004610320565b610fc4610fb36130a4565b610fbb610312565b91829182610459565b0390f35b610318565b34610ffb57610fdd366004610320565b610fe5613143565b610fed610312565b80610ff781610af4565b0390f35b610318565b346110305761102c61101b61101636600461059f565b61314d565b611023610312565b918291826105ca565b0390f35b610318565b3461106557611045366004610320565b611061611050613218565b611058610312565b91829182610554565b0390f35b610318565b611073906104c3565b9052565b919061108a905f6020850194019061106a565b565b346110bc5761109c366004610320565b6110b86110a7613347565b6110af610312565b91829182611077565b0390f35b610318565b346110f1576110ed6110dc6110d736600461059f565b6133a6565b6110e4610312565b91829182610459565b0390f35b610318565b3461112657611106366004610320565b6111226111116135bb565b611119610312565b91829182610382565b0390f35b610318565b909160c08284031261118a57611143835f84016104e3565b9261115181602085016104e3565b9261115f8260408301610506565b926111876111708460608501610506565b9361117e81608086016104e3565b9360a001610506565b90565b61031c565b9160206111b09294936111a960408201965f8301906105bd565b01906105bd565b565b346111ea576111d16111c536600461112b565b94939093929192613f1a565b906111e66111dd610312565b9283928361118f565b0390f35b610318565b346112205761121c61120b611205366004610515565b90613f3d565b611213610312565b91829182610554565b0390f35b610318565b9061123761123283610884565b61086f565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61126d6005611225565b9061127a6020830161123c565b565b611284611263565b90565b61128f61127c565b90565b61129a611287565b90565b346112cd576112ad366004610320565b6112c96112b8611292565b6112c0610312565b91829182610382565b0390f35b610318565b34611302576112fe6112ed6112e836600461059f565b613f5f565b6112f5610312565b918291826105ca565b0390f35b610318565b90916060828403126113555761131f835f84016104e3565b9260208301359067ffffffffffffffff8211611350576113448161134d938601610a1a565b93604001610506565b90565b6104a6565b61031c565b3461138b57611387611376611370366004611307565b91614807565b61137e610312565b918291826105ca565b0390f35b610318565b5190565b60209181520190565b60200190565b6113ac90610542565b9052565b906113bd816020936113a3565b0190565b60200190565b906113e46113de6113d784611390565b8093611394565b9261139d565b905f5b8181106113f45750505090565b90919261140d61140760019286516113b0565b946113c1565b91019190916113e7565b909161143161143f9360408401908482035f8601526113c7565b916020818403910152610409565b90565b3461147357611452366004610320565b61145a614890565b9061146f611466610312565b92839283611417565b0390f35b610318565b90565b61148b9060086114909302610e85565b611478565b90565b9061149e915461147b565b90565b6114ad60015f90611493565b90565b346114e0576114c0366004610320565b6114dc6114cb6114a1565b6114d3610312565b918291826105ca565b0390f35b610318565b73ffffffffffffffffffffffffffffffffffffffff1690565b61150e9060086115139302610e85565b6114e5565b90565b9061152191546114fe565b90565b61153060025f90611516565b90565b3461156357611543366004610320565b61155f61154e611524565b611556610312565b91829182611077565b0390f35b610318565b906020828203126115815761157e915f01610506565b90565b61031c565b346115b6576115b26115a161159c366004611568565b614a72565b6115a9610312565b918291826105ca565b0390f35b610318565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5490565b5f5260205f2090565b6115fe816115e8565b821015611618576116106004916115ec565b910201905f90565b6115bb565b5f1c90565b61162e6116339161161d565b6114e5565b90565b6116409054611622565b90565b61164f6116549161161d565b611478565b90565b6116619054611643565b90565b5f9061166f826115e8565b8110156116b55761167f916115f5565b509061168c5f8301611636565b9161169960018201611657565b916116b260036116ab60028501611657565b9301611657565b90565b5f80fd5b6116ee6116f5946116e46060949897956116da608086019a5f87019061106a565b60208501906105bd565b60408301906105bd565b01906105bd565b565b3461172b5761172761171261170d366004611568565b611664565b9061171e949294610312565b948594856116b9565b0390f35b610318565b61173990610ef6565b90565b9061174690611730565b5f5260205260405f2090565b611768906117636005915f9261173c565b611493565b90565b3461179b5761179761178661178136600461059f565b611752565b61178e610312565b918291826105ca565b0390f35b610318565b91906040838203126117c857806117bc6117c5925f86016104e3565b936020016104e3565b90565b61031c565b346117fe576117fa6117e96117e33660046117a0565b90614ad3565b6117f1610312565b918291826105ca565b0390f35b610318565b90916060828403126118385761183561181e845f8501610506565b9361182c81602086016104e3565b93604001610506565b90565b61031c565b3461186e5761186a611859611853366004611803565b9161578e565b611861610312565b918291826105ca565b0390f35b610318565b346118a35761189f61188e611889366004611568565b6157a4565b611896610312565b91829182610459565b0390f35b610318565b346118d8576118b8366004610320565b6118d46118c36159bf565b6118cb610312565b918291826105ca565b0390f35b610318565b3461190b576118f56118f036600461059f565b615b82565b6118fd610312565b8061190781610af4565b0390f35b610318565b67ffffffffffffffff1690565b61192681611910565b0361192d57565b5f80fd5b9050359061193e8261191d565b565b909160c0828403126119ff575f82013567ffffffffffffffff81116119fa578361196b9184016108e8565b92602083013567ffffffffffffffff81116119f5578161198c9185016108e8565b92604081013567ffffffffffffffff81116119f057826119ad918301610983565b92606082013567ffffffffffffffff81116119eb576119d1846119e8928501610a1a565b936119df81608086016104e3565b9360a001611931565b90565b6104a6565b6104a6565b6104a6565b6104a6565b61031c565b34611a3957611a23611a17366004611940565b94939093929192615e6a565b611a2b610312565b80611a3581610af4565b0390f35b610318565b5f80fd5b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b9060016002830492168015611a94575b6020831014611a8f57565b611a47565b91607f1691611a84565b60209181520190565b5f5260205f2090565b905f9291805490611aca611ac383611a74565b8094611a9e565b916001811690815f14611b215750600114611ae5575b505050565b611af29192939450611aa7565b915f925b818410611b0957505001905f8080611ae0565b60018160209295939554848601520191019290611af6565b92949550505060ff19168252151560200201905f8080611ae0565b90611b4691611ab0565b90565b90611b69611b6292611b59610312565b93848092611b3c565b0383610846565b565b611b7490611b49565b90565b611b7f611a42565b50611b936003611b8d615e7a565b01611b6b565b90565b606090565b90611bad611ba8836109a6565b61086f565b918252565b369037565b90611bdc611bc483611b9b565b92602080611bd286936109a6565b9201910390611bb2565b565b90565b611bf5611bf0611bfa92611bde565b610ed7565b6103e2565b90565b6001611c0991016103e2565b90565b611c1590610eda565b90565b611c2190611c0c565b90565b611c2d90610ef6565b90565b611c3990610ef6565b90565b5f80fd5b60e01b90565b90505190611c53826104f2565b565b90602082820312611c6e57611c6b915f01611c46565b90565b61031c565b611c7b610312565b3d5f823e3d90fd5b90611c8d826103cf565b811015611c9e576020809102010190565b6115bb565b90611cad906103e2565b9052565b611cb9611b96565b50611ccb611cc65f6115e8565b611bb7565b90611cd55f611be1565b5b80611cf1611ceb611ce65f6115e8565b6103e2565b916103e2565b1015611dbf57611d55906020611d23611d1e611d195f611d128187906115f5565b5001611636565b611c18565b611c24565b6370a0823190611d4a611d3530611c30565b92611d3e610312565b96879485938493611c40565b835260048301611077565b03915afa918215611dba57611d8792611d82915f91611d8c575b50611d7d8691849092611c83565b611ca3565b611bfd565b611cd6565b611dad915060203d8111611db3575b611da58183610846565b810190611c55565b5f611d6f565b503d611d9b565b611c73565b50565b5f90565b611de391611dd2611dc2565b50611ddb615e9e565b919091615eab565b600190565b5f90565b611df4611de8565b50611dfe5f611be1565b5b80611e1a611e14611e0f5f6115e8565b6103e2565b916103e2565b1015611e7657611e365f611e2f8184906115f5565b5001611636565b611e48611e42846104c3565b916104c3565b14611e5b57611e5690611bfd565b611dff565b611e739150611e6c6002915f6115f5565b5001611657565b90565b5050611e815f611be1565b90565b611e8c611de8565b50611ea06002611e9a615e7a565b01611657565b90565b611eab611de8565b50611eb4615ebb565b5090565b611ec0611b96565b50611ed2611ecd5f6115e8565b611bb7565b611edb5f611be1565b5b80611ef7611ef1611eec5f6115e8565b6103e2565b916103e2565b1015611f3757611f3290611f2d611f1b6001611f145f85906115f5565b5001611657565b611f288591849092611c83565b611ca3565b611bfd565b611edc565b5090565b91611f6592611f48611dc2565b50611f5d611f54615e9e565b8290849161601e565b9190916160e9565b600190565b611f72611de8565b50611f7c5f611be1565b5b80611f98611f92611f8d5f6115e8565b6103e2565b916103e2565b1015611ff457611fb45f611fad8184906115f5565b5001611636565b611fc6611fc0846104c3565b916104c3565b14611fd957611fd490611bfd565b611f7d565b611ff19150611fea6001915f6115f5565b5001611657565b90565b5050611fff5f611be1565b90565b61200a611de8565b50612013611b96565b5061201c615ebb565b91909190565b5f90565b90565b61203d61203861204292612026565b610ed7565b6107b4565b90565b61204d612022565b506120586012612029565b90565b60401c90565b60ff1690565b6120736120789161205b565b612061565b90565b6120859054612067565b90565b67ffffffffffffffff1690565b6120a16120a69161161d565b612088565b90565b6120b39054612095565b90565b6120ca6120c56120cf92611bde565b610ed7565b611910565b90565b90565b6120e96120e46120ee926120d2565b610ed7565b611910565b90565b6120fa90610ef6565b90565b5f1b90565b9061211567ffffffffffffffff916120fd565b9181191691161790565b61213361212e61213892611910565b610ed7565b611910565b90565b90565b9061215361214e61215a9261211f565b61213b565b8254612102565b9055565b60401b90565b9061217868ff00000000000000009161215e565b9181191691161790565b61218b90610542565b90565b90565b906121a66121a16121ad92612182565b61218e565b8254612164565b9055565b6121ba906120d5565b9052565b91906121d1905f602085019401906121b1565b565b919390926121df6161c6565b946121f46121ee5f880161207b565b15610542565b946122005f88016120a9565b8061221361220d5f6120b6565b91611910565b148061234d575b9061222e61222860016120d5565b91611910565b1480612325575b612240909115610542565b9081612314575b506122d8576122709461226561225d60016120d5565b5f8a0161213e565b866122c6575b612761565b612278575b50565b612285905f809101612191565b60016122bd7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916122b4610312565b918291826121be565b0390a15f612275565b6122d360015f8a01612191565b61226b565b6122e0610312565b7ff92ee8a90000000000000000000000000000000000000000000000000000000081528061231060048201610af4565b0390fd5b61231f915015610542565b5f612247565b50612240612332306120f1565b3b61234561233f5f611be1565b916103e2565b149050612235565b508661221a565b61235d90610eda565b90565b61236990612354565b90565b9061238b73ffffffffffffffffffffffffffffffffffffffff916120fd565b9181191691161790565b61239e90612354565b90565b90565b906123b96123b46123c092612395565b6123a1565b825461236c565b9055565b90565b6123db6123d66123e0926123c4565b610ed7565b6103e2565b90565b9061240e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916120fd565b9181191691161790565b61242c612427612431926103e2565b610ed7565b6103e2565b90565b90565b9061244c61244761245392612418565b612434565b82546123e3565b9055565b6124636124689161161d565b610e89565b90565b6124759054612457565b90565b90505190612485826104cf565b565b906020828203126124a05761249d915f01612478565b90565b61031c565b90565b906124bd6124b86124c492611730565b6124a5565b825461236c565b9055565b90565b6124df6124da6124e4926124c8565b610ed7565b6103e2565b90565b6124fb6124f661250092611bde565b610ed7565b6104aa565b90565b61250c906124e7565b90565b5f7f496e76616c696420626173652061737365742061646472657373000000000000910152565b612543601a602092610333565b61254c8161250f565b0190565b6125659060208101905f818303910152612536565b90565b1561256f57565b612577610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806125a760048201612550565b0390fd5b5f7f496e697469616c697a6174696f6e206661696c65640000000000000000000000910152565b6125df6015602092610333565b6125e8816125ab565b0190565b6126019060208101905f8183039101526125d2565b90565b1561260b57565b612613610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612643600482016125ec565b0390fd5b61265190516103e2565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b612690612696919392936103e2565b926103e2565b82018092116126a157565b612654565b90565b6126bd6126b86126c2926126a6565b610ed7565b6103e2565b90565b5f7f496e76616c696420776569676874730000000000000000000000000000000000910152565b6126f9600f602092610333565b612702816126c5565b0190565b61271b9060208101905f8183039101526126ec565b90565b1561272557565b61272d610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061275d60048201612706565b0390fd5b6127e99395946127806127a49361279d9361277b33616208565b616233565b612788616249565b61279061626f565b612798616295565b612360565b60046123a4565b6127bf6127b8670de0b6b3a76400006123c7565b6001612437565b60206127d36127ce600461246b565b610f02565b631bf01e9b906127e1610312565b948592611c40565b825281806127f960048201610af4565b03915afa9081156129235761281e61286b92612870945f916128f5575b5060026124a8565b61283661282f64e8d4a510006124cb565b6003612437565b6128646128436002611636565b61285d6128576128525f612503565b6104c3565b916104c3565b1415612568565b84906167e4565b612604565b6128795f611be1565b6128825f611be1565b905b8161289f612899612894876103cf565b6103e2565b916103e2565b10156128d1576128c56128cb916128bf6128ba878690611c83565b612647565b90612681565b91611bfd565b90612884565b90506128f39192506128ed6128e76127106126a9565b916103e2565b1461271e565b565b612916915060203d811161291c575b61290e8183610846565b810190612487565b5f612816565b503d612904565b611c73565b90612935949392916121d3565b565b61293f616be0565b612947612949565b565b612951616ced565b565b61295b612937565b565b61296c612972919392936103e2565b926103e2565b9161297e8382026103e2565b92818404149015171561298d57565b612654565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6129cb6129d1916103e2565b916103e2565b9081156129dc570490565b612992565b6129f06129f6919392936103e2565b926103e2565b8203918211612a0157565b612654565b91612ac8612ac2612abd612a288594612a1d611de8565b508790869091612beb565b612a3187611dec565b96612a3b86611dec565b90612aa5612a9f612a9a612a93612a82612a7b612a6a612a63612a5d89611f6a565b9f611f6a565b9f8a61295d565b612a756127106126a9565b906129bf565b968861295d565b612a8d6127106126a9565b906129bf565b9a9361314d565b6103e2565b916103e2565b115f14612aea57612ab5916129e1565b955b9361314d565b6103e2565b916103e2565b105f14612adc57612ad891612681565b5b90565b612ae5916129e1565b612ad9565b612af391612681565b95612ab7565b612b0290610eda565b90565b612b0e90612af9565b90565b5f7f496e76616c6964206f7261636c65206164647265737300000000000000000000910152565b612b456016602092610333565b612b4e81612b11565b0190565b612b679060208101905f818303910152612b38565b90565b15612b7157565b612b79610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612ba960048201612b52565b0390fd5b612bb690610ef6565b90565b604090612be2612be99496959396612bd860608401985f85019061106a565b602083019061106a565b01906105bd565b565b90612bf4611de8565b50612c226020612c0c612c07600461246b565b610f02565b63bb3ba04c90612c1a610312565b938492611c40565b82528180612c3260048201610af4565b03915afa8015612da557612c4d915f91612d77575b50612b05565b91612c7b6020612c65612c60600461246b565b610f02565b63bb3ba04c90612c73610312565b938492611c40565b82528180612c8b60048201610af4565b03915afa8015612d7257602094612ccc612cd192612cf1945f91612d45575b50612cc5612cbf612cba5f612503565b6104c3565b916104c3565b1415612b6a565b612bad565b91612cfc63248391ff919496612ce5610312565b97889687958695611c40565b855260048501612bb9565b03915afa908115612d40575f91612d12575b5090565b612d33915060203d8111612d39575b612d2b8183610846565b810190611c55565b5f612d0e565b503d612d21565b611c73565b612d659150883d8111612d6b575b612d5d8183610846565b810190612487565b5f612caa565b503d612d53565b611c73565b612d98915060203d8111612d9e575b612d908183610846565b810190612487565b5f612c47565b503d612d86565b611c73565b90612dbc91612db7616d03565b612dbe565b565b90612dd191612dcc81616dd5565b616e45565b565b90612ddd91612daa565b565b5f90565b612df490612def616f83565b612e42565b90565b90565b612e0e612e09612e1392612df7565b6120fd565b610cba565b90565b612e3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc612dfa565b90565b50612e4b612e16565b90565b612e5e612e59612ddf565b612de3565b90565b612e6d612e729161161d565b612061565b90565b612e7f9054612e61565b90565b612e8a611dc2565b50612e9d5f612e97617001565b01612e75565b90565b606090565b90612eb7612eb28361090b565b61086f565b918252565b369037565b90612ee6612ece83612ea5565b92602080612edc869361090b565b9201910390612ebc565b565b90612ef282610d49565b811015612f03576020809102010190565b6115bb565b90612f12906104c3565b9052565b612f1e612ea0565b50612f30612f2b5f6115e8565b612ec1565b612f395f611be1565b5b80612f55612f4f612f4a5f6115e8565b6103e2565b916103e2565b1015612f9457612f8f90612f8a612f785f612f718185906115f5565b5001611636565b612f858591849092612ee8565b612f08565b611bfd565b612f3a565b5090565b612fb7612fbc91612fa7611de8565b505f612fb1615e7a565b0161173c565b611657565b90565b612fc7616be0565b612fcf612fd1565b565b612fe2612fdd5f612503565b617025565b565b612fec612fbf565b565b5f7f526562616c616e6365206e6f74206e6565646564000000000000000000000000910152565b6130226014602092610333565b61302b81612fee565b0190565b6130449060208101905f818303910152613015565b90565b1561304e57565b613056610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806130866004820161302f565b0390fd5b61309a613095613218565b613047565b6130a261713a565b565b6130ac611b96565b506130be6130b95f6115e8565b611bb7565b6130c75f611be1565b5b806130e36130dd6130d85f6115e8565b6103e2565b916103e2565b10156131235761311e9061311961310760026131005f85906115f5565b5001611657565b6131148591849092611c83565b611ca3565b611bfd565b6130c8565b5090565b61312f616be0565b613137613139565b565b6131416175ab565b565b61314b613127565b565b613155611de8565b5061315e614890565b90506131695f611be1565b5b8061318561317f61317a5f6115e8565b6103e2565b916103e2565b10156131dc576131a15f61319a8184906115f5565b5001611636565b6131b36131ad856104c3565b916104c3565b146131c6576131c190611bfd565b61316a565b6131d992506131d491611c83565b612647565b90565b5050506131e85f611be1565b90565b906131f582611390565b811015613206576020809102010190565b6115bb565b6132159051610542565b90565b613220611dc2565b5061324e6020613238613233600461246b565b610f02565b63ea233c0590613246610312565b938492611c40565b8252818061325e60048201610af4565b03915afa90811561333e575f91613310575b50613279614890565b919091906132865f611be1565b5b806132a261329c613297866103cf565b6103e2565b916103e2565b1015613308576132bb6132b68583906131eb565b61320b565b806132dc575b6132d3576132ce90611bfd565b613287565b50505050600190565b506132f06132eb848390611c83565b612647565b6133026132fc846103e2565b916103e2565b116132c1565b505050505f90565b613331915060203d8111613337575b6133298183610846565b810190611c55565b5f613270565b503d61331f565b611c73565b5f90565b61334f613343565b506133625f61335c6175b5565b01611636565b90565b61336e81610542565b0361337557565b5f80fd5b9050519061338682613365565b565b906020828203126133a15761339e915f01613379565b90565b61031c565b6133ae611b96565b506133bf6133ba613218565b613047565b6133d06133ca615ebb565b906175d9565b916133e26133dd5f6115e8565b611bb7565b906133ff6133ef856176cf565b6133f96003611657565b9061295d565b6134085f611be1565b5b8061342461341e613419896103cf565b6103e2565b916103e2565b101561355857859061343f61343a838390611c83565b612647565b61345161344b5f611be1565b916103e2565b11613466575b6134619150611bfd565b613409565b6134986134868261348061347b868690611c83565b612647565b906177d2565b6134938791849092611c83565b611ca3565b60206134c06134bb6134b65f6134af8187906115f5565b5001611636565b611c18565b611c24565b6323b872dd906134ff5f339361350a6134eb6134e66134de30611c30565b9a8a90611c83565b612647565b6134f3610312565b998a9788968795611c40565b855260048501612bb9565b03925af19182156135535761346192613527575b50869150613457565b6135479060203d811161354c575b61353f8183610846565b810190613388565b61351e565b503d613535565b611c73565b5061356591949293617852565b61356d617a27565b613575617ce2565b336135b56135a37fa95ad530009c6f929555e70a66aadbeae7231e45756c5b028ca77fbaa376e73e92611730565b926135ac610312565b91829182610459565b0390a290565b6135c3611a42565b506135d760046135d1615e7a565b01611b6b565b90565b5f7f4558504952454400000000000000000000000000000000000000000000000000910152565b61360e6007602092610333565b613617816135da565b0190565b6136309060208101905f818303910152613601565b90565b1561363a57565b613642610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806136726004820161361b565b0390fd5b906136a39796959493929161369e88613697613691426103e2565b916103e2565b1015613633565b6136a7565b9091565b906136bf979695949392916136ba617e06565b613c57565b90916136c9617eb2565b565b5f7f496e76616c696420746f6b656e20616464726573730000000000000000000000910152565b6136ff6015602092610333565b613708816136cb565b0190565b6137219060208101905f8183039101526136f2565b90565b1561372b57565b613733610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806137636004820161370c565b0390fd5b5f7f43616e6e6f742073776170207468652073616d6520746f6b656e000000000000910152565b61379b601a602092610333565b6137a481613767565b0190565b6137bd9060208101905f81830391015261378e565b90565b156137c757565b6137cf610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806137ff600482016137a8565b0390fd5b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b61383660208092610333565b61383f81613803565b0190565b6138589060208101905f81830391015261382a565b90565b1561386257565b61386a610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061389a60048201613843565b0390fd5b5f7f496e76616c696420726563656976657220616464726573730000000000000000910152565b6138d26018602092610333565b6138db8161389e565b0190565b6138f49060208101905f8183039101526138c5565b90565b156138fe57565b613906610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613936600482016138df565b0390fd5b5f7f546f6b656e207472616e73666572206661696c65640000000000000000000000910152565b61396e6015602092610333565b6139778161393a565b0190565b6139909060208101905f818303910152613961565b90565b1561399a57565b6139a2610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806139d26004820161397b565b0390fd5b5f7f496e73756666696369656e74204c697175696469747900000000000000000000910152565b613a0a6016602092610333565b613a13816139d6565b0190565b613a2c9060208101905f8183039101526139fd565b90565b15613a3657565b613a3e610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613a6e60048201613a17565b0390fd5b60207f68616e2030000000000000000000000000000000000000000000000000000000917f416d6f756e7420746f2073656e64206d757374206265206772656174657220745f8201520152565b613acc6025604092610333565b613ad581613a72565b0190565b613aee9060208101905f818303910152613abf565b90565b15613af857565b613b00610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613b3060048201613ad9565b0390fd5b60207f6d696e20616d6f756e7400000000000000000000000000000000000000000000917f416d6f756e74206f7574206d7573742062652067726561746572207468616e205f8201520152565b613b8e602a604092610333565b613b9781613b34565b0190565b613bb09060208101905f818303910152613b81565b90565b15613bba57565b613bc2610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613bf260048201613b9b565b0390fd5b916020613c17929493613c1060408201965f83019061106a565b01906105bd565b565b613c4e613c5594613c44606094989795613c3a608086019a5f87019061106a565b602085019061106a565b60408301906105bd565b01906105bd565b565b909193929495979650505081613c7d613c77613c725f612503565b6104c3565b916104c3565b141580613ef2575b613c8e90613724565b613cab82613ca4613c9e866104c3565b916104c3565b14156137c0565b613cc781613cc1613cbb5f611be1565b916103e2565b1161385b565b613cec86613ce5613cdf613cda5f612503565b6104c3565b916104c3565b14156138f7565b613cfd613cf883611c18565b611c24565b60206323b872dd913390613d2d5f613d1430611c30565b95613d3888613d21610312565b98899788968795611c40565b855260048501612bb9565b03925af18015613eed57613d53915f91613ebf575b50613993565b613d5f82848391612a06565b95613d85613d6c85613f5f565b613d7e613d788a6103e2565b916103e2565b1015613a2f565b613dd3613d9c613d9489617ecf565b9889906129e1565b95613db987613db3613dad5f611be1565b916103e2565b11613af1565b613dcc613dc688926103e2565b916103e2565b1015613bb3565b613de4613ddf85611c18565b611c24565b602063a9059cbb918390613e0b5f8a95613e16613dff610312565b97889687958694611c40565b845260048401613bf6565b03925af18015613eba57613e31915f91613e8c575b50613993565b613e39617a27565b613e41617ce2565b91929092613e8585613e737fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e4606295611730565b95613e7c610312565b94859485613c19565b0390a29190565b613ead915060203d8111613eb3575b613ea58183610846565b810190613388565b5f613e2b565b503d613e9b565b611c73565b613ee0915060203d8111613ee6575b613ed88183610846565b810190613388565b5f613d4d565b503d613ece565b611c73565b50613c8e83613f11613f0b613f065f612503565b6104c3565b916104c3565b14159050613c85565b90613f399594939291613f2b611de8565b613f33611de8565b90613676565b9091565b613f5a91613f49611dc2565b50613f52615e9e565b9190916160e9565b600190565b613f67611de8565b90613f715f611be1565b5b80613f8d613f87613f825f6115e8565b6103e2565b916103e2565b10156140625781613fbb613fb5613fb05f613fa98187906115f5565b5001611636565b6104c3565b916104c3565b14613fce57613fc990611bfd565b613f72565b506140199150613fe7613fe2602092611c18565b611c24565b6370a082319061400e613ff930611c30565b92614002610312565b95869485938493611c40565b835260048301611077565b03915afa90811561405d575f9161402f575b5090565b614050915060203d8111614056575b6140488183610846565b810190611c55565b5f61402b565b503d61403e565b611c73565b505090565b9061409093929161408b8461408461407e426103e2565b916103e2565b1015613633565b614093565b90565b906140a79392916140a2617e06565b6140b2565b906140b0617eb2565b565b906140c69392916140c1617ff5565b6144e3565b90565b5f7f496e76616c6964207265736572766573206c656e677468000000000000000000910152565b6140fd6017602092610333565b614106816140c9565b0190565b61411f9060208101905f8183039101526140f0565b90565b1561412957565b614131610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806141616004820161410a565b0390fd5b5f7f4e6f206173736574730000000000000000000000000000000000000000000000910152565b6141996009602092610333565b6141a281614165565b0190565b6141bb9060208101905f81830391015261418c565b90565b156141c557565b6141cd610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806141fd600482016141a6565b0390fd5b60207f6564000000000000000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c3a205472616e736665722066726f6d206661696c5f8201520152565b61425b6022604092610333565b61426481614201565b0190565b61427d9060208101905f81830391015261424e565b90565b1561428757565b61428f610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806142bf60048201614268565b0390fd5b60207f2030000000000000000000000000000000000000000000000000000000000000917f546f74616c2076616c7565206d7573742062652067726561746572207468616e5f8201520152565b61431d6022604092610333565b614326816142c3565b0190565b61433f9060208101905f818303910152614310565b90565b1561434957565b614351610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806143816004820161432a565b0390fd5b60207f7468616e20300000000000000000000000000000000000000000000000000000917f546f74616c206c6971756964697479206d7573742062652067726561746572205f8201520152565b6143df6026604092610333565b6143e881614385565b0190565b6144019060208101905f8183039101526143d2565b90565b1561440b57565b614413610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614443600482016143ec565b0390fd5b5f7f4d696e7420717479206973203000000000000000000000000000000000000000910152565b61447b600d602092610333565b61448481614447565b0190565b61449d9060208101905f81830391015261446e565b90565b156144a757565b6144af610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806144df60048201614488565b0390fd5b90939250506144f0611e84565b916144fa5f611be1565b9361452f614506611cb1565b61452961452361451e6145185f6115e8565b936103cf565b6103e2565b916103e2565b14614122565b61455361453b5f6115e8565b61454d6145475f611be1565b916103e2565b116141be565b61455c5f611be1565b945b8561457961457361456e5f6115e8565b6103e2565b916103e2565b10156146c75783906145975f614590818a906115f5565b5001611636565b906020886145ac6145a785611c18565b611c24565b6145e85f6323b872dd6145f36145d46145cf33976145c930611c30565b9c611c83565b612647565b6145dc610312565b9a8b9788968795611c40565b855260048501612bb9565b03925af19283156146c25761466a93614613915f91614694575b50614280565b61461b611de8565b508161463861463261462d6002611636565b6104c3565b916104c3565b146146705761465d61466392614657614652898c90611c83565b612647565b9061803f565b90612681565b955b611bfd565b9461455e565b61468e9150614688614683878a90611c83565b612647565b90612681565b95614665565b6146b5915060203d81116146bb575b6146ad8183610846565b810190613388565b5f61460d565b503d6146a3565b611c73565b9194509291506146e9816146e36146dd5f611be1565b916103e2565b11614342565b6146f1611de8565b50816147056146ff5f611be1565b916103e2565b145f146147a257614721915061471b6003611657565b9061295d565b905b614740826147396147335f611be1565b916103e2565b14156144a0565b61474b818390617852565b614753617a27565b61475b617ce2565b819061479c61478a7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c92611730565b92614793610312565b918291826105ca565b0390a290565b6147fb6147ea614801936147e56147b7615ebb565b50946147d5866147cf6147c95f611be1565b916103e2565b11614404565b6147df6003611657565b9061295d565b61295d565b916147f56003611657565b9061295d565b906129bf565b90614723565b9061481a9291614815611de8565b614067565b90565b606090565b67ffffffffffffffff811161483a5760208091020190565b610819565b9061485161484c83614822565b61086f565b918252565b369037565b906148806148688361483f565b926020806148768693614822565b9201910390614856565b565b9061488c90610542565b9052565b61489861481d565b506148a1611b96565b506148aa615ebb565b6148b35f6115e8565b916148bd8361485b565b916148c784611bb7565b946148d15f611be1565b5b806148e56148df886103e2565b916103e2565b10156149cd5761498e90614920614919614908614903878590611c83565b612647565b6149136127106126a9565b9061295d565b86906129bf565b61493760016149305f85906115f5565b5001611657565b908061494b614945846103e2565b916103e2565b115f14614993576149719161495f916129e1565b61496c8a91849092611c83565b611ca3565b614988600161498388918490926131eb565b614882565b5b611bfd565b6148d2565b6149a0906149b2926129e1565b6149ad8a91849092611c83565b611ca3565b6149c85f6149c388918490926131eb565b614882565b614989565b50935050509190565b5f7f496e76616c696420617373657420696e64657800000000000000000000000000910152565b614a0a6013602092610333565b614a13816149d6565b0190565b614a2c9060208101905f8183039101526149fd565b90565b15614a3657565b614a3e610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614a6e60048201614a17565b0390fd5b614ab5614aba91614a81611de8565b50614a8a615ebb565b9050614ab082614aaa614aa4614a9f856103cf565b6103e2565b916103e2565b10614a2f565b611c83565b612647565b90565b90614ac790611730565b5f5260205260405f2090565b614b0191614af7614afc92614ae6611de8565b506001614af1615e7a565b01614abd565b61173c565b611657565b90565b90614b2d939291614b2884614b21614b1b426103e2565b916103e2565b1015613633565b614b30565b90565b90614b44939291614b3f617e06565b614b4f565b90614b4d617eb2565b565b90614b63939291614b5e617ff5565b615213565b90565b5f7f496e76616c696420616464726573730000000000000000000000000000000000910152565b614b9a600f602092610333565b614ba381614b66565b0190565b614bbc9060208101905f818303910152614b8d565b90565b15614bc657565b614bce610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614bfe60048201614ba7565b0390fd5b5f7f5368617265206d7573742062652067726561746572207468616e203000000000910152565b614c36601c602092610333565b614c3f81614c02565b0190565b614c589060208101905f818303910152614c29565b90565b15614c6257565b614c6a610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614c9a60048201614c43565b0390fd5b916020614cbf929493614cb860408201965f83019061106a565b019061106a565b565b60207f616e636500000000000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c3a20496e73756666696369656e7420416c6c6f775f8201520152565b614d1b6024604092610333565b614d2481614cc1565b0190565b614d3d9060208101905f818303910152614d0e565b90565b15614d4757565b614d4f610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614d7f60048201614d28565b0390fd5b5f7f5472616e736665722046726f6d204661696c6564000000000000000000000000910152565b614db76014602092610333565b614dc081614d83565b0190565b614dd99060208101905f818303910152614daa565b90565b15614de357565b614deb610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614e1b60048201614dc4565b0390fd5b5f7f4e6f206c69717569646974790000000000000000000000000000000000000000910152565b614e53600c602092610333565b614e5c81614e1f565b0190565b614e759060208101905f818303910152614e46565b90565b15614e7f57565b614e87610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614eb760048201614e60565b0390fd5b5f7f496e76616c696420747265617375727920616464726573730000000000000000910152565b614eef6018602092610333565b614ef881614ebb565b0190565b614f119060208101905f818303910152614ee2565b90565b15614f1b57565b614f23610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280614f5360048201614efc565b0390fd5b60207f2042616c616e6365000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c3a20496e73756666696369656e742041737365745f8201520152565b614fb16028604092610333565b614fba81614f57565b0190565b614fd39060208101905f818303910152614fa4565b90565b15614fdd57565b614fe5610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061501560048201614fbe565b0390fd5b60207f6400000000000000000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c3a20466565205472616e73666572204661696c655f8201520152565b6150736021604092610333565b61507c81615019565b0190565b6150959060208101905f818303910152615066565b90565b1561509f57565b6150a7610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806150d760048201615080565b0390fd5b5f7f4173736574207472616e73666572206661696c65640000000000000000000000910152565b61510f6015602092610333565b615118816150db565b0190565b6151319060208101905f818303910152615102565b90565b1561513b57565b615143610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806151736004820161511c565b0390fd5b5f7f496e73756666696369656e742042414c554e49206c6971756964697479000000910152565b6151ab601d602092610333565b6151b481615177565b0190565b6151cd9060208101905f81830391015261519e565b90565b156151d757565b6151df610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061520f600482016151b8565b0390fd5b90919392505061523e8361523761523161522c5f612503565b6104c3565b916104c3565b1415614bbf565b61525a8161525461524e5f611be1565b916103e2565b11614c5b565b61527361526e61526930611c30565b611c18565b611c24565b602063dd62ed3e9133906152a161528930611c30565b946152ac615295610312565b96879586948594611c40565b845260048401614c9e565b03915afa8015615789576152db915f9161575b575b506152d46152ce846103e2565b916103e2565b1015614d40565b6152f46152ef6152ea30611c30565b611c18565b611c24565b60206323b872dd9133906153245f61530b30611c30565b9561532f88615318610312565b98899788968795611c40565b855260048501612bb9565b03925af180156157565761534a915f91615728575b50614ddc565b61536d615355611e84565b6153676153615f611be1565b916103e2565b11614e78565b61539a602061538461537f600461246b565b610f02565b633b19e84a90615392610312565b938492611c40565b825281806153aa60048201610af4565b03915afa908115615723575f916156f5575b50906153e3826153dc6153d66153d15f612503565b6104c3565b916104c3565b1415614f14565b6153ec5f611be1565b5b806154086154026153fd5f6115e8565b6103e2565b916103e2565b10156156595761542961542461541d846157a4565b8390611c83565b612647565b90615487602061545561545061544b5f6154448188906115f5565b5001611636565b611c18565b611c24565b6370a082319061547c61546730611c30565b92615470610312565b95869485938493611c40565b835260048301611077565b03915afa8015615654576154b6915f91615626575b506154af6154a9856103e2565b916103e2565b1015614fd6565b6154ca6154c283617ecf565b9283906129e1565b9160206154f36154ee6154e95f6154e28188906115f5565b5001611636565b611c18565b611c24565b9163a9059cbb926155185f89939561552361550c610312565b97889687958694611c40565b845260048401613bf6565b03925af180156156215761553e915f916155f3575b50615098565b602061556661556161555c5f6155558187906115f5565b5001611636565b611c18565b611c24565b9263a9059cbb9361558b5f8a939661559661557f610312565b98899687958694611c40565b845260048401613bf6565b03925af19182156155ee576155bb926155b6915f916155c0575b50615134565b611bfd565b6153ed565b6155e1915060203d81116155e7575b6155d98183610846565b810190613388565b5f6155b0565b503d6155cf565b611c73565b615614915060203d811161561a575b61560c8183610846565b810190613388565b5f615538565b503d615602565b611c73565b615647915060203d811161564d575b61563f8183610846565b810190611c55565b5f61549c565b503d615635565b611c73565b509192905061568b61567261566d30611c30565b612f98565b61568461567e856103e2565b916103e2565b10156151d0565b61569e61569730611c30565b8390618062565b6156a6617a27565b6156ae617ce2565b81906156ef6156dd7f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436492611730565b926156e6610312565b918291826105ca565b0390a290565b615716915060203d811161571c575b61570e8183610846565b810190612487565b5f6153bc565b503d615704565b611c73565b615749915060203d811161574f575b6157418183610846565b810190613388565b5f615344565b503d615737565b611c73565b61577c915060203d8111615782575b6157748183610846565b810190611c55565b5f6152c1565b503d61576a565b611c73565b906157a1929161579c611de8565b614b04565b90565b6157c0906157b0611b96565b506157ba81617ecf565b906129e1565b906157d26157cd5f6115e8565b611bb7565b6157db5f611be1565b5b806157f76157f16157ec5f6115e8565b6103e2565b916103e2565b10156158e05761585b90602061582961582461581f5f6158188187906115f5565b5001611636565b611c18565b611c24565b6370a082319061585061583b30611c30565b92615844610312565b96879485938493611c40565b835260048301611077565b03915afa9182156158db576158916158836158a8946158a3935f916158ad575b50889061295d565b61588b611e84565b906129bf565b61589e8591849092611c83565b611ca3565b611bfd565b6157dc565b6158ce915060203d81116158d4575b6158c68183610846565b810190611c55565b5f61587b565b503d6158bc565b611c73565b5090915090565b6158f090610eda565b90565b6158fc906158e7565b90565b61590890610ef6565b90565b615914816107b4565b0361591b57565b5f80fd5b9050519061592c8261590b565b565b9060208282031261594757615944915f0161591f565b90565b61031c565b61596061595b615965926107b4565b610ed7565b6103e2565b90565b61597c61597761598192612026565b610ed7565b6103e2565b90565b90565b61599b6159966159a092615984565b610ed7565b6103e2565b90565b6159ac906103e2565b604d81116159ba57600a0a90565b612654565b6159c7611de8565b506159fd60206159e76159e26159dd6002611636565b6158f3565b6158ff565b63313ce567906159f5610312565b938492611c40565b82528180615a0d60048201610af4565b03915afa8015615af857615a2f615a3e91615a43935f91615aca575b5061594c565b615a396012615968565b6129e1565b6159a3565b615a4b611e84565b80615a5e615a585f611be1565b916103e2565b14615abc57615a6b615ebb565b509182615a80615a7a5f611be1565b916103e2565b14615aad57615a95615aa591615aaa9461295d565b615a9f6001611657565b9061295d565b6129bf565b90565b505050615ab95f611be1565b90565b5050615ac75f611be1565b90565b615aeb915060203d8111615af1575b615ae38183610846565b81019061592e565b5f615a29565b503d615ad9565b611c73565b615b0e90615b09616be0565b615b10565b565b80615b2b615b25615b205f612503565b6104c3565b916104c3565b14615b3b57615b3990617025565b565b615b7e615b475f612503565b615b4f610312565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b615b8b90615afd565b565b615b9690611910565b9052565b9190615bad905f60208501940190615b8d565b565b91929490938195615bbe6161c6565b94615bca5f870161207b565b8015615c7b575b615c3f57615c0496615bfb95615be98a5f8a0161213e565b615bf660015f8a01612191565b615ca0565b5f809101612191565b615c3a7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291615c31610312565b91829182615b9a565b0390a1565b615c47610312565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280615c7760048201610af4565b0390fd5b50615c875f87016120a9565b615c99615c938a611910565b91611910565b1015615bd1565b615ce6929396955093615cc2615cdf92615d2b96615cbd33616208565b616233565b615cca616249565b615cd261626f565b615cda616295565b612360565b60046123a4565b615d01615cfa670de0b6b3a76400006123c7565b6001612437565b6020615d15615d10600461246b565b610f02565b631bf01e9b90615d23610312565b948592611c40565b82528180615d3b60048201610af4565b03915afa908115615e6557615d60615dad92615db2945f91615e37575b5060026124a8565b615d78615d7164e8d4a510006124cb565b6003612437565b615da6615d856002611636565b615d9f615d99615d945f612503565b6104c3565b916104c3565b1415612568565b84906167e4565b612604565b615dbb5f611be1565b615dc45f611be1565b905b81615de1615ddb615dd6876103cf565b6103e2565b916103e2565b1015615e1357615e07615e0d91615e01615dfc878690611c83565b612647565b90612681565b91611bfd565b90615dc6565b9050615e35919250615e2f615e296127106126a9565b916103e2565b1461271e565b565b615e58915060203d8111615e5e575b615e508183610846565b810190612487565b5f615d58565b503d615e46565b611c73565b90615e789594939291615baf565b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b615ea6613343565b503390565b91615eb992916001926180e1565b565b615ec3611de8565b615ecb611b96565b50615ed55f6115e8565b90615edf82611bb7565b92615ee95f611be1565b915b82615efe615ef8866103e2565b916103e2565b1015615fd657615f1a5f615f138186906115f5565b5001611636565b615f2381613f5f565b9081615f37615f315f611be1565b916103e2565b14615fca5791615f999183615fa094615f61615f5b615f566002611636565b6104c3565b916104c3565b145f14615fa65750615f7f90615f7a8991889092611c83565b611ca3565b5b615f93615f8e888790611c83565b612647565b90612681565b925b611bfd565b91615eeb565b615fc591615fb39161803f565b615fc08991889092611c83565b611ca3565b615f80565b505091615fa090615f9b565b915091509190565b60409061600761600e9496959396615ffd60608401985f85019061106a565b60208301906105bd565b01906105bd565b565b9061601b91036103e2565b90565b92919261602c818390614ad3565b908161606061605a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103e2565b916103e2565b0361606d575b5050509050565b8161608061607a876103e2565b916103e2565b106160a65761609d9394616095919392616010565b905f926180e1565b805f8080616066565b506160e5849291926160b6610312565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501615fde565b0390fd5b91826161056160ff6160fa5f612503565b6104c3565b916104c3565b1461617f578161612561611f61611a5f612503565b6104c3565b916104c3565b146161385761613692919091618249565b565b61617b6161445f612503565b61614c610312565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b6161c261618b5f612503565b616193610312565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6161fb906161f66183ef565b6161fd565b565b616206906184c7565b565b616211906161ea565b565b90616225916162206183ef565b616227565b565b906162319161868c565b565b9061623d91616213565b565b6162476183ef565b565b61625161623f565b565b61625b6183ef565b616263616265565b565b61626d6186c7565b565b616277616253565b565b6162816183ef565b61628961628b565b565b6162936186f9565b565b61629d616279565b565b5f7f496e76616c696420726562616c616e6365722061646472657373000000000000910152565b6162d3601a602092610333565b6162dc8161629f565b0190565b6162f59060208101905f8183039101526162c6565b90565b156162ff57565b616307610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280616337600482016162e0565b0390fd5b60207f6368000000000000000000000000000000000000000000000000000000000000917f41737365747320616e642077656967687473206c656e677468206d69736d61745f8201520152565b6163956022604092610333565b61639e8161633b565b0190565b6163b79060208101905f818303910152616388565b90565b156163c157565b6163c9610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806163f9600482016163a2565b0390fd5b61640890600461295d565b90565b1b90565b919060086164499102916164437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8461640b565b9261640b565b9181191691161790565b919061646961646461647193612418565b612434565b90835461640f565b9055565b61648791616481611de8565b91616453565b565b5f60036164b59282808201556164a28360018301616475565b6164af8360028301616475565b01616475565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b905f036164f5576164f390616489565b565b6164b7565b5b818110616506575050565b806165135f6004936164e3565b016164fb565b9091828110616528575b505050565b61654661654061653a616551956163fd565b926163fd565b926115ec565b9182019101906164fa565b5f8080616523565b906801000000000000000081116165825781616577616580936115e8565b90828155616519565b565b610819565b5f61659191616559565b565b905f036165a5576165a390616587565b565b6164b7565b6165b490516104c3565b90565b5f7f496e76616c696420617373657420616464726573730000000000000000000000910152565b6165eb6015602092610333565b6165f4816165b7565b0190565b61660d9060208101905f8183039101526165de565b90565b1561661757565b61661f610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061664f600482016165f8565b0390fd5b5f7f496e76616c696420776569676874000000000000000000000000000000000000910152565b616687600e602092610333565b61669081616653565b0190565b6166a99060208101905f81830391015261667a565b90565b156166b357565b6166bb610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806166eb60048201616694565b0390fd5b90565b6166fc608061086f565b90565b5f5260205f2090565b5490565b61671581616708565b82101561672f576167276004916166ff565b910201905f90565b6115bb565b9061679160606003616797946167575f82016167515f88016165aa565b906124a8565b6167706001820161676a60208801612647565b90612437565b6167896002820161678360408801612647565b90612437565b019201612647565b90612437565b565b91906167aa576167a891616734565b565b6164b7565b90815491680100000000000000008310156167df57826167d79160016167dd9501815561670c565b90616799565b565b610819565b9190916167ef611dc2565b5061681d6020616807616802600461246b565b610f02565b63cff49d6890616815610312565b938492611c40565b8252818061682d60048201610af4565b03915afa908115616bdb575f91616bad575b509261686e6020616858616853600461246b565b610f02565b63cff49d6890616866610312565b938492611c40565b8252818061687e60048201610af4565b03915afa8015616ba8576168b5915f91616b7a575b506168ae6168a86168a35f612503565b6104c3565b916104c3565b14156162f8565b6168e16168c183610d49565b6168db6168d56168d0856103cf565b6103e2565b916103e2565b146163ba565b6168eb5f80616593565b6168f45f611be1565b5b8061691061690a61690586610d49565b6103e2565b916103e2565b1015616b705761694d61692c616927858490612ee8565b6165aa565b61694661694061693b5f612503565b6104c3565b916104c3565b1415616610565b61697b61696361695e848490611c83565b612647565b61697561696f5f611be1565b916103e2565b116166ac565b6169fe6169875f6166ef565b61699a616995868590612ee8565b6165aa565b906169f96169f06169b46169af888890611c83565b612647565b6169eb6169e25f6169dd5f946169d46169cb6166f2565b9a5f8c01612f08565b60208a01611ca3565b611be1565b60408701611ca3565b611be1565b60608401611ca3565b6167af565b616a19616a14616a0f858490612ee8565b6165aa565b611c18565b616a2281611c24565b602063dd62ed3e91616a3330611c30565b90616a508a94616a5b616a44610312565b96879586948594611c40565b845260048401614c9e565b03915afa908115616b6b575f91616b3d575b50616a80616a7a5f611be1565b916103e2565b14616a95575b50616a9090611bfd565b6168f5565b616a9e90611c24565b90602063095ea7b3928790616ae65f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96616af1616ada610312565b98899687958694611c40565b845260048401613bf6565b03925af1918215616b3857616a9092616b0c575b5090616a86565b616b2c9060203d8111616b31575b616b248183610846565b810190613388565b616b05565b503d616b1a565b611c73565b616b5e915060203d8111616b64575b616b568183610846565b810190611c55565b5f616a6d565b503d616b4c565b611c73565b5050509050600190565b616b9b915060203d8111616ba1575b616b938183610846565b810190612487565b5f616893565b503d616b89565b611c73565b616bce915060203d8111616bd4575b616bc68183610846565b810190612487565b5f61683f565b503d616bbc565b611c73565b616be8613347565b616c01616bfb616bf6615e9e565b6104c3565b916104c3565b03616c0857565b616c4a616c13615e9e565b616c1b610312565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b616c56618703565b616c5e616c96565b565b90616c6c60ff916120fd565b9181191691161790565b90616c8b616c86616c9292612182565b61218e565b8254616c60565b9055565b616caa616ca1617001565b5f809101616c76565b616cb2615e9e565b616ce87f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa91616cdf610312565b91829182611077565b0390a1565b616cf5616c4e565b565b616d0090610ef6565b90565b616d0c30616cf7565b616d3e616d387f00000000000000000000000000000000000000000000000000000000000000006104c3565b916104c3565b148015616d88575b616d4c57565b616d54610312565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280616d8460048201610af4565b0390fd5b50616d91618756565b616dc3616dbd7f00000000000000000000000000000000000000000000000000000000000000006104c3565b916104c3565b1415616d46565b50616dd3616be0565b565b616dde90616dca565b565b616de990610eda565b90565b616df590616de0565b90565b616e0190610ef6565b90565b616e0d81610cba565b03616e1457565b5f80fd5b90505190616e2582616e04565b565b90602082820312616e4057616e3d915f01616e18565b90565b61031c565b9190616e736020616e5d616e5886616dec565b616df8565b6352d1902d90616e6b610312565b938492611c40565b82528180616e8360048201610af4565b03915afa80915f92616f53575b50155f14616ee4575050906001616ea557505b565b616ee090616eb1610312565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b9283616eff616ef9616ef4612e16565b610cba565b91610cba565b03616f1457616f0f929350618780565b616ea3565b616f4f84616f20610312565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610cca565b0390fd5b616f7591925060203d8111616f7c575b616f6d8183610846565b810190616e27565b905f616e90565b503d616f63565b616f8c30616cf7565b616fbe616fb87f00000000000000000000000000000000000000000000000000000000000000006104c3565b916104c3565b03616fc557565b616fcd610312565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280616ffd60048201610af4565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b61702d6175b5565b61704561703b5f8301611636565b915f8491016124a8565b906170796170737f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611730565b91611730565b91617082610312565b8061708c81610af4565b0390a3565b61709a90610eda565b90565b6170a690617091565b90565b6170b290610ef6565b90565b5f9103126170bf57565b61031c565b9260c09498979561711d61711261712793617104617131976170f66171389d9860e08c01908c5f818403910152610409565b908a820360208c0152610d80565b9088820360408a0152610409565b9a60608701906105bd565b608085019061106a565b60a083019061106a565b019061106a565b565b617167602061715161714c600461246b565b610f02565b63cff49d689061715f610312565b938492611c40565b8252818061717760048201610af4565b03915afa90811561753c575f9161750e575b5090617193612f16565b9061719c611eb8565b916171a65f611be1565b5b806171c26171bc6171b75f6115e8565b6103e2565b916103e2565b1015617379576171ee6171e96171e45f6171dd8186906115f5565b5001611636565b611c18565b611c24565b602063dd62ed3e916171ff30611c30565b9061721c8994617227617210610312565b96879586948594611c40565b845260048401614c9e565b03915afa908115617374575f91617346575b5061726c6172667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103e2565b916103e2565b10617280575b61727b90611bfd565b6171a7565b6172a66172a161729c5f6172958186906115f5565b5001611636565b611c18565b611c24565b90602063095ea7b39287906172ee5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff966172f96172e2610312565b98899687958694611c40565b845260048401613bf6565b03925af19182156173415761727b92617315575b509050617272565b6173359060203d811161733a575b61732d8183610846565b810190613388565b61730d565b503d617323565b611c73565b617367915060203d811161736d575b61735f8183610846565b810190611c55565b5f617239565b503d617355565b611c73565b50919092617385611cb1565b6173b2602061739c617397600461246b565b610f02565b63ea233c05906173aa610312565b938492611c40565b825281806173c260048201610af4565b03915afa908115617509576173e8916173e3915f916174db575b509361709d565b6170a9565b63f0bf77148594936173f930611c30565b9161740330611c30565b9561740e6002611636565b853b156174d6575f9761743595899561744094617429610312565b9c8d9b8c9a8b99611c40565b8952600489016170c4565b03925af180156174d1576174a5575b50617458617a27565b617460617ce2565b336174a061748e7f279b343370f587af7fb675ae7c8578e9c8abcc373236ad02c501a4771fe7a7b892611730565b92617497610312565b91829182610dd0565b0390a2565b6174c4905f3d81116174ca575b6174bc8183610846565b8101906170b5565b5f61744f565b503d6174b2565b611c73565b611c3c565b6174fc915060203d8111617502575b6174f48183610846565b810190611c55565b5f6173dc565b503d6174ea565b611c73565b61752f915060203d8111617535575b6175278183610846565b810190612487565b5f617189565b503d61751d565b611c73565b617549617ff5565b617551617553565b565b61756861755e617001565b5f60019101616c76565b617570615e9e565b6175a67f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589161759d610312565b91829182611077565b0390a1565b6175b3617541565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b91906175e3611b96565b506175f56175f05f6115e8565b611bb7565b6175fe5f611be1565b5b8061761a61761461760f5f6115e8565b6103e2565b916103e2565b10156176c75761768a9061765961764887617642600161763b5f87906115f5565b5001611657565b9061295d565b6176536127106126a9565b906129bf565b61766c617667868490611c83565b612647565b61767e617678836103e2565b916103e2565b1061768f575b50611bfd565b6175ff565b6176af6176c1916176a96176a4888690611c83565b612647565b906129e1565b6176bc8591849092611c83565b611ca3565b5f617684565b509192505090565b6176d7611de8565b906176e15f611be1565b915b826176fe6176f86176f35f6115e8565b6103e2565b916103e2565b10156177305761772461772a9161771e617719858790611c83565b612647565b90612681565b92611bfd565b916176e3565b91505090565b5f7f496e76616c696420746f6b656e20616d6f756e7420746f206164640000000000910152565b61776a601b602092610333565b61777381617736565b0190565b61778c9060208101905f81830391015261775d565b90565b1561779657565b61779e610312565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806177ce60048201617777565b0390fd5b6177da611de8565b506177f15f6177ea8184906115f5565b5001611636565b61780c6178066178016002611636565b6104c3565b916104c3565b1461784e579061782a5f61782361782f94826115f5565b5001611636565b618809565b61784b8161784561783f5f611be1565b916103e2565b1161778f565b90565b5090565b8061786d6178676178625f612503565b6104c3565b916104c3565b14617889576178879161787f5f612503565b919091618249565b565b6178cc6178955f612503565b61789d610312565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b90565b6178e76178e26178ec926178d0565b610ed7565b6103e2565b90565b5f7f556e646572666c6f772064656372656d656e74696e6720736c69707061676500910152565b617923601f602092610333565b61792c816178ef565b0190565b6179459060208101905f818303910152617916565b90565b1561794f57565b617957610312565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061798760048201617930565b0390fd5b5f7f4f766572666c6f7720696e6372656d656e74696e6720736c6970706167650000910152565b6179bf601e602092610333565b6179c88161798b565b0190565b6179e19060208101905f8183039101526179b2565b90565b156179eb57565b6179f3610312565b7f08c379a000000000000000000000000000000000000000000000000000000000815280617a23600482016179cc565b0390fd5b617a2f614890565b90617a3a60646178d3565b91617a45600a615987565b91617a4f5f611be1565b5b80617a6b617a65617a605f6115e8565b6103e2565b916103e2565b1015617cdb57617b8190617a8c6002617a855f84906115f5565b5001611657565b617a9f617a9a868490611c83565b612647565b617ab1617aab896103e2565b916103e2565b1115617cbd57617aca617ac58584906131eb565b61320b565b5f14617ba357617b4b90617b1b617af4617aed617ae8898790611c83565b612647565b8a906129bf565b617b156002617b045f88906115f5565b500191617b1083611657565b612681565b90612437565b617b44617b3e617b386002617b315f88906115f5565b5001611657565b926103e2565b916103e2565b10156179e4565b5b617b636002617b5c5f84906115f5565b5001611657565b617b75617b6f876103e2565b916103e2565b11617b86575b5b611bfd565b617a50565b617b9e856002617b975f85906115f5565b5001612437565b617b7b565b617bba6002617bb35f85906115f5565b5001611657565b617be8617be2617bdd617bd6617bd18a8890611c83565b612647565b8b906129bf565b6103e2565b916103e2565b115f14617c7057617c6a90617c3a617c13617c0c617c07898790611c83565b612647565b8a906129bf565b617c346002617c235f88906115f5565b500191617c2f83611657565b6129e1565b90612437565b617c63617c5d617c576002617c505f88906115f5565b5001611657565b926103e2565b916103e2565b1115617948565b5b617b4c565b50617cb8617c91617c8a617c85878590611c83565b612647565b88906129bf565b617cb26002617ca15f86906115f5565b500191617cad83611657565b612681565b90612437565b617c6b565b50617cd6856002617ccf5f85906115f5565b5001612437565b617b7c565b5050505050565b617ceb5f611be1565b5b80617d07617d01617cfc5f6115e8565b6103e2565b916103e2565b1015617dd757617d6b906020617d39617d34617d2f5f617d288187906115f5565b5001611636565b611c18565b611c24565b6370a0823190617d60617d4b30611c30565b92617d54610312565b96879485938493611c40565b835260048301611077565b03915afa918215617dd257617d9f92617d9a915f91617da4575b506003617d935f85906115f5565b5001612437565b611bfd565b617cec565b617dc5915060203d8111617dcb575b617dbd8183610846565b810190611c55565b5f617d85565b503d617db3565b611c73565b50565b90565b617df1617dec617df692617dda565b610ed7565b6103e2565b90565b617e036002617ddd565b90565b617e0e61882b565b617e195f8201611657565b617e32617e2c617e27617df9565b6103e2565b916103e2565b14617e4d57617e4b905f617e44617df9565b9101612437565b565b617e55610312565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280617e8560048201610af4565b0390fd5b617e9d617e98617ea2926120d2565b610ed7565b6103e2565b90565b617eaf6001617e89565b90565b617ecd617ebd61882b565b5f617ec6617ea5565b9101612437565b565b617ed7611de8565b50617f056020617eef617eea600461246b565b610f02565b6385462d6f90617efd610312565b938492611c40565b82528180617f1560048201610af4565b03915afa908115617ff0575f91617fc2575b5090617f566020617f40617f3b600461246b565b610f02565b634f4608a290617f4e610312565b938492611c40565b82528180617f6660048201610af4565b03915afa928315617fbd57617f8c93617f87925f91617f8f575b509261295d565b6129bf565b90565b617fb0915060203d8111617fb6575b617fa88183610846565b810190611c55565b5f617f80565b503d617f9e565b611c73565b617fe3915060203d8111617fe9575b617fdb8183610846565b810190611c55565b5f617f27565b503d617fd1565b611c73565b617ffd612e82565b61800357565b61800b610312565b7fd93c06650000000000000000000000000000000000000000000000000000000081528061803b60048201610af4565b0390fd5b9061805f9161804c611de8565b50906180586002611636565b9091612beb565b90565b908161807e6180786180735f612503565b6104c3565b916104c3565b1461809a5761809891906180915f612503565b9091618249565b565b6180dd6180a65f612503565b6180ae610312565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b90926180eb615e7a565b826181066181006180fb5f612503565b6104c3565b916104c3565b146181f4578461812661812061811b5f612503565b6104c3565b916104c3565b146181ad5761814d9061814861814160018793018690614abd565b879061173c565b612437565b618157575b505050565b9190916181a261819061818a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593611730565b93611730565b93618199610312565b918291826105ca565b0390a35f8080618152565b6181f06181b95f612503565b6181c1610312565b9182917f94280d6200000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b6182376182005f612503565b618208610312565b9182917fe602df0500000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b9061824691016103e2565b90565b919091618254615e7a565b8161826f6182696182645f612503565b6104c3565b916104c3565b145f1461835a5761829683618290600284019161828b83611657565b612681565b90612437565b5b836182b26182ac6182a75f612503565b6104c3565b916104c3565b145f1461832b576182da906182d46002859201916182cf83611657565b616010565b90612437565b5b91909161832661831461830e7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93611730565b93611730565b9361831d610312565b918291826105ca565b0390a3565b6183559061834f6183405f869301879061173c565b9161834a83611657565b61823b565b90612437565b6182db565b61836f61836a5f8301849061173c565b611657565b8061838261837c866103e2565b916103e2565b106183ac576183956183a7918590616010565b6183a25f8401859061173c565b612437565b618297565b916183eb915091926183bc610312565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501615fde565b0390fd5b6184006183fa61884f565b15610542565b61840657565b61840e610312565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061843e60048201610af4565b0390fd5b6184539061844e6183ef565b618455565b565b8061847061846a6184655f612503565b6104c3565b916104c3565b146184805761847e90617025565b565b6184c361848c5f612503565b618494610312565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b6184d090618442565b565b906184e4916184df6183ef565b618668565b565b601f602091010490565b5b8181106184fc575050565b806185095f600193616475565b016184f1565b9190601f811161851f575b505050565b61852b61855093611aa7565b906020618537846184e6565b83019310618558575b618549906184e6565b01906184f0565b5f808061851a565b915061854981929050618540565b90618576905f1990600802610e85565b191690565b8161858591618566565b906002021790565b906185978161032f565b9067ffffffffffffffff8211618657576185bb826185b58554611a74565b8561850f565b602090601f83116001146185ef579180916185de935f926185e3575b505061857b565b90555b565b90915001515f806185d7565b601f198316916185fe85611aa7565b925f5b81811061863f57509160029391856001969410618625575b505050020190556185e1565b618635910151601f841690618566565b90555f8080618619565b91936020600181928787015181550195019201618601565b610819565b906186669161858d565b565b600461868a92618683618679615e7a565b936003850161865c565b910161865c565b565b90618696916184d2565b565b6186a06183ef565b6186a86186aa565b565b6186c56186b561882b565b5f6186be617ea5565b9101612437565b565b6186cf618698565b565b6186d96183ef565b6186e16186e3565b565b6186f76186ee617001565b5f809101616c76565b565b6187016186d1565b565b61871461870e612e82565b15610542565b61871a57565b618722610312565b7f8dfc202b0000000000000000000000000000000000000000000000000000000081528061875260048201610af4565b0390fd5b61875e613343565b506187795f61877361876e612e16565b61886d565b01611636565b90565b5190565b9061878a82618870565b816187b57fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91611730565b906187be610312565b806187c881610af4565b0390a26187d48161877c565b6187e66187e05f611be1565b916103e2565b115f146187fa576187f691618980565b505b565b50506188046188e5565b6187f8565b61882891618815611de8565b506188206002611636565b919091612beb565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b618857611dc2565b5061886a5f6188646161c6565b0161207b565b90565b90565b803b61888461887e5f611be1565b916103e2565b146188a6576188a4905f61889e618899612e16565b61886d565b016124a8565b565b6188e1906188b2610312565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b346188f86188f25f611be1565b916103e2565b116188ff57565b618907610312565b7fb398979f0000000000000000000000000000000000000000000000000000000081528061893760048201610af4565b0390fd5b606090565b9061895261894d83610bcf565b61086f565b918252565b3d5f14618972576189673d618940565b903d5f602084013e5b565b61897a61893b565b90618970565b5f806189ac9361898e61893b565b508390602081019051915af4906189a3618957565b909190916189af565b90565b906189c3906189bc61893b565b5015610542565b5f146189cf5750618a53565b6189d88261877c565b6189ea6189e45f611be1565b916103e2565b1480618a38575b6189f9575090565b618a3490618a05610312565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301611077565b0390fd5b50803b618a4d618a475f611be1565b916103e2565b146189f1565b618a5c8161877c565b618a6e618a685f611be1565b916103e2565b115f14618a7d57805190602001fd5b618a85610312565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280618ab560048201610af4565b0390fdfea2646970667358221220c9917cfc9bfdd74b7291619426fceb93e7bfca689514990ecb531a91c62de1db64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x1A3E JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x30C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0x12899068 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x2EE JUMPI DUP1 PUSH4 0x22ACB867 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x250AA683 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x2DA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x34DE9B8D EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x2CB JUMPI DUP1 PUSH4 0x43C2E2F5 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x4AA06652 EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x7D7C2A1C EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x7FF1C179 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x89B3179B EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x8A77C8DC EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x8DE30F30 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x9908FC8B EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xB2B55D70 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xB3BF9D32 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0xB7110E13 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0xC2EE3A08 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0xCF8FA764 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xD14EF46D EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0xD66BD524 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0xE63697C8 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0xE64EBDD2 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x226 JUMPI PUSH4 0xFB33A6C0 SUB PUSH2 0xE JUMPI PUSH2 0x1A04 JUMP JUMPDEST PUSH2 0x18DD JUMP JUMPDEST PUSH2 0x18A8 JUMP JUMPDEST PUSH2 0x1873 JUMP JUMPDEST PUSH2 0x183D JUMP JUMPDEST PUSH2 0x17CD JUMP JUMPDEST PUSH2 0x176B JUMP JUMPDEST PUSH2 0x16F7 JUMP JUMPDEST PUSH2 0x1586 JUMP JUMPDEST PUSH2 0x1533 JUMP JUMPDEST PUSH2 0x14B0 JUMP JUMPDEST PUSH2 0x1442 JUMP JUMPDEST PUSH2 0x135A JUMP JUMPDEST PUSH2 0x12D2 JUMP JUMPDEST PUSH2 0x129D JUMP JUMPDEST PUSH2 0x11EF JUMP JUMPDEST PUSH2 0x11B2 JUMP JUMPDEST PUSH2 0x10F6 JUMP JUMPDEST PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x108C JUMP JUMPDEST PUSH2 0x1035 JUMP JUMPDEST PUSH2 0x1000 JUMP JUMPDEST PUSH2 0xFCD JUMP JUMPDEST PUSH2 0xF98 JUMP JUMPDEST PUSH2 0xF65 JUMP JUMPDEST PUSH2 0xF30 JUMP JUMPDEST PUSH2 0xE52 JUMP JUMPDEST PUSH2 0xE1D JUMP JUMPDEST PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH2 0xCDF JUMP JUMPDEST PUSH2 0xC90 JUMP JUMPDEST PUSH2 0xB99 JUMP JUMPDEST PUSH2 0xB63 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xAF9 JUMP JUMPDEST PUSH2 0x7DC JUMP JUMPDEST PUSH2 0x77E JUMP JUMPDEST PUSH2 0x723 JUMP JUMPDEST PUSH2 0x6ED JUMP JUMPDEST PUSH2 0x67E JUMP JUMPDEST PUSH2 0x649 JUMP JUMPDEST PUSH2 0x614 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST PUSH2 0x569 JUMP JUMPDEST PUSH2 0x471 JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x32A JUMPI JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x370 PUSH2 0x379 PUSH1 0x20 SWAP4 PUSH2 0x37E SWAP4 PUSH2 0x367 DUP2 PUSH2 0x32F JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x333 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x33C JUMP JUMPDEST PUSH2 0x347 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x397 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x351 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3CA JUMPI PUSH2 0x3AA CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x3C6 PUSH2 0x3B5 PUSH2 0x1B77 JUMP JUMPDEST PUSH2 0x3BD PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x382 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EE SWAP1 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x3FF DUP2 PUSH1 0x20 SWAP4 PUSH2 0x3E5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x426 PUSH2 0x420 PUSH2 0x419 DUP5 PUSH2 0x3CF JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x3D3 JUMP JUMPDEST SWAP3 PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x436 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x44F PUSH2 0x449 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x3F2 JUMP JUMPDEST SWAP5 PUSH2 0x403 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x429 JUMP JUMPDEST PUSH2 0x46E SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x4A1 JUMPI PUSH2 0x481 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x49D PUSH2 0x48C PUSH2 0x1CB1 JUMP JUMPDEST PUSH2 0x494 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4CC SWAP1 PUSH2 0x4AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4D8 DUP2 PUSH2 0x4C3 JUMP JUMPDEST SUB PUSH2 0x4DF JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x4F0 DUP3 PUSH2 0x4CF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4FB DUP2 PUSH2 0x3E2 JUMP JUMPDEST SUB PUSH2 0x502 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x513 DUP3 PUSH2 0x4F2 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x53D JUMPI DUP1 PUSH2 0x531 PUSH2 0x53A SWAP3 PUSH0 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x550 SWAP1 PUSH2 0x542 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x567 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x547 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x59A JUMPI PUSH2 0x596 PUSH2 0x585 PUSH2 0x57F CALLDATASIZE PUSH1 0x4 PUSH2 0x515 JUMP JUMPDEST SWAP1 PUSH2 0x1DC6 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x5B8 JUMPI PUSH2 0x5B5 SWAP2 PUSH0 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0x5C6 SWAP1 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5DD SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x60F JUMPI PUSH2 0x60B PUSH2 0x5FA PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x1DEC JUMP JUMPDEST PUSH2 0x602 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x644 JUMPI PUSH2 0x624 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x640 PUSH2 0x62F PUSH2 0x1E84 JUMP JUMPDEST PUSH2 0x637 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x679 JUMPI PUSH2 0x659 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x675 PUSH2 0x664 PUSH2 0x1EA3 JUMP JUMPDEST PUSH2 0x66C PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x6AE JUMPI PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x6AA PUSH2 0x699 PUSH2 0x1EB8 JUMP JUMPDEST PUSH2 0x6A1 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x6E8 JUMPI PUSH2 0x6E5 PUSH2 0x6CE DUP5 PUSH0 DUP6 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH2 0x6DC DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x71E JUMPI PUSH2 0x71A PUSH2 0x709 PUSH2 0x703 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B3 JUMP JUMPDEST SWAP2 PUSH2 0x1F3B JUMP JUMPDEST PUSH2 0x711 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x753 JUMPI PUSH2 0x74F PUSH2 0x73E PUSH2 0x739 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x1F6A JUMP JUMPDEST PUSH2 0x746 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP2 PUSH2 0x77B SWAP3 PUSH2 0x76E PUSH1 0x40 DUP3 ADD SWAP4 PUSH0 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x7AF JUMPI PUSH2 0x78E CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x796 PUSH2 0x2002 JUMP JUMPDEST SWAP1 PUSH2 0x7AB PUSH2 0x7A2 PUSH2 0x312 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x758 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7C3 SWAP1 PUSH2 0x7B4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x7DA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7BA JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x80C JUMPI PUSH2 0x7EC CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x808 PUSH2 0x7F7 PUSH2 0x2045 JUMP JUMPDEST PUSH2 0x7FF PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7C7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x850 SWAP1 PUSH2 0x347 JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x86A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 PUSH2 0x882 PUSH2 0x87B PUSH2 0x312 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x846 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x8A2 JUMPI PUSH2 0x89E PUSH1 0x20 SWAP2 PUSH2 0x347 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x8C7 PUSH2 0x8C2 DUP3 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x8E3 JUMPI PUSH2 0x8E1 SWAP3 PUSH2 0x8A7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x815 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x906 JUMPI DUP2 PUSH1 0x20 PUSH2 0x903 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x8B2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x923 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x941 PUSH2 0x93C DUP3 PUSH2 0x90B JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x97E JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x965 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x973 DUP5 DUP7 PUSH2 0x4E3 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x958 JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x9A1 JUMPI DUP2 PUSH1 0x20 PUSH2 0x99E SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x92C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x9BE JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x9D8 PUSH2 0x9D3 DUP3 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0xA15 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x9FC JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0xA0A DUP5 DUP7 PUSH2 0x506 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x9EF JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xA38 JUMPI DUP2 PUSH1 0x20 PUSH2 0xA35 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x9C3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xA0 DUP4 DUP3 SUB SLT PUSH2 0xAEF JUMPI PUSH0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xAEA JUMPI DUP2 PUSH2 0xA68 SWAP2 DUP6 ADD PUSH2 0x8E8 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xAE5 JUMPI DUP3 PUSH2 0xA89 SWAP2 DUP4 ADD PUSH2 0x8E8 JUMP JUMPDEST SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xAE0 JUMPI DUP4 PUSH2 0xAAA SWAP2 DUP5 ADD PUSH2 0x983 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xADB JUMPI PUSH2 0xACF DUP2 PUSH2 0xAD8 SWAP4 DUP7 ADD PUSH2 0xA1A JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB2B JUMPI PUSH2 0xB15 PUSH2 0xB0C CALLDATASIZE PUSH1 0x4 PUSH2 0xA3D JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP3 PUSH2 0x2928 JUMP JUMPDEST PUSH2 0xB1D PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xB27 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xB5E JUMPI PUSH2 0xB40 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xB48 PUSH2 0x2953 JUMP JUMPDEST PUSH2 0xB50 PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xB5A DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xB94 JUMPI PUSH2 0xB90 PUSH2 0xB7F PUSH2 0xB79 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B3 JUMP JUMPDEST SWAP2 PUSH2 0x2A06 JUMP JUMPDEST PUSH2 0xB87 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xBCA JUMPI PUSH2 0xBC6 PUSH2 0xBB5 PUSH2 0xBAF CALLDATASIZE PUSH1 0x4 PUSH2 0x6B3 JUMP JUMPDEST SWAP2 PUSH2 0x2BEB JUMP JUMPDEST PUSH2 0xBBD PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xBED JUMPI PUSH2 0xBE9 PUSH1 0x20 SWAP2 PUSH2 0x347 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xC07 PUSH2 0xC02 DUP3 PUSH2 0xBCF JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xC23 JUMPI PUSH2 0xC21 SWAP3 PUSH2 0x8A7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x815 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xC46 JUMPI DUP2 PUSH1 0x20 PUSH2 0xC43 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xBF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0xC8B JUMPI PUSH2 0xC64 DUP4 PUSH0 DUP4 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC86 JUMPI PUSH2 0xC83 SWAP3 ADD PUSH2 0xC28 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0xCA4 PUSH2 0xC9E CALLDATASIZE PUSH1 0x4 PUSH2 0xC4B JUMP JUMPDEST SWAP1 PUSH2 0x2DD3 JUMP JUMPDEST PUSH2 0xCAC PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xCB6 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCC6 SWAP1 PUSH2 0xCBA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xCDD SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xCBD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xD0F JUMPI PUSH2 0xCEF CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xD0B PUSH2 0xCFA PUSH2 0x2E4E JUMP JUMPDEST PUSH2 0xD02 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xCCA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xD44 JUMPI PUSH2 0xD24 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xD40 PUSH2 0xD2F PUSH2 0x2E82 JUMP JUMPDEST PUSH2 0xD37 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xD65 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xD76 DUP2 PUSH1 0x20 SWAP4 PUSH2 0xD5C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD9D PUSH2 0xD97 PUSH2 0xD90 DUP5 PUSH2 0xD49 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xD4D JUMP JUMPDEST SWAP3 PUSH2 0xD56 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xDAD JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0xDC6 PUSH2 0xDC0 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0xD69 JUMP JUMPDEST SWAP5 PUSH2 0xD7A JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0xDA0 JUMP JUMPDEST PUSH2 0xDE5 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xD80 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE18 JUMPI PUSH2 0xDF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xE14 PUSH2 0xE03 PUSH2 0x2F16 JUMP JUMPDEST PUSH2 0xE0B PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xDD0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xE4D JUMPI PUSH2 0xE49 PUSH2 0xE38 PUSH2 0xE33 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x2F98 JUMP JUMPDEST PUSH2 0xE40 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xE80 JUMPI PUSH2 0xE62 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xE6A PUSH2 0x2FE4 JUMP JUMPDEST PUSH2 0xE72 PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xE7C DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xEB2 SWAP1 PUSH1 0x8 PUSH2 0xEB7 SWAP4 MUL PUSH2 0xE85 JUMP JUMPDEST PUSH2 0xE89 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xEC5 SWAP2 SLOAD PUSH2 0xEA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xED4 PUSH1 0x4 PUSH0 SWAP1 PUSH2 0xEBA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEEE PUSH2 0xEE9 PUSH2 0xEF3 SWAP3 PUSH2 0x4AA JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xEFF SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF0B SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF17 SWAP1 PUSH2 0xF02 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF2E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xF0E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xF60 JUMPI PUSH2 0xF40 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xF5C PUSH2 0xF4B PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0xF53 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xF1B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xF93 JUMPI PUSH2 0xF75 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xF7D PUSH2 0x308A JUMP JUMPDEST PUSH2 0xF85 PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xF8F DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xFC8 JUMPI PUSH2 0xFA8 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xFC4 PUSH2 0xFB3 PUSH2 0x30A4 JUMP JUMPDEST PUSH2 0xFBB PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0xFFB JUMPI PUSH2 0xFDD CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0xFE5 PUSH2 0x3143 JUMP JUMPDEST PUSH2 0xFED PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0xFF7 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1030 JUMPI PUSH2 0x102C PUSH2 0x101B PUSH2 0x1016 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x314D JUMP JUMPDEST PUSH2 0x1023 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1065 JUMPI PUSH2 0x1045 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x1061 PUSH2 0x1050 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x1058 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH2 0x1073 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x108A SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x10BC JUMPI PUSH2 0x109C CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x10B8 PUSH2 0x10A7 PUSH2 0x3347 JUMP JUMPDEST PUSH2 0x10AF PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x10F1 JUMPI PUSH2 0x10ED PUSH2 0x10DC PUSH2 0x10D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x33A6 JUMP JUMPDEST PUSH2 0x10E4 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1126 JUMPI PUSH2 0x1106 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x1122 PUSH2 0x1111 PUSH2 0x35BB JUMP JUMPDEST PUSH2 0x1119 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x382 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0x118A JUMPI PUSH2 0x1143 DUP4 PUSH0 DUP5 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP3 PUSH2 0x1151 DUP2 PUSH1 0x20 DUP6 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP3 PUSH2 0x115F DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x506 JUMP JUMPDEST SWAP3 PUSH2 0x1187 PUSH2 0x1170 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x506 JUMP JUMPDEST SWAP4 PUSH2 0x117E DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x11B0 SWAP3 SWAP5 SWAP4 PUSH2 0x11A9 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x11EA JUMPI PUSH2 0x11D1 PUSH2 0x11C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x112B JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x3F1A JUMP JUMPDEST SWAP1 PUSH2 0x11E6 PUSH2 0x11DD PUSH2 0x312 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x118F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1220 JUMPI PUSH2 0x121C PUSH2 0x120B PUSH2 0x1205 CALLDATASIZE PUSH1 0x4 PUSH2 0x515 JUMP JUMPDEST SWAP1 PUSH2 0x3F3D JUMP JUMPDEST PUSH2 0x1213 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x554 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 PUSH2 0x1237 PUSH2 0x1232 DUP4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x126D PUSH1 0x5 PUSH2 0x1225 JUMP JUMPDEST SWAP1 PUSH2 0x127A PUSH1 0x20 DUP4 ADD PUSH2 0x123C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1284 PUSH2 0x1263 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x128F PUSH2 0x127C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x129A PUSH2 0x1287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x12CD JUMPI PUSH2 0x12AD CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x12C9 PUSH2 0x12B8 PUSH2 0x1292 JUMP JUMPDEST PUSH2 0x12C0 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x382 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x1302 JUMPI PUSH2 0x12FE PUSH2 0x12ED PUSH2 0x12E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x3F5F JUMP JUMPDEST PUSH2 0x12F5 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x1355 JUMPI PUSH2 0x131F DUP4 PUSH0 DUP5 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1350 JUMPI PUSH2 0x1344 DUP2 PUSH2 0x134D SWAP4 DUP7 ADD PUSH2 0xA1A JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x138B JUMPI PUSH2 0x1387 PUSH2 0x1376 PUSH2 0x1370 CALLDATASIZE PUSH1 0x4 PUSH2 0x1307 JUMP JUMPDEST SWAP2 PUSH2 0x4807 JUMP JUMPDEST PUSH2 0x137E PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x13AC SWAP1 PUSH2 0x542 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x13BD DUP2 PUSH1 0x20 SWAP4 PUSH2 0x13A3 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x13E4 PUSH2 0x13DE PUSH2 0x13D7 DUP5 PUSH2 0x1390 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x1394 JUMP JUMPDEST SWAP3 PUSH2 0x139D JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x13F4 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x140D PUSH2 0x1407 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x13B0 JUMP JUMPDEST SWAP5 PUSH2 0x13C1 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x13E7 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1431 PUSH2 0x143F SWAP4 PUSH1 0x40 DUP5 ADD SWAP1 DUP5 DUP3 SUB PUSH0 DUP7 ADD MSTORE PUSH2 0x13C7 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1473 JUMPI PUSH2 0x1452 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x145A PUSH2 0x4890 JUMP JUMPDEST SWAP1 PUSH2 0x146F PUSH2 0x1466 PUSH2 0x312 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1417 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x148B SWAP1 PUSH1 0x8 PUSH2 0x1490 SWAP4 MUL PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x1478 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x149E SWAP2 SLOAD PUSH2 0x147B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14AD PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x1493 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x14E0 JUMPI PUSH2 0x14C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x14DC PUSH2 0x14CB PUSH2 0x14A1 JUMP JUMPDEST PUSH2 0x14D3 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x150E SWAP1 PUSH1 0x8 PUSH2 0x1513 SWAP4 MUL PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x14E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1521 SWAP2 SLOAD PUSH2 0x14FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1530 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x1516 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1563 JUMPI PUSH2 0x1543 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x155F PUSH2 0x154E PUSH2 0x1524 JUMP JUMPDEST PUSH2 0x1556 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1581 JUMPI PUSH2 0x157E SWAP2 PUSH0 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x15B6 JUMPI PUSH2 0x15B2 PUSH2 0x15A1 PUSH2 0x159C CALLDATASIZE PUSH1 0x4 PUSH2 0x1568 JUMP JUMPDEST PUSH2 0x4A72 JUMP JUMPDEST PUSH2 0x15A9 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x15FE DUP2 PUSH2 0x15E8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x1618 JUMPI PUSH2 0x1610 PUSH1 0x4 SWAP2 PUSH2 0x15EC JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x162E PUSH2 0x1633 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x14E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1640 SWAP1 SLOAD PUSH2 0x1622 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x164F PUSH2 0x1654 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x1478 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1661 SWAP1 SLOAD PUSH2 0x1643 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 PUSH2 0x166F DUP3 PUSH2 0x15E8 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x16B5 JUMPI PUSH2 0x167F SWAP2 PUSH2 0x15F5 JUMP JUMPDEST POP SWAP1 PUSH2 0x168C PUSH0 DUP4 ADD PUSH2 0x1636 JUMP JUMPDEST SWAP2 PUSH2 0x1699 PUSH1 0x1 DUP3 ADD PUSH2 0x1657 JUMP JUMPDEST SWAP2 PUSH2 0x16B2 PUSH1 0x3 PUSH2 0x16AB PUSH1 0x2 DUP6 ADD PUSH2 0x1657 JUMP JUMPDEST SWAP4 ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x16EE PUSH2 0x16F5 SWAP5 PUSH2 0x16E4 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x16DA PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x172B JUMPI PUSH2 0x1727 PUSH2 0x1712 PUSH2 0x170D CALLDATASIZE PUSH1 0x4 PUSH2 0x1568 JUMP JUMPDEST PUSH2 0x1664 JUMP JUMPDEST SWAP1 PUSH2 0x171E SWAP5 SWAP3 SWAP5 PUSH2 0x312 JUMP JUMPDEST SWAP5 DUP6 SWAP5 DUP6 PUSH2 0x16B9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH2 0x1739 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1746 SWAP1 PUSH2 0x1730 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1768 SWAP1 PUSH2 0x1763 PUSH1 0x5 SWAP2 PUSH0 SWAP3 PUSH2 0x173C JUMP JUMPDEST PUSH2 0x1493 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x179B JUMPI PUSH2 0x1797 PUSH2 0x1786 PUSH2 0x1781 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x1752 JUMP JUMPDEST PUSH2 0x178E PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x17C8 JUMPI DUP1 PUSH2 0x17BC PUSH2 0x17C5 SWAP3 PUSH0 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x17FE JUMPI PUSH2 0x17FA PUSH2 0x17E9 PUSH2 0x17E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x17A0 JUMP JUMPDEST SWAP1 PUSH2 0x4AD3 JUMP JUMPDEST PUSH2 0x17F1 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x1838 JUMPI PUSH2 0x1835 PUSH2 0x181E DUP5 PUSH0 DUP6 ADD PUSH2 0x506 JUMP JUMPDEST SWAP4 PUSH2 0x182C DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x506 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x186E JUMPI PUSH2 0x186A PUSH2 0x1859 PUSH2 0x1853 CALLDATASIZE PUSH1 0x4 PUSH2 0x1803 JUMP JUMPDEST SWAP2 PUSH2 0x578E JUMP JUMPDEST PUSH2 0x1861 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x18A3 JUMPI PUSH2 0x189F PUSH2 0x188E PUSH2 0x1889 CALLDATASIZE PUSH1 0x4 PUSH2 0x1568 JUMP JUMPDEST PUSH2 0x57A4 JUMP JUMPDEST PUSH2 0x1896 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x18D8 JUMPI PUSH2 0x18B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x320 JUMP JUMPDEST PUSH2 0x18D4 PUSH2 0x18C3 PUSH2 0x59BF JUMP JUMPDEST PUSH2 0x18CB PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST CALLVALUE PUSH2 0x190B JUMPI PUSH2 0x18F5 PUSH2 0x18F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x5B82 JUMP JUMPDEST PUSH2 0x18FD PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0x1907 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1926 DUP2 PUSH2 0x1910 JUMP JUMPDEST SUB PUSH2 0x192D JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x193E DUP3 PUSH2 0x191D JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0x19FF JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19FA JUMPI DUP4 PUSH2 0x196B SWAP2 DUP5 ADD PUSH2 0x8E8 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19F5 JUMPI DUP2 PUSH2 0x198C SWAP2 DUP6 ADD PUSH2 0x8E8 JUMP JUMPDEST SWAP3 PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19F0 JUMPI DUP3 PUSH2 0x19AD SWAP2 DUP4 ADD PUSH2 0x983 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19EB JUMPI PUSH2 0x19D1 DUP5 PUSH2 0x19E8 SWAP3 DUP6 ADD PUSH2 0xA1A JUMP JUMPDEST SWAP4 PUSH2 0x19DF DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x4E3 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x1931 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x4A6 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST CALLVALUE PUSH2 0x1A39 JUMPI PUSH2 0x1A23 PUSH2 0x1A17 CALLDATASIZE PUSH1 0x4 PUSH2 0x1940 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x5E6A JUMP JUMPDEST PUSH2 0x1A2B PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0x1A35 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x318 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x1A94 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1A8F JUMPI JUMP JUMPDEST PUSH2 0x1A47 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1A84 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x1ACA PUSH2 0x1AC3 DUP4 PUSH2 0x1A74 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x1A9E JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x1B21 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1AE5 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1AF2 SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x1AA7 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x1B09 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1AE0 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x1AF6 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1AE0 JUMP JUMPDEST SWAP1 PUSH2 0x1B46 SWAP2 PUSH2 0x1AB0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1B69 PUSH2 0x1B62 SWAP3 PUSH2 0x1B59 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x1B3C JUMP JUMPDEST SUB DUP4 PUSH2 0x846 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B74 SWAP1 PUSH2 0x1B49 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B7F PUSH2 0x1A42 JUMP JUMPDEST POP PUSH2 0x1B93 PUSH1 0x3 PUSH2 0x1B8D PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x1B6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1BAD PUSH2 0x1BA8 DUP4 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x1BDC PUSH2 0x1BC4 DUP4 PUSH2 0x1B9B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x1BD2 DUP7 SWAP4 PUSH2 0x9A6 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x1BB2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1BF5 PUSH2 0x1BF0 PUSH2 0x1BFA SWAP3 PUSH2 0x1BDE JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1C09 SWAP2 ADD PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C15 SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C21 SWAP1 PUSH2 0x1C0C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C2D SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C39 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1C53 DUP3 PUSH2 0x4F2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1C6E JUMPI PUSH2 0x1C6B SWAP2 PUSH0 ADD PUSH2 0x1C46 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0x1C7B PUSH2 0x312 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x1C8D DUP3 PUSH2 0x3CF JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1C9E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST SWAP1 PUSH2 0x1CAD SWAP1 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x1CB9 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x1CCB PUSH2 0x1CC6 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 PUSH2 0x1CD5 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1CF1 PUSH2 0x1CEB PUSH2 0x1CE6 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x1DBF JUMPI PUSH2 0x1D55 SWAP1 PUSH1 0x20 PUSH2 0x1D23 PUSH2 0x1D1E PUSH2 0x1D19 PUSH0 PUSH2 0x1D12 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1D4A PUSH2 0x1D35 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x1D3E PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1DBA JUMPI PUSH2 0x1D87 SWAP3 PUSH2 0x1D82 SWAP2 PUSH0 SWAP2 PUSH2 0x1D8C JUMPI JUMPDEST POP PUSH2 0x1D7D DUP7 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x1CD6 JUMP JUMPDEST PUSH2 0x1DAD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1DB3 JUMPI JUMPDEST PUSH2 0x1DA5 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x1D6F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D9B JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1DE3 SWAP2 PUSH2 0x1DD2 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x1DDB PUSH2 0x5E9E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x5EAB JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1DF4 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x1DFE PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1E1A PUSH2 0x1E14 PUSH2 0x1E0F PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x1E76 JUMPI PUSH2 0x1E36 PUSH0 PUSH2 0x1E2F DUP2 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1E48 PUSH2 0x1E42 DUP5 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x1E5B JUMPI PUSH2 0x1E56 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x1DFF JUMP JUMPDEST PUSH2 0x1E73 SWAP2 POP PUSH2 0x1E6C PUSH1 0x2 SWAP2 PUSH0 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP PUSH2 0x1E81 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E8C PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x1EA0 PUSH1 0x2 PUSH2 0x1E9A PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1EAB PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x1EB4 PUSH2 0x5EBB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1EC0 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x1ED2 PUSH2 0x1ECD PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x1EDB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1EF7 PUSH2 0x1EF1 PUSH2 0x1EEC PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x1F37 JUMPI PUSH2 0x1F32 SWAP1 PUSH2 0x1F2D PUSH2 0x1F1B PUSH1 0x1 PUSH2 0x1F14 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x1F28 DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x1EDC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x1F65 SWAP3 PUSH2 0x1F48 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x1F5D PUSH2 0x1F54 PUSH2 0x5E9E JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x601E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x60E9 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x1F72 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x1F7C PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1F98 PUSH2 0x1F92 PUSH2 0x1F8D PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x1FF4 JUMPI PUSH2 0x1FB4 PUSH0 PUSH2 0x1FAD DUP2 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1FC6 PUSH2 0x1FC0 DUP5 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x1FD9 JUMPI PUSH2 0x1FD4 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x1F7D JUMP JUMPDEST PUSH2 0x1FF1 SWAP2 POP PUSH2 0x1FEA PUSH1 0x1 SWAP2 PUSH0 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP PUSH2 0x1FFF PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x200A PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x2013 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x201C PUSH2 0x5EBB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x203D PUSH2 0x2038 PUSH2 0x2042 SWAP3 PUSH2 0x2026 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x7B4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x204D PUSH2 0x2022 JUMP JUMPDEST POP PUSH2 0x2058 PUSH1 0x12 PUSH2 0x2029 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2073 PUSH2 0x2078 SWAP2 PUSH2 0x205B JUMP JUMPDEST PUSH2 0x2061 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2085 SWAP1 SLOAD PUSH2 0x2067 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x20A1 PUSH2 0x20A6 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x2088 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20B3 SWAP1 SLOAD PUSH2 0x2095 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20CA PUSH2 0x20C5 PUSH2 0x20CF SWAP3 PUSH2 0x1BDE JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x1910 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20E9 PUSH2 0x20E4 PUSH2 0x20EE SWAP3 PUSH2 0x20D2 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x1910 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20FA SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2115 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x20FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2133 PUSH2 0x212E PUSH2 0x2138 SWAP3 PUSH2 0x1910 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x1910 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2153 PUSH2 0x214E PUSH2 0x215A SWAP3 PUSH2 0x211F JUMP JUMPDEST PUSH2 0x213B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2102 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2178 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x215E JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x218B SWAP1 PUSH2 0x542 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x21A6 PUSH2 0x21A1 PUSH2 0x21AD SWAP3 PUSH2 0x2182 JUMP JUMPDEST PUSH2 0x218E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2164 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x21BA SWAP1 PUSH2 0x20D5 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x21D1 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x21B1 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 PUSH2 0x21DF PUSH2 0x61C6 JUMP JUMPDEST SWAP5 PUSH2 0x21F4 PUSH2 0x21EE PUSH0 DUP9 ADD PUSH2 0x207B JUMP JUMPDEST ISZERO PUSH2 0x542 JUMP JUMPDEST SWAP5 PUSH2 0x2200 PUSH0 DUP9 ADD PUSH2 0x20A9 JUMP JUMPDEST DUP1 PUSH2 0x2213 PUSH2 0x220D PUSH0 PUSH2 0x20B6 JUMP JUMPDEST SWAP2 PUSH2 0x1910 JUMP JUMPDEST EQ DUP1 PUSH2 0x234D JUMPI JUMPDEST SWAP1 PUSH2 0x222E PUSH2 0x2228 PUSH1 0x1 PUSH2 0x20D5 JUMP JUMPDEST SWAP2 PUSH2 0x1910 JUMP JUMPDEST EQ DUP1 PUSH2 0x2325 JUMPI JUMPDEST PUSH2 0x2240 SWAP1 SWAP2 ISZERO PUSH2 0x542 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x2314 JUMPI JUMPDEST POP PUSH2 0x22D8 JUMPI PUSH2 0x2270 SWAP5 PUSH2 0x2265 PUSH2 0x225D PUSH1 0x1 PUSH2 0x20D5 JUMP JUMPDEST PUSH0 DUP11 ADD PUSH2 0x213E JUMP JUMPDEST DUP7 PUSH2 0x22C6 JUMPI JUMPDEST PUSH2 0x2761 JUMP JUMPDEST PUSH2 0x2278 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x2285 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x2191 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x22BD PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x22B4 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x21BE JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x2275 JUMP JUMPDEST PUSH2 0x22D3 PUSH1 0x1 PUSH0 DUP11 ADD PUSH2 0x2191 JUMP JUMPDEST PUSH2 0x226B JUMP JUMPDEST PUSH2 0x22E0 PUSH2 0x312 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2310 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x231F SWAP2 POP ISZERO PUSH2 0x542 JUMP JUMPDEST PUSH0 PUSH2 0x2247 JUMP JUMPDEST POP PUSH2 0x2240 PUSH2 0x2332 ADDRESS PUSH2 0x20F1 JUMP JUMPDEST EXTCODESIZE PUSH2 0x2345 PUSH2 0x233F PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x2235 JUMP JUMPDEST POP DUP7 PUSH2 0x221A JUMP JUMPDEST PUSH2 0x235D SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2369 SWAP1 PUSH2 0x2354 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x238B PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x20FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x239E SWAP1 PUSH2 0x2354 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x23B9 PUSH2 0x23B4 PUSH2 0x23C0 SWAP3 PUSH2 0x2395 JUMP JUMPDEST PUSH2 0x23A1 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x236C JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23DB PUSH2 0x23D6 PUSH2 0x23E0 SWAP3 PUSH2 0x23C4 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x240E PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x20FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x242C PUSH2 0x2427 PUSH2 0x2431 SWAP3 PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x244C PUSH2 0x2447 PUSH2 0x2453 SWAP3 PUSH2 0x2418 JUMP JUMPDEST PUSH2 0x2434 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x23E3 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2463 PUSH2 0x2468 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0xE89 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2475 SWAP1 SLOAD PUSH2 0x2457 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x2485 DUP3 PUSH2 0x4CF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x24A0 JUMPI PUSH2 0x249D SWAP2 PUSH0 ADD PUSH2 0x2478 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x24BD PUSH2 0x24B8 PUSH2 0x24C4 SWAP3 PUSH2 0x1730 JUMP JUMPDEST PUSH2 0x24A5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x236C JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24DF PUSH2 0x24DA PUSH2 0x24E4 SWAP3 PUSH2 0x24C8 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24FB PUSH2 0x24F6 PUSH2 0x2500 SWAP3 PUSH2 0x1BDE JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x250C SWAP1 PUSH2 0x24E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420626173652061737365742061646472657373000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2543 PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x254C DUP2 PUSH2 0x250F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2565 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2536 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x256F JUMPI JUMP JUMPDEST PUSH2 0x2577 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x25A7 PUSH1 0x4 DUP3 ADD PUSH2 0x2550 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E697469616C697A6174696F6E206661696C65640000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x25DF PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x25E8 DUP2 PUSH2 0x25AB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2601 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x25D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x260B JUMPI JUMP JUMPDEST PUSH2 0x2613 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2643 PUSH1 0x4 DUP3 ADD PUSH2 0x25EC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2651 SWAP1 MLOAD PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x2690 PUSH2 0x2696 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x3E2 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x26A1 JUMPI JUMP JUMPDEST PUSH2 0x2654 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26BD PUSH2 0x26B8 PUSH2 0x26C2 SWAP3 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420776569676874730000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x26F9 PUSH1 0xF PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x2702 DUP2 PUSH2 0x26C5 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x271B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x26EC JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2725 JUMPI JUMP JUMPDEST PUSH2 0x272D PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x275D PUSH1 0x4 DUP3 ADD PUSH2 0x2706 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27E9 SWAP4 SWAP6 SWAP5 PUSH2 0x2780 PUSH2 0x27A4 SWAP4 PUSH2 0x279D SWAP4 PUSH2 0x277B CALLER PUSH2 0x6208 JUMP JUMPDEST PUSH2 0x6233 JUMP JUMPDEST PUSH2 0x2788 PUSH2 0x6249 JUMP JUMPDEST PUSH2 0x2790 PUSH2 0x626F JUMP JUMPDEST PUSH2 0x2798 PUSH2 0x6295 JUMP JUMPDEST PUSH2 0x2360 JUMP JUMPDEST PUSH1 0x4 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0x27BF PUSH2 0x27B8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x23C7 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x27D3 PUSH2 0x27CE PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x27E1 PUSH2 0x312 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x27F9 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2923 JUMPI PUSH2 0x281E PUSH2 0x286B SWAP3 PUSH2 0x2870 SWAP5 PUSH0 SWAP2 PUSH2 0x28F5 JUMPI JUMPDEST POP PUSH1 0x2 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x2836 PUSH2 0x282F PUSH5 0xE8D4A51000 PUSH2 0x24CB JUMP JUMPDEST PUSH1 0x3 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x2864 PUSH2 0x2843 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x285D PUSH2 0x2857 PUSH2 0x2852 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x2568 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x67E4 JUMP JUMPDEST PUSH2 0x2604 JUMP JUMPDEST PUSH2 0x2879 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST PUSH2 0x2882 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMPDEST DUP2 PUSH2 0x289F PUSH2 0x2899 PUSH2 0x2894 DUP8 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x28D1 JUMPI PUSH2 0x28C5 PUSH2 0x28CB SWAP2 PUSH2 0x28BF PUSH2 0x28BA DUP8 DUP7 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP2 PUSH2 0x1BFD JUMP JUMPDEST SWAP1 PUSH2 0x2884 JUMP JUMPDEST SWAP1 POP PUSH2 0x28F3 SWAP2 SWAP3 POP PUSH2 0x28ED PUSH2 0x28E7 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x271E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2916 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x291C JUMPI JUMPDEST PUSH2 0x290E DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x2816 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2904 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP1 PUSH2 0x2935 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x21D3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x293F PUSH2 0x6BE0 JUMP JUMPDEST PUSH2 0x2947 PUSH2 0x2949 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2951 PUSH2 0x6CED JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x295B PUSH2 0x2937 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x296C PUSH2 0x2972 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x3E2 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x297E DUP4 DUP3 MUL PUSH2 0x3E2 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x298D JUMPI JUMP JUMPDEST PUSH2 0x2654 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x29CB PUSH2 0x29D1 SWAP2 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x29DC JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x2992 JUMP JUMPDEST PUSH2 0x29F0 PUSH2 0x29F6 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x3E2 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x2A01 JUMPI JUMP JUMPDEST PUSH2 0x2654 JUMP JUMPDEST SWAP2 PUSH2 0x2AC8 PUSH2 0x2AC2 PUSH2 0x2ABD PUSH2 0x2A28 DUP6 SWAP5 PUSH2 0x2A1D PUSH2 0x1DE8 JUMP JUMPDEST POP DUP8 SWAP1 DUP7 SWAP1 SWAP2 PUSH2 0x2BEB JUMP JUMPDEST PUSH2 0x2A31 DUP8 PUSH2 0x1DEC JUMP JUMPDEST SWAP7 PUSH2 0x2A3B DUP7 PUSH2 0x1DEC JUMP JUMPDEST SWAP1 PUSH2 0x2AA5 PUSH2 0x2A9F PUSH2 0x2A9A PUSH2 0x2A93 PUSH2 0x2A82 PUSH2 0x2A7B PUSH2 0x2A6A PUSH2 0x2A63 PUSH2 0x2A5D DUP10 PUSH2 0x1F6A JUMP JUMPDEST SWAP16 PUSH2 0x1F6A JUMP JUMPDEST SWAP16 DUP11 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x2A75 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST SWAP7 DUP9 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x2A8D PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST SWAP11 SWAP4 PUSH2 0x314D JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2AEA JUMPI PUSH2 0x2AB5 SWAP2 PUSH2 0x29E1 JUMP JUMPDEST SWAP6 JUMPDEST SWAP4 PUSH2 0x314D JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH0 EQ PUSH2 0x2ADC JUMPI PUSH2 0x2AD8 SWAP2 PUSH2 0x2681 JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2AE5 SWAP2 PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x2AD9 JUMP JUMPDEST PUSH2 0x2AF3 SWAP2 PUSH2 0x2681 JUMP JUMPDEST SWAP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2B02 SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B0E SWAP1 PUSH2 0x2AF9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C6964206F7261636C65206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2B45 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x2B4E DUP2 PUSH2 0x2B11 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2B67 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2B38 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2B71 JUMPI JUMP JUMPDEST PUSH2 0x2B79 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2BA9 PUSH1 0x4 DUP3 ADD PUSH2 0x2B52 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2BB6 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x2BE2 PUSH2 0x2BE9 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x2BD8 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2BF4 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x2C22 PUSH1 0x20 PUSH2 0x2C0C PUSH2 0x2C07 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2C1A PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2C32 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2DA5 JUMPI PUSH2 0x2C4D SWAP2 PUSH0 SWAP2 PUSH2 0x2D77 JUMPI JUMPDEST POP PUSH2 0x2B05 JUMP JUMPDEST SWAP2 PUSH2 0x2C7B PUSH1 0x20 PUSH2 0x2C65 PUSH2 0x2C60 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2C73 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2C8B PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2D72 JUMPI PUSH1 0x20 SWAP5 PUSH2 0x2CCC PUSH2 0x2CD1 SWAP3 PUSH2 0x2CF1 SWAP5 PUSH0 SWAP2 PUSH2 0x2D45 JUMPI JUMPDEST POP PUSH2 0x2CC5 PUSH2 0x2CBF PUSH2 0x2CBA PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x2B6A JUMP JUMPDEST PUSH2 0x2BAD JUMP JUMPDEST SWAP2 PUSH2 0x2CFC PUSH4 0x248391FF SWAP2 SWAP5 SWAP7 PUSH2 0x2CE5 PUSH2 0x312 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2D40 JUMPI PUSH0 SWAP2 PUSH2 0x2D12 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2D33 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D39 JUMPI JUMPDEST PUSH2 0x2D2B DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x2D0E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D21 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x2D65 SWAP2 POP DUP9 RETURNDATASIZE DUP2 GT PUSH2 0x2D6B JUMPI JUMPDEST PUSH2 0x2D5D DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x2CAA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D53 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x2D98 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D9E JUMPI JUMPDEST PUSH2 0x2D90 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x2C47 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D86 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP1 PUSH2 0x2DBC SWAP2 PUSH2 0x2DB7 PUSH2 0x6D03 JUMP JUMPDEST PUSH2 0x2DBE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2DD1 SWAP2 PUSH2 0x2DCC DUP2 PUSH2 0x6DD5 JUMP JUMPDEST PUSH2 0x6E45 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2DDD SWAP2 PUSH2 0x2DAA JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2DF4 SWAP1 PUSH2 0x2DEF PUSH2 0x6F83 JUMP JUMPDEST PUSH2 0x2E42 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E0E PUSH2 0x2E09 PUSH2 0x2E13 SWAP3 PUSH2 0x2DF7 JUMP JUMPDEST PUSH2 0x20FD JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E3F PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x2DFA JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x2E4B PUSH2 0x2E16 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E5E PUSH2 0x2E59 PUSH2 0x2DDF JUMP JUMPDEST PUSH2 0x2DE3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E6D PUSH2 0x2E72 SWAP2 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x2061 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E7F SWAP1 SLOAD PUSH2 0x2E61 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2E8A PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x2E9D PUSH0 PUSH2 0x2E97 PUSH2 0x7001 JUMP JUMPDEST ADD PUSH2 0x2E75 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2EB7 PUSH2 0x2EB2 DUP4 PUSH2 0x90B JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x2EE6 PUSH2 0x2ECE DUP4 PUSH2 0x2EA5 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x2EDC DUP7 SWAP4 PUSH2 0x90B JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x2EBC JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2EF2 DUP3 PUSH2 0xD49 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x2F03 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST SWAP1 PUSH2 0x2F12 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2F1E PUSH2 0x2EA0 JUMP JUMPDEST POP PUSH2 0x2F30 PUSH2 0x2F2B PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x2EC1 JUMP JUMPDEST PUSH2 0x2F39 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x2F55 PUSH2 0x2F4F PUSH2 0x2F4A PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x2F94 JUMPI PUSH2 0x2F8F SWAP1 PUSH2 0x2F8A PUSH2 0x2F78 PUSH0 PUSH2 0x2F71 DUP2 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x2F85 DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x2EE8 JUMP JUMPDEST PUSH2 0x2F08 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x2F3A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2FB7 PUSH2 0x2FBC SWAP2 PUSH2 0x2FA7 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH0 PUSH2 0x2FB1 PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x173C JUMP JUMPDEST PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FC7 PUSH2 0x6BE0 JUMP JUMPDEST PUSH2 0x2FCF PUSH2 0x2FD1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2FE2 PUSH2 0x2FDD PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x7025 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2FEC PUSH2 0x2FBF JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x526562616C616E6365206E6F74206E6565646564000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3022 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x302B DUP2 PUSH2 0x2FEE JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3044 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3015 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x304E JUMPI JUMP JUMPDEST PUSH2 0x3056 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3086 PUSH1 0x4 DUP3 ADD PUSH2 0x302F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x309A PUSH2 0x3095 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x3047 JUMP JUMPDEST PUSH2 0x30A2 PUSH2 0x713A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x30AC PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x30BE PUSH2 0x30B9 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x30C7 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x30E3 PUSH2 0x30DD PUSH2 0x30D8 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3123 JUMPI PUSH2 0x311E SWAP1 PUSH2 0x3119 PUSH2 0x3107 PUSH1 0x2 PUSH2 0x3100 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x3114 DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x30C8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x312F PUSH2 0x6BE0 JUMP JUMPDEST PUSH2 0x3137 PUSH2 0x3139 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3141 PUSH2 0x75AB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x314B PUSH2 0x3127 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3155 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x315E PUSH2 0x4890 JUMP JUMPDEST SWAP1 POP PUSH2 0x3169 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x3185 PUSH2 0x317F PUSH2 0x317A PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x31DC JUMPI PUSH2 0x31A1 PUSH0 PUSH2 0x319A DUP2 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x31B3 PUSH2 0x31AD DUP6 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x31C6 JUMPI PUSH2 0x31C1 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x316A JUMP JUMPDEST PUSH2 0x31D9 SWAP3 POP PUSH2 0x31D4 SWAP2 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP POP PUSH2 0x31E8 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x31F5 DUP3 PUSH2 0x1390 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x3206 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x3215 SWAP1 MLOAD PUSH2 0x542 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3220 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x324E PUSH1 0x20 PUSH2 0x3238 PUSH2 0x3233 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xEA233C05 SWAP1 PUSH2 0x3246 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x325E PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x333E JUMPI PUSH0 SWAP2 PUSH2 0x3310 JUMPI JUMPDEST POP PUSH2 0x3279 PUSH2 0x4890 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SWAP1 PUSH2 0x3286 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x32A2 PUSH2 0x329C PUSH2 0x3297 DUP7 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3308 JUMPI PUSH2 0x32BB PUSH2 0x32B6 DUP6 DUP4 SWAP1 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x320B JUMP JUMPDEST DUP1 PUSH2 0x32DC JUMPI JUMPDEST PUSH2 0x32D3 JUMPI PUSH2 0x32CE SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x3287 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH2 0x32F0 PUSH2 0x32EB DUP5 DUP4 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x3302 PUSH2 0x32FC DUP5 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x32C1 JUMP JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3331 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3337 JUMPI JUMPDEST PUSH2 0x3329 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x3270 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x331F JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x334F PUSH2 0x3343 JUMP JUMPDEST POP PUSH2 0x3362 PUSH0 PUSH2 0x335C PUSH2 0x75B5 JUMP JUMPDEST ADD PUSH2 0x1636 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x336E DUP2 PUSH2 0x542 JUMP JUMPDEST SUB PUSH2 0x3375 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x3386 DUP3 PUSH2 0x3365 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x33A1 JUMPI PUSH2 0x339E SWAP2 PUSH0 ADD PUSH2 0x3379 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0x33AE PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x33BF PUSH2 0x33BA PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x3047 JUMP JUMPDEST PUSH2 0x33D0 PUSH2 0x33CA PUSH2 0x5EBB JUMP JUMPDEST SWAP1 PUSH2 0x75D9 JUMP JUMPDEST SWAP2 PUSH2 0x33E2 PUSH2 0x33DD PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 PUSH2 0x33FF PUSH2 0x33EF DUP6 PUSH2 0x76CF JUMP JUMPDEST PUSH2 0x33F9 PUSH1 0x3 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x3408 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x3424 PUSH2 0x341E PUSH2 0x3419 DUP10 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3558 JUMPI DUP6 SWAP1 PUSH2 0x343F PUSH2 0x343A DUP4 DUP4 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x3451 PUSH2 0x344B PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x3466 JUMPI JUMPDEST PUSH2 0x3461 SWAP2 POP PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x3409 JUMP JUMPDEST PUSH2 0x3498 PUSH2 0x3486 DUP3 PUSH2 0x3480 PUSH2 0x347B DUP7 DUP7 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x77D2 JUMP JUMPDEST PUSH2 0x3493 DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x34C0 PUSH2 0x34BB PUSH2 0x34B6 PUSH0 PUSH2 0x34AF DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x23B872DD SWAP1 PUSH2 0x34FF PUSH0 CALLER SWAP4 PUSH2 0x350A PUSH2 0x34EB PUSH2 0x34E6 PUSH2 0x34DE ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP11 DUP11 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x34F3 PUSH2 0x312 JUMP JUMPDEST SWAP10 DUP11 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3553 JUMPI PUSH2 0x3461 SWAP3 PUSH2 0x3527 JUMPI JUMPDEST POP DUP7 SWAP2 POP PUSH2 0x3457 JUMP JUMPDEST PUSH2 0x3547 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x354C JUMPI JUMPDEST PUSH2 0x353F DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH2 0x351E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3535 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP PUSH2 0x3565 SWAP2 SWAP5 SWAP3 SWAP4 PUSH2 0x7852 JUMP JUMPDEST PUSH2 0x356D PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x3575 PUSH2 0x7CE2 JUMP JUMPDEST CALLER PUSH2 0x35B5 PUSH2 0x35A3 PUSH32 0xA95AD530009C6F929555E70A66AADBEAE7231E45756C5B028CA77FBAA376E73E SWAP3 PUSH2 0x1730 JUMP JUMPDEST SWAP3 PUSH2 0x35AC PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x459 JUMP JUMPDEST SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x35C3 PUSH2 0x1A42 JUMP JUMPDEST POP PUSH2 0x35D7 PUSH1 0x4 PUSH2 0x35D1 PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x1B6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x360E PUSH1 0x7 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3617 DUP2 PUSH2 0x35DA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3630 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3601 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x363A JUMPI JUMP JUMPDEST PUSH2 0x3642 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3672 PUSH1 0x4 DUP3 ADD PUSH2 0x361B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x36A3 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x369E DUP9 PUSH2 0x3697 PUSH2 0x3691 TIMESTAMP PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3633 JUMP JUMPDEST PUSH2 0x36A7 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP1 PUSH2 0x36BF SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x36BA PUSH2 0x7E06 JUMP JUMPDEST PUSH2 0x3C57 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x36C9 PUSH2 0x7EB2 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420746F6B656E20616464726573730000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x36FF PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3708 DUP2 PUSH2 0x36CB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3721 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x36F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x372B JUMPI JUMP JUMPDEST PUSH2 0x3733 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3763 PUSH1 0x4 DUP3 ADD PUSH2 0x370C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x43616E6E6F742073776170207468652073616D6520746F6B656E000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x379B PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x37A4 DUP2 PUSH2 0x3767 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x37BD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x378E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x37C7 JUMPI JUMP JUMPDEST PUSH2 0x37CF PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x37FF PUSH1 0x4 DUP3 ADD PUSH2 0x37A8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3836 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x383F DUP2 PUSH2 0x3803 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3858 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x382A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3862 JUMPI JUMP JUMPDEST PUSH2 0x386A PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x389A PUSH1 0x4 DUP3 ADD PUSH2 0x3843 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420726563656976657220616464726573730000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x38D2 PUSH1 0x18 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x38DB DUP2 PUSH2 0x389E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x38F4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x38C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x38FE JUMPI JUMP JUMPDEST PUSH2 0x3906 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3936 PUSH1 0x4 DUP3 ADD PUSH2 0x38DF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x546F6B656E207472616E73666572206661696C65640000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x396E PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3977 DUP2 PUSH2 0x393A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3990 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3961 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x399A JUMPI JUMP JUMPDEST PUSH2 0x39A2 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x39D2 PUSH1 0x4 DUP3 ADD PUSH2 0x397B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E74204C697175696469747900000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3A0A PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3A13 DUP2 PUSH2 0x39D6 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3A2C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x39FD JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3A36 JUMPI JUMP JUMPDEST PUSH2 0x3A3E PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3A6E PUSH1 0x4 DUP3 ADD PUSH2 0x3A17 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x68616E2030000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x416D6F756E7420746F2073656E64206D75737420626520677265617465722074 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x3ACC PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3AD5 DUP2 PUSH2 0x3A72 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3AEE SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3ABF JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3AF8 JUMPI JUMP JUMPDEST PUSH2 0x3B00 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3B30 PUSH1 0x4 DUP3 ADD PUSH2 0x3AD9 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6D696E20616D6F756E7400000000000000000000000000000000000000000000 SWAP2 PUSH32 0x416D6F756E74206F7574206D7573742062652067726561746572207468616E20 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x3B8E PUSH1 0x2A PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x3B97 DUP2 PUSH2 0x3B34 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3BB0 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3B81 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3BBA JUMPI JUMP JUMPDEST PUSH2 0x3BC2 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3BF2 PUSH1 0x4 DUP3 ADD PUSH2 0x3B9B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x3C17 SWAP3 SWAP5 SWAP4 PUSH2 0x3C10 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3C4E PUSH2 0x3C55 SWAP5 PUSH2 0x3C44 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x3C3A PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 SWAP4 SWAP3 SWAP5 SWAP6 SWAP8 SWAP7 POP POP POP DUP2 PUSH2 0x3C7D PUSH2 0x3C77 PUSH2 0x3C72 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO DUP1 PUSH2 0x3EF2 JUMPI JUMPDEST PUSH2 0x3C8E SWAP1 PUSH2 0x3724 JUMP JUMPDEST PUSH2 0x3CAB DUP3 PUSH2 0x3CA4 PUSH2 0x3C9E DUP7 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x37C0 JUMP JUMPDEST PUSH2 0x3CC7 DUP2 PUSH2 0x3CC1 PUSH2 0x3CBB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x385B JUMP JUMPDEST PUSH2 0x3CEC DUP7 PUSH2 0x3CE5 PUSH2 0x3CDF PUSH2 0x3CDA PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x38F7 JUMP JUMPDEST PUSH2 0x3CFD PUSH2 0x3CF8 DUP4 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x3D2D PUSH0 PUSH2 0x3D14 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP6 PUSH2 0x3D38 DUP9 PUSH2 0x3D21 PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3EED JUMPI PUSH2 0x3D53 SWAP2 PUSH0 SWAP2 PUSH2 0x3EBF JUMPI JUMPDEST POP PUSH2 0x3993 JUMP JUMPDEST PUSH2 0x3D5F DUP3 DUP5 DUP4 SWAP2 PUSH2 0x2A06 JUMP JUMPDEST SWAP6 PUSH2 0x3D85 PUSH2 0x3D6C DUP6 PUSH2 0x3F5F JUMP JUMPDEST PUSH2 0x3D7E PUSH2 0x3D78 DUP11 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3A2F JUMP JUMPDEST PUSH2 0x3DD3 PUSH2 0x3D9C PUSH2 0x3D94 DUP10 PUSH2 0x7ECF JUMP JUMPDEST SWAP9 DUP10 SWAP1 PUSH2 0x29E1 JUMP JUMPDEST SWAP6 PUSH2 0x3DB9 DUP8 PUSH2 0x3DB3 PUSH2 0x3DAD PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x3AF1 JUMP JUMPDEST PUSH2 0x3DCC PUSH2 0x3DC6 DUP9 SWAP3 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3BB3 JUMP JUMPDEST PUSH2 0x3DE4 PUSH2 0x3DDF DUP6 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xA9059CBB SWAP2 DUP4 SWAP1 PUSH2 0x3E0B PUSH0 DUP11 SWAP6 PUSH2 0x3E16 PUSH2 0x3DFF PUSH2 0x312 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3EBA JUMPI PUSH2 0x3E31 SWAP2 PUSH0 SWAP2 PUSH2 0x3E8C JUMPI JUMPDEST POP PUSH2 0x3993 JUMP JUMPDEST PUSH2 0x3E39 PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x3E41 PUSH2 0x7CE2 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP3 PUSH2 0x3E85 DUP6 PUSH2 0x3E73 PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 SWAP6 PUSH2 0x1730 JUMP JUMPDEST SWAP6 PUSH2 0x3E7C PUSH2 0x312 JUMP JUMPDEST SWAP5 DUP6 SWAP5 DUP6 PUSH2 0x3C19 JUMP JUMPDEST SUB SWAP1 LOG2 SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x3EAD SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3EB3 JUMPI JUMPDEST PUSH2 0x3EA5 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x3E2B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3E9B JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x3EE0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3EE6 JUMPI JUMPDEST PUSH2 0x3ED8 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x3D4D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3ECE JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP PUSH2 0x3C8E DUP4 PUSH2 0x3F11 PUSH2 0x3F0B PUSH2 0x3F06 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH2 0x3C85 JUMP JUMPDEST SWAP1 PUSH2 0x3F39 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x3F2B PUSH2 0x1DE8 JUMP JUMPDEST PUSH2 0x3F33 PUSH2 0x1DE8 JUMP JUMPDEST SWAP1 PUSH2 0x3676 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x3F5A SWAP2 PUSH2 0x3F49 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x3F52 PUSH2 0x5E9E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x60E9 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x3F67 PUSH2 0x1DE8 JUMP JUMPDEST SWAP1 PUSH2 0x3F71 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x3F8D PUSH2 0x3F87 PUSH2 0x3F82 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x4062 JUMPI DUP2 PUSH2 0x3FBB PUSH2 0x3FB5 PUSH2 0x3FB0 PUSH0 PUSH2 0x3FA9 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x3FCE JUMPI PUSH2 0x3FC9 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x3F72 JUMP JUMPDEST POP PUSH2 0x4019 SWAP2 POP PUSH2 0x3FE7 PUSH2 0x3FE2 PUSH1 0x20 SWAP3 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x400E PUSH2 0x3FF9 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x4002 PUSH2 0x312 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x405D JUMPI PUSH0 SWAP2 PUSH2 0x402F JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x4050 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4056 JUMPI JUMPDEST PUSH2 0x4048 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x402B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x403E JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4090 SWAP4 SWAP3 SWAP2 PUSH2 0x408B DUP5 PUSH2 0x4084 PUSH2 0x407E TIMESTAMP PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3633 JUMP JUMPDEST PUSH2 0x4093 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x40A7 SWAP4 SWAP3 SWAP2 PUSH2 0x40A2 PUSH2 0x7E06 JUMP JUMPDEST PUSH2 0x40B2 JUMP JUMPDEST SWAP1 PUSH2 0x40B0 PUSH2 0x7EB2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x40C6 SWAP4 SWAP3 SWAP2 PUSH2 0x40C1 PUSH2 0x7FF5 JUMP JUMPDEST PUSH2 0x44E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C6964207265736572766573206C656E677468000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x40FD PUSH1 0x17 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4106 DUP2 PUSH2 0x40C9 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x411F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x40F0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4129 JUMPI JUMP JUMPDEST PUSH2 0x4131 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4161 PUSH1 0x4 DUP3 ADD PUSH2 0x410A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4E6F206173736574730000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4199 PUSH1 0x9 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x41A2 DUP2 PUSH2 0x4165 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x41BB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x418C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x41C5 JUMPI JUMP JUMPDEST PUSH2 0x41CD PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x41FD PUSH1 0x4 DUP3 ADD PUSH2 0x41A6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6564000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C3A205472616E736665722066726F6D206661696C PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x425B PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4264 DUP2 PUSH2 0x4201 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x427D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x424E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4287 JUMPI JUMP JUMPDEST PUSH2 0x428F PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x42BF PUSH1 0x4 DUP3 ADD PUSH2 0x4268 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x2030000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x546F74616C2076616C7565206D7573742062652067726561746572207468616E PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x431D PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4326 DUP2 PUSH2 0x42C3 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x433F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4310 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4349 JUMPI JUMP JUMPDEST PUSH2 0x4351 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4381 PUSH1 0x4 DUP3 ADD PUSH2 0x432A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x7468616E20300000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x546F74616C206C6971756964697479206D757374206265206772656174657220 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x43DF PUSH1 0x26 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x43E8 DUP2 PUSH2 0x4385 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4401 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x43D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x440B JUMPI JUMP JUMPDEST PUSH2 0x4413 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4443 PUSH1 0x4 DUP3 ADD PUSH2 0x43EC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4D696E7420717479206973203000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x447B PUSH1 0xD PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4484 DUP2 PUSH2 0x4447 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x449D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x446E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x44A7 JUMPI JUMP JUMPDEST PUSH2 0x44AF PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x44DF PUSH1 0x4 DUP3 ADD PUSH2 0x4488 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP4 SWAP3 POP POP PUSH2 0x44F0 PUSH2 0x1E84 JUMP JUMPDEST SWAP2 PUSH2 0x44FA PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP4 PUSH2 0x452F PUSH2 0x4506 PUSH2 0x1CB1 JUMP JUMPDEST PUSH2 0x4529 PUSH2 0x4523 PUSH2 0x451E PUSH2 0x4518 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST SWAP4 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x4122 JUMP JUMPDEST PUSH2 0x4553 PUSH2 0x453B PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x454D PUSH2 0x4547 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x41BE JUMP JUMPDEST PUSH2 0x455C PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP5 JUMPDEST DUP6 PUSH2 0x4579 PUSH2 0x4573 PUSH2 0x456E PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x46C7 JUMPI DUP4 SWAP1 PUSH2 0x4597 PUSH0 PUSH2 0x4590 DUP2 DUP11 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP9 PUSH2 0x45AC PUSH2 0x45A7 DUP6 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH2 0x45E8 PUSH0 PUSH4 0x23B872DD PUSH2 0x45F3 PUSH2 0x45D4 PUSH2 0x45CF CALLER SWAP8 PUSH2 0x45C9 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP13 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x45DC PUSH2 0x312 JUMP JUMPDEST SWAP11 DUP12 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x46C2 JUMPI PUSH2 0x466A SWAP4 PUSH2 0x4613 SWAP2 PUSH0 SWAP2 PUSH2 0x4694 JUMPI JUMPDEST POP PUSH2 0x4280 JUMP JUMPDEST PUSH2 0x461B PUSH2 0x1DE8 JUMP JUMPDEST POP DUP2 PUSH2 0x4638 PUSH2 0x4632 PUSH2 0x462D PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x4670 JUMPI PUSH2 0x465D PUSH2 0x4663 SWAP3 PUSH2 0x4657 PUSH2 0x4652 DUP10 DUP13 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x803F JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP6 JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST SWAP5 PUSH2 0x455E JUMP JUMPDEST PUSH2 0x468E SWAP2 POP PUSH2 0x4688 PUSH2 0x4683 DUP8 DUP11 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP6 PUSH2 0x4665 JUMP JUMPDEST PUSH2 0x46B5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x46BB JUMPI JUMPDEST PUSH2 0x46AD DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x460D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x46A3 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 SWAP2 POP PUSH2 0x46E9 DUP2 PUSH2 0x46E3 PUSH2 0x46DD PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x4342 JUMP JUMPDEST PUSH2 0x46F1 PUSH2 0x1DE8 JUMP JUMPDEST POP DUP2 PUSH2 0x4705 PUSH2 0x46FF PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x47A2 JUMPI PUSH2 0x4721 SWAP2 POP PUSH2 0x471B PUSH1 0x3 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST SWAP1 JUMPDEST PUSH2 0x4740 DUP3 PUSH2 0x4739 PUSH2 0x4733 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ ISZERO PUSH2 0x44A0 JUMP JUMPDEST PUSH2 0x474B DUP2 DUP4 SWAP1 PUSH2 0x7852 JUMP JUMPDEST PUSH2 0x4753 PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x475B PUSH2 0x7CE2 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x479C PUSH2 0x478A PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 PUSH2 0x1730 JUMP JUMPDEST SWAP3 PUSH2 0x4793 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x47FB PUSH2 0x47EA PUSH2 0x4801 SWAP4 PUSH2 0x47E5 PUSH2 0x47B7 PUSH2 0x5EBB JUMP JUMPDEST POP SWAP5 PUSH2 0x47D5 DUP7 PUSH2 0x47CF PUSH2 0x47C9 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x4404 JUMP JUMPDEST PUSH2 0x47DF PUSH1 0x3 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x295D JUMP JUMPDEST SWAP2 PUSH2 0x47F5 PUSH1 0x3 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST SWAP1 PUSH2 0x4723 JUMP JUMPDEST SWAP1 PUSH2 0x481A SWAP3 SWAP2 PUSH2 0x4815 PUSH2 0x1DE8 JUMP JUMPDEST PUSH2 0x4067 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x483A JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 PUSH2 0x4851 PUSH2 0x484C DUP4 PUSH2 0x4822 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x4880 PUSH2 0x4868 DUP4 PUSH2 0x483F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x4876 DUP7 SWAP4 PUSH2 0x4822 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x4856 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x488C SWAP1 PUSH2 0x542 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x4898 PUSH2 0x481D JUMP JUMPDEST POP PUSH2 0x48A1 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x48AA PUSH2 0x5EBB JUMP JUMPDEST PUSH2 0x48B3 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST SWAP2 PUSH2 0x48BD DUP4 PUSH2 0x485B JUMP JUMPDEST SWAP2 PUSH2 0x48C7 DUP5 PUSH2 0x1BB7 JUMP JUMPDEST SWAP5 PUSH2 0x48D1 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x48E5 PUSH2 0x48DF DUP9 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x49CD JUMPI PUSH2 0x498E SWAP1 PUSH2 0x4920 PUSH2 0x4919 PUSH2 0x4908 PUSH2 0x4903 DUP8 DUP6 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x4913 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x4937 PUSH1 0x1 PUSH2 0x4930 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 DUP1 PUSH2 0x494B PUSH2 0x4945 DUP5 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x4993 JUMPI PUSH2 0x4971 SWAP2 PUSH2 0x495F SWAP2 PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x496C DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x4988 PUSH1 0x1 PUSH2 0x4983 DUP9 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x4882 JUMP JUMPDEST JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x48D2 JUMP JUMPDEST PUSH2 0x49A0 SWAP1 PUSH2 0x49B2 SWAP3 PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x49AD DUP11 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x49C8 PUSH0 PUSH2 0x49C3 DUP9 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x4882 JUMP JUMPDEST PUSH2 0x4989 JUMP JUMPDEST POP SWAP4 POP POP POP SWAP2 SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657420696E64657800000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4A0A PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4A13 DUP2 PUSH2 0x49D6 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4A2C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x49FD JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4A36 JUMPI JUMP JUMPDEST PUSH2 0x4A3E PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4A6E PUSH1 0x4 DUP3 ADD PUSH2 0x4A17 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4AB5 PUSH2 0x4ABA SWAP2 PUSH2 0x4A81 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x4A8A PUSH2 0x5EBB JUMP JUMPDEST SWAP1 POP PUSH2 0x4AB0 DUP3 PUSH2 0x4AAA PUSH2 0x4AA4 PUSH2 0x4A9F DUP6 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x4A2F JUMP JUMPDEST PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4AC7 SWAP1 PUSH2 0x1730 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4B01 SWAP2 PUSH2 0x4AF7 PUSH2 0x4AFC SWAP3 PUSH2 0x4AE6 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x4AF1 PUSH2 0x5E7A JUMP JUMPDEST ADD PUSH2 0x4ABD JUMP JUMPDEST PUSH2 0x173C JUMP JUMPDEST PUSH2 0x1657 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4B2D SWAP4 SWAP3 SWAP2 PUSH2 0x4B28 DUP5 PUSH2 0x4B21 PUSH2 0x4B1B TIMESTAMP PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x3633 JUMP JUMPDEST PUSH2 0x4B30 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4B44 SWAP4 SWAP3 SWAP2 PUSH2 0x4B3F PUSH2 0x7E06 JUMP JUMPDEST PUSH2 0x4B4F JUMP JUMPDEST SWAP1 PUSH2 0x4B4D PUSH2 0x7EB2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4B63 SWAP4 SWAP3 SWAP2 PUSH2 0x4B5E PUSH2 0x7FF5 JUMP JUMPDEST PUSH2 0x5213 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420616464726573730000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4B9A PUSH1 0xF PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4BA3 DUP2 PUSH2 0x4B66 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4BBC SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4B8D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4BC6 JUMPI JUMP JUMPDEST PUSH2 0x4BCE PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4BFE PUSH1 0x4 DUP3 ADD PUSH2 0x4BA7 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x5368617265206D7573742062652067726561746572207468616E203000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4C36 PUSH1 0x1C PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4C3F DUP2 PUSH2 0x4C02 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4C58 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4C29 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4C62 JUMPI JUMP JUMPDEST PUSH2 0x4C6A PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4C9A PUSH1 0x4 DUP3 ADD PUSH2 0x4C43 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x4CBF SWAP3 SWAP5 SWAP4 PUSH2 0x4CB8 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x616E636500000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C3A20496E73756666696369656E7420416C6C6F77 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x4D1B PUSH1 0x24 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4D24 DUP2 PUSH2 0x4CC1 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4D3D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4D0E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4D47 JUMPI JUMP JUMPDEST PUSH2 0x4D4F PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4D7F PUSH1 0x4 DUP3 ADD PUSH2 0x4D28 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x5472616E736665722046726F6D204661696C6564000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4DB7 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4DC0 DUP2 PUSH2 0x4D83 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4DD9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4DAA JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4DE3 JUMPI JUMP JUMPDEST PUSH2 0x4DEB PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4E1B PUSH1 0x4 DUP3 ADD PUSH2 0x4DC4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4E6F206C69717569646974790000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4E53 PUSH1 0xC PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4E5C DUP2 PUSH2 0x4E1F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4E75 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4E46 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4E7F JUMPI JUMP JUMPDEST PUSH2 0x4E87 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4EB7 PUSH1 0x4 DUP3 ADD PUSH2 0x4E60 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420747265617375727920616464726573730000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x4EEF PUSH1 0x18 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4EF8 DUP2 PUSH2 0x4EBB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4F11 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4EE2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4F1B JUMPI JUMP JUMPDEST PUSH2 0x4F23 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4F53 PUSH1 0x4 DUP3 ADD PUSH2 0x4EFC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x2042616C616E6365000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C3A20496E73756666696369656E74204173736574 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x4FB1 PUSH1 0x28 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x4FBA DUP2 PUSH2 0x4F57 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4FD3 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x4FA4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4FDD JUMPI JUMP JUMPDEST PUSH2 0x4FE5 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5015 PUSH1 0x4 DUP3 ADD PUSH2 0x4FBE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6400000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C3A20466565205472616E73666572204661696C65 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x5073 PUSH1 0x21 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x507C DUP2 PUSH2 0x5019 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5095 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5066 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x509F JUMPI JUMP JUMPDEST PUSH2 0x50A7 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x50D7 PUSH1 0x4 DUP3 ADD PUSH2 0x5080 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4173736574207472616E73666572206661696C65640000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x510F PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x5118 DUP2 PUSH2 0x50DB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5131 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5102 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x513B JUMPI JUMP JUMPDEST PUSH2 0x5143 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5173 PUSH1 0x4 DUP3 ADD PUSH2 0x511C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742042414C554E49206C6971756964697479000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x51AB PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x51B4 DUP2 PUSH2 0x5177 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x51CD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x519E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x51D7 JUMPI JUMP JUMPDEST PUSH2 0x51DF PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x520F PUSH1 0x4 DUP3 ADD PUSH2 0x51B8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP4 SWAP3 POP POP PUSH2 0x523E DUP4 PUSH2 0x5237 PUSH2 0x5231 PUSH2 0x522C PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x4BBF JUMP JUMPDEST PUSH2 0x525A DUP2 PUSH2 0x5254 PUSH2 0x524E PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x4C5B JUMP JUMPDEST PUSH2 0x5273 PUSH2 0x526E PUSH2 0x5269 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 CALLER SWAP1 PUSH2 0x52A1 PUSH2 0x5289 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP5 PUSH2 0x52AC PUSH2 0x5295 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x4C9E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5789 JUMPI PUSH2 0x52DB SWAP2 PUSH0 SWAP2 PUSH2 0x575B JUMPI JUMPDEST POP PUSH2 0x52D4 PUSH2 0x52CE DUP5 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x4D40 JUMP JUMPDEST PUSH2 0x52F4 PUSH2 0x52EF PUSH2 0x52EA ADDRESS PUSH2 0x1C30 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x5324 PUSH0 PUSH2 0x530B ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP6 PUSH2 0x532F DUP9 PUSH2 0x5318 PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1C40 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2BB9 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x5756 JUMPI PUSH2 0x534A SWAP2 PUSH0 SWAP2 PUSH2 0x5728 JUMPI JUMPDEST POP PUSH2 0x4DDC JUMP JUMPDEST PUSH2 0x536D PUSH2 0x5355 PUSH2 0x1E84 JUMP JUMPDEST PUSH2 0x5367 PUSH2 0x5361 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x4E78 JUMP JUMPDEST PUSH2 0x539A PUSH1 0x20 PUSH2 0x5384 PUSH2 0x537F PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x5392 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x53AA PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5723 JUMPI PUSH0 SWAP2 PUSH2 0x56F5 JUMPI JUMPDEST POP SWAP1 PUSH2 0x53E3 DUP3 PUSH2 0x53DC PUSH2 0x53D6 PUSH2 0x53D1 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x4F14 JUMP JUMPDEST PUSH2 0x53EC PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x5408 PUSH2 0x5402 PUSH2 0x53FD PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x5659 JUMPI PUSH2 0x5429 PUSH2 0x5424 PUSH2 0x541D DUP5 PUSH2 0x57A4 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x5487 PUSH1 0x20 PUSH2 0x5455 PUSH2 0x5450 PUSH2 0x544B PUSH0 PUSH2 0x5444 DUP2 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x547C PUSH2 0x5467 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x5470 PUSH2 0x312 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5654 JUMPI PUSH2 0x54B6 SWAP2 PUSH0 SWAP2 PUSH2 0x5626 JUMPI JUMPDEST POP PUSH2 0x54AF PUSH2 0x54A9 DUP6 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x4FD6 JUMP JUMPDEST PUSH2 0x54CA PUSH2 0x54C2 DUP4 PUSH2 0x7ECF JUMP JUMPDEST SWAP3 DUP4 SWAP1 PUSH2 0x29E1 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x54F3 PUSH2 0x54EE PUSH2 0x54E9 PUSH0 PUSH2 0x54E2 DUP2 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x5518 PUSH0 DUP10 SWAP4 SWAP6 PUSH2 0x5523 PUSH2 0x550C PUSH2 0x312 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x5621 JUMPI PUSH2 0x553E SWAP2 PUSH0 SWAP2 PUSH2 0x55F3 JUMPI JUMPDEST POP PUSH2 0x5098 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x5566 PUSH2 0x5561 PUSH2 0x555C PUSH0 PUSH2 0x5555 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST SWAP3 PUSH4 0xA9059CBB SWAP4 PUSH2 0x558B PUSH0 DUP11 SWAP4 SWAP7 PUSH2 0x5596 PUSH2 0x557F PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x55EE JUMPI PUSH2 0x55BB SWAP3 PUSH2 0x55B6 SWAP2 PUSH0 SWAP2 PUSH2 0x55C0 JUMPI JUMPDEST POP PUSH2 0x5134 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x53ED JUMP JUMPDEST PUSH2 0x55E1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x55E7 JUMPI JUMPDEST PUSH2 0x55D9 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x55B0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x55CF JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x5614 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x561A JUMPI JUMPDEST PUSH2 0x560C DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x5538 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5602 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x5647 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x564D JUMPI JUMPDEST PUSH2 0x563F DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x549C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5635 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP1 POP PUSH2 0x568B PUSH2 0x5672 PUSH2 0x566D ADDRESS PUSH2 0x1C30 JUMP JUMPDEST PUSH2 0x2F98 JUMP JUMPDEST PUSH2 0x5684 PUSH2 0x567E DUP6 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x51D0 JUMP JUMPDEST PUSH2 0x569E PUSH2 0x5697 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x8062 JUMP JUMPDEST PUSH2 0x56A6 PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x56AE PUSH2 0x7CE2 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x56EF PUSH2 0x56DD PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 SWAP3 PUSH2 0x1730 JUMP JUMPDEST SWAP3 PUSH2 0x56E6 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x5716 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x571C JUMPI JUMPDEST PUSH2 0x570E DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x53BC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5704 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x5749 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x574F JUMPI JUMPDEST PUSH2 0x5741 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH0 PUSH2 0x5344 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5737 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x577C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5782 JUMPI JUMPDEST PUSH2 0x5774 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x52C1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x576A JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP1 PUSH2 0x57A1 SWAP3 SWAP2 PUSH2 0x579C PUSH2 0x1DE8 JUMP JUMPDEST PUSH2 0x4B04 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x57C0 SWAP1 PUSH2 0x57B0 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x57BA DUP2 PUSH2 0x7ECF JUMP JUMPDEST SWAP1 PUSH2 0x29E1 JUMP JUMPDEST SWAP1 PUSH2 0x57D2 PUSH2 0x57CD PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x57DB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x57F7 PUSH2 0x57F1 PUSH2 0x57EC PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x58E0 JUMPI PUSH2 0x585B SWAP1 PUSH1 0x20 PUSH2 0x5829 PUSH2 0x5824 PUSH2 0x581F PUSH0 PUSH2 0x5818 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5850 PUSH2 0x583B ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x5844 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x58DB JUMPI PUSH2 0x5891 PUSH2 0x5883 PUSH2 0x58A8 SWAP5 PUSH2 0x58A3 SWAP4 PUSH0 SWAP2 PUSH2 0x58AD JUMPI JUMPDEST POP DUP9 SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x588B PUSH2 0x1E84 JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x589E DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x57DC JUMP JUMPDEST PUSH2 0x58CE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x58D4 JUMPI JUMPDEST PUSH2 0x58C6 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x587B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x58BC JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP SWAP1 SWAP2 POP SWAP1 JUMP JUMPDEST PUSH2 0x58F0 SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x58FC SWAP1 PUSH2 0x58E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5908 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5914 DUP2 PUSH2 0x7B4 JUMP JUMPDEST SUB PUSH2 0x591B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x592C DUP3 PUSH2 0x590B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x5947 JUMPI PUSH2 0x5944 SWAP2 PUSH0 ADD PUSH2 0x591F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH2 0x5960 PUSH2 0x595B PUSH2 0x5965 SWAP3 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x597C PUSH2 0x5977 PUSH2 0x5981 SWAP3 PUSH2 0x2026 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x599B PUSH2 0x5996 PUSH2 0x59A0 SWAP3 PUSH2 0x5984 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x59AC SWAP1 PUSH2 0x3E2 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x59BA JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x2654 JUMP JUMPDEST PUSH2 0x59C7 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x59FD PUSH1 0x20 PUSH2 0x59E7 PUSH2 0x59E2 PUSH2 0x59DD PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x58F3 JUMP JUMPDEST PUSH2 0x58FF JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x59F5 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5A0D PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5AF8 JUMPI PUSH2 0x5A2F PUSH2 0x5A3E SWAP2 PUSH2 0x5A43 SWAP4 PUSH0 SWAP2 PUSH2 0x5ACA JUMPI JUMPDEST POP PUSH2 0x594C JUMP JUMPDEST PUSH2 0x5A39 PUSH1 0x12 PUSH2 0x5968 JUMP JUMPDEST PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x59A3 JUMP JUMPDEST PUSH2 0x5A4B PUSH2 0x1E84 JUMP JUMPDEST DUP1 PUSH2 0x5A5E PUSH2 0x5A58 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x5ABC JUMPI PUSH2 0x5A6B PUSH2 0x5EBB JUMP JUMPDEST POP SWAP2 DUP3 PUSH2 0x5A80 PUSH2 0x5A7A PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x5AAD JUMPI PUSH2 0x5A95 PUSH2 0x5AA5 SWAP2 PUSH2 0x5AAA SWAP5 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x5A9F PUSH1 0x1 PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x29BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP POP PUSH2 0x5AB9 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP POP PUSH2 0x5AC7 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5AEB SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5AF1 JUMPI JUMPDEST PUSH2 0x5AE3 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x592E JUMP JUMPDEST PUSH0 PUSH2 0x5A29 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5AD9 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x5B0E SWAP1 PUSH2 0x5B09 PUSH2 0x6BE0 JUMP JUMPDEST PUSH2 0x5B10 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x5B2B PUSH2 0x5B25 PUSH2 0x5B20 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x5B3B JUMPI PUSH2 0x5B39 SWAP1 PUSH2 0x7025 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B7E PUSH2 0x5B47 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x5B4F PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5B8B SWAP1 PUSH2 0x5AFD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B96 SWAP1 PUSH2 0x1910 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5BAD SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5B8D JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP3 SWAP5 SWAP1 SWAP4 DUP2 SWAP6 PUSH2 0x5BBE PUSH2 0x61C6 JUMP JUMPDEST SWAP5 PUSH2 0x5BCA PUSH0 DUP8 ADD PUSH2 0x207B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x5C7B JUMPI JUMPDEST PUSH2 0x5C3F JUMPI PUSH2 0x5C04 SWAP7 PUSH2 0x5BFB SWAP6 PUSH2 0x5BE9 DUP11 PUSH0 DUP11 ADD PUSH2 0x213E JUMP JUMPDEST PUSH2 0x5BF6 PUSH1 0x1 PUSH0 DUP11 ADD PUSH2 0x2191 JUMP JUMPDEST PUSH2 0x5CA0 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x2191 JUMP JUMPDEST PUSH2 0x5C3A PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x5C31 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5B9A JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x5C47 PUSH2 0x312 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5C77 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x5C87 PUSH0 DUP8 ADD PUSH2 0x20A9 JUMP JUMPDEST PUSH2 0x5C99 PUSH2 0x5C93 DUP11 PUSH2 0x1910 JUMP JUMPDEST SWAP2 PUSH2 0x1910 JUMP JUMPDEST LT ISZERO PUSH2 0x5BD1 JUMP JUMPDEST PUSH2 0x5CE6 SWAP3 SWAP4 SWAP7 SWAP6 POP SWAP4 PUSH2 0x5CC2 PUSH2 0x5CDF SWAP3 PUSH2 0x5D2B SWAP7 PUSH2 0x5CBD CALLER PUSH2 0x6208 JUMP JUMPDEST PUSH2 0x6233 JUMP JUMPDEST PUSH2 0x5CCA PUSH2 0x6249 JUMP JUMPDEST PUSH2 0x5CD2 PUSH2 0x626F JUMP JUMPDEST PUSH2 0x5CDA PUSH2 0x6295 JUMP JUMPDEST PUSH2 0x2360 JUMP JUMPDEST PUSH1 0x4 PUSH2 0x23A4 JUMP JUMPDEST PUSH2 0x5D01 PUSH2 0x5CFA PUSH8 0xDE0B6B3A7640000 PUSH2 0x23C7 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x5D15 PUSH2 0x5D10 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x5D23 PUSH2 0x312 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x5D3B PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5E65 JUMPI PUSH2 0x5D60 PUSH2 0x5DAD SWAP3 PUSH2 0x5DB2 SWAP5 PUSH0 SWAP2 PUSH2 0x5E37 JUMPI JUMPDEST POP PUSH1 0x2 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x5D78 PUSH2 0x5D71 PUSH5 0xE8D4A51000 PUSH2 0x24CB JUMP JUMPDEST PUSH1 0x3 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x5DA6 PUSH2 0x5D85 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x5D9F PUSH2 0x5D99 PUSH2 0x5D94 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x2568 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x67E4 JUMP JUMPDEST PUSH2 0x2604 JUMP JUMPDEST PUSH2 0x5DBB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST PUSH2 0x5DC4 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP1 JUMPDEST DUP2 PUSH2 0x5DE1 PUSH2 0x5DDB PUSH2 0x5DD6 DUP8 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x5E13 JUMPI PUSH2 0x5E07 PUSH2 0x5E0D SWAP2 PUSH2 0x5E01 PUSH2 0x5DFC DUP8 DUP7 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP2 PUSH2 0x1BFD JUMP JUMPDEST SWAP1 PUSH2 0x5DC6 JUMP JUMPDEST SWAP1 POP PUSH2 0x5E35 SWAP2 SWAP3 POP PUSH2 0x5E2F PUSH2 0x5E29 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x271E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E58 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5E5E JUMPI JUMPDEST PUSH2 0x5E50 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x5D58 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5E46 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST SWAP1 PUSH2 0x5E78 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x5BAF JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x5EA6 PUSH2 0x3343 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5EB9 SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x80E1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5EC3 PUSH2 0x1DE8 JUMP JUMPDEST PUSH2 0x5ECB PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x5ED5 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST SWAP1 PUSH2 0x5EDF DUP3 PUSH2 0x1BB7 JUMP JUMPDEST SWAP3 PUSH2 0x5EE9 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x5EFE PUSH2 0x5EF8 DUP7 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x5FD6 JUMPI PUSH2 0x5F1A PUSH0 PUSH2 0x5F13 DUP2 DUP7 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x5F23 DUP2 PUSH2 0x3F5F JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x5F37 PUSH2 0x5F31 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x5FCA JUMPI SWAP2 PUSH2 0x5F99 SWAP2 DUP4 PUSH2 0x5FA0 SWAP5 PUSH2 0x5F61 PUSH2 0x5F5B PUSH2 0x5F56 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x5FA6 JUMPI POP PUSH2 0x5F7F SWAP1 PUSH2 0x5F7A DUP10 SWAP2 DUP9 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST JUMPDEST PUSH2 0x5F93 PUSH2 0x5F8E DUP9 DUP8 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP3 JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST SWAP2 PUSH2 0x5EEB JUMP JUMPDEST PUSH2 0x5FC5 SWAP2 PUSH2 0x5FB3 SWAP2 PUSH2 0x803F JUMP JUMPDEST PUSH2 0x5FC0 DUP10 SWAP2 DUP9 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x5F80 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x5FA0 SWAP1 PUSH2 0x5F9B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x6007 PUSH2 0x600E SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x5FFD PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x601B SWAP2 SUB PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x602C DUP2 DUP4 SWAP1 PUSH2 0x4AD3 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x6060 PUSH2 0x605A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST SUB PUSH2 0x606D JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x6080 PUSH2 0x607A DUP8 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x60A6 JUMPI PUSH2 0x609D SWAP4 SWAP5 PUSH2 0x6095 SWAP2 SWAP4 SWAP3 PUSH2 0x6010 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x80E1 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x6066 JUMP JUMPDEST POP PUSH2 0x60E5 DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x60B6 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x5FDE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x6105 PUSH2 0x60FF PUSH2 0x60FA PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x617F JUMPI DUP2 PUSH2 0x6125 PUSH2 0x611F PUSH2 0x611A PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x6138 JUMPI PUSH2 0x6136 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x8249 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x617B PUSH2 0x6144 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x614C PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x61C2 PUSH2 0x618B PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x6193 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x61FB SWAP1 PUSH2 0x61F6 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x61FD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6206 SWAP1 PUSH2 0x84C7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6211 SWAP1 PUSH2 0x61EA JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6225 SWAP2 PUSH2 0x6220 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x6227 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6231 SWAP2 PUSH2 0x868C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x623D SWAP2 PUSH2 0x6213 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6247 PUSH2 0x83EF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6251 PUSH2 0x623F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x625B PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x6263 PUSH2 0x6265 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x626D PUSH2 0x86C7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6277 PUSH2 0x6253 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6281 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x6289 PUSH2 0x628B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6293 PUSH2 0x86F9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x629D PUSH2 0x6279 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420726562616C616E6365722061646472657373000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x62D3 PUSH1 0x1A PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x62DC DUP2 PUSH2 0x629F JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x62F5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x62C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x62FF JUMPI JUMP JUMPDEST PUSH2 0x6307 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6337 PUSH1 0x4 DUP3 ADD PUSH2 0x62E0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 PUSH32 0x6368000000000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x41737365747320616E642077656967687473206C656E677468206D69736D6174 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x6395 PUSH1 0x22 PUSH1 0x40 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x639E DUP2 PUSH2 0x633B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x63B7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x6388 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x63C1 JUMPI JUMP JUMPDEST PUSH2 0x63C9 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x63F9 PUSH1 0x4 DUP3 ADD PUSH2 0x63A2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6408 SWAP1 PUSH1 0x4 PUSH2 0x295D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x6449 SWAP2 MUL SWAP2 PUSH2 0x6443 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x640B JUMP JUMPDEST SWAP3 PUSH2 0x640B JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6469 PUSH2 0x6464 PUSH2 0x6471 SWAP4 PUSH2 0x2418 JUMP JUMPDEST PUSH2 0x2434 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x640F JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x6487 SWAP2 PUSH2 0x6481 PUSH2 0x1DE8 JUMP JUMPDEST SWAP2 PUSH2 0x6453 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x3 PUSH2 0x64B5 SWAP3 DUP3 DUP1 DUP3 ADD SSTORE PUSH2 0x64A2 DUP4 PUSH1 0x1 DUP4 ADD PUSH2 0x6475 JUMP JUMPDEST PUSH2 0x64AF DUP4 PUSH1 0x2 DUP4 ADD PUSH2 0x6475 JUMP JUMPDEST ADD PUSH2 0x6475 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 SUB PUSH2 0x64F5 JUMPI PUSH2 0x64F3 SWAP1 PUSH2 0x6489 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x64B7 JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x6506 JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x6513 PUSH0 PUSH1 0x4 SWAP4 PUSH2 0x64E3 JUMP JUMPDEST ADD PUSH2 0x64FB JUMP JUMPDEST SWAP1 SWAP2 DUP3 DUP2 LT PUSH2 0x6528 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6546 PUSH2 0x6540 PUSH2 0x653A PUSH2 0x6551 SWAP6 PUSH2 0x63FD JUMP JUMPDEST SWAP3 PUSH2 0x63FD JUMP JUMPDEST SWAP3 PUSH2 0x15EC JUMP JUMPDEST SWAP2 DUP3 ADD SWAP2 ADD SWAP1 PUSH2 0x64FA JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x6523 JUMP JUMPDEST SWAP1 PUSH9 0x10000000000000000 DUP2 GT PUSH2 0x6582 JUMPI DUP2 PUSH2 0x6577 PUSH2 0x6580 SWAP4 PUSH2 0x15E8 JUMP JUMPDEST SWAP1 DUP3 DUP2 SSTORE PUSH2 0x6519 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST PUSH0 PUSH2 0x6591 SWAP2 PUSH2 0x6559 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH0 SUB PUSH2 0x65A5 JUMPI PUSH2 0x65A3 SWAP1 PUSH2 0x6587 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x64B7 JUMP JUMPDEST PUSH2 0x65B4 SWAP1 MLOAD PUSH2 0x4C3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657420616464726573730000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x65EB PUSH1 0x15 PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x65F4 DUP2 PUSH2 0x65B7 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x660D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x65DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x6617 JUMPI JUMP JUMPDEST PUSH2 0x661F PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x664F PUSH1 0x4 DUP3 ADD PUSH2 0x65F8 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420776569676874000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x6687 PUSH1 0xE PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x6690 DUP2 PUSH2 0x6653 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x66A9 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x667A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x66B3 JUMPI JUMP JUMPDEST PUSH2 0x66BB PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x66EB PUSH1 0x4 DUP3 ADD PUSH2 0x6694 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x66FC PUSH1 0x80 PUSH2 0x86F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6715 DUP2 PUSH2 0x6708 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x672F JUMPI PUSH2 0x6727 PUSH1 0x4 SWAP2 PUSH2 0x66FF JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST SWAP1 PUSH2 0x6791 PUSH1 0x60 PUSH1 0x3 PUSH2 0x6797 SWAP5 PUSH2 0x6757 PUSH0 DUP3 ADD PUSH2 0x6751 PUSH0 DUP9 ADD PUSH2 0x65AA JUMP JUMPDEST SWAP1 PUSH2 0x24A8 JUMP JUMPDEST PUSH2 0x6770 PUSH1 0x1 DUP3 ADD PUSH2 0x676A PUSH1 0x20 DUP9 ADD PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x6789 PUSH1 0x2 DUP3 ADD PUSH2 0x6783 PUSH1 0x40 DUP9 ADD PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST ADD SWAP3 ADD PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x67AA JUMPI PUSH2 0x67A8 SWAP2 PUSH2 0x6734 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x64B7 JUMP JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x67DF JUMPI DUP3 PUSH2 0x67D7 SWAP2 PUSH1 0x1 PUSH2 0x67DD SWAP6 ADD DUP2 SSTORE PUSH2 0x670C JUMP JUMPDEST SWAP1 PUSH2 0x6799 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x67EF PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x681D PUSH1 0x20 PUSH2 0x6807 PUSH2 0x6802 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xCFF49D68 SWAP1 PUSH2 0x6815 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x682D PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6BDB JUMPI PUSH0 SWAP2 PUSH2 0x6BAD JUMPI JUMPDEST POP SWAP3 PUSH2 0x686E PUSH1 0x20 PUSH2 0x6858 PUSH2 0x6853 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xCFF49D68 SWAP1 PUSH2 0x6866 PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x687E PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6BA8 JUMPI PUSH2 0x68B5 SWAP2 PUSH0 SWAP2 PUSH2 0x6B7A JUMPI JUMPDEST POP PUSH2 0x68AE PUSH2 0x68A8 PUSH2 0x68A3 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x62F8 JUMP JUMPDEST PUSH2 0x68E1 PUSH2 0x68C1 DUP4 PUSH2 0xD49 JUMP JUMPDEST PUSH2 0x68DB PUSH2 0x68D5 PUSH2 0x68D0 DUP6 PUSH2 0x3CF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x63BA JUMP JUMPDEST PUSH2 0x68EB PUSH0 DUP1 PUSH2 0x6593 JUMP JUMPDEST PUSH2 0x68F4 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x6910 PUSH2 0x690A PUSH2 0x6905 DUP7 PUSH2 0xD49 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x6B70 JUMPI PUSH2 0x694D PUSH2 0x692C PUSH2 0x6927 DUP6 DUP5 SWAP1 PUSH2 0x2EE8 JUMP JUMPDEST PUSH2 0x65AA JUMP JUMPDEST PUSH2 0x6946 PUSH2 0x6940 PUSH2 0x693B PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x697B PUSH2 0x6963 PUSH2 0x695E DUP5 DUP5 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x6975 PUSH2 0x696F PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x66AC JUMP JUMPDEST PUSH2 0x69FE PUSH2 0x6987 PUSH0 PUSH2 0x66EF JUMP JUMPDEST PUSH2 0x699A PUSH2 0x6995 DUP7 DUP6 SWAP1 PUSH2 0x2EE8 JUMP JUMPDEST PUSH2 0x65AA JUMP JUMPDEST SWAP1 PUSH2 0x69F9 PUSH2 0x69F0 PUSH2 0x69B4 PUSH2 0x69AF DUP9 DUP9 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x69EB PUSH2 0x69E2 PUSH0 PUSH2 0x69DD PUSH0 SWAP5 PUSH2 0x69D4 PUSH2 0x69CB PUSH2 0x66F2 JUMP JUMPDEST SWAP11 PUSH0 DUP13 ADD PUSH2 0x2F08 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD PUSH2 0x1CA3 JUMP JUMPDEST PUSH2 0x67AF JUMP JUMPDEST PUSH2 0x6A19 PUSH2 0x6A14 PUSH2 0x6A0F DUP6 DUP5 SWAP1 PUSH2 0x2EE8 JUMP JUMPDEST PUSH2 0x65AA JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x6A22 DUP2 PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 PUSH2 0x6A33 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP1 PUSH2 0x6A50 DUP11 SWAP5 PUSH2 0x6A5B PUSH2 0x6A44 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x4C9E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x6B6B JUMPI PUSH0 SWAP2 PUSH2 0x6B3D JUMPI JUMPDEST POP PUSH2 0x6A80 PUSH2 0x6A7A PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x6A95 JUMPI JUMPDEST POP PUSH2 0x6A90 SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x68F5 JUMP JUMPDEST PUSH2 0x6A9E SWAP1 PUSH2 0x1C24 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 DUP8 SWAP1 PUSH2 0x6AE6 PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 PUSH2 0x6AF1 PUSH2 0x6ADA PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x6B38 JUMPI PUSH2 0x6A90 SWAP3 PUSH2 0x6B0C JUMPI JUMPDEST POP SWAP1 PUSH2 0x6A86 JUMP JUMPDEST PUSH2 0x6B2C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6B31 JUMPI JUMPDEST PUSH2 0x6B24 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH2 0x6B05 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6B1A JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x6B5E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6B64 JUMPI JUMPDEST PUSH2 0x6B56 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x6A6D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6B4C JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP POP POP SWAP1 POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x6B9B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6BA1 JUMPI JUMPDEST PUSH2 0x6B93 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x6893 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6B89 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x6BCE SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6BD4 JUMPI JUMPDEST PUSH2 0x6BC6 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x683F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6BBC JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x6BE8 PUSH2 0x3347 JUMP JUMPDEST PUSH2 0x6C01 PUSH2 0x6BFB PUSH2 0x6BF6 PUSH2 0x5E9E JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST SUB PUSH2 0x6C08 JUMPI JUMP JUMPDEST PUSH2 0x6C4A PUSH2 0x6C13 PUSH2 0x5E9E JUMP JUMPDEST PUSH2 0x6C1B PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6C56 PUSH2 0x8703 JUMP JUMPDEST PUSH2 0x6C5E PUSH2 0x6C96 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x6C6C PUSH1 0xFF SWAP2 PUSH2 0x20FD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6C8B PUSH2 0x6C86 PUSH2 0x6C92 SWAP3 PUSH2 0x2182 JUMP JUMPDEST PUSH2 0x218E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x6C60 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x6CAA PUSH2 0x6CA1 PUSH2 0x7001 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x6C76 JUMP JUMPDEST PUSH2 0x6CB2 PUSH2 0x5E9E JUMP JUMPDEST PUSH2 0x6CE8 PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 PUSH2 0x6CDF PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x6CF5 PUSH2 0x6C4E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6D00 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6D0C ADDRESS PUSH2 0x6CF7 JUMP JUMPDEST PUSH2 0x6D3E PUSH2 0x6D38 PUSH32 0x0 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x6D88 JUMPI JUMPDEST PUSH2 0x6D4C JUMPI JUMP JUMPDEST PUSH2 0x6D54 PUSH2 0x312 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6D84 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x6D91 PUSH2 0x8756 JUMP JUMPDEST PUSH2 0x6DC3 PUSH2 0x6DBD PUSH32 0x0 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ ISZERO PUSH2 0x6D46 JUMP JUMPDEST POP PUSH2 0x6DD3 PUSH2 0x6BE0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6DDE SWAP1 PUSH2 0x6DCA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6DE9 SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6DF5 SWAP1 PUSH2 0x6DE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6E01 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6E0D DUP2 PUSH2 0xCBA JUMP JUMPDEST SUB PUSH2 0x6E14 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x6E25 DUP3 PUSH2 0x6E04 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x6E40 JUMPI PUSH2 0x6E3D SWAP2 PUSH0 ADD PUSH2 0x6E18 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6E73 PUSH1 0x20 PUSH2 0x6E5D PUSH2 0x6E58 DUP7 PUSH2 0x6DEC JUMP JUMPDEST PUSH2 0x6DF8 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x6E6B PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x6E83 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x6F53 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x6EE4 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x6EA5 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x6EE0 SWAP1 PUSH2 0x6EB1 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x6EFF PUSH2 0x6EF9 PUSH2 0x6EF4 PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0xCBA JUMP JUMPDEST SWAP2 PUSH2 0xCBA JUMP JUMPDEST SUB PUSH2 0x6F14 JUMPI PUSH2 0x6F0F SWAP3 SWAP4 POP PUSH2 0x8780 JUMP JUMPDEST PUSH2 0x6EA3 JUMP JUMPDEST PUSH2 0x6F4F DUP5 PUSH2 0x6F20 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xCCA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x6F75 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x6F7C JUMPI JUMPDEST PUSH2 0x6F6D DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6E27 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x6E90 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6F63 JUMP JUMPDEST PUSH2 0x6F8C ADDRESS PUSH2 0x6CF7 JUMP JUMPDEST PUSH2 0x6FBE PUSH2 0x6FB8 PUSH32 0x0 PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST SUB PUSH2 0x6FC5 JUMPI JUMP JUMPDEST PUSH2 0x6FCD PUSH2 0x312 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x6FFD PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH2 0x702D PUSH2 0x75B5 JUMP JUMPDEST PUSH2 0x7045 PUSH2 0x703B PUSH0 DUP4 ADD PUSH2 0x1636 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x24A8 JUMP JUMPDEST SWAP1 PUSH2 0x7079 PUSH2 0x7073 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP2 PUSH2 0x1730 JUMP JUMPDEST SWAP2 PUSH2 0x7082 PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0x708C DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x709A SWAP1 PUSH2 0xEDA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x70A6 SWAP1 PUSH2 0x7091 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x70B2 SWAP1 PUSH2 0xEF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x70BF JUMPI JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST SWAP3 PUSH1 0xC0 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x711D PUSH2 0x7112 PUSH2 0x7127 SWAP4 PUSH2 0x7104 PUSH2 0x7131 SWAP8 PUSH2 0x70F6 PUSH2 0x7138 SWAP14 SWAP9 PUSH1 0xE0 DUP13 ADD SWAP1 DUP13 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP1 DUP11 DUP3 SUB PUSH1 0x20 DUP13 ADD MSTORE PUSH2 0xD80 JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x40 DUP11 ADD MSTORE PUSH2 0x409 JUMP JUMPDEST SWAP11 PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x5BD JUMP JUMPDEST PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST ADD SWAP1 PUSH2 0x106A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7167 PUSH1 0x20 PUSH2 0x7151 PUSH2 0x714C PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xCFF49D68 SWAP1 PUSH2 0x715F PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x7177 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x753C JUMPI PUSH0 SWAP2 PUSH2 0x750E JUMPI JUMPDEST POP SWAP1 PUSH2 0x7193 PUSH2 0x2F16 JUMP JUMPDEST SWAP1 PUSH2 0x719C PUSH2 0x1EB8 JUMP JUMPDEST SWAP2 PUSH2 0x71A6 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x71C2 PUSH2 0x71BC PUSH2 0x71B7 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x7379 JUMPI PUSH2 0x71EE PUSH2 0x71E9 PUSH2 0x71E4 PUSH0 PUSH2 0x71DD DUP2 DUP7 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 PUSH2 0x71FF ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP1 PUSH2 0x721C DUP10 SWAP5 PUSH2 0x7227 PUSH2 0x7210 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x4C9E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7374 JUMPI PUSH0 SWAP2 PUSH2 0x7346 JUMPI JUMPDEST POP PUSH2 0x726C PUSH2 0x7266 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x7280 JUMPI JUMPDEST PUSH2 0x727B SWAP1 PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x71A7 JUMP JUMPDEST PUSH2 0x72A6 PUSH2 0x72A1 PUSH2 0x729C PUSH0 PUSH2 0x7295 DUP2 DUP7 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 DUP8 SWAP1 PUSH2 0x72EE PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 PUSH2 0x72F9 PUSH2 0x72E2 PUSH2 0x312 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1C40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3BF6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x7341 JUMPI PUSH2 0x727B SWAP3 PUSH2 0x7315 JUMPI JUMPDEST POP SWAP1 POP PUSH2 0x7272 JUMP JUMPDEST PUSH2 0x7335 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x733A JUMPI JUMPDEST PUSH2 0x732D DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3388 JUMP JUMPDEST PUSH2 0x730D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7323 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x7367 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x736D JUMPI JUMPDEST PUSH2 0x735F DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x7239 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7355 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP SWAP2 SWAP1 SWAP3 PUSH2 0x7385 PUSH2 0x1CB1 JUMP JUMPDEST PUSH2 0x73B2 PUSH1 0x20 PUSH2 0x739C PUSH2 0x7397 PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0xEA233C05 SWAP1 PUSH2 0x73AA PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x73C2 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7509 JUMPI PUSH2 0x73E8 SWAP2 PUSH2 0x73E3 SWAP2 PUSH0 SWAP2 PUSH2 0x74DB JUMPI JUMPDEST POP SWAP4 PUSH2 0x709D JUMP JUMPDEST PUSH2 0x70A9 JUMP JUMPDEST PUSH4 0xF0BF7714 DUP6 SWAP5 SWAP4 PUSH2 0x73F9 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP2 PUSH2 0x7403 ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP6 PUSH2 0x740E PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST DUP6 EXTCODESIZE ISZERO PUSH2 0x74D6 JUMPI PUSH0 SWAP8 PUSH2 0x7435 SWAP6 DUP10 SWAP6 PUSH2 0x7440 SWAP5 PUSH2 0x7429 PUSH2 0x312 JUMP JUMPDEST SWAP13 DUP14 SWAP12 DUP13 SWAP11 DUP12 SWAP10 PUSH2 0x1C40 JUMP JUMPDEST DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0x70C4 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x74D1 JUMPI PUSH2 0x74A5 JUMPI JUMPDEST POP PUSH2 0x7458 PUSH2 0x7A27 JUMP JUMPDEST PUSH2 0x7460 PUSH2 0x7CE2 JUMP JUMPDEST CALLER PUSH2 0x74A0 PUSH2 0x748E PUSH32 0x279B343370F587AF7FB675AE7C8578E9C8ABCC373236AD02C501A4771FE7A7B8 SWAP3 PUSH2 0x1730 JUMP JUMPDEST SWAP3 PUSH2 0x7497 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xDD0 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x74C4 SWAP1 PUSH0 RETURNDATASIZE DUP2 GT PUSH2 0x74CA JUMPI JUMPDEST PUSH2 0x74BC DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x70B5 JUMP JUMPDEST PUSH0 PUSH2 0x744F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x74B2 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x1C3C JUMP JUMPDEST PUSH2 0x74FC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7502 JUMPI JUMPDEST PUSH2 0x74F4 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x73DC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x74EA JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x752F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7535 JUMPI JUMPDEST PUSH2 0x7527 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2487 JUMP JUMPDEST PUSH0 PUSH2 0x7189 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x751D JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x7549 PUSH2 0x7FF5 JUMP JUMPDEST PUSH2 0x7551 PUSH2 0x7553 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7568 PUSH2 0x755E PUSH2 0x7001 JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP2 ADD PUSH2 0x6C76 JUMP JUMPDEST PUSH2 0x7570 PUSH2 0x5E9E JUMP JUMPDEST PUSH2 0x75A6 PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 PUSH2 0x759D PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x75B3 PUSH2 0x7541 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x75E3 PUSH2 0x1B96 JUMP JUMPDEST POP PUSH2 0x75F5 PUSH2 0x75F0 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST PUSH2 0x75FE PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x761A PUSH2 0x7614 PUSH2 0x760F PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x76C7 JUMPI PUSH2 0x768A SWAP1 PUSH2 0x7659 PUSH2 0x7648 DUP8 PUSH2 0x7642 PUSH1 0x1 PUSH2 0x763B PUSH0 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP1 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x7653 PUSH2 0x2710 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x766C PUSH2 0x7667 DUP7 DUP5 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x767E PUSH2 0x7678 DUP4 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x768F JUMPI JUMPDEST POP PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x75FF JUMP JUMPDEST PUSH2 0x76AF PUSH2 0x76C1 SWAP2 PUSH2 0x76A9 PUSH2 0x76A4 DUP9 DUP7 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x29E1 JUMP JUMPDEST PUSH2 0x76BC DUP6 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x1CA3 JUMP JUMPDEST PUSH0 PUSH2 0x7684 JUMP JUMPDEST POP SWAP2 SWAP3 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x76D7 PUSH2 0x1DE8 JUMP JUMPDEST SWAP1 PUSH2 0x76E1 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x76FE PUSH2 0x76F8 PUSH2 0x76F3 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x7730 JUMPI PUSH2 0x7724 PUSH2 0x772A SWAP2 PUSH2 0x771E PUSH2 0x7719 DUP6 DUP8 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST SWAP1 PUSH2 0x2681 JUMP JUMPDEST SWAP3 PUSH2 0x1BFD JUMP JUMPDEST SWAP2 PUSH2 0x76E3 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420746F6B656E20616D6F756E7420746F206164640000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x776A PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x7773 DUP2 PUSH2 0x7736 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x778C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x775D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x7796 JUMPI JUMP JUMPDEST PUSH2 0x779E PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x77CE PUSH1 0x4 DUP3 ADD PUSH2 0x7777 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x77DA PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x77F1 PUSH0 PUSH2 0x77EA DUP2 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x780C PUSH2 0x7806 PUSH2 0x7801 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x784E JUMPI SWAP1 PUSH2 0x782A PUSH0 PUSH2 0x7823 PUSH2 0x782F SWAP5 DUP3 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x8809 JUMP JUMPDEST PUSH2 0x784B DUP2 PUSH2 0x7845 PUSH2 0x783F PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x778F JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x786D PUSH2 0x7867 PUSH2 0x7862 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x7889 JUMPI PUSH2 0x7887 SWAP2 PUSH2 0x787F PUSH0 PUSH2 0x2503 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x8249 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x78CC PUSH2 0x7895 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x789D PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x78E7 PUSH2 0x78E2 PUSH2 0x78EC SWAP3 PUSH2 0x78D0 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x556E646572666C6F772064656372656D656E74696E6720736C69707061676500 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x7923 PUSH1 0x1F PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x792C DUP2 PUSH2 0x78EF JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x7945 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x7916 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x794F JUMPI JUMP JUMPDEST PUSH2 0x7957 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7987 PUSH1 0x4 DUP3 ADD PUSH2 0x7930 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4F766572666C6F7720696E6372656D656E74696E6720736C6970706167650000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x79BF PUSH1 0x1E PUSH1 0x20 SWAP3 PUSH2 0x333 JUMP JUMPDEST PUSH2 0x79C8 DUP2 PUSH2 0x798B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x79E1 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x79B2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x79EB JUMPI JUMP JUMPDEST PUSH2 0x79F3 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7A23 PUSH1 0x4 DUP3 ADD PUSH2 0x79CC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x7A2F PUSH2 0x4890 JUMP JUMPDEST SWAP1 PUSH2 0x7A3A PUSH1 0x64 PUSH2 0x78D3 JUMP JUMPDEST SWAP2 PUSH2 0x7A45 PUSH1 0xA PUSH2 0x5987 JUMP JUMPDEST SWAP2 PUSH2 0x7A4F PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x7A6B PUSH2 0x7A65 PUSH2 0x7A60 PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x7CDB JUMPI PUSH2 0x7B81 SWAP1 PUSH2 0x7A8C PUSH1 0x2 PUSH2 0x7A85 PUSH0 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x7A9F PUSH2 0x7A9A DUP7 DUP5 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x7AB1 PUSH2 0x7AAB DUP10 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT ISZERO PUSH2 0x7CBD JUMPI PUSH2 0x7ACA PUSH2 0x7AC5 DUP6 DUP5 SWAP1 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x320B JUMP JUMPDEST PUSH0 EQ PUSH2 0x7BA3 JUMPI PUSH2 0x7B4B SWAP1 PUSH2 0x7B1B PUSH2 0x7AF4 PUSH2 0x7AED PUSH2 0x7AE8 DUP10 DUP8 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST DUP11 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x7B15 PUSH1 0x2 PUSH2 0x7B04 PUSH0 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD SWAP2 PUSH2 0x7B10 DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x2681 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7B44 PUSH2 0x7B3E PUSH2 0x7B38 PUSH1 0x2 PUSH2 0x7B31 PUSH0 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x79E4 JUMP JUMPDEST JUMPDEST PUSH2 0x7B63 PUSH1 0x2 PUSH2 0x7B5C PUSH0 DUP5 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x7B75 PUSH2 0x7B6F DUP8 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x7B86 JUMPI JUMPDEST JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x7A50 JUMP JUMPDEST PUSH2 0x7B9E DUP6 PUSH1 0x2 PUSH2 0x7B97 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7B7B JUMP JUMPDEST PUSH2 0x7BBA PUSH1 0x2 PUSH2 0x7BB3 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x7BE8 PUSH2 0x7BE2 PUSH2 0x7BDD PUSH2 0x7BD6 PUSH2 0x7BD1 DUP11 DUP9 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x7C70 JUMPI PUSH2 0x7C6A SWAP1 PUSH2 0x7C3A PUSH2 0x7C13 PUSH2 0x7C0C PUSH2 0x7C07 DUP10 DUP8 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST DUP11 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x7C34 PUSH1 0x2 PUSH2 0x7C23 PUSH0 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD SWAP2 PUSH2 0x7C2F DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x29E1 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7C63 PUSH2 0x7C5D PUSH2 0x7C57 PUSH1 0x2 PUSH2 0x7C50 PUSH0 DUP9 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1657 JUMP JUMPDEST SWAP3 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT ISZERO PUSH2 0x7948 JUMP JUMPDEST JUMPDEST PUSH2 0x7B4C JUMP JUMPDEST POP PUSH2 0x7CB8 PUSH2 0x7C91 PUSH2 0x7C8A PUSH2 0x7C85 DUP8 DUP6 SWAP1 PUSH2 0x1C83 JUMP JUMPDEST PUSH2 0x2647 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x7CB2 PUSH1 0x2 PUSH2 0x7CA1 PUSH0 DUP7 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD SWAP2 PUSH2 0x7CAD DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x2681 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7C6B JUMP JUMPDEST POP PUSH2 0x7CD6 DUP6 PUSH1 0x2 PUSH2 0x7CCF PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x7B7C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7CEB PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x7D07 PUSH2 0x7D01 PUSH2 0x7CFC PUSH0 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT ISZERO PUSH2 0x7DD7 JUMPI PUSH2 0x7D6B SWAP1 PUSH1 0x20 PUSH2 0x7D39 PUSH2 0x7D34 PUSH2 0x7D2F PUSH0 PUSH2 0x7D28 DUP2 DUP8 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x1636 JUMP JUMPDEST PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x7D60 PUSH2 0x7D4B ADDRESS PUSH2 0x1C30 JUMP JUMPDEST SWAP3 PUSH2 0x7D54 PUSH2 0x312 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1C40 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7DD2 JUMPI PUSH2 0x7D9F SWAP3 PUSH2 0x7D9A SWAP2 PUSH0 SWAP2 PUSH2 0x7DA4 JUMPI JUMPDEST POP PUSH1 0x3 PUSH2 0x7D93 PUSH0 DUP6 SWAP1 PUSH2 0x15F5 JUMP JUMPDEST POP ADD PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x1BFD JUMP JUMPDEST PUSH2 0x7CEC JUMP JUMPDEST PUSH2 0x7DC5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7DCB JUMPI JUMPDEST PUSH2 0x7DBD DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x7D85 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7DB3 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7DF1 PUSH2 0x7DEC PUSH2 0x7DF6 SWAP3 PUSH2 0x7DDA JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E03 PUSH1 0x2 PUSH2 0x7DDD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E0E PUSH2 0x882B JUMP JUMPDEST PUSH2 0x7E19 PUSH0 DUP3 ADD PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x7E32 PUSH2 0x7E2C PUSH2 0x7E27 PUSH2 0x7DF9 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x7E4D JUMPI PUSH2 0x7E4B SWAP1 PUSH0 PUSH2 0x7E44 PUSH2 0x7DF9 JUMP JUMPDEST SWAP2 ADD PUSH2 0x2437 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7E55 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x7E85 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E9D PUSH2 0x7E98 PUSH2 0x7EA2 SWAP3 PUSH2 0x20D2 JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7EAF PUSH1 0x1 PUSH2 0x7E89 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7ECD PUSH2 0x7EBD PUSH2 0x882B JUMP JUMPDEST PUSH0 PUSH2 0x7EC6 PUSH2 0x7EA5 JUMP JUMPDEST SWAP2 ADD PUSH2 0x2437 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7ED7 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x7F05 PUSH1 0x20 PUSH2 0x7EEF PUSH2 0x7EEA PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x7EFD PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x7F15 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7FF0 JUMPI PUSH0 SWAP2 PUSH2 0x7FC2 JUMPI JUMPDEST POP SWAP1 PUSH2 0x7F56 PUSH1 0x20 PUSH2 0x7F40 PUSH2 0x7F3B PUSH1 0x4 PUSH2 0x246B JUMP JUMPDEST PUSH2 0xF02 JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x7F4E PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1C40 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x7F66 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x7FBD JUMPI PUSH2 0x7F8C SWAP4 PUSH2 0x7F87 SWAP3 PUSH0 SWAP2 PUSH2 0x7F8F JUMPI JUMPDEST POP SWAP3 PUSH2 0x295D JUMP JUMPDEST PUSH2 0x29BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7FB0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7FB6 JUMPI JUMPDEST PUSH2 0x7FA8 DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x7F80 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7F9E JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x7FE3 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x7FE9 JUMPI JUMPDEST PUSH2 0x7FDB DUP2 DUP4 PUSH2 0x846 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C55 JUMP JUMPDEST PUSH0 PUSH2 0x7F27 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x7FD1 JUMP JUMPDEST PUSH2 0x1C73 JUMP JUMPDEST PUSH2 0x7FFD PUSH2 0x2E82 JUMP JUMPDEST PUSH2 0x8003 JUMPI JUMP JUMPDEST PUSH2 0x800B PUSH2 0x312 JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x803B PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x805F SWAP2 PUSH2 0x804C PUSH2 0x1DE8 JUMP JUMPDEST POP SWAP1 PUSH2 0x8058 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x2BEB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x807E PUSH2 0x8078 PUSH2 0x8073 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x809A JUMPI PUSH2 0x8098 SWAP2 SWAP1 PUSH2 0x8091 PUSH0 PUSH2 0x2503 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x8249 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x80DD PUSH2 0x80A6 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x80AE PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP3 PUSH2 0x80EB PUSH2 0x5E7A JUMP JUMPDEST DUP3 PUSH2 0x8106 PUSH2 0x8100 PUSH2 0x80FB PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x81F4 JUMPI DUP5 PUSH2 0x8126 PUSH2 0x8120 PUSH2 0x811B PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x81AD JUMPI PUSH2 0x814D SWAP1 PUSH2 0x8148 PUSH2 0x8141 PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x4ABD JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x8157 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x81A2 PUSH2 0x8190 PUSH2 0x818A PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP4 PUSH2 0x8199 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x8152 JUMP JUMPDEST PUSH2 0x81F0 PUSH2 0x81B9 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x81C1 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x8237 PUSH2 0x8200 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x8208 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x8246 SWAP2 ADD PUSH2 0x3E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x8254 PUSH2 0x5E7A JUMP JUMPDEST DUP2 PUSH2 0x826F PUSH2 0x8269 PUSH2 0x8264 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x835A JUMPI PUSH2 0x8296 DUP4 PUSH2 0x8290 PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x828B DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x2681 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x82B2 PUSH2 0x82AC PUSH2 0x82A7 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x832B JUMPI PUSH2 0x82DA SWAP1 PUSH2 0x82D4 PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x82CF DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x6010 JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x8326 PUSH2 0x8314 PUSH2 0x830E PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP4 PUSH2 0x1730 JUMP JUMPDEST SWAP4 PUSH2 0x831D PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5CA JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x8355 SWAP1 PUSH2 0x834F PUSH2 0x8340 PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x173C JUMP JUMPDEST SWAP2 PUSH2 0x834A DUP4 PUSH2 0x1657 JUMP JUMPDEST PUSH2 0x823B JUMP JUMPDEST SWAP1 PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x82DB JUMP JUMPDEST PUSH2 0x836F PUSH2 0x836A PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH2 0x1657 JUMP JUMPDEST DUP1 PUSH2 0x8382 PUSH2 0x837C DUP7 PUSH2 0x3E2 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST LT PUSH2 0x83AC JUMPI PUSH2 0x8395 PUSH2 0x83A7 SWAP2 DUP6 SWAP1 PUSH2 0x6010 JUMP JUMPDEST PUSH2 0x83A2 PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x173C JUMP JUMPDEST PUSH2 0x2437 JUMP JUMPDEST PUSH2 0x8297 JUMP JUMPDEST SWAP2 PUSH2 0x83EB SWAP2 POP SWAP2 SWAP3 PUSH2 0x83BC PUSH2 0x312 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x5FDE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x8400 PUSH2 0x83FA PUSH2 0x884F JUMP JUMPDEST ISZERO PUSH2 0x542 JUMP JUMPDEST PUSH2 0x8406 JUMPI JUMP JUMPDEST PUSH2 0x840E PUSH2 0x312 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x843E PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x8453 SWAP1 PUSH2 0x844E PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x8455 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x8470 PUSH2 0x846A PUSH2 0x8465 PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST SWAP2 PUSH2 0x4C3 JUMP JUMPDEST EQ PUSH2 0x8480 JUMPI PUSH2 0x847E SWAP1 PUSH2 0x7025 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x84C3 PUSH2 0x848C PUSH0 PUSH2 0x2503 JUMP JUMPDEST PUSH2 0x8494 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x84D0 SWAP1 PUSH2 0x8442 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x84E4 SWAP2 PUSH2 0x84DF PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x8668 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x84FC JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x8509 PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x6475 JUMP JUMPDEST ADD PUSH2 0x84F1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x851F JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x852B PUSH2 0x8550 SWAP4 PUSH2 0x1AA7 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x8537 DUP5 PUSH2 0x84E6 JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x8558 JUMPI JUMPDEST PUSH2 0x8549 SWAP1 PUSH2 0x84E6 JUMP JUMPDEST ADD SWAP1 PUSH2 0x84F0 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x851A JUMP JUMPDEST SWAP2 POP PUSH2 0x8549 DUP2 SWAP3 SWAP1 POP PUSH2 0x8540 JUMP JUMPDEST SWAP1 PUSH2 0x8576 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0xE85 JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x8585 SWAP2 PUSH2 0x8566 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8597 DUP2 PUSH2 0x32F JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x8657 JUMPI PUSH2 0x85BB DUP3 PUSH2 0x85B5 DUP6 SLOAD PUSH2 0x1A74 JUMP JUMPDEST DUP6 PUSH2 0x850F JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x85EF JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x85DE SWAP4 PUSH0 SWAP3 PUSH2 0x85E3 JUMPI JUMPDEST POP POP PUSH2 0x857B JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x85D7 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x85FE DUP6 PUSH2 0x1AA7 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x863F JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x8625 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x85E1 JUMP JUMPDEST PUSH2 0x8635 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x8566 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x8619 JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x8601 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST SWAP1 PUSH2 0x8666 SWAP2 PUSH2 0x858D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x868A SWAP3 PUSH2 0x8683 PUSH2 0x8679 PUSH2 0x5E7A JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x865C JUMP JUMPDEST SWAP2 ADD PUSH2 0x865C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x8696 SWAP2 PUSH2 0x84D2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86A0 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x86A8 PUSH2 0x86AA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86C5 PUSH2 0x86B5 PUSH2 0x882B JUMP JUMPDEST PUSH0 PUSH2 0x86BE PUSH2 0x7EA5 JUMP JUMPDEST SWAP2 ADD PUSH2 0x2437 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86CF PUSH2 0x8698 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86D9 PUSH2 0x83EF JUMP JUMPDEST PUSH2 0x86E1 PUSH2 0x86E3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x86F7 PUSH2 0x86EE PUSH2 0x7001 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x6C76 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8701 PUSH2 0x86D1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8714 PUSH2 0x870E PUSH2 0x2E82 JUMP JUMPDEST ISZERO PUSH2 0x542 JUMP JUMPDEST PUSH2 0x871A JUMPI JUMP JUMPDEST PUSH2 0x8722 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x8752 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x875E PUSH2 0x3343 JUMP JUMPDEST POP PUSH2 0x8779 PUSH0 PUSH2 0x8773 PUSH2 0x876E PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0x886D JUMP JUMPDEST ADD PUSH2 0x1636 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x878A DUP3 PUSH2 0x8870 JUMP JUMPDEST DUP2 PUSH2 0x87B5 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x1730 JUMP JUMPDEST SWAP1 PUSH2 0x87BE PUSH2 0x312 JUMP JUMPDEST DUP1 PUSH2 0x87C8 DUP2 PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x87D4 DUP2 PUSH2 0x877C JUMP JUMPDEST PUSH2 0x87E6 PUSH2 0x87E0 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x87FA JUMPI PUSH2 0x87F6 SWAP2 PUSH2 0x8980 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x8804 PUSH2 0x88E5 JUMP JUMPDEST PUSH2 0x87F8 JUMP JUMPDEST PUSH2 0x8828 SWAP2 PUSH2 0x8815 PUSH2 0x1DE8 JUMP JUMPDEST POP PUSH2 0x8820 PUSH1 0x2 PUSH2 0x1636 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x2BEB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH2 0x8857 PUSH2 0x1DC2 JUMP JUMPDEST POP PUSH2 0x886A PUSH0 PUSH2 0x8864 PUSH2 0x61C6 JUMP JUMPDEST ADD PUSH2 0x207B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x8884 PUSH2 0x887E PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x88A6 JUMPI PUSH2 0x88A4 SWAP1 PUSH0 PUSH2 0x889E PUSH2 0x8899 PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0x886D JUMP JUMPDEST ADD PUSH2 0x24A8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x88E1 SWAP1 PUSH2 0x88B2 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x88F8 PUSH2 0x88F2 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH2 0x88FF JUMPI JUMP JUMPDEST PUSH2 0x8907 PUSH2 0x312 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x8937 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8952 PUSH2 0x894D DUP4 PUSH2 0xBCF JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x8972 JUMPI PUSH2 0x8967 RETURNDATASIZE PUSH2 0x8940 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x897A PUSH2 0x893B JUMP JUMPDEST SWAP1 PUSH2 0x8970 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x89AC SWAP4 PUSH2 0x898E PUSH2 0x893B JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x89A3 PUSH2 0x8957 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x89AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x89C3 SWAP1 PUSH2 0x89BC PUSH2 0x893B JUMP JUMPDEST POP ISZERO PUSH2 0x542 JUMP JUMPDEST PUSH0 EQ PUSH2 0x89CF JUMPI POP PUSH2 0x8A53 JUMP JUMPDEST PUSH2 0x89D8 DUP3 PUSH2 0x877C JUMP JUMPDEST PUSH2 0x89EA PUSH2 0x89E4 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ DUP1 PUSH2 0x8A38 JUMPI JUMPDEST PUSH2 0x89F9 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x8A34 SWAP1 PUSH2 0x8A05 PUSH2 0x312 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1077 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x8A4D PUSH2 0x8A47 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST EQ PUSH2 0x89F1 JUMP JUMPDEST PUSH2 0x8A5C DUP2 PUSH2 0x877C JUMP JUMPDEST PUSH2 0x8A6E PUSH2 0x8A68 PUSH0 PUSH2 0x1BE1 JUMP JUMPDEST SWAP2 PUSH2 0x3E2 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x8A7D JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x8A85 PUSH2 0x312 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x8AB5 PUSH1 0x4 DUP3 ADD PUSH2 0xAF4 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 SWAP2 PUSH29 0xFC9BFDD74B7291619426FCEB93E7BFCA689514990ECB531A91C62DE1DB PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"2182:33293:61:-:0;;;;;;;;;-1:-1:-1;2182:33293:61;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2786:33::-;;;;;;:::i;:::-;;:::o;2182:33293::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;2182:33293:61:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2534:18::-;;;;;;:::i;:::-;;:::o;2182:33293::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2611:24::-;;;;;;:::i;:::-;;:::o;2182:33293::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2456:29::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;2182:33293;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2912:43::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;2182:33293::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;3011:144:3:-;3056:13;;:::i;:::-;3106:18;3134:14;3141:7;3106:18;;:::i;:::-;3141:7;3134:14;:::i;:::-;;:::o;2182:33293:61:-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;26210:334::-;26263:16;;:::i;:::-;26335:10;26321:32;26335:17;:10;:17;:::i;:::-;26321:32;:::i;:::-;26383:1;26371:13;26383:1;26371:13;:::i;:::-;26409:3;26386:1;:21;;26390:17;:10;:17;:::i;:::-;26386:21;:::i;:::-;;;:::i;:::-;;;;;26444:52;26451:10;26444:52;:37;:27;26451:19;;:13;:10;26462:1;26451:13;;:::i;:::-;;:19;;:::i;:::-;26444:27;:::i;:::-;:37;:::i;:::-;;26490:4;26444:52;26482:13;26490:4;26482:13;:::i;:::-;26444:52;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;26409:3;26444:52;26429:67;26444:52;;;;;26409:3;26429:9;:67;:9;26439:1;;26429:67;;;:::i;:::-;;:::i;:::-;26409:3;:::i;:::-;26371:13;;26444:52;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;26386:21::-;;26520:16::o;2182:33293::-;;;:::o;5505:186:3:-;5657:5;5505:186;5578:4;;:::i;:::-;5610:12;;;:::i;:::-;5648:7;5657:5;;;:::i;:::-;5680:4;5673:11;:::o;2182:33293:61:-;;;:::o;12640:319::-;12706:7;;:::i;:::-;12743:1;12731:13;12743:1;12731:13;:::i;:::-;12769:3;12746:1;:21;;12750:17;:10;:17;:::i;:::-;12746:21;:::i;:::-;;;:::i;:::-;;;;;12793:19;;:13;:10;12804:1;12793:13;;:::i;:::-;;:19;;:::i;:::-;:28;;12816:5;12793:28;:::i;:::-;;;:::i;:::-;;12789:98;;12769:3;;;:::i;:::-;12731:13;;12789:98;12849:22;:10;;:13;:22;:10;;:13;:::i;:::-;;:22;;:::i;:::-;12842:29;:::o;12746:21::-;;;12908:8;12915:1;12908:8;:::i;:::-;;:::o;4191:152:3:-;4243:7;;:::i;:::-;4287:18;4322:14;;4287:18;;:::i;:::-;4322:14;;:::i;:::-;4315:21;:::o;25159:154:61:-;25212:7;;:::i;:::-;25255:24;;;:::i;:::-;25232:47;25290:15;:::o;27589:291::-;27641:16;;:::i;:::-;27711:10;27697:32;27711:17;:10;:17;:::i;:::-;27697:32;:::i;:::-;27745:13;27757:1;27745:13;:::i;:::-;27783:3;27760:1;:21;;27764:17;:10;:17;:::i;:::-;27760:21;:::i;:::-;;;:::i;:::-;;;;;27783:3;27816:10;27803:33;27816:20;;:13;:10;27827:1;27816:13;;:::i;:::-;;:20;;:::i;:::-;27803:33;:7;27811:1;;27803:33;;;:::i;:::-;;:::i;:::-;27783:3;:::i;:::-;27745:13;;27760:21;;27858:14;:::o;6251:244:3:-;;6461:5;6251:244;6338:4;;:::i;:::-;6372:12;6425:5;6372:12;;:::i;:::-;6410:4;6416:7;6425:5;;;:::i;:::-;6457:2;6461:5;;;:::i;:::-;6484:4;6477:11;:::o;14593:316:61:-;14662:7;;:::i;:::-;14699:1;14687:13;14699:1;14687:13;:::i;:::-;14725:3;14702:1;:21;;14706:17;:10;:17;:::i;:::-;14702:21;:::i;:::-;;;:::i;:::-;;;;;14749:19;;:13;:10;14760:1;14749:13;;:::i;:::-;;:19;;:::i;:::-;:28;;14772:5;14749:28;:::i;:::-;;;:::i;:::-;;14745:96;;14725:3;;;:::i;:::-;14687:13;;14745:96;14805:20;:10;;:13;:20;:10;;:13;:::i;:::-;;:20;;:::i;:::-;14798:27;:::o;14702:21::-;;;14862:8;14869:1;14862:8;:::i;:::-;;:::o;24817:213::-;24875:16;;:::i;:::-;24893:27;;;:::i;:::-;24958:24;;;:::i;:::-;24933:49;;24993:29;;:::o;2182:33293::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;4049:82:3:-;4098:5;;:::i;:::-;4122:2;4115:9;4122:2;4115:9;:::i;:::-;;:::o;2182:33293:61:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2182:33293:61;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3573:909;4052:18;3573:909;;;3850:7;3969:39;3573:909;3980:28;3573:909;3808:10;;;:::i;:::-;3850:7;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;3980:28;:::i;:::-;3969:39;;:::i;:::-;4019:10;;4025:4;4019:10;:::i;:::-;;;:::i;:::-;4052:18;:16;:8;;;:::i;:::-;:16;:::i;:::-;;:18;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;4040:30;4205:35;4052:18;4197:69;4052:18;;;;;3573:909;4040:30;;;:::i;:::-;4081;;4097:14;4081:30;:::i;:::-;;;:::i;:::-;4124:62;4132:9;;;:::i;:::-;:23;;4145:10;4153:1;4145:10;:::i;:::-;4132:23;:::i;:::-;;;:::i;:::-;;;4124:62;:::i;:::-;4231:8;4205:35;;:::i;:::-;4197:69;:::i;:::-;4279:23;4301:1;4279:23;:::i;:::-;4320:13;4332:1;4320:13;:::i;:::-;4315:99;4356:3;4335:1;:19;;4339:15;:8;:15;:::i;:::-;4335:19;:::i;:::-;;;:::i;:::-;;;;;4376:26;4356:3;4391:8;:11;;:8;4400:1;4391:11;;:::i;:::-;;:::i;:::-;4376:26;;:::i;:::-;4356:3;;:::i;:::-;4320:13;;;4335:19;;;4426:48;4335:19;;;4434:20;;4449:5;4434:20;:::i;:::-;;;:::i;:::-;;4426:48;:::i;:::-;3573:909::o;4052:18::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3573:909::-;;;;;;;;:::i;:::-;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;35200:67:61:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;2182:33293::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;11398:1055::-;;12230:45;;12246:29;11582:40;11398:1055;;11542:7;;:::i;:::-;11595:9;;11606:7;;11615:6;11582:40;;:::i;:::-;11658:22;11670:9;11658:22;:::i;:::-;11724:7;11712:20;11724:7;11712:20;:::i;:::-;11786:9;12019:49;;12037:31;11970:32;11971:22;11896:36;11898:24;11831:23;11771:25;11786:9;11771:25;:::i;:::-;11846:7;11831:23;:::i;:::-;11898:9;;:24;:::i;:::-;11896:36;11927:5;11896:36;:::i;:::-;;;:::i;:::-;11971:9;;:22;:::i;:::-;11970:32;11997:5;11970:32;:::i;:::-;;;:::i;:::-;12019:15;12058:9;12037:31;:::i;:::-;12019:49;:::i;:::-;;;:::i;:::-;;12015:199;;;;12097:30;:9;:30;:::i;:::-;12015:199;;12267:7;12246:29;:::i;:::-;12230:45;:::i;:::-;;;:::i;:::-;;12226:191;;;;12304:28;:9;:28;:::i;:::-;12226:191;12429:16;:::o;12226:191::-;12377:28;:9;:28;:::i;:::-;12226:191;;12015:199;12172:30;:9;:30;:::i;:::-;12015:199;;;2182:33293;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;22304:398::-;;22408:7;;:::i;:::-;22475:8;:26;;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;22459:43;22475:26;;;;;22304:398;22459:43;;:::i;:::-;22521:8;:26;;:24;:8;;;:::i;:::-;:24;:::i;:::-;;:26;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;22619:48;22521:26;22513:75;22619:20;22521:26;22619:48;22521:26;;;;;22304:398;22559:1;22521:40;;22551:10;22559:1;22551:10;:::i;:::-;22521:40;:::i;:::-;;;:::i;:::-;;;22513:75;:::i;:::-;22619:20;:::i;:::-;;:48;:20;22640:9;22651:7;22660:6;22619:48;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;22304:398;22599:68;22678:16;:::o;22619:48::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;22521:26::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;22475:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;2182:33293:61:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;2182:33293:61:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2182:33293:61:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:5:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;2182:33293:61:-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;27125:286::-;27176:16;;:::i;:::-;27245:10;27231:32;27245:17;:10;:17;:::i;:::-;27231:32;:::i;:::-;27279:13;27291:1;27279:13;:::i;:::-;27317:3;27294:1;:21;;27298:17;:10;:17;:::i;:::-;27294:21;:::i;:::-;;;:::i;:::-;;;;;27317:3;27349:10;27337:31;27349:19;;:13;:10;27360:1;27349:13;;:::i;:::-;;:19;;:::i;:::-;27337:31;:6;27344:1;;27337:31;;;:::i;:::-;;:::i;:::-;27317:3;:::i;:::-;27279:13;;27294:21;;27390:13;:::o;4401:171:3:-;4545:20;;4401:171;4466:7;;:::i;:::-;4510:18;4545:11;4510:18;;:::i;:::-;4545:11;:20;:::i;:::-;;:::i;:::-;4538:27;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;3155:101::-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;2182:33293:61:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;22760:155;22810:52;22818:19;;:::i;:::-;22810:52;:::i;:::-;;;:::i;:::-;22873:34::o;15587:308::-;15648:16;;:::i;:::-;15720:10;15706:32;15720:17;:10;:17;:::i;:::-;15706:32;:::i;:::-;15754:13;15766:1;15754:13;:::i;:::-;15792:3;15769:1;:21;;15773:17;:10;:17;:::i;:::-;15769:21;:::i;:::-;;;:::i;:::-;;;;;15792:3;15827:10;15812:37;15827:22;;:13;:10;15838:1;15827:13;;:::i;:::-;;:22;;:::i;:::-;15812:37;:9;15822:1;;15812:37;;;:::i;:::-;;:::i;:::-;15792:3;:::i;:::-;15754:13;;15769:21;;15871:16;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;35056:63:61:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;15087:344::-;15162:7;;:::i;:::-;15216:15;;;:::i;:::-;15182:49;;15247:13;15259:1;15247:13;:::i;:::-;15285:3;15262:1;:21;;15266:17;:10;:17;:::i;:::-;15262:21;:::i;:::-;;;:::i;:::-;;;;;15309:19;;:13;:10;15320:1;15309:13;;:::i;:::-;;:19;;:::i;:::-;:28;;15332:5;15309:28;:::i;:::-;;;:::i;:::-;;15305:89;;15285:3;;;:::i;:::-;15247:13;;15305:89;15365:13;:10;;:13;:10;:13;:::i;:::-;;:::i;:::-;15358:20;:::o;15262:21::-;;;;15415:8;15422:1;15415:8;:::i;:::-;;:::o;2182:33293::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;28046:433::-;28096:4;;:::i;:::-;28143:8;:33;;:31;:8;;;:::i;:::-;:31;:::i;:::-;;:33;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;28046:433;28113:63;28245:15;;:::i;:::-;28187:73;;;28288:1;28276:13;28288:1;28276:13;:::i;:::-;28314:3;28291:1;:21;;28295:17;:10;:17;:::i;:::-;28291:21;:::i;:::-;;;:::i;:::-;;;;;28338:13;;:10;28349:1;28338:13;;:::i;:::-;;:::i;:::-;:52;;;28314:3;28334:104;;28314:3;;;:::i;:::-;28276:13;;28334:104;28418:4;;;;;28411:11;:::o;28338:52::-;28355:10;:13;;:10;28366:1;28355:13;;:::i;:::-;;:::i;:::-;:35;;28371:19;28355:35;:::i;:::-;;;:::i;:::-;;28338:52;;28291:21;;;;;28466:5;28459:12;:::o;28143:33::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2182:33293::-;;;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;2182:33293:61:-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;7574:1022::-;7648:16;;:::i;:::-;7685:19;7677:52;7685:19;;:::i;:::-;7677:52;:::i;:::-;7855:40;7786:24;;:::i;:::-;7855:40;;:::i;:::-;7947:10;7933:32;7947:17;:10;:17;:::i;:::-;7933:32;:::i;:::-;8036:12;8062:36;8006:43;8036:12;8006:43;:::i;:::-;8085:13;;;:::i;:::-;8062:36;;:::i;:::-;8116:13;8128:1;8116:13;:::i;:::-;8156:3;8131:1;:23;;8135:19;:12;:19;:::i;:::-;8131:23;:::i;:::-;;;:::i;:::-;;;;;8180:12;;:15;;:12;8193:1;8180:15;;:::i;:::-;;:::i;:::-;:19;;8198:1;8180:19;:::i;:::-;;;:::i;:::-;;8176:215;;8156:3;;;;;:::i;:::-;8116:13;;8176:215;8220:52;8233:39;8253:1;8256:15;;:12;8269:1;8256:15;;:::i;:::-;;:::i;:::-;8233:39;;:::i;:::-;8220:52;:7;8228:1;;8220:52;;;:::i;:::-;;:::i;:::-;8291:84;:40;:27;8298:19;;:13;:10;8309:1;8298:13;;:::i;:::-;;:19;;:::i;:::-;8291:27;:::i;:::-;:40;:::i;:::-;;8332:10;8291:84;;8332:10;8352:4;8291:84;8359:15;;8344:13;8352:4;8344:13;:::i;:::-;8359:12;8372:1;8359:15;;:::i;:::-;;:::i;:::-;8291:84;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;8156:3;8291:84;;;8176:215;;;;;;;8291:84;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;8131:23::-;;8430:19;8131:23;;;;8430:19;:::i;:::-;;;:::i;:::-;;;:::i;:::-;8536:10;8518:43;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;8574:14;:::o;3268:148:3:-;3315:13;;:::i;:::-;3365:18;3393:16;3400:9;3365:18;;:::i;:::-;3400:9;3393:16;:::i;:::-;;:::o;2182:33293:61:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3207:112;;3310:1;3207:112;;;;;;;3252:47;9602:8;3260:27;;3272:15;3260:27;:::i;:::-;;;:::i;:::-;;;3252:47;:::i;:::-;3310:1;:::i;:::-;3207:112;;:::o;3217:103:6:-;;3282:1;3217:103;;;;;;;;;:::i;:::-;3282:1;:::i;:::-;;;;;:::i;:::-;3217:103::o;2182:33293:61:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;9395:1467::-;;;;;;;;;;;9685:9;;:23;;9698:10;9706:1;9698:10;:::i;:::-;9685:23;:::i;:::-;;;:::i;:::-;;;:48;;;9395:1467;9677:82;;;:::i;:::-;9770:59;9778:9;:20;;9791:7;9778:20;:::i;:::-;;;:::i;:::-;;;9770:59;:::i;:::-;9840:55;9848:6;:10;;9857:1;9848:10;:::i;:::-;;;:::i;:::-;;9840:55;:::i;:::-;9906:59;9914:8;:22;;9926:10;9934:1;9926:10;:::i;:::-;9914:22;:::i;:::-;;;:::i;:::-;;;9906:59;:::i;:::-;10003:30;:17;10010:9;10003:17;:::i;:::-;:30;:::i;:::-;:65;:30;10034:10;;10054:4;10003:65;;10046:13;10054:4;10046:13;:::i;:::-;10061:6;10003:65;10061:6;10003:65;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;10079:51;10003:65;;;;;9395:1467;9978:90;10079:51;:::i;:::-;10168:46;10187:9;10198:7;10207:6;10168:46;;:::i;:::-;10249:7;10225:77;10233:24;10249:7;10233:24;:::i;:::-;:42;;10261:14;10233:42;:::i;:::-;;;:::i;:::-;;;10225:77;:::i;:::-;10473;10368:20;10321:24;10330:14;10321:24;:::i;:::-;10368:14;10385:3;10368:20;;:::i;:::-;10407:9;10399:63;10407:9;:13;;10419:1;10407:13;:::i;:::-;;;:::i;:::-;;10399:63;:::i;:::-;10481:22;;:9;10494;10481:22;:::i;:::-;;;:::i;:::-;;;10473:77;:::i;:::-;10589:24;:15;10596:7;10589:15;:::i;:::-;:24;:::i;:::-;:45;:24;10614:8;;10624:9;10589:45;;10624:9;10589:45;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;10645:52;10589:45;;;;;9395:1467;10563:71;10645:52;:::i;:::-;;;:::i;:::-;;;:::i;:::-;10780:9;10791:7;10800:6;10808:9;10765:53;10808:9;10765:53;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;10831:23;;:::o;10589:45::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10003:65::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9685:48::-;9712:7;9677:82;9712:7;:21;;9723:10;9731:1;9723:10;:::i;:::-;9712:21;:::i;:::-;;;:::i;:::-;;;9685:48;;;;9395:1467;;9653:11;9395:1467;;;;;9634:17;;:::i;:::-;9653:11;;:::i;:::-;;;:::i;:::-;9395:1467;;:::o;4767:178:3:-;4911:5;4767:178;4836:4;;:::i;:::-;4868:12;;;:::i;:::-;4907:2;4911:5;;;:::i;:::-;4934:4;4927:11;:::o;26730:251:61:-;26800:7;;:::i;:::-;26837:1;26825:13;26837:1;26825:13;:::i;:::-;26863:3;26840:1;:21;;26844:17;:10;:17;:::i;:::-;26840:21;:::i;:::-;;;:::i;:::-;;;;;26887:5;:28;;26896:19;;:13;:10;26907:1;26896:13;;:::i;:::-;;:19;;:::i;:::-;26887:28;:::i;:::-;;;:::i;:::-;;26883:79;;26863:3;;;:::i;:::-;26825:13;;26883:79;26931:5;26924:38;26931:5;;26924:23;:13;:38;26931:5;26924:13;:::i;:::-;:23;:::i;:::-;;26956:4;26924:38;26948:13;26956:4;26948:13;:::i;:::-;26924:38;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;26883:79;26917:45;;:::o;26924:38::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;26840:21::-;;;;26730:251::o;3207:112::-;;3310:1;3207:112;;;3252:47;16238:8;3260:27;;3272:15;3260:27;:::i;:::-;;;:::i;:::-;;;3252:47;:::i;:::-;3310:1;:::i;:::-;3207:112;:::o;3217:103:6:-;;3282:1;3217:103;;;;;:::i;:::-;3282:1;:::i;:::-;;;;:::i;:::-;3217:103::o;2281:72:5:-;;2345:1;2281:72;;;;;:::i;:::-;2345:1;:::i;:::-;2281:72;:::o;2182:33293:61:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;16106:1719;;;;;16326:13;;;:::i;:::-;16371:1;16350:22;16371:1;16350:22;:::i;:::-;16412:13;16436:73;16412:13;;:::i;:::-;16444:37;;16465:16;16444:17;:10;:17;:::i;:::-;16465:9;:16;:::i;:::-;16444:37;:::i;:::-;;;:::i;:::-;;16436:73;:::i;:::-;16520:43;16528:17;:10;:17;:::i;:::-;:21;;16548:1;16528:21;:::i;:::-;;;:::i;:::-;;16520:43;:::i;:::-;16581:13;16593:1;16581:13;:::i;:::-;16576:579;16619:3;16596:1;:21;;16600:17;:10;:17;:::i;:::-;16596:21;:::i;:::-;;;:::i;:::-;;;;;16655:10;;:19;;:13;:10;16666:1;16655:13;;:::i;:::-;;:19;;:::i;:::-;16711:5;16704:65;16711:5;16704:26;:13;16711:5;16704:13;:::i;:::-;:26;:::i;:::-;:65;;:26;:65;16758:10;;16731;16751:4;16743:13;16751:4;16743:13;:::i;:::-;16758:7;:10;:::i;:::-;;:::i;:::-;16704:65;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;16619:3;16704:65;16784:54;16704:65;;;;;16619:3;16689:80;16784:54;:::i;:::-;16855:17;;:::i;:::-;16893:5;;:18;;16902:9;;;:::i;:::-;16893:18;:::i;:::-;;;:::i;:::-;;16889:150;;17067:38;17120:23;17087:5;17094:10;;:7;17102:1;17094:10;;:::i;:::-;;:::i;:::-;17067:38;;:::i;:::-;17120:23;;:::i;:::-;16619:3;16581:13;16619:3;:::i;:::-;16581:13;;;16889:150;16973:23;16944:7;;:10;;:7;16952:1;16944:10;;:::i;:::-;;:::i;:::-;16973:23;;:::i;:::-;17015:8;;;16704:65;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;16596:21::-;;;;;;;17167:61;17175:10;:14;;17188:1;17175:14;:::i;:::-;;;:::i;:::-;;17167:61;:::i;:::-;17241:14;;:::i;:::-;17272:11;;:16;;17287:1;17272:16;:::i;:::-;;;:::i;:::-;;17268:357;;;;17314:26;:10;;17327:13;;;:::i;:::-;17314:26;;:::i;:::-;17268:357;;17637:37;17645:6;:11;;17655:1;17645:11;:::i;:::-;;;:::i;:::-;;;17637:37;:::i;:::-;17697:6;17693:2;17697:6;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;17784;17772:19;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;17804:13;:::o;17268:357::-;17582:30;17535:42;17534:79;17402:24;17536:26;17402:24;;:::i;:::-;17373:53;17449:14;17441:69;17449:14;:18;;17466:1;17449:18;:::i;:::-;;;:::i;:::-;;17441:69;:::i;:::-;17549:13;;;:::i;:::-;17536:26;;:::i;:::-;17535:42;:::i;:::-;17582:14;17599:13;;;:::i;:::-;17582:30;;:::i;:::-;17534:79;;:::i;:::-;17268:357;;;16106:1719;;16284:7;16106:1719;;16284:7;;:::i;:::-;;:::i;:::-;16106:1719;:::o;2182:33293::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;23200:874::-;23255:24;;:::i;:::-;23281:27;;;:::i;:::-;23369:24;;;:::i;:::-;23424:17;:10;:17;:::i;:::-;23478:9;23467:21;23478:9;23467:21;:::i;:::-;23526:9;23512:24;23526:9;23512:24;:::i;:::-;23566:1;23554:13;23566:1;23554:13;:::i;:::-;23584:3;23569:1;:13;;23573:9;23569:13;:::i;:::-;;;:::i;:::-;;;;;23584:3;23629:10;23628:32;23629:21;:13;;:10;23640:1;23629:13;;:::i;:::-;;:::i;:::-;:21;23645:5;23629:21;:::i;:::-;;;:::i;:::-;23654:6;23628:32;;:::i;:::-;23698:20;;:13;:10;23709:1;23698:13;;:::i;:::-;;:20;;:::i;:::-;23739:13;;:28;;23755:12;23739:28;:::i;:::-;;;:::i;:::-;;23735:277;;;;23788:44;23804:13;:28;:13;:28;:::i;:::-;23788:44;:10;23799:1;;23788:44;;;:::i;:::-;;:::i;:::-;23851:20;23867:4;23851:20;:10;23862:1;;23851:20;;;:::i;:::-;;:::i;:::-;23735:277;23584:3;:::i;:::-;23554:13;;23735:277;23928:28;:12;23912:44;23928:12;:28;:::i;:::-;23912:44;:10;23923:1;;23912:44;;;:::i;:::-;;:::i;:::-;23975:21;23991:5;23975:21;:10;23986:1;;23975:21;;;:::i;:::-;;:::i;:::-;23735:277;;23569:13;;;;;;24035:31;;:::o;2182:33293::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;24262:284;24513:25;;24262:284;24338:7;;:::i;:::-;24395:24;;;:::i;:::-;24358:61;;24430:65;24438:10;:33;;24451:20;:13;:20;:::i;:::-;24438:33;:::i;:::-;;;:::i;:::-;;24430:65;:::i;:::-;24513:25;:::i;:::-;;:::i;:::-;24506:32;:::o;2182:33293::-;;;;;:::i;:::-;;;;;;;;;:::o;5003:195:3:-;5162:29;5003:195;5162:20;:29;5003:195;5083:7;;:::i;:::-;5127:18;5162:13;5127:18;;:::i;:::-;5162:13;:20;:::i;:::-;:29;:::i;:::-;;:::i;:::-;5155:36;:::o;3207:112:61:-;;3310:1;3207:112;;;3252:47;18968:8;3260:27;;3272:15;3260:27;:::i;:::-;;;:::i;:::-;;;3252:47;:::i;:::-;3310:1;:::i;:::-;3207:112;:::o;3217:103:6:-;;3282:1;3217:103;;;;;:::i;:::-;3282:1;:::i;:::-;;;;:::i;:::-;3217:103::o;2281:72:5:-;;2345:1;2281:72;;;;;:::i;:::-;2345:1;:::i;:::-;2281:72;:::o;2182:33293:61:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;18846:1844;;;;;;19042:2;19034:44;19042:2;:16;;19048:10;19056:1;19048:10;:::i;:::-;19042:16;:::i;:::-;;;:::i;:::-;;;19034:44;:::i;:::-;19089:50;19097:5;:9;;19105:1;19097:9;:::i;:::-;;;:::i;:::-;;19089:50;:::i;:::-;19172:31;:21;19179:13;19187:4;19179:13;:::i;:::-;19172:21;:::i;:::-;:31;:::i;:::-;:58;:31;19204:10;;19224:4;19172:58;19216:13;19224:4;19216:13;:::i;:::-;19172:58;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19241:67;19172:58;;;;;18846:1844;19152:78;19249:18;;19262:5;19249:18;:::i;:::-;;;:::i;:::-;;;19241:67;:::i;:::-;19343:34;:21;19350:13;19358:4;19350:13;:::i;:::-;19343:21;:::i;:::-;:34;:::i;:::-;:68;:34;19378:10;;19398:4;19343:68;;19390:13;19398:4;19390:13;:::i;:::-;19405:5;19343:68;19405:5;19343:68;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19422:47;19343:68;;;;;18846:1844;19321:90;19422:47;:::i;:::-;19528:40;19504:13;;:::i;:::-;19536:15;;19550:1;19536:15;:::i;:::-;;;:::i;:::-;;19528:40;:::i;:::-;19600:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;18846:1844;19581:41;19641:8;19633:59;19641:8;:22;;19653:10;19661:1;19653:10;:::i;:::-;19641:22;:::i;:::-;;;:::i;:::-;;;19633:59;:::i;:::-;19710:13;19722:1;19710:13;:::i;:::-;19748:3;19725:1;:21;;19729:17;:10;:17;:::i;:::-;19725:21;:::i;:::-;;;:::i;:::-;;;;;19791:29;;:26;19811:5;19791:26;:::i;:::-;19818:1;19791:29;;:::i;:::-;;:::i;:::-;19868:10;19861:52;;:37;:27;19868:19;;:13;:10;19879:1;19868:13;;:::i;:::-;;:19;;:::i;:::-;19861:27;:::i;:::-;:37;:::i;:::-;;19907:4;19861:52;19899:13;19907:4;19899:13;:::i;:::-;19861:52;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19835:170;19861:52;;;;;19748:3;19917:12;19861:68;;19917:12;19861:68;:::i;:::-;;;:::i;:::-;;;19835:170;:::i;:::-;20073:19;20036:22;20045:12;20036:22;:::i;:::-;20089:3;;20073:19;;:::i;:::-;20145:10;20138:51;:36;:27;20145:19;;:13;:10;20156:1;20145:13;;:::i;:::-;;:19;;:::i;:::-;20138:27;:::i;:::-;:36;:::i;:::-;;;20175:8;20138:51;;20175:8;20185:3;20138:51;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;20204:69;20138:51;;;;;19748:3;20107:82;20204:69;:::i;:::-;20313:54;:36;:27;20320:19;;:13;:10;20331:1;20320:13;;:::i;:::-;;:19;;:::i;:::-;20313:27;:::i;:::-;:36;:::i;:::-;;;20350:2;20313:54;;20350:2;20354:12;20313:54;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;19748:3;20313:54;20382:49;20313:54;;;;;19748:3;20290:77;20382:49;:::i;:::-;19748:3;:::i;:::-;19710:13;;20313:54;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;20138:51::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19861:52::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19725:21::-;;;;;;20455:75;20463:24;20473:13;20481:4;20473:13;:::i;:::-;20463:24;:::i;:::-;:33;;20491:5;20463:33;:::i;:::-;;;:::i;:::-;;;20455:75;:::i;:::-;20564:5;20549:13;20557:4;20549:13;:::i;:::-;20564:5;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;20651;20638:19;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;20670:12;:::o;19600:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19343:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19172:58::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;18846:1844::-;;19014:7;18846:1844;;19014:7;;:::i;:::-;;:::i;:::-;18846:1844;:::o;20948:518::-;21106:11;20948:518;21013:16;;:::i;:::-;21065:5;21056:15;21065:5;21056:15;:::i;:::-;21106:11;;:::i;:::-;21173:10;21159:32;21173:17;:10;:17;:::i;:::-;21159:32;:::i;:::-;21207:13;21219:1;21207:13;:::i;:::-;21245:3;21222:1;:21;;21226:17;:10;:17;:::i;:::-;21222:21;:::i;:::-;;;:::i;:::-;;;;;21288:52;21295:10;21288:52;:37;:27;21295:19;;:13;:10;21306:1;21295:13;;:::i;:::-;;:19;;:::i;:::-;21288:27;:::i;:::-;:37;:::i;:::-;;21334:4;21288:52;21326:13;21334:4;21326:13;:::i;:::-;21288:52;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;21372:46;21373:28;21245:3;21288:52;21355:63;21288:52;;;;;21245:3;21265:75;21388:13;21373:28;;:::i;:::-;21405:13;;:::i;:::-;21372:46;;:::i;:::-;21355:63;:11;21367:1;;21355:63;;;:::i;:::-;;:::i;:::-;21245:3;:::i;:::-;21207:13;;21288:52;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;21222:21::-;;;;;21440:18;:::o;2182:33293::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;25432:644::-;25485:7;;:::i;:::-;25542:9;25527:36;;:34;:25;25542:9;;;:::i;:::-;25527:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;25505:58;25598:16;25527:36;25591:24;25527:36;;;;;25432:644;25505:58;;:::i;:::-;25598:16;:2;:16;:::i;:::-;;:::i;:::-;25591:24;:::i;:::-;25643:13;;:::i;:::-;25673:6;:11;;25683:1;25673:11;:::i;:::-;;;:::i;:::-;;25669:52;;25752:24;;:::i;:::-;25733:43;25793:4;;:9;;25801:1;25793:9;:::i;:::-;;;:::i;:::-;;25789:50;;25944:13;25999:20;25944:4;25998:31;25944:4;:13;:::i;:::-;26016:3;;;:::i;:::-;25999:20;;:::i;:::-;25998:31;:::i;:::-;26042:26;:::o;25789:50::-;25826:1;;;25819:8;25826:1;25819:8;:::i;:::-;;:::o;25669:52::-;25708:1;;25701:8;25708:1;25701:8;:::i;:::-;;:::o;25527:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2182:33293:61:-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;;;;;4729:8:61;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;4490:980:61;4926:39;4490:980;;;;;;4807:7;4937:28;4490:980;5009:18;4490:980;4765:10;;;:::i;:::-;4807:7;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;4937:28;:::i;:::-;4926:39;;:::i;:::-;4976:10;;4982:4;4976:10;:::i;:::-;;;:::i;:::-;5009:18;:16;:8;;;:::i;:::-;:16;:::i;:::-;;:18;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;4997:30;5193:35;5009:18;5185:69;5009:18;;;;;4490:980;4997:30;;;:::i;:::-;5038;;5054:14;5038:30;:::i;:::-;;;:::i;:::-;5112:62;5120:9;;;:::i;:::-;:23;;5133:10;5141:1;5133:10;:::i;:::-;5120:23;:::i;:::-;;;:::i;:::-;;;5112:62;:::i;:::-;5219:8;5193:35;;:::i;:::-;5185:69;:::i;:::-;5267:23;5289:1;5267:23;:::i;:::-;5308:13;5320:1;5308:13;:::i;:::-;5303:99;5344:3;5323:1;:19;;5327:15;:8;:15;:::i;:::-;5323:19;:::i;:::-;;;:::i;:::-;;;;;5364:26;5344:3;5379:8;:11;;:8;5388:1;5379:11;;:::i;:::-;;:::i;:::-;5364:26;;:::i;:::-;5344:3;;:::i;:::-;5308:13;;;5323:19;;;5414:48;5323:19;;;5422:20;;5437:5;5422:20;:::i;:::-;;;:::i;:::-;;5414:48;:::i;:::-;4490:980::o;5009:18::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4490:980::-;;;;;;;;;:::i;:::-;:::o;2242:153:3:-;2326:63;2242:153;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;10264:128:3:-;;10380:4;10264:128;10364:7;10380:4;;;:::i;:::-;10264:128::o;28708:773:61:-;28765:12;;:::i;:::-;28779:27;;:::i;:::-;28839:10;:17;:10;:17;:::i;:::-;28894:9;28880:24;28894:9;28880:24;:::i;:::-;28932:1;28920:13;28932:1;28920:13;:::i;:::-;28915:523;28950:3;28935:1;:13;;28939:9;28935:13;:::i;:::-;;;:::i;:::-;;;;;28986:19;;:13;:10;28997:1;28986:13;;:::i;:::-;;:19;;:::i;:::-;29043:31;29067:5;29043:31;:::i;:::-;29095:12;;:17;;29111:1;29095:17;:::i;:::-;;;:::i;:::-;;29091:31;;29152:5;29405:21;29152:5;;28950:3;29152:5;29144:27;;29162:9;;;:::i;:::-;29144:27;:::i;:::-;;;:::i;:::-;;29139:252;;;;29209:12;29193:28;29209:12;29193:28;:10;29204:1;;29193:28;;;:::i;:::-;;:::i;:::-;29139:252;29413:13;;:10;29424:1;29413:13;;:::i;:::-;;:::i;:::-;29405:21;;:::i;:::-;28950:3;28920:13;28950:3;:::i;:::-;28920:13;;;29139:252;29350:25;29310:5;29282:49;29310:5;29282:49;:::i;:::-;29350:25;:10;29361:1;;29350:25;;;:::i;:::-;;:::i;:::-;29139:252;;29091:31;29114:8;;;28950:3;29114:8;;;28935:13;;;;;29448:25;;:::o;2182:33293::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::o;11993:477:3:-;;;;12119:25;12129:5;12136:7;12119:25;;:::i;:::-;12158:16;;:37;;12178:17;12158:37;:::i;:::-;;;:::i;:::-;;12154:310;;11993:477;;;;;;:::o;12154:310::-;12215:16;:24;;12234:5;12215:24;:::i;:::-;;;:::i;:::-;;12211:130;;12433:5;12391;;12407:24;12391:5;12398:7;12407:16;:24;:::i;:::-;12433:5;;;;:::i;:::-;12154:310;;;;;;12211:130;12293:7;12266:60;12293:7;;12302:16;12320:5;12266:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6868:300;;6951:4;:18;;6959:10;6967:1;6959:10;:::i;:::-;6951:18;:::i;:::-;;;:::i;:::-;;6947:86;;7046:2;:16;;7052:10;7060:1;7052:10;:::i;:::-;7046:16;:::i;:::-;;;:::i;:::-;;7042:86;;7155:5;7145:4;7151:2;7155:5;;;:::i;:::-;6868:300::o;7042:86::-;7085:32;7106:10;7114:1;7106:10;:::i;:::-;7085:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6947:86;6992:30;7011:10;7019:1;7011:10;:::i;:::-;6992:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;8737:170:1;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;2577:147:3:-;;2709:7;2577:147;2709:7;:::i;:::-;2577:147::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2540:111:6:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:5:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;2182:33293:61:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;6043:1132::-;;;;6140:4;;:::i;:::-;6178:8;:30;;:28;:8;;;:::i;:::-;:28;:::i;:::-;;:30;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;6043:1132;6157:51;6229:8;:30;;:28;:8;;;:::i;:::-;:28;:::i;:::-;;:30;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6221:83;6229:30;;;;;6043:1132;6271:1;6229:44;;6263:10;6271:1;6263:10;:::i;:::-;6229:44;:::i;:::-;;;:::i;:::-;;;6221:83;:::i;:::-;6315:80;6323:14;:7;:14;:::i;:::-;:33;;6341:15;:8;:15;:::i;:::-;6323:33;:::i;:::-;;;:::i;:::-;;6315:80;:::i;:::-;6436:17;;;;:::i;:::-;6471:13;6483:1;6471:13;:::i;:::-;6506:3;6486:1;:18;;6490:14;:7;:14;:::i;:::-;6486:18;:::i;:::-;;;:::i;:::-;;;;;6526:58;6534:10;;:7;6542:1;6534:10;;:::i;:::-;;:::i;:::-;:24;;6548:10;6556:1;6548:10;:::i;:::-;6534:24;:::i;:::-;;;:::i;:::-;;;6526:58;:::i;:::-;6599:42;6607:11;;:8;6616:1;6607:11;;:::i;:::-;;:::i;:::-;:15;;6621:1;6607:15;:::i;:::-;;;:::i;:::-;;6599:42;:::i;:::-;6658:262;:15;:10;:15;:::i;:::-;6732:10;;:7;6740:1;6732:10;;:::i;:::-;;:::i;:::-;6773:8;6692:213;;6773:11;;:8;6782:1;6773:11;;:::i;:::-;;:::i;:::-;6692:213;;6817:1;6692:213;6884:1;6692:213;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;6658:262;:::i;:::-;6952:18;6959:10;;:7;6967:1;6959:10;;:::i;:::-;;:::i;:::-;6952:18;:::i;:::-;6989:15;:5;:15;:::i;:::-;:51;:15;7013:4;7005:13;7013:4;7005:13;:::i;:::-;7028:10;6989:51;7028:10;6989:51;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6506:3;7044:1;6989:56;;7044:1;6989:56;:::i;:::-;;;:::i;:::-;;6985:150;;6506:3;;;;;:::i;:::-;6471:13;;6985:150;7066:13;:5;:13;:::i;:::-;;:53;:13;7088:10;;7101:17;7066:53;;7101:17;7066:53;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6506:3;7066:53;;;6985:150;;;;;7066:53;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;6989:51::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6486:18::-;;;;;;7163:4;7156:11;:::o;6229:30::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6178:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2658:162:0:-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2531:66:5;;;:::i;:::-;2589:1;;:::i;:::-;2531:66::o;2182:33293:61:-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3674:178:5:-;3791:17;3760:21;;:::i;:::-;3791:9;3803:5;3791:1;:9;:17;:::i;:::-;3832:12;;:::i;:::-;3823:22;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3674:178::o;:::-;;;:::i;:::-;:::o;2182:33293:61:-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;5738:84:61:-;;;;:::i;:::-;:::o;2182:33293::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1147:162:5;1237:66;1147:162;:::o;3774:248:0:-;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;2182:33293:61:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29877:1012::-;29955:30;;:28;:8;;;:::i;:::-;:28;:::i;:::-;;:30;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;29877:1012;29934:51;30022:11;;;:::i;:::-;30071:12;;;:::i;:::-;30113:1;30101:13;30113:1;30101:13;:::i;:::-;30139:3;30116:1;:21;;30120:17;:10;:17;:::i;:::-;30116:21;:::i;:::-;;;:::i;:::-;;;;;30179:37;:27;30186:19;;:13;:10;30197:1;30186:13;;:::i;:::-;;:19;;:::i;:::-;30179:27;:::i;:::-;:37;:::i;:::-;:64;:37;30225:4;30217:13;30225:4;30217:13;:::i;:::-;30232:10;30179:64;30232:10;30179:64;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;30139:3;30159:84;30262:29;;30274:17;30262:29;:::i;:::-;;;:::i;:::-;;30258:136;;30139:3;;;;:::i;:::-;30101:13;;30258:136;30312:35;:27;30319:19;;:13;:10;30330:1;30319:13;;:::i;:::-;;:19;;:::i;:::-;30312:27;:::i;:::-;:35;:::i;:::-;;:66;:35;30348:10;;30360:17;30312:66;;30360:17;30312:66;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;30139:3;30312:66;;;30258:136;;;;;;30312:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;30179:64::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;30116:21::-;;;;;30445:13;;:::i;:::-;30499:33;;:31;:8;;;:::i;:::-;:31;:::i;:::-;;:33;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;30543:41;30499:33;30543:31;30499:33;;;;;30096:309;30469:63;30563:10;30543:31;:::i;:::-;:41;:::i;:::-;;30622:6;30643:7;30665:19;30699:13;30707:4;30699:13;:::i;:::-;30735:4;30727:13;30735:4;30727:13;:::i;:::-;30755:9;;;;:::i;:::-;30543:232;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;30096:309;30543:232;;;:::i;:::-;;;:::i;:::-;30862:10;30843:38;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;29877:1012::o;30543:232::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;30499:33::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;29955:30::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2281:72:5:-;;;:::i;:::-;2345:1;;:::i;:::-;2281:72::o;3366:176::-;3484:16;3453:21;;:::i;:::-;3484:9;3496:4;3484:1;:9;:16;:::i;:::-;3522:12;;:::i;:::-;3515:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3366:176::o;:::-;;;:::i;:::-;:::o;1192:159:0:-;1280:65;1192:159;:::o;31767:535:61:-;;;31890:29;;:::i;:::-;31961:10;31947:32;31961:17;:10;:17;:::i;:::-;31947:32;:::i;:::-;31995:13;32007:1;31995:13;:::i;:::-;32033:3;32010:1;:21;;32014:17;:10;:17;:::i;:::-;32010:21;:::i;:::-;;;:::i;:::-;;;;;32033:3;32080:4;32079:37;32080:27;:4;32087:20;;:13;:10;32098:1;32087:13;;:::i;:::-;;:20;;:::i;:::-;32080:27;;:::i;:::-;32079:37;32111:5;32079:37;:::i;:::-;;;:::i;:::-;32135:13;;:10;32146:1;32135:13;;:::i;:::-;;:::i;:::-;:31;;32151:15;32135:31;:::i;:::-;;;:::i;:::-;;32131:121;;32033:3;;;:::i;:::-;31995:13;;32131:121;32205:31;32187:49;32205:15;32223:13;;:10;32234:1;32223:13;;:::i;:::-;;:::i;:::-;32205:31;;:::i;:::-;32187:49;:12;32200:1;;32187:49;;;:::i;:::-;;:::i;:::-;32131:121;;;32010:21;;;;;;32275:19;:::o;31128:306::-;31237:27;;:::i;:::-;31294:1;31282:13;31294:1;31282:13;:::i;:::-;31277:113;31320:3;31297:1;:21;;31301:17;:10;:17;:::i;:::-;31297:21;:::i;:::-;;;:::i;:::-;;;;;31340:38;31320:3;31363:12;:15;;:12;31376:1;31363:15;;:::i;:::-;;:::i;:::-;31340:38;;:::i;:::-;31320:3;;:::i;:::-;31282:13;;;31297:21;;;;31400:26;:::o;2182:33293::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;32584:361;32672:7;;:::i;:::-;32696:10;:23;;:17;:10;32707:5;32696:17;;:::i;:::-;;:23;;:::i;:::-;:36;;32723:9;;;:::i;:::-;32696:36;:::i;:::-;;;:::i;:::-;;32692:60;;32805:10;:23;;:17;32785:57;32805:10;;:17;:::i;:::-;;:23;;:::i;:::-;32785:57;:::i;:::-;32853:55;32861:11;:15;;32875:1;32861:15;:::i;:::-;;;:::i;:::-;;32853:55;:::i;:::-;32919:18;:::o;32692:60::-;32741:11;32734:18;:::o;8996:208:3:-;9066:7;:21;;9077:10;9085:1;9077:10;:::i;:::-;9066:21;:::i;:::-;;;:::i;:::-;;9062:91;;9191:5;9178:1;9170:10;9178:1;9170:10;:::i;:::-;9182:7;9191:5;;;:::i;:::-;8996:208::o;9062:91::-;9110:32;9131:10;9139:1;9131:10;:::i;:::-;9110:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2182:33293:61;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;13160:1263;13265:15;;:::i;:::-;13307:3;13293:17;13307:3;13293:17;:::i;:::-;13345:2;13321:26;13345:2;13321:26;:::i;:::-;13377:1;13365:13;13377:1;13365:13;:::i;:::-;13403:3;13380:1;:21;;13384:17;:10;:17;:::i;:::-;13380:21;:::i;:::-;;;:::i;:::-;;;;;13403:3;13450:10;:22;;:13;:10;13461:1;13450:13;;:::i;:::-;;:22;;:::i;:::-;13493:13;;:10;13504:1;13493:13;;:::i;:::-;;:::i;:::-;:20;;13510:3;13493:20;:::i;:::-;;;:::i;:::-;;;13489:126;;13635:13;;:10;13646:1;13635:13;;:::i;:::-;;:::i;:::-;13631:584;;;;13733:85;13695:10;13669:45;13695:19;:13;;:10;13706:1;13695:13;;:::i;:::-;;:::i;:::-;13711:3;13695:19;;:::i;:::-;13669:45;:22;:13;:10;13680:1;13669:13;;:::i;:::-;;:22;:45;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;13741:42;;:22;;:13;:10;13752:1;13741:13;;:::i;:::-;;:22;;:::i;:::-;13767:16;13741:42;:::i;:::-;;;:::i;:::-;;;13733:85;:::i;:::-;13631:584;14292:22;;:13;:10;14303:1;14292:13;;:::i;:::-;;:22;;:::i;:::-;:38;;14317:13;14292:38;:::i;:::-;;;:::i;:::-;;14288:117;;13631:584;13365:13;13403:3;:::i;:::-;13365:13;;14288:117;14351:38;14376:13;14351:22;:13;:10;14362:1;14351:13;;:::i;:::-;;:22;:38;:::i;:::-;14288:117;;13631:584;13863:22;;:13;:10;13874:1;13863:13;;:::i;:::-;;:22;;:::i;:::-;:44;;13888:19;:13;;:10;13899:1;13888:13;;:::i;:::-;;:::i;:::-;13904:3;13888:19;;:::i;:::-;13863:44;:::i;:::-;;;:::i;:::-;;13859:341;;;;14000:86;13958:10;13932:45;13958:19;:13;;:10;13969:1;13958:13;;:::i;:::-;;:::i;:::-;13974:3;13958:19;;:::i;:::-;13932:45;:22;:13;:10;13943:1;13932:13;;:::i;:::-;;:22;:45;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;14008:42;;:22;;:13;:10;14019:1;14008:13;;:::i;:::-;;:22;;:::i;:::-;14034:16;14008:42;:::i;:::-;;;:::i;:::-;;;14000:86;:::i;:::-;13859:341;13631:584;;13859:341;14161:10;14135:45;14161:19;:13;;:10;14172:1;14161:13;;:::i;:::-;;:::i;:::-;14177:3;14161:19;;:::i;:::-;14135:45;:22;:13;:10;14146:1;14135:13;;:::i;:::-;;:22;:45;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;13859:341;;13489:126;13559:13;13534:38;13559:13;13534:22;:13;:10;13545:1;13534:13;;:::i;:::-;;:22;:38;:::i;:::-;13591:8;;13380:21;;;;;;13160:1263::o;35275:197::-;35319:13;35331:1;35319:13;:::i;:::-;35357:3;35334:1;:21;;35338:17;:10;:17;:::i;:::-;35334:21;:::i;:::-;;;:::i;:::-;;;;;35401:52;35408:10;35401:52;:37;:27;35408:19;;:13;:10;35419:1;35408:13;;:::i;:::-;;:19;;:::i;:::-;35401:27;:::i;:::-;:37;:::i;:::-;;35447:4;35401:52;35439:13;35447:4;35439:13;:::i;:::-;35401:52;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;35357:3;35401:52;35377:76;35401:52;;;;;35357:3;35377:10;:21;:13;:10;35388:1;35377:13;;:::i;:::-;;:21;:76;:::i;:::-;35357:3;:::i;:::-;35319:13;;35401:52;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;35334:21::-;;35275:197::o;2182:33293::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1812:36:6:-;1847:1;;;:::i;:::-;1812:36;:::o;3326:384::-;3410:28;;:::i;:::-;3526:9;;:1;:9;;:::i;:::-;:20;;3539:7;;:::i;:::-;3526:20;:::i;:::-;;;:::i;:::-;;3522:88;;3684:19;3696:7;3684:9;3696:7;;:::i;:::-;3684:1;:9;:19;:::i;:::-;3326:384::o;3522:88::-;3569:30;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2182:33293:61;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1766:40:6:-;1805:1;;;:::i;:::-;1766:40;:::o;3716:283::-;3969:23;3799:28;;:::i;:::-;3969:9;3981:11;;:::i;:::-;3969:1;:9;:23;:::i;:::-;3716:283::o;21678:227:61:-;21735:7;;:::i;:::-;21774:8;:21;;:19;:8;;;:::i;:::-;:19;:::i;:::-;;:21;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;21678:227;21755:40;21826:8;:22;;:20;:8;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;21866:31;21826:22;21867:17;21826:22;;;;;21678:227;21806:42;21867:6;:17;:::i;:::-;21866:31;:::i;:::-;21859:38;:::o;21826:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;21774:21::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2905:128:5:-;2970:8;;:::i;:::-;2966:61;;2905:128::o;2966:61::-;3001:15;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;33707:176:61;;33833:42;33707:176;33794:19;;:::i;:::-;33846:9;33857;;;;:::i;:::-;33868:6;33833:42;;:::i;:::-;33826:49;:::o;9522:206:3:-;;9592:7;:21;;9603:10;9611:1;9603:10;:::i;:::-;9592:21;:::i;:::-;;;:::i;:::-;;9588:89;;9715:5;9694:7;9711:1;9703:10;9711:1;9703:10;:::i;:::-;9715:5;;;:::i;:::-;9522:206::o;9588:89::-;9636:30;9655:10;9663:1;9655:10;:::i;:::-;9636:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11224:487;;;11357:18;;:::i;:::-;11389:5;:19;;11398:10;11406:1;11398:10;:::i;:::-;11389:19;:::i;:::-;;;:::i;:::-;;11385:89;;11487:7;:21;;11498:10;11506:1;11498:10;:::i;:::-;11487:21;:::i;:::-;;;:::i;:::-;;11483:90;;11582:37;11614:5;11582:29;:20;:13;11614:5;11582:1;:13;11596:5;11582:20;;:::i;:::-;11603:7;11582:29;;:::i;:::-;:37;:::i;:::-;11629:76;;11224:487;;;;:::o;11629:76::-;11679:7;11688:5;11663:31;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;11629:76;;;;;11483:90;11531:31;11551:10;11559:1;11551:10;:::i;:::-;11531:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11385:89;11431:32;11452:10;11460:1;11452:10;:::i;:::-;11431:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2182:33293:61;;;;;;:::i;:::-;;:::o;7483:1170:3:-;;;;7593:18;;:::i;:::-;7625:4;:18;;7633:10;7641:1;7633:10;:::i;:::-;7625:18;:::i;:::-;;;:::i;:::-;;7621:546;;;;7761:23;7779:5;7761:23;:14;:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;7621:546;8181:2;:16;;8187:10;8195:1;8187:10;:::i;:::-;8181:16;:::i;:::-;;;:::i;:::-;;8177:429;;;;8344:23;8362:5;8344:23;:14;8362:5;8344:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;8636:2;8640:5;8621:25;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;7483:1170::o;8177:429::-;8557:24;8576:5;8557:24;:15;:11;8576:5;8557:1;:11;8569:2;8557:15;;:::i;:::-;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;;7621:546;7837:17;;:11;:1;:11;7849:4;7837:17;;:::i;:::-;;:::i;:::-;7872:11;:19;;7886:5;7872:19;:::i;:::-;;;:::i;:::-;;7868:115;;8123:19;8103:39;8123:11;8137:5;8123:19;;:::i;:::-;8103:17;:11;:1;:11;8115:4;8103:17;;:::i;:::-;:39;:::i;:::-;7621:546;;7868:115;7943:4;7918:50;7943:4;;7949:11;7962:5;7918:50;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;2182:33293:61:-;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;2730:216:3:-;2920:9;:19;2730:216;2895:15;2867:18;;:::i;:::-;2905:5;2895:7;:1;:7;:15;:::i;:::-;2920:1;:9;:19;:::i;:::-;2730:216::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2657:183:6:-;2810:23;2772:28;;:::i;:::-;2810:9;2822:11;;:::i;:::-;2810:1;:9;:23;:::i;:::-;2657:183::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:5:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;3105:126::-;3167:9;3168:8;;:::i;:::-;3167:9;;:::i;:::-;3163:62;;3105:126::o;3163:62::-;3199:15;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1957:138:9;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;2182:33293:61:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;33246:160:61;33358:40;33246:160;33331:7;;:::i;:::-;33371:9;;;;:::i;:::-;33382:7;33391:6;33358:40;;:::i;:::-;33351:47;:::o;2251:183:6:-;2355:73;2251:183;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2182:33293:61;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;4625:582::-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"7113400","executionCost":"infinite","totalCost":"infinite"},"external":{"ONE()":"3412","UPGRADE_INTERFACE_VERSION()":"infinite","allowance(address,address)":"infinite","approve(address,uint256)":"infinite","assetInfos(uint256)":"infinite","assetLiquidity(uint256)":"infinite","balanceOf(address)":"infinite","baseAsset()":"3476","calculateAssetShare(uint256)":"infinite","decimals()":"infinite","deposit(address,uint256[],uint256)":"infinite","getAmountOut(address,address,uint256)":"infinite","getAssetReserve(address)":"infinite","getAssets()":"infinite","getDeviationForToken(address)":"infinite","getDeviations()":"infinite","getReserves()":"infinite","getSlippage(address)":"infinite","getSlippageParams()":"infinite","getTokenWeight(address)":"infinite","getWeights()":"infinite","initialize(string,string,address[],uint256[],address)":"infinite","isRebalanceNeeded()":"infinite","liquidity()":"infinite","name()":"infinite","owner()":"3302","pause()":"infinite","paused()":"3052","proxiableUUID()":"infinite","quotePotentialSwap(address,address,uint256)":"infinite","rebalance()":"infinite","rebalanceAndDeposit(address)":"infinite","registry()":"infinite","reinitialize(string,string,address[],uint256[],address,uint64)":"infinite","renounceOwnership()":"infinite","reserves(address)":"infinite","swap(address,address,uint256,uint256,address,uint256)":"infinite","symbol()":"infinite","totalSupply()":"2755","totalValuation()":"infinite","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"infinite","unitPrice()":"infinite","unpause()":"infinite","upgradeToAndCall(address,bytes)":"infinite","withdraw(uint256,address,uint256)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_calculateAmountsToAdd(uint256,uint256[] memory)":"infinite","_calculateLiquidity(uint256,uint256)":"infinite","_calculateTotalAddedLiquidity(uint256[] memory)":"infinite","_computeTotalValuation()":"infinite","_convertBaseToToken(address,uint256)":"infinite","_convertTokenToBase(address,uint256)":"infinite","_haircut(uint256)":"infinite","_performRebalanceIfNeeded()":"infinite","_update()":"infinite","_updateSlippage()":"infinite","generateTokenName(address[] memory)":"infinite","generateTokenSymbol(address[] memory)":"infinite","initializeAssets(address[] memory,uint256[] memory)":"infinite"}},"methodIdentifiers":{"ONE()":"c2ee3a08","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","assetInfos(uint256)":"d14ef46d","assetLiquidity(uint256)":"cf8fa764","balanceOf(address)":"70a08231","baseAsset()":"cdf456e1","calculateAssetShare(uint256)":"e64ebdd2","decimals()":"313ce567","deposit(address,uint256[],uint256)":"b3bf9d32","getAmountOut(address,address,uint256)":"4aa06652","getAssetReserve(address)":"b2b55d70","getAssets()":"67e4ac2c","getDeviationForToken(address)":"89b3179b","getDeviations()":"b7110e13","getReserves()":"0902f1ac","getSlippage(address)":"12899068","getSlippageParams()":"7ff1c179","getTokenWeight(address)":"250aa683","getWeights()":"22acb867","initialize(string,string,address[],uint256[],address)":"34de9b8d","isRebalanceNeeded()":"8a77c8dc","liquidity()":"1a686502","name()":"06fdde03","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","quotePotentialSwap(address,address,uint256)":"43c2e2f5","rebalance()":"7d7c2a1c","rebalanceAndDeposit(address)":"8de30f30","registry()":"7b103999","reinitialize(string,string,address[],uint256[],address,uint64)":"fb33a6c0","renounceOwnership()":"715018a6","reserves(address)":"d66bd524","swap(address,address,uint256,uint256,address,uint256)":"9908fc8b","symbol()":"95d89b41","totalSupply()":"18160ddd","totalValuation()":"295b9300","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unitPrice()":"e73faa2d","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(uint256,address,uint256)":"e63697c8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"RebalancePerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsToAdd\",\"type\":\"uint256[]\"}],\"name\":\"WeightsRebalanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ONE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"assetInfos\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"slippage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserve\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"}],\"name\":\"assetLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"}],\"name\":\"calculateAssetShare\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getAssetReserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDeviationForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeviations\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"directions\",\"type\":\"bool[]\"},{\"internalType\":\"uint256[]\",\"name\":\"deviations\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getSlippage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlippageParams\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWeights\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"_assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_weights\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isRebalanceNeeded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"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\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"quotePotentialSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"rebalanceAndDeposit\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"_assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_weights\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"reserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalVal\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"valuations\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"assetLiquidity(uint256)\":{\"details\":\"Returns the liquidity of a specific asset in the pool.\",\"params\":{\"assetIndex\":\"The index of the asset.\"},\"returns\":{\"_0\":\"The liquidity of the asset.\"}},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"calculateAssetShare(uint256)\":{\"details\":\"Calculates the asset shares based on the provided share amount.\",\"params\":{\"share\":\"The share amount to calculate the asset shares for.\"},\"returns\":{\"_0\":\"An array of asset shares corresponding to each asset in the pool.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"deposit(address,uint256[],uint256)\":{\"details\":\"Mints new tokens and adds them to the specified address.\",\"params\":{\"to\":\"The address to which the new tokens will be minted.\"},\"returns\":{\"_0\":\"The amount of tokens minted.\"}},\"getAmountOut(address,address,uint256)\":{\"details\":\"Calculates the amount of `toToken` that will be received when swapping `fromToken` for `toToken`.\",\"params\":{\"amount\":\"The amount of `fromToken` being swapped.\",\"fromToken\":\"The address of the token being swapped from.\",\"toToken\":\"The address of the token being swapped to.\"},\"returns\":{\"_0\":\"The amount of `toToken` that will be received.\"}},\"getAssetReserve(address)\":{\"details\":\"Returns the reserve amount of the specified asset.\",\"params\":{\"asset\":\"The address of the asset.\"},\"returns\":{\"_0\":\"The reserve amount of the asset.\"}},\"getAssets()\":{\"details\":\"Retrieves the list of assets in the pool.\",\"returns\":{\"_0\":\"An array of addresses representing the assets.\"}},\"getDeviationForToken(address)\":{\"details\":\"Returns the deviation for a token in the pool.\",\"params\":{\"token\":\"The address of the token.\"},\"returns\":{\"_0\":\"The deviation for the token.\"}},\"getDeviations()\":{\"details\":\"Returns the deviation between the current weights and target weights of the assets in the pool.\",\"returns\":{\"directions\":\"An array of boolean values indicating whether the current weight is higher (true) or lower (false) than the target weight.\"}},\"getReserves()\":{\"details\":\"Returns an array of reserves for each asset in the pool.\",\"returns\":{\"_0\":\"An array of reserves.\"}},\"getSlippage(address)\":{\"details\":\"Restituisce lo slippage attuale per un dato token.\",\"params\":{\"token\":\"The address of the token.\"},\"returns\":{\"_0\":\"Lo slippage attuale per il token.\"}},\"getSlippageParams()\":{\"details\":\"Returns an array of slippage parameters for each token in the pool.\",\"returns\":{\"_0\":\"An array of slippage parameters.\"}},\"getTokenWeight(address)\":{\"details\":\"Returns the weight of a token in the pool.\",\"params\":{\"token\":\"The address of the token.\"},\"returns\":{\"_0\":\"The weight of the token.\"}},\"getWeights()\":{\"details\":\"Retrieves the list of weights associated with the assets in the pool.\",\"returns\":{\"_0\":\"An array of uint256 values representing the weights.\"}},\"initialize(string,string,address[],uint256[],address)\":{\"details\":\"Initializes the BaluniV1Pool contract.\",\"params\":{\"_assets\":\"The array of asset addresses.\",\"_registry\":\"The address of the BaluniV1Registry contract.\",\"_weights\":\"The array of asset weights.\"}},\"isRebalanceNeeded()\":{\"details\":\"Checks if rebalancing is needed for the pool.\",\"returns\":{\"_0\":\"A boolean value indicating whether rebalancing is needed or not.\"}},\"liquidity()\":{\"details\":\"Returns the total liquidity of the pool.\",\"returns\":{\"_0\":\"The total liquidity of the pool.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"pause pool, restricting certain operations\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"quotePotentialSwap(address,address,uint256)\":{\"details\":\"Calculates the potential amount of `toToken` that can be obtained by swapping `amount` of `fromToken`. This function takes into account the slippage and token weights to provide an accurate estimation.\",\"params\":{\"amount\":\"The amount of `fromToken` being swapped.\",\"fromToken\":\"The address of the token being swapped from.\",\"toToken\":\"The address of the token being swapped to.\"},\"returns\":{\"_0\":\"The potential amount of `toToken` that can be obtained.\"}},\"rebalance()\":{\"details\":\"Performs rebalance\"},\"rebalanceAndDeposit(address)\":{\"details\":\"Rebalances the weights of the pool by calculating the amounts to add for each token, transferring the calculated amounts from the user to the pool, minting the total added liquidity, updating the reserves, and emitting an event to indicate the rebalancing of weights.\",\"params\":{\"receiver\":\"The address to receive the minted liquidity tokens.\"}},\"renounceOwnership()\":{\"details\":\"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.\"},\"swap(address,address,uint256,uint256,address,uint256)\":{\"details\":\"Swaps `amount` of `fromToken` to `toToken` and transfers the received amount to `receiver`. Requirements: - `fromToken` and `toToken` must be different tokens. - `amount` must be greater than zero. - Sufficient liquidity of `toToken` must be available in the contract. Emits a `Swap` event with the details of the swap. Updates the reserves after the swap.\",\"params\":{\"amount\":\"The amount of `fromToken` to swap.\",\"fromToken\":\"The address of the token to swap from.\",\"receiver\":\"The address to receive the swapped tokens.\",\"toToken\":\"The address of the token to swap to.\"},\"returns\":{\"amountOut\":\"The amount of `toToken` received after the swap.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"totalValuation()\":{\"details\":\"Computes the total valuation of the pool and returns the total valuation and an array of individual valuations.\",\"returns\":{\"totalVal\":\"The total valuation of the pool.\",\"valuations\":\"An array of individual valuations.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unitPrice()\":{\"details\":\"Returns the unit price of the pool.\",\"returns\":{\"_0\":\"The unit price of the pool.\"}},\"unpause()\":{\"details\":\"unpause pool, enabling certain operations\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdraw(uint256,address,uint256)\":{\"details\":\"Burns the pool tokens and transfers the underlying assets to the specified address.\",\"params\":{\"to\":\"The address to transfer the underlying assets to.\"}}},\"stateVariables\":{\"reserves\":{\"details\":\"A mapping that stores the reserves for each address.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"withdraw(uint256,address,uint256)\":{\"notice\":\"This function can only be called by the periphery contract.The pool tokens must have a balance greater than 0.The total supply of pool tokens must be greater than 0.The function calculates the amounts of each underlying asset to transfer based on the share of pool tokens being burned.A fee is deducted from the share of pool tokens being burned and transferred to the treasury address.The function checks if the pool has sufficient liquidity before performing any transfers.If any transfer fails, the function reverts the entire operation.After the transfers, the function updates the reserves of the pool.Emits a `Burn` event with the address and share of pool tokens burned.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pools/BaluniV1Pool.sol\":\"BaluniV1Pool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\\n    struct PausableStorage {\\n        bool _paused;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Pausable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\\n\\n    function _getPausableStorage() private pure returns (PausableStorage storage $) {\\n        assembly {\\n            $.slot := PausableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Emitted when the pause is triggered by `account`.\\n     */\\n    event Paused(address account);\\n\\n    /**\\n     * @dev Emitted when the pause is lifted by `account`.\\n     */\\n    event Unpaused(address account);\\n\\n    /**\\n     * @dev The operation failed because the contract is paused.\\n     */\\n    error EnforcedPause();\\n\\n    /**\\n     * @dev The operation failed because the contract is not paused.\\n     */\\n    error ExpectedPause();\\n\\n    /**\\n     * @dev Initializes the contract in unpaused state.\\n     */\\n    function __Pausable_init() internal onlyInitializing {\\n        __Pausable_init_unchained();\\n    }\\n\\n    function __Pausable_init_unchained() internal onlyInitializing {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is not paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    modifier whenNotPaused() {\\n        _requireNotPaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    modifier whenPaused() {\\n        _requirePaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns true if the contract is paused, and false otherwise.\\n     */\\n    function paused() public view virtual returns (bool) {\\n        PausableStorage storage $ = _getPausableStorage();\\n        return $._paused;\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is paused.\\n     */\\n    function _requireNotPaused() internal view virtual {\\n        if (paused()) {\\n            revert EnforcedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is not paused.\\n     */\\n    function _requirePaused() internal view virtual {\\n        if (!paused()) {\\n            revert ExpectedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Triggers stopped state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    function _pause() internal virtual whenNotPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = true;\\n        emit Paused(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns to normal state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    function _unpause() internal virtual whenPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n        emit Unpaused(_msgSender());\\n    }\\n}\\n\",\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Pool\\r\\n * @dev Interface for the BaluniV1Pool contract\\r\\n */\\r\\ninterface IBaluniV1Pool {\\r\\n    struct AssetInfo {\\r\\n        address asset;\\r\\n        uint256 weight;\\r\\n        uint256 slippage;\\r\\n        uint256 reserve;\\r\\n    }\\r\\n\\r\\n    event WeightsRebalanced(address indexed user, uint256[] amountsToAdd);\\r\\n    event Swap(address indexed user, address fromToken, address toToken, uint256 amountIn, uint256 amountOut);\\r\\n    event Withdraw(address indexed user, uint256 amount);\\r\\n    event Deposit(address indexed user, uint256 amount);\\r\\n    event RebalancePerformed(address indexed user, address[] assets);\\r\\n\\r\\n    function rebalanceAndDeposit(address receiver) external returns (uint256[] memory);\\r\\n\\r\\n    function swap(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount,\\r\\n        uint256 minAmount,\\r\\n        address receiver,\\r\\n        uint256 deadline\\r\\n    ) external returns (uint256 amountOut, uint256 fee);\\r\\n\\r\\n    function quotePotentialSwap(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function getSlippage(address token) external view returns (uint256);\\r\\n\\r\\n    function getTokenWeight(address token) external view returns (uint256);\\r\\n\\r\\n    function getDeviationForToken(address token) external view returns (uint256);\\r\\n\\r\\n    function getSlippageParams() external view returns (uint256[] memory);\\r\\n\\r\\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\\r\\n\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function rebalance() external;\\r\\n\\r\\n    function getDeviations() external view returns (bool[] memory directions, uint256[] memory deviations);\\r\\n\\r\\n    function assetLiquidity(uint256 assetIndex) external view returns (uint256);\\r\\n\\r\\n    function totalValuation() external view returns (uint256 totalVal, uint256[] memory valuations);\\r\\n\\r\\n    function liquidity() external view returns (uint256);\\r\\n\\r\\n    function unitPrice() external view returns (uint256);\\r\\n\\r\\n    function getReserves() external view returns (uint256[] memory);\\r\\n\\r\\n    function getAssetReserve(address asset) external view returns (uint256);\\r\\n\\r\\n    function getAssets() external view returns (address[] memory);\\r\\n\\r\\n    function getWeights() external view returns (uint256[] memory);\\r\\n\\r\\n    function isRebalanceNeeded() external view returns (bool);\\r\\n}\\r\\n\",\"keccak256\":\"0xee1a088737643c523dd1651cb6b00182d35a9365426a04493680682b38ea16d6\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1PoolPeriphery.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1PoolPeriphery\\r\\n * @dev Interface for the BaluniV1PoolPeriphery contract\\r\\n */\\r\\ninterface IBaluniV1PoolPeriphery {\\r\\n    function initialize(address _registry) external;\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) external;\\r\\n\\r\\n    function swapTokenForToken(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minAmount,\\r\\n        address from,\\r\\n        address to,\\r\\n        uint deadline\\r\\n    ) external returns (uint256 amountOut, uint256 haircut);\\r\\n\\r\\n    function swapTokensForTokens(\\r\\n        address[] calldata tokenPath,\\r\\n        address[] calldata poolPath,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minimumToAmount,\\r\\n        address to,\\r\\n        uint256 deadline\\r\\n    ) external returns (uint256 amountOut, uint256 haircut);\\r\\n\\r\\n    function batchSwap(\\r\\n        address[] calldata fromTokens,\\r\\n        address[] calldata toTokens,\\r\\n        uint256[] calldata amounts,\\r\\n        address[] calldata receivers\\r\\n    ) external returns (uint256[] memory);\\r\\n\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function getPoolsContainingToken(address token) external view returns (address[] memory);\\r\\n\\r\\n    function getVersion() external view returns (uint64);\\r\\n}\\r\\n\",\"keccak256\":\"0xb2419b790831f69d82667bc962bb0d13d94014f47a99024153fcb0455e6e70b4\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Rebalancer.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Rebalancer {\\r\\n    struct RebalanceVars {\\r\\n        uint256 length;\\r\\n        uint256 totalValue;\\r\\n        uint256 finalUsdBalance;\\r\\n        uint256 overweightVaultsLength;\\r\\n        uint256 underweightVaultsLength;\\r\\n        uint256 totalActiveWeight;\\r\\n        uint256 amountOut;\\r\\n        uint256[] overweightVaults;\\r\\n        uint256[] overweightAmounts;\\r\\n        uint256[] underweightVaults;\\r\\n        uint256[] underweightAmounts;\\r\\n        uint256[] balances;\\r\\n    }\\r\\n\\r\\n    // Functions\\r\\n    function rebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address receiver,\\r\\n        address baseAsset\\r\\n    ) external;\\r\\n\\r\\n    function checkRebalance(\\r\\n        uint256[] memory balances,\\r\\n        address[] calldata assets,\\r\\n        uint256[] calldata weights,\\r\\n        uint256 limit,\\r\\n        address sender,\\r\\n        address baseAsset\\r\\n    ) external view returns (RebalanceVars memory);\\r\\n\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x61c44c9208ab5c5638160706c4737e8032440e73054a90378d0b65559653d57a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/pools/BaluniV1Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1PoolPeriphery.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Rebalancer.sol';\\r\\nimport '../interfaces/IBaluniV1Oracle.sol';\\r\\nimport '../interfaces/IBaluniV1Pool.sol';\\r\\n\\r\\ncontract BaluniV1Pool is\\r\\n    Initializable,\\r\\n    UUPSUpgradeable,\\r\\n    OwnableUpgradeable,\\r\\n    ERC20Upgradeable,\\r\\n    ReentrancyGuardUpgradeable,\\r\\n    PausableUpgradeable,\\r\\n    IBaluniV1Pool\\r\\n{\\r\\n    // An array to store information about different assets in the pool\\r\\n    AssetInfo[] public assetInfos;\\r\\n\\r\\n    // A constant value representing 1\\r\\n    uint256 public ONE;\\r\\n\\r\\n    // The address of the base asset in the pool\\r\\n    address public baseAsset;\\r\\n\\r\\n    // A scaling factor used in calculations\\r\\n    uint256 private scalingFactor;\\r\\n\\r\\n    // The registry contract used in the BaluniV1 system\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    /**\\r\\n     * @dev A mapping that stores the reserves for each address.\\r\\n     */\\r\\n    mapping(address => uint256) public reserves;\\r\\n\\r\\n    /**\\r\\n     * @dev Modifier to ensure that the provided deadline is not expired.\\r\\n     * @param deadline The deadline timestamp to check against the current block timestamp.\\r\\n     * @dev Throws an error if the deadline is expired.\\r\\n     */\\r\\n    modifier ensure(uint256 deadline) {\\r\\n        require(deadline >= block.timestamp, 'EXPIRED');\\r\\n        _;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Initializes the BaluniV1Pool contract.\\r\\n     * @param _assets The array of asset addresses.\\r\\n     * @param _weights The array of asset weights.\\r\\n     * @param _registry The address of the BaluniV1Registry contract.\\r\\n     */\\r\\n    function initialize(\\r\\n        string memory _name,\\r\\n        string memory _symbol,\\r\\n        address[] memory _assets,\\r\\n        uint256[] memory _weights,\\r\\n        address _registry\\r\\n    ) external initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ERC20_init(_name, _symbol);\\r\\n        __UUPSUpgradeable_init();\\r\\n        __ReentrancyGuard_init();\\r\\n        __Pausable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        ONE = 1e18;\\r\\n        baseAsset = registry.getUSDC();\\r\\n        scalingFactor = 10 ** (18 - 6);\\r\\n\\r\\n        require(baseAsset != address(0), 'Invalid base asset address');\\r\\n        require(initializeAssets(_assets, _weights), 'Initialization failed');\\r\\n\\r\\n        uint256 totalWeight = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < _weights.length; i++) {\\r\\n            totalWeight += _weights[i];\\r\\n        }\\r\\n\\r\\n        require(totalWeight == 10000, 'Invalid weights');\\r\\n    }\\r\\n\\r\\n    function reinitialize(\\r\\n        string memory _name,\\r\\n        string memory _symbol,\\r\\n        address[] memory _assets,\\r\\n        uint256[] memory _weights,\\r\\n        address _registry,\\r\\n        uint64 _version\\r\\n    ) external reinitializer(_version) {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ERC20_init(_name, _symbol);\\r\\n        __UUPSUpgradeable_init();\\r\\n        __ReentrancyGuard_init();\\r\\n        __Pausable_init();\\r\\n\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n        ONE = 1e18;\\r\\n        baseAsset = registry.getUSDC();\\r\\n        scalingFactor = 10 ** (18 - 6);\\r\\n\\r\\n        // reset assetInfos\\r\\n\\r\\n        require(baseAsset != address(0), 'Invalid base asset address');\\r\\n        require(initializeAssets(_assets, _weights), 'Initialization failed');\\r\\n\\r\\n        uint256 totalWeight = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < _weights.length; i++) {\\r\\n            totalWeight += _weights[i];\\r\\n        }\\r\\n\\r\\n        require(totalWeight == 10000, 'Invalid weights');\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\\r\\n     * @param newImplementation The address of the new implementation contract.\\r\\n     * @notice This function can only be called by the contract owner.\\r\\n     */\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    /**\\r\\n     * @dev Initializes the assets and their weights for the pool.\\r\\n     * @param _assets The array of asset addresses.\\r\\n     * @param _weights The array of weights corresponding to each asset.\\r\\n     */\\r\\n    function initializeAssets(address[] memory _assets, uint256[] memory _weights) internal returns (bool) {\\r\\n        address rebalancer = registry.getBaluniRebalancer();\\r\\n\\r\\n        require(registry.getBaluniRebalancer() != address(0), 'Invalid rebalancer address');\\r\\n        require(_assets.length == _weights.length, 'Assets and weights length mismatch');\\r\\n        // reset asset Infos\\r\\n        delete assetInfos;\\r\\n\\r\\n        for (uint256 i = 0; i < _assets.length; i++) {\\r\\n            require(_assets[i] != address(0), 'Invalid asset address');\\r\\n            require(_weights[i] > 0, 'Invalid weight');\\r\\n\\r\\n            assetInfos.push(\\r\\n                AssetInfo({\\r\\n                    asset: _assets[i],\\r\\n                    weight: _weights[i],\\r\\n                    slippage: 0, // Imposta slippage iniziale a 1%\\r\\n                    reserve: 0\\r\\n                })\\r\\n            );\\r\\n\\r\\n            IERC20 asset = IERC20(_assets[i]);\\r\\n            if (asset.allowance(address(this), address(rebalancer)) == 0) {\\r\\n                asset.approve(address(rebalancer), type(uint256).max);\\r\\n            }\\r\\n        }\\r\\n        return true;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Rebalances the weights of the pool by calculating the amounts to add for each token,\\r\\n     * transferring the calculated amounts from the user to the pool, minting the total added liquidity,\\r\\n     * updating the reserves, and emitting an event to indicate the rebalancing of weights.\\r\\n     * @param receiver The address to receive the minted liquidity tokens.\\r\\n     */\\r\\n    function rebalanceAndDeposit(address receiver) external override returns (uint256[] memory) {\\r\\n        require(isRebalanceNeeded(), 'Rebalance not needed');\\r\\n        (uint256 tVal, uint256[] memory valuations) = _computeTotalValuation();\\r\\n\\r\\n        uint256[] memory amountsToAdd = _calculateAmountsToAdd(tVal, valuations);\\r\\n        uint256[] memory amounts = new uint256[](assetInfos.length);\\r\\n        uint256 totalAddedLiquidity = _calculateTotalAddedLiquidity(amountsToAdd);\\r\\n\\r\\n        totalAddedLiquidity *= scalingFactor;\\r\\n\\r\\n        for (uint256 i = 0; i < amountsToAdd.length; i++) {\\r\\n            if (amountsToAdd[i] > 0) {\\r\\n                amounts[i] = _calculateLiquidity(i, amountsToAdd[i]);\\r\\n                IERC20(assetInfos[i].asset).transferFrom(msg.sender, address(this), amountsToAdd[i]);\\r\\n            }\\r\\n        }\\r\\n\\r\\n        _mint(receiver, totalAddedLiquidity);\\r\\n\\r\\n        _updateSlippage();\\r\\n        _update();\\r\\n\\r\\n        emit WeightsRebalanced(msg.sender, amountsToAdd);\\r\\n\\r\\n        return amounts;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Swaps `amount` of `fromToken` to `toToken` and transfers the received amount to `receiver`.\\r\\n     *\\r\\n     * Requirements:\\r\\n     * - `fromToken` and `toToken` must be different tokens.\\r\\n     * - `amount` must be greater than zero.\\r\\n     * - Sufficient liquidity of `toToken` must be available in the contract.\\r\\n     *\\r\\n     * Emits a `Swap` event with the details of the swap.\\r\\n     *\\r\\n     * Updates the reserves after the swap.\\r\\n     *\\r\\n     * @param fromToken The address of the token to swap from.\\r\\n     * @param toToken The address of the token to swap to.\\r\\n     * @param amount The amount of `fromToken` to swap.\\r\\n     * @param receiver The address to receive the swapped tokens.\\r\\n     * @return amountOut The amount of `toToken` received after the swap.\\r\\n     */\\r\\n    function swap(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount,\\r\\n        uint256 minAmount,\\r\\n        address receiver,\\r\\n        uint256 deadline\\r\\n    ) external override ensure(deadline) nonReentrant returns (uint256 amountOut, uint256 fee) {\\r\\n        require(fromToken != address(0) && toToken != address(0), 'Invalid token address');\\r\\n        require(fromToken != toToken, 'Cannot swap the same token');\\r\\n        require(amount > 0, 'Amount must be greater than zero');\\r\\n        require(receiver != address(0), 'Invalid receiver address');\\r\\n\\r\\n        bool transferInSuccess = IERC20(fromToken).transferFrom(msg.sender, address(this), amount);\\r\\n        require(transferInSuccess, 'Token transfer failed');\\r\\n\\r\\n        uint256 receivedAmount = quotePotentialSwap(fromToken, toToken, amount);\\r\\n        require(getAssetReserve(toToken) >= receivedAmount, 'Insufficient Liquidity');\\r\\n\\r\\n        fee = _haircut(receivedAmount);\\r\\n        amountOut = receivedAmount - fee;\\r\\n        require(amountOut > 0, 'Amount to send must be greater than 0');\\r\\n        require(amountOut >= minAmount, 'Amount out must be greater than min amount');\\r\\n\\r\\n        bool transferOutSuccess = IERC20(toToken).transfer(receiver, amountOut);\\r\\n        require(transferOutSuccess, 'Token transfer failed');\\r\\n\\r\\n        _updateSlippage();\\r\\n        _update();\\r\\n\\r\\n        emit Swap(receiver, fromToken, toToken, amount, amountOut);\\r\\n\\r\\n        return (amountOut, fee);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the potential amount of `toToken` that can be obtained by swapping `amount` of `fromToken`.\\r\\n     * This function takes into account the slippage and token weights to provide an accurate estimation.\\r\\n     *\\r\\n     * @param fromToken The address of the token being swapped from.\\r\\n     * @param toToken The address of the token being swapped to.\\r\\n     * @param amount The amount of `fromToken` being swapped.\\r\\n     *\\r\\n     * @return The potential amount of `toToken` that can be obtained.\\r\\n     */\\r\\n    function quotePotentialSwap(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) public view override returns (uint256) {\\r\\n        uint256 amountOut = getAmountOut(fromToken, toToken, amount);\\r\\n\\r\\n        uint256 slippageFrom = getSlippage(fromToken);\\r\\n        uint256 slippageTo = getSlippage(toToken);\\r\\n\\r\\n        uint256 fromTokenWeight = getTokenWeight(fromToken);\\r\\n        uint256 toTokenWeight = getTokenWeight(toToken);\\r\\n\\r\\n        uint256 slippageFromAmount = ((amountOut * slippageFrom)) / 10000;\\r\\n        uint256 slippageToAmount = (amountOut * slippageTo) / 10000;\\r\\n\\r\\n        if (fromTokenWeight > getDeviationForToken(fromToken)) {\\r\\n            amountOut = amountOut - slippageFromAmount;\\r\\n        } else {\\r\\n            amountOut = amountOut + slippageFromAmount;\\r\\n        }\\r\\n\\r\\n        if (toTokenWeight < getDeviationForToken(toToken)) {\\r\\n            amountOut = amountOut + slippageToAmount;\\r\\n        } else {\\r\\n            amountOut = amountOut - slippageToAmount;\\r\\n        }\\r\\n\\r\\n        return amountOut;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Restituisce lo slippage attuale per un dato token.\\r\\n     * @param token The address of the token.\\r\\n     * @return Lo slippage attuale per il token.\\r\\n     */\\r\\n    function getSlippage(address token) public view override returns (uint256) {\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            if (assetInfos[i].asset == token) {\\r\\n                return assetInfos[i].slippage;\\r\\n            }\\r\\n        }\\r\\n        return 0; // Default slippage se non trovato\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Updates the slippage for each asset in the pool based on the deviations.\\r\\n     * @notice This function is internal and should only be called within the contract.\\r\\n     */\\r\\n    function _updateSlippage() internal {\\r\\n        (bool[] memory directions, uint256[] memory deviations) = getDeviations();\\r\\n\\r\\n        uint256 sdf = 100;\\r\\n        uint256 slippageLimit = 10;\\r\\n\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            uint256 previousSlippage = assetInfos[i].slippage;\\r\\n\\r\\n            if (deviations[i] <= sdf) {\\r\\n                assetInfos[i].slippage = slippageLimit;\\r\\n                continue;\\r\\n            }\\r\\n\\r\\n            if (directions[i]) {\\r\\n                assetInfos[i].slippage += deviations[i] / sdf;\\r\\n                require(assetInfos[i].slippage >= previousSlippage, 'Overflow incrementing slippage');\\r\\n            } else {\\r\\n                if (assetInfos[i].slippage > deviations[i] / sdf) {\\r\\n                    assetInfos[i].slippage -= deviations[i] / sdf;\\r\\n                    require(assetInfos[i].slippage <= previousSlippage, 'Underflow decrementing slippage');\\r\\n                } else {\\r\\n                    assetInfos[i].slippage += deviations[i] / sdf;\\r\\n                }\\r\\n            }\\r\\n\\r\\n            // Limita lo slippage al massimo consentito\\r\\n            if (assetInfos[i].slippage > slippageLimit) {\\r\\n                assetInfos[i].slippage = slippageLimit;\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the weight of a token in the pool.\\r\\n     * @param token The address of the token.\\r\\n     * @return The weight of the token.\\r\\n     */\\r\\n    function getTokenWeight(address token) public view override returns (uint256) {\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            if (assetInfos[i].asset == token) {\\r\\n                return assetInfos[i].weight;\\r\\n            }\\r\\n        }\\r\\n        return 0; // Default weight if not found\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the deviation for a token in the pool.\\r\\n     * @param token The address of the token.\\r\\n     * @return The deviation for the token.\\r\\n     */\\r\\n    function getDeviationForToken(address token) public view override returns (uint256) {\\r\\n        (, uint256[] memory deviations) = getDeviations();\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            if (assetInfos[i].asset == token) {\\r\\n                return deviations[i];\\r\\n            }\\r\\n        }\\r\\n        return 0;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns an array of slippage parameters for each token in the pool.\\r\\n     * @return An array of slippage parameters.\\r\\n     */\\r\\n    function getSlippageParams() external view override returns (uint256[] memory) {\\r\\n        uint256[] memory slippages = new uint256[](assetInfos.length);\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            slippages[i] = assetInfos[i].slippage;\\r\\n        }\\r\\n        return slippages;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Mints new tokens and adds them to the specified address.\\r\\n     * @param to The address to which the new tokens will be minted.\\r\\n     * @return The amount of tokens minted.\\r\\n     */\\r\\n    function deposit(\\r\\n        address to,\\r\\n        uint256[] memory amounts,\\r\\n        uint256 deadline\\r\\n    ) external override ensure(deadline) nonReentrant whenNotPaused returns (uint256) {\\r\\n        uint256 totalSupply = totalSupply();\\r\\n        uint256 totalValue = 0;\\r\\n        uint256[] memory _reserves = getReserves();\\r\\n        require(assetInfos.length == _reserves.length, 'Invalid reserves length');\\r\\n        require(assetInfos.length > 0, 'No assets');\\r\\n\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            address asset = assetInfos[i].asset;\\r\\n            bool success = IERC20(asset).transferFrom(msg.sender, address(this), amounts[i]);\\r\\n            require(success, 'BaluniV1Pool: Transfer from failed');\\r\\n\\r\\n            uint256 valuation;\\r\\n\\r\\n            if (asset == baseAsset) {\\r\\n                valuation = amounts[i];\\r\\n                totalValue += valuation;\\r\\n                continue;\\r\\n            }\\r\\n\\r\\n            valuation = _convertTokenToBase(asset, amounts[i]);\\r\\n            totalValue += valuation;\\r\\n        }\\r\\n\\r\\n        require(totalValue > 0, 'Total value must be greater than 0');\\r\\n\\r\\n        uint256 toMint;\\r\\n\\r\\n        if (totalSupply == 0) {\\r\\n            toMint = totalValue * scalingFactor;\\r\\n        } else {\\r\\n            (uint256 totalLiquidity, ) = _computeTotalValuation();\\r\\n            require(totalLiquidity > 0, 'Total liquidity must be greater than 0');\\r\\n            toMint = ((totalValue * scalingFactor) * totalSupply) / (totalLiquidity * scalingFactor);\\r\\n        }\\r\\n\\r\\n        require(toMint != 0, 'Mint qty is 0');\\r\\n\\r\\n        _mint(to, toMint);\\r\\n\\r\\n        _updateSlippage();\\r\\n        _update();\\r\\n\\r\\n        emit Deposit(to, toMint);\\r\\n\\r\\n        return toMint;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Burns the pool tokens and transfers the underlying assets to the specified address.\\r\\n     * @param to The address to transfer the underlying assets to.\\r\\n     * @notice This function can only be called by the periphery contract.\\r\\n     * @notice The pool tokens must have a balance greater than 0.\\r\\n     * @notice The total supply of pool tokens must be greater than 0.\\r\\n     * @notice The function calculates the amounts of each underlying asset to transfer based on the share of pool tokens being burned.\\r\\n     * @notice A fee is deducted from the share of pool tokens being burned and transferred to the treasury address.\\r\\n     * @notice The function checks if the pool has sufficient liquidity before performing any transfers.\\r\\n     * @notice If any transfer fails, the function reverts the entire operation.\\r\\n     * @notice After the transfers, the function updates the reserves of the pool.\\r\\n     * @notice Emits a `Burn` event with the address and share of pool tokens burned.\\r\\n     */\\r\\n    function withdraw(\\r\\n        uint256 share,\\r\\n        address to,\\r\\n        uint256 deadline\\r\\n    ) external override ensure(deadline) nonReentrant whenNotPaused returns (uint256) {\\r\\n        require(to != address(0), 'Invalid address');\\r\\n        require(share > 0, 'Share must be greater than 0');\\r\\n\\r\\n        uint256 allowance = IERC20(address(this)).allowance(msg.sender, address(this));\\r\\n        require(allowance >= share, 'BaluniV1Pool: Insufficient Allowance');\\r\\n\\r\\n        bool transferResult = IERC20(address(this)).transferFrom(msg.sender, address(this), share);\\r\\n        require(transferResult, 'Transfer From Failed');\\r\\n\\r\\n        uint256 totalSupply = totalSupply();\\r\\n        require(totalSupply > 0, 'No liquidity');\\r\\n\\r\\n        address treasury = registry.getTreasury();\\r\\n        require(treasury != address(0), 'Invalid treasury address');\\r\\n\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            uint256 amountToSend = calculateAssetShare(share)[i];\\r\\n            require(\\r\\n                IERC20(assetInfos[i].asset).balanceOf(address(this)) >= amountToSend,\\r\\n                'BaluniV1Pool: Insufficient Asset Balance'\\r\\n            );\\r\\n\\r\\n            uint256 fee = _haircut(amountToSend);\\r\\n            amountToSend -= fee;\\r\\n            bool transferProtocolSuccess = IERC20(assetInfos[i].asset).transfer(treasury, fee);\\r\\n            require(transferProtocolSuccess, 'BaluniV1Pool: Fee Transfer Failed');\\r\\n\\r\\n            bool transferSuccess = IERC20(assetInfos[i].asset).transfer(to, amountToSend);\\r\\n            require(transferSuccess, 'Asset transfer failed');\\r\\n        }\\r\\n\\r\\n        require(balanceOf(address(this)) >= share, 'Insufficient BALUNI liquidity');\\r\\n\\r\\n        _burn(address(this), share);\\r\\n\\r\\n        _updateSlippage();\\r\\n        _update();\\r\\n\\r\\n        emit Withdraw(to, share);\\r\\n\\r\\n        return share;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the asset shares based on the provided share amount.\\r\\n     * @param share The share amount to calculate the asset shares for.\\r\\n     * @return An array of asset shares corresponding to each asset in the pool.\\r\\n     */\\r\\n    function calculateAssetShare(uint256 share) public view returns (uint256[] memory) {\\r\\n        uint256 fee = _haircut(share);\\r\\n        uint256 shareAfterFee = share - fee;\\r\\n        uint256[] memory assetShares = new uint256[](assetInfos.length);\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            uint256 assetBalance = IERC20(assetInfos[i].asset).balanceOf(address(this));\\r\\n            assetShares[i] = (assetBalance * shareAfterFee) / totalSupply();\\r\\n        }\\r\\n        return assetShares;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the fee amount based on the provided amount using the haircut formula.\\r\\n     * @param amount The amount to calculate the fee for.\\r\\n     * @return The fee amount.\\r\\n     */\\r\\n    function _haircut(uint256 amount) internal view returns (uint256) {\\r\\n        uint256 _BPS_FEE = registry.getBPS_FEE();\\r\\n        uint256 _BPS_BASE = registry.getBPS_BASE();\\r\\n        return (amount * _BPS_FEE) / _BPS_BASE;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the amount of `toToken` that will be received when swapping `fromToken` for `toToken`.\\r\\n     * @param fromToken The address of the token being swapped from.\\r\\n     * @param toToken The address of the token being swapped to.\\r\\n     * @param amount The amount of `fromToken` being swapped.\\r\\n     * @return The amount of `toToken` that will be received.\\r\\n     */\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) public view override returns (uint256) {\\r\\n        IBaluniV1Oracle baluniOracle = IBaluniV1Oracle(registry.getBaluniOracle());\\r\\n        require(registry.getBaluniOracle() != address(0), 'Invalid oracle address');\\r\\n        uint256 amountOut = baluniOracle.convert(fromToken, toToken, amount);\\r\\n        return amountOut;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Performs rebalance\\r\\n     */\\r\\n    function rebalance() external override {\\r\\n        require(isRebalanceNeeded(), 'Rebalance not needed');\\r\\n        return _performRebalanceIfNeeded();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the deviation between the current weights and target weights of the assets in the pool.\\r\\n     * @return directions An array of boolean values indicating whether the current weight is higher (true) or lower (false) than the target weight.\\r\\n     */\\r\\n    function getDeviations() public view override returns (bool[] memory directions, uint256[] memory deviations) {\\r\\n        (uint256 totVal, uint256[] memory valuations) = _computeTotalValuation();\\r\\n        uint256 numAssets = assetInfos.length;\\r\\n\\r\\n        directions = new bool[](numAssets);\\r\\n        deviations = new uint256[](numAssets);\\r\\n\\r\\n        for (uint256 i = 0; i < numAssets; i++) {\\r\\n            uint256 currentWeight = (valuations[i] * 10000) / totVal;\\r\\n            uint256 targetWeight = assetInfos[i].weight;\\r\\n\\r\\n            if (currentWeight > targetWeight) {\\r\\n                deviations[i] = currentWeight - targetWeight;\\r\\n                directions[i] = true;\\r\\n            } else {\\r\\n                deviations[i] = targetWeight - currentWeight;\\r\\n                directions[i] = false;\\r\\n            }\\r\\n        }\\r\\n\\r\\n        return (directions, deviations);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the liquidity of a specific asset in the pool.\\r\\n     * @param assetIndex The index of the asset.\\r\\n     * @return The liquidity of the asset.\\r\\n     */\\r\\n    function assetLiquidity(uint256 assetIndex) external view override returns (uint256) {\\r\\n        (, uint256[] memory usdValuations) = _computeTotalValuation();\\r\\n        require(assetIndex < usdValuations.length, 'Invalid asset index');\\r\\n        return usdValuations[assetIndex];\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Computes the total valuation of the pool and returns the total valuation and an array of individual valuations.\\r\\n     * @return totalVal The total valuation of the pool.\\r\\n     * @return valuations An array of individual valuations.\\r\\n     */\\r\\n    function totalValuation() external view override returns (uint256 totalVal, uint256[] memory valuations) {\\r\\n        (totalVal, valuations) = _computeTotalValuation();\\r\\n        return (totalVal, valuations);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the total liquidity of the pool.\\r\\n     * @return The total liquidity of the pool.\\r\\n     */\\r\\n    function liquidity() external view override returns (uint256) {\\r\\n        (uint256 totalVal, ) = _computeTotalValuation();\\r\\n        return totalVal;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the unit price of the pool.\\r\\n     * @return The unit price of the pool.\\r\\n     */\\r\\n    function unitPrice() external view override returns (uint256) {\\r\\n        uint256 baseDecimal = IERC20Metadata(baseAsset).decimals();\\r\\n        uint256 factor = 10 ** (18 - baseDecimal);\\r\\n        uint256 supply = totalSupply();\\r\\n\\r\\n        if (supply == 0) {\\r\\n            return 0;\\r\\n        }\\r\\n\\r\\n        (uint256 tVal, ) = _computeTotalValuation();\\r\\n\\r\\n        if (tVal == 0) {\\r\\n            return 0;\\r\\n        }\\r\\n\\r\\n        // Ensure scaling is done properly to avoid precision loss\\r\\n        uint256 scaledTotalVal = tVal * factor;\\r\\n        uint256 unitPriceScaledDown = (scaledTotalVal * ONE) / supply;\\r\\n\\r\\n        return unitPriceScaledDown;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns an array of reserves for each asset in the pool.\\r\\n     * @return An array of reserves.\\r\\n     */\\r\\n    function getReserves() public view override returns (uint256[] memory) {\\r\\n        uint256[] memory _reserves = new uint256[](assetInfos.length);\\r\\n\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            _reserves[i] = IERC20(assetInfos[i].asset).balanceOf(address(this));\\r\\n        }\\r\\n\\r\\n        return _reserves;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the reserve amount of the specified asset.\\r\\n     * @param asset The address of the asset.\\r\\n     * @return The reserve amount of the asset.\\r\\n     */\\r\\n    function getAssetReserve(address asset) public view override returns (uint256) {\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            if (asset == assetInfos[i].asset) return IERC20(asset).balanceOf(address(this));\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the list of assets in the pool.\\r\\n     * @return An array of addresses representing the assets.\\r\\n     */\\r\\n    function getAssets() public view override returns (address[] memory) {\\r\\n        address[] memory assets = new address[](assetInfos.length);\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            assets[i] = assetInfos[i].asset;\\r\\n        }\\r\\n        return assets;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the list of weights associated with the assets in the pool.\\r\\n     * @return An array of uint256 values representing the weights.\\r\\n     */\\r\\n    function getWeights() public view override returns (uint256[] memory) {\\r\\n        uint256[] memory weights = new uint256[](assetInfos.length);\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            weights[i] = assetInfos[i].weight;\\r\\n        }\\r\\n        return weights;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Checks if rebalancing is needed for the pool.\\r\\n     * @return A boolean value indicating whether rebalancing is needed or not.\\r\\n     */\\r\\n    function isRebalanceNeeded() public view returns (bool) {\\r\\n        uint256 rebalance_threshold = registry.getREBALANCE_THRESHOLD();\\r\\n        (bool[] memory directions, uint256[] memory deviations) = getDeviations();\\r\\n        for (uint256 i = 0; i < deviations.length; i++) {\\r\\n            if (directions[i] && deviations[i] > rebalance_threshold) {\\r\\n                return true;\\r\\n            }\\r\\n        }\\r\\n        return false;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Computes the total valuation of the assets in the pool.\\r\\n     * @return tVal The total valuation of the assets.\\r\\n     * @return valuations An array of valuations for each asset in the pool.\\r\\n     */\\r\\n    function _computeTotalValuation() internal view returns (uint256 tVal, uint256[] memory valuations) {\\r\\n        uint256 numAssets = assetInfos.length;\\r\\n        valuations = new uint256[](numAssets);\\r\\n        for (uint256 i = 0; i < numAssets; i++) {\\r\\n            address asset = assetInfos[i].asset;\\r\\n            uint256 assetReserve = getAssetReserve(address(asset));\\r\\n\\r\\n            if (assetReserve == 0) continue;\\r\\n\\r\\n            if ((address(asset) == baseAsset)) {\\r\\n                valuations[i] = assetReserve;\\r\\n            } else {\\r\\n                uint256 valuation = _convertTokenToBase(address(asset), assetReserve);\\r\\n                valuations[i] = valuation;\\r\\n            }\\r\\n            tVal += valuations[i];\\r\\n        }\\r\\n        return (tVal, valuations);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Performs rebalance if needed.\\r\\n     * This function retrieves the assets and weights from the `assetInfos` array,\\r\\n     * and calls the `rebalance` function of the `rebalancer` contract with the retrieved values.\\r\\n     * It emits a `RebalancePerformed` event after the rebalance is performed.\\r\\n     * @notice This function should only be called internally.\\r\\n     */\\r\\n    function _performRebalanceIfNeeded() internal {\\r\\n        address rebalancer = registry.getBaluniRebalancer();\\r\\n        address[] memory assets = getAssets();\\r\\n        uint256[] memory weights = getWeights();\\r\\n\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            uint256 allowance = IERC20(assetInfos[i].asset).allowance(address(this), rebalancer);\\r\\n            if (allowance < type(uint256).max) {\\r\\n                IERC20(assetInfos[i].asset).approve(rebalancer, type(uint256).max);\\r\\n            }\\r\\n        }\\r\\n\\r\\n        uint256[] memory balances = getReserves();\\r\\n        uint256 rebalance_threshold = registry.getREBALANCE_THRESHOLD();\\r\\n        IBaluniV1Rebalancer(rebalancer).rebalance(\\r\\n            balances,\\r\\n            assets,\\r\\n            weights,\\r\\n            rebalance_threshold,\\r\\n            address(this),\\r\\n            address(this),\\r\\n            baseAsset\\r\\n        );\\r\\n\\r\\n        _updateSlippage();\\r\\n        _update();\\r\\n\\r\\n        emit RebalancePerformed(msg.sender, assets);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the total added liquidity based on the amounts to add.\\r\\n     * @param amountsToAdd An array of amounts to add for each asset.\\r\\n     * @return totalAddedLiquidity The total added liquidity.\\r\\n     */\\r\\n    function _calculateTotalAddedLiquidity(\\r\\n        uint256[] memory amountsToAdd\\r\\n    ) internal view returns (uint256 totalAddedLiquidity) {\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            totalAddedLiquidity += amountsToAdd[i];\\r\\n        }\\r\\n        return totalAddedLiquidity;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the amounts to add to each asset based on the total valuation and current valuations.\\r\\n     * @param tVal The total valuation of the pool.\\r\\n     * @param valuations An array of current valuations for each asset.\\r\\n     * @return amountsToAdd An array of amounts to add to each asset.\\r\\n     */\\r\\n    function _calculateAmountsToAdd(\\r\\n        uint256 tVal,\\r\\n        uint256[] memory valuations\\r\\n    ) internal view returns (uint256[] memory amountsToAdd) {\\r\\n        amountsToAdd = new uint256[](assetInfos.length);\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            uint256 targetValuation = (tVal * assetInfos[i].weight) / 10000;\\r\\n            if (valuations[i] < targetValuation) {\\r\\n                amountsToAdd[i] = targetValuation - valuations[i];\\r\\n            }\\r\\n        }\\r\\n\\r\\n        return amountsToAdd;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to transfer tokens from the caller to the contract and calculate the liquidity.\\r\\n     * @param index The index of the asset in the assetInfos array.\\r\\n     * @param amountToAdd The amount of native tokens to add as liquidity.\\r\\n     */\\r\\n    function _calculateLiquidity(uint256 index, uint256 amountToAdd) internal view returns (uint256) {\\r\\n        if (assetInfos[index].asset == baseAsset) return amountToAdd;\\r\\n        uint256 tokenAmount = _convertBaseToToken(assetInfos[index].asset, amountToAdd);\\r\\n        require(tokenAmount > 0, 'Invalid token amount to add');\\r\\n        return tokenAmount;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the specified amount of native token to the corresponding token amount.\\r\\n     * @param toToken The address of the native token to convert from.\\r\\n     * @param amount The amount of native token to convert.\\r\\n     * @return The corresponding token amount.\\r\\n     */\\r\\n    function _convertBaseToToken(address toToken, uint256 amount) internal view returns (uint256) {\\r\\n        return getAmountOut(baseAsset, toToken, amount);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Converts the specified token to the native token using the rebalancer contract.\\r\\n     * @param fromToken The address of the token to convert from.\\r\\n     * @param amount The amount of tokens to convert.\\r\\n     * @return tokenAmount The converted amount of tokens.\\r\\n     */\\r\\n    function _convertTokenToBase(address fromToken, uint256 amount) internal view returns (uint256 tokenAmount) {\\r\\n        return getAmountOut(fromToken, baseAsset, amount);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Generates the name for the pool token based on the symbols of the assets.\\r\\n     * @param _assets The array of asset addresses.\\r\\n     * @return The generated token name.\\r\\n     */\\r\\n    function generateTokenName(address[] memory _assets) internal pure returns (string memory) {\\r\\n        string memory name = 'Baluni Liquidity Pool';\\r\\n        return name;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Generates the symbol for the pool token based on the symbols of the assets.\\r\\n     * @param _assets The array of asset addresses.\\r\\n     * @return The generated token symbol.\\r\\n     */\\r\\n    function generateTokenSymbol(address[] memory _assets) internal view returns (string memory) {\\r\\n        string memory symbol = 'bLP-';\\r\\n        for (uint256 i = 0; i < _assets.length; i++) {\\r\\n            if (i == 0) {\\r\\n                symbol = string(abi.encodePacked(symbol, IERC20Metadata(_assets[i]).symbol()));\\r\\n            } else {\\r\\n                symbol = string(abi.encodePacked(symbol, '-', IERC20Metadata(_assets[i]).symbol()));\\r\\n            }\\r\\n        }\\r\\n        return symbol;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev pause pool, restricting certain operations\\r\\n     */\\r\\n    function pause() external onlyOwner {\\r\\n        _pause();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev unpause pool, enabling certain operations\\r\\n     */\\r\\n    function unpause() external onlyOwner {\\r\\n        _unpause();\\r\\n    }\\r\\n\\r\\n    function _update() internal {\\r\\n        for (uint256 i = 0; i < assetInfos.length; i++) {\\r\\n            assetInfos[i].reserve = IERC20(assetInfos[i].asset).balanceOf(address(this));\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x390c5aee9b1b3b5efcc8516ad9b124e40712f12c535d2974855c4d39b498bbd1\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":14170,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"assetInfos","offset":0,"slot":"0","type":"t_array(t_struct(AssetInfo)4252_storage)dyn_storage"},{"astId":14172,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"ONE","offset":0,"slot":"1","type":"t_uint256"},{"astId":14174,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"baseAsset","offset":0,"slot":"2","type":"t_address"},{"astId":14176,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"scalingFactor","offset":0,"slot":"3","type":"t_uint256"},{"astId":14179,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"registry","offset":0,"slot":"4","type":"t_contract(IBaluniV1Registry)4909"},{"astId":14184,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"reserves","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(AssetInfo)4252_storage)dyn_storage":{"base":"t_struct(AssetInfo)4252_storage","encoding":"dynamic_array","label":"struct IBaluniV1Pool.AssetInfo[]","numberOfBytes":"32"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_struct(AssetInfo)4252_storage":{"encoding":"inplace","label":"struct IBaluniV1Pool.AssetInfo","members":[{"astId":4245,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"asset","offset":0,"slot":"0","type":"t_address"},{"astId":4247,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"weight","offset":0,"slot":"1","type":"t_uint256"},{"astId":4249,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"slippage","offset":0,"slot":"2","type":"t_uint256"},{"astId":4251,"contract":"contracts/pools/BaluniV1Pool.sol:BaluniV1Pool","label":"reserve","offset":0,"slot":"3","type":"t_uint256"}],"numberOfBytes":"128"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{"withdraw(uint256,address,uint256)":{"notice":"This function can only be called by the periphery contract.The pool tokens must have a balance greater than 0.The total supply of pool tokens must be greater than 0.The function calculates the amounts of each underlying asset to transfer based on the share of pool tokens being burned.A fee is deducted from the share of pool tokens being burned and transferred to the treasury address.The function checks if the pool has sufficient liquidity before performing any transfers.If any transfer fails, the function reverts the entire operation.After the transfers, the function updates the reserves of the pool.Emits a `Burn` event with the address and share of pool tokens burned."}},"version":1}}},"contracts/pools/BaluniV1PoolPeriphery.sol":{"BaluniV1PoolPeriphery":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"fromTokens","type":"address[]"},{"internalType":"address[]","name":"toTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"receivers","type":"address[]"}],"name":"batchSwap","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPoolsContainingToken","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"poolsReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenPath","type":"address[]"},{"internalType":"address[]","name":"poolPath","type":"address[]"},{"internalType":"uint256","name":"fromAmount","type":"uint256"}],"name":"quotePotentialSwaps","outputs":[{"internalType":"uint256","name":"potentialOutcome","type":"uint256"},{"internalType":"uint256","name":"haircut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"uint64","name":"version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"fromAmount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokenForToken","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"haircut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenPath","type":"address[]"},{"internalType":"address[]","name":"poolPath","type":"address[]"},{"internalType":"uint256","name":"fromAmount","type":"uint256"},{"internalType":"uint256","name":"minimumToAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"haircut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"This contract serves as the periphery contract for interacting with BaluniV1Pool contracts.","errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"batchSwap(address[],address[],uint256[],address[])":{"details":"Performs batch swaps between multiple token pairs.","params":{"amounts":"An array of amounts representing the amounts to swap.","fromTokens":"An array of addresses representing the tokens to swap from.","receivers":"An array of addresses representing the receivers of the swapped tokens.","toTokens":"An array of addresses representing the tokens to swap to."},"returns":{"_0":"An array of amounts representing the amounts of tokens received after the swaps."}},"getAmountOut(address,address,uint256)":{"details":"Gets the amount of tokens received after a swap in a BaluniV1Pool.","params":{"amount":"The amount of tokens to swap.","fromToken":"The address of the token to swap from.","toToken":"The address of the token to swap to."},"returns":{"_0":"The amount of tokens received after the swap."}},"getPoolsContainingToken(address)":{"details":"Returns an array of pool addresses that contain the given token.","params":{"token":"The address of the token to search for."},"returns":{"_0":"An array of pool addresses."}},"getVersion()":{"details":"Returns the version of the contract.","returns":{"_0":"The version string."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"quotePotentialSwaps(address[],address[],uint256)":{"details":"To be used by frontend","params":{"fromAmount":"The amount to quote","poolPath":"The token pool path","tokenPath":"The token swap path"},"returns":{"haircut":"The total haircut that would be applied","potentialOutcome":"The potential final amount user would receive"}},"renounceOwnership()":{"details":"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."},"swapTokenForToken(address,address,uint256,uint256,address,address,uint256)":{"details":"Swaps tokens using a Baluni V1 pool.","params":{"deadline":"The deadline by which the swap must be executed.","from":"The address from which the tokens are being swapped.","fromAmount":"The amount of tokens to swap from.","fromToken":"The address of the token to swap from.","minAmount":"The minimum amount of tokens to receive in the swap.","to":"The address to which the tokens are being swapped.","toToken":"The address of the token to swap to."},"returns":{"amountOut":"The amount of tokens received in the swap.","haircut":"The haircut applied to the swap."}},"swapTokensForTokens(address[],address[],uint256,uint256,address,uint256)":{"details":"Swaps tokens for tokens using a specified token path and pool path.","params":{"deadline":"The deadline for the swap to occur.","fromAmount":"The amount of tokens to swap from.","minimumToAmount":"The minimum amount of tokens to receive after swapping.","poolPath":"The array of pool addresses representing the path of pools to use for swapping.","to":"The address to receive the swapped tokens.","tokenPath":"The array of token addresses representing the path of tokens to swap."},"returns":{"amountOut":"The amount of tokens received after swapping.","haircut":"The amount of tokens deducted as a fee during the swap."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"title":"BaluniV1PoolPeriphery","version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":95,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1PoolPeriphery":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IBaluniV1PoolPeriphery":{"entryPoint":79,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ReentrancyGuardUpgradeable":{"entryPoint":87,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":151,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":141,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":131,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":109,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":106,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b613e3c6100a48239608051818181613562015281816135e701526137e20152613e3c90f35b6043565b60405190565b5f80fd5b604d604f565b565b60556057565b565b605d6097565b565b60018060a01b031690565b90565b607c6078608092605f565b606a565b605f565b90565b608a90606d565b90565b6094906083565b90565b609e30608d565b60805256fe60806040526004361015610013575b610ed0565b61001d5f3561012c565b80630d8e6e2c1461012757806321579b791461012257806335823d761461011d5780634056c37f146101185780634209bed0146101135780634aa066521461010e5780634f1ef2861461010957806352d1902d14610104578063715018a6146100ff5780637b103999146100fa5780638da5cb5b146100f55780638f2248bc146100f0578063ad3cb1cc146100eb578063ae3cce1c146100e6578063c4d66de8146100e1578063e74e9b06146100dc5763f2fde38b0361000e57610e9d565b610e5e565b610c5b565b610c26565b610b34565b610a04565b61097f565b610928565b61087b565b610846565b6107f7565b6106ec565b61067b565b6105da565b6104aa565b6103fd565b61017e565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261014a57565b61013c565b67ffffffffffffffff1690565b6101659061014f565b9052565b919061017c905f6020850194019061015c565b565b346101ae5761018e366004610140565b6101aa610199610ed8565b6101a1610132565b91829182610169565b0390f35b610138565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906101fc906101bb565b810190811067ffffffffffffffff82111761021657604052565b6101c5565b9061022e610227610132565b92836101f2565b565b67ffffffffffffffff81116102485760208091020190565b6101c5565b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61027390610251565b90565b61027f8161026a565b0361028657565b5f80fd5b9050359061029782610276565b565b909291926102ae6102a982610230565b61021b565b93818552602080860192028301928184116102eb57915b8383106102d25750505050565b602080916102e0848661028a565b8152019201916102c5565b61024d565b9080601f8301121561030e5781602061030b93359101610299565b90565b6101b7565b90565b61031f81610313565b0361032657565b5f80fd5b9050359061033782610316565b565b909160c0828403126103c8575f82013567ffffffffffffffff81116103c357836103649184016102f0565b92602083013567ffffffffffffffff81116103be57816103859185016102f0565b92610393826040830161032a565b926103bb6103a4846060850161032a565b936103b2816080860161028a565b9360a00161032a565b90565b6101b3565b6101b3565b61013c565b6103d690610313565b9052565b9160206103fb9294936103f460408201965f8301906103cd565b01906103cd565b565b346104355761041c610410366004610339565b94939093929192611666565b90610431610428610132565b928392836103da565b0390f35b610138565b60e0818303126104a557610450825f830161028a565b9261045e836020840161028a565b9261046c816040850161032a565b9261047a826060830161032a565b926104a261048b846080850161028a565b936104998160a0860161028a565b9360c00161032a565b90565b61013c565b346104e2576104c96104bd36600461043a565b95949094939193611bb7565b906104de6104d5610132565b928392836103da565b0390f35b610138565b919060408382031261050f578061050361050c925f860161028a565b9360200161028a565b90565b61013c565b90565b61052b61052661053092610251565b610514565b610251565b90565b61053c90610517565b90565b61054890610533565b90565b906105559061053f565b5f5260205260405f2090565b9061056b9061053f565b5f5260205260405f2090565b1c90565b90565b61058e9060086105939302610577565b61057b565b90565b906105a1915461057e565b90565b6105bd6105c2926105b86001935f9461054b565b610561565b610596565b90565b91906105d8905f602085019401906103cd565b565b3461060b576106076105f66105f03660046104e7565b906105a4565b6105fe610132565b918291826105c5565b0390f35b610138565b9091606082840312610676575f82013567ffffffffffffffff8111610671578361063b9184016102f0565b9260208301359067ffffffffffffffff821161066c57610660816106699386016102f0565b9360400161032a565b90565b6101b3565b6101b3565b61013c565b346106ad5761069461068e366004610610565b91611d5f565b906106a96106a0610132565b928392836103da565b0390f35b610138565b90916060828403126106e7576106e46106cd845f850161028a565b936106db816020860161028a565b9360400161032a565b90565b61013c565b3461071d576107196107086107023660046106b2565b9161201d565b610710610132565b918291826105c5565b0390f35b610138565b5f80fd5b67ffffffffffffffff8111610744576107406020916101bb565b0190565b6101c5565b90825f939282370152565b9092919261076961076482610726565b61021b565b938185526020850190828401116107855761078392610749565b565b610722565b9080601f830112156107a8578160206107a593359101610754565b90565b6101b7565b9190916040818403126107ed576107c6835f830161028a565b92602082013567ffffffffffffffff81116107e8576107e5920161078a565b90565b6101b3565b61013c565b5f0190565b61080b6108053660046107ad565b906121e6565b610813610132565b8061081d816107f2565b0390f35b90565b61082d90610821565b9052565b9190610844905f60208501940190610824565b565b3461087657610856366004610140565b610872610861612266565b610869610132565b91829182610831565b0390f35b610138565b346108a95761088b366004610140565b61089361229e565b61089b610132565b806108a5816107f2565b0390f35b610138565b73ffffffffffffffffffffffffffffffffffffffff1690565b6108d79060086108dc9302610577565b6108ae565b90565b906108ea91546108c7565b90565b6108f75f806108df565b90565b61090390610533565b90565b61090f906108fa565b9052565b9190610926905f60208501940190610906565b565b3461095857610938366004610140565b6109546109436108ed565b61094b610132565b91829182610913565b0390f35b610138565b6109669061026a565b9052565b919061097d905f6020850194019061095d565b565b346109af5761098f366004610140565b6109ab61099a6122e6565b6109a2610132565b9182918261096a565b0390f35b610138565b6109bd8161014f565b036109c457565b5f80fd5b905035906109d5826109b4565b565b91906040838203126109ff57806109f36109fc925f860161028a565b936020016109c8565b90565b61013c565b34610a3357610a1d610a173660046109d7565b90612581565b610a25610132565b80610a2f816107f2565b0390f35b610138565b67ffffffffffffffff8111610a5657610a526020916101bb565b0190565b6101c5565b90610a6d610a6883610a38565b61021b565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610aa36005610a5b565b90610ab060208301610a72565b565b610aba610a99565b90565b610ac5610ab2565b90565b610ad0610abd565b90565b5190565b60209181520190565b90825f9392825e0152565b610b0a610b13602093610b1893610b0181610ad3565b93848093610ad7565b95869101610ae0565b6101bb565b0190565b610b319160208201915f818403910152610aeb565b90565b34610b6457610b44366004610140565b610b60610b4f610ac8565b610b57610132565b91829182610b1c565b0390f35b610138565b90602082820312610b8257610b7f915f0161028a565b90565b61013c565b5190565b60209181520190565b60200190565b610ba39061026a565b9052565b90610bb481602093610b9a565b0190565b60200190565b90610bdb610bd5610bce84610b87565b8093610b8b565b92610b94565b905f5b818110610beb5750505090565b909192610c04610bfe6001928651610ba7565b94610bb8565b9101919091610bde565b610c239160208201915f818403910152610bbe565b90565b34610c5657610c52610c41610c3c366004610b69565b612641565b610c49610132565b91829182610c0e565b0390f35b610138565b34610c8957610c73610c6e366004610b69565b61294e565b610c7b610132565b80610c85816107f2565b0390f35b610138565b5f80fd5b909182601f83011215610ccc5781359167ffffffffffffffff8311610cc7576020019260208302840111610cc257565b61024d565b610c8e565b6101b7565b909182601f83011215610d0b5781359167ffffffffffffffff8311610d06576020019260208302840111610d0157565b61024d565b610c8e565b6101b7565b9091608082840312610dba575f82013567ffffffffffffffff8111610db55783610d3b918401610c92565b929093602082013567ffffffffffffffff8111610db05781610d5e918401610c92565b929093604082013567ffffffffffffffff8111610dab5783610d81918401610cd1565b929093606082013567ffffffffffffffff8111610da657610da29201610c92565b9091565b6101b3565b6101b3565b6101b3565b6101b3565b61013c565b5190565b60209181520190565b60200190565b610ddb90610313565b9052565b90610dec81602093610dd2565b0190565b60200190565b90610e13610e0d610e0684610dbf565b8093610dc3565b92610dcc565b905f5b818110610e235750505090565b909192610e3c610e366001928651610ddf565b94610df0565b9101919091610e16565b610e5b9160208201915f818403910152610df6565b90565b34610e9857610e94610e83610e74366004610d10565b96959095949194939293612b8f565b610e8b610132565b91829182610e46565b0390f35b610138565b34610ecb57610eb5610eb0366004610b69565b612e8d565b610ebd610132565b80610ec7816107f2565b0390f35b610138565b5f80fd5b5f90565b610ee0610ed4565b50610ee9612e98565b90565b5f90565b5f7f4558504952454400000000000000000000000000000000000000000000000000910152565b610f246007602092610ad7565b610f2d81610ef0565b0190565b610f469060208101905f818303910152610f17565b90565b15610f5057565b610f58610132565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610f8860048201610f31565b0390fd5b90610fb997969594939291610fb488610fad610fa742610313565b91610313565b1015610f49565b610fbd565b9091565b90610fd597969594939291610fd0612f58565b6114dc565b9091610fdf612fe8565b565b90565b610ff8610ff3610ffd92610fe1565b610514565b610313565b90565b5f7f696e76616c69642066726f6d20616d6f756e7400000000000000000000000000910152565b6110346013602092610ad7565b61103d81611000565b0190565b6110569060208101905f818303910152611027565b90565b1561106057565b611068610132565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061109860048201611041565b0390fd5b90565b6110b36110ae6110b89261109c565b610514565b610313565b90565b5f7f696e76616c696420746f6b656e20706174680000000000000000000000000000910152565b6110ef6012602092610ad7565b6110f8816110bb565b0190565b6111119060208101905f8183039101526110e2565b90565b1561111b57565b611123610132565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611153600482016110fc565b0390fd5b90565b61116e61116961117392611157565b610514565b610313565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6111b26111b891939293610313565b92610313565b82039182116111c357565b611176565b5f7f696e76616c696420706f6f6c2070617468000000000000000000000000000000910152565b6111fc6011602092610ad7565b611205816111c8565b0190565b61121e9060208101905f8183039101526111ef565b90565b1561122857565b611230610132565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061126060048201611209565b0390fd5b61127861127361127d92610fe1565b610514565b610251565b90565b61128990611264565b90565b5f7f7a65726f20616464726573730000000000000000000000000000000000000000910152565b6112c0600c602092610ad7565b6112c98161128c565b0190565b6112e29060208101905f8183039101526112b3565b90565b156112ec57565b6112f4610132565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611324600482016112cd565b0390fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9061135f82610b87565b811015611370576020809102010190565b611328565b61137f905161026a565b90565b61138b90610517565b90565b61139790611382565b90565b6113a390610533565b90565b6113af90610533565b90565b60e01b90565b151590565b6113c6816113b8565b036113cd57565b5f80fd5b905051906113de826113bd565b565b906020828203126113f9576113f6915f016113d1565b90565b61013c565b60409061142761142e949695939661141d60608401985f85019061095d565b602083019061095d565b01906103cd565b565b611438610132565b3d5f823e3d90fd5b5f7f616d6f756e744f757420746f6f206c6f77000000000000000000000000000000910152565b6114746011602092610ad7565b61147d81611440565b0190565b6114969060208101905f818303910152611467565b90565b156114a057565b6114a8610132565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806114d860048201611481565b0390fd5b9091949795929396505050611503856114fd6114f75f610fe4565b91610313565b11611059565b61152961150f84610b87565b61152261151c600261109f565b91610313565b1015611114565b61156861153583610b87565b61156261155c61155761154788610b87565b611551600161115a565b906111a3565b610313565b91610313565b14611221565b61158d8161158661158061157b5f611280565b61026a565b9161026a565b14156112e5565b6115b86115b36115ae6115a9866115a35f610fe4565b90611355565b611375565b61138e565b61139a565b9460206323b872dd9633906115e95f6115d0306113a6565b9a6115f4876115dd610132565b9d8e97889687956113b2565b8552600485016113fe565b03925af1938415611661576116339661161695611635575b50929091926130bd565b92909361162c6116268692610313565b91610313565b1015611499565b565b6116559060203d811161165a575b61164d81836101f2565b8101906113e0565b61160c565b503d611643565b611430565b906116859594939291611677610eec565b61167f610eec565b90610f8c565b9091565b906116b798979695949392916116b2896116ab6116a542610313565b91610313565b1015610f49565b6116bb565b9091565b906116d498979695949392916116cf612f58565b611928565b90916116de612fe8565b565b5f1c90565b6116f16116f6916116e0565b6108ae565b90565b61170390546116e5565b90565b9050519061171382610276565b565b9060208282031261172e5761172b915f01611706565b90565b61013c565b61173c90610517565b90565b61174890611733565b90565b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b61177e60208092610ad7565b6117878161174b565b0190565b6117a09060208101905f818303910152611772565b90565b156117aa57565b6117b2610132565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806117e26004820161178b565b0390fd5b6117ef90610533565b90565b91602061181392949361180c60408201965f83019061095d565b019061095d565b565b60207f666f756e64000000000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c5065726970686572793a20506f6f6c206e6f74205f8201520152565b61186f6025604092610ad7565b61187881611815565b0190565b6118919060208101905f818303910152611862565b90565b1561189b57565b6118a3610132565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806118d36004820161187c565b0390fd5b906118e96118e483610230565b61021b565b918252565b369037565b90611918611900836118d7565b9260208061190e8693610230565b92019103906118ee565b565b906119249061026a565b9052565b909194969392989750505061195f60206119496119445f6116f9565b6108fa565b6332569e0290611957610132565b9384926113b2565b8252818061196f600482016107f2565b03915afa908115611bb2576119b09161198f915f91611b84575b5061173f565b6119ab836119a561199f5f610fe4565b91610313565b116117a3565b6117e6565b6020632d5e94a79185906119d68b946119e16119ca610132565b968795869485946113b2565b8452600484016117f2565b03915afa908115611b7f575f91611b51575b5092611a1a84611a13611a0d611a085f611280565b61026a565b9161026a565b1415611894565b6020611a2d611a288361138e565b61139a565b6323b872dd9690611a5a5f611a41306113a6565b99611a6588611a4e610132565b9c8d97889687956113b2565b8552600485016113fe565b03925af18015611b4c57611b1c98611aff96611ac892611b20575b50611aaf611a96611a91600261109f565b6118f3565b93611aaa85611aa45f610fe4565b90611355565b61191a565b611ac383611abd600161115a565b90611355565b61191a565b611af6611add611ad8600161115a565b6118f3565b94611af186611aeb5f610fe4565b90611355565b61191a565b929091926130bd565b939091611b15611b0f8492610313565b91610313565b1015611499565b9190565b611b409060203d8111611b45575b611b3881836101f2565b8101906113e0565b611a80565b503d611b2e565b611430565b611b72915060203d8111611b78575b611b6a81836101f2565b810190611715565b5f6119f3565b503d611b60565b611430565b611ba5915060203d8111611bab575b611b9d81836101f2565b810190611715565b5f611989565b503d611b93565b611430565b90611bd7969594939291611bc9610eec565b611bd1610eec565b90611689565b9091565b6001611be79101610313565b90565b611bf390610517565b90565b611bff90611bea565b90565b611c0b90610533565b90565b611c1d611c2391939293610313565b92610313565b8201809211611c2e57565b611176565b90505190611c4082610316565b565b90602082820312611c5b57611c58915f01611c33565b90565b61013c565b611c6990610517565b90565b611c7590611c60565b90565b611c8190610533565b90565b60ff1690565b611c9381611c84565b03611c9a57565b5f80fd5b90505190611cab82611c8a565b565b90602082820312611cc657611cc3915f01611c9e565b90565b61013c565b90565b611ce2611cdd611ce792611ccb565b610514565b611c84565b90565b611cf6611cfc91611c84565b91611c84565b90039060ff8211611d0957565b611176565b611d1790611c84565b604d8111611d2557600a0a90565b611176565b611d39611d3f91939293610313565b92610313565b91611d4b838202610313565b928184041490151715611d5a57565b611176565b9291611d69610eec565b90611d72610eec565b92611d8f82611d89611d835f610fe4565b91610313565b11611059565b611db5611d9b87610b87565b611dae611da8600261109f565b91610313565b1015611114565b611df4611dc182610b87565b611dee611de8611de3611dd38b610b87565b611ddd600161115a565b906111a3565b610313565b91610313565b14611221565b611dfc610eec565b9193611e06610eec565b935b84611e23611e1d611e1886610b87565b610313565b91610313565b10156120125784611e3c611e365f610fe4565b91610313565b03612008575b50611e66611e61611e5c611e57858890611355565b611375565b611bf6565b611c02565b60206343c2e2f591611e81611e7c8b8990611355565b611375565b90611ec4611eab611ea68d611ea08c611e9a600161115a565b90611c0e565b90611355565b611375565b94611ecf8b611eb8610132565b978896879586956113b2565b8552600485016113fe565b03915afa908115612003578891611f3b915f91611fd5575b5092856020611f25611f20611f1b611f168c611f1060129a91611f0a600161115a565b90611c0e565b90611355565b611375565b611c6c565b611c78565b63313ce56790611f33610132565b9586926113b2565b82528180611f4b600482016107f2565b03915afa908115611fd057611f83611f7e611f8993611f9597611f8f975f92611f9c575b50611f7990611cce565b611cea565b611d0e565b90611d2a565b90611c0e565b94611bdb565b9390611e08565b611f79919250611fc29060203d8111611fc9575b611fba81836101f2565b810190611cad565b9190611f6f565b503d611fb0565b611430565b611ff6915060203d8111611ffc575b611fee81836101f2565b810190611c42565b5f611ee7565b503d611fe4565b611430565b909450935f611e42565b945095505050509190565b90612026610eec565b50612053602061203d6120385f6116f9565b6108fa565b6332569e029061204b610132565b9384926113b2565b82528180612063600482016107f2565b03915afa9081156121b85761208891612083915f9161218a575b5061173f565b6117e6565b916020632d5e94a79382906120af85966120ba6120a3610132565b988995869485946113b2565b8452600484016117f2565b03915afa928315612185576120e46120df602095612104935f91612158575b50611bf6565b611c02565b9161210f6343c2e2f59194966120f8610132565b978896879586956113b2565b8552600485016113fe565b03915afa908115612153575f91612125575b5090565b612146915060203d811161214c575b61213e81836101f2565b810190611c42565b5f612121565b503d612134565b611430565b6121789150873d811161217e575b61217081836101f2565b810190611715565b5f6120d9565b503d612166565b611430565b6121ab915060203d81116121b1575b6121a381836101f2565b810190611715565b5f61207d565b503d612199565b611430565b906121cf916121ca613551565b6121d1565b565b906121e4916121df81613623565b613693565b565b906121f0916121bd565b565b5f90565b612207906122026137d1565b61225a565b90565b90565b5f1b90565b61222661222161222b9261220a565b61220d565b610821565b90565b6122577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc612212565b90565b5061226361222e565b90565b6122766122716121f2565b6121f6565b90565b61228161384f565b61228961228b565b565b61229c6122975f611280565b6138e0565b565b6122a6612279565b565b5f90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6122d16122d6916116e0565b6122ac565b90565b6122e390546122c5565b90565b6122ee6122a8565b506123015f6122fb61394c565b016122d9565b90565b60401c90565b60ff1690565b61231c61232191612304565b61230a565b90565b61232e9054612310565b90565b67ffffffffffffffff1690565b61234a61234f916116e0565b612331565b90565b61235c905461233e565b90565b9061237267ffffffffffffffff9161220d565b9181191691161790565b61239061238b6123959261014f565b610514565b61014f565b90565b90565b906123b06123ab6123b79261237c565b612398565b825461235f565b9055565b60401b90565b906123d568ff0000000000000000916123bb565b9181191691161790565b6123e8906113b8565b90565b90565b906124036123fe61240a926123df565b6123eb565b82546123c1565b9055565b908091612419613970565b906124255f8301612324565b80156124d6575b61249a5761245f9261245691612444865f860161239b565b61245160015f86016123ee565b61256b565b5f8091016123ee565b6124957fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29161248c610132565b91829182610169565b0390a1565b6124a2610132565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806124d2600482016107f2565b0390fd5b506124e25f8301612352565b6124f46124ee8661014f565b9161014f565b101561242c565b61250490610517565b90565b612510906124fb565b90565b9061253273ffffffffffffffffffffffffffffffffffffffff9161220d565b9181191691161790565b612545906124fb565b90565b90565b9061256061255b6125679261253c565b612548565b8254612513565b9055565b61257f915061257990612507565b5f61254b565b565b9061258b9161240e565b565b606090565b909291926125a76125a282610230565b61021b565b93818552602080860192028301928184116125e457915b8383106125cb5750505050565b602080916125d98486611706565b8152019201916125be565b61024d565b9080601f830112156126075781602061260493519101612592565b90565b6101b7565b9060208282031261263c575f82015167ffffffffffffffff81116126375761263492016125e9565b90565b6101b3565b61013c565b61264961258d565b50612676602061266061265b5f6116f9565b6108fa565b6332569e029061266e610132565b9384926113b2565b82528180612686600482016107f2565b03915afa918215612741576126af6126aa6126d6945f948591612713575b5061173f565b6117e6565b6126cb63b4340e6a6126bf610132565b958694859384936113b2565b83526004830161096a565b03915afa90811561270e575f916126ec575b5090565b61270891503d805f833e61270081836101f2565b81019061260c565b5f6126e8565b611430565b612734915060203d811161273a575b61272c81836101f2565b810190611715565b5f6126a4565b503d612722565b611430565b61275a61275561275f92610fe1565b610514565b61014f565b90565b61277661277161277b92611157565b610514565b61014f565b90565b61278790610533565b90565b61279390612762565b9052565b91906127aa905f6020850194019061278a565b565b6127b4613970565b906127c96127c35f8401612324565b156113b8565b906127d55f8401612352565b806127e86127e25f612746565b9161014f565b1480612922575b906128036127fd6001612762565b9161014f565b14806128fa575b6128159091156113b8565b90816128e9575b506128ad576128459061283a6128326001612762565b5f860161239b565b8261289b575b612929565b61284d575b50565b61285a905f8091016123ee565b60016128927fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612889610132565b91829182612797565b0390a15f61284a565b6128a860015f86016123ee565b612840565b6128b5610132565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806128e5600482016107f2565b0390fd5b6128f49150156113b8565b5f61281c565b506128156129073061277e565b3b61291a6129145f610fe4565b91610313565b14905061280a565b50826127ef565b61294661294c9161293861399e565b612941336139c6565b612507565b5f61254b565b565b612957906127ac565b565b606090565b5090565b5090565b5f7f496e70757420617272617973206c656e677468206d69736d6174636800000000910152565b61299a601c602092610ad7565b6129a381612966565b0190565b6129bc9060208101905f81830391015261298d565b90565b156129c657565b6129ce610132565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806129fe600482016129a7565b0390fd5b67ffffffffffffffff8111612a1a5760208091020190565b6101c5565b90612a31612a2c83612a02565b61021b565b918252565b369037565b90612a60612a4883612a1f565b92602080612a568693612a02565b9201910390612a36565b565b9190811015612a72576020020190565b611328565b35612a8181610316565b90565b9190811015612a94576020020190565b611328565b35612aa381610276565b90565b5f7f496e73756666696369656e742042616c616e6365000000000000000000000000910152565b612ada6014602092610ad7565b612ae381612aa6565b0190565b612afc9060208101905f818303910152612acd565b90565b15612b0657565b612b0e610132565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612b3e60048201612ae7565b0390fd5b90565b612b59612b54612b5e92612b42565b610514565b610313565b90565b90612b6b82610dbf565b811015612b7c576020809102010190565b611328565b90612b8b90610313565b9052565b9491959397969290612b9f612959565b50612bab86829061295e565b612bc7612bc1612bbc8a869061295e565b610313565b91610313565b1480612dda575b80612da7575b612bdd906129bf565b612bf0612beb87839061295e565b612a3b565b95612bfa5f610fe4565b5b80612c18612c12612c0d85879061295e565b610313565b91610313565b1015612d99578890612c4f612c37612c328e898591612a62565b612a77565b612c49612c435f610fe4565b91610313565b116117a3565b612ce28c612c8f612c8a612c81612c7c612c73612c6e8a8c8a91612a84565b612a99565b978b8891612a84565b612a99565b928a8691612a62565b612a77565b90612ca4612c9f8c8c8791612a84565b612a99565b916020612cb8612cb38861138e565b61139a565b6370a0823190612cd73392612ccb610132565b988994859384936113b2565b83526004830161096a565b03915afa928315612d9457612d6196612d1d612d4995612d5c975f91612d66575b50612d16612d1086610313565b91610313565b1015612aff565b9291925f93339293612d43612d3d42612d3761012c612b45565b90611c0e565b96610fe4565b92611bb7565b50612d578b91849092612b61565b612b81565b611bdb565b612bfb565b612d87915060203d8111612d8d575b612d7f81836101f2565b810190611c42565b5f612d03565b503d612d75565b611430565b505050505050509192505090565b50612bdd612db68a8590612962565b612dd2612dcc612dc789899061295e565b610313565b91610313565b149050612bd4565b50612de687839061295e565b612e02612dfc612df78c8790612962565b610313565b91610313565b14612bce565b612e1990612e1461384f565b612e1b565b565b80612e36612e30612e2b5f611280565b61026a565b9161026a565b14612e4657612e44906138e0565b565b612e89612e525f611280565b612e5a610132565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b612e9690612e08565b565b612ea0610ed4565b50612eb35f612ead613970565b01612352565b90565b612ec2612ec7916116e0565b61057b565b90565b612ed49054612eb6565b90565b612ee1600261109f565b90565b90612f0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9161220d565b9181191691161790565b612f2d612f28612f3292610313565b610514565b610313565b90565b90565b90612f4d612f48612f5492612f19565b612f35565b8254612ee4565b9055565b612f606139d1565b612f6b5f8201612eca565b612f84612f7e612f79612ed7565b610313565b91610313565b14612f9f57612f9d905f612f96612ed7565b9101612f38565b565b612fa7610132565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280612fd7600482016107f2565b0390fd5b612fe5600161115a565b90565b613003612ff36139d1565b5f612ffc612fdb565b9101612f38565b565b91602061302692949361301f60408201965f83019061095d565b01906103cd565b565b9190604083820312613050578061304461304d925f8601611c33565b93602001611c33565b90565b61013c565b61305e90610fe4565b9052565b91946130aa6130b4929897956130a060a0966130966130bb9a61308c60c08a019e5f8b019061095d565b602089019061095d565b60408701906103cd565b6060850190613055565b608083019061095d565b01906103cd565b565b9392906130c8610eec565b916130d1610eec565b936130da610eec565b50936130e46122a8565b506130ed610eec565b935b8461310a6131046130ff87610b87565b610313565b91610313565b101561353b578461312361311d5f610fe4565b91610313565b1480613518575b5f146134a25750815b61315661315161314c6131478b8990611355565b611375565b61138e565b61139a565b602063dd62ed3e91613167306113a6565b9061319661317e6131798a8c90611355565b611375565b946131a161318a610132565b968795869485946113b2565b8452600484016117f2565b03915afa90811561349d575f9161346f575b506131c76131c18892610313565b91610313565b10156133c2575b6040886131f46131ef6131ea6131e5898b90611355565b611375565b611bf6565b611c02565b6132745f639908fc8b61327f61323a6132358d61322f61321d6132188b8490611355565b611375565b9991613229600161115a565b90611c0e565b90611355565b611375565b978d90847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92613268610132565b9b8c9a8b998a986113b2565b885260048801613062565b03925af19182156133bd5788915f80919094613387575b50906132ed9160206132d76132d26132cd6132c88c6132c260129a916132bc600161115a565b90611c0e565b90611355565b611375565b611c6c565b611c78565b63313ce567906132e5610132565b9586926113b2565b825281806132fd600482016107f2565b03915afa9081156133825761333561333061333b9361334797613341975f9261334e575b5061332b90611cce565b611cea565b611d0e565b90611d2a565b90611c0e565b94611bdb565b93906130ef565b61332b9192506133749060203d811161337b575b61336c81836101f2565b810190611cad565b9190613321565b503d613362565b611430565b6132ed9294506133ae915060403d81116133b6575b6133a681836101f2565b810190613028565b909391613296565b503d61339c565b611430565b6133e56133e06133db6133d68b8990611355565b611375565b61138e565b61139a565b602063095ea7b3916134006133fb888a90611355565b611375565b9061341e5f8b95613429613412610132565b978896879586946113b2565b845260048401613005565b03925af1801561346a5761343e575b506131ce565b61345e9060203d8111613463575b61345681836101f2565b8101906113e0565b613438565b503d61344c565b611430565b613490915060203d8111613496575b61348881836101f2565b810190611c42565b5f6131b3565b503d61347e565b611430565b846134b56134af5f610fe4565b91610313565b145f146134cc57506134c6306113a6565b5b613133565b9450836134fc6134f66134f16134e187610b87565b6134eb600161115a565b906111a3565b610313565b91610313565b105f146135125761350c306113a6565b5b6134c7565b8161350d565b5061352284610b87565b61353561352f600161115a565b91610313565b1461312a565b9650949350505050565b61354e90610533565b90565b61355a30613545565b61358c6135867f000000000000000000000000000000000000000000000000000000000000000061026a565b9161026a565b1480156135d6575b61359a57565b6135a2610132565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806135d2600482016107f2565b0390fd5b506135df6139f5565b61361161360b7f000000000000000000000000000000000000000000000000000000000000000061026a565b9161026a565b1415613594565b5061362161384f565b565b61362c90613618565b565b61363790610517565b90565b6136439061362e565b90565b61364f90610533565b90565b61365b81610821565b0361366257565b5f80fd5b9050519061367382613652565b565b9060208282031261368e5761368b915f01613666565b90565b61013c565b91906136c160206136ab6136a68661363a565b613646565b6352d1902d906136b9610132565b9384926113b2565b825281806136d1600482016107f2565b03915afa80915f926137a1575b50155f146137325750509060016136f357505b565b61372e906136ff610132565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b928361374d61374761374261222e565b610821565b91610821565b036137625761375d929350613a1f565b6136f1565b61379d8461376e610132565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610831565b0390fd5b6137c391925060203d81116137ca575b6137bb81836101f2565b810190613675565b905f6136de565b503d6137b1565b6137da30613545565b61380c6138067f000000000000000000000000000000000000000000000000000000000000000061026a565b9161026a565b0361381357565b61381b610132565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061384b600482016107f2565b0390fd5b6138576122e6565b61387061386a613865613aa8565b61026a565b9161026a565b0361387757565b6138b9613882613aa8565b61388a610132565b9182917f118cdaa70000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b90565b906138d56138d06138dc9261053f565b6138bd565b8254612513565b9055565b6138e861394c565b6139006138f65f83016122d9565b915f8491016138c0565b9061393461392e7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361053f565b9161053f565b9161393d610132565b80613947816107f2565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61399c613ab5565b565b6139a6613994565b565b6139b9906139b4613ab5565b6139bb565b565b6139c490613b8d565b565b6139cf906139a8565b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6139fd6122a8565b50613a185f613a12613a0d61222e565b613b98565b016122d9565b90565b5190565b90613a2982613b9b565b81613a547fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9161053f565b90613a5d610132565b80613a67816107f2565b0390a2613a7381613a1b565b613a85613a7f5f610fe4565b91610313565b115f14613a9957613a9591613cab565b505b565b5050613aa3613c10565b613a97565b613ab06122a8565b503390565b613ac6613ac0613cde565b156113b8565b613acc57565b613ad4610132565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280613b04600482016107f2565b0390fd5b613b1990613b14613ab5565b613b1b565b565b80613b36613b30613b2b5f611280565b61026a565b9161026a565b14613b4657613b44906138e0565b565b613b89613b525f611280565b613b5a610132565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b613b9690613b08565b565b90565b803b613baf613ba95f610fe4565b91610313565b14613bd157613bcf905f613bc9613bc461222e565b613b98565b016138c0565b565b613c0c90613bdd610132565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b34613c23613c1d5f610fe4565b91610313565b11613c2a57565b613c32610132565b7fb398979f00000000000000000000000000000000000000000000000000000000815280613c62600482016107f2565b0390fd5b606090565b90613c7d613c7883610726565b61021b565b918252565b3d5f14613c9d57613c923d613c6b565b903d5f602084013e5b565b613ca5613c66565b90613c9b565b5f80613cd793613cb9613c66565b508390602081019051915af490613cce613c82565b90919091613cfc565b90565b5f90565b613ce6613cda565b50613cf95f613cf3613970565b01612324565b90565b90613d1090613d09613c66565b50156113b8565b5f14613d1c5750613da0565b613d2582613a1b565b613d37613d315f610fe4565b91610313565b1480613d85575b613d46575090565b613d8190613d52610132565b9182917f9996b3150000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b50803b613d9a613d945f610fe4565b91610313565b14613d3e565b613da981613a1b565b613dbb613db55f610fe4565b91610313565b115f14613dca57805190602001fd5b613dd2610132565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280613e02600482016107f2565b0390fdfea264697066735822122011669f6e7c9fc6c69c7c277d31e871e1a8fd5eff3936ba41f92fe09eef77345d64736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x3E3C PUSH2 0xA4 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x3562 ADD MSTORE DUP2 DUP2 PUSH2 0x35E7 ADD MSTORE PUSH2 0x37E2 ADD MSTORE PUSH2 0x3E3C SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x55 PUSH1 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x5D PUSH1 0x97 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7C PUSH1 0x78 PUSH1 0x80 SWAP3 PUSH1 0x5F JUMP JUMPDEST PUSH1 0x6A JUMP JUMPDEST PUSH1 0x5F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8A SWAP1 PUSH1 0x6D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x94 SWAP1 PUSH1 0x83 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x9E ADDRESS PUSH1 0x8D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0xD8E6E2C EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x21579B79 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x35823D76 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x4056C37F EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4209BED0 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x4AA06652 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xAE3CCE1C EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0xE74E9B06 EQ PUSH2 0xDC JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xE9D JUMP JUMPDEST PUSH2 0xE5E JUMP JUMPDEST PUSH2 0xC5B JUMP JUMPDEST PUSH2 0xC26 JUMP JUMPDEST PUSH2 0xB34 JUMP JUMPDEST PUSH2 0xA04 JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST PUSH2 0x3FD JUMP JUMPDEST PUSH2 0x17E JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x14A JUMPI JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x165 SWAP1 PUSH2 0x14F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x17C SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x15C JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x1AE JUMPI PUSH2 0x18E CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x199 PUSH2 0xED8 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x169 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x1FC SWAP1 PUSH2 0x1BB JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST SWAP1 PUSH2 0x22E PUSH2 0x227 PUSH2 0x132 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x1F2 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x248 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x273 SWAP1 PUSH2 0x251 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x27F DUP2 PUSH2 0x26A JUMP JUMPDEST SUB PUSH2 0x286 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x297 DUP3 PUSH2 0x276 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2AE PUSH2 0x2A9 DUP3 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x2EB JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x2D2 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x2E0 DUP5 DUP7 PUSH2 0x28A JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x2C5 JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x30E JUMPI DUP2 PUSH1 0x20 PUSH2 0x30B SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x299 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31F DUP2 PUSH2 0x313 JUMP JUMPDEST SUB PUSH2 0x326 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x337 DUP3 PUSH2 0x316 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0x3C8 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3C3 JUMPI DUP4 PUSH2 0x364 SWAP2 DUP5 ADD PUSH2 0x2F0 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3BE JUMPI DUP2 PUSH2 0x385 SWAP2 DUP6 ADD PUSH2 0x2F0 JUMP JUMPDEST SWAP3 PUSH2 0x393 DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x32A JUMP JUMPDEST SWAP3 PUSH2 0x3BB PUSH2 0x3A4 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x32A JUMP JUMPDEST SWAP4 PUSH2 0x3B2 DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x32A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x3D6 SWAP1 PUSH2 0x313 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x3FB SWAP3 SWAP5 SWAP4 PUSH2 0x3F4 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x435 JUMPI PUSH2 0x41C PUSH2 0x410 CALLDATASIZE PUSH1 0x4 PUSH2 0x339 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x1666 JUMP JUMPDEST SWAP1 PUSH2 0x431 PUSH2 0x428 PUSH2 0x132 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x3DA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH1 0xE0 DUP2 DUP4 SUB SLT PUSH2 0x4A5 JUMPI PUSH2 0x450 DUP3 PUSH0 DUP4 ADD PUSH2 0x28A JUMP JUMPDEST SWAP3 PUSH2 0x45E DUP4 PUSH1 0x20 DUP5 ADD PUSH2 0x28A JUMP JUMPDEST SWAP3 PUSH2 0x46C DUP2 PUSH1 0x40 DUP6 ADD PUSH2 0x32A JUMP JUMPDEST SWAP3 PUSH2 0x47A DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x32A JUMP JUMPDEST SWAP3 PUSH2 0x4A2 PUSH2 0x48B DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH2 0x499 DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0x32A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLVALUE PUSH2 0x4E2 JUMPI PUSH2 0x4C9 PUSH2 0x4BD CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST SWAP6 SWAP5 SWAP1 SWAP5 SWAP4 SWAP2 SWAP4 PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 PUSH2 0x4DE PUSH2 0x4D5 PUSH2 0x132 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x3DA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x50F JUMPI DUP1 PUSH2 0x503 PUSH2 0x50C SWAP3 PUSH0 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x28A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52B PUSH2 0x526 PUSH2 0x530 SWAP3 PUSH2 0x251 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x251 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x53C SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x548 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x555 SWAP1 PUSH2 0x53F JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x56B SWAP1 PUSH2 0x53F JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x58E SWAP1 PUSH1 0x8 PUSH2 0x593 SWAP4 MUL PUSH2 0x577 JUMP JUMPDEST PUSH2 0x57B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5A1 SWAP2 SLOAD PUSH2 0x57E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5BD PUSH2 0x5C2 SWAP3 PUSH2 0x5B8 PUSH1 0x1 SWAP4 PUSH0 SWAP5 PUSH2 0x54B JUMP JUMPDEST PUSH2 0x561 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5D8 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x60B JUMPI PUSH2 0x607 PUSH2 0x5F6 PUSH2 0x5F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E7 JUMP JUMPDEST SWAP1 PUSH2 0x5A4 JUMP JUMPDEST PUSH2 0x5FE PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5C5 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x676 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x671 JUMPI DUP4 PUSH2 0x63B SWAP2 DUP5 ADD PUSH2 0x2F0 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x66C JUMPI PUSH2 0x660 DUP2 PUSH2 0x669 SWAP4 DUP7 ADD PUSH2 0x2F0 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x32A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLVALUE PUSH2 0x6AD JUMPI PUSH2 0x694 PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x610 JUMP JUMPDEST SWAP2 PUSH2 0x1D5F JUMP JUMPDEST SWAP1 PUSH2 0x6A9 PUSH2 0x6A0 PUSH2 0x132 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x3DA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x6E7 JUMPI PUSH2 0x6E4 PUSH2 0x6CD DUP5 PUSH0 DUP6 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH2 0x6DB DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x32A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLVALUE PUSH2 0x71D JUMPI PUSH2 0x719 PUSH2 0x708 PUSH2 0x702 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B2 JUMP JUMPDEST SWAP2 PUSH2 0x201D JUMP JUMPDEST PUSH2 0x710 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5C5 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x744 JUMPI PUSH2 0x740 PUSH1 0x20 SWAP2 PUSH2 0x1BB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x769 PUSH2 0x764 DUP3 PUSH2 0x726 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x785 JUMPI PUSH2 0x783 SWAP3 PUSH2 0x749 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x722 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x7A8 JUMPI DUP2 PUSH1 0x20 PUSH2 0x7A5 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x754 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x7ED JUMPI PUSH2 0x7C6 DUP4 PUSH0 DUP4 ADD PUSH2 0x28A JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7E8 JUMPI PUSH2 0x7E5 SWAP3 ADD PUSH2 0x78A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x80B PUSH2 0x805 CALLDATASIZE PUSH1 0x4 PUSH2 0x7AD JUMP JUMPDEST SWAP1 PUSH2 0x21E6 JUMP JUMPDEST PUSH2 0x813 PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0x81D DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x82D SWAP1 PUSH2 0x821 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x844 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x824 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x876 JUMPI PUSH2 0x856 CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x872 PUSH2 0x861 PUSH2 0x2266 JUMP JUMPDEST PUSH2 0x869 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x831 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST CALLVALUE PUSH2 0x8A9 JUMPI PUSH2 0x88B CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x893 PUSH2 0x229E JUMP JUMPDEST PUSH2 0x89B PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0x8A5 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x8D7 SWAP1 PUSH1 0x8 PUSH2 0x8DC SWAP4 MUL PUSH2 0x577 JUMP JUMPDEST PUSH2 0x8AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8EA SWAP2 SLOAD PUSH2 0x8C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8F7 PUSH0 DUP1 PUSH2 0x8DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x903 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x90F SWAP1 PUSH2 0x8FA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x926 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x906 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x958 JUMPI PUSH2 0x938 CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x954 PUSH2 0x943 PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x94B PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x913 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH2 0x966 SWAP1 PUSH2 0x26A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x97D SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x9AF JUMPI PUSH2 0x98F CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x9AB PUSH2 0x99A PUSH2 0x22E6 JUMP JUMPDEST PUSH2 0x9A2 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x14F JUMP JUMPDEST SUB PUSH2 0x9C4 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x9D5 DUP3 PUSH2 0x9B4 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x9FF JUMPI DUP1 PUSH2 0x9F3 PUSH2 0x9FC SWAP3 PUSH0 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x9C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLVALUE PUSH2 0xA33 JUMPI PUSH2 0xA1D PUSH2 0xA17 CALLDATASIZE PUSH1 0x4 PUSH2 0x9D7 JUMP JUMPDEST SWAP1 PUSH2 0x2581 JUMP JUMPDEST PUSH2 0xA25 PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0xA2F DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA56 JUMPI PUSH2 0xA52 PUSH1 0x20 SWAP2 PUSH2 0x1BB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST SWAP1 PUSH2 0xA6D PUSH2 0xA68 DUP4 PUSH2 0xA38 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xAA3 PUSH1 0x5 PUSH2 0xA5B JUMP JUMPDEST SWAP1 PUSH2 0xAB0 PUSH1 0x20 DUP4 ADD PUSH2 0xA72 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xABA PUSH2 0xA99 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAC5 PUSH2 0xAB2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAD0 PUSH2 0xABD JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0xB0A PUSH2 0xB13 PUSH1 0x20 SWAP4 PUSH2 0xB18 SWAP4 PUSH2 0xB01 DUP2 PUSH2 0xAD3 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0xAD7 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0xAE0 JUMP JUMPDEST PUSH2 0x1BB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB31 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xAEB JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB64 JUMPI PUSH2 0xB44 CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0xB60 PUSH2 0xB4F PUSH2 0xAC8 JUMP JUMPDEST PUSH2 0xB57 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB1C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xB82 JUMPI PUSH2 0xB7F SWAP2 PUSH0 ADD PUSH2 0x28A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xBA3 SWAP1 PUSH2 0x26A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xBB4 DUP2 PUSH1 0x20 SWAP4 PUSH2 0xB9A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBDB PUSH2 0xBD5 PUSH2 0xBCE DUP5 PUSH2 0xB87 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xB8B JUMP JUMPDEST SWAP3 PUSH2 0xB94 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xBEB JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0xC04 PUSH2 0xBFE PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0xBA7 JUMP JUMPDEST SWAP5 PUSH2 0xBB8 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0xBDE JUMP JUMPDEST PUSH2 0xC23 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xBBE JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xC56 JUMPI PUSH2 0xC52 PUSH2 0xC41 PUSH2 0xC3C CALLDATASIZE PUSH1 0x4 PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x2641 JUMP JUMPDEST PUSH2 0xC49 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC0E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST CALLVALUE PUSH2 0xC89 JUMPI PUSH2 0xC73 PUSH2 0xC6E CALLDATASIZE PUSH1 0x4 PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x294E JUMP JUMPDEST PUSH2 0xC7B PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0xC85 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xCCC JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xCC7 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0xCC2 JUMPI JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xD0B JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xD06 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0xD01 JUMPI JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x80 DUP3 DUP5 SUB SLT PUSH2 0xDBA JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDB5 JUMPI DUP4 PUSH2 0xD3B SWAP2 DUP5 ADD PUSH2 0xC92 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDB0 JUMPI DUP2 PUSH2 0xD5E SWAP2 DUP5 ADD PUSH2 0xC92 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDAB JUMPI DUP4 PUSH2 0xD81 SWAP2 DUP5 ADD PUSH2 0xCD1 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDA6 JUMPI PUSH2 0xDA2 SWAP3 ADD PUSH2 0xC92 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xDDB SWAP1 PUSH2 0x313 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xDEC DUP2 PUSH1 0x20 SWAP4 PUSH2 0xDD2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE13 PUSH2 0xE0D PUSH2 0xE06 DUP5 PUSH2 0xDBF JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xDC3 JUMP JUMPDEST SWAP3 PUSH2 0xDCC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xE23 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0xE3C PUSH2 0xE36 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0xDDF JUMP JUMPDEST SWAP5 PUSH2 0xDF0 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0xE16 JUMP JUMPDEST PUSH2 0xE5B SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xDF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE98 JUMPI PUSH2 0xE94 PUSH2 0xE83 PUSH2 0xE74 CALLDATASIZE PUSH1 0x4 PUSH2 0xD10 JUMP JUMPDEST SWAP7 SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP5 SWAP4 SWAP3 SWAP4 PUSH2 0x2B8F JUMP JUMPDEST PUSH2 0xE8B PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xE46 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST CALLVALUE PUSH2 0xECB JUMPI PUSH2 0xEB5 PUSH2 0xEB0 CALLDATASIZE PUSH1 0x4 PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x2E8D JUMP JUMPDEST PUSH2 0xEBD PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0xEC7 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xEE0 PUSH2 0xED4 JUMP JUMPDEST POP PUSH2 0xEE9 PUSH2 0x2E98 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xF24 PUSH1 0x7 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0xF2D DUP2 PUSH2 0xEF0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xF46 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xF17 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xF50 JUMPI JUMP JUMPDEST PUSH2 0xF58 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xF88 PUSH1 0x4 DUP3 ADD PUSH2 0xF31 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xFB9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0xFB4 DUP9 PUSH2 0xFAD PUSH2 0xFA7 TIMESTAMP PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0xF49 JUMP JUMPDEST PUSH2 0xFBD JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP1 PUSH2 0xFD5 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0xFD0 PUSH2 0x2F58 JUMP JUMPDEST PUSH2 0x14DC JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0xFDF PUSH2 0x2FE8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFF8 PUSH2 0xFF3 PUSH2 0xFFD SWAP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x696E76616C69642066726F6D20616D6F756E7400000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1034 PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x103D DUP2 PUSH2 0x1000 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1056 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1027 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1060 JUMPI JUMP JUMPDEST PUSH2 0x1068 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1098 PUSH1 0x4 DUP3 ADD PUSH2 0x1041 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10B3 PUSH2 0x10AE PUSH2 0x10B8 SWAP3 PUSH2 0x109C JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x696E76616C696420746F6B656E20706174680000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x10EF PUSH1 0x12 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x10F8 DUP2 PUSH2 0x10BB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1111 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x111B JUMPI JUMP JUMPDEST PUSH2 0x1123 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1153 PUSH1 0x4 DUP3 ADD PUSH2 0x10FC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x116E PUSH2 0x1169 PUSH2 0x1173 SWAP3 PUSH2 0x1157 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x11B2 PUSH2 0x11B8 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x313 JUMP JUMPDEST SWAP3 PUSH2 0x313 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x11C3 JUMPI JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH0 PUSH32 0x696E76616C696420706F6F6C2070617468000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x11FC PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x1205 DUP2 PUSH2 0x11C8 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x121E SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x11EF JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1228 JUMPI JUMP JUMPDEST PUSH2 0x1230 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1260 PUSH1 0x4 DUP3 ADD PUSH2 0x1209 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1278 PUSH2 0x1273 PUSH2 0x127D SWAP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x251 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1289 SWAP1 PUSH2 0x1264 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x7A65726F20616464726573730000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x12C0 PUSH1 0xC PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x12C9 DUP2 PUSH2 0x128C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x12E2 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x12B3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x12EC JUMPI JUMP JUMPDEST PUSH2 0x12F4 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1324 PUSH1 0x4 DUP3 ADD PUSH2 0x12CD JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x135F DUP3 PUSH2 0xB87 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1370 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x137F SWAP1 MLOAD PUSH2 0x26A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x138B SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1397 SWAP1 PUSH2 0x1382 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13A3 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13AF SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x13C6 DUP2 PUSH2 0x13B8 JUMP JUMPDEST SUB PUSH2 0x13CD JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x13DE DUP3 PUSH2 0x13BD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x13F9 JUMPI PUSH2 0x13F6 SWAP2 PUSH0 ADD PUSH2 0x13D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x1427 PUSH2 0x142E SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x141D PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1438 PUSH2 0x132 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x616D6F756E744F757420746F6F206C6F77000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1474 PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x147D DUP2 PUSH2 0x1440 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1496 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1467 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x14A0 JUMPI JUMP JUMPDEST PUSH2 0x14A8 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14D8 PUSH1 0x4 DUP3 ADD PUSH2 0x1481 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP5 SWAP8 SWAP6 SWAP3 SWAP4 SWAP7 POP POP POP PUSH2 0x1503 DUP6 PUSH2 0x14FD PUSH2 0x14F7 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x1529 PUSH2 0x150F DUP5 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1522 PUSH2 0x151C PUSH1 0x2 PUSH2 0x109F JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x1114 JUMP JUMPDEST PUSH2 0x1568 PUSH2 0x1535 DUP4 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1562 PUSH2 0x155C PUSH2 0x1557 PUSH2 0x1547 DUP9 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1551 PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x1221 JUMP JUMPDEST PUSH2 0x158D DUP2 PUSH2 0x1586 PUSH2 0x1580 PUSH2 0x157B PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ ISZERO PUSH2 0x12E5 JUMP JUMPDEST PUSH2 0x15B8 PUSH2 0x15B3 PUSH2 0x15AE PUSH2 0x15A9 DUP7 PUSH2 0x15A3 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST SWAP5 PUSH1 0x20 PUSH4 0x23B872DD SWAP7 CALLER SWAP1 PUSH2 0x15E9 PUSH0 PUSH2 0x15D0 ADDRESS PUSH2 0x13A6 JUMP JUMPDEST SWAP11 PUSH2 0x15F4 DUP8 PUSH2 0x15DD PUSH2 0x132 JUMP JUMPDEST SWAP14 DUP15 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x13B2 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13FE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x1661 JUMPI PUSH2 0x1633 SWAP7 PUSH2 0x1616 SWAP6 PUSH2 0x1635 JUMPI JUMPDEST POP SWAP3 SWAP1 SWAP2 SWAP3 PUSH2 0x30BD JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0x162C PUSH2 0x1626 DUP7 SWAP3 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x1499 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1655 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x165A JUMPI JUMPDEST PUSH2 0x164D DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x160C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1643 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST SWAP1 PUSH2 0x1685 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1677 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x167F PUSH2 0xEEC JUMP JUMPDEST SWAP1 PUSH2 0xF8C JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP1 PUSH2 0x16B7 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x16B2 DUP10 PUSH2 0x16AB PUSH2 0x16A5 TIMESTAMP PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0xF49 JUMP JUMPDEST PUSH2 0x16BB JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP1 PUSH2 0x16D4 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x16CF PUSH2 0x2F58 JUMP JUMPDEST PUSH2 0x1928 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x16DE PUSH2 0x2FE8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x16F1 PUSH2 0x16F6 SWAP2 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x8AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1703 SWAP1 SLOAD PUSH2 0x16E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1713 DUP3 PUSH2 0x276 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x172E JUMPI PUSH2 0x172B SWAP2 PUSH0 ADD PUSH2 0x1706 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x173C SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1748 SWAP1 PUSH2 0x1733 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x177E PUSH1 0x20 DUP1 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x1787 DUP2 PUSH2 0x174B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x17A0 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1772 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x17AA JUMPI JUMP JUMPDEST PUSH2 0x17B2 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x17E2 PUSH1 0x4 DUP3 ADD PUSH2 0x178B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x17EF SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1813 SWAP3 SWAP5 SWAP4 PUSH2 0x180C PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x666F756E64000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C5065726970686572793A20506F6F6C206E6F7420 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x186F PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x1878 DUP2 PUSH2 0x1815 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1891 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1862 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x189B JUMPI JUMP JUMPDEST PUSH2 0x18A3 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x18D3 PUSH1 0x4 DUP3 ADD PUSH2 0x187C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x18E9 PUSH2 0x18E4 DUP4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x1918 PUSH2 0x1900 DUP4 PUSH2 0x18D7 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x190E DUP7 SWAP4 PUSH2 0x230 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x18EE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1924 SWAP1 PUSH2 0x26A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 SWAP2 SWAP5 SWAP7 SWAP4 SWAP3 SWAP9 SWAP8 POP POP POP PUSH2 0x195F PUSH1 0x20 PUSH2 0x1949 PUSH2 0x1944 PUSH0 PUSH2 0x16F9 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST PUSH4 0x32569E02 SWAP1 PUSH2 0x1957 PUSH2 0x132 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x196F PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1BB2 JUMPI PUSH2 0x19B0 SWAP2 PUSH2 0x198F SWAP2 PUSH0 SWAP2 PUSH2 0x1B84 JUMPI JUMPDEST POP PUSH2 0x173F JUMP JUMPDEST PUSH2 0x19AB DUP4 PUSH2 0x19A5 PUSH2 0x199F PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x17A3 JUMP JUMPDEST PUSH2 0x17E6 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D5E94A7 SWAP2 DUP6 SWAP1 PUSH2 0x19D6 DUP12 SWAP5 PUSH2 0x19E1 PUSH2 0x19CA PUSH2 0x132 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x13B2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x17F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1B7F JUMPI PUSH0 SWAP2 PUSH2 0x1B51 JUMPI JUMPDEST POP SWAP3 PUSH2 0x1A1A DUP5 PUSH2 0x1A13 PUSH2 0x1A0D PUSH2 0x1A08 PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ ISZERO PUSH2 0x1894 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x1A2D PUSH2 0x1A28 DUP4 PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST PUSH4 0x23B872DD SWAP7 SWAP1 PUSH2 0x1A5A PUSH0 PUSH2 0x1A41 ADDRESS PUSH2 0x13A6 JUMP JUMPDEST SWAP10 PUSH2 0x1A65 DUP9 PUSH2 0x1A4E PUSH2 0x132 JUMP JUMPDEST SWAP13 DUP14 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x13B2 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13FE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1B4C JUMPI PUSH2 0x1B1C SWAP9 PUSH2 0x1AFF SWAP7 PUSH2 0x1AC8 SWAP3 PUSH2 0x1B20 JUMPI JUMPDEST POP PUSH2 0x1AAF PUSH2 0x1A96 PUSH2 0x1A91 PUSH1 0x2 PUSH2 0x109F JUMP JUMPDEST PUSH2 0x18F3 JUMP JUMPDEST SWAP4 PUSH2 0x1AAA DUP6 PUSH2 0x1AA4 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x191A JUMP JUMPDEST PUSH2 0x1AC3 DUP4 PUSH2 0x1ABD PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x191A JUMP JUMPDEST PUSH2 0x1AF6 PUSH2 0x1ADD PUSH2 0x1AD8 PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST PUSH2 0x18F3 JUMP JUMPDEST SWAP5 PUSH2 0x1AF1 DUP7 PUSH2 0x1AEB PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x191A JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP3 PUSH2 0x30BD JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x1B15 PUSH2 0x1B0F DUP5 SWAP3 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x1499 JUMP JUMPDEST SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x1B40 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B45 JUMPI JUMPDEST PUSH2 0x1B38 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x1A80 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B2E JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x1B72 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B78 JUMPI JUMPDEST PUSH2 0x1B6A DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x19F3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B60 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x1BA5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1BAB JUMPI JUMPDEST PUSH2 0x1B9D DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x1989 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B93 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST SWAP1 PUSH2 0x1BD7 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1BC9 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x1BD1 PUSH2 0xEEC JUMP JUMPDEST SWAP1 PUSH2 0x1689 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1BE7 SWAP2 ADD PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1BF3 SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1BFF SWAP1 PUSH2 0x1BEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C0B SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C1D PUSH2 0x1C23 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x313 JUMP JUMPDEST SWAP3 PUSH2 0x313 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1C2E JUMPI JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1C40 DUP3 PUSH2 0x316 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1C5B JUMPI PUSH2 0x1C58 SWAP2 PUSH0 ADD PUSH2 0x1C33 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x1C69 SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C75 SWAP1 PUSH2 0x1C60 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C81 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1C93 DUP2 PUSH2 0x1C84 JUMP JUMPDEST SUB PUSH2 0x1C9A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1CAB DUP3 PUSH2 0x1C8A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1CC6 JUMPI PUSH2 0x1CC3 SWAP2 PUSH0 ADD PUSH2 0x1C9E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CE2 PUSH2 0x1CDD PUSH2 0x1CE7 SWAP3 PUSH2 0x1CCB JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x1C84 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CF6 PUSH2 0x1CFC SWAP2 PUSH2 0x1C84 JUMP JUMPDEST SWAP2 PUSH2 0x1C84 JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x1D09 JUMPI JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH2 0x1D17 SWAP1 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x1D25 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH2 0x1D39 PUSH2 0x1D3F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x313 JUMP JUMPDEST SWAP3 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x1D4B DUP4 DUP3 MUL PUSH2 0x313 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1D5A JUMPI JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x1D69 PUSH2 0xEEC JUMP JUMPDEST SWAP1 PUSH2 0x1D72 PUSH2 0xEEC JUMP JUMPDEST SWAP3 PUSH2 0x1D8F DUP3 PUSH2 0x1D89 PUSH2 0x1D83 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x1DB5 PUSH2 0x1D9B DUP8 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1DAE PUSH2 0x1DA8 PUSH1 0x2 PUSH2 0x109F JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x1114 JUMP JUMPDEST PUSH2 0x1DF4 PUSH2 0x1DC1 DUP3 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1DEE PUSH2 0x1DE8 PUSH2 0x1DE3 PUSH2 0x1DD3 DUP12 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1DDD PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x1221 JUMP JUMPDEST PUSH2 0x1DFC PUSH2 0xEEC JUMP JUMPDEST SWAP2 SWAP4 PUSH2 0x1E06 PUSH2 0xEEC JUMP JUMPDEST SWAP4 JUMPDEST DUP5 PUSH2 0x1E23 PUSH2 0x1E1D PUSH2 0x1E18 DUP7 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x2012 JUMPI DUP5 PUSH2 0x1E3C PUSH2 0x1E36 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST SUB PUSH2 0x2008 JUMPI JUMPDEST POP PUSH2 0x1E66 PUSH2 0x1E61 PUSH2 0x1E5C PUSH2 0x1E57 DUP6 DUP9 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x1BF6 JUMP JUMPDEST PUSH2 0x1C02 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x43C2E2F5 SWAP2 PUSH2 0x1E81 PUSH2 0x1E7C DUP12 DUP10 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP1 PUSH2 0x1EC4 PUSH2 0x1EAB PUSH2 0x1EA6 DUP14 PUSH2 0x1EA0 DUP13 PUSH2 0x1E9A PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP5 PUSH2 0x1ECF DUP12 PUSH2 0x1EB8 PUSH2 0x132 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x13B2 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2003 JUMPI DUP9 SWAP2 PUSH2 0x1F3B SWAP2 PUSH0 SWAP2 PUSH2 0x1FD5 JUMPI JUMPDEST POP SWAP3 DUP6 PUSH1 0x20 PUSH2 0x1F25 PUSH2 0x1F20 PUSH2 0x1F1B PUSH2 0x1F16 DUP13 PUSH2 0x1F10 PUSH1 0x12 SWAP11 SWAP2 PUSH2 0x1F0A PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1C78 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1F33 PUSH2 0x132 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1F4B PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FD0 JUMPI PUSH2 0x1F83 PUSH2 0x1F7E PUSH2 0x1F89 SWAP4 PUSH2 0x1F95 SWAP8 PUSH2 0x1F8F SWAP8 PUSH0 SWAP3 PUSH2 0x1F9C JUMPI JUMPDEST POP PUSH2 0x1F79 SWAP1 PUSH2 0x1CCE JUMP JUMPDEST PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x1D0E JUMP JUMPDEST SWAP1 PUSH2 0x1D2A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP5 PUSH2 0x1BDB JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x1E08 JUMP JUMPDEST PUSH2 0x1F79 SWAP2 SWAP3 POP PUSH2 0x1FC2 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FC9 JUMPI JUMPDEST PUSH2 0x1FBA DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1CAD JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1F6F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1FB0 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x1FF6 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FFC JUMPI JUMPDEST PUSH2 0x1FEE DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C42 JUMP JUMPDEST PUSH0 PUSH2 0x1EE7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1FE4 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP4 PUSH0 PUSH2 0x1E42 JUMP JUMPDEST SWAP5 POP SWAP6 POP POP POP POP SWAP2 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2026 PUSH2 0xEEC JUMP JUMPDEST POP PUSH2 0x2053 PUSH1 0x20 PUSH2 0x203D PUSH2 0x2038 PUSH0 PUSH2 0x16F9 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST PUSH4 0x32569E02 SWAP1 PUSH2 0x204B PUSH2 0x132 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2063 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x21B8 JUMPI PUSH2 0x2088 SWAP2 PUSH2 0x2083 SWAP2 PUSH0 SWAP2 PUSH2 0x218A JUMPI JUMPDEST POP PUSH2 0x173F JUMP JUMPDEST PUSH2 0x17E6 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x2D5E94A7 SWAP4 DUP3 SWAP1 PUSH2 0x20AF DUP6 SWAP7 PUSH2 0x20BA PUSH2 0x20A3 PUSH2 0x132 JUMP JUMPDEST SWAP9 DUP10 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x13B2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x17F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x2185 JUMPI PUSH2 0x20E4 PUSH2 0x20DF PUSH1 0x20 SWAP6 PUSH2 0x2104 SWAP4 PUSH0 SWAP2 PUSH2 0x2158 JUMPI JUMPDEST POP PUSH2 0x1BF6 JUMP JUMPDEST PUSH2 0x1C02 JUMP JUMPDEST SWAP2 PUSH2 0x210F PUSH4 0x43C2E2F5 SWAP2 SWAP5 SWAP7 PUSH2 0x20F8 PUSH2 0x132 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x13B2 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2153 JUMPI PUSH0 SWAP2 PUSH2 0x2125 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2146 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x214C JUMPI JUMPDEST PUSH2 0x213E DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C42 JUMP JUMPDEST PUSH0 PUSH2 0x2121 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2134 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x2178 SWAP2 POP DUP8 RETURNDATASIZE DUP2 GT PUSH2 0x217E JUMPI JUMPDEST PUSH2 0x2170 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x20D9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2166 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x21AB SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x21B1 JUMPI JUMPDEST PUSH2 0x21A3 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x207D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2199 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST SWAP1 PUSH2 0x21CF SWAP2 PUSH2 0x21CA PUSH2 0x3551 JUMP JUMPDEST PUSH2 0x21D1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x21E4 SWAP2 PUSH2 0x21DF DUP2 PUSH2 0x3623 JUMP JUMPDEST PUSH2 0x3693 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x21F0 SWAP2 PUSH2 0x21BD JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2207 SWAP1 PUSH2 0x2202 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0x225A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x2226 PUSH2 0x2221 PUSH2 0x222B SWAP3 PUSH2 0x220A JUMP JUMPDEST PUSH2 0x220D JUMP JUMPDEST PUSH2 0x821 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2257 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x2212 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x2263 PUSH2 0x222E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2276 PUSH2 0x2271 PUSH2 0x21F2 JUMP JUMPDEST PUSH2 0x21F6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2281 PUSH2 0x384F JUMP JUMPDEST PUSH2 0x2289 PUSH2 0x228B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x229C PUSH2 0x2297 PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x38E0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22A6 PUSH2 0x2279 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x22D1 PUSH2 0x22D6 SWAP2 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x22AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22E3 SWAP1 SLOAD PUSH2 0x22C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22EE PUSH2 0x22A8 JUMP JUMPDEST POP PUSH2 0x2301 PUSH0 PUSH2 0x22FB PUSH2 0x394C JUMP JUMPDEST ADD PUSH2 0x22D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x231C PUSH2 0x2321 SWAP2 PUSH2 0x2304 JUMP JUMPDEST PUSH2 0x230A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x232E SWAP1 SLOAD PUSH2 0x2310 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x234A PUSH2 0x234F SWAP2 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x2331 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x235C SWAP1 SLOAD PUSH2 0x233E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2372 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x220D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2390 PUSH2 0x238B PUSH2 0x2395 SWAP3 PUSH2 0x14F JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x23B0 PUSH2 0x23AB PUSH2 0x23B7 SWAP3 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x2398 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x235F JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x23D5 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x23BB JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x23E8 SWAP1 PUSH2 0x13B8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2403 PUSH2 0x23FE PUSH2 0x240A SWAP3 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x23EB JUMP JUMPDEST DUP3 SLOAD PUSH2 0x23C1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x2419 PUSH2 0x3970 JUMP JUMPDEST SWAP1 PUSH2 0x2425 PUSH0 DUP4 ADD PUSH2 0x2324 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x24D6 JUMPI JUMPDEST PUSH2 0x249A JUMPI PUSH2 0x245F SWAP3 PUSH2 0x2456 SWAP2 PUSH2 0x2444 DUP7 PUSH0 DUP7 ADD PUSH2 0x239B JUMP JUMPDEST PUSH2 0x2451 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x23EE JUMP JUMPDEST PUSH2 0x256B JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x23EE JUMP JUMPDEST PUSH2 0x2495 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x248C PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x169 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x24A2 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x24D2 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x24E2 PUSH0 DUP4 ADD PUSH2 0x2352 JUMP JUMPDEST PUSH2 0x24F4 PUSH2 0x24EE DUP7 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST LT ISZERO PUSH2 0x242C JUMP JUMPDEST PUSH2 0x2504 SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2510 SWAP1 PUSH2 0x24FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2532 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x220D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2545 SWAP1 PUSH2 0x24FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2560 PUSH2 0x255B PUSH2 0x2567 SWAP3 PUSH2 0x253C JUMP JUMPDEST PUSH2 0x2548 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2513 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x257F SWAP2 POP PUSH2 0x2579 SWAP1 PUSH2 0x2507 JUMP JUMPDEST PUSH0 PUSH2 0x254B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x258B SWAP2 PUSH2 0x240E JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x25A7 PUSH2 0x25A2 DUP3 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x25E4 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x25CB JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x25D9 DUP5 DUP7 PUSH2 0x1706 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2607 JUMPI DUP2 PUSH1 0x20 PUSH2 0x2604 SWAP4 MLOAD SWAP2 ADD PUSH2 0x2592 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x263C JUMPI PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2637 JUMPI PUSH2 0x2634 SWAP3 ADD PUSH2 0x25E9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x2649 PUSH2 0x258D JUMP JUMPDEST POP PUSH2 0x2676 PUSH1 0x20 PUSH2 0x2660 PUSH2 0x265B PUSH0 PUSH2 0x16F9 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST PUSH4 0x32569E02 SWAP1 PUSH2 0x266E PUSH2 0x132 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2686 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x2741 JUMPI PUSH2 0x26AF PUSH2 0x26AA PUSH2 0x26D6 SWAP5 PUSH0 SWAP5 DUP6 SWAP2 PUSH2 0x2713 JUMPI JUMPDEST POP PUSH2 0x173F JUMP JUMPDEST PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0x26CB PUSH4 0xB4340E6A PUSH2 0x26BF PUSH2 0x132 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x13B2 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x270E JUMPI PUSH0 SWAP2 PUSH2 0x26EC JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2708 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2700 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x260C JUMP JUMPDEST PUSH0 PUSH2 0x26E8 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x2734 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x273A JUMPI JUMPDEST PUSH2 0x272C DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x26A4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2722 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x275A PUSH2 0x2755 PUSH2 0x275F SWAP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2776 PUSH2 0x2771 PUSH2 0x277B SWAP3 PUSH2 0x1157 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2787 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2793 SWAP1 PUSH2 0x2762 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x27AA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x278A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x27B4 PUSH2 0x3970 JUMP JUMPDEST SWAP1 PUSH2 0x27C9 PUSH2 0x27C3 PUSH0 DUP5 ADD PUSH2 0x2324 JUMP JUMPDEST ISZERO PUSH2 0x13B8 JUMP JUMPDEST SWAP1 PUSH2 0x27D5 PUSH0 DUP5 ADD PUSH2 0x2352 JUMP JUMPDEST DUP1 PUSH2 0x27E8 PUSH2 0x27E2 PUSH0 PUSH2 0x2746 JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ DUP1 PUSH2 0x2922 JUMPI JUMPDEST SWAP1 PUSH2 0x2803 PUSH2 0x27FD PUSH1 0x1 PUSH2 0x2762 JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ DUP1 PUSH2 0x28FA JUMPI JUMPDEST PUSH2 0x2815 SWAP1 SWAP2 ISZERO PUSH2 0x13B8 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x28E9 JUMPI JUMPDEST POP PUSH2 0x28AD JUMPI PUSH2 0x2845 SWAP1 PUSH2 0x283A PUSH2 0x2832 PUSH1 0x1 PUSH2 0x2762 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x239B JUMP JUMPDEST DUP3 PUSH2 0x289B JUMPI JUMPDEST PUSH2 0x2929 JUMP JUMPDEST PUSH2 0x284D JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x285A SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x23EE JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2892 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x2889 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2797 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x284A JUMP JUMPDEST PUSH2 0x28A8 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x23EE JUMP JUMPDEST PUSH2 0x2840 JUMP JUMPDEST PUSH2 0x28B5 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x28E5 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x28F4 SWAP2 POP ISZERO PUSH2 0x13B8 JUMP JUMPDEST PUSH0 PUSH2 0x281C JUMP JUMPDEST POP PUSH2 0x2815 PUSH2 0x2907 ADDRESS PUSH2 0x277E JUMP JUMPDEST EXTCODESIZE PUSH2 0x291A PUSH2 0x2914 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x280A JUMP JUMPDEST POP DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH2 0x2946 PUSH2 0x294C SWAP2 PUSH2 0x2938 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x2941 CALLER PUSH2 0x39C6 JUMP JUMPDEST PUSH2 0x2507 JUMP JUMPDEST PUSH0 PUSH2 0x254B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2957 SWAP1 PUSH2 0x27AC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E70757420617272617973206C656E677468206D69736D6174636800000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x299A PUSH1 0x1C PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x29A3 DUP2 PUSH2 0x2966 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x29BC SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x298D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x29C6 JUMPI JUMP JUMPDEST PUSH2 0x29CE PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x29FE PUSH1 0x4 DUP3 ADD PUSH2 0x29A7 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2A1A JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST SWAP1 PUSH2 0x2A31 PUSH2 0x2A2C DUP4 PUSH2 0x2A02 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x2A60 PUSH2 0x2A48 DUP4 PUSH2 0x2A1F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x2A56 DUP7 SWAP4 PUSH2 0x2A02 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x2A36 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x2A72 JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1328 JUMP JUMPDEST CALLDATALOAD PUSH2 0x2A81 DUP2 PUSH2 0x316 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x2A94 JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1328 JUMP JUMPDEST CALLDATALOAD PUSH2 0x2AA3 DUP2 PUSH2 0x276 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742042616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2ADA PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x2AE3 DUP2 PUSH2 0x2AA6 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2AFC SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2ACD JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2B06 JUMPI JUMP JUMPDEST PUSH2 0x2B0E PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2B3E PUSH1 0x4 DUP3 ADD PUSH2 0x2AE7 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B59 PUSH2 0x2B54 PUSH2 0x2B5E SWAP3 PUSH2 0x2B42 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2B6B DUP3 PUSH2 0xDBF JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x2B7C JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x1328 JUMP JUMPDEST SWAP1 PUSH2 0x2B8B SWAP1 PUSH2 0x313 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP5 SWAP2 SWAP6 SWAP4 SWAP8 SWAP7 SWAP3 SWAP1 PUSH2 0x2B9F PUSH2 0x2959 JUMP JUMPDEST POP PUSH2 0x2BAB DUP7 DUP3 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x2BC7 PUSH2 0x2BC1 PUSH2 0x2BBC DUP11 DUP7 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ DUP1 PUSH2 0x2DDA JUMPI JUMPDEST DUP1 PUSH2 0x2DA7 JUMPI JUMPDEST PUSH2 0x2BDD SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x2BF0 PUSH2 0x2BEB DUP8 DUP4 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x2A3B JUMP JUMPDEST SWAP6 PUSH2 0x2BFA PUSH0 PUSH2 0xFE4 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x2C18 PUSH2 0x2C12 PUSH2 0x2C0D DUP6 DUP8 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x2D99 JUMPI DUP9 SWAP1 PUSH2 0x2C4F PUSH2 0x2C37 PUSH2 0x2C32 DUP15 DUP10 DUP6 SWAP2 PUSH2 0x2A62 JUMP JUMPDEST PUSH2 0x2A77 JUMP JUMPDEST PUSH2 0x2C49 PUSH2 0x2C43 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x17A3 JUMP JUMPDEST PUSH2 0x2CE2 DUP13 PUSH2 0x2C8F PUSH2 0x2C8A PUSH2 0x2C81 PUSH2 0x2C7C PUSH2 0x2C73 PUSH2 0x2C6E DUP11 DUP13 DUP11 SWAP2 PUSH2 0x2A84 JUMP JUMPDEST PUSH2 0x2A99 JUMP JUMPDEST SWAP8 DUP12 DUP9 SWAP2 PUSH2 0x2A84 JUMP JUMPDEST PUSH2 0x2A99 JUMP JUMPDEST SWAP3 DUP11 DUP7 SWAP2 PUSH2 0x2A62 JUMP JUMPDEST PUSH2 0x2A77 JUMP JUMPDEST SWAP1 PUSH2 0x2CA4 PUSH2 0x2C9F DUP13 DUP13 DUP8 SWAP2 PUSH2 0x2A84 JUMP JUMPDEST PUSH2 0x2A99 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x2CB8 PUSH2 0x2CB3 DUP9 PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2CD7 CALLER SWAP3 PUSH2 0x2CCB PUSH2 0x132 JUMP JUMPDEST SWAP9 DUP10 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x13B2 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x2D94 JUMPI PUSH2 0x2D61 SWAP7 PUSH2 0x2D1D PUSH2 0x2D49 SWAP6 PUSH2 0x2D5C SWAP8 PUSH0 SWAP2 PUSH2 0x2D66 JUMPI JUMPDEST POP PUSH2 0x2D16 PUSH2 0x2D10 DUP7 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x2AFF JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH0 SWAP4 CALLER SWAP3 SWAP4 PUSH2 0x2D43 PUSH2 0x2D3D TIMESTAMP PUSH2 0x2D37 PUSH2 0x12C PUSH2 0x2B45 JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP7 PUSH2 0xFE4 JUMP JUMPDEST SWAP3 PUSH2 0x1BB7 JUMP JUMPDEST POP PUSH2 0x2D57 DUP12 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x2B61 JUMP JUMPDEST PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0x1BDB JUMP JUMPDEST PUSH2 0x2BFB JUMP JUMPDEST PUSH2 0x2D87 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D8D JUMPI JUMPDEST PUSH2 0x2D7F DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C42 JUMP JUMPDEST PUSH0 PUSH2 0x2D03 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D75 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST POP POP POP POP POP POP POP SWAP2 SWAP3 POP POP SWAP1 JUMP JUMPDEST POP PUSH2 0x2BDD PUSH2 0x2DB6 DUP11 DUP6 SWAP1 PUSH2 0x2962 JUMP JUMPDEST PUSH2 0x2DD2 PUSH2 0x2DCC PUSH2 0x2DC7 DUP10 DUP10 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x2BD4 JUMP JUMPDEST POP PUSH2 0x2DE6 DUP8 DUP4 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x2E02 PUSH2 0x2DFC PUSH2 0x2DF7 DUP13 DUP8 SWAP1 PUSH2 0x2962 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x2BCE JUMP JUMPDEST PUSH2 0x2E19 SWAP1 PUSH2 0x2E14 PUSH2 0x384F JUMP JUMPDEST PUSH2 0x2E1B JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2E36 PUSH2 0x2E30 PUSH2 0x2E2B PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ PUSH2 0x2E46 JUMPI PUSH2 0x2E44 SWAP1 PUSH2 0x38E0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E89 PUSH2 0x2E52 PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x2E5A PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E96 SWAP1 PUSH2 0x2E08 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2EA0 PUSH2 0xED4 JUMP JUMPDEST POP PUSH2 0x2EB3 PUSH0 PUSH2 0x2EAD PUSH2 0x3970 JUMP JUMPDEST ADD PUSH2 0x2352 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2EC2 PUSH2 0x2EC7 SWAP2 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x57B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2ED4 SWAP1 SLOAD PUSH2 0x2EB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2EE1 PUSH1 0x2 PUSH2 0x109F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F0F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x220D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2F2D PUSH2 0x2F28 PUSH2 0x2F32 SWAP3 PUSH2 0x313 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F4D PUSH2 0x2F48 PUSH2 0x2F54 SWAP3 PUSH2 0x2F19 JUMP JUMPDEST PUSH2 0x2F35 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2EE4 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2F60 PUSH2 0x39D1 JUMP JUMPDEST PUSH2 0x2F6B PUSH0 DUP3 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH2 0x2F84 PUSH2 0x2F7E PUSH2 0x2F79 PUSH2 0x2ED7 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x2F9F JUMPI PUSH2 0x2F9D SWAP1 PUSH0 PUSH2 0x2F96 PUSH2 0x2ED7 JUMP JUMPDEST SWAP2 ADD PUSH2 0x2F38 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2FA7 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2FD7 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2FE5 PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3003 PUSH2 0x2FF3 PUSH2 0x39D1 JUMP JUMPDEST PUSH0 PUSH2 0x2FFC PUSH2 0x2FDB JUMP JUMPDEST SWAP2 ADD PUSH2 0x2F38 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x3026 SWAP3 SWAP5 SWAP4 PUSH2 0x301F PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x3050 JUMPI DUP1 PUSH2 0x3044 PUSH2 0x304D SWAP3 PUSH0 DUP7 ADD PUSH2 0x1C33 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x1C33 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x305E SWAP1 PUSH2 0xFE4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP5 PUSH2 0x30AA PUSH2 0x30B4 SWAP3 SWAP9 SWAP8 SWAP6 PUSH2 0x30A0 PUSH1 0xA0 SWAP7 PUSH2 0x3096 PUSH2 0x30BB SWAP11 PUSH2 0x308C PUSH1 0xC0 DUP11 ADD SWAP15 PUSH0 DUP12 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 DUP8 ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST PUSH1 0x60 DUP6 ADD SWAP1 PUSH2 0x3055 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST SWAP4 SWAP3 SWAP1 PUSH2 0x30C8 PUSH2 0xEEC JUMP JUMPDEST SWAP2 PUSH2 0x30D1 PUSH2 0xEEC JUMP JUMPDEST SWAP4 PUSH2 0x30DA PUSH2 0xEEC JUMP JUMPDEST POP SWAP4 PUSH2 0x30E4 PUSH2 0x22A8 JUMP JUMPDEST POP PUSH2 0x30ED PUSH2 0xEEC JUMP JUMPDEST SWAP4 JUMPDEST DUP5 PUSH2 0x310A PUSH2 0x3104 PUSH2 0x30FF DUP8 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x353B JUMPI DUP5 PUSH2 0x3123 PUSH2 0x311D PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ DUP1 PUSH2 0x3518 JUMPI JUMPDEST PUSH0 EQ PUSH2 0x34A2 JUMPI POP DUP2 JUMPDEST PUSH2 0x3156 PUSH2 0x3151 PUSH2 0x314C PUSH2 0x3147 DUP12 DUP10 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 PUSH2 0x3167 ADDRESS PUSH2 0x13A6 JUMP JUMPDEST SWAP1 PUSH2 0x3196 PUSH2 0x317E PUSH2 0x3179 DUP11 DUP13 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP5 PUSH2 0x31A1 PUSH2 0x318A PUSH2 0x132 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x13B2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x17F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x349D JUMPI PUSH0 SWAP2 PUSH2 0x346F JUMPI JUMPDEST POP PUSH2 0x31C7 PUSH2 0x31C1 DUP9 SWAP3 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x33C2 JUMPI JUMPDEST PUSH1 0x40 DUP9 PUSH2 0x31F4 PUSH2 0x31EF PUSH2 0x31EA PUSH2 0x31E5 DUP10 DUP12 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x1BF6 JUMP JUMPDEST PUSH2 0x1C02 JUMP JUMPDEST PUSH2 0x3274 PUSH0 PUSH4 0x9908FC8B PUSH2 0x327F PUSH2 0x323A PUSH2 0x3235 DUP14 PUSH2 0x322F PUSH2 0x321D PUSH2 0x3218 DUP12 DUP5 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP10 SWAP2 PUSH2 0x3229 PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP8 DUP14 SWAP1 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH2 0x3268 PUSH2 0x132 JUMP JUMPDEST SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP9 PUSH2 0x13B2 JUMP JUMPDEST DUP9 MSTORE PUSH1 0x4 DUP9 ADD PUSH2 0x3062 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x33BD JUMPI DUP9 SWAP2 PUSH0 DUP1 SWAP2 SWAP1 SWAP5 PUSH2 0x3387 JUMPI JUMPDEST POP SWAP1 PUSH2 0x32ED SWAP2 PUSH1 0x20 PUSH2 0x32D7 PUSH2 0x32D2 PUSH2 0x32CD PUSH2 0x32C8 DUP13 PUSH2 0x32C2 PUSH1 0x12 SWAP11 SWAP2 PUSH2 0x32BC PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1C78 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x32E5 PUSH2 0x132 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x32FD PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3382 JUMPI PUSH2 0x3335 PUSH2 0x3330 PUSH2 0x333B SWAP4 PUSH2 0x3347 SWAP8 PUSH2 0x3341 SWAP8 PUSH0 SWAP3 PUSH2 0x334E JUMPI JUMPDEST POP PUSH2 0x332B SWAP1 PUSH2 0x1CCE JUMP JUMPDEST PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x1D0E JUMP JUMPDEST SWAP1 PUSH2 0x1D2A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP5 PUSH2 0x1BDB JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x30EF JUMP JUMPDEST PUSH2 0x332B SWAP2 SWAP3 POP PUSH2 0x3374 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x337B JUMPI JUMPDEST PUSH2 0x336C DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1CAD JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3321 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3362 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x32ED SWAP3 SWAP5 POP PUSH2 0x33AE SWAP2 POP PUSH1 0x40 RETURNDATASIZE DUP2 GT PUSH2 0x33B6 JUMPI JUMPDEST PUSH2 0x33A6 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3028 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 PUSH2 0x3296 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x339C JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x33E5 PUSH2 0x33E0 PUSH2 0x33DB PUSH2 0x33D6 DUP12 DUP10 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x3400 PUSH2 0x33FB DUP9 DUP11 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP1 PUSH2 0x341E PUSH0 DUP12 SWAP6 PUSH2 0x3429 PUSH2 0x3412 PUSH2 0x132 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x13B2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3005 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x346A JUMPI PUSH2 0x343E JUMPI JUMPDEST POP PUSH2 0x31CE JUMP JUMPDEST PUSH2 0x345E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3463 JUMPI JUMPDEST PUSH2 0x3456 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x3438 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x344C JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x3490 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3496 JUMPI JUMPDEST PUSH2 0x3488 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C42 JUMP JUMPDEST PUSH0 PUSH2 0x31B3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x347E JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST DUP5 PUSH2 0x34B5 PUSH2 0x34AF PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x34CC JUMPI POP PUSH2 0x34C6 ADDRESS PUSH2 0x13A6 JUMP JUMPDEST JUMPDEST PUSH2 0x3133 JUMP JUMPDEST SWAP5 POP DUP4 PUSH2 0x34FC PUSH2 0x34F6 PUSH2 0x34F1 PUSH2 0x34E1 DUP8 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x34EB PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT PUSH0 EQ PUSH2 0x3512 JUMPI PUSH2 0x350C ADDRESS PUSH2 0x13A6 JUMP JUMPDEST JUMPDEST PUSH2 0x34C7 JUMP JUMPDEST DUP2 PUSH2 0x350D JUMP JUMPDEST POP PUSH2 0x3522 DUP5 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x3535 PUSH2 0x352F PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x312A JUMP JUMPDEST SWAP7 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x354E SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x355A ADDRESS PUSH2 0x3545 JUMP JUMPDEST PUSH2 0x358C PUSH2 0x3586 PUSH32 0x0 PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x35D6 JUMPI JUMPDEST PUSH2 0x359A JUMPI JUMP JUMPDEST PUSH2 0x35A2 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x35D2 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x35DF PUSH2 0x39F5 JUMP JUMPDEST PUSH2 0x3611 PUSH2 0x360B PUSH32 0x0 PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ ISZERO PUSH2 0x3594 JUMP JUMPDEST POP PUSH2 0x3621 PUSH2 0x384F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x362C SWAP1 PUSH2 0x3618 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3637 SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3643 SWAP1 PUSH2 0x362E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x364F SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x365B DUP2 PUSH2 0x821 JUMP JUMPDEST SUB PUSH2 0x3662 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x3673 DUP3 PUSH2 0x3652 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x368E JUMPI PUSH2 0x368B SWAP2 PUSH0 ADD PUSH2 0x3666 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x36C1 PUSH1 0x20 PUSH2 0x36AB PUSH2 0x36A6 DUP7 PUSH2 0x363A JUMP JUMPDEST PUSH2 0x3646 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x36B9 PUSH2 0x132 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x36D1 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x37A1 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x3732 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x36F3 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x372E SWAP1 PUSH2 0x36FF PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x374D PUSH2 0x3747 PUSH2 0x3742 PUSH2 0x222E JUMP JUMPDEST PUSH2 0x821 JUMP JUMPDEST SWAP2 PUSH2 0x821 JUMP JUMPDEST SUB PUSH2 0x3762 JUMPI PUSH2 0x375D SWAP3 SWAP4 POP PUSH2 0x3A1F JUMP JUMPDEST PUSH2 0x36F1 JUMP JUMPDEST PUSH2 0x379D DUP5 PUSH2 0x376E PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x831 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x37C3 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x37CA JUMPI JUMPDEST PUSH2 0x37BB DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3675 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x36DE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x37B1 JUMP JUMPDEST PUSH2 0x37DA ADDRESS PUSH2 0x3545 JUMP JUMPDEST PUSH2 0x380C PUSH2 0x3806 PUSH32 0x0 PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST SUB PUSH2 0x3813 JUMPI JUMP JUMPDEST PUSH2 0x381B PUSH2 0x132 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x384B PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3857 PUSH2 0x22E6 JUMP JUMPDEST PUSH2 0x3870 PUSH2 0x386A PUSH2 0x3865 PUSH2 0x3AA8 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST SUB PUSH2 0x3877 JUMPI JUMP JUMPDEST PUSH2 0x38B9 PUSH2 0x3882 PUSH2 0x3AA8 JUMP JUMPDEST PUSH2 0x388A PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x38D5 PUSH2 0x38D0 PUSH2 0x38DC SWAP3 PUSH2 0x53F JUMP JUMPDEST PUSH2 0x38BD JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2513 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x38E8 PUSH2 0x394C JUMP JUMPDEST PUSH2 0x3900 PUSH2 0x38F6 PUSH0 DUP4 ADD PUSH2 0x22D9 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x38C0 JUMP JUMPDEST SWAP1 PUSH2 0x3934 PUSH2 0x392E PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x53F JUMP JUMPDEST SWAP2 PUSH2 0x53F JUMP JUMPDEST SWAP2 PUSH2 0x393D PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0x3947 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x399C PUSH2 0x3AB5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x39A6 PUSH2 0x3994 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x39B9 SWAP1 PUSH2 0x39B4 PUSH2 0x3AB5 JUMP JUMPDEST PUSH2 0x39BB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x39C4 SWAP1 PUSH2 0x3B8D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x39CF SWAP1 PUSH2 0x39A8 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH2 0x39FD PUSH2 0x22A8 JUMP JUMPDEST POP PUSH2 0x3A18 PUSH0 PUSH2 0x3A12 PUSH2 0x3A0D PUSH2 0x222E JUMP JUMPDEST PUSH2 0x3B98 JUMP JUMPDEST ADD PUSH2 0x22D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3A29 DUP3 PUSH2 0x3B9B JUMP JUMPDEST DUP2 PUSH2 0x3A54 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x53F JUMP JUMPDEST SWAP1 PUSH2 0x3A5D PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0x3A67 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x3A73 DUP2 PUSH2 0x3A1B JUMP JUMPDEST PUSH2 0x3A85 PUSH2 0x3A7F PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x3A99 JUMPI PUSH2 0x3A95 SWAP2 PUSH2 0x3CAB JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x3AA3 PUSH2 0x3C10 JUMP JUMPDEST PUSH2 0x3A97 JUMP JUMPDEST PUSH2 0x3AB0 PUSH2 0x22A8 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x3AC6 PUSH2 0x3AC0 PUSH2 0x3CDE JUMP JUMPDEST ISZERO PUSH2 0x13B8 JUMP JUMPDEST PUSH2 0x3ACC JUMPI JUMP JUMPDEST PUSH2 0x3AD4 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3B04 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B19 SWAP1 PUSH2 0x3B14 PUSH2 0x3AB5 JUMP JUMPDEST PUSH2 0x3B1B JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x3B36 PUSH2 0x3B30 PUSH2 0x3B2B PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ PUSH2 0x3B46 JUMPI PUSH2 0x3B44 SWAP1 PUSH2 0x38E0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B89 PUSH2 0x3B52 PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x3B5A PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B96 SWAP1 PUSH2 0x3B08 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x3BAF PUSH2 0x3BA9 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x3BD1 JUMPI PUSH2 0x3BCF SWAP1 PUSH0 PUSH2 0x3BC9 PUSH2 0x3BC4 PUSH2 0x222E JUMP JUMPDEST PUSH2 0x3B98 JUMP JUMPDEST ADD PUSH2 0x38C0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3C0C SWAP1 PUSH2 0x3BDD PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x3C23 PUSH2 0x3C1D PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x3C2A JUMPI JUMP JUMPDEST PUSH2 0x3C32 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3C62 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3C7D PUSH2 0x3C78 DUP4 PUSH2 0x726 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x3C9D JUMPI PUSH2 0x3C92 RETURNDATASIZE PUSH2 0x3C6B JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x3CA5 PUSH2 0x3C66 JUMP JUMPDEST SWAP1 PUSH2 0x3C9B JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x3CD7 SWAP4 PUSH2 0x3CB9 PUSH2 0x3C66 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x3CCE PUSH2 0x3C82 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x3CFC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3CE6 PUSH2 0x3CDA JUMP JUMPDEST POP PUSH2 0x3CF9 PUSH0 PUSH2 0x3CF3 PUSH2 0x3970 JUMP JUMPDEST ADD PUSH2 0x2324 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3D10 SWAP1 PUSH2 0x3D09 PUSH2 0x3C66 JUMP JUMPDEST POP ISZERO PUSH2 0x13B8 JUMP JUMPDEST PUSH0 EQ PUSH2 0x3D1C JUMPI POP PUSH2 0x3DA0 JUMP JUMPDEST PUSH2 0x3D25 DUP3 PUSH2 0x3A1B JUMP JUMPDEST PUSH2 0x3D37 PUSH2 0x3D31 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ DUP1 PUSH2 0x3D85 JUMPI JUMPDEST PUSH2 0x3D46 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x3D81 SWAP1 PUSH2 0x3D52 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x3D9A PUSH2 0x3D94 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x3D3E JUMP JUMPDEST PUSH2 0x3DA9 DUP2 PUSH2 0x3A1B JUMP JUMPDEST PUSH2 0x3DBB PUSH2 0x3DB5 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x3DCA JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3DD2 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3E02 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT PUSH7 0x9F6E7C9FC6C69C PUSH29 0x277D31E871E1A8FD5EFF3936BA41F92FE09EEF77345D64736F6C634300 ADDMOD NOT STOP CALLER ","sourceMap":"2206:12420:62:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;169:1222:36:-;;;:::i;:::-;:::o;950:3411:6:-;;;:::i;:::-;:::o;2206:12420:62:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":320,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":650,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":5894,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":1255,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":1714,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_addresst_uint256t_uint256t_addresst_addresst_uint256":{"entryPoint":1082,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_addresst_bytes":{"entryPoint":1965,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":2519,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn":{"entryPoint":752,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dyn_calldata":{"entryPoint":3218,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn_calldatat_array_address_dyn_calldatat_array_uint256_dyn_calldatat_array_address_dyn_calldata":{"entryPoint":3344,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_array_address_dyn_fromMemory":{"entryPoint":9705,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dyn_memory_ptr_fromMemory":{"entryPoint":9740,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dynt_array_address_dynt_uint256":{"entryPoint":1552,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_array_address_dynt_array_address_dynt_uint256t_uint256t_addresst_uint256":{"entryPoint":825,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_array_uint256_dyn_calldata":{"entryPoint":3281,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_array_address_dyn":{"entryPoint":665,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_array_address_dyn_fromMemory":{"entryPoint":9618,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":1876,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":5088,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":1930,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":13941,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":5073,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":13926,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":7219,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":2921,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":5909,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":7341,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":810,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":7234,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_uint256_fromMemory":{"entryPoint":12328,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint64":{"entryPoint":2504,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":7326,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_address":{"entryPoint":2983,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_uint256":{"entryPoint":3551,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":2397,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address":{"entryPoint":6130,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":5118,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_rational_by_address_uint256":{"entryPoint":12386,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_address_to_address":{"entryPoint":2970,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_uint256":{"entryPoint":12293,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_address_dyn":{"entryPoint":3006,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_memory_ptr":{"entryPoint":3086,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":3654,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_memory_ptr":{"entryPoint":3574,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32":{"entryPoint":2097,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":2084,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":2310,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":12373,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by_to_uint64":{"entryPoint":10122,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":2844,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":2795,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral_335f":{"entryPoint":6027,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":6002,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_435b":{"entryPoint":10637,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_89e7":{"entryPoint":5223,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_a4b4":{"entryPoint":4813,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_a4b4461cfc9c1f0249c17896b005545dc5d1690f81d2023afc517b07ed3227a7":{"entryPoint":4787,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ab5e":{"entryPoint":4161,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_ab5e8102fe02622d0d94a08b17c10bfd4f3cd182dc77bfb396faae89f4ab032f":{"entryPoint":4135,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b80e":{"entryPoint":10983,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82":{"entryPoint":10957,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_bd72":{"entryPoint":3863,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c6cf":{"entryPoint":4591,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_fc64":{"entryPoint":6268,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_fc6421c7a51907be6e1b579c66a08d7fac8283169b487d2055cec3c19aafb216":{"entryPoint":6242,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_fcff":{"entryPoint":4348,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_fcff1c1083c8a3e45d0c8ff29c9ac46704438a9bb26b4b6981b3747efb2ee1d0":{"entryPoint":4322,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":2034,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":2410,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":2323,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_rational_by":{"entryPoint":10135,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral_435b":{"entryPoint":10663,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_89e7":{"entryPoint":5249,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_bd72":{"entryPoint":3889,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_c6cf":{"entryPoint":4617,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":361,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":1477,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":3538,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_to_uint256_fromStack":{"entryPoint":973,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_uint256":{"entryPoint":986,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint64":{"entryPoint":348,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_address_dyn":{"entryPoint":6387,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":10811,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":539,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_address_dyn":{"entryPoint":6359,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_uint256_dyn":{"entryPoint":10783,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":15467,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":2651,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":306,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":560,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":10754,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":1830,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2616,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn":{"entryPoint":2964,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_uint256_dyn":{"entryPoint":3532,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":2951,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn_calldata":{"entryPoint":10590,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_array_uint256_dyn":{"entryPoint":3519,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_uint256_dyn_calldata":{"entryPoint":10594,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_bytes":{"entryPoint":14875,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":2771,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn":{"entryPoint":3000,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_uint256_dyn":{"entryPoint":3568,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_array_address_dyn":{"entryPoint":2955,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_uint256_dyn":{"entryPoint":3523,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":2775,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_array_index_access_address_dyn_calldata":{"entryPoint":10884,"id":null,"parameterSlots":3,"returnSlots":1},"calldata_array_index_access_uint256_dyn_calldata":{"entryPoint":10850,"id":null,"parameterSlots":3,"returnSlots":1},"checked_add_uint256":{"entryPoint":7182,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint8":{"entryPoint":7438,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":7466,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":4515,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint8":{"entryPoint":7402,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":618,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":5048,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":2081,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":8876,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":8970,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":2222,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":1403,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":9009,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_2_by":{"entryPoint":4252,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_300_by":{"entryPoint":11074,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":7371,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":4065,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":4439,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":8714,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":593,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":787,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":335,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":7300,"id":null,"parameterSlots":1,"returnSlots":1},"constant_ENTERED":{"entryPoint":11991,"id":null,"parameterSlots":0,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":8750,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NOT_ENTERED":{"entryPoint":12251,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":2749,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":1343,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Pool":{"entryPoint":7158,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1PoolRegistry":{"entryPoint":5951,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":9479,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":13882,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":5006,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":7276,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":9183,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1PoolPeriphery_to_address":{"entryPoint":5030,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1PoolRegistry_to_address":{"entryPoint":6118,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Pool_to_address":{"entryPoint":7170,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":2298,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":9532,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":13894,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":7288,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":5018,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":10110,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":13637,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":4068,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":4255,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":4736,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":8722,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":4708,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":4442,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":10082,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint8":{"entryPoint":7374,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":2738,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":11077,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":10054,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1331,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Pool":{"entryPoint":7146,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1PoolRegistry":{"entryPoint":5939,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":9467,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":13870,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":4994,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":7264,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1303,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":12057,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":9084,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1865,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2713,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2784,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2868,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_batchSwap":{"entryPoint":3678,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAmountOut":{"entryPoint":1772,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolsContainingToken":{"entryPoint":3110,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVersion":{"entryPoint":382,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":3163,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":2431,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_poolsReserves":{"entryPoint":1498,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":2118,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quotePotentialSwaps":{"entryPoint":1659,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":2344,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":2564,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":2171,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_swapTokenForToken":{"entryPoint":1194,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_swapTokensForTokens":{"entryPoint":1021,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":3741,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":2039,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":2247,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_uint256":{"entryPoint":1406,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":8901,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":8976,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":5861,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":11958,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":9022,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":15490,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":498,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":14790,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":14779,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":15245,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":15131,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":14750,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":14560,"id":193,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":13859,"id":16979,"parameterSlots":1,"returnSlots":0},"fun_batchSwap":{"entryPoint":11151,"id":17641,"parameterSlots":8,"returnSlots":1},"fun_checkInitializing":{"entryPoint":15029,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":15376,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":14289,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":14415,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":13649,"id":562,"parameterSlots":0,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":15531,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":15256,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getAmountOut":{"entryPoint":8221,"id":17690,"parameterSlots":3,"returnSlots":1},"fun_getImplementation":{"entryPoint":14837,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":14704,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getInitializedVersion":{"entryPoint":11928,"id":427,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":14668,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getPoolsContainingToken":{"entryPoint":9793,"id":17715,"parameterSlots":1,"returnSlots":1},"fun_getReentrancyGuardStorage":{"entryPoint":14801,"id":1497,"parameterSlots":0,"returnSlots":1},"fun_getVersion":{"entryPoint":3800,"id":17726,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":10574,"id":16952,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":10537,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":15582,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":15016,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":12264,"id":1579,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":12120,"id":1563,"parameterSlots":0,"returnSlots":0},"fun_owner":{"entryPoint":8934,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":8806,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":8794,"id":null,"parameterSlots":1,"returnSlots":1},"fun_quotePotentialSwaps":{"entryPoint":7519,"id":17507,"parameterSlots":3,"returnSlots":2},"fun_reinitialize":{"entryPoint":9601,"id":16969,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":9579,"id":null,"parameterSlots":2,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":8862,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":8843,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":15776,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":15259,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_swap":{"entryPoint":12477,"id":17393,"parameterSlots":4,"returnSlots":2},"fun_swapTokenForToken":{"entryPoint":7095,"id":17116,"parameterSlots":7,"returnSlots":2},"fun_swapTokenForToken_inner":{"entryPoint":6440,"id":null,"parameterSlots":9,"returnSlots":2},"fun_swapTokensForTokens":{"entryPoint":5734,"id":17217,"parameterSlots":6,"returnSlots":2},"fun_swapTokensForTokens_inner":{"entryPoint":5340,"id":null,"parameterSlots":8,"returnSlots":2},"fun_transferOwnership":{"entryPoint":11917,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":11803,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":14879,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":13971,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":8678,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":8657,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":15612,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2760,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_poolsReserves":{"entryPoint":1444,"id":16916,"parameterSlots":2,"returnSlots":1},"getter_fun_registry":{"entryPoint":2285,"id":16910,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":1300,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":7131,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":1355,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":1377,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":4949,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":11105,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_ensure":{"entryPoint":3980,"id":16930,"parameterSlots":8,"returnSlots":2},"modifier_ensure_16999":{"entryPoint":5769,"id":16930,"parameterSlots":9,"returnSlots":2},"modifier_initializer":{"entryPoint":10156,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_nonReentrant":{"entryPoint":5819,"id":1538,"parameterSlots":9,"returnSlots":2},"modifier_nonReentrant_17138":{"entryPoint":4029,"id":1538,"parameterSlots":8,"returnSlots":2},"modifier_notDelegated":{"entryPoint":8694,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":15112,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":14760,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":14740,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":8825,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":11784,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_16976":{"entryPoint":13848,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":8637,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":9230,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":4470,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4904,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":453,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":14525,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":9195,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":9544,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":12085,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":9112,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":10905,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_uint256":{"entryPoint":10871,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":4981,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":2271,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_uint256":{"entryPoint":1430,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":8921,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":8996,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":5881,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":11978,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":9042,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral_335f":{"entryPoint":6051,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_435b":{"entryPoint":10687,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_89e7":{"entryPoint":5273,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_a4b4":{"entryPoint":4837,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ab5e":{"entryPoint":4185,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b80e":{"entryPoint":11007,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_bd72":{"entryPoint":3913,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_c6cf":{"entryPoint":4641,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_fc64":{"entryPoint":6292,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_fcff":{"entryPoint":4372,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":3214,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":439,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":3792,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":589,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":1826,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":435,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":312,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":316,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":5168,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":443,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":8717,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":5042,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":9147,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":5856,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":8964,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":300,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1399,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2674,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":5963,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_435b01265a0cf39a5f3992d984afd4b4e7ac38f8506d53152286f12879fd2786":{"entryPoint":10598,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_89e7a9e9b0e058e6373f6b6c8cf375c7c9a11cf94defafeca9a2945237ea07a2":{"entryPoint":5184,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_a4b4461cfc9c1f0249c17896b005545dc5d1690f81d2023afc517b07ed3227a7":{"entryPoint":4748,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ab5e8102fe02622d0d94a08b17c10bfd4f3cd182dc77bfb396faae89f4ab032f":{"entryPoint":4096,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b80e76e4c9dd95c0a6a7ab97569124291f4757bb9e5ff42d1e95905b42144c82":{"entryPoint":10918,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a":{"entryPoint":3824,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c6cf1ca911242bb8766b9b41cb25f065d2a4a47eb5ee25c2338e6f0c748030cc":{"entryPoint":4552,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_fc6421c7a51907be6e1b579c66a08d7fac8283169b487d2055cec3c19aafb216":{"entryPoint":6165,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_fcff1c1083c8a3e45d0c8ff29c9ac46704438a9bb26b4b6981b3747efb2ee1d0":{"entryPoint":4283,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":9055,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":12004,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":9491,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":9153,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":14528,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":9198,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":9547,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":12088,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":9115,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":630,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":5053,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":13906,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":790,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":2484,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":7306,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_address":{"entryPoint":6426,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint256":{"entryPoint":11137,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_address":{"entryPoint":6382,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_uint256":{"entryPoint":10806,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":8872,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_address_dyn":{"entryPoint":9613,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_uint256_dyn":{"entryPoint":10585,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":15578,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":15462,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":8690,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":3820,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint64":{"entryPoint":3796,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":13666},{"length":32,"start":13799},{"length":32,"start":14306}]},"linkReferences":{},"object":"60806040526004361015610013575b610ed0565b61001d5f3561012c565b80630d8e6e2c1461012757806321579b791461012257806335823d761461011d5780634056c37f146101185780634209bed0146101135780634aa066521461010e5780634f1ef2861461010957806352d1902d14610104578063715018a6146100ff5780637b103999146100fa5780638da5cb5b146100f55780638f2248bc146100f0578063ad3cb1cc146100eb578063ae3cce1c146100e6578063c4d66de8146100e1578063e74e9b06146100dc5763f2fde38b0361000e57610e9d565b610e5e565b610c5b565b610c26565b610b34565b610a04565b61097f565b610928565b61087b565b610846565b6107f7565b6106ec565b61067b565b6105da565b6104aa565b6103fd565b61017e565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261014a57565b61013c565b67ffffffffffffffff1690565b6101659061014f565b9052565b919061017c905f6020850194019061015c565b565b346101ae5761018e366004610140565b6101aa610199610ed8565b6101a1610132565b91829182610169565b0390f35b610138565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906101fc906101bb565b810190811067ffffffffffffffff82111761021657604052565b6101c5565b9061022e610227610132565b92836101f2565b565b67ffffffffffffffff81116102485760208091020190565b6101c5565b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61027390610251565b90565b61027f8161026a565b0361028657565b5f80fd5b9050359061029782610276565b565b909291926102ae6102a982610230565b61021b565b93818552602080860192028301928184116102eb57915b8383106102d25750505050565b602080916102e0848661028a565b8152019201916102c5565b61024d565b9080601f8301121561030e5781602061030b93359101610299565b90565b6101b7565b90565b61031f81610313565b0361032657565b5f80fd5b9050359061033782610316565b565b909160c0828403126103c8575f82013567ffffffffffffffff81116103c357836103649184016102f0565b92602083013567ffffffffffffffff81116103be57816103859185016102f0565b92610393826040830161032a565b926103bb6103a4846060850161032a565b936103b2816080860161028a565b9360a00161032a565b90565b6101b3565b6101b3565b61013c565b6103d690610313565b9052565b9160206103fb9294936103f460408201965f8301906103cd565b01906103cd565b565b346104355761041c610410366004610339565b94939093929192611666565b90610431610428610132565b928392836103da565b0390f35b610138565b60e0818303126104a557610450825f830161028a565b9261045e836020840161028a565b9261046c816040850161032a565b9261047a826060830161032a565b926104a261048b846080850161028a565b936104998160a0860161028a565b9360c00161032a565b90565b61013c565b346104e2576104c96104bd36600461043a565b95949094939193611bb7565b906104de6104d5610132565b928392836103da565b0390f35b610138565b919060408382031261050f578061050361050c925f860161028a565b9360200161028a565b90565b61013c565b90565b61052b61052661053092610251565b610514565b610251565b90565b61053c90610517565b90565b61054890610533565b90565b906105559061053f565b5f5260205260405f2090565b9061056b9061053f565b5f5260205260405f2090565b1c90565b90565b61058e9060086105939302610577565b61057b565b90565b906105a1915461057e565b90565b6105bd6105c2926105b86001935f9461054b565b610561565b610596565b90565b91906105d8905f602085019401906103cd565b565b3461060b576106076105f66105f03660046104e7565b906105a4565b6105fe610132565b918291826105c5565b0390f35b610138565b9091606082840312610676575f82013567ffffffffffffffff8111610671578361063b9184016102f0565b9260208301359067ffffffffffffffff821161066c57610660816106699386016102f0565b9360400161032a565b90565b6101b3565b6101b3565b61013c565b346106ad5761069461068e366004610610565b91611d5f565b906106a96106a0610132565b928392836103da565b0390f35b610138565b90916060828403126106e7576106e46106cd845f850161028a565b936106db816020860161028a565b9360400161032a565b90565b61013c565b3461071d576107196107086107023660046106b2565b9161201d565b610710610132565b918291826105c5565b0390f35b610138565b5f80fd5b67ffffffffffffffff8111610744576107406020916101bb565b0190565b6101c5565b90825f939282370152565b9092919261076961076482610726565b61021b565b938185526020850190828401116107855761078392610749565b565b610722565b9080601f830112156107a8578160206107a593359101610754565b90565b6101b7565b9190916040818403126107ed576107c6835f830161028a565b92602082013567ffffffffffffffff81116107e8576107e5920161078a565b90565b6101b3565b61013c565b5f0190565b61080b6108053660046107ad565b906121e6565b610813610132565b8061081d816107f2565b0390f35b90565b61082d90610821565b9052565b9190610844905f60208501940190610824565b565b3461087657610856366004610140565b610872610861612266565b610869610132565b91829182610831565b0390f35b610138565b346108a95761088b366004610140565b61089361229e565b61089b610132565b806108a5816107f2565b0390f35b610138565b73ffffffffffffffffffffffffffffffffffffffff1690565b6108d79060086108dc9302610577565b6108ae565b90565b906108ea91546108c7565b90565b6108f75f806108df565b90565b61090390610533565b90565b61090f906108fa565b9052565b9190610926905f60208501940190610906565b565b3461095857610938366004610140565b6109546109436108ed565b61094b610132565b91829182610913565b0390f35b610138565b6109669061026a565b9052565b919061097d905f6020850194019061095d565b565b346109af5761098f366004610140565b6109ab61099a6122e6565b6109a2610132565b9182918261096a565b0390f35b610138565b6109bd8161014f565b036109c457565b5f80fd5b905035906109d5826109b4565b565b91906040838203126109ff57806109f36109fc925f860161028a565b936020016109c8565b90565b61013c565b34610a3357610a1d610a173660046109d7565b90612581565b610a25610132565b80610a2f816107f2565b0390f35b610138565b67ffffffffffffffff8111610a5657610a526020916101bb565b0190565b6101c5565b90610a6d610a6883610a38565b61021b565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610aa36005610a5b565b90610ab060208301610a72565b565b610aba610a99565b90565b610ac5610ab2565b90565b610ad0610abd565b90565b5190565b60209181520190565b90825f9392825e0152565b610b0a610b13602093610b1893610b0181610ad3565b93848093610ad7565b95869101610ae0565b6101bb565b0190565b610b319160208201915f818403910152610aeb565b90565b34610b6457610b44366004610140565b610b60610b4f610ac8565b610b57610132565b91829182610b1c565b0390f35b610138565b90602082820312610b8257610b7f915f0161028a565b90565b61013c565b5190565b60209181520190565b60200190565b610ba39061026a565b9052565b90610bb481602093610b9a565b0190565b60200190565b90610bdb610bd5610bce84610b87565b8093610b8b565b92610b94565b905f5b818110610beb5750505090565b909192610c04610bfe6001928651610ba7565b94610bb8565b9101919091610bde565b610c239160208201915f818403910152610bbe565b90565b34610c5657610c52610c41610c3c366004610b69565b612641565b610c49610132565b91829182610c0e565b0390f35b610138565b34610c8957610c73610c6e366004610b69565b61294e565b610c7b610132565b80610c85816107f2565b0390f35b610138565b5f80fd5b909182601f83011215610ccc5781359167ffffffffffffffff8311610cc7576020019260208302840111610cc257565b61024d565b610c8e565b6101b7565b909182601f83011215610d0b5781359167ffffffffffffffff8311610d06576020019260208302840111610d0157565b61024d565b610c8e565b6101b7565b9091608082840312610dba575f82013567ffffffffffffffff8111610db55783610d3b918401610c92565b929093602082013567ffffffffffffffff8111610db05781610d5e918401610c92565b929093604082013567ffffffffffffffff8111610dab5783610d81918401610cd1565b929093606082013567ffffffffffffffff8111610da657610da29201610c92565b9091565b6101b3565b6101b3565b6101b3565b6101b3565b61013c565b5190565b60209181520190565b60200190565b610ddb90610313565b9052565b90610dec81602093610dd2565b0190565b60200190565b90610e13610e0d610e0684610dbf565b8093610dc3565b92610dcc565b905f5b818110610e235750505090565b909192610e3c610e366001928651610ddf565b94610df0565b9101919091610e16565b610e5b9160208201915f818403910152610df6565b90565b34610e9857610e94610e83610e74366004610d10565b96959095949194939293612b8f565b610e8b610132565b91829182610e46565b0390f35b610138565b34610ecb57610eb5610eb0366004610b69565b612e8d565b610ebd610132565b80610ec7816107f2565b0390f35b610138565b5f80fd5b5f90565b610ee0610ed4565b50610ee9612e98565b90565b5f90565b5f7f4558504952454400000000000000000000000000000000000000000000000000910152565b610f246007602092610ad7565b610f2d81610ef0565b0190565b610f469060208101905f818303910152610f17565b90565b15610f5057565b610f58610132565b7f08c379a000000000000000000000000000000000000000000000000000000000815280610f8860048201610f31565b0390fd5b90610fb997969594939291610fb488610fad610fa742610313565b91610313565b1015610f49565b610fbd565b9091565b90610fd597969594939291610fd0612f58565b6114dc565b9091610fdf612fe8565b565b90565b610ff8610ff3610ffd92610fe1565b610514565b610313565b90565b5f7f696e76616c69642066726f6d20616d6f756e7400000000000000000000000000910152565b6110346013602092610ad7565b61103d81611000565b0190565b6110569060208101905f818303910152611027565b90565b1561106057565b611068610132565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061109860048201611041565b0390fd5b90565b6110b36110ae6110b89261109c565b610514565b610313565b90565b5f7f696e76616c696420746f6b656e20706174680000000000000000000000000000910152565b6110ef6012602092610ad7565b6110f8816110bb565b0190565b6111119060208101905f8183039101526110e2565b90565b1561111b57565b611123610132565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611153600482016110fc565b0390fd5b90565b61116e61116961117392611157565b610514565b610313565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6111b26111b891939293610313565b92610313565b82039182116111c357565b611176565b5f7f696e76616c696420706f6f6c2070617468000000000000000000000000000000910152565b6111fc6011602092610ad7565b611205816111c8565b0190565b61121e9060208101905f8183039101526111ef565b90565b1561122857565b611230610132565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061126060048201611209565b0390fd5b61127861127361127d92610fe1565b610514565b610251565b90565b61128990611264565b90565b5f7f7a65726f20616464726573730000000000000000000000000000000000000000910152565b6112c0600c602092610ad7565b6112c98161128c565b0190565b6112e29060208101905f8183039101526112b3565b90565b156112ec57565b6112f4610132565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611324600482016112cd565b0390fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9061135f82610b87565b811015611370576020809102010190565b611328565b61137f905161026a565b90565b61138b90610517565b90565b61139790611382565b90565b6113a390610533565b90565b6113af90610533565b90565b60e01b90565b151590565b6113c6816113b8565b036113cd57565b5f80fd5b905051906113de826113bd565b565b906020828203126113f9576113f6915f016113d1565b90565b61013c565b60409061142761142e949695939661141d60608401985f85019061095d565b602083019061095d565b01906103cd565b565b611438610132565b3d5f823e3d90fd5b5f7f616d6f756e744f757420746f6f206c6f77000000000000000000000000000000910152565b6114746011602092610ad7565b61147d81611440565b0190565b6114969060208101905f818303910152611467565b90565b156114a057565b6114a8610132565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806114d860048201611481565b0390fd5b9091949795929396505050611503856114fd6114f75f610fe4565b91610313565b11611059565b61152961150f84610b87565b61152261151c600261109f565b91610313565b1015611114565b61156861153583610b87565b61156261155c61155761154788610b87565b611551600161115a565b906111a3565b610313565b91610313565b14611221565b61158d8161158661158061157b5f611280565b61026a565b9161026a565b14156112e5565b6115b86115b36115ae6115a9866115a35f610fe4565b90611355565b611375565b61138e565b61139a565b9460206323b872dd9633906115e95f6115d0306113a6565b9a6115f4876115dd610132565b9d8e97889687956113b2565b8552600485016113fe565b03925af1938415611661576116339661161695611635575b50929091926130bd565b92909361162c6116268692610313565b91610313565b1015611499565b565b6116559060203d811161165a575b61164d81836101f2565b8101906113e0565b61160c565b503d611643565b611430565b906116859594939291611677610eec565b61167f610eec565b90610f8c565b9091565b906116b798979695949392916116b2896116ab6116a542610313565b91610313565b1015610f49565b6116bb565b9091565b906116d498979695949392916116cf612f58565b611928565b90916116de612fe8565b565b5f1c90565b6116f16116f6916116e0565b6108ae565b90565b61170390546116e5565b90565b9050519061171382610276565b565b9060208282031261172e5761172b915f01611706565b90565b61013c565b61173c90610517565b90565b61174890611733565b90565b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b61177e60208092610ad7565b6117878161174b565b0190565b6117a09060208101905f818303910152611772565b90565b156117aa57565b6117b2610132565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806117e26004820161178b565b0390fd5b6117ef90610533565b90565b91602061181392949361180c60408201965f83019061095d565b019061095d565b565b60207f666f756e64000000000000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c5065726970686572793a20506f6f6c206e6f74205f8201520152565b61186f6025604092610ad7565b61187881611815565b0190565b6118919060208101905f818303910152611862565b90565b1561189b57565b6118a3610132565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806118d36004820161187c565b0390fd5b906118e96118e483610230565b61021b565b918252565b369037565b90611918611900836118d7565b9260208061190e8693610230565b92019103906118ee565b565b906119249061026a565b9052565b909194969392989750505061195f60206119496119445f6116f9565b6108fa565b6332569e0290611957610132565b9384926113b2565b8252818061196f600482016107f2565b03915afa908115611bb2576119b09161198f915f91611b84575b5061173f565b6119ab836119a561199f5f610fe4565b91610313565b116117a3565b6117e6565b6020632d5e94a79185906119d68b946119e16119ca610132565b968795869485946113b2565b8452600484016117f2565b03915afa908115611b7f575f91611b51575b5092611a1a84611a13611a0d611a085f611280565b61026a565b9161026a565b1415611894565b6020611a2d611a288361138e565b61139a565b6323b872dd9690611a5a5f611a41306113a6565b99611a6588611a4e610132565b9c8d97889687956113b2565b8552600485016113fe565b03925af18015611b4c57611b1c98611aff96611ac892611b20575b50611aaf611a96611a91600261109f565b6118f3565b93611aaa85611aa45f610fe4565b90611355565b61191a565b611ac383611abd600161115a565b90611355565b61191a565b611af6611add611ad8600161115a565b6118f3565b94611af186611aeb5f610fe4565b90611355565b61191a565b929091926130bd565b939091611b15611b0f8492610313565b91610313565b1015611499565b9190565b611b409060203d8111611b45575b611b3881836101f2565b8101906113e0565b611a80565b503d611b2e565b611430565b611b72915060203d8111611b78575b611b6a81836101f2565b810190611715565b5f6119f3565b503d611b60565b611430565b611ba5915060203d8111611bab575b611b9d81836101f2565b810190611715565b5f611989565b503d611b93565b611430565b90611bd7969594939291611bc9610eec565b611bd1610eec565b90611689565b9091565b6001611be79101610313565b90565b611bf390610517565b90565b611bff90611bea565b90565b611c0b90610533565b90565b611c1d611c2391939293610313565b92610313565b8201809211611c2e57565b611176565b90505190611c4082610316565b565b90602082820312611c5b57611c58915f01611c33565b90565b61013c565b611c6990610517565b90565b611c7590611c60565b90565b611c8190610533565b90565b60ff1690565b611c9381611c84565b03611c9a57565b5f80fd5b90505190611cab82611c8a565b565b90602082820312611cc657611cc3915f01611c9e565b90565b61013c565b90565b611ce2611cdd611ce792611ccb565b610514565b611c84565b90565b611cf6611cfc91611c84565b91611c84565b90039060ff8211611d0957565b611176565b611d1790611c84565b604d8111611d2557600a0a90565b611176565b611d39611d3f91939293610313565b92610313565b91611d4b838202610313565b928184041490151715611d5a57565b611176565b9291611d69610eec565b90611d72610eec565b92611d8f82611d89611d835f610fe4565b91610313565b11611059565b611db5611d9b87610b87565b611dae611da8600261109f565b91610313565b1015611114565b611df4611dc182610b87565b611dee611de8611de3611dd38b610b87565b611ddd600161115a565b906111a3565b610313565b91610313565b14611221565b611dfc610eec565b9193611e06610eec565b935b84611e23611e1d611e1886610b87565b610313565b91610313565b10156120125784611e3c611e365f610fe4565b91610313565b03612008575b50611e66611e61611e5c611e57858890611355565b611375565b611bf6565b611c02565b60206343c2e2f591611e81611e7c8b8990611355565b611375565b90611ec4611eab611ea68d611ea08c611e9a600161115a565b90611c0e565b90611355565b611375565b94611ecf8b611eb8610132565b978896879586956113b2565b8552600485016113fe565b03915afa908115612003578891611f3b915f91611fd5575b5092856020611f25611f20611f1b611f168c611f1060129a91611f0a600161115a565b90611c0e565b90611355565b611375565b611c6c565b611c78565b63313ce56790611f33610132565b9586926113b2565b82528180611f4b600482016107f2565b03915afa908115611fd057611f83611f7e611f8993611f9597611f8f975f92611f9c575b50611f7990611cce565b611cea565b611d0e565b90611d2a565b90611c0e565b94611bdb565b9390611e08565b611f79919250611fc29060203d8111611fc9575b611fba81836101f2565b810190611cad565b9190611f6f565b503d611fb0565b611430565b611ff6915060203d8111611ffc575b611fee81836101f2565b810190611c42565b5f611ee7565b503d611fe4565b611430565b909450935f611e42565b945095505050509190565b90612026610eec565b50612053602061203d6120385f6116f9565b6108fa565b6332569e029061204b610132565b9384926113b2565b82528180612063600482016107f2565b03915afa9081156121b85761208891612083915f9161218a575b5061173f565b6117e6565b916020632d5e94a79382906120af85966120ba6120a3610132565b988995869485946113b2565b8452600484016117f2565b03915afa928315612185576120e46120df602095612104935f91612158575b50611bf6565b611c02565b9161210f6343c2e2f59194966120f8610132565b978896879586956113b2565b8552600485016113fe565b03915afa908115612153575f91612125575b5090565b612146915060203d811161214c575b61213e81836101f2565b810190611c42565b5f612121565b503d612134565b611430565b6121789150873d811161217e575b61217081836101f2565b810190611715565b5f6120d9565b503d612166565b611430565b6121ab915060203d81116121b1575b6121a381836101f2565b810190611715565b5f61207d565b503d612199565b611430565b906121cf916121ca613551565b6121d1565b565b906121e4916121df81613623565b613693565b565b906121f0916121bd565b565b5f90565b612207906122026137d1565b61225a565b90565b90565b5f1b90565b61222661222161222b9261220a565b61220d565b610821565b90565b6122577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc612212565b90565b5061226361222e565b90565b6122766122716121f2565b6121f6565b90565b61228161384f565b61228961228b565b565b61229c6122975f611280565b6138e0565b565b6122a6612279565b565b5f90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6122d16122d6916116e0565b6122ac565b90565b6122e390546122c5565b90565b6122ee6122a8565b506123015f6122fb61394c565b016122d9565b90565b60401c90565b60ff1690565b61231c61232191612304565b61230a565b90565b61232e9054612310565b90565b67ffffffffffffffff1690565b61234a61234f916116e0565b612331565b90565b61235c905461233e565b90565b9061237267ffffffffffffffff9161220d565b9181191691161790565b61239061238b6123959261014f565b610514565b61014f565b90565b90565b906123b06123ab6123b79261237c565b612398565b825461235f565b9055565b60401b90565b906123d568ff0000000000000000916123bb565b9181191691161790565b6123e8906113b8565b90565b90565b906124036123fe61240a926123df565b6123eb565b82546123c1565b9055565b908091612419613970565b906124255f8301612324565b80156124d6575b61249a5761245f9261245691612444865f860161239b565b61245160015f86016123ee565b61256b565b5f8091016123ee565b6124957fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29161248c610132565b91829182610169565b0390a1565b6124a2610132565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806124d2600482016107f2565b0390fd5b506124e25f8301612352565b6124f46124ee8661014f565b9161014f565b101561242c565b61250490610517565b90565b612510906124fb565b90565b9061253273ffffffffffffffffffffffffffffffffffffffff9161220d565b9181191691161790565b612545906124fb565b90565b90565b9061256061255b6125679261253c565b612548565b8254612513565b9055565b61257f915061257990612507565b5f61254b565b565b9061258b9161240e565b565b606090565b909291926125a76125a282610230565b61021b565b93818552602080860192028301928184116125e457915b8383106125cb5750505050565b602080916125d98486611706565b8152019201916125be565b61024d565b9080601f830112156126075781602061260493519101612592565b90565b6101b7565b9060208282031261263c575f82015167ffffffffffffffff81116126375761263492016125e9565b90565b6101b3565b61013c565b61264961258d565b50612676602061266061265b5f6116f9565b6108fa565b6332569e029061266e610132565b9384926113b2565b82528180612686600482016107f2565b03915afa918215612741576126af6126aa6126d6945f948591612713575b5061173f565b6117e6565b6126cb63b4340e6a6126bf610132565b958694859384936113b2565b83526004830161096a565b03915afa90811561270e575f916126ec575b5090565b61270891503d805f833e61270081836101f2565b81019061260c565b5f6126e8565b611430565b612734915060203d811161273a575b61272c81836101f2565b810190611715565b5f6126a4565b503d612722565b611430565b61275a61275561275f92610fe1565b610514565b61014f565b90565b61277661277161277b92611157565b610514565b61014f565b90565b61278790610533565b90565b61279390612762565b9052565b91906127aa905f6020850194019061278a565b565b6127b4613970565b906127c96127c35f8401612324565b156113b8565b906127d55f8401612352565b806127e86127e25f612746565b9161014f565b1480612922575b906128036127fd6001612762565b9161014f565b14806128fa575b6128159091156113b8565b90816128e9575b506128ad576128459061283a6128326001612762565b5f860161239b565b8261289b575b612929565b61284d575b50565b61285a905f8091016123ee565b60016128927fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612889610132565b91829182612797565b0390a15f61284a565b6128a860015f86016123ee565b612840565b6128b5610132565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806128e5600482016107f2565b0390fd5b6128f49150156113b8565b5f61281c565b506128156129073061277e565b3b61291a6129145f610fe4565b91610313565b14905061280a565b50826127ef565b61294661294c9161293861399e565b612941336139c6565b612507565b5f61254b565b565b612957906127ac565b565b606090565b5090565b5090565b5f7f496e70757420617272617973206c656e677468206d69736d6174636800000000910152565b61299a601c602092610ad7565b6129a381612966565b0190565b6129bc9060208101905f81830391015261298d565b90565b156129c657565b6129ce610132565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806129fe600482016129a7565b0390fd5b67ffffffffffffffff8111612a1a5760208091020190565b6101c5565b90612a31612a2c83612a02565b61021b565b918252565b369037565b90612a60612a4883612a1f565b92602080612a568693612a02565b9201910390612a36565b565b9190811015612a72576020020190565b611328565b35612a8181610316565b90565b9190811015612a94576020020190565b611328565b35612aa381610276565b90565b5f7f496e73756666696369656e742042616c616e6365000000000000000000000000910152565b612ada6014602092610ad7565b612ae381612aa6565b0190565b612afc9060208101905f818303910152612acd565b90565b15612b0657565b612b0e610132565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612b3e60048201612ae7565b0390fd5b90565b612b59612b54612b5e92612b42565b610514565b610313565b90565b90612b6b82610dbf565b811015612b7c576020809102010190565b611328565b90612b8b90610313565b9052565b9491959397969290612b9f612959565b50612bab86829061295e565b612bc7612bc1612bbc8a869061295e565b610313565b91610313565b1480612dda575b80612da7575b612bdd906129bf565b612bf0612beb87839061295e565b612a3b565b95612bfa5f610fe4565b5b80612c18612c12612c0d85879061295e565b610313565b91610313565b1015612d99578890612c4f612c37612c328e898591612a62565b612a77565b612c49612c435f610fe4565b91610313565b116117a3565b612ce28c612c8f612c8a612c81612c7c612c73612c6e8a8c8a91612a84565b612a99565b978b8891612a84565b612a99565b928a8691612a62565b612a77565b90612ca4612c9f8c8c8791612a84565b612a99565b916020612cb8612cb38861138e565b61139a565b6370a0823190612cd73392612ccb610132565b988994859384936113b2565b83526004830161096a565b03915afa928315612d9457612d6196612d1d612d4995612d5c975f91612d66575b50612d16612d1086610313565b91610313565b1015612aff565b9291925f93339293612d43612d3d42612d3761012c612b45565b90611c0e565b96610fe4565b92611bb7565b50612d578b91849092612b61565b612b81565b611bdb565b612bfb565b612d87915060203d8111612d8d575b612d7f81836101f2565b810190611c42565b5f612d03565b503d612d75565b611430565b505050505050509192505090565b50612bdd612db68a8590612962565b612dd2612dcc612dc789899061295e565b610313565b91610313565b149050612bd4565b50612de687839061295e565b612e02612dfc612df78c8790612962565b610313565b91610313565b14612bce565b612e1990612e1461384f565b612e1b565b565b80612e36612e30612e2b5f611280565b61026a565b9161026a565b14612e4657612e44906138e0565b565b612e89612e525f611280565b612e5a610132565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b612e9690612e08565b565b612ea0610ed4565b50612eb35f612ead613970565b01612352565b90565b612ec2612ec7916116e0565b61057b565b90565b612ed49054612eb6565b90565b612ee1600261109f565b90565b90612f0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9161220d565b9181191691161790565b612f2d612f28612f3292610313565b610514565b610313565b90565b90565b90612f4d612f48612f5492612f19565b612f35565b8254612ee4565b9055565b612f606139d1565b612f6b5f8201612eca565b612f84612f7e612f79612ed7565b610313565b91610313565b14612f9f57612f9d905f612f96612ed7565b9101612f38565b565b612fa7610132565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280612fd7600482016107f2565b0390fd5b612fe5600161115a565b90565b613003612ff36139d1565b5f612ffc612fdb565b9101612f38565b565b91602061302692949361301f60408201965f83019061095d565b01906103cd565b565b9190604083820312613050578061304461304d925f8601611c33565b93602001611c33565b90565b61013c565b61305e90610fe4565b9052565b91946130aa6130b4929897956130a060a0966130966130bb9a61308c60c08a019e5f8b019061095d565b602089019061095d565b60408701906103cd565b6060850190613055565b608083019061095d565b01906103cd565b565b9392906130c8610eec565b916130d1610eec565b936130da610eec565b50936130e46122a8565b506130ed610eec565b935b8461310a6131046130ff87610b87565b610313565b91610313565b101561353b578461312361311d5f610fe4565b91610313565b1480613518575b5f146134a25750815b61315661315161314c6131478b8990611355565b611375565b61138e565b61139a565b602063dd62ed3e91613167306113a6565b9061319661317e6131798a8c90611355565b611375565b946131a161318a610132565b968795869485946113b2565b8452600484016117f2565b03915afa90811561349d575f9161346f575b506131c76131c18892610313565b91610313565b10156133c2575b6040886131f46131ef6131ea6131e5898b90611355565b611375565b611bf6565b611c02565b6132745f639908fc8b61327f61323a6132358d61322f61321d6132188b8490611355565b611375565b9991613229600161115a565b90611c0e565b90611355565b611375565b978d90847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92613268610132565b9b8c9a8b998a986113b2565b885260048801613062565b03925af19182156133bd5788915f80919094613387575b50906132ed9160206132d76132d26132cd6132c88c6132c260129a916132bc600161115a565b90611c0e565b90611355565b611375565b611c6c565b611c78565b63313ce567906132e5610132565b9586926113b2565b825281806132fd600482016107f2565b03915afa9081156133825761333561333061333b9361334797613341975f9261334e575b5061332b90611cce565b611cea565b611d0e565b90611d2a565b90611c0e565b94611bdb565b93906130ef565b61332b9192506133749060203d811161337b575b61336c81836101f2565b810190611cad565b9190613321565b503d613362565b611430565b6132ed9294506133ae915060403d81116133b6575b6133a681836101f2565b810190613028565b909391613296565b503d61339c565b611430565b6133e56133e06133db6133d68b8990611355565b611375565b61138e565b61139a565b602063095ea7b3916134006133fb888a90611355565b611375565b9061341e5f8b95613429613412610132565b978896879586946113b2565b845260048401613005565b03925af1801561346a5761343e575b506131ce565b61345e9060203d8111613463575b61345681836101f2565b8101906113e0565b613438565b503d61344c565b611430565b613490915060203d8111613496575b61348881836101f2565b810190611c42565b5f6131b3565b503d61347e565b611430565b846134b56134af5f610fe4565b91610313565b145f146134cc57506134c6306113a6565b5b613133565b9450836134fc6134f66134f16134e187610b87565b6134eb600161115a565b906111a3565b610313565b91610313565b105f146135125761350c306113a6565b5b6134c7565b8161350d565b5061352284610b87565b61353561352f600161115a565b91610313565b1461312a565b9650949350505050565b61354e90610533565b90565b61355a30613545565b61358c6135867f000000000000000000000000000000000000000000000000000000000000000061026a565b9161026a565b1480156135d6575b61359a57565b6135a2610132565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806135d2600482016107f2565b0390fd5b506135df6139f5565b61361161360b7f000000000000000000000000000000000000000000000000000000000000000061026a565b9161026a565b1415613594565b5061362161384f565b565b61362c90613618565b565b61363790610517565b90565b6136439061362e565b90565b61364f90610533565b90565b61365b81610821565b0361366257565b5f80fd5b9050519061367382613652565b565b9060208282031261368e5761368b915f01613666565b90565b61013c565b91906136c160206136ab6136a68661363a565b613646565b6352d1902d906136b9610132565b9384926113b2565b825281806136d1600482016107f2565b03915afa80915f926137a1575b50155f146137325750509060016136f357505b565b61372e906136ff610132565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b928361374d61374761374261222e565b610821565b91610821565b036137625761375d929350613a1f565b6136f1565b61379d8461376e610132565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610831565b0390fd5b6137c391925060203d81116137ca575b6137bb81836101f2565b810190613675565b905f6136de565b503d6137b1565b6137da30613545565b61380c6138067f000000000000000000000000000000000000000000000000000000000000000061026a565b9161026a565b0361381357565b61381b610132565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061384b600482016107f2565b0390fd5b6138576122e6565b61387061386a613865613aa8565b61026a565b9161026a565b0361387757565b6138b9613882613aa8565b61388a610132565b9182917f118cdaa70000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b90565b906138d56138d06138dc9261053f565b6138bd565b8254612513565b9055565b6138e861394c565b6139006138f65f83016122d9565b915f8491016138c0565b9061393461392e7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361053f565b9161053f565b9161393d610132565b80613947816107f2565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61399c613ab5565b565b6139a6613994565b565b6139b9906139b4613ab5565b6139bb565b565b6139c490613b8d565b565b6139cf906139a8565b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6139fd6122a8565b50613a185f613a12613a0d61222e565b613b98565b016122d9565b90565b5190565b90613a2982613b9b565b81613a547fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9161053f565b90613a5d610132565b80613a67816107f2565b0390a2613a7381613a1b565b613a85613a7f5f610fe4565b91610313565b115f14613a9957613a9591613cab565b505b565b5050613aa3613c10565b613a97565b613ab06122a8565b503390565b613ac6613ac0613cde565b156113b8565b613acc57565b613ad4610132565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280613b04600482016107f2565b0390fd5b613b1990613b14613ab5565b613b1b565b565b80613b36613b30613b2b5f611280565b61026a565b9161026a565b14613b4657613b44906138e0565b565b613b89613b525f611280565b613b5a610132565b9182917f1e4fbdf70000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b613b9690613b08565b565b90565b803b613baf613ba95f610fe4565b91610313565b14613bd157613bcf905f613bc9613bc461222e565b613b98565b016138c0565b565b613c0c90613bdd610132565b9182917f4c9c8ce30000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b34613c23613c1d5f610fe4565b91610313565b11613c2a57565b613c32610132565b7fb398979f00000000000000000000000000000000000000000000000000000000815280613c62600482016107f2565b0390fd5b606090565b90613c7d613c7883610726565b61021b565b918252565b3d5f14613c9d57613c923d613c6b565b903d5f602084013e5b565b613ca5613c66565b90613c9b565b5f80613cd793613cb9613c66565b508390602081019051915af490613cce613c82565b90919091613cfc565b90565b5f90565b613ce6613cda565b50613cf95f613cf3613970565b01612324565b90565b90613d1090613d09613c66565b50156113b8565b5f14613d1c5750613da0565b613d2582613a1b565b613d37613d315f610fe4565b91610313565b1480613d85575b613d46575090565b613d8190613d52610132565b9182917f9996b3150000000000000000000000000000000000000000000000000000000083526004830161096a565b0390fd5b50803b613d9a613d945f610fe4565b91610313565b14613d3e565b613da981613a1b565b613dbb613db55f610fe4565b91610313565b115f14613dca57805190602001fd5b613dd2610132565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280613e02600482016107f2565b0390fdfea264697066735822122011669f6e7c9fc6c69c7c277d31e871e1a8fd5eff3936ba41f92fe09eef77345d64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0xD8E6E2C EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x21579B79 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x35823D76 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x4056C37F EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4209BED0 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x4AA06652 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xAE3CCE1C EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0xE74E9B06 EQ PUSH2 0xDC JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xE9D JUMP JUMPDEST PUSH2 0xE5E JUMP JUMPDEST PUSH2 0xC5B JUMP JUMPDEST PUSH2 0xC26 JUMP JUMPDEST PUSH2 0xB34 JUMP JUMPDEST PUSH2 0xA04 JUMP JUMPDEST PUSH2 0x97F JUMP JUMPDEST PUSH2 0x928 JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST PUSH2 0x3FD JUMP JUMPDEST PUSH2 0x17E JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x14A JUMPI JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x165 SWAP1 PUSH2 0x14F JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x17C SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x15C JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x1AE JUMPI PUSH2 0x18E CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x199 PUSH2 0xED8 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x169 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x1FC SWAP1 PUSH2 0x1BB JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST SWAP1 PUSH2 0x22E PUSH2 0x227 PUSH2 0x132 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x1F2 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x248 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x273 SWAP1 PUSH2 0x251 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x27F DUP2 PUSH2 0x26A JUMP JUMPDEST SUB PUSH2 0x286 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x297 DUP3 PUSH2 0x276 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2AE PUSH2 0x2A9 DUP3 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x2EB JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x2D2 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x2E0 DUP5 DUP7 PUSH2 0x28A JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x2C5 JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x30E JUMPI DUP2 PUSH1 0x20 PUSH2 0x30B SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x299 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x31F DUP2 PUSH2 0x313 JUMP JUMPDEST SUB PUSH2 0x326 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x337 DUP3 PUSH2 0x316 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0x3C8 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3C3 JUMPI DUP4 PUSH2 0x364 SWAP2 DUP5 ADD PUSH2 0x2F0 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3BE JUMPI DUP2 PUSH2 0x385 SWAP2 DUP6 ADD PUSH2 0x2F0 JUMP JUMPDEST SWAP3 PUSH2 0x393 DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x32A JUMP JUMPDEST SWAP3 PUSH2 0x3BB PUSH2 0x3A4 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x32A JUMP JUMPDEST SWAP4 PUSH2 0x3B2 DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x32A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x3D6 SWAP1 PUSH2 0x313 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x3FB SWAP3 SWAP5 SWAP4 PUSH2 0x3F4 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x435 JUMPI PUSH2 0x41C PUSH2 0x410 CALLDATASIZE PUSH1 0x4 PUSH2 0x339 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x1666 JUMP JUMPDEST SWAP1 PUSH2 0x431 PUSH2 0x428 PUSH2 0x132 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x3DA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH1 0xE0 DUP2 DUP4 SUB SLT PUSH2 0x4A5 JUMPI PUSH2 0x450 DUP3 PUSH0 DUP4 ADD PUSH2 0x28A JUMP JUMPDEST SWAP3 PUSH2 0x45E DUP4 PUSH1 0x20 DUP5 ADD PUSH2 0x28A JUMP JUMPDEST SWAP3 PUSH2 0x46C DUP2 PUSH1 0x40 DUP6 ADD PUSH2 0x32A JUMP JUMPDEST SWAP3 PUSH2 0x47A DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x32A JUMP JUMPDEST SWAP3 PUSH2 0x4A2 PUSH2 0x48B DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH2 0x499 DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0x32A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLVALUE PUSH2 0x4E2 JUMPI PUSH2 0x4C9 PUSH2 0x4BD CALLDATASIZE PUSH1 0x4 PUSH2 0x43A JUMP JUMPDEST SWAP6 SWAP5 SWAP1 SWAP5 SWAP4 SWAP2 SWAP4 PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 PUSH2 0x4DE PUSH2 0x4D5 PUSH2 0x132 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x3DA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x50F JUMPI DUP1 PUSH2 0x503 PUSH2 0x50C SWAP3 PUSH0 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x28A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x52B PUSH2 0x526 PUSH2 0x530 SWAP3 PUSH2 0x251 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x251 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x53C SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x548 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x555 SWAP1 PUSH2 0x53F JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x56B SWAP1 PUSH2 0x53F JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x58E SWAP1 PUSH1 0x8 PUSH2 0x593 SWAP4 MUL PUSH2 0x577 JUMP JUMPDEST PUSH2 0x57B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5A1 SWAP2 SLOAD PUSH2 0x57E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5BD PUSH2 0x5C2 SWAP3 PUSH2 0x5B8 PUSH1 0x1 SWAP4 PUSH0 SWAP5 PUSH2 0x54B JUMP JUMPDEST PUSH2 0x561 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5D8 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x60B JUMPI PUSH2 0x607 PUSH2 0x5F6 PUSH2 0x5F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E7 JUMP JUMPDEST SWAP1 PUSH2 0x5A4 JUMP JUMPDEST PUSH2 0x5FE PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5C5 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x676 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x671 JUMPI DUP4 PUSH2 0x63B SWAP2 DUP5 ADD PUSH2 0x2F0 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x66C JUMPI PUSH2 0x660 DUP2 PUSH2 0x669 SWAP4 DUP7 ADD PUSH2 0x2F0 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x32A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLVALUE PUSH2 0x6AD JUMPI PUSH2 0x694 PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x610 JUMP JUMPDEST SWAP2 PUSH2 0x1D5F JUMP JUMPDEST SWAP1 PUSH2 0x6A9 PUSH2 0x6A0 PUSH2 0x132 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x3DA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x6E7 JUMPI PUSH2 0x6E4 PUSH2 0x6CD DUP5 PUSH0 DUP6 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH2 0x6DB DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x32A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLVALUE PUSH2 0x71D JUMPI PUSH2 0x719 PUSH2 0x708 PUSH2 0x702 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B2 JUMP JUMPDEST SWAP2 PUSH2 0x201D JUMP JUMPDEST PUSH2 0x710 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5C5 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x744 JUMPI PUSH2 0x740 PUSH1 0x20 SWAP2 PUSH2 0x1BB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x769 PUSH2 0x764 DUP3 PUSH2 0x726 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x785 JUMPI PUSH2 0x783 SWAP3 PUSH2 0x749 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x722 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x7A8 JUMPI DUP2 PUSH1 0x20 PUSH2 0x7A5 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x754 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x7ED JUMPI PUSH2 0x7C6 DUP4 PUSH0 DUP4 ADD PUSH2 0x28A JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7E8 JUMPI PUSH2 0x7E5 SWAP3 ADD PUSH2 0x78A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST PUSH2 0x80B PUSH2 0x805 CALLDATASIZE PUSH1 0x4 PUSH2 0x7AD JUMP JUMPDEST SWAP1 PUSH2 0x21E6 JUMP JUMPDEST PUSH2 0x813 PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0x81D DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x82D SWAP1 PUSH2 0x821 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x844 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x824 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x876 JUMPI PUSH2 0x856 CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x872 PUSH2 0x861 PUSH2 0x2266 JUMP JUMPDEST PUSH2 0x869 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x831 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST CALLVALUE PUSH2 0x8A9 JUMPI PUSH2 0x88B CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x893 PUSH2 0x229E JUMP JUMPDEST PUSH2 0x89B PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0x8A5 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x8D7 SWAP1 PUSH1 0x8 PUSH2 0x8DC SWAP4 MUL PUSH2 0x577 JUMP JUMPDEST PUSH2 0x8AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8EA SWAP2 SLOAD PUSH2 0x8C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8F7 PUSH0 DUP1 PUSH2 0x8DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x903 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x90F SWAP1 PUSH2 0x8FA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x926 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x906 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x958 JUMPI PUSH2 0x938 CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x954 PUSH2 0x943 PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x94B PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x913 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH2 0x966 SWAP1 PUSH2 0x26A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x97D SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x9AF JUMPI PUSH2 0x98F CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0x9AB PUSH2 0x99A PUSH2 0x22E6 JUMP JUMPDEST PUSH2 0x9A2 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH2 0x9BD DUP2 PUSH2 0x14F JUMP JUMPDEST SUB PUSH2 0x9C4 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x9D5 DUP3 PUSH2 0x9B4 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x9FF JUMPI DUP1 PUSH2 0x9F3 PUSH2 0x9FC SWAP3 PUSH0 DUP7 ADD PUSH2 0x28A JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x9C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST CALLVALUE PUSH2 0xA33 JUMPI PUSH2 0xA1D PUSH2 0xA17 CALLDATASIZE PUSH1 0x4 PUSH2 0x9D7 JUMP JUMPDEST SWAP1 PUSH2 0x2581 JUMP JUMPDEST PUSH2 0xA25 PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0xA2F DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA56 JUMPI PUSH2 0xA52 PUSH1 0x20 SWAP2 PUSH2 0x1BB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST SWAP1 PUSH2 0xA6D PUSH2 0xA68 DUP4 PUSH2 0xA38 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xAA3 PUSH1 0x5 PUSH2 0xA5B JUMP JUMPDEST SWAP1 PUSH2 0xAB0 PUSH1 0x20 DUP4 ADD PUSH2 0xA72 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xABA PUSH2 0xA99 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAC5 PUSH2 0xAB2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAD0 PUSH2 0xABD JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0xB0A PUSH2 0xB13 PUSH1 0x20 SWAP4 PUSH2 0xB18 SWAP4 PUSH2 0xB01 DUP2 PUSH2 0xAD3 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0xAD7 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0xAE0 JUMP JUMPDEST PUSH2 0x1BB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB31 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xAEB JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB64 JUMPI PUSH2 0xB44 CALLDATASIZE PUSH1 0x4 PUSH2 0x140 JUMP JUMPDEST PUSH2 0xB60 PUSH2 0xB4F PUSH2 0xAC8 JUMP JUMPDEST PUSH2 0xB57 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB1C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xB82 JUMPI PUSH2 0xB7F SWAP2 PUSH0 ADD PUSH2 0x28A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xBA3 SWAP1 PUSH2 0x26A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xBB4 DUP2 PUSH1 0x20 SWAP4 PUSH2 0xB9A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBDB PUSH2 0xBD5 PUSH2 0xBCE DUP5 PUSH2 0xB87 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xB8B JUMP JUMPDEST SWAP3 PUSH2 0xB94 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xBEB JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0xC04 PUSH2 0xBFE PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0xBA7 JUMP JUMPDEST SWAP5 PUSH2 0xBB8 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0xBDE JUMP JUMPDEST PUSH2 0xC23 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xBBE JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xC56 JUMPI PUSH2 0xC52 PUSH2 0xC41 PUSH2 0xC3C CALLDATASIZE PUSH1 0x4 PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x2641 JUMP JUMPDEST PUSH2 0xC49 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xC0E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST CALLVALUE PUSH2 0xC89 JUMPI PUSH2 0xC73 PUSH2 0xC6E CALLDATASIZE PUSH1 0x4 PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x294E JUMP JUMPDEST PUSH2 0xC7B PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0xC85 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xCCC JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xCC7 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0xCC2 JUMPI JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP1 SWAP2 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xD0B JUMPI DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xD06 JUMPI PUSH1 0x20 ADD SWAP3 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH2 0xD01 JUMPI JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x80 DUP3 DUP5 SUB SLT PUSH2 0xDBA JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDB5 JUMPI DUP4 PUSH2 0xD3B SWAP2 DUP5 ADD PUSH2 0xC92 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDB0 JUMPI DUP2 PUSH2 0xD5E SWAP2 DUP5 ADD PUSH2 0xC92 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDAB JUMPI DUP4 PUSH2 0xD81 SWAP2 DUP5 ADD PUSH2 0xCD1 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xDA6 JUMPI PUSH2 0xDA2 SWAP3 ADD PUSH2 0xC92 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0xDDB SWAP1 PUSH2 0x313 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xDEC DUP2 PUSH1 0x20 SWAP4 PUSH2 0xDD2 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xE13 PUSH2 0xE0D PUSH2 0xE06 DUP5 PUSH2 0xDBF JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xDC3 JUMP JUMPDEST SWAP3 PUSH2 0xDCC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xE23 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0xE3C PUSH2 0xE36 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0xDDF JUMP JUMPDEST SWAP5 PUSH2 0xDF0 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0xE16 JUMP JUMPDEST PUSH2 0xE5B SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xDF6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE98 JUMPI PUSH2 0xE94 PUSH2 0xE83 PUSH2 0xE74 CALLDATASIZE PUSH1 0x4 PUSH2 0xD10 JUMP JUMPDEST SWAP7 SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP5 SWAP4 SWAP3 SWAP4 PUSH2 0x2B8F JUMP JUMPDEST PUSH2 0xE8B PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xE46 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST CALLVALUE PUSH2 0xECB JUMPI PUSH2 0xEB5 PUSH2 0xEB0 CALLDATASIZE PUSH1 0x4 PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x2E8D JUMP JUMPDEST PUSH2 0xEBD PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0xEC7 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0xEE0 PUSH2 0xED4 JUMP JUMPDEST POP PUSH2 0xEE9 PUSH2 0x2E98 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xF24 PUSH1 0x7 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0xF2D DUP2 PUSH2 0xEF0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xF46 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0xF17 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xF50 JUMPI JUMP JUMPDEST PUSH2 0xF58 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0xF88 PUSH1 0x4 DUP3 ADD PUSH2 0xF31 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xFB9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0xFB4 DUP9 PUSH2 0xFAD PUSH2 0xFA7 TIMESTAMP PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0xF49 JUMP JUMPDEST PUSH2 0xFBD JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP1 PUSH2 0xFD5 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0xFD0 PUSH2 0x2F58 JUMP JUMPDEST PUSH2 0x14DC JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0xFDF PUSH2 0x2FE8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFF8 PUSH2 0xFF3 PUSH2 0xFFD SWAP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x696E76616C69642066726F6D20616D6F756E7400000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1034 PUSH1 0x13 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x103D DUP2 PUSH2 0x1000 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1056 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1027 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1060 JUMPI JUMP JUMPDEST PUSH2 0x1068 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1098 PUSH1 0x4 DUP3 ADD PUSH2 0x1041 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10B3 PUSH2 0x10AE PUSH2 0x10B8 SWAP3 PUSH2 0x109C JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x696E76616C696420746F6B656E20706174680000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x10EF PUSH1 0x12 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x10F8 DUP2 PUSH2 0x10BB JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1111 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10E2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x111B JUMPI JUMP JUMPDEST PUSH2 0x1123 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1153 PUSH1 0x4 DUP3 ADD PUSH2 0x10FC JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x116E PUSH2 0x1169 PUSH2 0x1173 SWAP3 PUSH2 0x1157 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x11B2 PUSH2 0x11B8 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x313 JUMP JUMPDEST SWAP3 PUSH2 0x313 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x11C3 JUMPI JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH0 PUSH32 0x696E76616C696420706F6F6C2070617468000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x11FC PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x1205 DUP2 PUSH2 0x11C8 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x121E SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x11EF JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1228 JUMPI JUMP JUMPDEST PUSH2 0x1230 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1260 PUSH1 0x4 DUP3 ADD PUSH2 0x1209 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1278 PUSH2 0x1273 PUSH2 0x127D SWAP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x251 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1289 SWAP1 PUSH2 0x1264 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x7A65726F20616464726573730000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x12C0 PUSH1 0xC PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x12C9 DUP2 PUSH2 0x128C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x12E2 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x12B3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x12EC JUMPI JUMP JUMPDEST PUSH2 0x12F4 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1324 PUSH1 0x4 DUP3 ADD PUSH2 0x12CD JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x135F DUP3 PUSH2 0xB87 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1370 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x137F SWAP1 MLOAD PUSH2 0x26A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x138B SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1397 SWAP1 PUSH2 0x1382 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13A3 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13AF SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x13C6 DUP2 PUSH2 0x13B8 JUMP JUMPDEST SUB PUSH2 0x13CD JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x13DE DUP3 PUSH2 0x13BD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x13F9 JUMPI PUSH2 0x13F6 SWAP2 PUSH0 ADD PUSH2 0x13D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x1427 PUSH2 0x142E SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x141D PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1438 PUSH2 0x132 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x616D6F756E744F757420746F6F206C6F77000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1474 PUSH1 0x11 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x147D DUP2 PUSH2 0x1440 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1496 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1467 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x14A0 JUMPI JUMP JUMPDEST PUSH2 0x14A8 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x14D8 PUSH1 0x4 DUP3 ADD PUSH2 0x1481 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP5 SWAP8 SWAP6 SWAP3 SWAP4 SWAP7 POP POP POP PUSH2 0x1503 DUP6 PUSH2 0x14FD PUSH2 0x14F7 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x1529 PUSH2 0x150F DUP5 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1522 PUSH2 0x151C PUSH1 0x2 PUSH2 0x109F JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x1114 JUMP JUMPDEST PUSH2 0x1568 PUSH2 0x1535 DUP4 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1562 PUSH2 0x155C PUSH2 0x1557 PUSH2 0x1547 DUP9 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1551 PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x1221 JUMP JUMPDEST PUSH2 0x158D DUP2 PUSH2 0x1586 PUSH2 0x1580 PUSH2 0x157B PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ ISZERO PUSH2 0x12E5 JUMP JUMPDEST PUSH2 0x15B8 PUSH2 0x15B3 PUSH2 0x15AE PUSH2 0x15A9 DUP7 PUSH2 0x15A3 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST SWAP5 PUSH1 0x20 PUSH4 0x23B872DD SWAP7 CALLER SWAP1 PUSH2 0x15E9 PUSH0 PUSH2 0x15D0 ADDRESS PUSH2 0x13A6 JUMP JUMPDEST SWAP11 PUSH2 0x15F4 DUP8 PUSH2 0x15DD PUSH2 0x132 JUMP JUMPDEST SWAP14 DUP15 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x13B2 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13FE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x1661 JUMPI PUSH2 0x1633 SWAP7 PUSH2 0x1616 SWAP6 PUSH2 0x1635 JUMPI JUMPDEST POP SWAP3 SWAP1 SWAP2 SWAP3 PUSH2 0x30BD JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH2 0x162C PUSH2 0x1626 DUP7 SWAP3 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x1499 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1655 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x165A JUMPI JUMPDEST PUSH2 0x164D DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x160C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1643 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST SWAP1 PUSH2 0x1685 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1677 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x167F PUSH2 0xEEC JUMP JUMPDEST SWAP1 PUSH2 0xF8C JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP1 PUSH2 0x16B7 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x16B2 DUP10 PUSH2 0x16AB PUSH2 0x16A5 TIMESTAMP PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0xF49 JUMP JUMPDEST PUSH2 0x16BB JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP1 PUSH2 0x16D4 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x16CF PUSH2 0x2F58 JUMP JUMPDEST PUSH2 0x1928 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x16DE PUSH2 0x2FE8 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x16F1 PUSH2 0x16F6 SWAP2 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x8AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1703 SWAP1 SLOAD PUSH2 0x16E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1713 DUP3 PUSH2 0x276 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x172E JUMPI PUSH2 0x172B SWAP2 PUSH0 ADD PUSH2 0x1706 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x173C SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1748 SWAP1 PUSH2 0x1733 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x177E PUSH1 0x20 DUP1 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x1787 DUP2 PUSH2 0x174B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x17A0 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1772 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x17AA JUMPI JUMP JUMPDEST PUSH2 0x17B2 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x17E2 PUSH1 0x4 DUP3 ADD PUSH2 0x178B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x17EF SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1813 SWAP3 SWAP5 SWAP4 PUSH2 0x180C PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x666F756E64000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C5065726970686572793A20506F6F6C206E6F7420 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x186F PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x1878 DUP2 PUSH2 0x1815 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1891 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1862 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x189B JUMPI JUMP JUMPDEST PUSH2 0x18A3 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x18D3 PUSH1 0x4 DUP3 ADD PUSH2 0x187C JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0x18E9 PUSH2 0x18E4 DUP4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x1918 PUSH2 0x1900 DUP4 PUSH2 0x18D7 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x190E DUP7 SWAP4 PUSH2 0x230 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x18EE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1924 SWAP1 PUSH2 0x26A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 SWAP2 SWAP5 SWAP7 SWAP4 SWAP3 SWAP9 SWAP8 POP POP POP PUSH2 0x195F PUSH1 0x20 PUSH2 0x1949 PUSH2 0x1944 PUSH0 PUSH2 0x16F9 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST PUSH4 0x32569E02 SWAP1 PUSH2 0x1957 PUSH2 0x132 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x196F PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1BB2 JUMPI PUSH2 0x19B0 SWAP2 PUSH2 0x198F SWAP2 PUSH0 SWAP2 PUSH2 0x1B84 JUMPI JUMPDEST POP PUSH2 0x173F JUMP JUMPDEST PUSH2 0x19AB DUP4 PUSH2 0x19A5 PUSH2 0x199F PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x17A3 JUMP JUMPDEST PUSH2 0x17E6 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D5E94A7 SWAP2 DUP6 SWAP1 PUSH2 0x19D6 DUP12 SWAP5 PUSH2 0x19E1 PUSH2 0x19CA PUSH2 0x132 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x13B2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x17F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1B7F JUMPI PUSH0 SWAP2 PUSH2 0x1B51 JUMPI JUMPDEST POP SWAP3 PUSH2 0x1A1A DUP5 PUSH2 0x1A13 PUSH2 0x1A0D PUSH2 0x1A08 PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ ISZERO PUSH2 0x1894 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x1A2D PUSH2 0x1A28 DUP4 PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST PUSH4 0x23B872DD SWAP7 SWAP1 PUSH2 0x1A5A PUSH0 PUSH2 0x1A41 ADDRESS PUSH2 0x13A6 JUMP JUMPDEST SWAP10 PUSH2 0x1A65 DUP9 PUSH2 0x1A4E PUSH2 0x132 JUMP JUMPDEST SWAP13 DUP14 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x13B2 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13FE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1B4C JUMPI PUSH2 0x1B1C SWAP9 PUSH2 0x1AFF SWAP7 PUSH2 0x1AC8 SWAP3 PUSH2 0x1B20 JUMPI JUMPDEST POP PUSH2 0x1AAF PUSH2 0x1A96 PUSH2 0x1A91 PUSH1 0x2 PUSH2 0x109F JUMP JUMPDEST PUSH2 0x18F3 JUMP JUMPDEST SWAP4 PUSH2 0x1AAA DUP6 PUSH2 0x1AA4 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x191A JUMP JUMPDEST PUSH2 0x1AC3 DUP4 PUSH2 0x1ABD PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x191A JUMP JUMPDEST PUSH2 0x1AF6 PUSH2 0x1ADD PUSH2 0x1AD8 PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST PUSH2 0x18F3 JUMP JUMPDEST SWAP5 PUSH2 0x1AF1 DUP7 PUSH2 0x1AEB PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x191A JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP3 PUSH2 0x30BD JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x1B15 PUSH2 0x1B0F DUP5 SWAP3 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x1499 JUMP JUMPDEST SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x1B40 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B45 JUMPI JUMPDEST PUSH2 0x1B38 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x1A80 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B2E JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x1B72 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B78 JUMPI JUMPDEST PUSH2 0x1B6A DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x19F3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B60 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x1BA5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1BAB JUMPI JUMPDEST PUSH2 0x1B9D DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x1989 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B93 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST SWAP1 PUSH2 0x1BD7 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x1BC9 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x1BD1 PUSH2 0xEEC JUMP JUMPDEST SWAP1 PUSH2 0x1689 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1BE7 SWAP2 ADD PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1BF3 SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1BFF SWAP1 PUSH2 0x1BEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C0B SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C1D PUSH2 0x1C23 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x313 JUMP JUMPDEST SWAP3 PUSH2 0x313 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1C2E JUMPI JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1C40 DUP3 PUSH2 0x316 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1C5B JUMPI PUSH2 0x1C58 SWAP2 PUSH0 ADD PUSH2 0x1C33 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x1C69 SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C75 SWAP1 PUSH2 0x1C60 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C81 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1C93 DUP2 PUSH2 0x1C84 JUMP JUMPDEST SUB PUSH2 0x1C9A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1CAB DUP3 PUSH2 0x1C8A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1CC6 JUMPI PUSH2 0x1CC3 SWAP2 PUSH0 ADD PUSH2 0x1C9E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CE2 PUSH2 0x1CDD PUSH2 0x1CE7 SWAP3 PUSH2 0x1CCB JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x1C84 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CF6 PUSH2 0x1CFC SWAP2 PUSH2 0x1C84 JUMP JUMPDEST SWAP2 PUSH2 0x1C84 JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x1D09 JUMPI JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH2 0x1D17 SWAP1 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x1D25 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH2 0x1D39 PUSH2 0x1D3F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x313 JUMP JUMPDEST SWAP3 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x1D4B DUP4 DUP3 MUL PUSH2 0x313 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1D5A JUMPI JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x1D69 PUSH2 0xEEC JUMP JUMPDEST SWAP1 PUSH2 0x1D72 PUSH2 0xEEC JUMP JUMPDEST SWAP3 PUSH2 0x1D8F DUP3 PUSH2 0x1D89 PUSH2 0x1D83 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x1DB5 PUSH2 0x1D9B DUP8 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1DAE PUSH2 0x1DA8 PUSH1 0x2 PUSH2 0x109F JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x1114 JUMP JUMPDEST PUSH2 0x1DF4 PUSH2 0x1DC1 DUP3 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1DEE PUSH2 0x1DE8 PUSH2 0x1DE3 PUSH2 0x1DD3 DUP12 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x1DDD PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x1221 JUMP JUMPDEST PUSH2 0x1DFC PUSH2 0xEEC JUMP JUMPDEST SWAP2 SWAP4 PUSH2 0x1E06 PUSH2 0xEEC JUMP JUMPDEST SWAP4 JUMPDEST DUP5 PUSH2 0x1E23 PUSH2 0x1E1D PUSH2 0x1E18 DUP7 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x2012 JUMPI DUP5 PUSH2 0x1E3C PUSH2 0x1E36 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST SUB PUSH2 0x2008 JUMPI JUMPDEST POP PUSH2 0x1E66 PUSH2 0x1E61 PUSH2 0x1E5C PUSH2 0x1E57 DUP6 DUP9 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x1BF6 JUMP JUMPDEST PUSH2 0x1C02 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x43C2E2F5 SWAP2 PUSH2 0x1E81 PUSH2 0x1E7C DUP12 DUP10 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP1 PUSH2 0x1EC4 PUSH2 0x1EAB PUSH2 0x1EA6 DUP14 PUSH2 0x1EA0 DUP13 PUSH2 0x1E9A PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP5 PUSH2 0x1ECF DUP12 PUSH2 0x1EB8 PUSH2 0x132 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x13B2 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2003 JUMPI DUP9 SWAP2 PUSH2 0x1F3B SWAP2 PUSH0 SWAP2 PUSH2 0x1FD5 JUMPI JUMPDEST POP SWAP3 DUP6 PUSH1 0x20 PUSH2 0x1F25 PUSH2 0x1F20 PUSH2 0x1F1B PUSH2 0x1F16 DUP13 PUSH2 0x1F10 PUSH1 0x12 SWAP11 SWAP2 PUSH2 0x1F0A PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1C78 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1F33 PUSH2 0x132 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1F4B PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FD0 JUMPI PUSH2 0x1F83 PUSH2 0x1F7E PUSH2 0x1F89 SWAP4 PUSH2 0x1F95 SWAP8 PUSH2 0x1F8F SWAP8 PUSH0 SWAP3 PUSH2 0x1F9C JUMPI JUMPDEST POP PUSH2 0x1F79 SWAP1 PUSH2 0x1CCE JUMP JUMPDEST PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x1D0E JUMP JUMPDEST SWAP1 PUSH2 0x1D2A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP5 PUSH2 0x1BDB JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x1E08 JUMP JUMPDEST PUSH2 0x1F79 SWAP2 SWAP3 POP PUSH2 0x1FC2 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FC9 JUMPI JUMPDEST PUSH2 0x1FBA DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1CAD JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1F6F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1FB0 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x1FF6 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FFC JUMPI JUMPDEST PUSH2 0x1FEE DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C42 JUMP JUMPDEST PUSH0 PUSH2 0x1EE7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1FE4 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP4 PUSH0 PUSH2 0x1E42 JUMP JUMPDEST SWAP5 POP SWAP6 POP POP POP POP SWAP2 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2026 PUSH2 0xEEC JUMP JUMPDEST POP PUSH2 0x2053 PUSH1 0x20 PUSH2 0x203D PUSH2 0x2038 PUSH0 PUSH2 0x16F9 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST PUSH4 0x32569E02 SWAP1 PUSH2 0x204B PUSH2 0x132 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2063 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x21B8 JUMPI PUSH2 0x2088 SWAP2 PUSH2 0x2083 SWAP2 PUSH0 SWAP2 PUSH2 0x218A JUMPI JUMPDEST POP PUSH2 0x173F JUMP JUMPDEST PUSH2 0x17E6 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x2D5E94A7 SWAP4 DUP3 SWAP1 PUSH2 0x20AF DUP6 SWAP7 PUSH2 0x20BA PUSH2 0x20A3 PUSH2 0x132 JUMP JUMPDEST SWAP9 DUP10 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x13B2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x17F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x2185 JUMPI PUSH2 0x20E4 PUSH2 0x20DF PUSH1 0x20 SWAP6 PUSH2 0x2104 SWAP4 PUSH0 SWAP2 PUSH2 0x2158 JUMPI JUMPDEST POP PUSH2 0x1BF6 JUMP JUMPDEST PUSH2 0x1C02 JUMP JUMPDEST SWAP2 PUSH2 0x210F PUSH4 0x43C2E2F5 SWAP2 SWAP5 SWAP7 PUSH2 0x20F8 PUSH2 0x132 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x13B2 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13FE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2153 JUMPI PUSH0 SWAP2 PUSH2 0x2125 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2146 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x214C JUMPI JUMPDEST PUSH2 0x213E DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C42 JUMP JUMPDEST PUSH0 PUSH2 0x2121 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2134 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x2178 SWAP2 POP DUP8 RETURNDATASIZE DUP2 GT PUSH2 0x217E JUMPI JUMPDEST PUSH2 0x2170 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x20D9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2166 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x21AB SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x21B1 JUMPI JUMPDEST PUSH2 0x21A3 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x207D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2199 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST SWAP1 PUSH2 0x21CF SWAP2 PUSH2 0x21CA PUSH2 0x3551 JUMP JUMPDEST PUSH2 0x21D1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x21E4 SWAP2 PUSH2 0x21DF DUP2 PUSH2 0x3623 JUMP JUMPDEST PUSH2 0x3693 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x21F0 SWAP2 PUSH2 0x21BD JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2207 SWAP1 PUSH2 0x2202 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0x225A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x2226 PUSH2 0x2221 PUSH2 0x222B SWAP3 PUSH2 0x220A JUMP JUMPDEST PUSH2 0x220D JUMP JUMPDEST PUSH2 0x821 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2257 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x2212 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x2263 PUSH2 0x222E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2276 PUSH2 0x2271 PUSH2 0x21F2 JUMP JUMPDEST PUSH2 0x21F6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2281 PUSH2 0x384F JUMP JUMPDEST PUSH2 0x2289 PUSH2 0x228B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x229C PUSH2 0x2297 PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x38E0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22A6 PUSH2 0x2279 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x22D1 PUSH2 0x22D6 SWAP2 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x22AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22E3 SWAP1 SLOAD PUSH2 0x22C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22EE PUSH2 0x22A8 JUMP JUMPDEST POP PUSH2 0x2301 PUSH0 PUSH2 0x22FB PUSH2 0x394C JUMP JUMPDEST ADD PUSH2 0x22D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x231C PUSH2 0x2321 SWAP2 PUSH2 0x2304 JUMP JUMPDEST PUSH2 0x230A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x232E SWAP1 SLOAD PUSH2 0x2310 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x234A PUSH2 0x234F SWAP2 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x2331 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x235C SWAP1 SLOAD PUSH2 0x233E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2372 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x220D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2390 PUSH2 0x238B PUSH2 0x2395 SWAP3 PUSH2 0x14F JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x23B0 PUSH2 0x23AB PUSH2 0x23B7 SWAP3 PUSH2 0x237C JUMP JUMPDEST PUSH2 0x2398 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x235F JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x23D5 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x23BB JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x23E8 SWAP1 PUSH2 0x13B8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2403 PUSH2 0x23FE PUSH2 0x240A SWAP3 PUSH2 0x23DF JUMP JUMPDEST PUSH2 0x23EB JUMP JUMPDEST DUP3 SLOAD PUSH2 0x23C1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x2419 PUSH2 0x3970 JUMP JUMPDEST SWAP1 PUSH2 0x2425 PUSH0 DUP4 ADD PUSH2 0x2324 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x24D6 JUMPI JUMPDEST PUSH2 0x249A JUMPI PUSH2 0x245F SWAP3 PUSH2 0x2456 SWAP2 PUSH2 0x2444 DUP7 PUSH0 DUP7 ADD PUSH2 0x239B JUMP JUMPDEST PUSH2 0x2451 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x23EE JUMP JUMPDEST PUSH2 0x256B JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x23EE JUMP JUMPDEST PUSH2 0x2495 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x248C PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x169 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x24A2 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x24D2 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x24E2 PUSH0 DUP4 ADD PUSH2 0x2352 JUMP JUMPDEST PUSH2 0x24F4 PUSH2 0x24EE DUP7 PUSH2 0x14F JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST LT ISZERO PUSH2 0x242C JUMP JUMPDEST PUSH2 0x2504 SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2510 SWAP1 PUSH2 0x24FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2532 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x220D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2545 SWAP1 PUSH2 0x24FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2560 PUSH2 0x255B PUSH2 0x2567 SWAP3 PUSH2 0x253C JUMP JUMPDEST PUSH2 0x2548 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2513 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x257F SWAP2 POP PUSH2 0x2579 SWAP1 PUSH2 0x2507 JUMP JUMPDEST PUSH0 PUSH2 0x254B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x258B SWAP2 PUSH2 0x240E JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x25A7 PUSH2 0x25A2 DUP3 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x25E4 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x25CB JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0x25D9 DUP5 DUP7 PUSH2 0x1706 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2607 JUMPI DUP2 PUSH1 0x20 PUSH2 0x2604 SWAP4 MLOAD SWAP2 ADD PUSH2 0x2592 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x263C JUMPI PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2637 JUMPI PUSH2 0x2634 SWAP3 ADD PUSH2 0x25E9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x2649 PUSH2 0x258D JUMP JUMPDEST POP PUSH2 0x2676 PUSH1 0x20 PUSH2 0x2660 PUSH2 0x265B PUSH0 PUSH2 0x16F9 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST PUSH4 0x32569E02 SWAP1 PUSH2 0x266E PUSH2 0x132 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2686 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x2741 JUMPI PUSH2 0x26AF PUSH2 0x26AA PUSH2 0x26D6 SWAP5 PUSH0 SWAP5 DUP6 SWAP2 PUSH2 0x2713 JUMPI JUMPDEST POP PUSH2 0x173F JUMP JUMPDEST PUSH2 0x17E6 JUMP JUMPDEST PUSH2 0x26CB PUSH4 0xB4340E6A PUSH2 0x26BF PUSH2 0x132 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x13B2 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x270E JUMPI PUSH0 SWAP2 PUSH2 0x26EC JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x2708 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2700 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x260C JUMP JUMPDEST PUSH0 PUSH2 0x26E8 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x2734 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x273A JUMPI JUMPDEST PUSH2 0x272C DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1715 JUMP JUMPDEST PUSH0 PUSH2 0x26A4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2722 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x275A PUSH2 0x2755 PUSH2 0x275F SWAP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2776 PUSH2 0x2771 PUSH2 0x277B SWAP3 PUSH2 0x1157 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2787 SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2793 SWAP1 PUSH2 0x2762 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x27AA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x278A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x27B4 PUSH2 0x3970 JUMP JUMPDEST SWAP1 PUSH2 0x27C9 PUSH2 0x27C3 PUSH0 DUP5 ADD PUSH2 0x2324 JUMP JUMPDEST ISZERO PUSH2 0x13B8 JUMP JUMPDEST SWAP1 PUSH2 0x27D5 PUSH0 DUP5 ADD PUSH2 0x2352 JUMP JUMPDEST DUP1 PUSH2 0x27E8 PUSH2 0x27E2 PUSH0 PUSH2 0x2746 JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ DUP1 PUSH2 0x2922 JUMPI JUMPDEST SWAP1 PUSH2 0x2803 PUSH2 0x27FD PUSH1 0x1 PUSH2 0x2762 JUMP JUMPDEST SWAP2 PUSH2 0x14F JUMP JUMPDEST EQ DUP1 PUSH2 0x28FA JUMPI JUMPDEST PUSH2 0x2815 SWAP1 SWAP2 ISZERO PUSH2 0x13B8 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x28E9 JUMPI JUMPDEST POP PUSH2 0x28AD JUMPI PUSH2 0x2845 SWAP1 PUSH2 0x283A PUSH2 0x2832 PUSH1 0x1 PUSH2 0x2762 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x239B JUMP JUMPDEST DUP3 PUSH2 0x289B JUMPI JUMPDEST PUSH2 0x2929 JUMP JUMPDEST PUSH2 0x284D JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x285A SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x23EE JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2892 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x2889 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2797 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x284A JUMP JUMPDEST PUSH2 0x28A8 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x23EE JUMP JUMPDEST PUSH2 0x2840 JUMP JUMPDEST PUSH2 0x28B5 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x28E5 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x28F4 SWAP2 POP ISZERO PUSH2 0x13B8 JUMP JUMPDEST PUSH0 PUSH2 0x281C JUMP JUMPDEST POP PUSH2 0x2815 PUSH2 0x2907 ADDRESS PUSH2 0x277E JUMP JUMPDEST EXTCODESIZE PUSH2 0x291A PUSH2 0x2914 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x280A JUMP JUMPDEST POP DUP3 PUSH2 0x27EF JUMP JUMPDEST PUSH2 0x2946 PUSH2 0x294C SWAP2 PUSH2 0x2938 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x2941 CALLER PUSH2 0x39C6 JUMP JUMPDEST PUSH2 0x2507 JUMP JUMPDEST PUSH0 PUSH2 0x254B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2957 SWAP1 PUSH2 0x27AC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E70757420617272617973206C656E677468206D69736D6174636800000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x299A PUSH1 0x1C PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x29A3 DUP2 PUSH2 0x2966 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x29BC SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x298D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x29C6 JUMPI JUMP JUMPDEST PUSH2 0x29CE PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x29FE PUSH1 0x4 DUP3 ADD PUSH2 0x29A7 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2A1A JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C5 JUMP JUMPDEST SWAP1 PUSH2 0x2A31 PUSH2 0x2A2C DUP4 PUSH2 0x2A02 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x2A60 PUSH2 0x2A48 DUP4 PUSH2 0x2A1F JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x2A56 DUP7 SWAP4 PUSH2 0x2A02 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x2A36 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x2A72 JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1328 JUMP JUMPDEST CALLDATALOAD PUSH2 0x2A81 DUP2 PUSH2 0x316 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x2A94 JUMPI PUSH1 0x20 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x1328 JUMP JUMPDEST CALLDATALOAD PUSH2 0x2AA3 DUP2 PUSH2 0x276 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742042616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2ADA PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0xAD7 JUMP JUMPDEST PUSH2 0x2AE3 DUP2 PUSH2 0x2AA6 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2AFC SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2ACD JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2B06 JUMPI JUMP JUMPDEST PUSH2 0x2B0E PUSH2 0x132 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2B3E PUSH1 0x4 DUP3 ADD PUSH2 0x2AE7 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2B59 PUSH2 0x2B54 PUSH2 0x2B5E SWAP3 PUSH2 0x2B42 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2B6B DUP3 PUSH2 0xDBF JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x2B7C JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x1328 JUMP JUMPDEST SWAP1 PUSH2 0x2B8B SWAP1 PUSH2 0x313 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP5 SWAP2 SWAP6 SWAP4 SWAP8 SWAP7 SWAP3 SWAP1 PUSH2 0x2B9F PUSH2 0x2959 JUMP JUMPDEST POP PUSH2 0x2BAB DUP7 DUP3 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x2BC7 PUSH2 0x2BC1 PUSH2 0x2BBC DUP11 DUP7 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ DUP1 PUSH2 0x2DDA JUMPI JUMPDEST DUP1 PUSH2 0x2DA7 JUMPI JUMPDEST PUSH2 0x2BDD SWAP1 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x2BF0 PUSH2 0x2BEB DUP8 DUP4 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x2A3B JUMP JUMPDEST SWAP6 PUSH2 0x2BFA PUSH0 PUSH2 0xFE4 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x2C18 PUSH2 0x2C12 PUSH2 0x2C0D DUP6 DUP8 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x2D99 JUMPI DUP9 SWAP1 PUSH2 0x2C4F PUSH2 0x2C37 PUSH2 0x2C32 DUP15 DUP10 DUP6 SWAP2 PUSH2 0x2A62 JUMP JUMPDEST PUSH2 0x2A77 JUMP JUMPDEST PUSH2 0x2C49 PUSH2 0x2C43 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x17A3 JUMP JUMPDEST PUSH2 0x2CE2 DUP13 PUSH2 0x2C8F PUSH2 0x2C8A PUSH2 0x2C81 PUSH2 0x2C7C PUSH2 0x2C73 PUSH2 0x2C6E DUP11 DUP13 DUP11 SWAP2 PUSH2 0x2A84 JUMP JUMPDEST PUSH2 0x2A99 JUMP JUMPDEST SWAP8 DUP12 DUP9 SWAP2 PUSH2 0x2A84 JUMP JUMPDEST PUSH2 0x2A99 JUMP JUMPDEST SWAP3 DUP11 DUP7 SWAP2 PUSH2 0x2A62 JUMP JUMPDEST PUSH2 0x2A77 JUMP JUMPDEST SWAP1 PUSH2 0x2CA4 PUSH2 0x2C9F DUP13 DUP13 DUP8 SWAP2 PUSH2 0x2A84 JUMP JUMPDEST PUSH2 0x2A99 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x2CB8 PUSH2 0x2CB3 DUP9 PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2CD7 CALLER SWAP3 PUSH2 0x2CCB PUSH2 0x132 JUMP JUMPDEST SWAP9 DUP10 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x13B2 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x2D94 JUMPI PUSH2 0x2D61 SWAP7 PUSH2 0x2D1D PUSH2 0x2D49 SWAP6 PUSH2 0x2D5C SWAP8 PUSH0 SWAP2 PUSH2 0x2D66 JUMPI JUMPDEST POP PUSH2 0x2D16 PUSH2 0x2D10 DUP7 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x2AFF JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH0 SWAP4 CALLER SWAP3 SWAP4 PUSH2 0x2D43 PUSH2 0x2D3D TIMESTAMP PUSH2 0x2D37 PUSH2 0x12C PUSH2 0x2B45 JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP7 PUSH2 0xFE4 JUMP JUMPDEST SWAP3 PUSH2 0x1BB7 JUMP JUMPDEST POP PUSH2 0x2D57 DUP12 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0x2B61 JUMP JUMPDEST PUSH2 0x2B81 JUMP JUMPDEST PUSH2 0x1BDB JUMP JUMPDEST PUSH2 0x2BFB JUMP JUMPDEST PUSH2 0x2D87 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2D8D JUMPI JUMPDEST PUSH2 0x2D7F DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C42 JUMP JUMPDEST PUSH0 PUSH2 0x2D03 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D75 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST POP POP POP POP POP POP POP SWAP2 SWAP3 POP POP SWAP1 JUMP JUMPDEST POP PUSH2 0x2BDD PUSH2 0x2DB6 DUP11 DUP6 SWAP1 PUSH2 0x2962 JUMP JUMPDEST PUSH2 0x2DD2 PUSH2 0x2DCC PUSH2 0x2DC7 DUP10 DUP10 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x2BD4 JUMP JUMPDEST POP PUSH2 0x2DE6 DUP8 DUP4 SWAP1 PUSH2 0x295E JUMP JUMPDEST PUSH2 0x2E02 PUSH2 0x2DFC PUSH2 0x2DF7 DUP13 DUP8 SWAP1 PUSH2 0x2962 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x2BCE JUMP JUMPDEST PUSH2 0x2E19 SWAP1 PUSH2 0x2E14 PUSH2 0x384F JUMP JUMPDEST PUSH2 0x2E1B JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2E36 PUSH2 0x2E30 PUSH2 0x2E2B PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ PUSH2 0x2E46 JUMPI PUSH2 0x2E44 SWAP1 PUSH2 0x38E0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2E89 PUSH2 0x2E52 PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x2E5A PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2E96 SWAP1 PUSH2 0x2E08 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2EA0 PUSH2 0xED4 JUMP JUMPDEST POP PUSH2 0x2EB3 PUSH0 PUSH2 0x2EAD PUSH2 0x3970 JUMP JUMPDEST ADD PUSH2 0x2352 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2EC2 PUSH2 0x2EC7 SWAP2 PUSH2 0x16E0 JUMP JUMPDEST PUSH2 0x57B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2ED4 SWAP1 SLOAD PUSH2 0x2EB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2EE1 PUSH1 0x2 PUSH2 0x109F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F0F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x220D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2F2D PUSH2 0x2F28 PUSH2 0x2F32 SWAP3 PUSH2 0x313 JUMP JUMPDEST PUSH2 0x514 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F4D PUSH2 0x2F48 PUSH2 0x2F54 SWAP3 PUSH2 0x2F19 JUMP JUMPDEST PUSH2 0x2F35 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2EE4 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2F60 PUSH2 0x39D1 JUMP JUMPDEST PUSH2 0x2F6B PUSH0 DUP3 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH2 0x2F84 PUSH2 0x2F7E PUSH2 0x2F79 PUSH2 0x2ED7 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x2F9F JUMPI PUSH2 0x2F9D SWAP1 PUSH0 PUSH2 0x2F96 PUSH2 0x2ED7 JUMP JUMPDEST SWAP2 ADD PUSH2 0x2F38 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2FA7 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2FD7 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2FE5 PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3003 PUSH2 0x2FF3 PUSH2 0x39D1 JUMP JUMPDEST PUSH0 PUSH2 0x2FFC PUSH2 0x2FDB JUMP JUMPDEST SWAP2 ADD PUSH2 0x2F38 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x3026 SWAP3 SWAP5 SWAP4 PUSH2 0x301F PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x3050 JUMPI DUP1 PUSH2 0x3044 PUSH2 0x304D SWAP3 PUSH0 DUP7 ADD PUSH2 0x1C33 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x1C33 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST PUSH2 0x305E SWAP1 PUSH2 0xFE4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP5 PUSH2 0x30AA PUSH2 0x30B4 SWAP3 SWAP9 SWAP8 SWAP6 PUSH2 0x30A0 PUSH1 0xA0 SWAP7 PUSH2 0x3096 PUSH2 0x30BB SWAP11 PUSH2 0x308C PUSH1 0xC0 DUP11 ADD SWAP15 PUSH0 DUP12 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x20 DUP10 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 DUP8 ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST PUSH1 0x60 DUP6 ADD SWAP1 PUSH2 0x3055 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP1 PUSH2 0x95D JUMP JUMPDEST ADD SWAP1 PUSH2 0x3CD JUMP JUMPDEST JUMP JUMPDEST SWAP4 SWAP3 SWAP1 PUSH2 0x30C8 PUSH2 0xEEC JUMP JUMPDEST SWAP2 PUSH2 0x30D1 PUSH2 0xEEC JUMP JUMPDEST SWAP4 PUSH2 0x30DA PUSH2 0xEEC JUMP JUMPDEST POP SWAP4 PUSH2 0x30E4 PUSH2 0x22A8 JUMP JUMPDEST POP PUSH2 0x30ED PUSH2 0xEEC JUMP JUMPDEST SWAP4 JUMPDEST DUP5 PUSH2 0x310A PUSH2 0x3104 PUSH2 0x30FF DUP8 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x353B JUMPI DUP5 PUSH2 0x3123 PUSH2 0x311D PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ DUP1 PUSH2 0x3518 JUMPI JUMPDEST PUSH0 EQ PUSH2 0x34A2 JUMPI POP DUP2 JUMPDEST PUSH2 0x3156 PUSH2 0x3151 PUSH2 0x314C PUSH2 0x3147 DUP12 DUP10 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST PUSH1 0x20 PUSH4 0xDD62ED3E SWAP2 PUSH2 0x3167 ADDRESS PUSH2 0x13A6 JUMP JUMPDEST SWAP1 PUSH2 0x3196 PUSH2 0x317E PUSH2 0x3179 DUP11 DUP13 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP5 PUSH2 0x31A1 PUSH2 0x318A PUSH2 0x132 JUMP JUMPDEST SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP5 PUSH2 0x13B2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x17F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x349D JUMPI PUSH0 SWAP2 PUSH2 0x346F JUMPI JUMPDEST POP PUSH2 0x31C7 PUSH2 0x31C1 DUP9 SWAP3 PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT ISZERO PUSH2 0x33C2 JUMPI JUMPDEST PUSH1 0x40 DUP9 PUSH2 0x31F4 PUSH2 0x31EF PUSH2 0x31EA PUSH2 0x31E5 DUP10 DUP12 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x1BF6 JUMP JUMPDEST PUSH2 0x1C02 JUMP JUMPDEST PUSH2 0x3274 PUSH0 PUSH4 0x9908FC8B PUSH2 0x327F PUSH2 0x323A PUSH2 0x3235 DUP14 PUSH2 0x322F PUSH2 0x321D PUSH2 0x3218 DUP12 DUP5 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP10 SWAP2 PUSH2 0x3229 PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP8 DUP14 SWAP1 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH2 0x3268 PUSH2 0x132 JUMP JUMPDEST SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP9 PUSH2 0x13B2 JUMP JUMPDEST DUP9 MSTORE PUSH1 0x4 DUP9 ADD PUSH2 0x3062 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x33BD JUMPI DUP9 SWAP2 PUSH0 DUP1 SWAP2 SWAP1 SWAP5 PUSH2 0x3387 JUMPI JUMPDEST POP SWAP1 PUSH2 0x32ED SWAP2 PUSH1 0x20 PUSH2 0x32D7 PUSH2 0x32D2 PUSH2 0x32CD PUSH2 0x32C8 DUP13 PUSH2 0x32C2 PUSH1 0x12 SWAP11 SWAP2 PUSH2 0x32BC PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1C78 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x32E5 PUSH2 0x132 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x32FD PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3382 JUMPI PUSH2 0x3335 PUSH2 0x3330 PUSH2 0x333B SWAP4 PUSH2 0x3347 SWAP8 PUSH2 0x3341 SWAP8 PUSH0 SWAP3 PUSH2 0x334E JUMPI JUMPDEST POP PUSH2 0x332B SWAP1 PUSH2 0x1CCE JUMP JUMPDEST PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x1D0E JUMP JUMPDEST SWAP1 PUSH2 0x1D2A JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST SWAP5 PUSH2 0x1BDB JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x30EF JUMP JUMPDEST PUSH2 0x332B SWAP2 SWAP3 POP PUSH2 0x3374 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x337B JUMPI JUMPDEST PUSH2 0x336C DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1CAD JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3321 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3362 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x32ED SWAP3 SWAP5 POP PUSH2 0x33AE SWAP2 POP PUSH1 0x40 RETURNDATASIZE DUP2 GT PUSH2 0x33B6 JUMPI JUMPDEST PUSH2 0x33A6 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3028 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 PUSH2 0x3296 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x339C JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x33E5 PUSH2 0x33E0 PUSH2 0x33DB PUSH2 0x33D6 DUP12 DUP10 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST PUSH2 0x138E JUMP JUMPDEST PUSH2 0x139A JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x3400 PUSH2 0x33FB DUP9 DUP11 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x1375 JUMP JUMPDEST SWAP1 PUSH2 0x341E PUSH0 DUP12 SWAP6 PUSH2 0x3429 PUSH2 0x3412 PUSH2 0x132 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x13B2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x3005 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x346A JUMPI PUSH2 0x343E JUMPI JUMPDEST POP PUSH2 0x31CE JUMP JUMPDEST PUSH2 0x345E SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3463 JUMPI JUMPDEST PUSH2 0x3456 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x3438 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x344C JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x3490 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3496 JUMPI JUMPDEST PUSH2 0x3488 DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1C42 JUMP JUMPDEST PUSH0 PUSH2 0x31B3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x347E JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST DUP5 PUSH2 0x34B5 PUSH2 0x34AF PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x34CC JUMPI POP PUSH2 0x34C6 ADDRESS PUSH2 0x13A6 JUMP JUMPDEST JUMPDEST PUSH2 0x3133 JUMP JUMPDEST SWAP5 POP DUP4 PUSH2 0x34FC PUSH2 0x34F6 PUSH2 0x34F1 PUSH2 0x34E1 DUP8 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x34EB PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST LT PUSH0 EQ PUSH2 0x3512 JUMPI PUSH2 0x350C ADDRESS PUSH2 0x13A6 JUMP JUMPDEST JUMPDEST PUSH2 0x34C7 JUMP JUMPDEST DUP2 PUSH2 0x350D JUMP JUMPDEST POP PUSH2 0x3522 DUP5 PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x3535 PUSH2 0x352F PUSH1 0x1 PUSH2 0x115A JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x312A JUMP JUMPDEST SWAP7 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x354E SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x355A ADDRESS PUSH2 0x3545 JUMP JUMPDEST PUSH2 0x358C PUSH2 0x3586 PUSH32 0x0 PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x35D6 JUMPI JUMPDEST PUSH2 0x359A JUMPI JUMP JUMPDEST PUSH2 0x35A2 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x35D2 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x35DF PUSH2 0x39F5 JUMP JUMPDEST PUSH2 0x3611 PUSH2 0x360B PUSH32 0x0 PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ ISZERO PUSH2 0x3594 JUMP JUMPDEST POP PUSH2 0x3621 PUSH2 0x384F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x362C SWAP1 PUSH2 0x3618 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3637 SWAP1 PUSH2 0x517 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3643 SWAP1 PUSH2 0x362E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x364F SWAP1 PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x365B DUP2 PUSH2 0x821 JUMP JUMPDEST SUB PUSH2 0x3662 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x3673 DUP3 PUSH2 0x3652 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x368E JUMPI PUSH2 0x368B SWAP2 PUSH0 ADD PUSH2 0x3666 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x36C1 PUSH1 0x20 PUSH2 0x36AB PUSH2 0x36A6 DUP7 PUSH2 0x363A JUMP JUMPDEST PUSH2 0x3646 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x36B9 PUSH2 0x132 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x13B2 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x36D1 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x37A1 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x3732 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x36F3 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x372E SWAP1 PUSH2 0x36FF PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x374D PUSH2 0x3747 PUSH2 0x3742 PUSH2 0x222E JUMP JUMPDEST PUSH2 0x821 JUMP JUMPDEST SWAP2 PUSH2 0x821 JUMP JUMPDEST SUB PUSH2 0x3762 JUMPI PUSH2 0x375D SWAP3 SWAP4 POP PUSH2 0x3A1F JUMP JUMPDEST PUSH2 0x36F1 JUMP JUMPDEST PUSH2 0x379D DUP5 PUSH2 0x376E PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x831 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x37C3 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x37CA JUMPI JUMPDEST PUSH2 0x37BB DUP2 DUP4 PUSH2 0x1F2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3675 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x36DE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x37B1 JUMP JUMPDEST PUSH2 0x37DA ADDRESS PUSH2 0x3545 JUMP JUMPDEST PUSH2 0x380C PUSH2 0x3806 PUSH32 0x0 PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST SUB PUSH2 0x3813 JUMPI JUMP JUMPDEST PUSH2 0x381B PUSH2 0x132 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x384B PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3857 PUSH2 0x22E6 JUMP JUMPDEST PUSH2 0x3870 PUSH2 0x386A PUSH2 0x3865 PUSH2 0x3AA8 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST SUB PUSH2 0x3877 JUMPI JUMP JUMPDEST PUSH2 0x38B9 PUSH2 0x3882 PUSH2 0x3AA8 JUMP JUMPDEST PUSH2 0x388A PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x38D5 PUSH2 0x38D0 PUSH2 0x38DC SWAP3 PUSH2 0x53F JUMP JUMPDEST PUSH2 0x38BD JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2513 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x38E8 PUSH2 0x394C JUMP JUMPDEST PUSH2 0x3900 PUSH2 0x38F6 PUSH0 DUP4 ADD PUSH2 0x22D9 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x38C0 JUMP JUMPDEST SWAP1 PUSH2 0x3934 PUSH2 0x392E PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x53F JUMP JUMPDEST SWAP2 PUSH2 0x53F JUMP JUMPDEST SWAP2 PUSH2 0x393D PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0x3947 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x399C PUSH2 0x3AB5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x39A6 PUSH2 0x3994 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x39B9 SWAP1 PUSH2 0x39B4 PUSH2 0x3AB5 JUMP JUMPDEST PUSH2 0x39BB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x39C4 SWAP1 PUSH2 0x3B8D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x39CF SWAP1 PUSH2 0x39A8 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH2 0x39FD PUSH2 0x22A8 JUMP JUMPDEST POP PUSH2 0x3A18 PUSH0 PUSH2 0x3A12 PUSH2 0x3A0D PUSH2 0x222E JUMP JUMPDEST PUSH2 0x3B98 JUMP JUMPDEST ADD PUSH2 0x22D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3A29 DUP3 PUSH2 0x3B9B JUMP JUMPDEST DUP2 PUSH2 0x3A54 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x53F JUMP JUMPDEST SWAP1 PUSH2 0x3A5D PUSH2 0x132 JUMP JUMPDEST DUP1 PUSH2 0x3A67 DUP2 PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x3A73 DUP2 PUSH2 0x3A1B JUMP JUMPDEST PUSH2 0x3A85 PUSH2 0x3A7F PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x3A99 JUMPI PUSH2 0x3A95 SWAP2 PUSH2 0x3CAB JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x3AA3 PUSH2 0x3C10 JUMP JUMPDEST PUSH2 0x3A97 JUMP JUMPDEST PUSH2 0x3AB0 PUSH2 0x22A8 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x3AC6 PUSH2 0x3AC0 PUSH2 0x3CDE JUMP JUMPDEST ISZERO PUSH2 0x13B8 JUMP JUMPDEST PUSH2 0x3ACC JUMPI JUMP JUMPDEST PUSH2 0x3AD4 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3B04 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B19 SWAP1 PUSH2 0x3B14 PUSH2 0x3AB5 JUMP JUMPDEST PUSH2 0x3B1B JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x3B36 PUSH2 0x3B30 PUSH2 0x3B2B PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x26A JUMP JUMPDEST SWAP2 PUSH2 0x26A JUMP JUMPDEST EQ PUSH2 0x3B46 JUMPI PUSH2 0x3B44 SWAP1 PUSH2 0x38E0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B89 PUSH2 0x3B52 PUSH0 PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x3B5A PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B96 SWAP1 PUSH2 0x3B08 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x3BAF PUSH2 0x3BA9 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x3BD1 JUMPI PUSH2 0x3BCF SWAP1 PUSH0 PUSH2 0x3BC9 PUSH2 0x3BC4 PUSH2 0x222E JUMP JUMPDEST PUSH2 0x3B98 JUMP JUMPDEST ADD PUSH2 0x38C0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3C0C SWAP1 PUSH2 0x3BDD PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x3C23 PUSH2 0x3C1D PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH2 0x3C2A JUMPI JUMP JUMPDEST PUSH2 0x3C32 PUSH2 0x132 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3C62 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3C7D PUSH2 0x3C78 DUP4 PUSH2 0x726 JUMP JUMPDEST PUSH2 0x21B JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x3C9D JUMPI PUSH2 0x3C92 RETURNDATASIZE PUSH2 0x3C6B JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x3CA5 PUSH2 0x3C66 JUMP JUMPDEST SWAP1 PUSH2 0x3C9B JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x3CD7 SWAP4 PUSH2 0x3CB9 PUSH2 0x3C66 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x3CCE PUSH2 0x3C82 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x3CFC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3CE6 PUSH2 0x3CDA JUMP JUMPDEST POP PUSH2 0x3CF9 PUSH0 PUSH2 0x3CF3 PUSH2 0x3970 JUMP JUMPDEST ADD PUSH2 0x2324 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3D10 SWAP1 PUSH2 0x3D09 PUSH2 0x3C66 JUMP JUMPDEST POP ISZERO PUSH2 0x13B8 JUMP JUMPDEST PUSH0 EQ PUSH2 0x3D1C JUMPI POP PUSH2 0x3DA0 JUMP JUMPDEST PUSH2 0x3D25 DUP3 PUSH2 0x3A1B JUMP JUMPDEST PUSH2 0x3D37 PUSH2 0x3D31 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ DUP1 PUSH2 0x3D85 JUMPI JUMPDEST PUSH2 0x3D46 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x3D81 SWAP1 PUSH2 0x3D52 PUSH2 0x132 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x96A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x3D9A PUSH2 0x3D94 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST EQ PUSH2 0x3D3E JUMP JUMPDEST PUSH2 0x3DA9 DUP2 PUSH2 0x3A1B JUMP JUMPDEST PUSH2 0x3DBB PUSH2 0x3DB5 PUSH0 PUSH2 0xFE4 JUMP JUMPDEST SWAP2 PUSH2 0x313 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x3DCA JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3DD2 PUSH2 0x132 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3E02 PUSH1 0x4 DUP3 ADD PUSH2 0x7F2 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT PUSH7 0x9F6E7C9FC6C69C PUSH29 0x277D31E871E1A8FD5EFF3936BA41F92FE09EEF77345D64736F6C634300 ADDMOD NOT STOP CALLER ","sourceMap":"2206:12420:62:-:0;;;;;;;;;-1:-1:-1;2206:12420:62;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2418:68::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2206:12420::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2376:33::-;;;;;:::i;:::-;;:::o;2206:12420::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;2206:12420:62:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;14511:112::-;14565:6;;:::i;:::-;14591:24;;;:::i;:::-;14584:31;:::o;2206:12420::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2559:112;;2662:1;2559:112;;;;;;;2604:47;6150:8;2612:27;;2624:15;2612:27;:::i;:::-;;;:::i;:::-;;;2604:47;:::i;:::-;2662:1;:::i;:::-;2559:112;;:::o;3217:103:6:-;;3282:1;3217:103;;;;;;;;;:::i;:::-;3282:1;:::i;:::-;;;;;:::i;:::-;3217:103::o;2206:12420:62:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;5905:852;;;;;;;;;;;6237:10;6229:46;6237:10;:14;;6250:1;6237:14;:::i;:::-;;;:::i;:::-;;6229:46;:::i;:::-;6286:52;6294:16;:9;:16;:::i;:::-;:21;;6314:1;6294:21;:::i;:::-;;;:::i;:::-;;;6286:52;:::i;:::-;6349:69;6357:15;:8;:15;:::i;:::-;:39;;6376:20;:16;:9;:16;:::i;:::-;:20;6395:1;6376:20;:::i;:::-;;;:::i;:::-;6357:39;:::i;:::-;;;:::i;:::-;;6349:69;:::i;:::-;6429:41;6437:2;:16;;6443:10;6451:1;6443:10;:::i;:::-;6437:16;:::i;:::-;;;:::i;:::-;;;6429:41;:::i;:::-;6521:33;:20;6528:12;;:9;:12;6538:1;6528:12;:::i;:::-;;;:::i;:::-;;:::i;:::-;6521:20;:::i;:::-;:33;:::i;:::-;;:81;:33;6563:10;;6584:4;6521:81;;6576:13;6584:4;6576:13;:::i;:::-;6591:10;6521:81;6591:10;6521:81;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6691:58;6521:81;6638:42;6521:81;;;5905:852;6644:9;6655:8;6665:10;6677:2;6638:42;;:::i;:::-;6615:65;;6699:9;:28;;:9;6712:15;6699:28;:::i;:::-;;;:::i;:::-;;;6691:58;:::i;:::-;5905:852::o;6521:81::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5905:852::-;;6201:15;5905:852;;;;;6182:17;;:::i;:::-;6201:15;;:::i;:::-;;;:::i;:::-;5905:852;;:::o;2559:112::-;;2662:1;2559:112;;;;;;;;2604:47;4288:8;2612:27;;2624:15;2612:27;:::i;:::-;;;:::i;:::-;;;2604:47;:::i;:::-;2662:1;:::i;:::-;2559:112;;:::o;3217:103:6:-;;3282:1;3217:103;;;;;;;;;;:::i;:::-;3282:1;:::i;:::-;;;;;:::i;:::-;3217:103::o;2206:12420:62:-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;4052:1126::-;;;;;;;;;;;4426:8;:32;;:30;:8;;;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;4562:28;4426:32;4404:55;4426:32;;;;;4052:1126;4404:55;;:::i;:::-;4470:59;4478:10;:14;;4491:1;4478:14;:::i;:::-;;;:::i;:::-;;4470:59;:::i;:::-;4562:28;:::i;:::-;:48;:28;4591:9;;4602:7;4562:48;4602:7;4562:48;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;4052:1126;4540:70;4629:11;4621:75;4629:11;:25;;4644:10;4652:1;4644:10;:::i;:::-;4629:25;:::i;:::-;;;:::i;:::-;;;4621:75;:::i;:::-;4707:63;:30;:17;4714:9;4707:17;:::i;:::-;:30;:::i;:::-;;4738:4;4752;4707:63;;4744:13;4752:4;4744:13;:::i;:::-;4759:10;4707:63;4759:10;4707:63;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;5078:52;4707:63;5025:42;4707:63;4874:22;4707:63;;;4052:1126;4826:1;4839:24;4812:16;;4826:1;4812:16;:::i;:::-;;:::i;:::-;4854:9;4839:24;:9;:24;4849:1;4839:24;:::i;:::-;;;:::i;:::-;;:::i;:::-;4874:22;:9;:22;4884:1;4874:22;:::i;:::-;;;:::i;:::-;;:::i;:::-;4964:25;4937:16;;4951:1;4937:16;:::i;:::-;;:::i;:::-;4978:11;4964:25;:8;:25;4973:1;4964:25;:::i;:::-;;;:::i;:::-;;:::i;:::-;5042:8;5052:10;5064:2;5025:42;;:::i;:::-;5002:65;;5086:9;:22;;:9;5099;5086:22;:::i;:::-;;;:::i;:::-;;;5078:52;:::i;:::-;5143:27;;:::o;4707:63::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;4562:48::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4426:32::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4052:1126::-;;4339:15;4052:1126;;;;;;4320:17;;:::i;:::-;4339:15;;:::i;:::-;;;:::i;:::-;4052:1126;;:::o;2206:12420::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;9973:1345::-;;;10134:24;;:::i;:::-;10160:15;;;:::i;:::-;10196:10;10188:46;10196:10;:14;;10209:1;10196:14;:::i;:::-;;;:::i;:::-;;10188:46;:::i;:::-;10245:52;10253:16;:9;:16;:::i;:::-;:21;;10273:1;10253:21;:::i;:::-;;;:::i;:::-;;;10245:52;:::i;:::-;10308:69;10316:15;:8;:15;:::i;:::-;:39;;10335:20;:16;:9;:16;:::i;:::-;:20;10354:1;10335:20;:::i;:::-;;;:::i;:::-;10316:39;:::i;:::-;;;:::i;:::-;;10308:69;:::i;:::-;10426:20;;:::i;:::-;10542:10;10616:9;;;:::i;:::-;10611:653;10648:3;10627:1;:19;;10631:15;:8;:15;:::i;:::-;10627:19;:::i;:::-;;;:::i;:::-;;;;;10755:1;:6;;10760:1;10755:6;:::i;:::-;;;:::i;:::-;;10751:80;;10648:3;10939:8;10925:45;:26;10939:11;;:8;10948:1;10939:11;;:::i;:::-;;:::i;:::-;10925:26;:::i;:::-;:45;:::i;:::-;:159;:45;10989:9;:12;;:9;10999:1;10989:12;;:::i;:::-;;:::i;:::-;11020:9;10925:159;11020:16;;:9;11030:5;:1;:5;11034:1;11030:5;:::i;:::-;;;:::i;:::-;11020:16;;:::i;:::-;;:::i;:::-;11055:14;10925:159;11055:14;10925:159;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;11208:43;10925:159;;;;;10648:3;10904:180;11181:12;;11208:43;:41;:32;11223:16;;11203:2;11233:5;11203:2;11223:9;11233:1;:5;11237:1;11233:5;:::i;:::-;;;:::i;:::-;11223:16;;:::i;:::-;;:::i;:::-;11208:32;:::i;:::-;:41;:::i;:::-;;:43;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;11196:56;11203:48;11181:71;11208:43;10648:3;11208:43;11170:82;11208:43;;;;;10648:3;11203:48;;;;:::i;:::-;;:::i;:::-;11196:56;:::i;:::-;11181:71;;:::i;:::-;11170:82;;:::i;:::-;10648:3;;:::i;:::-;10616:9;;;;11208:43;11203:48;11208:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;10925:159::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10751:80::-;10799:16;;;10751:80;;;;10627:19;;;;;;;;11276:34;;:::o;13454:474::-;;13560:7;;:::i;:::-;13639:8;:32;;:30;:8;;;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;13705:28;13639:32;13617:55;13639:32;;;;;13454:474;13617:55;;:::i;:::-;13705:28;:::i;:::-;;:48;:28;13734:9;;13745:7;13705:48;13745:7;13705:48;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;13842:23;13785:26;13842:51;13705:48;13842:51;13705:48;;;;;13454:474;13683:70;13785:26;:::i;:::-;13842:23;:::i;:::-;;:51;:23;13866:9;13877:7;13886:6;13842:51;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;13454:474;13822:71;13904:16;:::o;13842:51::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;13705:48::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;13639:32::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;2206:12420:62:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;2206:12420:62:-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;3155:101::-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;2206:12420:62:-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;2206:12420:62:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;6252:431:1:-;;2953:7:62;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;2206:12420:62;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2875:145::-;2973:39;2875:145;;2984:28;2875:145;2984:28;:::i;:::-;2973:39;;:::i;:::-;2875:145::o;:::-;;;;;:::i;:::-;:::o;2206:12420::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;14137:262::-;14217:16;;:::i;:::-;14305:8;:32;;:30;:8;;;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;14356:28;14283:55;14356:35;14305:32;14356:35;14305:32;;;;;14137:262;14283:55;;:::i;:::-;14356:28;:::i;:::-;:35;:28;:35;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;14137:262;14349:42;;:::o;14356:35::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;14305:32::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2206:12420::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2679:188:62;2831:28;2820:39;2679:188;;;:::i;:::-;2798:10;;;:::i;:::-;2831:28;:::i;:::-;2820:39;;:::i;:::-;2679:188::o;:::-;;;;:::i;:::-;:::o;2206:12420::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;11847:1263::-;;;;;;;;;12054:16;;:::i;:::-;12105:10;:17;:10;;:17;;:::i;:::-;:36;;12126:15;:8;;:15;;:::i;:::-;12105:36;:::i;:::-;;;:::i;:::-;;:90;;;11847:1263;12105:145;;;11847:1263;12083:223;;;:::i;:::-;12349:32;12363:17;:10;;:17;;:::i;:::-;12349:32;:::i;:::-;12411:1;12399:13;12411:1;12399:13;:::i;:::-;12437:3;12414:1;:21;;12418:17;:10;;:17;;:::i;:::-;12414:21;:::i;:::-;;;:::i;:::-;;;;;12465:7;;12457:59;12465:10;;:7;;12473:1;12465:10;;:::i;:::-;;:::i;:::-;:14;;12478:1;12465:14;:::i;:::-;;;:::i;:::-;;12457:59;:::i;:::-;12725:39;12553:10;12644;;12599:11;;12553:13;;:10;;12564:1;12553:13;;:::i;:::-;;:::i;:::-;12599:8;;12608:1;12599:11;;:::i;:::-;;:::i;:::-;12644:7;;12652:1;12644:10;;:::i;:::-;;:::i;:::-;12688:9;:12;;:9;;12698:1;12688:12;;:::i;:::-;;:::i;:::-;12732:9;12725:39;:27;:17;12732:9;12725:17;:::i;:::-;:27;:::i;:::-;;12753:10;12725:39;12753:10;12725:39;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;12437:3;12725:39;12717:82;12834:227;12725:39;12814:247;12725:39;;;;;12437:3;12768:6;12725:49;;12768:6;12725:49;:::i;:::-;;;:::i;:::-;;;12717:82;:::i;:::-;12898:7;12924:6;12949:1;;12969:10;;12998:8;13025:15;12834:227;13025:21;:15;:21;13043:3;13025:21;:::i;:::-;;;:::i;:::-;12834:227;;:::i;:::-;;;:::i;:::-;12815:10;12814:247;12815:10;12826:1;;12814:247;;;:::i;:::-;;:::i;:::-;12437:3;:::i;:::-;12399:13;;12725:39;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;12414:21::-;;;;;;;;;;;;13085:17;:::o;12105:145::-;12216:7;12083:223;12216:14;:7;;:14;;:::i;:::-;:34;;12234:16;:9;;:16;;:::i;:::-;12216:34;:::i;:::-;;;:::i;:::-;;12105:145;;;;:90;12162:8;:15;:8;;:15;;:::i;:::-;:33;;12181:14;:7;;:14;;:::i;:::-;12162:33;:::i;:::-;;;:::i;:::-;;12105:90;;2303:62:0;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;8243:128:1:-;8300:6;;:::i;:::-;8325:26;:39;;:26;;:::i;:::-;:39;;:::i;:::-;8318:46;:::o;2206:12420:62:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;1812:36:6:-;1847:1;;;:::i;:::-;1812:36;:::o;1847:1::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3326:384::-;3410:28;;:::i;:::-;3526:9;;:1;:9;;:::i;:::-;:20;;3539:7;;:::i;:::-;3526:20;:::i;:::-;;;:::i;:::-;;3522:88;;3684:19;3696:7;3684:9;3696:7;;:::i;:::-;3684:1;:9;:19;:::i;:::-;3326:384::o;3522:88::-;3569:30;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1766:40;1805:1;;;:::i;:::-;1766:40;:::o;3716:283::-;3969:23;3799:28;;:::i;:::-;3969:9;3981:11;;:::i;:::-;3969:1;:9;:23;:::i;:::-;3716:283::o;2206:12420:62:-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;7445:2054::-;;;;7608:17;;:::i;:::-;7627:15;;;:::i;:::-;7691:20;;;:::i;:::-;7807:10;7874:14;;;:::i;:::-;7906:9;;;:::i;:::-;7901:1591;7938:3;7917:1;:19;;7921:15;:8;:15;:::i;:::-;7917:19;:::i;:::-;;;:::i;:::-;;;;;8045:1;:6;;8050:1;8045:6;:::i;:::-;;;:::i;:::-;;:30;;;7938:3;8041:638;;;;8169:2;;8041:638;8715:30;:20;8722:12;;:9;8732:1;8722:12;;:::i;:::-;;:::i;:::-;8715:20;:::i;:::-;:30;:::i;:::-;:58;:30;8754:4;8746:13;8754:4;8746:13;:::i;:::-;8761:8;8715:58;8761:11;;:8;8770:1;8761:11;;:::i;:::-;;:::i;:::-;8715:58;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8041:638;8695:78;8794:27;;:14;8812:9;8794:27;:::i;:::-;;;:::i;:::-;;;8790:125;;8041:638;9016:327;9030:8;9016:31;:26;9030:11;;:8;9039:1;9030:11;;:::i;:::-;;:::i;:::-;9016:26;:::i;:::-;:31;:::i;:::-;:327;;:31;:327;9097:16;;9066:9;9107:5;9066:12;;:9;9076:1;9066:12;;:::i;:::-;;:::i;:::-;9097:9;9107:1;:5;9111:1;9107:5;:::i;:::-;;;:::i;:::-;9097:16;;:::i;:::-;;:::i;:::-;9132:14;;9165:1;;9268:17;9016:327;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8041:638;8988:355;;9436:43;8988:355;9436:43;:41;:32;9451:16;;9431:2;9461:5;9431:2;9451:9;9461:1;:5;9465:1;9461:5;:::i;:::-;;;:::i;:::-;9451:16;;:::i;:::-;;:::i;:::-;9436:32;:::i;:::-;:41;:::i;:::-;;:43;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;9424:56;9431:48;9409:71;9436:43;7938:3;9436:43;9398:82;9436:43;;;;;8041:638;9431:48;;;;:::i;:::-;;:::i;:::-;9424:56;:::i;:::-;9409:71;;:::i;:::-;9398:82;;:::i;:::-;7938:3;;:::i;:::-;7906:9;;;;9436:43;9431:48;9436:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;9016:327::-;9436:43;9016:327;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;8790:125::-;8842:28;:20;8849:12;;:9;8859:1;8849:12;;:::i;:::-;;:::i;:::-;8842:20;:::i;:::-;:28;:::i;:::-;:57;:28;8871:8;:11;;:8;8880:1;8871:11;;:::i;:::-;;:::i;:::-;8884:14;8842:57;;8884:14;8842:57;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;8790:125;;;;8842:57;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;8715:58::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8041:638::-;8197:1;:6;;8202:1;8197:6;:::i;:::-;;;:::i;:::-;;8193:486;;;;8305:4;8297:13;8305:4;8297:13;:::i;:::-;8193:486;8041:638;;8193:486;8336:1;;;:23;;8340:19;:15;:8;:15;:::i;:::-;:19;8358:1;8340:19;:::i;:::-;;;:::i;:::-;8336:23;:::i;:::-;;;:::i;:::-;;8332:347;;;;8454:13;8462:4;8454:13;:::i;:::-;8332:347;8193:486;;8332:347;8616:2;8332:347;;8045:30;8055:8;:15;:8;:15;:::i;:::-;:20;;8074:1;8055:20;:::i;:::-;;;:::i;:::-;;8045:30;;7917:19;;;;;;;;;7445:2054::o;2206:12420::-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;3288:84:62:-;;;;:::i;:::-;:::o;2206:12420::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2658:162:0;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2206:12420:62;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3774:248:0:-;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;2251:183:6:-;2355:73;2251:183;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;2206:12420:62:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;887:96:4;940:7;;:::i;:::-;966:10;;959:17;:::o;7084:141:1:-;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2206:12420:62;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;2206:12420:62:-;;;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"3186400","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","batchSwap(address[],address[],uint256[],address[])":"infinite","getAmountOut(address,address,uint256)":"infinite","getPoolsContainingToken(address)":"infinite","getVersion()":"infinite","initialize(address)":"infinite","owner()":"2928","poolsReserves(address,address)":"infinite","proxiableUUID()":"infinite","quotePotentialSwaps(address[],address[],uint256)":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","renounceOwnership()":"infinite","swapTokenForToken(address,address,uint256,uint256,address,address,uint256)":"infinite","swapTokensForTokens(address[],address[],uint256,uint256,address,uint256)":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_swap(address[] memory,address[] memory,uint256,address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","batchSwap(address[],address[],uint256[],address[])":"e74e9b06","getAmountOut(address,address,uint256)":"4aa06652","getPoolsContainingToken(address)":"ae3cce1c","getVersion()":"0d8e6e2c","initialize(address)":"c4d66de8","owner()":"8da5cb5b","poolsReserves(address,address)":"4056c37f","proxiableUUID()":"52d1902d","quotePotentialSwaps(address[],address[],uint256)":"4209bed0","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","renounceOwnership()":"715018a6","swapTokenForToken(address,address,uint256,uint256,address,address,uint256)":"35823d76","swapTokensForTokens(address[],address[],uint256,uint256,address,uint256)":"21579b79","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"fromTokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"toTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"receivers\",\"type\":\"address[]\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolsContainingToken\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"poolsReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"poolPath\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"fromAmount\",\"type\":\"uint256\"}],\"name\":\"quotePotentialSwaps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"potentialOutcome\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"haircut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fromAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokenForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"haircut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"poolPath\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"fromAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumToAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"haircut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract serves as the periphery contract for interacting with BaluniV1Pool contracts.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"batchSwap(address[],address[],uint256[],address[])\":{\"details\":\"Performs batch swaps between multiple token pairs.\",\"params\":{\"amounts\":\"An array of amounts representing the amounts to swap.\",\"fromTokens\":\"An array of addresses representing the tokens to swap from.\",\"receivers\":\"An array of addresses representing the receivers of the swapped tokens.\",\"toTokens\":\"An array of addresses representing the tokens to swap to.\"},\"returns\":{\"_0\":\"An array of amounts representing the amounts of tokens received after the swaps.\"}},\"getAmountOut(address,address,uint256)\":{\"details\":\"Gets the amount of tokens received after a swap in a BaluniV1Pool.\",\"params\":{\"amount\":\"The amount of tokens to swap.\",\"fromToken\":\"The address of the token to swap from.\",\"toToken\":\"The address of the token to swap to.\"},\"returns\":{\"_0\":\"The amount of tokens received after the swap.\"}},\"getPoolsContainingToken(address)\":{\"details\":\"Returns an array of pool addresses that contain the given token.\",\"params\":{\"token\":\"The address of the token to search for.\"},\"returns\":{\"_0\":\"An array of pool addresses.\"}},\"getVersion()\":{\"details\":\"Returns the version of the contract.\",\"returns\":{\"_0\":\"The version string.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"quotePotentialSwaps(address[],address[],uint256)\":{\"details\":\"To be used by frontend\",\"params\":{\"fromAmount\":\"The amount to quote\",\"poolPath\":\"The token pool path\",\"tokenPath\":\"The token swap path\"},\"returns\":{\"haircut\":\"The total haircut that would be applied\",\"potentialOutcome\":\"The potential final amount user would receive\"}},\"renounceOwnership()\":{\"details\":\"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.\"},\"swapTokenForToken(address,address,uint256,uint256,address,address,uint256)\":{\"details\":\"Swaps tokens using a Baluni V1 pool.\",\"params\":{\"deadline\":\"The deadline by which the swap must be executed.\",\"from\":\"The address from which the tokens are being swapped.\",\"fromAmount\":\"The amount of tokens to swap from.\",\"fromToken\":\"The address of the token to swap from.\",\"minAmount\":\"The minimum amount of tokens to receive in the swap.\",\"to\":\"The address to which the tokens are being swapped.\",\"toToken\":\"The address of the token to swap to.\"},\"returns\":{\"amountOut\":\"The amount of tokens received in the swap.\",\"haircut\":\"The haircut applied to the swap.\"}},\"swapTokensForTokens(address[],address[],uint256,uint256,address,uint256)\":{\"details\":\"Swaps tokens for tokens using a specified token path and pool path.\",\"params\":{\"deadline\":\"The deadline for the swap to occur.\",\"fromAmount\":\"The amount of tokens to swap from.\",\"minimumToAmount\":\"The minimum amount of tokens to receive after swapping.\",\"poolPath\":\"The array of pool addresses representing the path of pools to use for swapping.\",\"to\":\"The address to receive the swapped tokens.\",\"tokenPath\":\"The array of token addresses representing the path of tokens to swap.\"},\"returns\":{\"amountOut\":\"The amount of tokens received after swapping.\",\"haircut\":\"The amount of tokens deducted as a fee during the swap.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"BaluniV1PoolPeriphery\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"quotePotentialSwaps(address[],address[],uint256)\":{\"notice\":\"Quotes potential outcome of a swap given current tokenPath and poolPath, taking in account slippage and haircut\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pools/BaluniV1PoolPeriphery.sol\":\"BaluniV1PoolPeriphery\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Pool\\r\\n * @dev Interface for the BaluniV1Pool contract\\r\\n */\\r\\ninterface IBaluniV1Pool {\\r\\n    struct AssetInfo {\\r\\n        address asset;\\r\\n        uint256 weight;\\r\\n        uint256 slippage;\\r\\n        uint256 reserve;\\r\\n    }\\r\\n\\r\\n    event WeightsRebalanced(address indexed user, uint256[] amountsToAdd);\\r\\n    event Swap(address indexed user, address fromToken, address toToken, uint256 amountIn, uint256 amountOut);\\r\\n    event Withdraw(address indexed user, uint256 amount);\\r\\n    event Deposit(address indexed user, uint256 amount);\\r\\n    event RebalancePerformed(address indexed user, address[] assets);\\r\\n\\r\\n    function rebalanceAndDeposit(address receiver) external returns (uint256[] memory);\\r\\n\\r\\n    function swap(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount,\\r\\n        uint256 minAmount,\\r\\n        address receiver,\\r\\n        uint256 deadline\\r\\n    ) external returns (uint256 amountOut, uint256 fee);\\r\\n\\r\\n    function quotePotentialSwap(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function getSlippage(address token) external view returns (uint256);\\r\\n\\r\\n    function getTokenWeight(address token) external view returns (uint256);\\r\\n\\r\\n    function getDeviationForToken(address token) external view returns (uint256);\\r\\n\\r\\n    function getSlippageParams() external view returns (uint256[] memory);\\r\\n\\r\\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\\r\\n\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function rebalance() external;\\r\\n\\r\\n    function getDeviations() external view returns (bool[] memory directions, uint256[] memory deviations);\\r\\n\\r\\n    function assetLiquidity(uint256 assetIndex) external view returns (uint256);\\r\\n\\r\\n    function totalValuation() external view returns (uint256 totalVal, uint256[] memory valuations);\\r\\n\\r\\n    function liquidity() external view returns (uint256);\\r\\n\\r\\n    function unitPrice() external view returns (uint256);\\r\\n\\r\\n    function getReserves() external view returns (uint256[] memory);\\r\\n\\r\\n    function getAssetReserve(address asset) external view returns (uint256);\\r\\n\\r\\n    function getAssets() external view returns (address[] memory);\\r\\n\\r\\n    function getWeights() external view returns (uint256[] memory);\\r\\n\\r\\n    function isRebalanceNeeded() external view returns (bool);\\r\\n}\\r\\n\",\"keccak256\":\"0xee1a088737643c523dd1651cb6b00182d35a9365426a04493680682b38ea16d6\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1PoolPeriphery.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1PoolPeriphery\\r\\n * @dev Interface for the BaluniV1PoolPeriphery contract\\r\\n */\\r\\ninterface IBaluniV1PoolPeriphery {\\r\\n    function initialize(address _registry) external;\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) external;\\r\\n\\r\\n    function swapTokenForToken(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minAmount,\\r\\n        address from,\\r\\n        address to,\\r\\n        uint deadline\\r\\n    ) external returns (uint256 amountOut, uint256 haircut);\\r\\n\\r\\n    function swapTokensForTokens(\\r\\n        address[] calldata tokenPath,\\r\\n        address[] calldata poolPath,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minimumToAmount,\\r\\n        address to,\\r\\n        uint256 deadline\\r\\n    ) external returns (uint256 amountOut, uint256 haircut);\\r\\n\\r\\n    function batchSwap(\\r\\n        address[] calldata fromTokens,\\r\\n        address[] calldata toTokens,\\r\\n        uint256[] calldata amounts,\\r\\n        address[] calldata receivers\\r\\n    ) external returns (uint256[] memory);\\r\\n\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function getPoolsContainingToken(address token) external view returns (address[] memory);\\r\\n\\r\\n    function getVersion() external view returns (uint64);\\r\\n}\\r\\n\",\"keccak256\":\"0xb2419b790831f69d82667bc962bb0d13d94014f47a99024153fcb0455e6e70b4\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1PoolRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1PoolRegistry {\\r\\n    function getPoolByAssets(address asset1, address asset2) external view returns (address);\\r\\n    function getPoolsByAsset(address token) external view returns (address[] memory);\\r\\n    function poolExist(address _pool) external view returns (bool);\\r\\n    function getAllPools() external view returns (address[] memory);\\r\\n}\\r\\n\",\"keccak256\":\"0x584696ac6736f57a477f4d23de280e68263942472ee88f7f2f6965e4dea53661\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/pools/BaluniV1PoolPeriphery.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1PoolRegistry.sol';\\r\\nimport '../interfaces/IBaluniV1PoolPeriphery.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Pool.sol';\\r\\n\\r\\n/**\\r\\n * @title BaluniV1PoolPeriphery\\r\\n * @dev This contract serves as the periphery contract for interacting with BaluniV1Pool contracts.\\r\\n */\\r\\ncontract BaluniV1PoolPeriphery is\\r\\n    Initializable,\\r\\n    OwnableUpgradeable,\\r\\n    UUPSUpgradeable,\\r\\n    ReentrancyGuardUpgradeable,\\r\\n    IBaluniV1PoolPeriphery\\r\\n{\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    mapping(address => mapping(address => uint256)) public poolsReserves; // Mapping of token address to pool addresses (for quick lookup\\r\\n\\r\\n    modifier ensure(uint256 deadline) {\\r\\n        require(deadline >= block.timestamp, 'EXPIRED');\\r\\n        _;\\r\\n    }\\r\\n\\r\\n    function initialize(address _registry) public initializer {\\r\\n        __UUPSUpgradeable_init();\\r\\n        __Ownable_init(msg.sender);\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _registry, uint64 version) public reinitializer(version) {\\r\\n        registry = IBaluniV1Registry(_registry);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\\r\\n     * @param newImplementation The address of the new implementation contract.\\r\\n     * @notice This function can only be called by the contract owner.\\r\\n     */\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    /**\\r\\n     * @dev Swaps tokens using a Baluni V1 pool.\\r\\n     * @param fromToken The address of the token to swap from.\\r\\n     * @param toToken The address of the token to swap to.\\r\\n     * @param fromAmount The amount of tokens to swap from.\\r\\n     * @param minAmount The minimum amount of tokens to receive in the swap.\\r\\n     * @param from The address from which the tokens are being swapped.\\r\\n     * @param to The address to which the tokens are being swapped.\\r\\n     * @param deadline The deadline by which the swap must be executed.\\r\\n     * @return amountOut The amount of tokens received in the swap.\\r\\n     * @return haircut The haircut applied to the swap.\\r\\n     */\\r\\n    function swapTokenForToken(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minAmount,\\r\\n        address from,\\r\\n        address to,\\r\\n        uint deadline\\r\\n    ) public override ensure(deadline) nonReentrant returns (uint256 amountOut, uint256 haircut) {\\r\\n        IBaluniV1PoolRegistry poolRegistry = IBaluniV1PoolRegistry(registry.getBaluniPoolRegistry());\\r\\n        require(fromAmount > 0, 'Amount must be greater than zero');\\r\\n        address poolAddress = poolRegistry.getPoolByAssets(fromToken, toToken);\\r\\n        require(poolAddress != address(0), 'BaluniV1PoolPeriphery: Pool not found');\\r\\n        IERC20(fromToken).transferFrom(from, address(this), fromAmount);\\r\\n\\r\\n        address[] memory tokenPath = new address[](2);\\r\\n        tokenPath[0] = fromToken;\\r\\n        tokenPath[1] = toToken;\\r\\n\\r\\n        address[] memory poolPath = new address[](1);\\r\\n        poolPath[0] = poolAddress;\\r\\n\\r\\n        (amountOut, haircut) = _swap(tokenPath, poolPath, fromAmount, to);\\r\\n        require(amountOut >= minAmount, 'amountOut too low');\\r\\n\\r\\n        return (amountOut, haircut);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Swaps tokens for tokens using a specified token path and pool path.\\r\\n     * @param tokenPath The array of token addresses representing the path of tokens to swap.\\r\\n     * @param poolPath The array of pool addresses representing the path of pools to use for swapping.\\r\\n     * @param fromAmount The amount of tokens to swap from.\\r\\n     * @param minimumToAmount The minimum amount of tokens to receive after swapping.\\r\\n     * @param to The address to receive the swapped tokens.\\r\\n     * @param deadline The deadline for the swap to occur.\\r\\n     * @return amountOut The amount of tokens received after swapping.\\r\\n     * @return haircut The amount of tokens deducted as a fee during the swap.\\r\\n     */\\r\\n    function swapTokensForTokens(\\r\\n        address[] memory tokenPath,\\r\\n        address[] memory poolPath,\\r\\n        uint256 fromAmount,\\r\\n        uint256 minimumToAmount,\\r\\n        address to,\\r\\n        uint256 deadline\\r\\n    ) external override ensure(deadline) nonReentrant returns (uint256 amountOut, uint256 haircut) {\\r\\n        require(fromAmount > 0, 'invalid from amount');\\r\\n        require(tokenPath.length >= 2, 'invalid token path');\\r\\n        require(poolPath.length == tokenPath.length - 1, 'invalid pool path');\\r\\n        require(to != address(0), 'zero address');\\r\\n\\r\\n        // get from token from users\\r\\n        IERC20(tokenPath[0]).transferFrom(address(msg.sender), address(this), fromAmount);\\r\\n\\r\\n        (amountOut, haircut) = _swap(tokenPath, poolPath, fromAmount, to);\\r\\n        require(amountOut >= minimumToAmount, 'amountOut too low');\\r\\n    }\\r\\n\\r\\n    /// @notice _swap private function. Assumes router has initial fromAmount in balance.\\r\\n    /// @dev assumes tokens being swapped have been approve via the approveSpendingByPool function\\r\\n    /// @param tokenPath An array of token addresses. path.length must be >= 2.\\r\\n    /// @param tokenPath The first element of the path is the input token, the last element is the output token.\\r\\n    /// @param poolPath An array of pool addresses. The pools where the pathTokens are contained in order.\\r\\n    /// @param fromAmount the amount in\\r\\n    /// @param to the user to send the tokens to\\r\\n    /// @return amountOut received by user\\r\\n    /// @return haircut total fee charged by pool\\r\\n    function _swap(\\r\\n        address[] memory tokenPath,\\r\\n        address[] memory poolPath,\\r\\n        uint256 fromAmount,\\r\\n        address to\\r\\n    ) internal returns (uint256 amountOut, uint256 haircut) {\\r\\n        // haircut of current call\\r\\n        uint256 localHaircut;\\r\\n        // next from amount, starts with fromAmount in arg\\r\\n        uint256 nextFromAmount = fromAmount;\\r\\n        // where to send tokens on next step\\r\\n        address nextTo;\\r\\n\\r\\n        for (uint256 i; i < poolPath.length; ++i) {\\r\\n            // check if we're reaching the beginning or end of the poolPath array\\r\\n            if (i == 0 && poolPath.length == 1) {\\r\\n                // only one element in pool path - simple swap\\r\\n                nextTo = to;\\r\\n            } else if (i == 0) {\\r\\n                // first element of a larger than one poolPath\\r\\n                nextTo = address(this);\\r\\n            } else if (i < poolPath.length - 1) {\\r\\n                // middle element of a larger than one poolPath\\r\\n                nextTo = address(this);\\r\\n                nextFromAmount = amountOut;\\r\\n            } else {\\r\\n                // send final swapped tokens to user\\r\\n                nextTo = to;\\r\\n                nextFromAmount = amountOut;\\r\\n            }\\r\\n\\r\\n            uint256 allowance = IERC20(tokenPath[i]).allowance(address(this), poolPath[i]);\\r\\n\\r\\n            if (nextFromAmount >= allowance) {\\r\\n                IERC20(tokenPath[i]).approve(poolPath[i], nextFromAmount);\\r\\n            }\\r\\n\\r\\n            // make the swap with the correct arguments\\r\\n            (amountOut, localHaircut) = IBaluniV1Pool(poolPath[i]).swap(\\r\\n                tokenPath[i],\\r\\n                tokenPath[i + 1],\\r\\n                nextFromAmount,\\r\\n                0, // minimum amount received is ensured on calling function\\r\\n                nextTo,\\r\\n                type(uint256).max // deadline is ensured on calling function\\r\\n            );\\r\\n            // increment total haircut\\r\\n            haircut += localHaircut * 10 ** (18 - IERC20Metadata(tokenPath[i + 1]).decimals());\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @notice Quotes potential outcome of a swap given current tokenPath and poolPath,\\r\\n     taking in account slippage and haircut\\r\\n     * @dev To be used by frontend\\r\\n     * @param tokenPath The token swap path\\r\\n     * @param poolPath The token pool path\\r\\n     * @param fromAmount The amount to quote\\r\\n     * @return potentialOutcome The potential final amount user would receive\\r\\n     * @return haircut The total haircut that would be applied\\r\\n     */\\r\\n    function quotePotentialSwaps(\\r\\n        address[] memory tokenPath,\\r\\n        address[] memory poolPath,\\r\\n        uint256 fromAmount\\r\\n    ) external view returns (uint256 potentialOutcome, uint256 haircut) {\\r\\n        require(fromAmount > 0, 'invalid from amount');\\r\\n        require(tokenPath.length >= 2, 'invalid token path');\\r\\n        require(poolPath.length == tokenPath.length - 1, 'invalid pool path');\\r\\n\\r\\n        // haircut of current call\\r\\n        uint256 localHaircut;\\r\\n        // next from amount, starts with fromAmount in arg\\r\\n        uint256 nextFromAmount = fromAmount;\\r\\n        // where to send tokens on next step\\r\\n\\r\\n        for (uint256 i; i < poolPath.length; ++i) {\\r\\n            // check if we're reaching the beginning or end of the poolPath array\\r\\n            if (i != 0) {\\r\\n                nextFromAmount = potentialOutcome;\\r\\n            }\\r\\n\\r\\n            // make the swap with the correct arguments\\r\\n            (potentialOutcome) = IBaluniV1Pool(poolPath[i]).quotePotentialSwap(\\r\\n                tokenPath[i],\\r\\n                tokenPath[i + 1],\\r\\n                nextFromAmount\\r\\n            );\\r\\n\\r\\n            // increment total haircut - convert to 18 d.p decimals\\r\\n            haircut += localHaircut * 10 ** (18 - IERC20Metadata(tokenPath[i + 1]).decimals());\\r\\n        }\\r\\n\\r\\n        return (potentialOutcome, haircut);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Performs batch swaps between multiple token pairs.\\r\\n     * @param fromTokens An array of addresses representing the tokens to swap from.\\r\\n     * @param toTokens An array of addresses representing the tokens to swap to.\\r\\n     * @param amounts An array of amounts representing the amounts to swap.\\r\\n     * @param receivers An array of addresses representing the receivers of the swapped tokens.\\r\\n     * @return An array of amounts representing the amounts of tokens received after the swaps.\\r\\n     */\\r\\n    function batchSwap(\\r\\n        address[] calldata fromTokens,\\r\\n        address[] calldata toTokens,\\r\\n        uint256[] calldata amounts,\\r\\n        address[] calldata receivers\\r\\n    ) external override returns (uint256[] memory) {\\r\\n        require(\\r\\n            fromTokens.length == toTokens.length &&\\r\\n                toTokens.length == amounts.length &&\\r\\n                amounts.length == receivers.length,\\r\\n            'Input arrays length mismatch'\\r\\n        );\\r\\n\\r\\n        uint256[] memory amountsOut = new uint256[](fromTokens.length);\\r\\n\\r\\n        for (uint256 i = 0; i < fromTokens.length; i++) {\\r\\n            require(amounts[i] > 0, 'Amount must be greater than zero');\\r\\n\\r\\n            address fromToken = fromTokens[i];\\r\\n            address toToken = toTokens[i];\\r\\n\\r\\n            uint256 amount = amounts[i];\\r\\n            address receiver = receivers[i];\\r\\n\\r\\n            require(IERC20(fromToken).balanceOf(msg.sender) >= amount, 'Insufficient Balance');\\r\\n            (amountsOut[i], ) = swapTokenForToken(\\r\\n                fromToken,\\r\\n                toToken,\\r\\n                amount,\\r\\n                0,\\r\\n                msg.sender,\\r\\n                receiver,\\r\\n                block.timestamp + 300\\r\\n            );\\r\\n        }\\r\\n\\r\\n        return amountsOut;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Gets the amount of tokens received after a swap in a BaluniV1Pool.\\r\\n     * @param fromToken The address of the token to swap from.\\r\\n     * @param toToken The address of the token to swap to.\\r\\n     * @param amount The amount of tokens to swap.\\r\\n     * @return The amount of tokens received after the swap.\\r\\n     */\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view override returns (uint256) {\\r\\n        IBaluniV1PoolRegistry poolRegistry = IBaluniV1PoolRegistry(registry.getBaluniPoolRegistry());\\r\\n        address poolAddress = poolRegistry.getPoolByAssets(fromToken, toToken);\\r\\n        IBaluniV1Pool pool = IBaluniV1Pool(poolAddress);\\r\\n        uint256 amountOut = pool.quotePotentialSwap(fromToken, toToken, amount);\\r\\n        return amountOut;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns an array of pool addresses that contain the given token.\\r\\n     * @param token The address of the token to search for.\\r\\n     * @return An array of pool addresses.\\r\\n     */\\r\\n    function getPoolsContainingToken(address token) external view override returns (address[] memory) {\\r\\n        IBaluniV1PoolRegistry poolRegistry = IBaluniV1PoolRegistry(registry.getBaluniPoolRegistry());\\r\\n        return poolRegistry.getPoolsByAsset(token);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns the version of the contract.\\r\\n     * @return The version string.\\r\\n     */\\r\\n    function getVersion() external view override returns (uint64) {\\r\\n        return _getInitializedVersion();\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x8707f3f469f9590fbde1ee33175298b167c4d368edd627115f2ae342ea4eca93\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":16910,"contract":"contracts/pools/BaluniV1PoolPeriphery.sol:BaluniV1PoolPeriphery","label":"registry","offset":0,"slot":"0","type":"t_contract(IBaluniV1Registry)4909"},{"astId":16916,"contract":"contracts/pools/BaluniV1PoolPeriphery.sol:BaluniV1PoolPeriphery","label":"poolsReserves","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{"quotePotentialSwaps(address[],address[],uint256)":{"notice":"Quotes potential outcome of a swap given current tokenPath and poolPath, taking in account slippage and haircut"}},"version":1}}},"contracts/registry/BaluniV1DCAVaultRegistry.sol":{"BaluniV1DCAVaultRegistry":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"address[]","name":"assets","type":"address[]"}],"name":"vaultCreated","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vaultAddress","type":"address"}],"name":"addVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allVaults","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllVaults","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vaultAddress","type":"address"}],"name":"getVaultAsset","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset1","type":"address"},{"internalType":"address","name":"asset2","type":"address"}],"name":"getVaultType1ByAssets","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getVaultsByAsset","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_register","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_register","type":"address"},{"internalType":"uint64","name":"_version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"removeVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"vaultExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"getAllVaults()":{"details":"Retrieves all the vaults created by the factory.","returns":{"_0":"An array of vault addresses."}},"getVaultAsset(address)":{"details":"Retrieves the assets of a specific vault.","params":{"vaultAddress":"The address of the vault."},"returns":{"_0":"An array of asset addresses."}},"getVaultType1ByAssets(address,address)":{"details":"Retrieves the vault address based on the given assets.","params":{"asset1":"The address of the first asset.","asset2":"The address of the second asset."},"returns":{"_0":"The address of the vault."}},"getVaultsCount()":{"details":"Retrieves the number of vaults created by the factory.","returns":{"_0":"The count of vaults."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":95,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1DCAVaultRegistry":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ContextUpgradeable":{"entryPoint":87,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_OwnableUpgradeable":{"entryPoint":79,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":151,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":141,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":131,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":109,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":106,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b6128d06100a482396080518181816120af01528181612134015261232f01526128d090f35b6043565b60405190565b5f80fd5b604d604f565b565b60556057565b565b605d6097565b565b60018060a01b031690565b90565b607c6078608092605f565b606a565b605f565b90565b608a90606d565b90565b6094906083565b90565b609e30608d565b60805256fe60806040526004361015610013575b610bcb565b61001d5f3561014c565b806302b3537d146101475780631089405214610142578063256b5a021461013d5780634f1ef2861461013857806352d1902d14610133578063592717af1461012e578063715018a6146101295780637b103999146101245780638da5cb5b1461011f5780638f2248bc1461011a5780639094a91e1461011557806397331bf914610110578063ad3cb1cc1461010b578063b9b658db14610106578063bbd7edc514610101578063c4d66de8146100fc578063ca9d67c8146100f7578063ceb68c23146100f25763f2fde38b0361000e57610b98565b610b65565b610b30565b610afd565b610ac7565b610a39565b6109e2565b6108b1565b61087c565b610738565b6106a6565b610671565b610593565b61055d565b6104d9565b61047b565b6102ff565b6102c5565b6101f1565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61018690610164565b90565b6101928161017d565b0361019957565b5f80fd5b905035906101aa82610189565b565b906020828203126101c5576101c2915f0161019d565b90565b61015c565b151590565b6101d8906101ca565b9052565b91906101ef905f602085019401906101cf565b565b346102215761021d61020c6102073660046101ac565b610c01565b610214610152565b918291826101dc565b0390f35b610158565b5190565b60209181520190565b60200190565b6102429061017d565b9052565b9061025381602093610239565b0190565b60200190565b9061027a61027461026d84610226565b809361022a565b92610233565b905f5b81811061028a5750505090565b9091926102a361029d6001928651610246565b94610257565b910191909161027d565b6102c29160208201915f81840391015261025d565b90565b346102f5576102f16102e06102db3660046101ac565b610dea565b6102e8610152565b918291826102ad565b0390f35b610158565b5f0190565b3461032d576103176103123660046101ac565b611357565b61031f610152565b80610329816102fa565b0390f35b610158565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061037b9061033a565b810190811067ffffffffffffffff82111761039557604052565b610344565b906103ad6103a6610152565b9283610371565b565b67ffffffffffffffff81116103cd576103c960209161033a565b0190565b610344565b90825f939282370152565b909291926103f26103ed826103af565b61039a565b9381855260208501908284011161040e5761040c926103d2565b565b610336565b9080601f830112156104315781602061042e933591016103dd565b90565b610332565b9190916040818403126104765761044f835f830161019d565b92602082013567ffffffffffffffff81116104715761046e9201610413565b90565b610160565b61015c565b61048f610489366004610436565b9061138b565b610497610152565b806104a1816102fa565b0390f35b5f9103126104af57565b61015c565b90565b6104c0906104b4565b9052565b91906104d7905f602085019401906104b7565b565b34610509576104e93660046104a5565b6105056104f4611406565b6104fc610152565b918291826104c4565b0390f35b610158565b9190604083820312610536578061052a610533925f860161019d565b9360200161019d565b90565b61015c565b6105449061017d565b9052565b919061055b905f6020850194019061053b565b565b3461058e5761058a61057961057336600461050e565b90611443565b610581610152565b91829182610548565b0390f35b610158565b346105c1576105a33660046104a5565b6105ab611490565b6105b3610152565b806105bd816102fa565b0390f35b610158565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6105f39060086105f893026105c6565b6105ca565b90565b9061060691546105e3565b90565b61061560015f906105fb565b90565b90565b61062f61062a61063492610164565b610618565b610164565b90565b6106409061061b565b90565b61064c90610637565b90565b61065890610643565b9052565b919061066f905f6020850194019061064f565b565b346106a1576106813660046104a5565b61069d61068c610609565b610694610152565b9182918261065c565b0390f35b610158565b346106d6576106b63660046104a5565b6106d26106c161149a565b6106c9610152565b91829182610548565b0390f35b610158565b67ffffffffffffffff1690565b6106f1816106db565b036106f857565b5f80fd5b90503590610709826106e8565b565b91906040838203126107335780610727610730925f860161019d565b936020016106fc565b90565b61015c565b346107675761075161074b36600461070b565b9061172f565b610759610152565b80610763816102fa565b0390f35b610158565b90565b6107788161076c565b0361077f57565b5f80fd5b905035906107908261076f565b565b906020828203126107ab576107a8915f01610783565b90565b61015c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5490565b5f5260205f2090565b6107f3816107dd565b82101561080d576108056001916107e1565b910201905f90565b6107b0565b73ffffffffffffffffffffffffffffffffffffffff1690565b61083b90600861084093026105c6565b610812565b90565b9061084e915461082b565b90565b5f61085b816107dd565b821015610878576108759161086f916107ea565b90610843565b90565b5f80fd5b346108ac576108a8610897610892366004610792565b610851565b61089f610152565b91829182610548565b0390f35b610158565b346108e1576108c13660046104a5565b6108dd6108cc6117e9565b6108d4610152565b918291826102ad565b0390f35b610158565b67ffffffffffffffff81116109045761090060209161033a565b0190565b610344565b9061091b610916836108e6565b61039a565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6109516005610909565b9061095e60208301610920565b565b610968610947565b90565b610973610960565b90565b61097e61096b565b90565b5190565b60209181520190565b90825f9392825e0152565b6109b86109c16020936109c6936109af81610981565b93848093610985565b9586910161098e565b61033a565b0190565b6109df9160208201915f818403910152610999565b90565b34610a12576109f23660046104a5565b610a0e6109fd610976565b610a05610152565b918291826109ca565b0390f35b610158565b610a209061076c565b9052565b9190610a37905f60208501940190610a17565b565b34610a6957610a493660046104a5565b610a65610a54611802565b610a5c610152565b91829182610a24565b0390f35b610158565b610a7790610637565b90565b90610a8490610a6e565b5f5260205260405f2090565b90610a9a90610a6e565b5f5260205260405f2090565b610abf610ac492610aba6002935f94610a7a565b610a90565b610843565b90565b34610af857610af4610ae3610add36600461050e565b90610aa6565b610aeb610152565b91829182610548565b0390f35b610158565b34610b2b57610b15610b103660046101ac565b611a23565b610b1d610152565b80610b27816102fa565b0390f35b610158565b34610b6057610b5c610b4b610b463660046101ac565b611a69565b610b53610152565b918291826102ad565b0390f35b610158565b34610b9357610b7d610b783660046101ac565b611f89565b610b85610152565b80610b8f816102fa565b0390f35b610158565b34610bc657610bb0610bab3660046101ac565b612019565b610bb8610152565b80610bc2816102fa565b0390f35b610158565b5f80fd5b5f90565b90565b610bea610be5610bef92610bd3565b610618565b61076c565b90565b6001610bfe910161076c565b90565b610c09610bcf565b50610c135f610bd6565b5b80610c2f610c29610c245f6107dd565b61076c565b9161076c565b1015610c7557610c49610c435f83906107ea565b90610843565b610c5b610c558461017d565b9161017d565b14610c6e57610c6990610bf2565b610c14565b5050600190565b50505f90565b606090565b67ffffffffffffffff8111610c985760208091020190565b610344565b90610caf610caa83610c80565b61039a565b918252565b369037565b90610cde610cc683610c9d565b92602080610cd48693610c80565b9201910390610cb4565b565b610ce99061061b565b90565b610cf590610ce0565b90565b610d0190610637565b90565b60e01b90565b90505190610d1782610189565b565b90602082820312610d3257610d2f915f01610d0a565b90565b61015c565b610d3f610152565b3d5f823e3d90fd5b90610d5182610226565b811015610d62576020809102010190565b6107b0565b90610d719061017d565b9052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610dab9061076c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dd85760010190565b610d75565b610de7905161017d565b90565b610df2610c7b565b50610e04610dff5f6107dd565b610cb9565b91610e0e5f610bd6565b92610e185f610bd6565b5b80610e34610e2e610e295f6107dd565b61076c565b9161076c565b1015610fb957610e56610e51610e4b5f84906107ea565b90610843565b610cec565b610e7a6020610e6483610cf8565b63cdf456e190610e72610152565b938492610d04565b82528180610e8a600482016102fa565b03915afa908115610fb4575f91610f86575b50610eaf610ea98761017d565b9161017d565b14610f52575084610ed0610eca610ec585610226565b61076c565b9161076c565b14610ee357610ede90610bf2565b610e19565b509091505b610ef183610cb9565b91610efb5f610bd6565b5b80610f0f610f098761076c565b9161076c565b1015610f4b57610f4690610f41610f2f610f2a868490610d47565b610ddd565b610f3c8791849092610d47565b610d67565b610bf2565b610efc565b5092505090565b610f80939450610f7b9150610f6990959295610cf8565b610f768691849092610d47565b610d67565b610da2565b91610ee8565b610fa7915060203d8111610fad575b610f9f8183610371565b810190610d19565b5f610e9c565b503d610f95565b610d37565b50909150610ee8565b610fd390610fce612024565b6111db565b565b610fe9610fe4610fee92610bd3565b610618565b610164565b90565b610ffa90610fd5565b90565b60207f756c745f41444452455353000000000000000000000000000000000000000000917f42616c756e6956315661756c74466163746f72793a20494e56414c49445f76615f8201520152565b611057602b604092610985565b61106081610ffd565b0190565b6110799060208101905f81830391015261104a565b90565b1561108357565b61108b610152565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806110bb60048201611064565b0390fd5b90565b5f5260205f2090565b5490565b6110d8816110cb565b8210156110f2576110ea6001916110c2565b910201905f90565b6107b0565b1b90565b9190600861112991029161112373ffffffffffffffffffffffffffffffffffffffff846110f7565b926110f7565b9181191691161790565b90565b919061114c61114761115493610a6e565b611133565b9083546110fb565b9055565b90815491680100000000000000008310156111885782611180916001611186950181556110cf565b90611136565b565b610344565b5f1b90565b906111b173ffffffffffffffffffffffffffffffffffffffff9161118d565b9181191691161790565b906111d06111cb6111d792610a6e565b611133565b8254611192565b9055565b61124090611204816111fd6111f76111f25f610ff1565b61017d565b9161017d565b141561107c565b6112176112105f6110bf565b8290611158565b602061122a61122583610cec565b610cf8565b63cdf456e190611238610152565b948592610d04565b82528180611250600482016102fa565b03915afa80156113525761128f925f91611324575b50602061127961127484610cec565b610cf8565b63fdf262b790611287610152565b958692610d04565b8252818061129f600482016102fa565b03915afa90811561131f576112e56112ea926112ef955f916112f1575b50936112dd816112d86112d160028790610a7a565b8890610a90565b6111bb565b936002610a7a565b610a90565b6111bb565b565b611312915060203d8111611318575b61130a8183610371565b810190610d19565b5f6112bc565b503d611300565b610d37565b611345915060203d811161134b575b61133d8183610371565b810190610d19565b5f611265565b503d611333565b610d37565b61136090610fc2565b565b906113749161136f61209e565b611376565b565b906113899161138481612170565b6121e0565b565b9061139591611362565b565b5f90565b6113ac906113a761231e565b6113fa565b90565b90565b6113c66113c16113cb926113af565b61118d565b6104b4565b90565b6113f77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6113b2565b90565b506114036113ce565b90565b611416611411611397565b61139b565b90565b5f90565b5f1c90565b61142e6114339161141d565b610812565b90565b6114409054611422565b90565b6114689161145e61146392611456611419565b506002610a7a565b610a90565b611436565b90565b611473612024565b61147b61147d565b565b61148e6114895f610ff1565b61239c565b565b61149861146b565b565b6114a2611419565b506114b55f6114af612408565b01611436565b90565b60401c90565b60ff1690565b6114d06114d5916114b8565b6114be565b90565b6114e290546114c4565b90565b67ffffffffffffffff1690565b6114fe6115039161141d565b6114e5565b90565b61151090546114f2565b90565b9061152667ffffffffffffffff9161118d565b9181191691161790565b61154461153f611549926106db565b610618565b6106db565b90565b90565b9061156461155f61156b92611530565b61154c565b8254611513565b9055565b60401b90565b9061158968ff00000000000000009161156f565b9181191691161790565b61159c906101ca565b90565b90565b906115b76115b26115be92611593565b61159f565b8254611575565b9055565b6115cb906106db565b9052565b91906115e2905f602085019401906115c2565b565b9080916115ef61242c565b906115fb5f83016114d8565b80156116ac575b611670576116359261162c9161161a865f860161154f565b61162760015f86016115a2565b611718565b5f8091016115a2565b61166b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611662610152565b918291826115cf565b0390a1565b611678610152565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806116a8600482016102fa565b0390fd5b506116b85f8301611506565b6116ca6116c4866106db565b916106db565b1015611602565b6116da9061061b565b90565b6116e6906116d1565b90565b6116f2906116d1565b90565b90565b9061170d611708611714926116e9565b6116f5565b8254611192565b9055565b61172d9150611726906116dd565b60016116f8565b565b90611739916115e4565b565b60209181520190565b61174e9054611422565b90565b60010190565b9061177461176e611767846107dd565b809361173b565b926107e1565b905f5b8181106117845750505090565b9091926117a461179e60019261179987611744565b610246565b94611751565b9101919091611777565b906117b891611757565b90565b906117db6117d4926117cb610152565b938480926117ae565b0383610371565b565b6117e6906117bb565b90565b6117f1610c7b565b506117fb5f6117dd565b90565b5f90565b61180a6117fe565b506118145f6107dd565b90565b61182b61182661183092610bd3565b610618565b6106db565b90565b90565b61184a61184561184f92611833565b610618565b6106db565b90565b61185b90610637565b90565b61186790611836565b9052565b919061187e905f6020850194019061185e565b565b61188861242c565b9061189d6118975f84016114d8565b156101ca565b906118a95f8401611506565b806118bc6118b65f611817565b916106db565b14806119f6575b906118d76118d16001611836565b916106db565b14806119ce575b6118e99091156101ca565b90816119bd575b50611981576119199061190e6119066001611836565b5f860161154f565b8261196f575b6119fd565b611921575b50565b61192e905f8091016115a2565b60016119667fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29161195d610152565b9182918261186b565b0390a15f61191e565b61197c60015f86016115a2565b611914565b611989610152565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806119b9600482016102fa565b0390fd5b6119c89150156101ca565b5f6118f0565b506118e96119db30611852565b3b6119ee6119e85f610bd6565b9161076c565b1490506118de565b50826118c3565b611a1a611a2191611a0c61245a565b611a1533612482565b6116dd565b60016116f8565b565b611a2c90611880565b565b90565b611a45611a40611a4a92611a2e565b610618565b61076c565b90565b611a61611a5c611a6692611833565b610618565b61076c565b90565b611a71610c7b565b50611ab1611a87611a826002611a31565b610cb9565b916020611a9b611a9683610cec565b610cf8565b63cdf456e190611aa9610152565b948592610d04565b82528180611ac1600482016102fa565b03915afa918215611bbf57611b02602092611afd611b1d95611b07945f91611b92575b50611af888611af25f610bd6565b90610d47565b610d67565b610cec565b610cf8565b63fdf262b790611b15610152565b938492610d04565b82528180611b2d600482016102fa565b03915afa8015611b8d57611b5c915f91611b5f575b50611b5783611b516001611a4d565b90610d47565b610d67565b90565b611b80915060203d8111611b86575b611b788183610371565b810190610d19565b5f611b42565b503d611b6e565b610d37565b611bb29150863d8111611bb8575b611baa8183610371565b810190610d19565b5f611ae4565b503d611ba0565b610d37565b611bd590611bd0612024565b611c6c565b565b611be6611bec9193929361076c565b9261076c565b8203918211611bf757565b610d75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b611c3b91611c35611419565b91611136565b565b611c46816110cb565b8015611c67576001900390611c64611c5e83836110cf565b90611c29565b55565b611bfc565b611c755f610bd6565b5b80611c91611c8b611c865f6107dd565b61076c565b9161076c565b1015611f8257611cab611ca55f83906107ea565b90610843565b611cbd611cb78461017d565b9161017d565b14611cd057611ccb90610bf2565b611c76565b611d1390611d0d611d06611d005f611cfa611cea5f6107dd565b611cf46001611a4d565b90611bd7565b906107ea565b90610843565b915f6107ea565b90611136565b611d1c5f610ff1565b611d4a60026020611d34611d2f86610cec565b610cf8565b63fdf262b790611d42610152565b948592610d04565b82528180611d5a600482016102fa565b03915afa908115611f7d57611d76925f92611f4d575b50610a7a565b90611da36020611d8d611d8886610cec565b610cf8565b63cdf456e190611d9b610152565b938492610d04565b82528180611db3600482016102fa565b03915afa8015611f4857611dd793611dd2925f92611f18575b50610a90565b6111bb565b611de05f610ff1565b6002611e0e6020611df8611df386610cec565b610cf8565b63cdf456e190611e06610152565b938492610d04565b82528180611e1e600482016102fa565b03915afa8015611f1357611e4c611e46611e5192611e67956020955f92611ee4575b50610a7a565b95610cec565b610cf8565b63fdf262b790611e5f610152565b938492610d04565b82528180611e77600482016102fa565b03915afa8015611edf57611e9b93611e96925f92611eaf575b50610a90565b6111bb565b611eac611ea75f6110bf565b611c3d565b5b565b611ed191925060203d8111611ed8575b611ec98183610371565b810190610d19565b905f611e90565b503d611ebf565b610d37565b611f05919250863d8111611f0c575b611efd8183610371565b810190610d19565b905f611e40565b503d611ef3565b610d37565b611f3a91925060203d8111611f41575b611f328183610371565b810190610d19565b905f611dcc565b503d611f28565b610d37565b611f6f91925060203d8111611f76575b611f678183610371565b810190610d19565b905f611d70565b503d611f5d565b610d37565b5050611ead565b611f9290611bc4565b565b611fa590611fa0612024565b611fa7565b565b80611fc2611fbc611fb75f610ff1565b61017d565b9161017d565b14611fd257611fd09061239c565b565b612015611fde5f610ff1565b611fe6610152565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b61202290611f94565b565b61202c61149a565b61204561203f61203a61248d565b61017d565b9161017d565b0361204c57565b61208e61205761248d565b61205f610152565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b61209b90610637565b90565b6120a730612092565b6120d96120d37f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b148015612123575b6120e757565b6120ef610152565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061211f600482016102fa565b0390fd5b5061212c61249a565b61215e6121587f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b14156120e1565b5061216e612024565b565b61217990612165565b565b6121849061061b565b90565b6121909061217b565b90565b61219c90610637565b90565b6121a8816104b4565b036121af57565b5f80fd5b905051906121c08261219f565b565b906020828203126121db576121d8915f016121b3565b90565b61015c565b919061220e60206121f86121f386612187565b612193565b6352d1902d90612206610152565b938492610d04565b8252818061221e600482016102fa565b03915afa80915f926122ee575b50155f1461227f57505090600161224057505b565b61227b9061224c610152565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b928361229a61229461228f6113ce565b6104b4565b916104b4565b036122af576122aa9293506124c4565b61223e565b6122ea846122bb610152565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016104c4565b0390fd5b61231091925060203d8111612317575b6123088183610371565b8101906121c2565b905f61222b565b503d6122fe565b61232730612092565b6123596123537f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b0361236057565b612368610152565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280612398600482016102fa565b0390fd5b6123a4612408565b6123bc6123b25f8301611436565b915f8491016111bb565b906123f06123ea7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610a6e565b91610a6e565b916123f9610152565b80612403816102fa565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61245861254d565b565b612462612450565b565b6124759061247061254d565b612477565b565b61248090612625565b565b61248b90612464565b565b612495611419565b503390565b6124a2611419565b506124bd5f6124b76124b26113ce565b612630565b01611436565b90565b5190565b906124ce82612633565b816124f97fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610a6e565b90612502610152565b8061250c816102fa565b0390a2612518816124c0565b61252a6125245f610bd6565b9161076c565b115f1461253e5761253a91612743565b505b565b50506125486126a8565b61253c565b61255e612558612772565b156101ca565b61256457565b61256c610152565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061259c600482016102fa565b0390fd5b6125b1906125ac61254d565b6125b3565b565b806125ce6125c86125c35f610ff1565b61017d565b9161017d565b146125de576125dc9061239c565b565b6126216125ea5f610ff1565b6125f2610152565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b61262e906125a0565b565b90565b803b6126476126415f610bd6565b9161076c565b1461266957612667905f61266161265c6113ce565b612630565b016111bb565b565b6126a490612675610152565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b346126bb6126b55f610bd6565b9161076c565b116126c257565b6126ca610152565b7fb398979f000000000000000000000000000000000000000000000000000000008152806126fa600482016102fa565b0390fd5b606090565b90612715612710836103af565b61039a565b918252565b3d5f146127355761272a3d612703565b903d5f602084013e5b565b61273d6126fe565b90612733565b5f8061276f936127516126fe565b508390602081019051915af49061276661271a565b90919091612790565b90565b61277a610bcf565b5061278d5f61278761242c565b016114d8565b90565b906127a49061279d6126fe565b50156101ca565b5f146127b05750612834565b6127b9826124c0565b6127cb6127c55f610bd6565b9161076c565b1480612819575b6127da575090565b612815906127e6610152565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b50803b61282e6128285f610bd6565b9161076c565b146127d2565b61283d816124c0565b61284f6128495f610bd6565b9161076c565b115f1461285e57805190602001fd5b612866610152565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280612896600482016102fa565b0390fdfea26469706673582212203116b2266f6b96d641c8de02b45785323c192c69e59804699623c2225ba5b10c64736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x28D0 PUSH2 0xA4 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x20AF ADD MSTORE DUP2 DUP2 PUSH2 0x2134 ADD MSTORE PUSH2 0x232F ADD MSTORE PUSH2 0x28D0 SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x55 PUSH1 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x5D PUSH1 0x97 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7C PUSH1 0x78 PUSH1 0x80 SWAP3 PUSH1 0x5F JUMP JUMPDEST PUSH1 0x6A JUMP JUMPDEST PUSH1 0x5F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8A SWAP1 PUSH1 0x6D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x94 SWAP1 PUSH1 0x83 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x9E ADDRESS PUSH1 0x8D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xBCB JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x14C JUMP JUMPDEST DUP1 PUSH4 0x2B3537D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x10894052 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x256B5A02 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x592717AF EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x9094A91E EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x97331BF9 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xB9B658DB EQ PUSH2 0x106 JUMPI DUP1 PUSH4 0xBBD7EDC5 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0xCA9D67C8 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xCEB68C23 EQ PUSH2 0xF2 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xB98 JUMP JUMPDEST PUSH2 0xB65 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xAFD JUMP JUMPDEST PUSH2 0xAC7 JUMP JUMPDEST PUSH2 0xA39 JUMP JUMPDEST PUSH2 0x9E2 JUMP JUMPDEST PUSH2 0x8B1 JUMP JUMPDEST PUSH2 0x87C JUMP JUMPDEST PUSH2 0x738 JUMP JUMPDEST PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST PUSH2 0x593 JUMP JUMPDEST PUSH2 0x55D JUMP JUMPDEST PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x47B JUMP JUMPDEST PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x2C5 JUMP JUMPDEST PUSH2 0x1F1 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x186 SWAP1 PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x192 DUP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x199 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1AA DUP3 PUSH2 0x189 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1C5 JUMPI PUSH2 0x1C2 SWAP2 PUSH0 ADD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1D8 SWAP1 PUSH2 0x1CA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1EF SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1CF JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x221 JUMPI PUSH2 0x21D PUSH2 0x20C PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0xC01 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1DC JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x242 SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x253 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x239 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x27A PUSH2 0x274 PUSH2 0x26D DUP5 PUSH2 0x226 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x22A JUMP JUMPDEST SWAP3 PUSH2 0x233 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x28A JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x2A3 PUSH2 0x29D PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x246 JUMP JUMPDEST SWAP5 PUSH2 0x257 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x27D JUMP JUMPDEST PUSH2 0x2C2 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x25D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2F5 JUMPI PUSH2 0x2F1 PUSH2 0x2E0 PUSH2 0x2DB CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0xDEA JUMP JUMPDEST PUSH2 0x2E8 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2AD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x32D JUMPI PUSH2 0x317 PUSH2 0x312 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x1357 JUMP JUMPDEST PUSH2 0x31F PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x329 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x37B SWAP1 PUSH2 0x33A JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x395 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 PUSH2 0x3AD PUSH2 0x3A6 PUSH2 0x152 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x371 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3CD JUMPI PUSH2 0x3C9 PUSH1 0x20 SWAP2 PUSH2 0x33A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x3F2 PUSH2 0x3ED DUP3 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x40E JUMPI PUSH2 0x40C SWAP3 PUSH2 0x3D2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x336 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x431 JUMPI DUP2 PUSH1 0x20 PUSH2 0x42E SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x3DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x332 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x476 JUMPI PUSH2 0x44F DUP4 PUSH0 DUP4 ADD PUSH2 0x19D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x471 JUMPI PUSH2 0x46E SWAP3 ADD PUSH2 0x413 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x160 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0x48F PUSH2 0x489 CALLDATASIZE PUSH1 0x4 PUSH2 0x436 JUMP JUMPDEST SWAP1 PUSH2 0x138B JUMP JUMPDEST PUSH2 0x497 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x4A1 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x4AF JUMPI JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4C0 SWAP1 PUSH2 0x4B4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4D7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4B7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x509 JUMPI PUSH2 0x4E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x505 PUSH2 0x4F4 PUSH2 0x1406 JUMP JUMPDEST PUSH2 0x4FC PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4C4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x536 JUMPI DUP1 PUSH2 0x52A PUSH2 0x533 SWAP3 PUSH0 DUP7 ADD PUSH2 0x19D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0x544 SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x55B SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x53B JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x58E JUMPI PUSH2 0x58A PUSH2 0x579 PUSH2 0x573 CALLDATASIZE PUSH1 0x4 PUSH2 0x50E JUMP JUMPDEST SWAP1 PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x581 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x5C1 JUMPI PUSH2 0x5A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x5AB PUSH2 0x1490 JUMP JUMPDEST PUSH2 0x5B3 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x5BD DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5F3 SWAP1 PUSH1 0x8 PUSH2 0x5F8 SWAP4 MUL PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x606 SWAP2 SLOAD PUSH2 0x5E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x615 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x5FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x62F PUSH2 0x62A PUSH2 0x634 SWAP3 PUSH2 0x164 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x640 SWAP1 PUSH2 0x61B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x64C SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x658 SWAP1 PUSH2 0x643 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x66F SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x64F JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x6A1 JUMPI PUSH2 0x681 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x69D PUSH2 0x68C PUSH2 0x609 JUMP JUMPDEST PUSH2 0x694 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x65C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x6D6 JUMPI PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x6D2 PUSH2 0x6C1 PUSH2 0x149A JUMP JUMPDEST PUSH2 0x6C9 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6F1 DUP2 PUSH2 0x6DB JUMP JUMPDEST SUB PUSH2 0x6F8 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x709 DUP3 PUSH2 0x6E8 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x733 JUMPI DUP1 PUSH2 0x727 PUSH2 0x730 SWAP3 PUSH0 DUP7 ADD PUSH2 0x19D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x6FC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST CALLVALUE PUSH2 0x767 JUMPI PUSH2 0x751 PUSH2 0x74B CALLDATASIZE PUSH1 0x4 PUSH2 0x70B JUMP JUMPDEST SWAP1 PUSH2 0x172F JUMP JUMPDEST PUSH2 0x759 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x763 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x778 DUP2 PUSH2 0x76C JUMP JUMPDEST SUB PUSH2 0x77F JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x790 DUP3 PUSH2 0x76F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x7AB JUMPI PUSH2 0x7A8 SWAP2 PUSH0 ADD PUSH2 0x783 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x7F3 DUP2 PUSH2 0x7DD JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x80D JUMPI PUSH2 0x805 PUSH1 0x1 SWAP2 PUSH2 0x7E1 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x83B SWAP1 PUSH1 0x8 PUSH2 0x840 SWAP4 MUL PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x812 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x84E SWAP2 SLOAD PUSH2 0x82B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x85B DUP2 PUSH2 0x7DD JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x878 JUMPI PUSH2 0x875 SWAP2 PUSH2 0x86F SWAP2 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x8AC JUMPI PUSH2 0x8A8 PUSH2 0x897 PUSH2 0x892 CALLDATASIZE PUSH1 0x4 PUSH2 0x792 JUMP JUMPDEST PUSH2 0x851 JUMP JUMPDEST PUSH2 0x89F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x8E1 JUMPI PUSH2 0x8C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x8DD PUSH2 0x8CC PUSH2 0x17E9 JUMP JUMPDEST PUSH2 0x8D4 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2AD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x904 JUMPI PUSH2 0x900 PUSH1 0x20 SWAP2 PUSH2 0x33A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 PUSH2 0x91B PUSH2 0x916 DUP4 PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x951 PUSH1 0x5 PUSH2 0x909 JUMP JUMPDEST SWAP1 PUSH2 0x95E PUSH1 0x20 DUP4 ADD PUSH2 0x920 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x968 PUSH2 0x947 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x973 PUSH2 0x960 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x97E PUSH2 0x96B JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x9B8 PUSH2 0x9C1 PUSH1 0x20 SWAP4 PUSH2 0x9C6 SWAP4 PUSH2 0x9AF DUP2 PUSH2 0x981 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x985 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x98E JUMP JUMPDEST PUSH2 0x33A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x9DF SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x999 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA12 JUMPI PUSH2 0x9F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0xA0E PUSH2 0x9FD PUSH2 0x976 JUMP JUMPDEST PUSH2 0xA05 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x9CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH2 0xA20 SWAP1 PUSH2 0x76C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xA37 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xA17 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xA69 JUMPI PUSH2 0xA49 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0xA65 PUSH2 0xA54 PUSH2 0x1802 JUMP JUMPDEST PUSH2 0xA5C PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA24 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH2 0xA77 SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA84 SWAP1 PUSH2 0xA6E JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA9A SWAP1 PUSH2 0xA6E JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xABF PUSH2 0xAC4 SWAP3 PUSH2 0xABA PUSH1 0x2 SWAP4 PUSH0 SWAP5 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x843 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xAF8 JUMPI PUSH2 0xAF4 PUSH2 0xAE3 PUSH2 0xADD CALLDATASIZE PUSH1 0x4 PUSH2 0x50E JUMP JUMPDEST SWAP1 PUSH2 0xAA6 JUMP JUMPDEST PUSH2 0xAEB PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB2B JUMPI PUSH2 0xB15 PUSH2 0xB10 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x1A23 JUMP JUMPDEST PUSH2 0xB1D PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xB27 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB60 JUMPI PUSH2 0xB5C PUSH2 0xB4B PUSH2 0xB46 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x1A69 JUMP JUMPDEST PUSH2 0xB53 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2AD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB93 JUMPI PUSH2 0xB7D PUSH2 0xB78 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x1F89 JUMP JUMPDEST PUSH2 0xB85 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xB8F DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xBC6 JUMPI PUSH2 0xBB0 PUSH2 0xBAB CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x2019 JUMP JUMPDEST PUSH2 0xBB8 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xBC2 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBEA PUSH2 0xBE5 PUSH2 0xBEF SWAP3 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xBFE SWAP2 ADD PUSH2 0x76C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC09 PUSH2 0xBCF JUMP JUMPDEST POP PUSH2 0xC13 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xC2F PUSH2 0xC29 PUSH2 0xC24 PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST LT ISZERO PUSH2 0xC75 JUMPI PUSH2 0xC49 PUSH2 0xC43 PUSH0 DUP4 SWAP1 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH2 0xC5B PUSH2 0xC55 DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0xC6E JUMPI PUSH2 0xC69 SWAP1 PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xC14 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC98 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 PUSH2 0xCAF PUSH2 0xCAA DUP4 PUSH2 0xC80 JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0xCDE PUSH2 0xCC6 DUP4 PUSH2 0xC9D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0xCD4 DUP7 SWAP4 PUSH2 0xC80 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0xCB4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCE9 SWAP1 PUSH2 0x61B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCF5 SWAP1 PUSH2 0xCE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD01 SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD17 DUP3 PUSH2 0x189 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xD32 JUMPI PUSH2 0xD2F SWAP2 PUSH0 ADD PUSH2 0xD0A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0xD3F PUSH2 0x152 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xD51 DUP3 PUSH2 0x226 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST SWAP1 PUSH2 0xD71 SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xDAB SWAP1 PUSH2 0x76C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xDD8 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0xD75 JUMP JUMPDEST PUSH2 0xDE7 SWAP1 MLOAD PUSH2 0x17D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDF2 PUSH2 0xC7B JUMP JUMPDEST POP PUSH2 0xE04 PUSH2 0xDFF PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0xE0E PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP3 PUSH2 0xE18 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xE34 PUSH2 0xE2E PUSH2 0xE29 PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST LT ISZERO PUSH2 0xFB9 JUMPI PUSH2 0xE56 PUSH2 0xE51 PUSH2 0xE4B PUSH0 DUP5 SWAP1 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xE7A PUSH1 0x20 PUSH2 0xE64 DUP4 PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0xE72 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xE8A PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xFB4 JUMPI PUSH0 SWAP2 PUSH2 0xF86 JUMPI JUMPDEST POP PUSH2 0xEAF PUSH2 0xEA9 DUP8 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0xF52 JUMPI POP DUP5 PUSH2 0xED0 PUSH2 0xECA PUSH2 0xEC5 DUP6 PUSH2 0x226 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ PUSH2 0xEE3 JUMPI PUSH2 0xEDE SWAP1 PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xE19 JUMP JUMPDEST POP SWAP1 SWAP2 POP JUMPDEST PUSH2 0xEF1 DUP4 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0xEFB PUSH0 PUSH2 0xBD6 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xF0F PUSH2 0xF09 DUP8 PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST LT ISZERO PUSH2 0xF4B JUMPI PUSH2 0xF46 SWAP1 PUSH2 0xF41 PUSH2 0xF2F PUSH2 0xF2A DUP7 DUP5 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xDDD JUMP JUMPDEST PUSH2 0xF3C DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xEFC JUMP JUMPDEST POP SWAP3 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xF80 SWAP4 SWAP5 POP PUSH2 0xF7B SWAP2 POP PUSH2 0xF69 SWAP1 SWAP6 SWAP3 SWAP6 PUSH2 0xCF8 JUMP JUMPDEST PUSH2 0xF76 DUP7 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xDA2 JUMP JUMPDEST SWAP2 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xFA7 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xFAD JUMPI JUMPDEST PUSH2 0xF9F DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0xE9C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF95 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST POP SWAP1 SWAP2 POP PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xFD3 SWAP1 PUSH2 0xFCE PUSH2 0x2024 JUMP JUMPDEST PUSH2 0x11DB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xFE9 PUSH2 0xFE4 PUSH2 0xFEE SWAP3 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFFA SWAP1 PUSH2 0xFD5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x756C745F41444452455353000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E6956315661756C74466163746F72793A20494E56414C49445F7661 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1057 PUSH1 0x2B PUSH1 0x40 SWAP3 PUSH2 0x985 JUMP JUMPDEST PUSH2 0x1060 DUP2 PUSH2 0xFFD JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1079 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x104A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1083 JUMPI JUMP JUMPDEST PUSH2 0x108B PUSH2 0x152 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x10BB PUSH1 0x4 DUP3 ADD PUSH2 0x1064 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x10D8 DUP2 PUSH2 0x10CB JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x10F2 JUMPI PUSH2 0x10EA PUSH1 0x1 SWAP2 PUSH2 0x10C2 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x1129 SWAP2 MUL SWAP2 PUSH2 0x1123 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 PUSH2 0x10F7 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x114C PUSH2 0x1147 PUSH2 0x1154 SWAP4 PUSH2 0xA6E JUMP JUMPDEST PUSH2 0x1133 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x10FB JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x1188 JUMPI DUP3 PUSH2 0x1180 SWAP2 PUSH1 0x1 PUSH2 0x1186 SWAP6 ADD DUP2 SSTORE PUSH2 0x10CF JUMP JUMPDEST SWAP1 PUSH2 0x1136 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x11B1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x118D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x11D0 PUSH2 0x11CB PUSH2 0x11D7 SWAP3 PUSH2 0xA6E JUMP JUMPDEST PUSH2 0x1133 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1192 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1240 SWAP1 PUSH2 0x1204 DUP2 PUSH2 0x11FD PUSH2 0x11F7 PUSH2 0x11F2 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ ISZERO PUSH2 0x107C JUMP JUMPDEST PUSH2 0x1217 PUSH2 0x1210 PUSH0 PUSH2 0x10BF JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1158 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x122A PUSH2 0x1225 DUP4 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1238 PUSH2 0x152 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1250 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1352 JUMPI PUSH2 0x128F SWAP3 PUSH0 SWAP2 PUSH2 0x1324 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1279 PUSH2 0x1274 DUP5 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1287 PUSH2 0x152 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x129F PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x131F JUMPI PUSH2 0x12E5 PUSH2 0x12EA SWAP3 PUSH2 0x12EF SWAP6 PUSH0 SWAP2 PUSH2 0x12F1 JUMPI JUMPDEST POP SWAP4 PUSH2 0x12DD DUP2 PUSH2 0x12D8 PUSH2 0x12D1 PUSH1 0x2 DUP8 SWAP1 PUSH2 0xA7A JUMP JUMPDEST DUP9 SWAP1 PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x11BB JUMP JUMPDEST SWAP4 PUSH1 0x2 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x11BB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1312 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1318 JUMPI JUMPDEST PUSH2 0x130A DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0x12BC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1300 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1345 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x134B JUMPI JUMPDEST PUSH2 0x133D DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0x1265 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1333 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1360 SWAP1 PUSH2 0xFC2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1374 SWAP2 PUSH2 0x136F PUSH2 0x209E JUMP JUMPDEST PUSH2 0x1376 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1389 SWAP2 PUSH2 0x1384 DUP2 PUSH2 0x2170 JUMP JUMPDEST PUSH2 0x21E0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1395 SWAP2 PUSH2 0x1362 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x13AC SWAP1 PUSH2 0x13A7 PUSH2 0x231E JUMP JUMPDEST PUSH2 0x13FA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C6 PUSH2 0x13C1 PUSH2 0x13CB SWAP3 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0x118D JUMP JUMPDEST PUSH2 0x4B4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13F7 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x13B2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x1403 PUSH2 0x13CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1416 PUSH2 0x1411 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x139B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x142E PUSH2 0x1433 SWAP2 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x812 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1440 SWAP1 SLOAD PUSH2 0x1422 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1468 SWAP2 PUSH2 0x145E PUSH2 0x1463 SWAP3 PUSH2 0x1456 PUSH2 0x1419 JUMP JUMPDEST POP PUSH1 0x2 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x1436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1473 PUSH2 0x2024 JUMP JUMPDEST PUSH2 0x147B PUSH2 0x147D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x148E PUSH2 0x1489 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x239C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1498 PUSH2 0x146B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x14A2 PUSH2 0x1419 JUMP JUMPDEST POP PUSH2 0x14B5 PUSH0 PUSH2 0x14AF PUSH2 0x2408 JUMP JUMPDEST ADD PUSH2 0x1436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14D0 PUSH2 0x14D5 SWAP2 PUSH2 0x14B8 JUMP JUMPDEST PUSH2 0x14BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14E2 SWAP1 SLOAD PUSH2 0x14C4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14FE PUSH2 0x1503 SWAP2 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x14E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1510 SWAP1 SLOAD PUSH2 0x14F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1526 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x118D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1544 PUSH2 0x153F PUSH2 0x1549 SWAP3 PUSH2 0x6DB JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1564 PUSH2 0x155F PUSH2 0x156B SWAP3 PUSH2 0x1530 JUMP JUMPDEST PUSH2 0x154C JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1513 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1589 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x156F JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x159C SWAP1 PUSH2 0x1CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15B7 PUSH2 0x15B2 PUSH2 0x15BE SWAP3 PUSH2 0x1593 JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1575 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x15CB SWAP1 PUSH2 0x6DB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x15E2 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x15C2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x15EF PUSH2 0x242C JUMP JUMPDEST SWAP1 PUSH2 0x15FB PUSH0 DUP4 ADD PUSH2 0x14D8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16AC JUMPI JUMPDEST PUSH2 0x1670 JUMPI PUSH2 0x1635 SWAP3 PUSH2 0x162C SWAP2 PUSH2 0x161A DUP7 PUSH0 DUP7 ADD PUSH2 0x154F JUMP JUMPDEST PUSH2 0x1627 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x1718 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x166B PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1662 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x15CF JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1678 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x16A8 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x16B8 PUSH0 DUP4 ADD PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x16CA PUSH2 0x16C4 DUP7 PUSH2 0x6DB JUMP JUMPDEST SWAP2 PUSH2 0x6DB JUMP JUMPDEST LT ISZERO PUSH2 0x1602 JUMP JUMPDEST PUSH2 0x16DA SWAP1 PUSH2 0x61B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16E6 SWAP1 PUSH2 0x16D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16F2 SWAP1 PUSH2 0x16D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x170D PUSH2 0x1708 PUSH2 0x1714 SWAP3 PUSH2 0x16E9 JUMP JUMPDEST PUSH2 0x16F5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1192 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x172D SWAP2 POP PUSH2 0x1726 SWAP1 PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x1 PUSH2 0x16F8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1739 SWAP2 PUSH2 0x15E4 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x174E SWAP1 SLOAD PUSH2 0x1422 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1774 PUSH2 0x176E PUSH2 0x1767 DUP5 PUSH2 0x7DD JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x173B JUMP JUMPDEST SWAP3 PUSH2 0x7E1 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1784 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x17A4 PUSH2 0x179E PUSH1 0x1 SWAP3 PUSH2 0x1799 DUP8 PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x246 JUMP JUMPDEST SWAP5 PUSH2 0x1751 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x1777 JUMP JUMPDEST SWAP1 PUSH2 0x17B8 SWAP2 PUSH2 0x1757 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x17DB PUSH2 0x17D4 SWAP3 PUSH2 0x17CB PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x17AE JUMP JUMPDEST SUB DUP4 PUSH2 0x371 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x17E6 SWAP1 PUSH2 0x17BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17F1 PUSH2 0xC7B JUMP JUMPDEST POP PUSH2 0x17FB PUSH0 PUSH2 0x17DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x180A PUSH2 0x17FE JUMP JUMPDEST POP PUSH2 0x1814 PUSH0 PUSH2 0x7DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x182B PUSH2 0x1826 PUSH2 0x1830 SWAP3 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x184A PUSH2 0x1845 PUSH2 0x184F SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x185B SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1867 SWAP1 PUSH2 0x1836 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x187E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x185E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1888 PUSH2 0x242C JUMP JUMPDEST SWAP1 PUSH2 0x189D PUSH2 0x1897 PUSH0 DUP5 ADD PUSH2 0x14D8 JUMP JUMPDEST ISZERO PUSH2 0x1CA JUMP JUMPDEST SWAP1 PUSH2 0x18A9 PUSH0 DUP5 ADD PUSH2 0x1506 JUMP JUMPDEST DUP1 PUSH2 0x18BC PUSH2 0x18B6 PUSH0 PUSH2 0x1817 JUMP JUMPDEST SWAP2 PUSH2 0x6DB JUMP JUMPDEST EQ DUP1 PUSH2 0x19F6 JUMPI JUMPDEST SWAP1 PUSH2 0x18D7 PUSH2 0x18D1 PUSH1 0x1 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x6DB JUMP JUMPDEST EQ DUP1 PUSH2 0x19CE JUMPI JUMPDEST PUSH2 0x18E9 SWAP1 SWAP2 ISZERO PUSH2 0x1CA JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x19BD JUMPI JUMPDEST POP PUSH2 0x1981 JUMPI PUSH2 0x1919 SWAP1 PUSH2 0x190E PUSH2 0x1906 PUSH1 0x1 PUSH2 0x1836 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x154F JUMP JUMPDEST DUP3 PUSH2 0x196F JUMPI JUMPDEST PUSH2 0x19FD JUMP JUMPDEST PUSH2 0x1921 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x192E SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x15A2 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1966 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x195D PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x186B JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x191E JUMP JUMPDEST PUSH2 0x197C PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x1914 JUMP JUMPDEST PUSH2 0x1989 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19B9 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x19C8 SWAP2 POP ISZERO PUSH2 0x1CA JUMP JUMPDEST PUSH0 PUSH2 0x18F0 JUMP JUMPDEST POP PUSH2 0x18E9 PUSH2 0x19DB ADDRESS PUSH2 0x1852 JUMP JUMPDEST EXTCODESIZE PUSH2 0x19EE PUSH2 0x19E8 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x18DE JUMP JUMPDEST POP DUP3 PUSH2 0x18C3 JUMP JUMPDEST PUSH2 0x1A1A PUSH2 0x1A21 SWAP2 PUSH2 0x1A0C PUSH2 0x245A JUMP JUMPDEST PUSH2 0x1A15 CALLER PUSH2 0x2482 JUMP JUMPDEST PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x1 PUSH2 0x16F8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A2C SWAP1 PUSH2 0x1880 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A45 PUSH2 0x1A40 PUSH2 0x1A4A SWAP3 PUSH2 0x1A2E JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A61 PUSH2 0x1A5C PUSH2 0x1A66 SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A71 PUSH2 0xC7B JUMP JUMPDEST POP PUSH2 0x1AB1 PUSH2 0x1A87 PUSH2 0x1A82 PUSH1 0x2 PUSH2 0x1A31 JUMP JUMPDEST PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1A9B PUSH2 0x1A96 DUP4 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1AA9 PUSH2 0x152 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1AC1 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1BBF JUMPI PUSH2 0x1B02 PUSH1 0x20 SWAP3 PUSH2 0x1AFD PUSH2 0x1B1D SWAP6 PUSH2 0x1B07 SWAP5 PUSH0 SWAP2 PUSH2 0x1B92 JUMPI JUMPDEST POP PUSH2 0x1AF8 DUP9 PUSH2 0x1AF2 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1B15 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1B2D PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1B8D JUMPI PUSH2 0x1B5C SWAP2 PUSH0 SWAP2 PUSH2 0x1B5F JUMPI JUMPDEST POP PUSH2 0x1B57 DUP4 PUSH2 0x1B51 PUSH1 0x1 PUSH2 0x1A4D JUMP JUMPDEST SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B80 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B86 JUMPI JUMPDEST PUSH2 0x1B78 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0x1B42 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B6E JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1BB2 SWAP2 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1BB8 JUMPI JUMPDEST PUSH2 0x1BAA DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0x1AE4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1BA0 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1BD5 SWAP1 PUSH2 0x1BD0 PUSH2 0x2024 JUMP JUMPDEST PUSH2 0x1C6C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1BE6 PUSH2 0x1BEC SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x76C JUMP JUMPDEST SWAP3 PUSH2 0x76C JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1BF7 JUMPI JUMP JUMPDEST PUSH2 0xD75 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1C3B SWAP2 PUSH2 0x1C35 PUSH2 0x1419 JUMP JUMPDEST SWAP2 PUSH2 0x1136 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C46 DUP2 PUSH2 0x10CB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1C67 JUMPI PUSH1 0x1 SWAP1 SUB SWAP1 PUSH2 0x1C64 PUSH2 0x1C5E DUP4 DUP4 PUSH2 0x10CF JUMP JUMPDEST SWAP1 PUSH2 0x1C29 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x1C75 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1C91 PUSH2 0x1C8B PUSH2 0x1C86 PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST LT ISZERO PUSH2 0x1F82 JUMPI PUSH2 0x1CAB PUSH2 0x1CA5 PUSH0 DUP4 SWAP1 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH2 0x1CBD PUSH2 0x1CB7 DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x1CD0 JUMPI PUSH2 0x1CCB SWAP1 PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0x1C76 JUMP JUMPDEST PUSH2 0x1D13 SWAP1 PUSH2 0x1D0D PUSH2 0x1D06 PUSH2 0x1D00 PUSH0 PUSH2 0x1CFA PUSH2 0x1CEA PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x1CF4 PUSH1 0x1 PUSH2 0x1A4D JUMP JUMPDEST SWAP1 PUSH2 0x1BD7 JUMP JUMPDEST SWAP1 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x1136 JUMP JUMPDEST PUSH2 0x1D1C PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x1D4A PUSH1 0x2 PUSH1 0x20 PUSH2 0x1D34 PUSH2 0x1D2F DUP7 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1D42 PUSH2 0x152 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1D5A PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F7D JUMPI PUSH2 0x1D76 SWAP3 PUSH0 SWAP3 PUSH2 0x1F4D JUMPI JUMPDEST POP PUSH2 0xA7A JUMP JUMPDEST SWAP1 PUSH2 0x1DA3 PUSH1 0x20 PUSH2 0x1D8D PUSH2 0x1D88 DUP7 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1D9B PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1DB3 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1F48 JUMPI PUSH2 0x1DD7 SWAP4 PUSH2 0x1DD2 SWAP3 PUSH0 SWAP3 PUSH2 0x1F18 JUMPI JUMPDEST POP PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x11BB JUMP JUMPDEST PUSH2 0x1DE0 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x1E0E PUSH1 0x20 PUSH2 0x1DF8 PUSH2 0x1DF3 DUP7 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1E06 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1E1E PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1F13 JUMPI PUSH2 0x1E4C PUSH2 0x1E46 PUSH2 0x1E51 SWAP3 PUSH2 0x1E67 SWAP6 PUSH1 0x20 SWAP6 PUSH0 SWAP3 PUSH2 0x1EE4 JUMPI JUMPDEST POP PUSH2 0xA7A JUMP JUMPDEST SWAP6 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1E5F PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1E77 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1EDF JUMPI PUSH2 0x1E9B SWAP4 PUSH2 0x1E96 SWAP3 PUSH0 SWAP3 PUSH2 0x1EAF JUMPI JUMPDEST POP PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x11BB JUMP JUMPDEST PUSH2 0x1EAC PUSH2 0x1EA7 PUSH0 PUSH2 0x10BF JUMP JUMPDEST PUSH2 0x1C3D JUMP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH2 0x1ED1 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1ED8 JUMPI JUMPDEST PUSH2 0x1EC9 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1E90 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EBF JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1F05 SWAP2 SWAP3 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1F0C JUMPI JUMPDEST PUSH2 0x1EFD DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1E40 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1F3A SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F41 JUMPI JUMPDEST PUSH2 0x1F32 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1DCC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1F6F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F76 JUMPI JUMPDEST PUSH2 0x1F67 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1D70 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F5D JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST POP POP PUSH2 0x1EAD JUMP JUMPDEST PUSH2 0x1F92 SWAP1 PUSH2 0x1BC4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1FA5 SWAP1 PUSH2 0x1FA0 PUSH2 0x2024 JUMP JUMPDEST PUSH2 0x1FA7 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x1FC2 PUSH2 0x1FBC PUSH2 0x1FB7 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x1FD2 JUMPI PUSH2 0x1FD0 SWAP1 PUSH2 0x239C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2015 PUSH2 0x1FDE PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x1FE6 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2022 SWAP1 PUSH2 0x1F94 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x202C PUSH2 0x149A JUMP JUMPDEST PUSH2 0x2045 PUSH2 0x203F PUSH2 0x203A PUSH2 0x248D JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x204C JUMPI JUMP JUMPDEST PUSH2 0x208E PUSH2 0x2057 PUSH2 0x248D JUMP JUMPDEST PUSH2 0x205F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x209B SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20A7 ADDRESS PUSH2 0x2092 JUMP JUMPDEST PUSH2 0x20D9 PUSH2 0x20D3 PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2123 JUMPI JUMPDEST PUSH2 0x20E7 JUMPI JUMP JUMPDEST PUSH2 0x20EF PUSH2 0x152 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x211F PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x212C PUSH2 0x249A JUMP JUMPDEST PUSH2 0x215E PUSH2 0x2158 PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ ISZERO PUSH2 0x20E1 JUMP JUMPDEST POP PUSH2 0x216E PUSH2 0x2024 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2179 SWAP1 PUSH2 0x2165 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2184 SWAP1 PUSH2 0x61B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2190 SWAP1 PUSH2 0x217B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x219C SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21A8 DUP2 PUSH2 0x4B4 JUMP JUMPDEST SUB PUSH2 0x21AF JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x21C0 DUP3 PUSH2 0x219F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x21DB JUMPI PUSH2 0x21D8 SWAP2 PUSH0 ADD PUSH2 0x21B3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x220E PUSH1 0x20 PUSH2 0x21F8 PUSH2 0x21F3 DUP7 PUSH2 0x2187 JUMP JUMPDEST PUSH2 0x2193 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x2206 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x221E PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x22EE JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x227F JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x2240 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x227B SWAP1 PUSH2 0x224C PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x229A PUSH2 0x2294 PUSH2 0x228F PUSH2 0x13CE JUMP JUMPDEST PUSH2 0x4B4 JUMP JUMPDEST SWAP2 PUSH2 0x4B4 JUMP JUMPDEST SUB PUSH2 0x22AF JUMPI PUSH2 0x22AA SWAP3 SWAP4 POP PUSH2 0x24C4 JUMP JUMPDEST PUSH2 0x223E JUMP JUMPDEST PUSH2 0x22EA DUP5 PUSH2 0x22BB PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x4C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2310 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2317 JUMPI JUMPDEST PUSH2 0x2308 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x21C2 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x222B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x2327 ADDRESS PUSH2 0x2092 JUMP JUMPDEST PUSH2 0x2359 PUSH2 0x2353 PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x2360 JUMPI JUMP JUMPDEST PUSH2 0x2368 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2398 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x23A4 PUSH2 0x2408 JUMP JUMPDEST PUSH2 0x23BC PUSH2 0x23B2 PUSH0 DUP4 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x11BB JUMP JUMPDEST SWAP1 PUSH2 0x23F0 PUSH2 0x23EA PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0xA6E JUMP JUMPDEST SWAP2 PUSH2 0xA6E JUMP JUMPDEST SWAP2 PUSH2 0x23F9 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x2403 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2458 PUSH2 0x254D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2462 PUSH2 0x2450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2475 SWAP1 PUSH2 0x2470 PUSH2 0x254D JUMP JUMPDEST PUSH2 0x2477 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2480 SWAP1 PUSH2 0x2625 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x248B SWAP1 PUSH2 0x2464 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2495 PUSH2 0x1419 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x24A2 PUSH2 0x1419 JUMP JUMPDEST POP PUSH2 0x24BD PUSH0 PUSH2 0x24B7 PUSH2 0x24B2 PUSH2 0x13CE JUMP JUMPDEST PUSH2 0x2630 JUMP JUMPDEST ADD PUSH2 0x1436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x24CE DUP3 PUSH2 0x2633 JUMP JUMPDEST DUP2 PUSH2 0x24F9 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0xA6E JUMP JUMPDEST SWAP1 PUSH2 0x2502 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x250C DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2518 DUP2 PUSH2 0x24C0 JUMP JUMPDEST PUSH2 0x252A PUSH2 0x2524 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x253E JUMPI PUSH2 0x253A SWAP2 PUSH2 0x2743 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2548 PUSH2 0x26A8 JUMP JUMPDEST PUSH2 0x253C JUMP JUMPDEST PUSH2 0x255E PUSH2 0x2558 PUSH2 0x2772 JUMP JUMPDEST ISZERO PUSH2 0x1CA JUMP JUMPDEST PUSH2 0x2564 JUMPI JUMP JUMPDEST PUSH2 0x256C PUSH2 0x152 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x259C PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x25B1 SWAP1 PUSH2 0x25AC PUSH2 0x254D JUMP JUMPDEST PUSH2 0x25B3 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x25CE PUSH2 0x25C8 PUSH2 0x25C3 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x25DE JUMPI PUSH2 0x25DC SWAP1 PUSH2 0x239C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2621 PUSH2 0x25EA PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x25F2 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x262E SWAP1 PUSH2 0x25A0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x2647 PUSH2 0x2641 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ PUSH2 0x2669 JUMPI PUSH2 0x2667 SWAP1 PUSH0 PUSH2 0x2661 PUSH2 0x265C PUSH2 0x13CE JUMP JUMPDEST PUSH2 0x2630 JUMP JUMPDEST ADD PUSH2 0x11BB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x26A4 SWAP1 PUSH2 0x2675 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x26BB PUSH2 0x26B5 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST GT PUSH2 0x26C2 JUMPI JUMP JUMPDEST PUSH2 0x26CA PUSH2 0x152 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x26FA PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2715 PUSH2 0x2710 DUP4 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x2735 JUMPI PUSH2 0x272A RETURNDATASIZE PUSH2 0x2703 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x273D PUSH2 0x26FE JUMP JUMPDEST SWAP1 PUSH2 0x2733 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x276F SWAP4 PUSH2 0x2751 PUSH2 0x26FE JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x2766 PUSH2 0x271A JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x2790 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x277A PUSH2 0xBCF JUMP JUMPDEST POP PUSH2 0x278D PUSH0 PUSH2 0x2787 PUSH2 0x242C JUMP JUMPDEST ADD PUSH2 0x14D8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x27A4 SWAP1 PUSH2 0x279D PUSH2 0x26FE JUMP JUMPDEST POP ISZERO PUSH2 0x1CA JUMP JUMPDEST PUSH0 EQ PUSH2 0x27B0 JUMPI POP PUSH2 0x2834 JUMP JUMPDEST PUSH2 0x27B9 DUP3 PUSH2 0x24C0 JUMP JUMPDEST PUSH2 0x27CB PUSH2 0x27C5 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ DUP1 PUSH2 0x2819 JUMPI JUMPDEST PUSH2 0x27DA JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x2815 SWAP1 PUSH2 0x27E6 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x282E PUSH2 0x2828 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ PUSH2 0x27D2 JUMP JUMPDEST PUSH2 0x283D DUP2 PUSH2 0x24C0 JUMP JUMPDEST PUSH2 0x284F PUSH2 0x2849 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x285E JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2866 PUSH2 0x152 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2896 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE AND 0xB2 0x26 PUSH16 0x6B96D641C8DE02B45785323C192C69E5 SWAP9 DIV PUSH10 0x9623C2225BA5B10C6473 PUSH16 0x6C634300081900330000000000000000 ","sourceMap":"1795:4181:63:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;749:3275:0:-;;;:::i;:::-;:::o;688:505:4:-;;;:::i;:::-;:::o;1795:4181:63:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":1189,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":413,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":3338,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":1294,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_bytes":{"entryPoint":1078,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":1803,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":989,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":1043,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":8642,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":8627,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":428,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":3353,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint256":{"entryPoint":1938,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":1923,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint64":{"entryPoint":1788,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_address":{"entryPoint":582,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_array_address_dyn_storage":{"entryPoint":6062,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":1339,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_to_address":{"entryPoint":569,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_address_dyn":{"entryPoint":605,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_memory_ptr":{"entryPoint":685,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_storage":{"entryPoint":5975,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":476,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":463,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":1220,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":1207,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":1615,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":6251,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":6238,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":2506,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":2457,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":4196,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7510":{"entryPoint":4170,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":762,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":1352,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":1628,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":5583,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":2596,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":2583,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint64":{"entryPoint":5570,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_address_dyn":{"entryPoint":3257,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":922,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_address_dyn":{"entryPoint":3229,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":9987,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":2313,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":338,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":3200,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":943,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2278,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn":{"entryPoint":563,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn_storage":{"entryPoint":2017,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn_storage_ptr":{"entryPoint":4290,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":550,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn_storage":{"entryPoint":2013,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn_storage_ptr":{"entryPoint":4299,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":9408,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":2433,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn":{"entryPoint":599,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn_storage":{"entryPoint":5969,"id":null,"parameterSlots":1,"returnSlots":1},"array_pop_array_address_dyn_storage_ptr":{"entryPoint":7229,"id":null,"parameterSlots":1,"returnSlots":0},"array_push_from_address_to_array_address_dyn_storage_ptr":{"entryPoint":4440,"id":null,"parameterSlots":2,"returnSlots":0},"array_storeLengthForEncoding_array_address_dyn":{"entryPoint":5947,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_address_dyn_fromStack":{"entryPoint":554,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":2437,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":7127,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":381,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":458,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":1204,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":2066,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":5310,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":1482,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":5349,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":6195,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":5039,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":3027,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":6702,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":356,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":1900,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":1755,"id":null,"parameterSlots":1,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":5070,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":2411,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":2670,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1DCAVault":{"entryPoint":3308,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":5853,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":8583,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_address_dyn_storage_to_array_address_dyn":{"entryPoint":6109,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_address_dyn_storage_to_array_address_dyn_ptr":{"entryPoint":4287,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":5523,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1DCAVault_to_address":{"entryPoint":3320,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1603,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":5865,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":8595,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":6226,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":8338,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":6705,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":4081,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":5042,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":4053,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":6733,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":6198,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":2400,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":3030,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":6167,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1591,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1DCAVault":{"entryPoint":3296,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":5841,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":8571,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1563,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":5424,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_array_address_dyn":{"entryPoint":6075,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":978,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2375,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2446,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2530,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_addVault":{"entryPoint":767,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allVaults":{"entryPoint":2172,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAllVaults":{"entryPoint":2225,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVault":{"entryPoint":2759,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultAsset":{"entryPoint":2864,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultType1ByAssets":{"entryPoint":1373,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultsByAsset":{"entryPoint":709,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultsCount":{"entryPoint":2617,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2813,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":1702,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":1241,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":1649,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":1848,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_removeVault":{"entryPoint":2917,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":1427,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":2968,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":1147,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_vaultExist":{"entryPoint":497,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":2091,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":1507,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":5154,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":5316,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":5362,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":10010,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":881,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":9346,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":9335,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":9765,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":9651,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":9306,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":9116,"id":193,"parameterSlots":1,"returnSlots":0},"fun_addVault":{"entryPoint":4951,"id":17863,"parameterSlots":1,"returnSlots":0},"fun_addVault_inner":{"entryPoint":4571,"id":null,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":8560,"id":17807,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":9549,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":9896,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":8990,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":8228,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":8350,"id":562,"parameterSlots":0,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":10051,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":9776,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getAllVaults":{"entryPoint":6121,"id":17873,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":9370,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":9260,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":9224,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getVaultAsset":{"entryPoint":6761,"id":17926,"parameterSlots":1,"returnSlots":1},"fun_getVaultType1ByAssets":{"entryPoint":5187,"id":17943,"parameterSlots":2,"returnSlots":1},"fun_getVaultsByAsset":{"entryPoint":3562,"id":18054,"parameterSlots":1,"returnSlots":1},"fun_getVaultsCount":{"entryPoint":6146,"id":17883,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":6691,"id":17781,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":6653,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":10098,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":9357,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_owner":{"entryPoint":5274,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":5126,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":5114,"id":null,"parameterSlots":1,"returnSlots":1},"fun_reinitialize":{"entryPoint":5935,"id":17798,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":5912,"id":null,"parameterSlots":2,"returnSlots":0},"fun_removeVault":{"entryPoint":8073,"id":18169,"parameterSlots":1,"returnSlots":0},"fun_removeVault_inner":{"entryPoint":7276,"id":null,"parameterSlots":1,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":5264,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":5245,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":10292,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":9779,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership":{"entryPoint":8217,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":8103,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":9412,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":8672,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":5003,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":4982,"id":null,"parameterSlots":2,"returnSlots":0},"fun_vaultExist":{"entryPoint":3073,"id":18086,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":10128,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2422,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_allVaults":{"entryPoint":2129,"id":17743,"parameterSlots":1,"returnSlots":1},"getter_fun_getVault":{"entryPoint":2726,"id":17752,"parameterSlots":2,"returnSlots":1},"getter_fun_registry":{"entryPoint":1545,"id":17746,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":1560,"id":null,"parameterSlots":1,"returnSlots":1},"increment_uint256":{"entryPoint":3490,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":3058,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_address_of_address":{"entryPoint":2704,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_address_of_address":{"entryPoint":2682,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":3399,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":6272,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_notDelegated":{"entryPoint":5019,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":9632,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":9316,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":9296,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":5227,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":8084,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_17804":{"entryPoint":8549,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_17812":{"entryPoint":4034,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18091":{"entryPoint":7108,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":4962,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":5604,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":3445,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":7164,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":1968,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":836,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":4403,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":5535,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":5877,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":5452,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":3549,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_offset_address":{"entryPoint":5956,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":2115,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":1531,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":5174,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":5336,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":5382,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":4220,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":818,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":3019,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":822,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":352,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":344,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":348,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":3383,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":826,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":4493,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":3332,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":5487,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":4343,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":5149,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":5304,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":332,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1478,"id":null,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_address_dyn":{"entryPoint":2026,"id":null,"parameterSlots":2,"returnSlots":2},"storage_array_index_access_address_dyn_ptr":{"entryPoint":4303,"id":null,"parameterSlots":2,"returnSlots":2},"storage_set_to_zero_address":{"entryPoint":7209,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2336,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7510511c72bfe0cca9302d42db6cb14a9ff3bc6071674c6a36f4798a31a6f98d":{"entryPoint":4093,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":5395,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_dynamic20":{"entryPoint":4347,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":5493,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":4498,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_address_to_address":{"entryPoint":4406,"id":null,"parameterSlots":3,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":4539,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":5538,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":5880,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":5455,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":8607,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":1903,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":1768,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_address":{"entryPoint":3431,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_address":{"entryPoint":3252,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":5145,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_address_dyn":{"entryPoint":3195,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":3023,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":9982,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":5015,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":6142,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":8367},{"length":32,"start":8500},{"length":32,"start":9007}]},"linkReferences":{},"object":"60806040526004361015610013575b610bcb565b61001d5f3561014c565b806302b3537d146101475780631089405214610142578063256b5a021461013d5780634f1ef2861461013857806352d1902d14610133578063592717af1461012e578063715018a6146101295780637b103999146101245780638da5cb5b1461011f5780638f2248bc1461011a5780639094a91e1461011557806397331bf914610110578063ad3cb1cc1461010b578063b9b658db14610106578063bbd7edc514610101578063c4d66de8146100fc578063ca9d67c8146100f7578063ceb68c23146100f25763f2fde38b0361000e57610b98565b610b65565b610b30565b610afd565b610ac7565b610a39565b6109e2565b6108b1565b61087c565b610738565b6106a6565b610671565b610593565b61055d565b6104d9565b61047b565b6102ff565b6102c5565b6101f1565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61018690610164565b90565b6101928161017d565b0361019957565b5f80fd5b905035906101aa82610189565b565b906020828203126101c5576101c2915f0161019d565b90565b61015c565b151590565b6101d8906101ca565b9052565b91906101ef905f602085019401906101cf565b565b346102215761021d61020c6102073660046101ac565b610c01565b610214610152565b918291826101dc565b0390f35b610158565b5190565b60209181520190565b60200190565b6102429061017d565b9052565b9061025381602093610239565b0190565b60200190565b9061027a61027461026d84610226565b809361022a565b92610233565b905f5b81811061028a5750505090565b9091926102a361029d6001928651610246565b94610257565b910191909161027d565b6102c29160208201915f81840391015261025d565b90565b346102f5576102f16102e06102db3660046101ac565b610dea565b6102e8610152565b918291826102ad565b0390f35b610158565b5f0190565b3461032d576103176103123660046101ac565b611357565b61031f610152565b80610329816102fa565b0390f35b610158565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061037b9061033a565b810190811067ffffffffffffffff82111761039557604052565b610344565b906103ad6103a6610152565b9283610371565b565b67ffffffffffffffff81116103cd576103c960209161033a565b0190565b610344565b90825f939282370152565b909291926103f26103ed826103af565b61039a565b9381855260208501908284011161040e5761040c926103d2565b565b610336565b9080601f830112156104315781602061042e933591016103dd565b90565b610332565b9190916040818403126104765761044f835f830161019d565b92602082013567ffffffffffffffff81116104715761046e9201610413565b90565b610160565b61015c565b61048f610489366004610436565b9061138b565b610497610152565b806104a1816102fa565b0390f35b5f9103126104af57565b61015c565b90565b6104c0906104b4565b9052565b91906104d7905f602085019401906104b7565b565b34610509576104e93660046104a5565b6105056104f4611406565b6104fc610152565b918291826104c4565b0390f35b610158565b9190604083820312610536578061052a610533925f860161019d565b9360200161019d565b90565b61015c565b6105449061017d565b9052565b919061055b905f6020850194019061053b565b565b3461058e5761058a61057961057336600461050e565b90611443565b610581610152565b91829182610548565b0390f35b610158565b346105c1576105a33660046104a5565b6105ab611490565b6105b3610152565b806105bd816102fa565b0390f35b610158565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6105f39060086105f893026105c6565b6105ca565b90565b9061060691546105e3565b90565b61061560015f906105fb565b90565b90565b61062f61062a61063492610164565b610618565b610164565b90565b6106409061061b565b90565b61064c90610637565b90565b61065890610643565b9052565b919061066f905f6020850194019061064f565b565b346106a1576106813660046104a5565b61069d61068c610609565b610694610152565b9182918261065c565b0390f35b610158565b346106d6576106b63660046104a5565b6106d26106c161149a565b6106c9610152565b91829182610548565b0390f35b610158565b67ffffffffffffffff1690565b6106f1816106db565b036106f857565b5f80fd5b90503590610709826106e8565b565b91906040838203126107335780610727610730925f860161019d565b936020016106fc565b90565b61015c565b346107675761075161074b36600461070b565b9061172f565b610759610152565b80610763816102fa565b0390f35b610158565b90565b6107788161076c565b0361077f57565b5f80fd5b905035906107908261076f565b565b906020828203126107ab576107a8915f01610783565b90565b61015c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5490565b5f5260205f2090565b6107f3816107dd565b82101561080d576108056001916107e1565b910201905f90565b6107b0565b73ffffffffffffffffffffffffffffffffffffffff1690565b61083b90600861084093026105c6565b610812565b90565b9061084e915461082b565b90565b5f61085b816107dd565b821015610878576108759161086f916107ea565b90610843565b90565b5f80fd5b346108ac576108a8610897610892366004610792565b610851565b61089f610152565b91829182610548565b0390f35b610158565b346108e1576108c13660046104a5565b6108dd6108cc6117e9565b6108d4610152565b918291826102ad565b0390f35b610158565b67ffffffffffffffff81116109045761090060209161033a565b0190565b610344565b9061091b610916836108e6565b61039a565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6109516005610909565b9061095e60208301610920565b565b610968610947565b90565b610973610960565b90565b61097e61096b565b90565b5190565b60209181520190565b90825f9392825e0152565b6109b86109c16020936109c6936109af81610981565b93848093610985565b9586910161098e565b61033a565b0190565b6109df9160208201915f818403910152610999565b90565b34610a12576109f23660046104a5565b610a0e6109fd610976565b610a05610152565b918291826109ca565b0390f35b610158565b610a209061076c565b9052565b9190610a37905f60208501940190610a17565b565b34610a6957610a493660046104a5565b610a65610a54611802565b610a5c610152565b91829182610a24565b0390f35b610158565b610a7790610637565b90565b90610a8490610a6e565b5f5260205260405f2090565b90610a9a90610a6e565b5f5260205260405f2090565b610abf610ac492610aba6002935f94610a7a565b610a90565b610843565b90565b34610af857610af4610ae3610add36600461050e565b90610aa6565b610aeb610152565b91829182610548565b0390f35b610158565b34610b2b57610b15610b103660046101ac565b611a23565b610b1d610152565b80610b27816102fa565b0390f35b610158565b34610b6057610b5c610b4b610b463660046101ac565b611a69565b610b53610152565b918291826102ad565b0390f35b610158565b34610b9357610b7d610b783660046101ac565b611f89565b610b85610152565b80610b8f816102fa565b0390f35b610158565b34610bc657610bb0610bab3660046101ac565b612019565b610bb8610152565b80610bc2816102fa565b0390f35b610158565b5f80fd5b5f90565b90565b610bea610be5610bef92610bd3565b610618565b61076c565b90565b6001610bfe910161076c565b90565b610c09610bcf565b50610c135f610bd6565b5b80610c2f610c29610c245f6107dd565b61076c565b9161076c565b1015610c7557610c49610c435f83906107ea565b90610843565b610c5b610c558461017d565b9161017d565b14610c6e57610c6990610bf2565b610c14565b5050600190565b50505f90565b606090565b67ffffffffffffffff8111610c985760208091020190565b610344565b90610caf610caa83610c80565b61039a565b918252565b369037565b90610cde610cc683610c9d565b92602080610cd48693610c80565b9201910390610cb4565b565b610ce99061061b565b90565b610cf590610ce0565b90565b610d0190610637565b90565b60e01b90565b90505190610d1782610189565b565b90602082820312610d3257610d2f915f01610d0a565b90565b61015c565b610d3f610152565b3d5f823e3d90fd5b90610d5182610226565b811015610d62576020809102010190565b6107b0565b90610d719061017d565b9052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610dab9061076c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dd85760010190565b610d75565b610de7905161017d565b90565b610df2610c7b565b50610e04610dff5f6107dd565b610cb9565b91610e0e5f610bd6565b92610e185f610bd6565b5b80610e34610e2e610e295f6107dd565b61076c565b9161076c565b1015610fb957610e56610e51610e4b5f84906107ea565b90610843565b610cec565b610e7a6020610e6483610cf8565b63cdf456e190610e72610152565b938492610d04565b82528180610e8a600482016102fa565b03915afa908115610fb4575f91610f86575b50610eaf610ea98761017d565b9161017d565b14610f52575084610ed0610eca610ec585610226565b61076c565b9161076c565b14610ee357610ede90610bf2565b610e19565b509091505b610ef183610cb9565b91610efb5f610bd6565b5b80610f0f610f098761076c565b9161076c565b1015610f4b57610f4690610f41610f2f610f2a868490610d47565b610ddd565b610f3c8791849092610d47565b610d67565b610bf2565b610efc565b5092505090565b610f80939450610f7b9150610f6990959295610cf8565b610f768691849092610d47565b610d67565b610da2565b91610ee8565b610fa7915060203d8111610fad575b610f9f8183610371565b810190610d19565b5f610e9c565b503d610f95565b610d37565b50909150610ee8565b610fd390610fce612024565b6111db565b565b610fe9610fe4610fee92610bd3565b610618565b610164565b90565b610ffa90610fd5565b90565b60207f756c745f41444452455353000000000000000000000000000000000000000000917f42616c756e6956315661756c74466163746f72793a20494e56414c49445f76615f8201520152565b611057602b604092610985565b61106081610ffd565b0190565b6110799060208101905f81830391015261104a565b90565b1561108357565b61108b610152565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806110bb60048201611064565b0390fd5b90565b5f5260205f2090565b5490565b6110d8816110cb565b8210156110f2576110ea6001916110c2565b910201905f90565b6107b0565b1b90565b9190600861112991029161112373ffffffffffffffffffffffffffffffffffffffff846110f7565b926110f7565b9181191691161790565b90565b919061114c61114761115493610a6e565b611133565b9083546110fb565b9055565b90815491680100000000000000008310156111885782611180916001611186950181556110cf565b90611136565b565b610344565b5f1b90565b906111b173ffffffffffffffffffffffffffffffffffffffff9161118d565b9181191691161790565b906111d06111cb6111d792610a6e565b611133565b8254611192565b9055565b61124090611204816111fd6111f76111f25f610ff1565b61017d565b9161017d565b141561107c565b6112176112105f6110bf565b8290611158565b602061122a61122583610cec565b610cf8565b63cdf456e190611238610152565b948592610d04565b82528180611250600482016102fa565b03915afa80156113525761128f925f91611324575b50602061127961127484610cec565b610cf8565b63fdf262b790611287610152565b958692610d04565b8252818061129f600482016102fa565b03915afa90811561131f576112e56112ea926112ef955f916112f1575b50936112dd816112d86112d160028790610a7a565b8890610a90565b6111bb565b936002610a7a565b610a90565b6111bb565b565b611312915060203d8111611318575b61130a8183610371565b810190610d19565b5f6112bc565b503d611300565b610d37565b611345915060203d811161134b575b61133d8183610371565b810190610d19565b5f611265565b503d611333565b610d37565b61136090610fc2565b565b906113749161136f61209e565b611376565b565b906113899161138481612170565b6121e0565b565b9061139591611362565b565b5f90565b6113ac906113a761231e565b6113fa565b90565b90565b6113c66113c16113cb926113af565b61118d565b6104b4565b90565b6113f77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6113b2565b90565b506114036113ce565b90565b611416611411611397565b61139b565b90565b5f90565b5f1c90565b61142e6114339161141d565b610812565b90565b6114409054611422565b90565b6114689161145e61146392611456611419565b506002610a7a565b610a90565b611436565b90565b611473612024565b61147b61147d565b565b61148e6114895f610ff1565b61239c565b565b61149861146b565b565b6114a2611419565b506114b55f6114af612408565b01611436565b90565b60401c90565b60ff1690565b6114d06114d5916114b8565b6114be565b90565b6114e290546114c4565b90565b67ffffffffffffffff1690565b6114fe6115039161141d565b6114e5565b90565b61151090546114f2565b90565b9061152667ffffffffffffffff9161118d565b9181191691161790565b61154461153f611549926106db565b610618565b6106db565b90565b90565b9061156461155f61156b92611530565b61154c565b8254611513565b9055565b60401b90565b9061158968ff00000000000000009161156f565b9181191691161790565b61159c906101ca565b90565b90565b906115b76115b26115be92611593565b61159f565b8254611575565b9055565b6115cb906106db565b9052565b91906115e2905f602085019401906115c2565b565b9080916115ef61242c565b906115fb5f83016114d8565b80156116ac575b611670576116359261162c9161161a865f860161154f565b61162760015f86016115a2565b611718565b5f8091016115a2565b61166b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611662610152565b918291826115cf565b0390a1565b611678610152565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806116a8600482016102fa565b0390fd5b506116b85f8301611506565b6116ca6116c4866106db565b916106db565b1015611602565b6116da9061061b565b90565b6116e6906116d1565b90565b6116f2906116d1565b90565b90565b9061170d611708611714926116e9565b6116f5565b8254611192565b9055565b61172d9150611726906116dd565b60016116f8565b565b90611739916115e4565b565b60209181520190565b61174e9054611422565b90565b60010190565b9061177461176e611767846107dd565b809361173b565b926107e1565b905f5b8181106117845750505090565b9091926117a461179e60019261179987611744565b610246565b94611751565b9101919091611777565b906117b891611757565b90565b906117db6117d4926117cb610152565b938480926117ae565b0383610371565b565b6117e6906117bb565b90565b6117f1610c7b565b506117fb5f6117dd565b90565b5f90565b61180a6117fe565b506118145f6107dd565b90565b61182b61182661183092610bd3565b610618565b6106db565b90565b90565b61184a61184561184f92611833565b610618565b6106db565b90565b61185b90610637565b90565b61186790611836565b9052565b919061187e905f6020850194019061185e565b565b61188861242c565b9061189d6118975f84016114d8565b156101ca565b906118a95f8401611506565b806118bc6118b65f611817565b916106db565b14806119f6575b906118d76118d16001611836565b916106db565b14806119ce575b6118e99091156101ca565b90816119bd575b50611981576119199061190e6119066001611836565b5f860161154f565b8261196f575b6119fd565b611921575b50565b61192e905f8091016115a2565b60016119667fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29161195d610152565b9182918261186b565b0390a15f61191e565b61197c60015f86016115a2565b611914565b611989610152565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806119b9600482016102fa565b0390fd5b6119c89150156101ca565b5f6118f0565b506118e96119db30611852565b3b6119ee6119e85f610bd6565b9161076c565b1490506118de565b50826118c3565b611a1a611a2191611a0c61245a565b611a1533612482565b6116dd565b60016116f8565b565b611a2c90611880565b565b90565b611a45611a40611a4a92611a2e565b610618565b61076c565b90565b611a61611a5c611a6692611833565b610618565b61076c565b90565b611a71610c7b565b50611ab1611a87611a826002611a31565b610cb9565b916020611a9b611a9683610cec565b610cf8565b63cdf456e190611aa9610152565b948592610d04565b82528180611ac1600482016102fa565b03915afa918215611bbf57611b02602092611afd611b1d95611b07945f91611b92575b50611af888611af25f610bd6565b90610d47565b610d67565b610cec565b610cf8565b63fdf262b790611b15610152565b938492610d04565b82528180611b2d600482016102fa565b03915afa8015611b8d57611b5c915f91611b5f575b50611b5783611b516001611a4d565b90610d47565b610d67565b90565b611b80915060203d8111611b86575b611b788183610371565b810190610d19565b5f611b42565b503d611b6e565b610d37565b611bb29150863d8111611bb8575b611baa8183610371565b810190610d19565b5f611ae4565b503d611ba0565b610d37565b611bd590611bd0612024565b611c6c565b565b611be6611bec9193929361076c565b9261076c565b8203918211611bf757565b610d75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b611c3b91611c35611419565b91611136565b565b611c46816110cb565b8015611c67576001900390611c64611c5e83836110cf565b90611c29565b55565b611bfc565b611c755f610bd6565b5b80611c91611c8b611c865f6107dd565b61076c565b9161076c565b1015611f8257611cab611ca55f83906107ea565b90610843565b611cbd611cb78461017d565b9161017d565b14611cd057611ccb90610bf2565b611c76565b611d1390611d0d611d06611d005f611cfa611cea5f6107dd565b611cf46001611a4d565b90611bd7565b906107ea565b90610843565b915f6107ea565b90611136565b611d1c5f610ff1565b611d4a60026020611d34611d2f86610cec565b610cf8565b63fdf262b790611d42610152565b948592610d04565b82528180611d5a600482016102fa565b03915afa908115611f7d57611d76925f92611f4d575b50610a7a565b90611da36020611d8d611d8886610cec565b610cf8565b63cdf456e190611d9b610152565b938492610d04565b82528180611db3600482016102fa565b03915afa8015611f4857611dd793611dd2925f92611f18575b50610a90565b6111bb565b611de05f610ff1565b6002611e0e6020611df8611df386610cec565b610cf8565b63cdf456e190611e06610152565b938492610d04565b82528180611e1e600482016102fa565b03915afa8015611f1357611e4c611e46611e5192611e67956020955f92611ee4575b50610a7a565b95610cec565b610cf8565b63fdf262b790611e5f610152565b938492610d04565b82528180611e77600482016102fa565b03915afa8015611edf57611e9b93611e96925f92611eaf575b50610a90565b6111bb565b611eac611ea75f6110bf565b611c3d565b5b565b611ed191925060203d8111611ed8575b611ec98183610371565b810190610d19565b905f611e90565b503d611ebf565b610d37565b611f05919250863d8111611f0c575b611efd8183610371565b810190610d19565b905f611e40565b503d611ef3565b610d37565b611f3a91925060203d8111611f41575b611f328183610371565b810190610d19565b905f611dcc565b503d611f28565b610d37565b611f6f91925060203d8111611f76575b611f678183610371565b810190610d19565b905f611d70565b503d611f5d565b610d37565b5050611ead565b611f9290611bc4565b565b611fa590611fa0612024565b611fa7565b565b80611fc2611fbc611fb75f610ff1565b61017d565b9161017d565b14611fd257611fd09061239c565b565b612015611fde5f610ff1565b611fe6610152565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b61202290611f94565b565b61202c61149a565b61204561203f61203a61248d565b61017d565b9161017d565b0361204c57565b61208e61205761248d565b61205f610152565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b61209b90610637565b90565b6120a730612092565b6120d96120d37f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b148015612123575b6120e757565b6120ef610152565b7fe07c8dba0000000000000000000000000000000000000000000000000000000081528061211f600482016102fa565b0390fd5b5061212c61249a565b61215e6121587f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b14156120e1565b5061216e612024565b565b61217990612165565b565b6121849061061b565b90565b6121909061217b565b90565b61219c90610637565b90565b6121a8816104b4565b036121af57565b5f80fd5b905051906121c08261219f565b565b906020828203126121db576121d8915f016121b3565b90565b61015c565b919061220e60206121f86121f386612187565b612193565b6352d1902d90612206610152565b938492610d04565b8252818061221e600482016102fa565b03915afa80915f926122ee575b50155f1461227f57505090600161224057505b565b61227b9061224c610152565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b928361229a61229461228f6113ce565b6104b4565b916104b4565b036122af576122aa9293506124c4565b61223e565b6122ea846122bb610152565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016104c4565b0390fd5b61231091925060203d8111612317575b6123088183610371565b8101906121c2565b905f61222b565b503d6122fe565b61232730612092565b6123596123537f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b0361236057565b612368610152565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280612398600482016102fa565b0390fd5b6123a4612408565b6123bc6123b25f8301611436565b915f8491016111bb565b906123f06123ea7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610a6e565b91610a6e565b916123f9610152565b80612403816102fa565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61245861254d565b565b612462612450565b565b6124759061247061254d565b612477565b565b61248090612625565b565b61248b90612464565b565b612495611419565b503390565b6124a2611419565b506124bd5f6124b76124b26113ce565b612630565b01611436565b90565b5190565b906124ce82612633565b816124f97fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610a6e565b90612502610152565b8061250c816102fa565b0390a2612518816124c0565b61252a6125245f610bd6565b9161076c565b115f1461253e5761253a91612743565b505b565b50506125486126a8565b61253c565b61255e612558612772565b156101ca565b61256457565b61256c610152565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061259c600482016102fa565b0390fd5b6125b1906125ac61254d565b6125b3565b565b806125ce6125c86125c35f610ff1565b61017d565b9161017d565b146125de576125dc9061239c565b565b6126216125ea5f610ff1565b6125f2610152565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b61262e906125a0565b565b90565b803b6126476126415f610bd6565b9161076c565b1461266957612667905f61266161265c6113ce565b612630565b016111bb565b565b6126a490612675610152565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b346126bb6126b55f610bd6565b9161076c565b116126c257565b6126ca610152565b7fb398979f000000000000000000000000000000000000000000000000000000008152806126fa600482016102fa565b0390fd5b606090565b90612715612710836103af565b61039a565b918252565b3d5f146127355761272a3d612703565b903d5f602084013e5b565b61273d6126fe565b90612733565b5f8061276f936127516126fe565b508390602081019051915af49061276661271a565b90919091612790565b90565b61277a610bcf565b5061278d5f61278761242c565b016114d8565b90565b906127a49061279d6126fe565b50156101ca565b5f146127b05750612834565b6127b9826124c0565b6127cb6127c55f610bd6565b9161076c565b1480612819575b6127da575090565b612815906127e6610152565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610548565b0390fd5b50803b61282e6128285f610bd6565b9161076c565b146127d2565b61283d816124c0565b61284f6128495f610bd6565b9161076c565b115f1461285e57805190602001fd5b612866610152565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280612896600482016102fa565b0390fdfea26469706673582212203116b2266f6b96d641c8de02b45785323c192c69e59804699623c2225ba5b10c64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xBCB JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x14C JUMP JUMPDEST DUP1 PUSH4 0x2B3537D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x10894052 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x256B5A02 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x592717AF EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x9094A91E EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x97331BF9 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xB9B658DB EQ PUSH2 0x106 JUMPI DUP1 PUSH4 0xBBD7EDC5 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0xCA9D67C8 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xCEB68C23 EQ PUSH2 0xF2 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xB98 JUMP JUMPDEST PUSH2 0xB65 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xAFD JUMP JUMPDEST PUSH2 0xAC7 JUMP JUMPDEST PUSH2 0xA39 JUMP JUMPDEST PUSH2 0x9E2 JUMP JUMPDEST PUSH2 0x8B1 JUMP JUMPDEST PUSH2 0x87C JUMP JUMPDEST PUSH2 0x738 JUMP JUMPDEST PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST PUSH2 0x593 JUMP JUMPDEST PUSH2 0x55D JUMP JUMPDEST PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x47B JUMP JUMPDEST PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x2C5 JUMP JUMPDEST PUSH2 0x1F1 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x186 SWAP1 PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x192 DUP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x199 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1AA DUP3 PUSH2 0x189 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1C5 JUMPI PUSH2 0x1C2 SWAP2 PUSH0 ADD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1D8 SWAP1 PUSH2 0x1CA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1EF SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1CF JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x221 JUMPI PUSH2 0x21D PUSH2 0x20C PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0xC01 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1DC JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x242 SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x253 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x239 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x27A PUSH2 0x274 PUSH2 0x26D DUP5 PUSH2 0x226 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x22A JUMP JUMPDEST SWAP3 PUSH2 0x233 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x28A JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x2A3 PUSH2 0x29D PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x246 JUMP JUMPDEST SWAP5 PUSH2 0x257 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x27D JUMP JUMPDEST PUSH2 0x2C2 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x25D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2F5 JUMPI PUSH2 0x2F1 PUSH2 0x2E0 PUSH2 0x2DB CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0xDEA JUMP JUMPDEST PUSH2 0x2E8 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2AD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x32D JUMPI PUSH2 0x317 PUSH2 0x312 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x1357 JUMP JUMPDEST PUSH2 0x31F PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x329 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x37B SWAP1 PUSH2 0x33A JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x395 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 PUSH2 0x3AD PUSH2 0x3A6 PUSH2 0x152 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x371 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x3CD JUMPI PUSH2 0x3C9 PUSH1 0x20 SWAP2 PUSH2 0x33A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x3F2 PUSH2 0x3ED DUP3 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x40E JUMPI PUSH2 0x40C SWAP3 PUSH2 0x3D2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x336 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x431 JUMPI DUP2 PUSH1 0x20 PUSH2 0x42E SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x3DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x332 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x476 JUMPI PUSH2 0x44F DUP4 PUSH0 DUP4 ADD PUSH2 0x19D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x471 JUMPI PUSH2 0x46E SWAP3 ADD PUSH2 0x413 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x160 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0x48F PUSH2 0x489 CALLDATASIZE PUSH1 0x4 PUSH2 0x436 JUMP JUMPDEST SWAP1 PUSH2 0x138B JUMP JUMPDEST PUSH2 0x497 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x4A1 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x4AF JUMPI JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4C0 SWAP1 PUSH2 0x4B4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4D7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4B7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x509 JUMPI PUSH2 0x4E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x505 PUSH2 0x4F4 PUSH2 0x1406 JUMP JUMPDEST PUSH2 0x4FC PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4C4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x536 JUMPI DUP1 PUSH2 0x52A PUSH2 0x533 SWAP3 PUSH0 DUP7 ADD PUSH2 0x19D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0x544 SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x55B SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x53B JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x58E JUMPI PUSH2 0x58A PUSH2 0x579 PUSH2 0x573 CALLDATASIZE PUSH1 0x4 PUSH2 0x50E JUMP JUMPDEST SWAP1 PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x581 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x5C1 JUMPI PUSH2 0x5A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x5AB PUSH2 0x1490 JUMP JUMPDEST PUSH2 0x5B3 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x5BD DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5F3 SWAP1 PUSH1 0x8 PUSH2 0x5F8 SWAP4 MUL PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x606 SWAP2 SLOAD PUSH2 0x5E3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x615 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x5FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x62F PUSH2 0x62A PUSH2 0x634 SWAP3 PUSH2 0x164 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x640 SWAP1 PUSH2 0x61B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x64C SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x658 SWAP1 PUSH2 0x643 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x66F SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x64F JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x6A1 JUMPI PUSH2 0x681 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x69D PUSH2 0x68C PUSH2 0x609 JUMP JUMPDEST PUSH2 0x694 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x65C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x6D6 JUMPI PUSH2 0x6B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x6D2 PUSH2 0x6C1 PUSH2 0x149A JUMP JUMPDEST PUSH2 0x6C9 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6F1 DUP2 PUSH2 0x6DB JUMP JUMPDEST SUB PUSH2 0x6F8 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x709 DUP3 PUSH2 0x6E8 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x733 JUMPI DUP1 PUSH2 0x727 PUSH2 0x730 SWAP3 PUSH0 DUP7 ADD PUSH2 0x19D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x6FC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST CALLVALUE PUSH2 0x767 JUMPI PUSH2 0x751 PUSH2 0x74B CALLDATASIZE PUSH1 0x4 PUSH2 0x70B JUMP JUMPDEST SWAP1 PUSH2 0x172F JUMP JUMPDEST PUSH2 0x759 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x763 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x778 DUP2 PUSH2 0x76C JUMP JUMPDEST SUB PUSH2 0x77F JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x790 DUP3 PUSH2 0x76F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x7AB JUMPI PUSH2 0x7A8 SWAP2 PUSH0 ADD PUSH2 0x783 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x7F3 DUP2 PUSH2 0x7DD JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x80D JUMPI PUSH2 0x805 PUSH1 0x1 SWAP2 PUSH2 0x7E1 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x83B SWAP1 PUSH1 0x8 PUSH2 0x840 SWAP4 MUL PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x812 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x84E SWAP2 SLOAD PUSH2 0x82B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x85B DUP2 PUSH2 0x7DD JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x878 JUMPI PUSH2 0x875 SWAP2 PUSH2 0x86F SWAP2 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x8AC JUMPI PUSH2 0x8A8 PUSH2 0x897 PUSH2 0x892 CALLDATASIZE PUSH1 0x4 PUSH2 0x792 JUMP JUMPDEST PUSH2 0x851 JUMP JUMPDEST PUSH2 0x89F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x8E1 JUMPI PUSH2 0x8C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0x8DD PUSH2 0x8CC PUSH2 0x17E9 JUMP JUMPDEST PUSH2 0x8D4 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2AD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x904 JUMPI PUSH2 0x900 PUSH1 0x20 SWAP2 PUSH2 0x33A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 PUSH2 0x91B PUSH2 0x916 DUP4 PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x951 PUSH1 0x5 PUSH2 0x909 JUMP JUMPDEST SWAP1 PUSH2 0x95E PUSH1 0x20 DUP4 ADD PUSH2 0x920 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x968 PUSH2 0x947 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x973 PUSH2 0x960 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x97E PUSH2 0x96B JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x9B8 PUSH2 0x9C1 PUSH1 0x20 SWAP4 PUSH2 0x9C6 SWAP4 PUSH2 0x9AF DUP2 PUSH2 0x981 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x985 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x98E JUMP JUMPDEST PUSH2 0x33A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x9DF SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x999 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA12 JUMPI PUSH2 0x9F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0xA0E PUSH2 0x9FD PUSH2 0x976 JUMP JUMPDEST PUSH2 0xA05 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x9CA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH2 0xA20 SWAP1 PUSH2 0x76C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xA37 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xA17 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xA69 JUMPI PUSH2 0xA49 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5 JUMP JUMPDEST PUSH2 0xA65 PUSH2 0xA54 PUSH2 0x1802 JUMP JUMPDEST PUSH2 0xA5C PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA24 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH2 0xA77 SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA84 SWAP1 PUSH2 0xA6E JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA9A SWAP1 PUSH2 0xA6E JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xABF PUSH2 0xAC4 SWAP3 PUSH2 0xABA PUSH1 0x2 SWAP4 PUSH0 SWAP5 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x843 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xAF8 JUMPI PUSH2 0xAF4 PUSH2 0xAE3 PUSH2 0xADD CALLDATASIZE PUSH1 0x4 PUSH2 0x50E JUMP JUMPDEST SWAP1 PUSH2 0xAA6 JUMP JUMPDEST PUSH2 0xAEB PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB2B JUMPI PUSH2 0xB15 PUSH2 0xB10 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x1A23 JUMP JUMPDEST PUSH2 0xB1D PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xB27 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB60 JUMPI PUSH2 0xB5C PUSH2 0xB4B PUSH2 0xB46 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x1A69 JUMP JUMPDEST PUSH2 0xB53 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2AD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB93 JUMPI PUSH2 0xB7D PUSH2 0xB78 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x1F89 JUMP JUMPDEST PUSH2 0xB85 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xB8F DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xBC6 JUMPI PUSH2 0xBB0 PUSH2 0xBAB CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x2019 JUMP JUMPDEST PUSH2 0xBB8 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xBC2 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBEA PUSH2 0xBE5 PUSH2 0xBEF SWAP3 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xBFE SWAP2 ADD PUSH2 0x76C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC09 PUSH2 0xBCF JUMP JUMPDEST POP PUSH2 0xC13 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xC2F PUSH2 0xC29 PUSH2 0xC24 PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST LT ISZERO PUSH2 0xC75 JUMPI PUSH2 0xC49 PUSH2 0xC43 PUSH0 DUP4 SWAP1 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH2 0xC5B PUSH2 0xC55 DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0xC6E JUMPI PUSH2 0xC69 SWAP1 PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xC14 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC98 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST SWAP1 PUSH2 0xCAF PUSH2 0xCAA DUP4 PUSH2 0xC80 JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0xCDE PUSH2 0xCC6 DUP4 PUSH2 0xC9D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0xCD4 DUP7 SWAP4 PUSH2 0xC80 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0xCB4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCE9 SWAP1 PUSH2 0x61B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCF5 SWAP1 PUSH2 0xCE0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD01 SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xD17 DUP3 PUSH2 0x189 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xD32 JUMPI PUSH2 0xD2F SWAP2 PUSH0 ADD PUSH2 0xD0A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0xD3F PUSH2 0x152 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xD51 DUP3 PUSH2 0x226 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST SWAP1 PUSH2 0xD71 SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xDAB SWAP1 PUSH2 0x76C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xDD8 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0xD75 JUMP JUMPDEST PUSH2 0xDE7 SWAP1 MLOAD PUSH2 0x17D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDF2 PUSH2 0xC7B JUMP JUMPDEST POP PUSH2 0xE04 PUSH2 0xDFF PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0xE0E PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP3 PUSH2 0xE18 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xE34 PUSH2 0xE2E PUSH2 0xE29 PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST LT ISZERO PUSH2 0xFB9 JUMPI PUSH2 0xE56 PUSH2 0xE51 PUSH2 0xE4B PUSH0 DUP5 SWAP1 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xE7A PUSH1 0x20 PUSH2 0xE64 DUP4 PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0xE72 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xE8A PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xFB4 JUMPI PUSH0 SWAP2 PUSH2 0xF86 JUMPI JUMPDEST POP PUSH2 0xEAF PUSH2 0xEA9 DUP8 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0xF52 JUMPI POP DUP5 PUSH2 0xED0 PUSH2 0xECA PUSH2 0xEC5 DUP6 PUSH2 0x226 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ PUSH2 0xEE3 JUMPI PUSH2 0xEDE SWAP1 PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xE19 JUMP JUMPDEST POP SWAP1 SWAP2 POP JUMPDEST PUSH2 0xEF1 DUP4 PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH2 0xEFB PUSH0 PUSH2 0xBD6 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xF0F PUSH2 0xF09 DUP8 PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST LT ISZERO PUSH2 0xF4B JUMPI PUSH2 0xF46 SWAP1 PUSH2 0xF41 PUSH2 0xF2F PUSH2 0xF2A DUP7 DUP5 SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xDDD JUMP JUMPDEST PUSH2 0xF3C DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xEFC JUMP JUMPDEST POP SWAP3 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xF80 SWAP4 SWAP5 POP PUSH2 0xF7B SWAP2 POP PUSH2 0xF69 SWAP1 SWAP6 SWAP3 SWAP6 PUSH2 0xCF8 JUMP JUMPDEST PUSH2 0xF76 DUP7 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xDA2 JUMP JUMPDEST SWAP2 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xFA7 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xFAD JUMPI JUMPDEST PUSH2 0xF9F DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0xE9C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF95 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST POP SWAP1 SWAP2 POP PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xFD3 SWAP1 PUSH2 0xFCE PUSH2 0x2024 JUMP JUMPDEST PUSH2 0x11DB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xFE9 PUSH2 0xFE4 PUSH2 0xFEE SWAP3 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFFA SWAP1 PUSH2 0xFD5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x756C745F41444452455353000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E6956315661756C74466163746F72793A20494E56414C49445F7661 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1057 PUSH1 0x2B PUSH1 0x40 SWAP3 PUSH2 0x985 JUMP JUMPDEST PUSH2 0x1060 DUP2 PUSH2 0xFFD JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1079 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x104A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1083 JUMPI JUMP JUMPDEST PUSH2 0x108B PUSH2 0x152 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x10BB PUSH1 0x4 DUP3 ADD PUSH2 0x1064 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x10D8 DUP2 PUSH2 0x10CB JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x10F2 JUMPI PUSH2 0x10EA PUSH1 0x1 SWAP2 PUSH2 0x10C2 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x1129 SWAP2 MUL SWAP2 PUSH2 0x1123 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x10F7 JUMP JUMPDEST SWAP3 PUSH2 0x10F7 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x114C PUSH2 0x1147 PUSH2 0x1154 SWAP4 PUSH2 0xA6E JUMP JUMPDEST PUSH2 0x1133 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x10FB JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x1188 JUMPI DUP3 PUSH2 0x1180 SWAP2 PUSH1 0x1 PUSH2 0x1186 SWAP6 ADD DUP2 SSTORE PUSH2 0x10CF JUMP JUMPDEST SWAP1 PUSH2 0x1136 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x11B1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x118D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x11D0 PUSH2 0x11CB PUSH2 0x11D7 SWAP3 PUSH2 0xA6E JUMP JUMPDEST PUSH2 0x1133 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1192 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1240 SWAP1 PUSH2 0x1204 DUP2 PUSH2 0x11FD PUSH2 0x11F7 PUSH2 0x11F2 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ ISZERO PUSH2 0x107C JUMP JUMPDEST PUSH2 0x1217 PUSH2 0x1210 PUSH0 PUSH2 0x10BF JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1158 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x122A PUSH2 0x1225 DUP4 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1238 PUSH2 0x152 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1250 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1352 JUMPI PUSH2 0x128F SWAP3 PUSH0 SWAP2 PUSH2 0x1324 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1279 PUSH2 0x1274 DUP5 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1287 PUSH2 0x152 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x129F PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x131F JUMPI PUSH2 0x12E5 PUSH2 0x12EA SWAP3 PUSH2 0x12EF SWAP6 PUSH0 SWAP2 PUSH2 0x12F1 JUMPI JUMPDEST POP SWAP4 PUSH2 0x12DD DUP2 PUSH2 0x12D8 PUSH2 0x12D1 PUSH1 0x2 DUP8 SWAP1 PUSH2 0xA7A JUMP JUMPDEST DUP9 SWAP1 PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x11BB JUMP JUMPDEST SWAP4 PUSH1 0x2 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x11BB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1312 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1318 JUMPI JUMPDEST PUSH2 0x130A DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0x12BC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1300 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1345 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x134B JUMPI JUMPDEST PUSH2 0x133D DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0x1265 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1333 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1360 SWAP1 PUSH2 0xFC2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1374 SWAP2 PUSH2 0x136F PUSH2 0x209E JUMP JUMPDEST PUSH2 0x1376 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1389 SWAP2 PUSH2 0x1384 DUP2 PUSH2 0x2170 JUMP JUMPDEST PUSH2 0x21E0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1395 SWAP2 PUSH2 0x1362 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x13AC SWAP1 PUSH2 0x13A7 PUSH2 0x231E JUMP JUMPDEST PUSH2 0x13FA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C6 PUSH2 0x13C1 PUSH2 0x13CB SWAP3 PUSH2 0x13AF JUMP JUMPDEST PUSH2 0x118D JUMP JUMPDEST PUSH2 0x4B4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13F7 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x13B2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x1403 PUSH2 0x13CE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1416 PUSH2 0x1411 PUSH2 0x1397 JUMP JUMPDEST PUSH2 0x139B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x142E PUSH2 0x1433 SWAP2 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x812 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1440 SWAP1 SLOAD PUSH2 0x1422 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1468 SWAP2 PUSH2 0x145E PUSH2 0x1463 SWAP3 PUSH2 0x1456 PUSH2 0x1419 JUMP JUMPDEST POP PUSH1 0x2 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x1436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1473 PUSH2 0x2024 JUMP JUMPDEST PUSH2 0x147B PUSH2 0x147D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x148E PUSH2 0x1489 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x239C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1498 PUSH2 0x146B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x14A2 PUSH2 0x1419 JUMP JUMPDEST POP PUSH2 0x14B5 PUSH0 PUSH2 0x14AF PUSH2 0x2408 JUMP JUMPDEST ADD PUSH2 0x1436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14D0 PUSH2 0x14D5 SWAP2 PUSH2 0x14B8 JUMP JUMPDEST PUSH2 0x14BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14E2 SWAP1 SLOAD PUSH2 0x14C4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14FE PUSH2 0x1503 SWAP2 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x14E5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1510 SWAP1 SLOAD PUSH2 0x14F2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1526 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x118D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1544 PUSH2 0x153F PUSH2 0x1549 SWAP3 PUSH2 0x6DB JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1564 PUSH2 0x155F PUSH2 0x156B SWAP3 PUSH2 0x1530 JUMP JUMPDEST PUSH2 0x154C JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1513 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1589 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x156F JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x159C SWAP1 PUSH2 0x1CA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15B7 PUSH2 0x15B2 PUSH2 0x15BE SWAP3 PUSH2 0x1593 JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1575 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x15CB SWAP1 PUSH2 0x6DB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x15E2 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x15C2 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x15EF PUSH2 0x242C JUMP JUMPDEST SWAP1 PUSH2 0x15FB PUSH0 DUP4 ADD PUSH2 0x14D8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16AC JUMPI JUMPDEST PUSH2 0x1670 JUMPI PUSH2 0x1635 SWAP3 PUSH2 0x162C SWAP2 PUSH2 0x161A DUP7 PUSH0 DUP7 ADD PUSH2 0x154F JUMP JUMPDEST PUSH2 0x1627 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x1718 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x166B PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1662 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x15CF JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1678 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x16A8 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x16B8 PUSH0 DUP4 ADD PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x16CA PUSH2 0x16C4 DUP7 PUSH2 0x6DB JUMP JUMPDEST SWAP2 PUSH2 0x6DB JUMP JUMPDEST LT ISZERO PUSH2 0x1602 JUMP JUMPDEST PUSH2 0x16DA SWAP1 PUSH2 0x61B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16E6 SWAP1 PUSH2 0x16D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16F2 SWAP1 PUSH2 0x16D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x170D PUSH2 0x1708 PUSH2 0x1714 SWAP3 PUSH2 0x16E9 JUMP JUMPDEST PUSH2 0x16F5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1192 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x172D SWAP2 POP PUSH2 0x1726 SWAP1 PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x1 PUSH2 0x16F8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1739 SWAP2 PUSH2 0x15E4 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x174E SWAP1 SLOAD PUSH2 0x1422 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1774 PUSH2 0x176E PUSH2 0x1767 DUP5 PUSH2 0x7DD JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x173B JUMP JUMPDEST SWAP3 PUSH2 0x7E1 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1784 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x17A4 PUSH2 0x179E PUSH1 0x1 SWAP3 PUSH2 0x1799 DUP8 PUSH2 0x1744 JUMP JUMPDEST PUSH2 0x246 JUMP JUMPDEST SWAP5 PUSH2 0x1751 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x1777 JUMP JUMPDEST SWAP1 PUSH2 0x17B8 SWAP2 PUSH2 0x1757 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x17DB PUSH2 0x17D4 SWAP3 PUSH2 0x17CB PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x17AE JUMP JUMPDEST SUB DUP4 PUSH2 0x371 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x17E6 SWAP1 PUSH2 0x17BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17F1 PUSH2 0xC7B JUMP JUMPDEST POP PUSH2 0x17FB PUSH0 PUSH2 0x17DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x180A PUSH2 0x17FE JUMP JUMPDEST POP PUSH2 0x1814 PUSH0 PUSH2 0x7DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x182B PUSH2 0x1826 PUSH2 0x1830 SWAP3 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x184A PUSH2 0x1845 PUSH2 0x184F SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x185B SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1867 SWAP1 PUSH2 0x1836 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x187E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x185E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1888 PUSH2 0x242C JUMP JUMPDEST SWAP1 PUSH2 0x189D PUSH2 0x1897 PUSH0 DUP5 ADD PUSH2 0x14D8 JUMP JUMPDEST ISZERO PUSH2 0x1CA JUMP JUMPDEST SWAP1 PUSH2 0x18A9 PUSH0 DUP5 ADD PUSH2 0x1506 JUMP JUMPDEST DUP1 PUSH2 0x18BC PUSH2 0x18B6 PUSH0 PUSH2 0x1817 JUMP JUMPDEST SWAP2 PUSH2 0x6DB JUMP JUMPDEST EQ DUP1 PUSH2 0x19F6 JUMPI JUMPDEST SWAP1 PUSH2 0x18D7 PUSH2 0x18D1 PUSH1 0x1 PUSH2 0x1836 JUMP JUMPDEST SWAP2 PUSH2 0x6DB JUMP JUMPDEST EQ DUP1 PUSH2 0x19CE JUMPI JUMPDEST PUSH2 0x18E9 SWAP1 SWAP2 ISZERO PUSH2 0x1CA JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x19BD JUMPI JUMPDEST POP PUSH2 0x1981 JUMPI PUSH2 0x1919 SWAP1 PUSH2 0x190E PUSH2 0x1906 PUSH1 0x1 PUSH2 0x1836 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x154F JUMP JUMPDEST DUP3 PUSH2 0x196F JUMPI JUMPDEST PUSH2 0x19FD JUMP JUMPDEST PUSH2 0x1921 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x192E SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x15A2 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1966 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x195D PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x186B JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x191E JUMP JUMPDEST PUSH2 0x197C PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x1914 JUMP JUMPDEST PUSH2 0x1989 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x19B9 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x19C8 SWAP2 POP ISZERO PUSH2 0x1CA JUMP JUMPDEST PUSH0 PUSH2 0x18F0 JUMP JUMPDEST POP PUSH2 0x18E9 PUSH2 0x19DB ADDRESS PUSH2 0x1852 JUMP JUMPDEST EXTCODESIZE PUSH2 0x19EE PUSH2 0x19E8 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x18DE JUMP JUMPDEST POP DUP3 PUSH2 0x18C3 JUMP JUMPDEST PUSH2 0x1A1A PUSH2 0x1A21 SWAP2 PUSH2 0x1A0C PUSH2 0x245A JUMP JUMPDEST PUSH2 0x1A15 CALLER PUSH2 0x2482 JUMP JUMPDEST PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x1 PUSH2 0x16F8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A2C SWAP1 PUSH2 0x1880 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A45 PUSH2 0x1A40 PUSH2 0x1A4A SWAP3 PUSH2 0x1A2E JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A61 PUSH2 0x1A5C PUSH2 0x1A66 SWAP3 PUSH2 0x1833 JUMP JUMPDEST PUSH2 0x618 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A71 PUSH2 0xC7B JUMP JUMPDEST POP PUSH2 0x1AB1 PUSH2 0x1A87 PUSH2 0x1A82 PUSH1 0x2 PUSH2 0x1A31 JUMP JUMPDEST PUSH2 0xCB9 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1A9B PUSH2 0x1A96 DUP4 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1AA9 PUSH2 0x152 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1AC1 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1BBF JUMPI PUSH2 0x1B02 PUSH1 0x20 SWAP3 PUSH2 0x1AFD PUSH2 0x1B1D SWAP6 PUSH2 0x1B07 SWAP5 PUSH0 SWAP2 PUSH2 0x1B92 JUMPI JUMPDEST POP PUSH2 0x1AF8 DUP9 PUSH2 0x1AF2 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1B15 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1B2D PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1B8D JUMPI PUSH2 0x1B5C SWAP2 PUSH0 SWAP2 PUSH2 0x1B5F JUMPI JUMPDEST POP PUSH2 0x1B57 DUP4 PUSH2 0x1B51 PUSH1 0x1 PUSH2 0x1A4D JUMP JUMPDEST SWAP1 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B80 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B86 JUMPI JUMPDEST PUSH2 0x1B78 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0x1B42 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B6E JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1BB2 SWAP2 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1BB8 JUMPI JUMPDEST PUSH2 0x1BAA DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST PUSH0 PUSH2 0x1AE4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1BA0 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1BD5 SWAP1 PUSH2 0x1BD0 PUSH2 0x2024 JUMP JUMPDEST PUSH2 0x1C6C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1BE6 PUSH2 0x1BEC SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x76C JUMP JUMPDEST SWAP3 PUSH2 0x76C JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1BF7 JUMPI JUMP JUMPDEST PUSH2 0xD75 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1C3B SWAP2 PUSH2 0x1C35 PUSH2 0x1419 JUMP JUMPDEST SWAP2 PUSH2 0x1136 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C46 DUP2 PUSH2 0x10CB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1C67 JUMPI PUSH1 0x1 SWAP1 SUB SWAP1 PUSH2 0x1C64 PUSH2 0x1C5E DUP4 DUP4 PUSH2 0x10CF JUMP JUMPDEST SWAP1 PUSH2 0x1C29 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0x1BFC JUMP JUMPDEST PUSH2 0x1C75 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1C91 PUSH2 0x1C8B PUSH2 0x1C86 PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST LT ISZERO PUSH2 0x1F82 JUMPI PUSH2 0x1CAB PUSH2 0x1CA5 PUSH0 DUP4 SWAP1 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST PUSH2 0x1CBD PUSH2 0x1CB7 DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x1CD0 JUMPI PUSH2 0x1CCB SWAP1 PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0x1C76 JUMP JUMPDEST PUSH2 0x1D13 SWAP1 PUSH2 0x1D0D PUSH2 0x1D06 PUSH2 0x1D00 PUSH0 PUSH2 0x1CFA PUSH2 0x1CEA PUSH0 PUSH2 0x7DD JUMP JUMPDEST PUSH2 0x1CF4 PUSH1 0x1 PUSH2 0x1A4D JUMP JUMPDEST SWAP1 PUSH2 0x1BD7 JUMP JUMPDEST SWAP1 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x843 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x7EA JUMP JUMPDEST SWAP1 PUSH2 0x1136 JUMP JUMPDEST PUSH2 0x1D1C PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x1D4A PUSH1 0x2 PUSH1 0x20 PUSH2 0x1D34 PUSH2 0x1D2F DUP7 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1D42 PUSH2 0x152 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1D5A PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F7D JUMPI PUSH2 0x1D76 SWAP3 PUSH0 SWAP3 PUSH2 0x1F4D JUMPI JUMPDEST POP PUSH2 0xA7A JUMP JUMPDEST SWAP1 PUSH2 0x1DA3 PUSH1 0x20 PUSH2 0x1D8D PUSH2 0x1D88 DUP7 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1D9B PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1DB3 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1F48 JUMPI PUSH2 0x1DD7 SWAP4 PUSH2 0x1DD2 SWAP3 PUSH0 SWAP3 PUSH2 0x1F18 JUMPI JUMPDEST POP PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x11BB JUMP JUMPDEST PUSH2 0x1DE0 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x1E0E PUSH1 0x20 PUSH2 0x1DF8 PUSH2 0x1DF3 DUP7 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1E06 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1E1E PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1F13 JUMPI PUSH2 0x1E4C PUSH2 0x1E46 PUSH2 0x1E51 SWAP3 PUSH2 0x1E67 SWAP6 PUSH1 0x20 SWAP6 PUSH0 SWAP3 PUSH2 0x1EE4 JUMPI JUMPDEST POP PUSH2 0xA7A JUMP JUMPDEST SWAP6 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0xCF8 JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1E5F PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1E77 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1EDF JUMPI PUSH2 0x1E9B SWAP4 PUSH2 0x1E96 SWAP3 PUSH0 SWAP3 PUSH2 0x1EAF JUMPI JUMPDEST POP PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x11BB JUMP JUMPDEST PUSH2 0x1EAC PUSH2 0x1EA7 PUSH0 PUSH2 0x10BF JUMP JUMPDEST PUSH2 0x1C3D JUMP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH2 0x1ED1 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1ED8 JUMPI JUMPDEST PUSH2 0x1EC9 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1E90 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EBF JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1F05 SWAP2 SWAP3 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1F0C JUMPI JUMPDEST PUSH2 0x1EFD DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1E40 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EF3 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1F3A SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F41 JUMPI JUMPDEST PUSH2 0x1F32 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1DCC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x1F6F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F76 JUMPI JUMPDEST PUSH2 0x1F67 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xD19 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1D70 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F5D JUMP JUMPDEST PUSH2 0xD37 JUMP JUMPDEST POP POP PUSH2 0x1EAD JUMP JUMPDEST PUSH2 0x1F92 SWAP1 PUSH2 0x1BC4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1FA5 SWAP1 PUSH2 0x1FA0 PUSH2 0x2024 JUMP JUMPDEST PUSH2 0x1FA7 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x1FC2 PUSH2 0x1FBC PUSH2 0x1FB7 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x1FD2 JUMPI PUSH2 0x1FD0 SWAP1 PUSH2 0x239C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2015 PUSH2 0x1FDE PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x1FE6 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2022 SWAP1 PUSH2 0x1F94 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x202C PUSH2 0x149A JUMP JUMPDEST PUSH2 0x2045 PUSH2 0x203F PUSH2 0x203A PUSH2 0x248D JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x204C JUMPI JUMP JUMPDEST PUSH2 0x208E PUSH2 0x2057 PUSH2 0x248D JUMP JUMPDEST PUSH2 0x205F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x209B SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20A7 ADDRESS PUSH2 0x2092 JUMP JUMPDEST PUSH2 0x20D9 PUSH2 0x20D3 PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2123 JUMPI JUMPDEST PUSH2 0x20E7 JUMPI JUMP JUMPDEST PUSH2 0x20EF PUSH2 0x152 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x211F PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x212C PUSH2 0x249A JUMP JUMPDEST PUSH2 0x215E PUSH2 0x2158 PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ ISZERO PUSH2 0x20E1 JUMP JUMPDEST POP PUSH2 0x216E PUSH2 0x2024 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2179 SWAP1 PUSH2 0x2165 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2184 SWAP1 PUSH2 0x61B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2190 SWAP1 PUSH2 0x217B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x219C SWAP1 PUSH2 0x637 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21A8 DUP2 PUSH2 0x4B4 JUMP JUMPDEST SUB PUSH2 0x21AF JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x21C0 DUP3 PUSH2 0x219F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x21DB JUMPI PUSH2 0x21D8 SWAP2 PUSH0 ADD PUSH2 0x21B3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x220E PUSH1 0x20 PUSH2 0x21F8 PUSH2 0x21F3 DUP7 PUSH2 0x2187 JUMP JUMPDEST PUSH2 0x2193 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x2206 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD04 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x221E PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x22EE JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x227F JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x2240 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x227B SWAP1 PUSH2 0x224C PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x229A PUSH2 0x2294 PUSH2 0x228F PUSH2 0x13CE JUMP JUMPDEST PUSH2 0x4B4 JUMP JUMPDEST SWAP2 PUSH2 0x4B4 JUMP JUMPDEST SUB PUSH2 0x22AF JUMPI PUSH2 0x22AA SWAP3 SWAP4 POP PUSH2 0x24C4 JUMP JUMPDEST PUSH2 0x223E JUMP JUMPDEST PUSH2 0x22EA DUP5 PUSH2 0x22BB PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x4C4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2310 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2317 JUMPI JUMPDEST PUSH2 0x2308 DUP2 DUP4 PUSH2 0x371 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x21C2 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x222B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x2327 ADDRESS PUSH2 0x2092 JUMP JUMPDEST PUSH2 0x2359 PUSH2 0x2353 PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x2360 JUMPI JUMP JUMPDEST PUSH2 0x2368 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2398 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x23A4 PUSH2 0x2408 JUMP JUMPDEST PUSH2 0x23BC PUSH2 0x23B2 PUSH0 DUP4 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x11BB JUMP JUMPDEST SWAP1 PUSH2 0x23F0 PUSH2 0x23EA PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0xA6E JUMP JUMPDEST SWAP2 PUSH2 0xA6E JUMP JUMPDEST SWAP2 PUSH2 0x23F9 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x2403 DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2458 PUSH2 0x254D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2462 PUSH2 0x2450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2475 SWAP1 PUSH2 0x2470 PUSH2 0x254D JUMP JUMPDEST PUSH2 0x2477 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2480 SWAP1 PUSH2 0x2625 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x248B SWAP1 PUSH2 0x2464 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2495 PUSH2 0x1419 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x24A2 PUSH2 0x1419 JUMP JUMPDEST POP PUSH2 0x24BD PUSH0 PUSH2 0x24B7 PUSH2 0x24B2 PUSH2 0x13CE JUMP JUMPDEST PUSH2 0x2630 JUMP JUMPDEST ADD PUSH2 0x1436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x24CE DUP3 PUSH2 0x2633 JUMP JUMPDEST DUP2 PUSH2 0x24F9 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0xA6E JUMP JUMPDEST SWAP1 PUSH2 0x2502 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x250C DUP2 PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2518 DUP2 PUSH2 0x24C0 JUMP JUMPDEST PUSH2 0x252A PUSH2 0x2524 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x253E JUMPI PUSH2 0x253A SWAP2 PUSH2 0x2743 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2548 PUSH2 0x26A8 JUMP JUMPDEST PUSH2 0x253C JUMP JUMPDEST PUSH2 0x255E PUSH2 0x2558 PUSH2 0x2772 JUMP JUMPDEST ISZERO PUSH2 0x1CA JUMP JUMPDEST PUSH2 0x2564 JUMPI JUMP JUMPDEST PUSH2 0x256C PUSH2 0x152 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x259C PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x25B1 SWAP1 PUSH2 0x25AC PUSH2 0x254D JUMP JUMPDEST PUSH2 0x25B3 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x25CE PUSH2 0x25C8 PUSH2 0x25C3 PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x25DE JUMPI PUSH2 0x25DC SWAP1 PUSH2 0x239C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2621 PUSH2 0x25EA PUSH0 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x25F2 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x262E SWAP1 PUSH2 0x25A0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x2647 PUSH2 0x2641 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ PUSH2 0x2669 JUMPI PUSH2 0x2667 SWAP1 PUSH0 PUSH2 0x2661 PUSH2 0x265C PUSH2 0x13CE JUMP JUMPDEST PUSH2 0x2630 JUMP JUMPDEST ADD PUSH2 0x11BB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x26A4 SWAP1 PUSH2 0x2675 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x26BB PUSH2 0x26B5 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST GT PUSH2 0x26C2 JUMPI JUMP JUMPDEST PUSH2 0x26CA PUSH2 0x152 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x26FA PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2715 PUSH2 0x2710 DUP4 PUSH2 0x3AF JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x2735 JUMPI PUSH2 0x272A RETURNDATASIZE PUSH2 0x2703 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x273D PUSH2 0x26FE JUMP JUMPDEST SWAP1 PUSH2 0x2733 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x276F SWAP4 PUSH2 0x2751 PUSH2 0x26FE JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x2766 PUSH2 0x271A JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x2790 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x277A PUSH2 0xBCF JUMP JUMPDEST POP PUSH2 0x278D PUSH0 PUSH2 0x2787 PUSH2 0x242C JUMP JUMPDEST ADD PUSH2 0x14D8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x27A4 SWAP1 PUSH2 0x279D PUSH2 0x26FE JUMP JUMPDEST POP ISZERO PUSH2 0x1CA JUMP JUMPDEST PUSH0 EQ PUSH2 0x27B0 JUMPI POP PUSH2 0x2834 JUMP JUMPDEST PUSH2 0x27B9 DUP3 PUSH2 0x24C0 JUMP JUMPDEST PUSH2 0x27CB PUSH2 0x27C5 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ DUP1 PUSH2 0x2819 JUMPI JUMPDEST PUSH2 0x27DA JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x2815 SWAP1 PUSH2 0x27E6 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x548 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x282E PUSH2 0x2828 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST EQ PUSH2 0x27D2 JUMP JUMPDEST PUSH2 0x283D DUP2 PUSH2 0x24C0 JUMP JUMPDEST PUSH2 0x284F PUSH2 0x2849 PUSH0 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 PUSH2 0x76C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x285E JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2866 PUSH2 0x152 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2896 PUSH1 0x4 DUP3 ADD PUSH2 0x2FA JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE AND 0xB2 0x26 PUSH16 0x6B96D641C8DE02B45785323C192C69E5 SWAP9 DIV PUSH10 0x9623C2225BA5B10C6473 PUSH16 0x6C634300081900330000000000000000 ","sourceMap":"1795:4181:63:-:0;;;;;;;;;-1:-1:-1;1795:4181:63;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1925:33::-;;;;;;:::i;:::-;;:::o;1795:4181::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1890:26::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;;;1795:4181;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1795:4181:63:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;1967:63::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1795:4181::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;5160:253::-;5219:4;;:::i;:::-;5253:1;5241:13;5253:1;5241:13;:::i;:::-;5278:3;5256:1;:20;;5260:16;:9;:16;:::i;:::-;5256:20;:::i;:::-;;;:::i;:::-;;;;;5302:12;;:9;5312:1;5302:12;;:::i;:::-;;;:::i;:::-;:22;;5318:6;5302:22;:::i;:::-;;;:::i;:::-;;5298:74;;5278:3;;;:::i;:::-;5241:13;;5298:74;5352:4;;;5345:11;:::o;5256:20::-;;;5400:5;5393:12;:::o;1795:4181::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;4361:791::-;4425:16;;:::i;:::-;4494:9;4480:31;4494:16;:9;:16;:::i;:::-;4480:31;:::i;:::-;4538:1;4522:17;4538:1;4522:17;:::i;:::-;4569:1;4557:13;4569:1;4557:13;:::i;:::-;4594:3;4572:1;:20;;4576:16;:9;:16;:::i;:::-;4572:20;:::i;:::-;;;:::i;:::-;;;;;4640:31;4658:12;;:9;4668:1;4658:12;;:::i;:::-;;;:::i;:::-;4640:31;:::i;:::-;4702:17;;:15;:5;:15;:::i;:::-;;:17;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4594:3;4686:33;4740:14;;4749:5;4740:14;:::i;:::-;;;:::i;:::-;;4736:135;;4891:5;;:22;;4900:13;:6;:13;:::i;:::-;4891:22;:::i;:::-;;;:::i;:::-;;4887:68;;4594:3;;;:::i;:::-;4557:13;;4887:68;4934:5;;;;4552:414;5004:20;5018:5;5004:20;:::i;:::-;5052:1;5040:13;5052:1;5040:13;:::i;:::-;5066:3;5055:1;:9;;5059:5;5055:9;:::i;:::-;;;:::i;:::-;;;;;5066:3;5098:6;5086:21;5098:9;;:6;5105:1;5098:9;;:::i;:::-;;:::i;:::-;5086:21;:6;5093:1;;5086:21;;;:::i;:::-;;:::i;:::-;5066:3;:::i;:::-;5040:13;;5055:9;;;;;5131:13;:::o;4736:135::-;4824:7;4799:5;;;4775:30;4799:5;;4791:14;4799:5;;;;4791:14;:::i;:::-;4775:30;:6;4782:5;;4775:30;;;:::i;:::-;;:::i;:::-;4824:7;:::i;:::-;4850:5;;;4702:17;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4572:20::-;;;;;;;2303:62:0;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1795:4181:63:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2550:465::-;2772:43;2550:465;2620:82;2628:12;:26;;2644:10;2652:1;2644:10;:::i;:::-;2628:26;:::i;:::-;;;:::i;:::-;;;2620:82;:::i;:::-;2713:28;:14;:9;:14;:::i;:::-;2728:12;2713:28;;:::i;:::-;2772:43;:41;:31;2790:12;2772:31;:::i;:::-;:41;:::i;:::-;;:43;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;2847:44;2772:43;;;;;2550:465;2752:63;2847:44;:42;:31;2865:12;2847:31;:::i;:::-;:42;:::i;:::-;;:44;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;2961:20;:31;2847:44;2961:46;2847:44;;;;;2550:465;2826:65;2938:12;2904:46;2938:12;2904:31;:19;:8;2913:9;2904:19;;:::i;:::-;2924:10;2904:31;;:::i;:::-;:46;:::i;:::-;2961:8;;:20;:::i;:::-;:31;:::i;:::-;:46;:::i;:::-;2550:465::o;2847:44::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2772:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2550:465::-;;;;:::i;:::-;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;1795:4181:63:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;1795:4181:63:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;1795:4181:63:-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4208:145::-;4321:24;4208:145;4321:16;:24;4208:145;4294:7;;:::i;:::-;4321:8;;:16;:::i;:::-;:24;:::i;:::-;;:::i;:::-;4314:31;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;3155:101::-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;2441:144::-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;1795:4181:63:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;2382:8:63;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;1795:4181:63;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2303:147::-;2403:39;2303:147;;2414:28;2303:147;2414:28;:::i;:::-;2403:39;;:::i;:::-;2303:147::o;:::-;;;;;:::i;:::-;:::o;1795:4181::-;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;3148:100::-;3195:16;;:::i;:::-;3231:9;3224:16;3231:9;3224:16;:::i;:::-;;:::o;1795:4181::-;;;:::o;3379:100::-;3428:7;;:::i;:::-;3455:9;:16;:9;:16;:::i;:::-;3448:23;:::o;1795:4181::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2107:188:63;2259:28;2248:39;2107:188;;;:::i;:::-;2226:10;;;:::i;:::-;2259:28;:::i;:::-;2248:39;;:::i;:::-;2107:188::o;:::-;;;;:::i;:::-;:::o;1795:4181::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;3659:304::-;3727:16;;:::i;:::-;3796:1;3821:43;3782:16;;3796:1;3782:16;:::i;:::-;;:::i;:::-;3839:12;3821:43;:41;:31;3839:12;3821:31;:::i;:::-;:41;:::i;:::-;;:43;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;3887:31;:44;3821:43;3809:55;3887:44;3821:43;3887:42;3821:43;;;;;3659:304;3809:6;:55;:6;:55;3816:1;3809:55;:::i;:::-;;;:::i;:::-;;:::i;:::-;3887:31;:::i;:::-;:42;:::i;:::-;;:44;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;3875:56;3887:44;;;;;3659:304;3875:6;:56;:6;:56;3882:1;3875:56;:::i;:::-;;;:::i;:::-;;:::i;:::-;3942:13;:::o;3887:44::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3821:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1795:4181:63:-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;5421:552::-;5493:13;5505:1;5493:13;:::i;:::-;5530:3;5508:1;:20;;5512:16;:9;:16;:::i;:::-;5508:20;:::i;:::-;;;:::i;:::-;;;;;5554:12;;:9;5564:1;5554:12;;:::i;:::-;;;:::i;:::-;:22;;5570:6;5554:22;:::i;:::-;;;:::i;:::-;;5550:405;;5530:3;;;:::i;:::-;5493:13;;5550:405;5597:46;5612:9;5597:12;5612:31;;:9;5622:20;:16;:9;:16;:::i;:::-;:20;5641:1;5622:20;:::i;:::-;;;:::i;:::-;5612:31;;:::i;:::-;;;:::i;:::-;5597:9;;:12;:::i;:::-;:46;;:::i;:::-;5752:10;5760:1;5752:10;:::i;:::-;5671:38;5662:8;5671:38;:36;:25;5689:6;5671:25;:::i;:::-;:36;:::i;:::-;;:38;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;5662:48;5671:38;;;;;5550:405;5662:48;;:::i;:::-;5729:6;5711:37;;:35;:25;5729:6;5711:25;:::i;:::-;:35;:::i;:::-;;:37;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5662:100;5711:37;5662:87;5711:37;;;;;5550:405;5662:87;;:::i;:::-;:100;:::i;:::-;5871:10;5879:1;5871:10;:::i;:::-;5781:8;5790:37;;:35;:25;5808:6;5790:25;:::i;:::-;:35;:::i;:::-;;:37;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5829:25;5781:47;5829:36;5790:37;5829:38;5790:37;5829:38;5790:37;;;;;5550:405;5781:47;;:::i;:::-;5847:6;5829:25;:::i;:::-;:36;:::i;:::-;;:38;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5781:100;5829:38;5781:87;5829:38;;;;;5550:405;5781:87;;:::i;:::-;:100;:::i;:::-;5900:13;;:9;:13;:::i;:::-;;:::i;:::-;5488:478;5421:552::o;5829:38::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;5790:37::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;5711:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;5671:38::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;5508:20::-;;;;;5421:552;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2658:162::-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1795:4181:63;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;2458:84:63:-;;;;:::i;:::-;:::o;1795:4181::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;1795:4181:63:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1795:4181:63;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2089600","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","addVault(address)":"infinite","allVaults(uint256)":"infinite","getAllVaults()":"infinite","getVault(address,address)":"infinite","getVaultAsset(address)":"infinite","getVaultType1ByAssets(address,address)":"infinite","getVaultsByAsset(address)":"infinite","getVaultsCount()":"2827","initialize(address)":"infinite","owner()":"2884","proxiableUUID()":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","removeVault(address)":"infinite","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite","vaultExist(address)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addVault(address)":"256b5a02","allVaults(uint256)":"9094a91e","getAllVaults()":"97331bf9","getVault(address,address)":"bbd7edc5","getVaultAsset(address)":"ca9d67c8","getVaultType1ByAssets(address,address)":"592717af","getVaultsByAsset(address)":"10894052","getVaultsCount()":"b9b658db","initialize(address)":"c4d66de8","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","removeVault(address)":"ceb68c23","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","vaultExist(address)":"02b3537d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"vaultCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"}],\"name\":\"addVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllVaults\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"}],\"name\":\"getVaultAsset\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset2\",\"type\":\"address\"}],\"name\":\"getVaultType1ByAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getVaultsByAsset\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_register\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_register\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"removeVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"vaultExist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getAllVaults()\":{\"details\":\"Retrieves all the vaults created by the factory.\",\"returns\":{\"_0\":\"An array of vault addresses.\"}},\"getVaultAsset(address)\":{\"details\":\"Retrieves the assets of a specific vault.\",\"params\":{\"vaultAddress\":\"The address of the vault.\"},\"returns\":{\"_0\":\"An array of asset addresses.\"}},\"getVaultType1ByAssets(address,address)\":{\"details\":\"Retrieves the vault address based on the given assets.\",\"params\":{\"asset1\":\"The address of the first asset.\",\"asset2\":\"The address of the second asset.\"},\"returns\":{\"_0\":\"The address of the vault.\"}},\"getVaultsCount()\":{\"details\":\"Retrieves the number of vaults created by the factory.\",\"returns\":{\"_0\":\"The count of vaults.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/BaluniV1DCAVaultRegistry.sol\":\"BaluniV1DCAVaultRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1DCAVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1DCAVault {\\r\\n    function baseAsset() external view returns (address);\\r\\n    function quoteAsset() external view returns (address);\\r\\n    function registry() external view returns (address);\\r\\n    function lastDeposit() external view returns (uint256);\\r\\n    function deposit(uint256 amount, address to) external;\\r\\n    function withdraw(uint256 shares, address to) external;\\r\\n    function pause() external;\\r\\n    function unpause() external;\\r\\n    function totalValuation() external view returns (uint256);\\r\\n    function unitPrice() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0xc7fa68680d00716d3c09298f77099f8a8afe02bf6030819587408e5f152eb088\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/registry/BaluniV1DCAVaultRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1DCAVault.sol';\\r\\n\\r\\ncontract BaluniV1DCAVaultRegistry is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\r\\n    address[] public allVaults;\\r\\n\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    mapping(address => mapping(address => address)) public getVault;\\r\\n\\r\\n    event vaultCreated(address indexed vault, address[] assets);\\r\\n\\r\\n    function initialize(address _register) public initializer {\\r\\n        __UUPSUpgradeable_init();\\r\\n        __Ownable_init(msg.sender);\\r\\n        registry = IBaluniV1Registry(_register);\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _register, uint64 _version) public reinitializer(_version) {\\r\\n        registry = IBaluniV1Registry(_register);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    function addVault(address vaultAddress) external onlyOwner {\\r\\n        require(vaultAddress != address(0), 'BaluniV1VaultFactory: INVALID_vault_ADDRESS');\\r\\n        allVaults.push(vaultAddress);\\r\\n        address baseAsset = IBaluniV1DCAVault(vaultAddress).baseAsset();\\r\\n        address quoteAsset = IBaluniV1DCAVault(vaultAddress).quoteAsset();\\r\\n\\r\\n        getVault[baseAsset][quoteAsset] = vaultAddress;\\r\\n        getVault[quoteAsset][baseAsset] = vaultAddress;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves all the vaults created by the factory.\\r\\n     * @return An array of vault addresses.\\r\\n     */\\r\\n    function getAllVaults() external view returns (address[] memory) {\\r\\n        return allVaults;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the number of vaults created by the factory.\\r\\n     * @return The count of vaults.\\r\\n     */\\r\\n    function getVaultsCount() external view returns (uint256) {\\r\\n        return allVaults.length;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the assets of a specific vault.\\r\\n     * @param vaultAddress The address of the vault.\\r\\n     * @return An array of asset addresses.\\r\\n     */\\r\\n    function getVaultAsset(address vaultAddress) external view returns (address[] memory) {\\r\\n        address[] memory assets = new address[](2);\\r\\n        assets[0] = IBaluniV1DCAVault(vaultAddress).baseAsset();\\r\\n        assets[1] = IBaluniV1DCAVault(vaultAddress).quoteAsset();\\r\\n        return assets;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the vault address based on the given assets.\\r\\n     * @param asset1 The address of the first asset.\\r\\n     * @param asset2 The address of the second asset.\\r\\n     * @return The address of the vault.\\r\\n     */\\r\\n    function getVaultType1ByAssets(address asset1, address asset2) external view returns (address) {\\r\\n        return getVault[asset1][asset2];\\r\\n    }\\r\\n\\r\\n    function getVaultsByAsset(address token) external view returns (address[] memory) {\\r\\n        address[] memory vaults = new address[](allVaults.length);\\r\\n        uint256 count = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < allVaults.length; i++) {\\r\\n            IBaluniV1DCAVault vault = IBaluniV1DCAVault(allVaults[i]);\\r\\n            address asset = vault.baseAsset();\\r\\n\\r\\n            if (asset == token) {\\r\\n                vaults[count] = address(vault);\\r\\n                count++;\\r\\n                break;\\r\\n            }\\r\\n\\r\\n            if (count == vaults.length) {\\r\\n                break;\\r\\n            }\\r\\n        }\\r\\n\\r\\n        address[] memory result = new address[](count);\\r\\n        for (uint256 i = 0; i < count; i++) {\\r\\n            result[i] = vaults[i];\\r\\n        }\\r\\n\\r\\n        return result;\\r\\n    }\\r\\n\\r\\n    function vaultExist(address _vault) external view returns (bool) {\\r\\n        for (uint256 i = 0; i < allVaults.length; i++) {\\r\\n            if (allVaults[i] == _vault) {\\r\\n                return true;\\r\\n            }\\r\\n        }\\r\\n        return false;\\r\\n    }\\r\\n\\r\\n    function removeVault(address _vault) external onlyOwner {\\r\\n        for (uint256 i = 0; i < allVaults.length; i++) {\\r\\n            if (allVaults[i] == _vault) {\\r\\n                allVaults[i] = allVaults[allVaults.length - 1];\\r\\n                getVault[IBaluniV1DCAVault(_vault).quoteAsset()][IBaluniV1DCAVault(_vault).baseAsset()] = address(0);\\r\\n                getVault[IBaluniV1DCAVault(_vault).baseAsset()][IBaluniV1DCAVault(_vault).quoteAsset()] = address(0);\\r\\n                allVaults.pop();\\r\\n                break;\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x43f9137ecce57554c729ffe68ce4330e09a5d4d273f0667905a8aea64a1c838a\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":17743,"contract":"contracts/registry/BaluniV1DCAVaultRegistry.sol:BaluniV1DCAVaultRegistry","label":"allVaults","offset":0,"slot":"0","type":"t_array(t_address)dyn_storage"},{"astId":17746,"contract":"contracts/registry/BaluniV1DCAVaultRegistry.sol:BaluniV1DCAVaultRegistry","label":"registry","offset":0,"slot":"1","type":"t_contract(IBaluniV1Registry)4909"},{"astId":17752,"contract":"contracts/registry/BaluniV1DCAVaultRegistry.sol:BaluniV1DCAVaultRegistry","label":"getVault","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_address))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_address)dyn_storage":{"base":"t_address","encoding":"dynamic_array","label":"address[]","numberOfBytes":"32"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_address,t_mapping(t_address,t_address))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => address))","numberOfBytes":"32","value":"t_mapping(t_address,t_address)"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/registry/BaluniV1PoolRegistry.sol":{"BaluniV1PoolRegistry":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"pool","type":"address"},{"indexed":false,"internalType":"address[]","name":"assets","type":"address[]"}],"name":"PoolCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddress","type":"address"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPools","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddress","type":"address"}],"name":"getPoolAssets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset1","type":"address"},{"internalType":"address","name":"asset2","type":"address"}],"name":"getPoolByAssets","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPoolsByAsset","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_register","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"poolExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_register","type":"address"},{"internalType":"uint64","name":"_version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"removePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"getAllPools()":{"details":"Retrieves all the pools created by the factory.","returns":{"_0":"An array of pool addresses."}},"getPoolAssets(address)":{"details":"Retrieves the assets of a specific pool.","params":{"poolAddress":"The address of the pool."},"returns":{"_0":"An array of asset addresses."}},"getPoolByAssets(address,address)":{"details":"Retrieves the pool address based on the given assets.","params":{"asset1":"The address of the first asset.","asset2":"The address of the second asset."},"returns":{"_0":"The address of the pool."}},"getPoolsByAsset(address)":{"details":"Returns an array of pool addresses that contain the specified token.","params":{"token":"The address of the token to search for."},"returns":{"_0":"An array of pool addresses."}},"getPoolsCount()":{"details":"Retrieves the number of pools created by the factory.","returns":{"_0":"The count of pools."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":95,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1PoolRegistry":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ContextUpgradeable":{"entryPoint":87,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_OwnableUpgradeable":{"entryPoint":79,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":151,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":141,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":131,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":109,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":106,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b6129496100a48239608051818181612128015281816121ad01526123a8015261294990f35b6043565b60405190565b5f80fd5b604d604f565b565b60556057565b565b605d6097565b565b60018060a01b031690565b90565b607c6078608092605f565b606a565b605f565b90565b608a90606d565b90565b6094906083565b90565b609e30608d565b60805256fe60806040526004361015610013575b610bcb565b61001d5f3561014c565b80632d5e94a7146101475780633b7d09461461014257806341d1de971461013d5780634276b97b146101385780634f1ef2861461013357806352d1902d1461012e578063531aa03e14610129578063715018a6146101245780637b1039991461011f57806389345efb1461011a5780638da5cb5b146101155780638f2248bc14610110578063ad3cb1cc1461010b578063b4340e6a14610106578063b4ac686014610101578063c4d66de8146100fc578063d88ff1f4146100f7578063d914cd4b146100f25763f2fde38b0361000e57610b98565b610b65565b610b30565b610afd565b610ac8565b610a71565b610a3c565b61090c565b61087a565b610845565b6107e9565b61073a565b610704565b61064b565b6105ed565b61046f565b61039b565b610254565b6101fb565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61018690610164565b90565b6101928161017d565b0361019957565b5f80fd5b905035906101aa82610189565b565b91906040838203126101d457806101c86101d1925f860161019d565b9360200161019d565b90565b61015c565b6101e29061017d565b9052565b91906101f9905f602085019401906101d9565b565b3461022c576102286102176102113660046101ac565b90610bf9565b61021f610152565b918291826101e6565b0390f35b610158565b9060208282031261024a57610247915f0161019d565b90565b61015c565b5f0190565b346102825761026c610267366004610231565b6112eb565b610274610152565b8061027e8161024f565b0390f35b610158565b90565b61029381610287565b0361029a57565b5f80fd5b905035906102ab8261028a565b565b906020828203126102c6576102c3915f0161029e565b90565b61015c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5490565b5f5260205f2090565b61030e816102f8565b821015610328576103206001916102fc565b910201905f90565b6102cb565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61035a90600861035f930261032d565b610331565b90565b9061036d915461034a565b90565b5f61037a816102f8565b821015610397576103949161038e91610305565b90610362565b90565b5f80fd5b346103cb576103c76103b66103b13660046102ad565b610370565b6103be610152565b918291826101e6565b0390f35b610158565b5190565b60209181520190565b60200190565b6103ec9061017d565b9052565b906103fd816020936103e3565b0190565b60200190565b9061042461041e610417846103d0565b80936103d4565b926103dd565b905f5b8181106104345750505090565b90919261044d61044760019286516103f0565b94610401565b9101919091610427565b61046c9160208201915f818403910152610407565b90565b3461049f5761049b61048a610485366004610231565b6112fb565b610492610152565b91829182610457565b0390f35b610158565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906104ed906104ac565b810190811067ffffffffffffffff82111761050757604052565b6104b6565b9061051f610518610152565b92836104e3565b565b67ffffffffffffffff811161053f5761053b6020916104ac565b0190565b6104b6565b90825f939282370152565b9092919261056461055f82610521565b61050c565b938185526020850190828401116105805761057e92610544565b565b6104a8565b9080601f830112156105a3578160206105a09335910161054f565b90565b6104a4565b9190916040818403126105e8576105c1835f830161019d565b92602082013567ffffffffffffffff81116105e3576105e09201610585565b90565b610160565b61015c565b6106016105fb3660046105a8565b906113a5565b610609610152565b806106138161024f565b0390f35b5f91031261062157565b61015c565b90565b61063290610626565b9052565b9190610649905f60208501940190610629565b565b3461067b5761065b366004610617565b610677610666611420565b61066e610152565b91829182610636565b0390f35b610158565b90565b61069761069261069c92610164565b610680565b610164565b90565b6106a890610683565b90565b6106b49061069f565b90565b906106c1906106ab565b5f5260205260405f2090565b906106d7906106ab565b5f5260205260405f2090565b6106fc610701926106f76002935f946106b7565b6106cd565b610362565b90565b346107355761073161072061071a3660046101ac565b906106e3565b610728610152565b918291826101e6565b0390f35b610158565b346107685761074a366004610617565b610752611458565b61075a610152565b806107648161024f565b0390f35b610158565b73ffffffffffffffffffffffffffffffffffffffff1690565b61079690600861079b930261032d565b61076d565b90565b906107a99154610786565b90565b6107b860015f9061079e565b90565b6107c49061069f565b90565b6107d0906107bb565b9052565b91906107e7905f602085019401906107c7565b565b34610819576107f9366004610617565b6108156108046107ac565b61080c610152565b918291826107d4565b0390f35b610158565b151590565b61082c9061081e565b9052565b9190610843905f60208501940190610823565b565b346108755761087161086061085b366004610231565b611466565b610868610152565b91829182610830565b0390f35b610158565b346108aa5761088a366004610617565b6108a66108956114e0565b61089d610152565b918291826101e6565b0390f35b610158565b67ffffffffffffffff1690565b6108c5816108af565b036108cc57565b5f80fd5b905035906108dd826108bc565b565b919060408382031261090757806108fb610904925f860161019d565b936020016108d0565b90565b61015c565b3461093b5761092561091f3660046108df565b90611775565b61092d610152565b806109378161024f565b0390f35b610158565b67ffffffffffffffff811161095e5761095a6020916104ac565b0190565b6104b6565b9061097561097083610940565b61050c565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6109ab6005610963565b906109b86020830161097a565b565b6109c26109a1565b90565b6109cd6109ba565b90565b6109d86109c5565b90565b5190565b60209181520190565b90825f9392825e0152565b610a12610a1b602093610a2093610a09816109db565b938480936109df565b958691016109e8565b6104ac565b0190565b610a399160208201915f8184039101526109f3565b90565b34610a6c57610a4c366004610617565b610a68610a576109d0565b610a5f610152565b91829182610a24565b0390f35b610158565b34610aa157610a9d610a8c610a87366004610231565b61180d565b610a94610152565b91829182610457565b0390f35b610158565b610aaf90610287565b9052565b9190610ac6905f60208501940190610aa6565b565b34610af857610ad8366004610617565b610af4610ae3611a2d565b610aeb610152565b91829182610ab3565b0390f35b610158565b34610b2b57610b15610b10366004610231565b611c4b565b610b1d610152565b80610b278161024f565b0390f35b610158565b34610b6057610b40366004610617565b610b5c610b4b611d04565b610b53610152565b91829182610457565b0390f35b610158565b34610b9357610b7d610b78366004610231565b612002565b610b85610152565b80610b8f8161024f565b0390f35b610158565b34610bc657610bb0610bab366004610231565b612092565b610bb8610152565b80610bc28161024f565b0390f35b610158565b5f80fd5b5f90565b5f1c90565b610be4610be991610bd3565b610331565b90565b610bf69054610bd8565b90565b610c1e91610c14610c1992610c0c610bcf565b5060026106b7565b6106cd565b610bec565b90565b610c3290610c2d61209d565b610f98565b565b90565b610c4b610c46610c5092610c34565b610680565b610287565b90565b6001610c5f9101610287565b90565b90565b610c79610c74610c7e92610c62565b610680565b610287565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610cbd610cc391939293610287565b92610287565b8203918211610cce57565b610c81565b1b90565b91906008610d05910291610cff73ffffffffffffffffffffffffffffffffffffffff84610cd3565b92610cd3565b9181191691161790565b90565b9190610d28610d23610d30936106ab565b610d0f565b908354610cd7565b9055565b610d48610d43610d4d92610c34565b610680565b610164565b90565b610d5990610d34565b90565b610d6590610683565b90565b610d7190610d5c565b90565b610d7d9061069f565b90565b60e01b90565b67ffffffffffffffff8111610d9e5760208091020190565b6104b6565b5f80fd5b90505190610db482610189565b565b90929192610dcb610dc682610d86565b61050c565b9381855260208086019202830192818411610e0857915b838310610def5750505050565b60208091610dfd8486610da7565b815201920191610de2565b610da3565b9080601f83011215610e2b57816020610e2893519101610db6565b90565b6104a4565b90602082820312610e60575f82015167ffffffffffffffff8111610e5b57610e589201610e0d565b90565b610160565b61015c565b610e6d610152565b3d5f823e3d90fd5b90610e7f826103d0565b811015610e90576020809102010190565b6102cb565b610e9f905161017d565b90565b5f1b90565b90610ec673ffffffffffffffffffffffffffffffffffffffff91610ea2565b9181191691161790565b90610ee5610ee0610eec926106ab565b610d0f565b8254610ea7565b9055565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5490565b5f5260205f2090565b610f3681610f20565b821015610f5057610f48600191610f24565b910201905f90565b6102cb565b610f6791610f61610bcf565b91610d12565b565b610f7281610f20565b8015610f93576001900390610f90610f8a8383610f2d565b90610f55565b55565b610ef3565b610fa15f610c37565b5b80610fbd610fb7610fb25f6102f8565b610287565b91610287565b10156112e457610fd7610fd15f8390610305565b90610362565b610fe9610fe38461017d565b9161017d565b14610ffc57610ff790610c53565b610fa2565b61103f9061103961103261102c5f6110266110165f6102f8565b6110206001610c65565b90610cae565b90610305565b90610362565b915f610305565b90610d12565b6110485f610d50565b61107560025f61105f61105a86610d68565b610d74565b6367e4ac2c9061106d610152565b948592610d80565b825281806110856004820161024f565b03915afa80156112df576110b16110b6916110bc945f916112bd575b506110ab5f610c37565b90610e75565b610e95565b906106b7565b906110e85f6110d26110cd86610d68565b610d74565b6367e4ac2c906110e0610152565b938492610d80565b825281806110f86004820161024f565b03915afa9283156112b85761112e61112961113995611134945f91611296575b506111236001610c65565b90610e75565b610e95565b906106cd565b610ed0565b6111425f610d50565b600261116f5f61115961115486610d68565b610d74565b6367e4ac2c90611167610152565b938492610d80565b8252818061117f6004820161024f565b03915afa918215611291576111c96111c36111ce926111bd6111b86111e4975f97889161126f575b506111b26001610c65565b90610e75565b610e95565b906106b7565b95610d68565b610d74565b6367e4ac2c906111dc610152565b938492610d80565b825281806111f46004820161024f565b03915afa92831561126a576112296112246112349561122f945f91611248575b5061121e5f610c37565b90610e75565b610e95565b906106cd565b610ed0565b6112456112405f610ef0565b610f69565b5b565b61126491503d805f833e61125c81836104e3565b810190610e30565b5f611214565b610e65565b61128b91503d808a833e61128381836104e3565b810190610e30565b5f6111a7565b610e65565b6112b291503d805f833e6112aa81836104e3565b810190610e30565b5f611118565b610e65565b6112d991503d805f833e6112d181836104e3565b810190610e30565b5f6110a1565b610e65565b5050611246565b6112f490610c21565b565b606090565b5f61131961131461132f9361130e6112f6565b50610d68565b610d74565b6367e4ac2c90611327610152565b938492610d80565b8252818061133f6004820161024f565b03915afa908115611377575f91611355575b5090565b61137191503d805f833e61136981836104e3565b810190610e30565b5f611351565b610e65565b9061138e91611389612117565b611390565b565b906113a39161139e816121e9565b612259565b565b906113af9161137c565b565b5f90565b6113c6906113c1612397565b611414565b90565b90565b6113e06113db6113e5926113c9565b610ea2565b610626565b90565b6114117f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6113cc565b90565b5061141d6113e8565b90565b61143061142b6113b1565b6113b5565b90565b61143b61209d565b611443611445565b565b6114566114515f610d50565b612415565b565b611460611433565b565b5f90565b61146e611462565b506114785f610c37565b5b8061149461148e6114895f6102f8565b610287565b91610287565b10156114da576114ae6114a85f8390610305565b90610362565b6114c06114ba8461017d565b9161017d565b146114d3576114ce90610c53565b611479565b5050600190565b50505f90565b6114e8610bcf565b506114fb5f6114f5612481565b01610bec565b90565b60401c90565b60ff1690565b61151661151b916114fe565b611504565b90565b611528905461150a565b90565b67ffffffffffffffff1690565b61154461154991610bd3565b61152b565b90565b6115569054611538565b90565b9061156c67ffffffffffffffff91610ea2565b9181191691161790565b61158a61158561158f926108af565b610680565b6108af565b90565b90565b906115aa6115a56115b192611576565b611592565b8254611559565b9055565b60401b90565b906115cf68ff0000000000000000916115b5565b9181191691161790565b6115e29061081e565b90565b90565b906115fd6115f8611604926115d9565b6115e5565b82546115bb565b9055565b611611906108af565b9052565b9190611628905f60208501940190611608565b565b9080916116356124a5565b906116415f830161151e565b80156116f2575b6116b65761167b9261167291611660865f8601611595565b61166d60015f86016115e8565b61175e565b5f8091016115e8565b6116b17fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916116a8610152565b91829182611615565b0390a1565b6116be610152565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806116ee6004820161024f565b0390fd5b506116fe5f830161154c565b61171061170a866108af565b916108af565b1015611648565b61172090610683565b90565b61172c90611717565b90565b61173890611717565b90565b90565b9061175361174e61175a9261172f565b61173b565b8254610ea7565b9055565b611773915061176c90611723565b600161173e565b565b9061177f9161162a565b565b9061179361178e83610d86565b61050c565b918252565b369037565b906117c26117aa83611781565b926020806117b88693610d86565b9201910390611798565b565b906117ce9061017d565b9052565b6117db90610287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118085760010190565b610c81565b6118156112f6565b506118276118225f6102f8565b61179d565b916118315f610c37565b9061183b5f610c37565b915b8261185861185261184d5f6102f8565b610287565b91610287565b1015611a1f5761187a61187561186f5f8690610305565b90610362565b610d68565b61189d5f61188783610d74565b6367e4ac2c90611895610152565b938492610d80565b825281806118ad6004820161024f565b03915afa908115611a1a575f916119f8575b50946118ca5f610c37565b5b806118e66118e06118db8a6103d0565b610287565b91610287565b10156119ee576118ff6118fa888390610e75565b610e95565b61191161190b8461017d565b9161017d565b146119245761191f90610c53565b6118cb565b5094509061194961193761194e93610d74565b6119448891849092610e75565b6117c4565b6117d2565b915b8261196b611965611960886103d0565b610287565b91610287565b1461197f5761197990610c53565b9161183d565b509150915b61198d8361179d565b916119975f610c37565b5b806119ab6119a587610287565b91610287565b10156119e7576119e2906119dd6119cb6119c6868490610e75565b610e95565b6119d88791849092610e75565b6117c4565b610c53565b611998565b5092505090565b5094505091611950565b611a1491503d805f833e611a0c81836104e3565b810190610e30565b5f6118bf565b610e65565b9391509150611984565b5f90565b611a35611a29565b50611a3f5f6102f8565b90565b611a56611a51611a5b92610c34565b610680565b6108af565b90565b611a72611a6d611a7792610c62565b610680565b6108af565b90565b611a839061069f565b90565b611a8f90611a5e565b9052565b9190611aa6905f60208501940190611a86565b565b611ab06124a5565b90611ac5611abf5f840161151e565b1561081e565b90611ad15f840161154c565b80611ae4611ade5f611a42565b916108af565b1480611c1e575b90611aff611af96001611a5e565b916108af565b1480611bf6575b611b1190911561081e565b9081611be5575b50611ba957611b4190611b36611b2e6001611a5e565b5f8601611595565b82611b97575b611c25565b611b49575b50565b611b56905f8091016115e8565b6001611b8e7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611b85610152565b91829182611a93565b0390a15f611b46565b611ba460015f86016115e8565b611b3c565b611bb1610152565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280611be16004820161024f565b0390fd5b611bf091501561081e565b5f611b18565b50611b11611c0330611a7a565b3b611c16611c105f610c37565b91610287565b149050611b06565b5082611aeb565b611c42611c4991611c346124d3565b611c3d336124fb565b611723565b600161173e565b565b611c5490611aa8565b565b60209181520190565b611c699054610bd8565b90565b60010190565b90611c8f611c89611c82846102f8565b8093611c56565b926102fc565b905f5b818110611c9f5750505090565b909192611cbf611cb9600192611cb487611c5f565b6103f0565b94611c6c565b9101919091611c92565b90611cd391611c72565b90565b90611cf6611cef92611ce6610152565b93848092611cc9565b03836104e3565b565b611d0190611cd6565b90565b611d0c6112f6565b50611d165f611cf8565b90565b611d2a90611d2561209d565b611e48565b565b60207f4c5f414444524553530000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c466163746f72793a20494e56414c49445f504f4f5f8201520152565b611d8660296040926109df565b611d8f81611d2c565b0190565b611da89060208101905f818303910152611d79565b90565b15611db257565b611dba610152565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611dea60048201611d93565b0390fd5b9081549168010000000000000000831015611e1e5782611e16916001611e1c95018155610f2d565b90610d12565b565b6104b6565b611e32611e3891939293610287565b92610287565b8201809211611e4357565b610c81565b611e6d81611e66611e60611e5b5f610d50565b61017d565b9161017d565b1415611dab565b611e80611e795f610ef0565b8290611dee565b611eab5f611e95611e9084610d68565b610d74565b6367e4ac2c90611ea3610152565b938492610d80565b82528180611ebb6004820161024f565b03915afa908115611ffd575f91611fdb575b50611ed75f610c37565b925b83611ef4611eee611ee9856103d0565b610287565b91610287565b1015611fd557611f0e84611f086001610c65565b90611e23565b5b80611f2a611f24611f1f866103d0565b610287565b91610287565b1015611fc457611fbf90611f7785611f72611f596002611f53611f4e8a8d90610e75565b610e95565b906106b7565b611f6c611f67898790610e75565b610e95565b906106cd565b610ed0565b611fba85611fb5611f9c6002611f96611f918a8890610e75565b610e95565b906106b7565b611faf611faa898c90610e75565b610e95565b906106cd565b610ed0565b610c53565b611f0f565b5092611fcf90610c53565b92611ed9565b92505050565b611ff791503d805f833e611fef81836104e3565b810190610e30565b5f611ecd565b610e65565b61200b90611d19565b565b61201e9061201961209d565b612020565b565b8061203b6120356120305f610d50565b61017d565b9161017d565b1461204b5761204990612415565b565b61208e6120575f610d50565b61205f610152565b9182917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b61209b9061200d565b565b6120a56114e0565b6120be6120b86120b3612506565b61017d565b9161017d565b036120c557565b6121076120d0612506565b6120d8610152565b9182917f118cdaa7000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b6121149061069f565b90565b6121203061210b565b61215261214c7f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b14801561219c575b61216057565b612168610152565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806121986004820161024f565b0390fd5b506121a5612513565b6121d76121d17f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b141561215a565b506121e761209d565b565b6121f2906121de565b565b6121fd90610683565b90565b612209906121f4565b90565b6122159061069f565b90565b61222181610626565b0361222857565b5f80fd5b9050519061223982612218565b565b9060208282031261225457612251915f0161222c565b90565b61015c565b9190612287602061227161226c86612200565b61220c565b6352d1902d9061227f610152565b938492610d80565b825281806122976004820161024f565b03915afa80915f92612367575b50155f146122f85750509060016122b957505b565b6122f4906122c5610152565b9182917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b928361231361230d6123086113e8565b610626565b91610626565b036123285761232392935061253d565b6122b7565b61236384612334610152565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610636565b0390fd5b61238991925060203d8111612390575b61238181836104e3565b81019061223b565b905f6122a4565b503d612377565b6123a03061210b565b6123d26123cc7f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b036123d957565b6123e1610152565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806124116004820161024f565b0390fd5b61241d612481565b61243561242b5f8301610bec565b915f849101610ed0565b906124696124637f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936106ab565b916106ab565b91612472610152565b8061247c8161024f565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6124d16125c6565b565b6124db6124c9565b565b6124ee906124e96125c6565b6124f0565b565b6124f99061269e565b565b612504906124dd565b565b61250e610bcf565b503390565b61251b610bcf565b506125365f61253061252b6113e8565b6126a9565b01610bec565b90565b5190565b90612547826126ac565b816125727fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916106ab565b9061257b610152565b806125858161024f565b0390a261259181612539565b6125a361259d5f610c37565b91610287565b115f146125b7576125b3916127bc565b505b565b50506125c1612721565b6125b5565b6125d76125d16127eb565b1561081e565b6125dd57565b6125e5610152565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000008152806126156004820161024f565b0390fd5b61262a906126256125c6565b61262c565b565b8061264761264161263c5f610d50565b61017d565b9161017d565b146126575761265590612415565b565b61269a6126635f610d50565b61266b610152565b9182917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b6126a790612619565b565b90565b803b6126c06126ba5f610c37565b91610287565b146126e2576126e0905f6126da6126d56113e8565b6126a9565b01610ed0565b565b61271d906126ee610152565b9182917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b3461273461272e5f610c37565b91610287565b1161273b57565b612743610152565b7fb398979f000000000000000000000000000000000000000000000000000000008152806127736004820161024f565b0390fd5b606090565b9061278e61278983610521565b61050c565b918252565b3d5f146127ae576127a33d61277c565b903d5f602084013e5b565b6127b6612777565b906127ac565b5f806127e8936127ca612777565b508390602081019051915af4906127df612793565b90919091612809565b90565b6127f3611462565b506128065f6128006124a5565b0161151e565b90565b9061281d90612816612777565b501561081e565b5f1461282957506128ad565b61283282612539565b61284461283e5f610c37565b91610287565b1480612892575b612853575090565b61288e9061285f610152565b9182917f9996b315000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b50803b6128a76128a15f610c37565b91610287565b1461284b565b6128b681612539565b6128c86128c25f610c37565b91610287565b115f146128d757805190602001fd5b6128df610152565b7f1425ea420000000000000000000000000000000000000000000000000000000081528061290f6004820161024f565b0390fdfea26469706673582212203ca55f136c411b847392e5b4891ad86c84c5ae909920653a8811713e4133db6064736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x2949 PUSH2 0xA4 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2128 ADD MSTORE DUP2 DUP2 PUSH2 0x21AD ADD MSTORE PUSH2 0x23A8 ADD MSTORE PUSH2 0x2949 SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x55 PUSH1 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x5D PUSH1 0x97 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7C PUSH1 0x78 PUSH1 0x80 SWAP3 PUSH1 0x5F JUMP JUMPDEST PUSH1 0x6A JUMP JUMPDEST PUSH1 0x5F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8A SWAP1 PUSH1 0x6D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x94 SWAP1 PUSH1 0x83 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x9E ADDRESS PUSH1 0x8D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xBCB JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x14C JUMP JUMPDEST DUP1 PUSH4 0x2D5E94A7 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x3B7D0946 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x41D1DE97 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x4276B97B EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x531AA03E EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x89345EFB EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xB4340E6A EQ PUSH2 0x106 JUMPI DUP1 PUSH4 0xB4AC6860 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0xD88FF1F4 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xD914CD4B EQ PUSH2 0xF2 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xB98 JUMP JUMPDEST PUSH2 0xB65 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xAFD JUMP JUMPDEST PUSH2 0xAC8 JUMP JUMPDEST PUSH2 0xA71 JUMP JUMPDEST PUSH2 0xA3C JUMP JUMPDEST PUSH2 0x90C JUMP JUMPDEST PUSH2 0x87A JUMP JUMPDEST PUSH2 0x845 JUMP JUMPDEST PUSH2 0x7E9 JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0x704 JUMP JUMPDEST PUSH2 0x64B JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST PUSH2 0x39B JUMP JUMPDEST PUSH2 0x254 JUMP JUMPDEST PUSH2 0x1FB JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x186 SWAP1 PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x192 DUP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x199 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1AA DUP3 PUSH2 0x189 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x1D4 JUMPI DUP1 PUSH2 0x1C8 PUSH2 0x1D1 SWAP3 PUSH0 DUP7 ADD PUSH2 0x19D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0x1E2 SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1F9 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1D9 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x22C JUMPI PUSH2 0x228 PUSH2 0x217 PUSH2 0x211 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST SWAP1 PUSH2 0xBF9 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x24A JUMPI PUSH2 0x247 SWAP2 PUSH0 ADD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x282 JUMPI PUSH2 0x26C PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x12EB JUMP JUMPDEST PUSH2 0x274 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x27E DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x293 DUP2 PUSH2 0x287 JUMP JUMPDEST SUB PUSH2 0x29A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x2AB DUP3 PUSH2 0x28A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2C6 JUMPI PUSH2 0x2C3 SWAP2 PUSH0 ADD PUSH2 0x29E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x30E DUP2 PUSH2 0x2F8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x328 JUMPI PUSH2 0x320 PUSH1 0x1 SWAP2 PUSH2 0x2FC JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2CB JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x35A SWAP1 PUSH1 0x8 PUSH2 0x35F SWAP4 MUL PUSH2 0x32D JUMP JUMPDEST PUSH2 0x331 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x36D SWAP2 SLOAD PUSH2 0x34A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x37A DUP2 PUSH2 0x2F8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x397 JUMPI PUSH2 0x394 SWAP2 PUSH2 0x38E SWAP2 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x3CB JUMPI PUSH2 0x3C7 PUSH2 0x3B6 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x370 JUMP JUMPDEST PUSH2 0x3BE PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x3EC SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x3FD DUP2 PUSH1 0x20 SWAP4 PUSH2 0x3E3 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x424 PUSH2 0x41E PUSH2 0x417 DUP5 PUSH2 0x3D0 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x3D4 JUMP JUMPDEST SWAP3 PUSH2 0x3DD JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x434 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x44D PUSH2 0x447 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x3F0 JUMP JUMPDEST SWAP5 PUSH2 0x401 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x427 JUMP JUMPDEST PUSH2 0x46C SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x407 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x49F JUMPI PUSH2 0x49B PUSH2 0x48A PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x12FB JUMP JUMPDEST PUSH2 0x492 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x457 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x4ED SWAP1 PUSH2 0x4AC JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x507 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST SWAP1 PUSH2 0x51F PUSH2 0x518 PUSH2 0x152 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x4E3 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x53F JUMPI PUSH2 0x53B PUSH1 0x20 SWAP2 PUSH2 0x4AC JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x564 PUSH2 0x55F DUP3 PUSH2 0x521 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x580 JUMPI PUSH2 0x57E SWAP3 PUSH2 0x544 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4A8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x5A3 JUMPI DUP2 PUSH1 0x20 PUSH2 0x5A0 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x54F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x5E8 JUMPI PUSH2 0x5C1 DUP4 PUSH0 DUP4 ADD PUSH2 0x19D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x5E3 JUMPI PUSH2 0x5E0 SWAP3 ADD PUSH2 0x585 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x160 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0x601 PUSH2 0x5FB CALLDATASIZE PUSH1 0x4 PUSH2 0x5A8 JUMP JUMPDEST SWAP1 PUSH2 0x13A5 JUMP JUMPDEST PUSH2 0x609 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x613 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x621 JUMPI JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x632 SWAP1 PUSH2 0x626 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x649 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x629 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x67B JUMPI PUSH2 0x65B CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x677 PUSH2 0x666 PUSH2 0x1420 JUMP JUMPDEST PUSH2 0x66E PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x636 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x697 PUSH2 0x692 PUSH2 0x69C SWAP3 PUSH2 0x164 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A8 SWAP1 PUSH2 0x683 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6B4 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6C1 SWAP1 PUSH2 0x6AB JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6D7 SWAP1 PUSH2 0x6AB JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x701 SWAP3 PUSH2 0x6F7 PUSH1 0x2 SWAP4 PUSH0 SWAP5 PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x735 JUMPI PUSH2 0x731 PUSH2 0x720 PUSH2 0x71A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST SWAP1 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x728 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x768 JUMPI PUSH2 0x74A CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x752 PUSH2 0x1458 JUMP JUMPDEST PUSH2 0x75A PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x764 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x796 SWAP1 PUSH1 0x8 PUSH2 0x79B SWAP4 MUL PUSH2 0x32D JUMP JUMPDEST PUSH2 0x76D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7A9 SWAP2 SLOAD PUSH2 0x786 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7B8 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x79E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C4 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7D0 SWAP1 PUSH2 0x7BB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x7E7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7C7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x819 JUMPI PUSH2 0x7F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x815 PUSH2 0x804 PUSH2 0x7AC JUMP JUMPDEST PUSH2 0x80C PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7D4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x82C SWAP1 PUSH2 0x81E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x843 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x823 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x875 JUMPI PUSH2 0x871 PUSH2 0x860 PUSH2 0x85B CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x1466 JUMP JUMPDEST PUSH2 0x868 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x830 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x8AA JUMPI PUSH2 0x88A CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x8A6 PUSH2 0x895 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x89D PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x8C5 DUP2 PUSH2 0x8AF JUMP JUMPDEST SUB PUSH2 0x8CC JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x8DD DUP3 PUSH2 0x8BC JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x907 JUMPI DUP1 PUSH2 0x8FB PUSH2 0x904 SWAP3 PUSH0 DUP7 ADD PUSH2 0x19D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x8D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST CALLVALUE PUSH2 0x93B JUMPI PUSH2 0x925 PUSH2 0x91F CALLDATASIZE PUSH1 0x4 PUSH2 0x8DF JUMP JUMPDEST SWAP1 PUSH2 0x1775 JUMP JUMPDEST PUSH2 0x92D PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x937 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x95E JUMPI PUSH2 0x95A PUSH1 0x20 SWAP2 PUSH2 0x4AC JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST SWAP1 PUSH2 0x975 PUSH2 0x970 DUP4 PUSH2 0x940 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x9AB PUSH1 0x5 PUSH2 0x963 JUMP JUMPDEST SWAP1 PUSH2 0x9B8 PUSH1 0x20 DUP4 ADD PUSH2 0x97A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9C2 PUSH2 0x9A1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9CD PUSH2 0x9BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9D8 PUSH2 0x9C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0xA12 PUSH2 0xA1B PUSH1 0x20 SWAP4 PUSH2 0xA20 SWAP4 PUSH2 0xA09 DUP2 PUSH2 0x9DB JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x9DF JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x9E8 JUMP JUMPDEST PUSH2 0x4AC JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xA39 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x9F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA6C JUMPI PUSH2 0xA4C CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0xA68 PUSH2 0xA57 PUSH2 0x9D0 JUMP JUMPDEST PUSH2 0xA5F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA24 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xAA1 JUMPI PUSH2 0xA9D PUSH2 0xA8C PUSH2 0xA87 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x180D JUMP JUMPDEST PUSH2 0xA94 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x457 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH2 0xAAF SWAP1 PUSH2 0x287 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAC6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xAA6 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xAF8 JUMPI PUSH2 0xAD8 CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0xAF4 PUSH2 0xAE3 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0xAEB PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xAB3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB2B JUMPI PUSH2 0xB15 PUSH2 0xB10 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x1C4B JUMP JUMPDEST PUSH2 0xB1D PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xB27 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB60 JUMPI PUSH2 0xB40 CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0xB5C PUSH2 0xB4B PUSH2 0x1D04 JUMP JUMPDEST PUSH2 0xB53 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x457 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB93 JUMPI PUSH2 0xB7D PUSH2 0xB78 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x2002 JUMP JUMPDEST PUSH2 0xB85 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xB8F DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xBC6 JUMPI PUSH2 0xBB0 PUSH2 0xBAB CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x2092 JUMP JUMPDEST PUSH2 0xBB8 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xBC2 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0xBE4 PUSH2 0xBE9 SWAP2 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x331 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBF6 SWAP1 SLOAD PUSH2 0xBD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC1E SWAP2 PUSH2 0xC14 PUSH2 0xC19 SWAP3 PUSH2 0xC0C PUSH2 0xBCF JUMP JUMPDEST POP PUSH1 0x2 PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xBEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC32 SWAP1 PUSH2 0xC2D PUSH2 0x209D JUMP JUMPDEST PUSH2 0xF98 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH2 0xC46 PUSH2 0xC50 SWAP3 PUSH2 0xC34 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC5F SWAP2 ADD PUSH2 0x287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC79 PUSH2 0xC74 PUSH2 0xC7E SWAP3 PUSH2 0xC62 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xCBD PUSH2 0xCC3 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x287 JUMP JUMPDEST SWAP3 PUSH2 0x287 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0xCCE JUMPI JUMP JUMPDEST PUSH2 0xC81 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0xD05 SWAP2 MUL SWAP2 PUSH2 0xCFF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0xCD3 JUMP JUMPDEST SWAP3 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xD28 PUSH2 0xD23 PUSH2 0xD30 SWAP4 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0xD0F JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0xCD7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD48 PUSH2 0xD43 PUSH2 0xD4D SWAP3 PUSH2 0xC34 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD59 SWAP1 PUSH2 0xD34 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD65 SWAP1 PUSH2 0x683 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD71 SWAP1 PUSH2 0xD5C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD7D SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD9E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xDB4 DUP3 PUSH2 0x189 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xDCB PUSH2 0xDC6 DUP3 PUSH2 0xD86 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0xE08 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0xDEF JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0xDFD DUP5 DUP7 PUSH2 0xDA7 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0xDE2 JUMP JUMPDEST PUSH2 0xDA3 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xE2B JUMPI DUP2 PUSH1 0x20 PUSH2 0xE28 SWAP4 MLOAD SWAP2 ADD PUSH2 0xDB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A4 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xE60 JUMPI PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE5B JUMPI PUSH2 0xE58 SWAP3 ADD PUSH2 0xE0D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x160 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0xE6D PUSH2 0x152 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xE7F DUP3 PUSH2 0x3D0 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xE90 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x2CB JUMP JUMPDEST PUSH2 0xE9F SWAP1 MLOAD PUSH2 0x17D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xEC6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xEA2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xEE5 PUSH2 0xEE0 PUSH2 0xEEC SWAP3 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0xD0F JUMP JUMPDEST DUP3 SLOAD PUSH2 0xEA7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xF36 DUP2 PUSH2 0xF20 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xF50 JUMPI PUSH2 0xF48 PUSH1 0x1 SWAP2 PUSH2 0xF24 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2CB JUMP JUMPDEST PUSH2 0xF67 SWAP2 PUSH2 0xF61 PUSH2 0xBCF JUMP JUMPDEST SWAP2 PUSH2 0xD12 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF72 DUP2 PUSH2 0xF20 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF93 JUMPI PUSH1 0x1 SWAP1 SUB SWAP1 PUSH2 0xF90 PUSH2 0xF8A DUP4 DUP4 PUSH2 0xF2D JUMP JUMPDEST SWAP1 PUSH2 0xF55 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0xEF3 JUMP JUMPDEST PUSH2 0xFA1 PUSH0 PUSH2 0xC37 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFBD PUSH2 0xFB7 PUSH2 0xFB2 PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x12E4 JUMPI PUSH2 0xFD7 PUSH2 0xFD1 PUSH0 DUP4 SWAP1 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST PUSH2 0xFE9 PUSH2 0xFE3 DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0xFFC JUMPI PUSH2 0xFF7 SWAP1 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0x103F SWAP1 PUSH2 0x1039 PUSH2 0x1032 PUSH2 0x102C PUSH0 PUSH2 0x1026 PUSH2 0x1016 PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x1020 PUSH1 0x1 PUSH2 0xC65 JUMP JUMPDEST SWAP1 PUSH2 0xCAE JUMP JUMPDEST SWAP1 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0xD12 JUMP JUMPDEST PUSH2 0x1048 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x1075 PUSH1 0x2 PUSH0 PUSH2 0x105F PUSH2 0x105A DUP7 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x106D PUSH2 0x152 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1085 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x12DF JUMPI PUSH2 0x10B1 PUSH2 0x10B6 SWAP2 PUSH2 0x10BC SWAP5 PUSH0 SWAP2 PUSH2 0x12BD JUMPI JUMPDEST POP PUSH2 0x10AB PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 JUMP JUMPDEST SWAP1 PUSH2 0x10E8 PUSH0 PUSH2 0x10D2 PUSH2 0x10CD DUP7 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x10E0 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x10F8 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x12B8 JUMPI PUSH2 0x112E PUSH2 0x1129 PUSH2 0x1139 SWAP6 PUSH2 0x1134 SWAP5 PUSH0 SWAP2 PUSH2 0x1296 JUMPI JUMPDEST POP PUSH2 0x1123 PUSH1 0x1 PUSH2 0xC65 JUMP JUMPDEST SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0x1142 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x116F PUSH0 PUSH2 0x1159 PUSH2 0x1154 DUP7 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1167 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x117F PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1291 JUMPI PUSH2 0x11C9 PUSH2 0x11C3 PUSH2 0x11CE SWAP3 PUSH2 0x11BD PUSH2 0x11B8 PUSH2 0x11E4 SWAP8 PUSH0 SWAP8 DUP9 SWAP2 PUSH2 0x126F JUMPI JUMPDEST POP PUSH2 0x11B2 PUSH1 0x1 PUSH2 0xC65 JUMP JUMPDEST SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 JUMP JUMPDEST SWAP6 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x11DC PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x11F4 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x126A JUMPI PUSH2 0x1229 PUSH2 0x1224 PUSH2 0x1234 SWAP6 PUSH2 0x122F SWAP5 PUSH0 SWAP2 PUSH2 0x1248 JUMPI JUMPDEST POP PUSH2 0x121E PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0x1245 PUSH2 0x1240 PUSH0 PUSH2 0xEF0 JUMP JUMPDEST PUSH2 0xF69 JUMP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH2 0x1264 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x125C DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x1214 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST PUSH2 0x128B SWAP2 POP RETURNDATASIZE DUP1 DUP11 DUP4 RETURNDATACOPY PUSH2 0x1283 DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x11A7 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST PUSH2 0x12B2 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x12AA DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x1118 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST PUSH2 0x12D9 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x12D1 DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST POP POP PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x12F4 SWAP1 PUSH2 0xC21 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1319 PUSH2 0x1314 PUSH2 0x132F SWAP4 PUSH2 0x130E PUSH2 0x12F6 JUMP JUMPDEST POP PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1327 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x133F PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1377 JUMPI PUSH0 SWAP2 PUSH2 0x1355 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1371 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1369 DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST SWAP1 PUSH2 0x138E SWAP2 PUSH2 0x1389 PUSH2 0x2117 JUMP JUMPDEST PUSH2 0x1390 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x13A3 SWAP2 PUSH2 0x139E DUP2 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x2259 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x13AF SWAP2 PUSH2 0x137C JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x13C6 SWAP1 PUSH2 0x13C1 PUSH2 0x2397 JUMP JUMPDEST PUSH2 0x1414 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13E0 PUSH2 0x13DB PUSH2 0x13E5 SWAP3 PUSH2 0x13C9 JUMP JUMPDEST PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x626 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1411 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x13CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x141D PUSH2 0x13E8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1430 PUSH2 0x142B PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x13B5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x143B PUSH2 0x209D JUMP JUMPDEST PUSH2 0x1443 PUSH2 0x1445 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1456 PUSH2 0x1451 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x2415 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1460 PUSH2 0x1433 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x146E PUSH2 0x1462 JUMP JUMPDEST POP PUSH2 0x1478 PUSH0 PUSH2 0xC37 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1494 PUSH2 0x148E PUSH2 0x1489 PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x14DA JUMPI PUSH2 0x14AE PUSH2 0x14A8 PUSH0 DUP4 SWAP1 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST PUSH2 0x14C0 PUSH2 0x14BA DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x14D3 JUMPI PUSH2 0x14CE SWAP1 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x1479 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x14E8 PUSH2 0xBCF JUMP JUMPDEST POP PUSH2 0x14FB PUSH0 PUSH2 0x14F5 PUSH2 0x2481 JUMP JUMPDEST ADD PUSH2 0xBEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1516 PUSH2 0x151B SWAP2 PUSH2 0x14FE JUMP JUMPDEST PUSH2 0x1504 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1528 SWAP1 SLOAD PUSH2 0x150A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1544 PUSH2 0x1549 SWAP2 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x152B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1556 SWAP1 SLOAD PUSH2 0x1538 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x156C PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xEA2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x158A PUSH2 0x1585 PUSH2 0x158F SWAP3 PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x8AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15AA PUSH2 0x15A5 PUSH2 0x15B1 SWAP3 PUSH2 0x1576 JUMP JUMPDEST PUSH2 0x1592 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1559 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15CF PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x15B5 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x15E2 SWAP1 PUSH2 0x81E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15FD PUSH2 0x15F8 PUSH2 0x1604 SWAP3 PUSH2 0x15D9 JUMP JUMPDEST PUSH2 0x15E5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15BB JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1611 SWAP1 PUSH2 0x8AF JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1628 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1608 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x1635 PUSH2 0x24A5 JUMP JUMPDEST SWAP1 PUSH2 0x1641 PUSH0 DUP4 ADD PUSH2 0x151E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16F2 JUMPI JUMPDEST PUSH2 0x16B6 JUMPI PUSH2 0x167B SWAP3 PUSH2 0x1672 SWAP2 PUSH2 0x1660 DUP7 PUSH0 DUP7 ADD PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x166D PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x175E JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x16B1 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x16A8 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1615 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x16BE PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x16EE PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x16FE PUSH0 DUP4 ADD PUSH2 0x154C JUMP JUMPDEST PUSH2 0x1710 PUSH2 0x170A DUP7 PUSH2 0x8AF JUMP JUMPDEST SWAP2 PUSH2 0x8AF JUMP JUMPDEST LT ISZERO PUSH2 0x1648 JUMP JUMPDEST PUSH2 0x1720 SWAP1 PUSH2 0x683 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x172C SWAP1 PUSH2 0x1717 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1738 SWAP1 PUSH2 0x1717 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1753 PUSH2 0x174E PUSH2 0x175A SWAP3 PUSH2 0x172F JUMP JUMPDEST PUSH2 0x173B JUMP JUMPDEST DUP3 SLOAD PUSH2 0xEA7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1773 SWAP2 POP PUSH2 0x176C SWAP1 PUSH2 0x1723 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x173E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x177F SWAP2 PUSH2 0x162A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1793 PUSH2 0x178E DUP4 PUSH2 0xD86 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x17C2 PUSH2 0x17AA DUP4 PUSH2 0x1781 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x17B8 DUP7 SWAP4 PUSH2 0xD86 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x1798 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x17CE SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x17DB SWAP1 PUSH2 0x287 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1808 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0xC81 JUMP JUMPDEST PUSH2 0x1815 PUSH2 0x12F6 JUMP JUMPDEST POP PUSH2 0x1827 PUSH2 0x1822 PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x179D JUMP JUMPDEST SWAP2 PUSH2 0x1831 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP1 PUSH2 0x183B PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x1858 PUSH2 0x1852 PUSH2 0x184D PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x1A1F JUMPI PUSH2 0x187A PUSH2 0x1875 PUSH2 0x186F PUSH0 DUP7 SWAP1 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST PUSH2 0xD68 JUMP JUMPDEST PUSH2 0x189D PUSH0 PUSH2 0x1887 DUP4 PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1895 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x18AD PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1A1A JUMPI PUSH0 SWAP2 PUSH2 0x19F8 JUMPI JUMPDEST POP SWAP5 PUSH2 0x18CA PUSH0 PUSH2 0xC37 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x18E6 PUSH2 0x18E0 PUSH2 0x18DB DUP11 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x19EE JUMPI PUSH2 0x18FF PUSH2 0x18FA DUP9 DUP4 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST PUSH2 0x1911 PUSH2 0x190B DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x1924 JUMPI PUSH2 0x191F SWAP1 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x18CB JUMP JUMPDEST POP SWAP5 POP SWAP1 PUSH2 0x1949 PUSH2 0x1937 PUSH2 0x194E SWAP4 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x1944 DUP9 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0x17C4 JUMP JUMPDEST PUSH2 0x17D2 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x196B PUSH2 0x1965 PUSH2 0x1960 DUP9 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ PUSH2 0x197F JUMPI PUSH2 0x1979 SWAP1 PUSH2 0xC53 JUMP JUMPDEST SWAP2 PUSH2 0x183D JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMPDEST PUSH2 0x198D DUP4 PUSH2 0x179D JUMP JUMPDEST SWAP2 PUSH2 0x1997 PUSH0 PUSH2 0xC37 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x19AB PUSH2 0x19A5 DUP8 PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x19E7 JUMPI PUSH2 0x19E2 SWAP1 PUSH2 0x19DD PUSH2 0x19CB PUSH2 0x19C6 DUP7 DUP5 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST PUSH2 0x19D8 DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0x17C4 JUMP JUMPDEST PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x1998 JUMP JUMPDEST POP SWAP3 POP POP SWAP1 JUMP JUMPDEST POP SWAP5 POP POP SWAP2 PUSH2 0x1950 JUMP JUMPDEST PUSH2 0x1A14 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1A0C DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x18BF JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 POP PUSH2 0x1984 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1A35 PUSH2 0x1A29 JUMP JUMPDEST POP PUSH2 0x1A3F PUSH0 PUSH2 0x2F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A56 PUSH2 0x1A51 PUSH2 0x1A5B SWAP3 PUSH2 0xC34 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x8AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A72 PUSH2 0x1A6D PUSH2 0x1A77 SWAP3 PUSH2 0xC62 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x8AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A83 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A8F SWAP1 PUSH2 0x1A5E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1AA6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1A86 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1AB0 PUSH2 0x24A5 JUMP JUMPDEST SWAP1 PUSH2 0x1AC5 PUSH2 0x1ABF PUSH0 DUP5 ADD PUSH2 0x151E JUMP JUMPDEST ISZERO PUSH2 0x81E JUMP JUMPDEST SWAP1 PUSH2 0x1AD1 PUSH0 DUP5 ADD PUSH2 0x154C JUMP JUMPDEST DUP1 PUSH2 0x1AE4 PUSH2 0x1ADE PUSH0 PUSH2 0x1A42 JUMP JUMPDEST SWAP2 PUSH2 0x8AF JUMP JUMPDEST EQ DUP1 PUSH2 0x1C1E JUMPI JUMPDEST SWAP1 PUSH2 0x1AFF PUSH2 0x1AF9 PUSH1 0x1 PUSH2 0x1A5E JUMP JUMPDEST SWAP2 PUSH2 0x8AF JUMP JUMPDEST EQ DUP1 PUSH2 0x1BF6 JUMPI JUMPDEST PUSH2 0x1B11 SWAP1 SWAP2 ISZERO PUSH2 0x81E JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1BE5 JUMPI JUMPDEST POP PUSH2 0x1BA9 JUMPI PUSH2 0x1B41 SWAP1 PUSH2 0x1B36 PUSH2 0x1B2E PUSH1 0x1 PUSH2 0x1A5E JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x1595 JUMP JUMPDEST DUP3 PUSH2 0x1B97 JUMPI JUMPDEST PUSH2 0x1C25 JUMP JUMPDEST PUSH2 0x1B49 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1B56 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x15E8 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1B8E PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1B85 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1A93 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1B46 JUMP JUMPDEST PUSH2 0x1BA4 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1B3C JUMP JUMPDEST PUSH2 0x1BB1 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1BE1 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BF0 SWAP2 POP ISZERO PUSH2 0x81E JUMP JUMPDEST PUSH0 PUSH2 0x1B18 JUMP JUMPDEST POP PUSH2 0x1B11 PUSH2 0x1C03 ADDRESS PUSH2 0x1A7A JUMP JUMPDEST EXTCODESIZE PUSH2 0x1C16 PUSH2 0x1C10 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x1B06 JUMP JUMPDEST POP DUP3 PUSH2 0x1AEB JUMP JUMPDEST PUSH2 0x1C42 PUSH2 0x1C49 SWAP2 PUSH2 0x1C34 PUSH2 0x24D3 JUMP JUMPDEST PUSH2 0x1C3D CALLER PUSH2 0x24FB JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x173E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C54 SWAP1 PUSH2 0x1AA8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C69 SWAP1 SLOAD PUSH2 0xBD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1C8F PUSH2 0x1C89 PUSH2 0x1C82 DUP5 PUSH2 0x2F8 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x1C56 JUMP JUMPDEST SWAP3 PUSH2 0x2FC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1C9F JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x1CBF PUSH2 0x1CB9 PUSH1 0x1 SWAP3 PUSH2 0x1CB4 DUP8 PUSH2 0x1C5F JUMP JUMPDEST PUSH2 0x3F0 JUMP JUMPDEST SWAP5 PUSH2 0x1C6C JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x1C92 JUMP JUMPDEST SWAP1 PUSH2 0x1CD3 SWAP2 PUSH2 0x1C72 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1CF6 PUSH2 0x1CEF SWAP3 PUSH2 0x1CE6 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x1CC9 JUMP JUMPDEST SUB DUP4 PUSH2 0x4E3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1D01 SWAP1 PUSH2 0x1CD6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D0C PUSH2 0x12F6 JUMP JUMPDEST POP PUSH2 0x1D16 PUSH0 PUSH2 0x1CF8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D2A SWAP1 PUSH2 0x1D25 PUSH2 0x209D JUMP JUMPDEST PUSH2 0x1E48 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x4C5F414444524553530000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C466163746F72793A20494E56414C49445F504F4F PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1D86 PUSH1 0x29 PUSH1 0x40 SWAP3 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x1D8F DUP2 PUSH2 0x1D2C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1DA8 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1D79 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1DB2 JUMPI JUMP JUMPDEST PUSH2 0x1DBA PUSH2 0x152 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1DEA PUSH1 0x4 DUP3 ADD PUSH2 0x1D93 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x1E1E JUMPI DUP3 PUSH2 0x1E16 SWAP2 PUSH1 0x1 PUSH2 0x1E1C SWAP6 ADD DUP2 SSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 PUSH2 0xD12 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST PUSH2 0x1E32 PUSH2 0x1E38 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x287 JUMP JUMPDEST SWAP3 PUSH2 0x287 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1E43 JUMPI JUMP JUMPDEST PUSH2 0xC81 JUMP JUMPDEST PUSH2 0x1E6D DUP2 PUSH2 0x1E66 PUSH2 0x1E60 PUSH2 0x1E5B PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ ISZERO PUSH2 0x1DAB JUMP JUMPDEST PUSH2 0x1E80 PUSH2 0x1E79 PUSH0 PUSH2 0xEF0 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1DEE JUMP JUMPDEST PUSH2 0x1EAB PUSH0 PUSH2 0x1E95 PUSH2 0x1E90 DUP5 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1EA3 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1EBB PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FFD JUMPI PUSH0 SWAP2 PUSH2 0x1FDB JUMPI JUMPDEST POP PUSH2 0x1ED7 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP3 JUMPDEST DUP4 PUSH2 0x1EF4 PUSH2 0x1EEE PUSH2 0x1EE9 DUP6 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x1FD5 JUMPI PUSH2 0x1F0E DUP5 PUSH2 0x1F08 PUSH1 0x1 PUSH2 0xC65 JUMP JUMPDEST SWAP1 PUSH2 0x1E23 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1F2A PUSH2 0x1F24 PUSH2 0x1F1F DUP7 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x1FC4 JUMPI PUSH2 0x1FBF SWAP1 PUSH2 0x1F77 DUP6 PUSH2 0x1F72 PUSH2 0x1F59 PUSH1 0x2 PUSH2 0x1F53 PUSH2 0x1F4E DUP11 DUP14 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x1F6C PUSH2 0x1F67 DUP10 DUP8 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0x1FBA DUP6 PUSH2 0x1FB5 PUSH2 0x1F9C PUSH1 0x2 PUSH2 0x1F96 PUSH2 0x1F91 DUP11 DUP9 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x1FAF PUSH2 0x1FAA DUP10 DUP13 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x1F0F JUMP JUMPDEST POP SWAP3 PUSH2 0x1FCF SWAP1 PUSH2 0xC53 JUMP JUMPDEST SWAP3 PUSH2 0x1ED9 JUMP JUMPDEST SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1FF7 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1FEF DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x1ECD JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST PUSH2 0x200B SWAP1 PUSH2 0x1D19 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x201E SWAP1 PUSH2 0x2019 PUSH2 0x209D JUMP JUMPDEST PUSH2 0x2020 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x203B PUSH2 0x2035 PUSH2 0x2030 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x204B JUMPI PUSH2 0x2049 SWAP1 PUSH2 0x2415 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x208E PUSH2 0x2057 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x205F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x209B SWAP1 PUSH2 0x200D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x20A5 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x20BE PUSH2 0x20B8 PUSH2 0x20B3 PUSH2 0x2506 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x20C5 JUMPI JUMP JUMPDEST PUSH2 0x2107 PUSH2 0x20D0 PUSH2 0x2506 JUMP JUMPDEST PUSH2 0x20D8 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2114 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2120 ADDRESS PUSH2 0x210B JUMP JUMPDEST PUSH2 0x2152 PUSH2 0x214C PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x219C JUMPI JUMPDEST PUSH2 0x2160 JUMPI JUMP JUMPDEST PUSH2 0x2168 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2198 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x21A5 PUSH2 0x2513 JUMP JUMPDEST PUSH2 0x21D7 PUSH2 0x21D1 PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ ISZERO PUSH2 0x215A JUMP JUMPDEST POP PUSH2 0x21E7 PUSH2 0x209D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21F2 SWAP1 PUSH2 0x21DE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21FD SWAP1 PUSH2 0x683 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2209 SWAP1 PUSH2 0x21F4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2215 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2221 DUP2 PUSH2 0x626 JUMP JUMPDEST SUB PUSH2 0x2228 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x2239 DUP3 PUSH2 0x2218 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2254 JUMPI PUSH2 0x2251 SWAP2 PUSH0 ADD PUSH2 0x222C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2287 PUSH1 0x20 PUSH2 0x2271 PUSH2 0x226C DUP7 PUSH2 0x2200 JUMP JUMPDEST PUSH2 0x220C JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x227F PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2297 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x2367 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x22F8 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x22B9 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x22F4 SWAP1 PUSH2 0x22C5 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2313 PUSH2 0x230D PUSH2 0x2308 PUSH2 0x13E8 JUMP JUMPDEST PUSH2 0x626 JUMP JUMPDEST SWAP2 PUSH2 0x626 JUMP JUMPDEST SUB PUSH2 0x2328 JUMPI PUSH2 0x2323 SWAP3 SWAP4 POP PUSH2 0x253D JUMP JUMPDEST PUSH2 0x22B7 JUMP JUMPDEST PUSH2 0x2363 DUP5 PUSH2 0x2334 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x636 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2389 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2390 JUMPI JUMPDEST PUSH2 0x2381 DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x223B JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x22A4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2377 JUMP JUMPDEST PUSH2 0x23A0 ADDRESS PUSH2 0x210B JUMP JUMPDEST PUSH2 0x23D2 PUSH2 0x23CC PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x23D9 JUMPI JUMP JUMPDEST PUSH2 0x23E1 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2411 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x241D PUSH2 0x2481 JUMP JUMPDEST PUSH2 0x2435 PUSH2 0x242B PUSH0 DUP4 ADD PUSH2 0xBEC JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0xED0 JUMP JUMPDEST SWAP1 PUSH2 0x2469 PUSH2 0x2463 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x6AB JUMP JUMPDEST SWAP2 PUSH2 0x6AB JUMP JUMPDEST SWAP2 PUSH2 0x2472 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x247C DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x24D1 PUSH2 0x25C6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24DB PUSH2 0x24C9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24EE SWAP1 PUSH2 0x24E9 PUSH2 0x25C6 JUMP JUMPDEST PUSH2 0x24F0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24F9 SWAP1 PUSH2 0x269E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2504 SWAP1 PUSH2 0x24DD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x250E PUSH2 0xBCF JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x251B PUSH2 0xBCF JUMP JUMPDEST POP PUSH2 0x2536 PUSH0 PUSH2 0x2530 PUSH2 0x252B PUSH2 0x13E8 JUMP JUMPDEST PUSH2 0x26A9 JUMP JUMPDEST ADD PUSH2 0xBEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2547 DUP3 PUSH2 0x26AC JUMP JUMPDEST DUP2 PUSH2 0x2572 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH2 0x257B PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x2585 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2591 DUP2 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x25A3 PUSH2 0x259D PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x25B7 JUMPI PUSH2 0x25B3 SWAP2 PUSH2 0x27BC JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x25C1 PUSH2 0x2721 JUMP JUMPDEST PUSH2 0x25B5 JUMP JUMPDEST PUSH2 0x25D7 PUSH2 0x25D1 PUSH2 0x27EB JUMP JUMPDEST ISZERO PUSH2 0x81E JUMP JUMPDEST PUSH2 0x25DD JUMPI JUMP JUMPDEST PUSH2 0x25E5 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2615 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x262A SWAP1 PUSH2 0x2625 PUSH2 0x25C6 JUMP JUMPDEST PUSH2 0x262C JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2647 PUSH2 0x2641 PUSH2 0x263C PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x2657 JUMPI PUSH2 0x2655 SWAP1 PUSH2 0x2415 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x269A PUSH2 0x2663 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x266B PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x26A7 SWAP1 PUSH2 0x2619 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x26C0 PUSH2 0x26BA PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ PUSH2 0x26E2 JUMPI PUSH2 0x26E0 SWAP1 PUSH0 PUSH2 0x26DA PUSH2 0x26D5 PUSH2 0x13E8 JUMP JUMPDEST PUSH2 0x26A9 JUMP JUMPDEST ADD PUSH2 0xED0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x271D SWAP1 PUSH2 0x26EE PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2734 PUSH2 0x272E PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST GT PUSH2 0x273B JUMPI JUMP JUMPDEST PUSH2 0x2743 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2773 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x278E PUSH2 0x2789 DUP4 PUSH2 0x521 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x27AE JUMPI PUSH2 0x27A3 RETURNDATASIZE PUSH2 0x277C JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x27B6 PUSH2 0x2777 JUMP JUMPDEST SWAP1 PUSH2 0x27AC JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x27E8 SWAP4 PUSH2 0x27CA PUSH2 0x2777 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x27DF PUSH2 0x2793 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x2809 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x27F3 PUSH2 0x1462 JUMP JUMPDEST POP PUSH2 0x2806 PUSH0 PUSH2 0x2800 PUSH2 0x24A5 JUMP JUMPDEST ADD PUSH2 0x151E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x281D SWAP1 PUSH2 0x2816 PUSH2 0x2777 JUMP JUMPDEST POP ISZERO PUSH2 0x81E JUMP JUMPDEST PUSH0 EQ PUSH2 0x2829 JUMPI POP PUSH2 0x28AD JUMP JUMPDEST PUSH2 0x2832 DUP3 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x2844 PUSH2 0x283E PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ DUP1 PUSH2 0x2892 JUMPI JUMPDEST PUSH2 0x2853 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x288E SWAP1 PUSH2 0x285F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x28A7 PUSH2 0x28A1 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ PUSH2 0x284B JUMP JUMPDEST PUSH2 0x28B6 DUP2 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x28C8 PUSH2 0x28C2 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x28D7 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x28DF PUSH2 0x152 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x290F PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY 0xA5 PUSH0 SGT PUSH13 0x411B847392E5B4891AD86C84C5 0xAE SWAP1 SWAP10 KECCAK256 PUSH6 0x3A8811713E41 CALLER 0xDB PUSH1 0x64 PUSH20 0x6F6C634300081900330000000000000000000000 ","sourceMap":"1791:4381:64:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;749:3275:0:-;;;:::i;:::-;:::o;688:505:4:-;;;:::i;:::-;:::o;1791:4381:64:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":1559,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":413,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":3495,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":428,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_bytes":{"entryPoint":1448,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":2271,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_address_dyn_fromMemory":{"entryPoint":3597,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dyn_memory_ptr_fromMemory":{"entryPoint":3632,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_array_address_dyn_fromMemory":{"entryPoint":3510,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":1359,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":1413,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":8763,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":8748,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":561,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint256":{"entryPoint":685,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":670,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint64":{"entryPoint":2256,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_address":{"entryPoint":1008,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_array_address_dyn_storage":{"entryPoint":7369,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":473,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_to_address":{"entryPoint":995,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_address_dyn":{"entryPoint":1031,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_memory_ptr":{"entryPoint":1111,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_storage":{"entryPoint":7282,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":2096,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":2083,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":1590,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":1577,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":1991,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":6803,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":6790,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":2596,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":2547,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral_05f0":{"entryPoint":7545,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":591,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":486,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":2004,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral_05f0":{"entryPoint":7571,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":5653,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":2739,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":2726,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint64":{"entryPoint":5640,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_address_dyn":{"entryPoint":6045,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":1292,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_address_dyn":{"entryPoint":6017,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":10108,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":2403,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":338,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":3462,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":1313,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2368,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn":{"entryPoint":989,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn_storage":{"entryPoint":764,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn_storage_ptr":{"entryPoint":3876,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":976,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn_storage":{"entryPoint":760,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn_storage_ptr":{"entryPoint":3872,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":9529,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":2523,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn":{"entryPoint":1025,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn_storage":{"entryPoint":7276,"id":null,"parameterSlots":1,"returnSlots":1},"array_pop_array_address_dyn_storage_ptr":{"entryPoint":3945,"id":null,"parameterSlots":1,"returnSlots":0},"array_push_from_address_to_array_address_dyn_storage_ptr":{"entryPoint":7662,"id":null,"parameterSlots":2,"returnSlots":0},"array_storeLengthForEncoding_array_address_dyn":{"entryPoint":7254,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_address_dyn_fromStack":{"entryPoint":980,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":2527,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":7715,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":3246,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":381,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":2078,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":1574,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":817,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":5380,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":1901,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":5419,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":3170,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":5065,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":3124,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":356,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":647,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":2223,"id":null,"parameterSlots":1,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":5096,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":2501,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":1707,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Pool":{"entryPoint":3432,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":5923,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":8704,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_address_dyn_storage_to_array_address_dyn":{"entryPoint":7416,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_address_dyn_storage_to_array_address_dyn_ptr":{"entryPoint":3824,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":5593,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Pool_to_address":{"entryPoint":3444,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1979,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":5935,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":8716,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":6778,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":8459,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":3408,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":5068,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":3380,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":3173,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":6750,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":2490,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":3127,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":6722,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":1695,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Pool":{"entryPoint":3420,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":5911,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":8692,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":1667,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":5494,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_array_address_dyn":{"entryPoint":7382,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1348,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2465,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2536,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2620,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_addPool":{"entryPoint":2917,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allPools":{"entryPoint":923,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAllPools":{"entryPoint":2864,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPool":{"entryPoint":1796,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolAssets":{"entryPoint":1135,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolByAssets":{"entryPoint":507,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolsByAsset":{"entryPoint":2673,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolsCount":{"entryPoint":2760,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2813,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":2170,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_poolExist":{"entryPoint":2117,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":1611,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":2025,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":2316,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_removePool":{"entryPoint":596,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":1850,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":2968,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":1517,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":842,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":1926,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":3032,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":5386,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":5432,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":10131,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":1251,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":9467,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":9456,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":9886,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":9772,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":9427,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":9237,"id":193,"parameterSlots":1,"returnSlots":0},"fun_addPool":{"entryPoint":8194,"id":18337,"parameterSlots":1,"returnSlots":0},"fun_addPool_inner":{"entryPoint":7752,"id":null,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":8681,"id":18250,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":9670,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":10017,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":9111,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":8349,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":8471,"id":562,"parameterSlots":0,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":10172,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":9897,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getAllPools":{"entryPoint":7428,"id":18347,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":9491,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":9381,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":9345,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getPoolAssets":{"entryPoint":4859,"id":18378,"parameterSlots":1,"returnSlots":1},"fun_getPoolByAssets":{"entryPoint":3065,"id":18398,"parameterSlots":2,"returnSlots":1},"fun_getPoolsByAsset":{"entryPoint":6157,"id":18528,"parameterSlots":1,"returnSlots":1},"fun_getPoolsCount":{"entryPoint":6701,"id":18357,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":7243,"id":18224,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":7205,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":10219,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":9478,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_owner":{"entryPoint":5344,"id":105,"parameterSlots":0,"returnSlots":1},"fun_poolExist":{"entryPoint":5222,"id":18560,"parameterSlots":1,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":5152,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":5140,"id":null,"parameterSlots":1,"returnSlots":1},"fun_reinitialize":{"entryPoint":6005,"id":18241,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":5982,"id":null,"parameterSlots":2,"returnSlots":0},"fun_removePool":{"entryPoint":4843,"id":18651,"parameterSlots":1,"returnSlots":0},"fun_removePool_inner":{"entryPoint":3992,"id":null,"parameterSlots":1,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":5208,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":5189,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":10413,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":9900,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership":{"entryPoint":8338,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":8224,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":9533,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":8793,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":5029,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":5008,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":10249,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2512,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_allPools":{"entryPoint":880,"id":18186,"parameterSlots":1,"returnSlots":1},"getter_fun_getPool":{"entryPoint":1763,"id":18195,"parameterSlots":2,"returnSlots":1},"getter_fun_registry":{"entryPoint":1964,"id":18189,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":1664,"id":null,"parameterSlots":1,"returnSlots":1},"increment_uint256":{"entryPoint":6098,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":3155,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_address_of_address":{"entryPoint":1741,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_address_of_address":{"entryPoint":1719,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":3701,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":6824,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_notDelegated":{"entryPoint":5045,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":9753,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":9437,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":9417,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":5171,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":8205,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18247":{"entryPoint":8670,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18255":{"entryPoint":7449,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18565":{"entryPoint":3105,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":4988,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":5674,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":3201,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":3827,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":715,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1206,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":3343,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":5605,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":5947,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":5522,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":3733,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_offset_address":{"entryPoint":7263,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":866,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":1950,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":3052,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":5406,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":5452,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral_05f0":{"entryPoint":7595,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":1188,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":3019,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":3491,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":1192,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":352,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":344,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":348,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":3685,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":1196,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":3746,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":3456,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":5557,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":3283,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":3027,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":5374,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":332,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":813,"id":null,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_address_dyn":{"entryPoint":773,"id":null,"parameterSlots":2,"returnSlots":2},"storage_array_index_access_address_dyn_ptr":{"entryPoint":3885,"id":null,"parameterSlots":2,"returnSlots":2},"storage_set_to_zero_address":{"entryPoint":3925,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_05f07676dc67392f7f7f6aab9a91a65df1780d5e1861fa32a8a8f53252c2841b":{"entryPoint":7468,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2426,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":5465,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_dynamic20":{"entryPoint":3287,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":5563,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":3751,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_address_to_address":{"entryPoint":3346,"id":null,"parameterSlots":3,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":3792,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":5608,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":5950,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":5525,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":8728,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":650,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":2236,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_address":{"entryPoint":6084,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_address":{"entryPoint":6040,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":3023,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_address_dyn":{"entryPoint":4854,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":5218,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":10103,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":5041,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":6697,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":8488},{"length":32,"start":8621},{"length":32,"start":9128}]},"linkReferences":{},"object":"60806040526004361015610013575b610bcb565b61001d5f3561014c565b80632d5e94a7146101475780633b7d09461461014257806341d1de971461013d5780634276b97b146101385780634f1ef2861461013357806352d1902d1461012e578063531aa03e14610129578063715018a6146101245780637b1039991461011f57806389345efb1461011a5780638da5cb5b146101155780638f2248bc14610110578063ad3cb1cc1461010b578063b4340e6a14610106578063b4ac686014610101578063c4d66de8146100fc578063d88ff1f4146100f7578063d914cd4b146100f25763f2fde38b0361000e57610b98565b610b65565b610b30565b610afd565b610ac8565b610a71565b610a3c565b61090c565b61087a565b610845565b6107e9565b61073a565b610704565b61064b565b6105ed565b61046f565b61039b565b610254565b6101fb565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61018690610164565b90565b6101928161017d565b0361019957565b5f80fd5b905035906101aa82610189565b565b91906040838203126101d457806101c86101d1925f860161019d565b9360200161019d565b90565b61015c565b6101e29061017d565b9052565b91906101f9905f602085019401906101d9565b565b3461022c576102286102176102113660046101ac565b90610bf9565b61021f610152565b918291826101e6565b0390f35b610158565b9060208282031261024a57610247915f0161019d565b90565b61015c565b5f0190565b346102825761026c610267366004610231565b6112eb565b610274610152565b8061027e8161024f565b0390f35b610158565b90565b61029381610287565b0361029a57565b5f80fd5b905035906102ab8261028a565b565b906020828203126102c6576102c3915f0161029e565b90565b61015c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5490565b5f5260205f2090565b61030e816102f8565b821015610328576103206001916102fc565b910201905f90565b6102cb565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61035a90600861035f930261032d565b610331565b90565b9061036d915461034a565b90565b5f61037a816102f8565b821015610397576103949161038e91610305565b90610362565b90565b5f80fd5b346103cb576103c76103b66103b13660046102ad565b610370565b6103be610152565b918291826101e6565b0390f35b610158565b5190565b60209181520190565b60200190565b6103ec9061017d565b9052565b906103fd816020936103e3565b0190565b60200190565b9061042461041e610417846103d0565b80936103d4565b926103dd565b905f5b8181106104345750505090565b90919261044d61044760019286516103f0565b94610401565b9101919091610427565b61046c9160208201915f818403910152610407565b90565b3461049f5761049b61048a610485366004610231565b6112fb565b610492610152565b91829182610457565b0390f35b610158565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906104ed906104ac565b810190811067ffffffffffffffff82111761050757604052565b6104b6565b9061051f610518610152565b92836104e3565b565b67ffffffffffffffff811161053f5761053b6020916104ac565b0190565b6104b6565b90825f939282370152565b9092919261056461055f82610521565b61050c565b938185526020850190828401116105805761057e92610544565b565b6104a8565b9080601f830112156105a3578160206105a09335910161054f565b90565b6104a4565b9190916040818403126105e8576105c1835f830161019d565b92602082013567ffffffffffffffff81116105e3576105e09201610585565b90565b610160565b61015c565b6106016105fb3660046105a8565b906113a5565b610609610152565b806106138161024f565b0390f35b5f91031261062157565b61015c565b90565b61063290610626565b9052565b9190610649905f60208501940190610629565b565b3461067b5761065b366004610617565b610677610666611420565b61066e610152565b91829182610636565b0390f35b610158565b90565b61069761069261069c92610164565b610680565b610164565b90565b6106a890610683565b90565b6106b49061069f565b90565b906106c1906106ab565b5f5260205260405f2090565b906106d7906106ab565b5f5260205260405f2090565b6106fc610701926106f76002935f946106b7565b6106cd565b610362565b90565b346107355761073161072061071a3660046101ac565b906106e3565b610728610152565b918291826101e6565b0390f35b610158565b346107685761074a366004610617565b610752611458565b61075a610152565b806107648161024f565b0390f35b610158565b73ffffffffffffffffffffffffffffffffffffffff1690565b61079690600861079b930261032d565b61076d565b90565b906107a99154610786565b90565b6107b860015f9061079e565b90565b6107c49061069f565b90565b6107d0906107bb565b9052565b91906107e7905f602085019401906107c7565b565b34610819576107f9366004610617565b6108156108046107ac565b61080c610152565b918291826107d4565b0390f35b610158565b151590565b61082c9061081e565b9052565b9190610843905f60208501940190610823565b565b346108755761087161086061085b366004610231565b611466565b610868610152565b91829182610830565b0390f35b610158565b346108aa5761088a366004610617565b6108a66108956114e0565b61089d610152565b918291826101e6565b0390f35b610158565b67ffffffffffffffff1690565b6108c5816108af565b036108cc57565b5f80fd5b905035906108dd826108bc565b565b919060408382031261090757806108fb610904925f860161019d565b936020016108d0565b90565b61015c565b3461093b5761092561091f3660046108df565b90611775565b61092d610152565b806109378161024f565b0390f35b610158565b67ffffffffffffffff811161095e5761095a6020916104ac565b0190565b6104b6565b9061097561097083610940565b61050c565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6109ab6005610963565b906109b86020830161097a565b565b6109c26109a1565b90565b6109cd6109ba565b90565b6109d86109c5565b90565b5190565b60209181520190565b90825f9392825e0152565b610a12610a1b602093610a2093610a09816109db565b938480936109df565b958691016109e8565b6104ac565b0190565b610a399160208201915f8184039101526109f3565b90565b34610a6c57610a4c366004610617565b610a68610a576109d0565b610a5f610152565b91829182610a24565b0390f35b610158565b34610aa157610a9d610a8c610a87366004610231565b61180d565b610a94610152565b91829182610457565b0390f35b610158565b610aaf90610287565b9052565b9190610ac6905f60208501940190610aa6565b565b34610af857610ad8366004610617565b610af4610ae3611a2d565b610aeb610152565b91829182610ab3565b0390f35b610158565b34610b2b57610b15610b10366004610231565b611c4b565b610b1d610152565b80610b278161024f565b0390f35b610158565b34610b6057610b40366004610617565b610b5c610b4b611d04565b610b53610152565b91829182610457565b0390f35b610158565b34610b9357610b7d610b78366004610231565b612002565b610b85610152565b80610b8f8161024f565b0390f35b610158565b34610bc657610bb0610bab366004610231565b612092565b610bb8610152565b80610bc28161024f565b0390f35b610158565b5f80fd5b5f90565b5f1c90565b610be4610be991610bd3565b610331565b90565b610bf69054610bd8565b90565b610c1e91610c14610c1992610c0c610bcf565b5060026106b7565b6106cd565b610bec565b90565b610c3290610c2d61209d565b610f98565b565b90565b610c4b610c46610c5092610c34565b610680565b610287565b90565b6001610c5f9101610287565b90565b90565b610c79610c74610c7e92610c62565b610680565b610287565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610cbd610cc391939293610287565b92610287565b8203918211610cce57565b610c81565b1b90565b91906008610d05910291610cff73ffffffffffffffffffffffffffffffffffffffff84610cd3565b92610cd3565b9181191691161790565b90565b9190610d28610d23610d30936106ab565b610d0f565b908354610cd7565b9055565b610d48610d43610d4d92610c34565b610680565b610164565b90565b610d5990610d34565b90565b610d6590610683565b90565b610d7190610d5c565b90565b610d7d9061069f565b90565b60e01b90565b67ffffffffffffffff8111610d9e5760208091020190565b6104b6565b5f80fd5b90505190610db482610189565b565b90929192610dcb610dc682610d86565b61050c565b9381855260208086019202830192818411610e0857915b838310610def5750505050565b60208091610dfd8486610da7565b815201920191610de2565b610da3565b9080601f83011215610e2b57816020610e2893519101610db6565b90565b6104a4565b90602082820312610e60575f82015167ffffffffffffffff8111610e5b57610e589201610e0d565b90565b610160565b61015c565b610e6d610152565b3d5f823e3d90fd5b90610e7f826103d0565b811015610e90576020809102010190565b6102cb565b610e9f905161017d565b90565b5f1b90565b90610ec673ffffffffffffffffffffffffffffffffffffffff91610ea2565b9181191691161790565b90610ee5610ee0610eec926106ab565b610d0f565b8254610ea7565b9055565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5490565b5f5260205f2090565b610f3681610f20565b821015610f5057610f48600191610f24565b910201905f90565b6102cb565b610f6791610f61610bcf565b91610d12565b565b610f7281610f20565b8015610f93576001900390610f90610f8a8383610f2d565b90610f55565b55565b610ef3565b610fa15f610c37565b5b80610fbd610fb7610fb25f6102f8565b610287565b91610287565b10156112e457610fd7610fd15f8390610305565b90610362565b610fe9610fe38461017d565b9161017d565b14610ffc57610ff790610c53565b610fa2565b61103f9061103961103261102c5f6110266110165f6102f8565b6110206001610c65565b90610cae565b90610305565b90610362565b915f610305565b90610d12565b6110485f610d50565b61107560025f61105f61105a86610d68565b610d74565b6367e4ac2c9061106d610152565b948592610d80565b825281806110856004820161024f565b03915afa80156112df576110b16110b6916110bc945f916112bd575b506110ab5f610c37565b90610e75565b610e95565b906106b7565b906110e85f6110d26110cd86610d68565b610d74565b6367e4ac2c906110e0610152565b938492610d80565b825281806110f86004820161024f565b03915afa9283156112b85761112e61112961113995611134945f91611296575b506111236001610c65565b90610e75565b610e95565b906106cd565b610ed0565b6111425f610d50565b600261116f5f61115961115486610d68565b610d74565b6367e4ac2c90611167610152565b938492610d80565b8252818061117f6004820161024f565b03915afa918215611291576111c96111c36111ce926111bd6111b86111e4975f97889161126f575b506111b26001610c65565b90610e75565b610e95565b906106b7565b95610d68565b610d74565b6367e4ac2c906111dc610152565b938492610d80565b825281806111f46004820161024f565b03915afa92831561126a576112296112246112349561122f945f91611248575b5061121e5f610c37565b90610e75565b610e95565b906106cd565b610ed0565b6112456112405f610ef0565b610f69565b5b565b61126491503d805f833e61125c81836104e3565b810190610e30565b5f611214565b610e65565b61128b91503d808a833e61128381836104e3565b810190610e30565b5f6111a7565b610e65565b6112b291503d805f833e6112aa81836104e3565b810190610e30565b5f611118565b610e65565b6112d991503d805f833e6112d181836104e3565b810190610e30565b5f6110a1565b610e65565b5050611246565b6112f490610c21565b565b606090565b5f61131961131461132f9361130e6112f6565b50610d68565b610d74565b6367e4ac2c90611327610152565b938492610d80565b8252818061133f6004820161024f565b03915afa908115611377575f91611355575b5090565b61137191503d805f833e61136981836104e3565b810190610e30565b5f611351565b610e65565b9061138e91611389612117565b611390565b565b906113a39161139e816121e9565b612259565b565b906113af9161137c565b565b5f90565b6113c6906113c1612397565b611414565b90565b90565b6113e06113db6113e5926113c9565b610ea2565b610626565b90565b6114117f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6113cc565b90565b5061141d6113e8565b90565b61143061142b6113b1565b6113b5565b90565b61143b61209d565b611443611445565b565b6114566114515f610d50565b612415565b565b611460611433565b565b5f90565b61146e611462565b506114785f610c37565b5b8061149461148e6114895f6102f8565b610287565b91610287565b10156114da576114ae6114a85f8390610305565b90610362565b6114c06114ba8461017d565b9161017d565b146114d3576114ce90610c53565b611479565b5050600190565b50505f90565b6114e8610bcf565b506114fb5f6114f5612481565b01610bec565b90565b60401c90565b60ff1690565b61151661151b916114fe565b611504565b90565b611528905461150a565b90565b67ffffffffffffffff1690565b61154461154991610bd3565b61152b565b90565b6115569054611538565b90565b9061156c67ffffffffffffffff91610ea2565b9181191691161790565b61158a61158561158f926108af565b610680565b6108af565b90565b90565b906115aa6115a56115b192611576565b611592565b8254611559565b9055565b60401b90565b906115cf68ff0000000000000000916115b5565b9181191691161790565b6115e29061081e565b90565b90565b906115fd6115f8611604926115d9565b6115e5565b82546115bb565b9055565b611611906108af565b9052565b9190611628905f60208501940190611608565b565b9080916116356124a5565b906116415f830161151e565b80156116f2575b6116b65761167b9261167291611660865f8601611595565b61166d60015f86016115e8565b61175e565b5f8091016115e8565b6116b17fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916116a8610152565b91829182611615565b0390a1565b6116be610152565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806116ee6004820161024f565b0390fd5b506116fe5f830161154c565b61171061170a866108af565b916108af565b1015611648565b61172090610683565b90565b61172c90611717565b90565b61173890611717565b90565b90565b9061175361174e61175a9261172f565b61173b565b8254610ea7565b9055565b611773915061176c90611723565b600161173e565b565b9061177f9161162a565b565b9061179361178e83610d86565b61050c565b918252565b369037565b906117c26117aa83611781565b926020806117b88693610d86565b9201910390611798565b565b906117ce9061017d565b9052565b6117db90610287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118085760010190565b610c81565b6118156112f6565b506118276118225f6102f8565b61179d565b916118315f610c37565b9061183b5f610c37565b915b8261185861185261184d5f6102f8565b610287565b91610287565b1015611a1f5761187a61187561186f5f8690610305565b90610362565b610d68565b61189d5f61188783610d74565b6367e4ac2c90611895610152565b938492610d80565b825281806118ad6004820161024f565b03915afa908115611a1a575f916119f8575b50946118ca5f610c37565b5b806118e66118e06118db8a6103d0565b610287565b91610287565b10156119ee576118ff6118fa888390610e75565b610e95565b61191161190b8461017d565b9161017d565b146119245761191f90610c53565b6118cb565b5094509061194961193761194e93610d74565b6119448891849092610e75565b6117c4565b6117d2565b915b8261196b611965611960886103d0565b610287565b91610287565b1461197f5761197990610c53565b9161183d565b509150915b61198d8361179d565b916119975f610c37565b5b806119ab6119a587610287565b91610287565b10156119e7576119e2906119dd6119cb6119c6868490610e75565b610e95565b6119d88791849092610e75565b6117c4565b610c53565b611998565b5092505090565b5094505091611950565b611a1491503d805f833e611a0c81836104e3565b810190610e30565b5f6118bf565b610e65565b9391509150611984565b5f90565b611a35611a29565b50611a3f5f6102f8565b90565b611a56611a51611a5b92610c34565b610680565b6108af565b90565b611a72611a6d611a7792610c62565b610680565b6108af565b90565b611a839061069f565b90565b611a8f90611a5e565b9052565b9190611aa6905f60208501940190611a86565b565b611ab06124a5565b90611ac5611abf5f840161151e565b1561081e565b90611ad15f840161154c565b80611ae4611ade5f611a42565b916108af565b1480611c1e575b90611aff611af96001611a5e565b916108af565b1480611bf6575b611b1190911561081e565b9081611be5575b50611ba957611b4190611b36611b2e6001611a5e565b5f8601611595565b82611b97575b611c25565b611b49575b50565b611b56905f8091016115e8565b6001611b8e7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611b85610152565b91829182611a93565b0390a15f611b46565b611ba460015f86016115e8565b611b3c565b611bb1610152565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280611be16004820161024f565b0390fd5b611bf091501561081e565b5f611b18565b50611b11611c0330611a7a565b3b611c16611c105f610c37565b91610287565b149050611b06565b5082611aeb565b611c42611c4991611c346124d3565b611c3d336124fb565b611723565b600161173e565b565b611c5490611aa8565b565b60209181520190565b611c699054610bd8565b90565b60010190565b90611c8f611c89611c82846102f8565b8093611c56565b926102fc565b905f5b818110611c9f5750505090565b909192611cbf611cb9600192611cb487611c5f565b6103f0565b94611c6c565b9101919091611c92565b90611cd391611c72565b90565b90611cf6611cef92611ce6610152565b93848092611cc9565b03836104e3565b565b611d0190611cd6565b90565b611d0c6112f6565b50611d165f611cf8565b90565b611d2a90611d2561209d565b611e48565b565b60207f4c5f414444524553530000000000000000000000000000000000000000000000917f42616c756e695631506f6f6c466163746f72793a20494e56414c49445f504f4f5f8201520152565b611d8660296040926109df565b611d8f81611d2c565b0190565b611da89060208101905f818303910152611d79565b90565b15611db257565b611dba610152565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611dea60048201611d93565b0390fd5b9081549168010000000000000000831015611e1e5782611e16916001611e1c95018155610f2d565b90610d12565b565b6104b6565b611e32611e3891939293610287565b92610287565b8201809211611e4357565b610c81565b611e6d81611e66611e60611e5b5f610d50565b61017d565b9161017d565b1415611dab565b611e80611e795f610ef0565b8290611dee565b611eab5f611e95611e9084610d68565b610d74565b6367e4ac2c90611ea3610152565b938492610d80565b82528180611ebb6004820161024f565b03915afa908115611ffd575f91611fdb575b50611ed75f610c37565b925b83611ef4611eee611ee9856103d0565b610287565b91610287565b1015611fd557611f0e84611f086001610c65565b90611e23565b5b80611f2a611f24611f1f866103d0565b610287565b91610287565b1015611fc457611fbf90611f7785611f72611f596002611f53611f4e8a8d90610e75565b610e95565b906106b7565b611f6c611f67898790610e75565b610e95565b906106cd565b610ed0565b611fba85611fb5611f9c6002611f96611f918a8890610e75565b610e95565b906106b7565b611faf611faa898c90610e75565b610e95565b906106cd565b610ed0565b610c53565b611f0f565b5092611fcf90610c53565b92611ed9565b92505050565b611ff791503d805f833e611fef81836104e3565b810190610e30565b5f611ecd565b610e65565b61200b90611d19565b565b61201e9061201961209d565b612020565b565b8061203b6120356120305f610d50565b61017d565b9161017d565b1461204b5761204990612415565b565b61208e6120575f610d50565b61205f610152565b9182917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b61209b9061200d565b565b6120a56114e0565b6120be6120b86120b3612506565b61017d565b9161017d565b036120c557565b6121076120d0612506565b6120d8610152565b9182917f118cdaa7000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b6121149061069f565b90565b6121203061210b565b61215261214c7f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b14801561219c575b61216057565b612168610152565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806121986004820161024f565b0390fd5b506121a5612513565b6121d76121d17f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b141561215a565b506121e761209d565b565b6121f2906121de565b565b6121fd90610683565b90565b612209906121f4565b90565b6122159061069f565b90565b61222181610626565b0361222857565b5f80fd5b9050519061223982612218565b565b9060208282031261225457612251915f0161222c565b90565b61015c565b9190612287602061227161226c86612200565b61220c565b6352d1902d9061227f610152565b938492610d80565b825281806122976004820161024f565b03915afa80915f92612367575b50155f146122f85750509060016122b957505b565b6122f4906122c5610152565b9182917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b928361231361230d6123086113e8565b610626565b91610626565b036123285761232392935061253d565b6122b7565b61236384612334610152565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610636565b0390fd5b61238991925060203d8111612390575b61238181836104e3565b81019061223b565b905f6122a4565b503d612377565b6123a03061210b565b6123d26123cc7f000000000000000000000000000000000000000000000000000000000000000061017d565b9161017d565b036123d957565b6123e1610152565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806124116004820161024f565b0390fd5b61241d612481565b61243561242b5f8301610bec565b915f849101610ed0565b906124696124637f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936106ab565b916106ab565b91612472610152565b8061247c8161024f565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6124d16125c6565b565b6124db6124c9565b565b6124ee906124e96125c6565b6124f0565b565b6124f99061269e565b565b612504906124dd565b565b61250e610bcf565b503390565b61251b610bcf565b506125365f61253061252b6113e8565b6126a9565b01610bec565b90565b5190565b90612547826126ac565b816125727fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916106ab565b9061257b610152565b806125858161024f565b0390a261259181612539565b6125a361259d5f610c37565b91610287565b115f146125b7576125b3916127bc565b505b565b50506125c1612721565b6125b5565b6125d76125d16127eb565b1561081e565b6125dd57565b6125e5610152565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000008152806126156004820161024f565b0390fd5b61262a906126256125c6565b61262c565b565b8061264761264161263c5f610d50565b61017d565b9161017d565b146126575761265590612415565b565b61269a6126635f610d50565b61266b610152565b9182917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b6126a790612619565b565b90565b803b6126c06126ba5f610c37565b91610287565b146126e2576126e0905f6126da6126d56113e8565b6126a9565b01610ed0565b565b61271d906126ee610152565b9182917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b3461273461272e5f610c37565b91610287565b1161273b57565b612743610152565b7fb398979f000000000000000000000000000000000000000000000000000000008152806127736004820161024f565b0390fd5b606090565b9061278e61278983610521565b61050c565b918252565b3d5f146127ae576127a33d61277c565b903d5f602084013e5b565b6127b6612777565b906127ac565b5f806127e8936127ca612777565b508390602081019051915af4906127df612793565b90919091612809565b90565b6127f3611462565b506128065f6128006124a5565b0161151e565b90565b9061281d90612816612777565b501561081e565b5f1461282957506128ad565b61283282612539565b61284461283e5f610c37565b91610287565b1480612892575b612853575090565b61288e9061285f610152565b9182917f9996b315000000000000000000000000000000000000000000000000000000008352600483016101e6565b0390fd5b50803b6128a76128a15f610c37565b91610287565b1461284b565b6128b681612539565b6128c86128c25f610c37565b91610287565b115f146128d757805190602001fd5b6128df610152565b7f1425ea420000000000000000000000000000000000000000000000000000000081528061290f6004820161024f565b0390fdfea26469706673582212203ca55f136c411b847392e5b4891ad86c84c5ae909920653a8811713e4133db6064736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xBCB JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x14C JUMP JUMPDEST DUP1 PUSH4 0x2D5E94A7 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x3B7D0946 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x41D1DE97 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x4276B97B EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x531AA03E EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x89345EFB EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xB4340E6A EQ PUSH2 0x106 JUMPI DUP1 PUSH4 0xB4AC6860 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0xD88FF1F4 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xD914CD4B EQ PUSH2 0xF2 JUMPI PUSH4 0xF2FDE38B SUB PUSH2 0xE JUMPI PUSH2 0xB98 JUMP JUMPDEST PUSH2 0xB65 JUMP JUMPDEST PUSH2 0xB30 JUMP JUMPDEST PUSH2 0xAFD JUMP JUMPDEST PUSH2 0xAC8 JUMP JUMPDEST PUSH2 0xA71 JUMP JUMPDEST PUSH2 0xA3C JUMP JUMPDEST PUSH2 0x90C JUMP JUMPDEST PUSH2 0x87A JUMP JUMPDEST PUSH2 0x845 JUMP JUMPDEST PUSH2 0x7E9 JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0x704 JUMP JUMPDEST PUSH2 0x64B JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST PUSH2 0x39B JUMP JUMPDEST PUSH2 0x254 JUMP JUMPDEST PUSH2 0x1FB JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x186 SWAP1 PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x192 DUP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x199 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1AA DUP3 PUSH2 0x189 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x1D4 JUMPI DUP1 PUSH2 0x1C8 PUSH2 0x1D1 SWAP3 PUSH0 DUP7 ADD PUSH2 0x19D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0x1E2 SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1F9 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1D9 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x22C JUMPI PUSH2 0x228 PUSH2 0x217 PUSH2 0x211 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST SWAP1 PUSH2 0xBF9 JUMP JUMPDEST PUSH2 0x21F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x24A JUMPI PUSH2 0x247 SWAP2 PUSH0 ADD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x282 JUMPI PUSH2 0x26C PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x12EB JUMP JUMPDEST PUSH2 0x274 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x27E DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x293 DUP2 PUSH2 0x287 JUMP JUMPDEST SUB PUSH2 0x29A JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x2AB DUP3 PUSH2 0x28A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2C6 JUMPI PUSH2 0x2C3 SWAP2 PUSH0 ADD PUSH2 0x29E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x30E DUP2 PUSH2 0x2F8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x328 JUMPI PUSH2 0x320 PUSH1 0x1 SWAP2 PUSH2 0x2FC JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2CB JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x35A SWAP1 PUSH1 0x8 PUSH2 0x35F SWAP4 MUL PUSH2 0x32D JUMP JUMPDEST PUSH2 0x331 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x36D SWAP2 SLOAD PUSH2 0x34A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x37A DUP2 PUSH2 0x2F8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x397 JUMPI PUSH2 0x394 SWAP2 PUSH2 0x38E SWAP2 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x3CB JUMPI PUSH2 0x3C7 PUSH2 0x3B6 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x370 JUMP JUMPDEST PUSH2 0x3BE PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x3EC SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x3FD DUP2 PUSH1 0x20 SWAP4 PUSH2 0x3E3 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x424 PUSH2 0x41E PUSH2 0x417 DUP5 PUSH2 0x3D0 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x3D4 JUMP JUMPDEST SWAP3 PUSH2 0x3DD JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x434 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x44D PUSH2 0x447 PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x3F0 JUMP JUMPDEST SWAP5 PUSH2 0x401 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x427 JUMP JUMPDEST PUSH2 0x46C SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x407 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x49F JUMPI PUSH2 0x49B PUSH2 0x48A PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x12FB JUMP JUMPDEST PUSH2 0x492 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x457 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x4ED SWAP1 PUSH2 0x4AC JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x507 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST SWAP1 PUSH2 0x51F PUSH2 0x518 PUSH2 0x152 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x4E3 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x53F JUMPI PUSH2 0x53B PUSH1 0x20 SWAP2 PUSH2 0x4AC JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x564 PUSH2 0x55F DUP3 PUSH2 0x521 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x580 JUMPI PUSH2 0x57E SWAP3 PUSH2 0x544 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4A8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x5A3 JUMPI DUP2 PUSH1 0x20 PUSH2 0x5A0 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x54F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x5E8 JUMPI PUSH2 0x5C1 DUP4 PUSH0 DUP4 ADD PUSH2 0x19D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x5E3 JUMPI PUSH2 0x5E0 SWAP3 ADD PUSH2 0x585 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x160 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0x601 PUSH2 0x5FB CALLDATASIZE PUSH1 0x4 PUSH2 0x5A8 JUMP JUMPDEST SWAP1 PUSH2 0x13A5 JUMP JUMPDEST PUSH2 0x609 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x613 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x621 JUMPI JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x632 SWAP1 PUSH2 0x626 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x649 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x629 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x67B JUMPI PUSH2 0x65B CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x677 PUSH2 0x666 PUSH2 0x1420 JUMP JUMPDEST PUSH2 0x66E PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x636 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x697 PUSH2 0x692 PUSH2 0x69C SWAP3 PUSH2 0x164 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A8 SWAP1 PUSH2 0x683 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6B4 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6C1 SWAP1 PUSH2 0x6AB JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6D7 SWAP1 PUSH2 0x6AB JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x6FC PUSH2 0x701 SWAP3 PUSH2 0x6F7 PUSH1 0x2 SWAP4 PUSH0 SWAP5 PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x735 JUMPI PUSH2 0x731 PUSH2 0x720 PUSH2 0x71A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST SWAP1 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x728 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x768 JUMPI PUSH2 0x74A CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x752 PUSH2 0x1458 JUMP JUMPDEST PUSH2 0x75A PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x764 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x796 SWAP1 PUSH1 0x8 PUSH2 0x79B SWAP4 MUL PUSH2 0x32D JUMP JUMPDEST PUSH2 0x76D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x7A9 SWAP2 SLOAD PUSH2 0x786 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7B8 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x79E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7C4 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7D0 SWAP1 PUSH2 0x7BB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x7E7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7C7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x819 JUMPI PUSH2 0x7F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x815 PUSH2 0x804 PUSH2 0x7AC JUMP JUMPDEST PUSH2 0x80C PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7D4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x82C SWAP1 PUSH2 0x81E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x843 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x823 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x875 JUMPI PUSH2 0x871 PUSH2 0x860 PUSH2 0x85B CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x1466 JUMP JUMPDEST PUSH2 0x868 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x830 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0x8AA JUMPI PUSH2 0x88A CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x8A6 PUSH2 0x895 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x89D PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x8C5 DUP2 PUSH2 0x8AF JUMP JUMPDEST SUB PUSH2 0x8CC JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x8DD DUP3 PUSH2 0x8BC JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x907 JUMPI DUP1 PUSH2 0x8FB PUSH2 0x904 SWAP3 PUSH0 DUP7 ADD PUSH2 0x19D JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x8D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST CALLVALUE PUSH2 0x93B JUMPI PUSH2 0x925 PUSH2 0x91F CALLDATASIZE PUSH1 0x4 PUSH2 0x8DF JUMP JUMPDEST SWAP1 PUSH2 0x1775 JUMP JUMPDEST PUSH2 0x92D PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x937 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x95E JUMPI PUSH2 0x95A PUSH1 0x20 SWAP2 PUSH2 0x4AC JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST SWAP1 PUSH2 0x975 PUSH2 0x970 DUP4 PUSH2 0x940 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x9AB PUSH1 0x5 PUSH2 0x963 JUMP JUMPDEST SWAP1 PUSH2 0x9B8 PUSH1 0x20 DUP4 ADD PUSH2 0x97A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9C2 PUSH2 0x9A1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9CD PUSH2 0x9BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x9D8 PUSH2 0x9C5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0xA12 PUSH2 0xA1B PUSH1 0x20 SWAP4 PUSH2 0xA20 SWAP4 PUSH2 0xA09 DUP2 PUSH2 0x9DB JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x9DF JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x9E8 JUMP JUMPDEST PUSH2 0x4AC JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xA39 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x9F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA6C JUMPI PUSH2 0xA4C CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0xA68 PUSH2 0xA57 PUSH2 0x9D0 JUMP JUMPDEST PUSH2 0xA5F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA24 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xAA1 JUMPI PUSH2 0xA9D PUSH2 0xA8C PUSH2 0xA87 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x180D JUMP JUMPDEST PUSH2 0xA94 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x457 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH2 0xAAF SWAP1 PUSH2 0x287 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAC6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xAA6 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xAF8 JUMPI PUSH2 0xAD8 CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0xAF4 PUSH2 0xAE3 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0xAEB PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xAB3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB2B JUMPI PUSH2 0xB15 PUSH2 0xB10 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x1C4B JUMP JUMPDEST PUSH2 0xB1D PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xB27 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB60 JUMPI PUSH2 0xB40 CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0xB5C PUSH2 0xB4B PUSH2 0x1D04 JUMP JUMPDEST PUSH2 0xB53 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x457 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xB93 JUMPI PUSH2 0xB7D PUSH2 0xB78 CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x2002 JUMP JUMPDEST PUSH2 0xB85 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xB8F DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST CALLVALUE PUSH2 0xBC6 JUMPI PUSH2 0xBB0 PUSH2 0xBAB CALLDATASIZE PUSH1 0x4 PUSH2 0x231 JUMP JUMPDEST PUSH2 0x2092 JUMP JUMPDEST PUSH2 0xBB8 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0xBC2 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0xBE4 PUSH2 0xBE9 SWAP2 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x331 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBF6 SWAP1 SLOAD PUSH2 0xBD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC1E SWAP2 PUSH2 0xC14 PUSH2 0xC19 SWAP3 PUSH2 0xC0C PUSH2 0xBCF JUMP JUMPDEST POP PUSH1 0x2 PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xBEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC32 SWAP1 PUSH2 0xC2D PUSH2 0x209D JUMP JUMPDEST PUSH2 0xF98 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC4B PUSH2 0xC46 PUSH2 0xC50 SWAP3 PUSH2 0xC34 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC5F SWAP2 ADD PUSH2 0x287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC79 PUSH2 0xC74 PUSH2 0xC7E SWAP3 PUSH2 0xC62 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xCBD PUSH2 0xCC3 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x287 JUMP JUMPDEST SWAP3 PUSH2 0x287 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0xCCE JUMPI JUMP JUMPDEST PUSH2 0xC81 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0xD05 SWAP2 MUL SWAP2 PUSH2 0xCFF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0xCD3 JUMP JUMPDEST SWAP3 PUSH2 0xCD3 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xD28 PUSH2 0xD23 PUSH2 0xD30 SWAP4 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0xD0F JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0xCD7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD48 PUSH2 0xD43 PUSH2 0xD4D SWAP3 PUSH2 0xC34 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD59 SWAP1 PUSH2 0xD34 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD65 SWAP1 PUSH2 0x683 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD71 SWAP1 PUSH2 0xD5C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD7D SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD9E JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xDB4 DUP3 PUSH2 0x189 JUMP JUMPDEST JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xDCB PUSH2 0xDC6 DUP3 PUSH2 0xD86 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 MUL DUP4 ADD SWAP3 DUP2 DUP5 GT PUSH2 0xE08 JUMPI SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0xDEF JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 SWAP2 PUSH2 0xDFD DUP5 DUP7 PUSH2 0xDA7 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0xDE2 JUMP JUMPDEST PUSH2 0xDA3 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xE2B JUMPI DUP2 PUSH1 0x20 PUSH2 0xE28 SWAP4 MLOAD SWAP2 ADD PUSH2 0xDB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4A4 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xE60 JUMPI PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE5B JUMPI PUSH2 0xE58 SWAP3 ADD PUSH2 0xE0D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x160 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST PUSH2 0xE6D PUSH2 0x152 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xE7F DUP3 PUSH2 0x3D0 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xE90 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x2CB JUMP JUMPDEST PUSH2 0xE9F SWAP1 MLOAD PUSH2 0x17D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xEC6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xEA2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xEE5 PUSH2 0xEE0 PUSH2 0xEEC SWAP3 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0xD0F JUMP JUMPDEST DUP3 SLOAD PUSH2 0xEA7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xF36 DUP2 PUSH2 0xF20 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0xF50 JUMPI PUSH2 0xF48 PUSH1 0x1 SWAP2 PUSH2 0xF24 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2CB JUMP JUMPDEST PUSH2 0xF67 SWAP2 PUSH2 0xF61 PUSH2 0xBCF JUMP JUMPDEST SWAP2 PUSH2 0xD12 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xF72 DUP2 PUSH2 0xF20 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF93 JUMPI PUSH1 0x1 SWAP1 SUB SWAP1 PUSH2 0xF90 PUSH2 0xF8A DUP4 DUP4 PUSH2 0xF2D JUMP JUMPDEST SWAP1 PUSH2 0xF55 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0xEF3 JUMP JUMPDEST PUSH2 0xFA1 PUSH0 PUSH2 0xC37 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFBD PUSH2 0xFB7 PUSH2 0xFB2 PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x12E4 JUMPI PUSH2 0xFD7 PUSH2 0xFD1 PUSH0 DUP4 SWAP1 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST PUSH2 0xFE9 PUSH2 0xFE3 DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0xFFC JUMPI PUSH2 0xFF7 SWAP1 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0x103F SWAP1 PUSH2 0x1039 PUSH2 0x1032 PUSH2 0x102C PUSH0 PUSH2 0x1026 PUSH2 0x1016 PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x1020 PUSH1 0x1 PUSH2 0xC65 JUMP JUMPDEST SWAP1 PUSH2 0xCAE JUMP JUMPDEST SWAP1 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0xD12 JUMP JUMPDEST PUSH2 0x1048 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x1075 PUSH1 0x2 PUSH0 PUSH2 0x105F PUSH2 0x105A DUP7 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x106D PUSH2 0x152 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1085 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x12DF JUMPI PUSH2 0x10B1 PUSH2 0x10B6 SWAP2 PUSH2 0x10BC SWAP5 PUSH0 SWAP2 PUSH2 0x12BD JUMPI JUMPDEST POP PUSH2 0x10AB PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 JUMP JUMPDEST SWAP1 PUSH2 0x10E8 PUSH0 PUSH2 0x10D2 PUSH2 0x10CD DUP7 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x10E0 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x10F8 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x12B8 JUMPI PUSH2 0x112E PUSH2 0x1129 PUSH2 0x1139 SWAP6 PUSH2 0x1134 SWAP5 PUSH0 SWAP2 PUSH2 0x1296 JUMPI JUMPDEST POP PUSH2 0x1123 PUSH1 0x1 PUSH2 0xC65 JUMP JUMPDEST SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0x1142 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x116F PUSH0 PUSH2 0x1159 PUSH2 0x1154 DUP7 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1167 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x117F PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1291 JUMPI PUSH2 0x11C9 PUSH2 0x11C3 PUSH2 0x11CE SWAP3 PUSH2 0x11BD PUSH2 0x11B8 PUSH2 0x11E4 SWAP8 PUSH0 SWAP8 DUP9 SWAP2 PUSH2 0x126F JUMPI JUMPDEST POP PUSH2 0x11B2 PUSH1 0x1 PUSH2 0xC65 JUMP JUMPDEST SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 JUMP JUMPDEST SWAP6 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x11DC PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x11F4 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x126A JUMPI PUSH2 0x1229 PUSH2 0x1224 PUSH2 0x1234 SWAP6 PUSH2 0x122F SWAP5 PUSH0 SWAP2 PUSH2 0x1248 JUMPI JUMPDEST POP PUSH2 0x121E PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0x1245 PUSH2 0x1240 PUSH0 PUSH2 0xEF0 JUMP JUMPDEST PUSH2 0xF69 JUMP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH2 0x1264 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x125C DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x1214 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST PUSH2 0x128B SWAP2 POP RETURNDATASIZE DUP1 DUP11 DUP4 RETURNDATACOPY PUSH2 0x1283 DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x11A7 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST PUSH2 0x12B2 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x12AA DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x1118 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST PUSH2 0x12D9 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x12D1 DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST POP POP PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x12F4 SWAP1 PUSH2 0xC21 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1319 PUSH2 0x1314 PUSH2 0x132F SWAP4 PUSH2 0x130E PUSH2 0x12F6 JUMP JUMPDEST POP PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1327 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x133F PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1377 JUMPI PUSH0 SWAP2 PUSH2 0x1355 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1371 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1369 DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x1351 JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST SWAP1 PUSH2 0x138E SWAP2 PUSH2 0x1389 PUSH2 0x2117 JUMP JUMPDEST PUSH2 0x1390 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x13A3 SWAP2 PUSH2 0x139E DUP2 PUSH2 0x21E9 JUMP JUMPDEST PUSH2 0x2259 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x13AF SWAP2 PUSH2 0x137C JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x13C6 SWAP1 PUSH2 0x13C1 PUSH2 0x2397 JUMP JUMPDEST PUSH2 0x1414 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13E0 PUSH2 0x13DB PUSH2 0x13E5 SWAP3 PUSH2 0x13C9 JUMP JUMPDEST PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x626 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1411 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x13CC JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x141D PUSH2 0x13E8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1430 PUSH2 0x142B PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x13B5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x143B PUSH2 0x209D JUMP JUMPDEST PUSH2 0x1443 PUSH2 0x1445 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1456 PUSH2 0x1451 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x2415 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1460 PUSH2 0x1433 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x146E PUSH2 0x1462 JUMP JUMPDEST POP PUSH2 0x1478 PUSH0 PUSH2 0xC37 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1494 PUSH2 0x148E PUSH2 0x1489 PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x14DA JUMPI PUSH2 0x14AE PUSH2 0x14A8 PUSH0 DUP4 SWAP1 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST PUSH2 0x14C0 PUSH2 0x14BA DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x14D3 JUMPI PUSH2 0x14CE SWAP1 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x1479 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x14E8 PUSH2 0xBCF JUMP JUMPDEST POP PUSH2 0x14FB PUSH0 PUSH2 0x14F5 PUSH2 0x2481 JUMP JUMPDEST ADD PUSH2 0xBEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1516 PUSH2 0x151B SWAP2 PUSH2 0x14FE JUMP JUMPDEST PUSH2 0x1504 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1528 SWAP1 SLOAD PUSH2 0x150A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1544 PUSH2 0x1549 SWAP2 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x152B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1556 SWAP1 SLOAD PUSH2 0x1538 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x156C PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0xEA2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x158A PUSH2 0x1585 PUSH2 0x158F SWAP3 PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x8AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15AA PUSH2 0x15A5 PUSH2 0x15B1 SWAP3 PUSH2 0x1576 JUMP JUMPDEST PUSH2 0x1592 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1559 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15CF PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x15B5 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x15E2 SWAP1 PUSH2 0x81E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15FD PUSH2 0x15F8 PUSH2 0x1604 SWAP3 PUSH2 0x15D9 JUMP JUMPDEST PUSH2 0x15E5 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15BB JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1611 SWAP1 PUSH2 0x8AF JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1628 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1608 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x1635 PUSH2 0x24A5 JUMP JUMPDEST SWAP1 PUSH2 0x1641 PUSH0 DUP4 ADD PUSH2 0x151E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16F2 JUMPI JUMPDEST PUSH2 0x16B6 JUMPI PUSH2 0x167B SWAP3 PUSH2 0x1672 SWAP2 PUSH2 0x1660 DUP7 PUSH0 DUP7 ADD PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x166D PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x175E JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x16B1 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x16A8 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1615 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x16BE PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x16EE PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x16FE PUSH0 DUP4 ADD PUSH2 0x154C JUMP JUMPDEST PUSH2 0x1710 PUSH2 0x170A DUP7 PUSH2 0x8AF JUMP JUMPDEST SWAP2 PUSH2 0x8AF JUMP JUMPDEST LT ISZERO PUSH2 0x1648 JUMP JUMPDEST PUSH2 0x1720 SWAP1 PUSH2 0x683 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x172C SWAP1 PUSH2 0x1717 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1738 SWAP1 PUSH2 0x1717 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1753 PUSH2 0x174E PUSH2 0x175A SWAP3 PUSH2 0x172F JUMP JUMPDEST PUSH2 0x173B JUMP JUMPDEST DUP3 SLOAD PUSH2 0xEA7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1773 SWAP2 POP PUSH2 0x176C SWAP1 PUSH2 0x1723 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x173E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x177F SWAP2 PUSH2 0x162A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1793 PUSH2 0x178E DUP4 PUSH2 0xD86 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0x17C2 PUSH2 0x17AA DUP4 PUSH2 0x1781 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0x17B8 DUP7 SWAP4 PUSH2 0xD86 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0x1798 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x17CE SWAP1 PUSH2 0x17D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x17DB SWAP1 PUSH2 0x287 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1808 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0xC81 JUMP JUMPDEST PUSH2 0x1815 PUSH2 0x12F6 JUMP JUMPDEST POP PUSH2 0x1827 PUSH2 0x1822 PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x179D JUMP JUMPDEST SWAP2 PUSH2 0x1831 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP1 PUSH2 0x183B PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x1858 PUSH2 0x1852 PUSH2 0x184D PUSH0 PUSH2 0x2F8 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x1A1F JUMPI PUSH2 0x187A PUSH2 0x1875 PUSH2 0x186F PUSH0 DUP7 SWAP1 PUSH2 0x305 JUMP JUMPDEST SWAP1 PUSH2 0x362 JUMP JUMPDEST PUSH2 0xD68 JUMP JUMPDEST PUSH2 0x189D PUSH0 PUSH2 0x1887 DUP4 PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1895 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x18AD PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1A1A JUMPI PUSH0 SWAP2 PUSH2 0x19F8 JUMPI JUMPDEST POP SWAP5 PUSH2 0x18CA PUSH0 PUSH2 0xC37 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x18E6 PUSH2 0x18E0 PUSH2 0x18DB DUP11 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x19EE JUMPI PUSH2 0x18FF PUSH2 0x18FA DUP9 DUP4 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST PUSH2 0x1911 PUSH2 0x190B DUP5 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x1924 JUMPI PUSH2 0x191F SWAP1 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x18CB JUMP JUMPDEST POP SWAP5 POP SWAP1 PUSH2 0x1949 PUSH2 0x1937 PUSH2 0x194E SWAP4 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x1944 DUP9 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0x17C4 JUMP JUMPDEST PUSH2 0x17D2 JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x196B PUSH2 0x1965 PUSH2 0x1960 DUP9 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ PUSH2 0x197F JUMPI PUSH2 0x1979 SWAP1 PUSH2 0xC53 JUMP JUMPDEST SWAP2 PUSH2 0x183D JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMPDEST PUSH2 0x198D DUP4 PUSH2 0x179D JUMP JUMPDEST SWAP2 PUSH2 0x1997 PUSH0 PUSH2 0xC37 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x19AB PUSH2 0x19A5 DUP8 PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x19E7 JUMPI PUSH2 0x19E2 SWAP1 PUSH2 0x19DD PUSH2 0x19CB PUSH2 0x19C6 DUP7 DUP5 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST PUSH2 0x19D8 DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0x17C4 JUMP JUMPDEST PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x1998 JUMP JUMPDEST POP SWAP3 POP POP SWAP1 JUMP JUMPDEST POP SWAP5 POP POP SWAP2 PUSH2 0x1950 JUMP JUMPDEST PUSH2 0x1A14 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1A0C DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x18BF JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST SWAP4 SWAP2 POP SWAP2 POP PUSH2 0x1984 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1A35 PUSH2 0x1A29 JUMP JUMPDEST POP PUSH2 0x1A3F PUSH0 PUSH2 0x2F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A56 PUSH2 0x1A51 PUSH2 0x1A5B SWAP3 PUSH2 0xC34 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x8AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A72 PUSH2 0x1A6D PUSH2 0x1A77 SWAP3 PUSH2 0xC62 JUMP JUMPDEST PUSH2 0x680 JUMP JUMPDEST PUSH2 0x8AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A83 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A8F SWAP1 PUSH2 0x1A5E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1AA6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1A86 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1AB0 PUSH2 0x24A5 JUMP JUMPDEST SWAP1 PUSH2 0x1AC5 PUSH2 0x1ABF PUSH0 DUP5 ADD PUSH2 0x151E JUMP JUMPDEST ISZERO PUSH2 0x81E JUMP JUMPDEST SWAP1 PUSH2 0x1AD1 PUSH0 DUP5 ADD PUSH2 0x154C JUMP JUMPDEST DUP1 PUSH2 0x1AE4 PUSH2 0x1ADE PUSH0 PUSH2 0x1A42 JUMP JUMPDEST SWAP2 PUSH2 0x8AF JUMP JUMPDEST EQ DUP1 PUSH2 0x1C1E JUMPI JUMPDEST SWAP1 PUSH2 0x1AFF PUSH2 0x1AF9 PUSH1 0x1 PUSH2 0x1A5E JUMP JUMPDEST SWAP2 PUSH2 0x8AF JUMP JUMPDEST EQ DUP1 PUSH2 0x1BF6 JUMPI JUMPDEST PUSH2 0x1B11 SWAP1 SWAP2 ISZERO PUSH2 0x81E JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1BE5 JUMPI JUMPDEST POP PUSH2 0x1BA9 JUMPI PUSH2 0x1B41 SWAP1 PUSH2 0x1B36 PUSH2 0x1B2E PUSH1 0x1 PUSH2 0x1A5E JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x1595 JUMP JUMPDEST DUP3 PUSH2 0x1B97 JUMPI JUMPDEST PUSH2 0x1C25 JUMP JUMPDEST PUSH2 0x1B49 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1B56 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x15E8 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1B8E PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1B85 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1A93 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x1B46 JUMP JUMPDEST PUSH2 0x1BA4 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x1B3C JUMP JUMPDEST PUSH2 0x1BB1 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1BE1 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BF0 SWAP2 POP ISZERO PUSH2 0x81E JUMP JUMPDEST PUSH0 PUSH2 0x1B18 JUMP JUMPDEST POP PUSH2 0x1B11 PUSH2 0x1C03 ADDRESS PUSH2 0x1A7A JUMP JUMPDEST EXTCODESIZE PUSH2 0x1C16 PUSH2 0x1C10 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x1B06 JUMP JUMPDEST POP DUP3 PUSH2 0x1AEB JUMP JUMPDEST PUSH2 0x1C42 PUSH2 0x1C49 SWAP2 PUSH2 0x1C34 PUSH2 0x24D3 JUMP JUMPDEST PUSH2 0x1C3D CALLER PUSH2 0x24FB JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x173E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C54 SWAP1 PUSH2 0x1AA8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x1C69 SWAP1 SLOAD PUSH2 0xBD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1C8F PUSH2 0x1C89 PUSH2 0x1C82 DUP5 PUSH2 0x2F8 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x1C56 JUMP JUMPDEST SWAP3 PUSH2 0x2FC JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1C9F JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x1CBF PUSH2 0x1CB9 PUSH1 0x1 SWAP3 PUSH2 0x1CB4 DUP8 PUSH2 0x1C5F JUMP JUMPDEST PUSH2 0x3F0 JUMP JUMPDEST SWAP5 PUSH2 0x1C6C JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x1C92 JUMP JUMPDEST SWAP1 PUSH2 0x1CD3 SWAP2 PUSH2 0x1C72 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1CF6 PUSH2 0x1CEF SWAP3 PUSH2 0x1CE6 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x1CC9 JUMP JUMPDEST SUB DUP4 PUSH2 0x4E3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1D01 SWAP1 PUSH2 0x1CD6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D0C PUSH2 0x12F6 JUMP JUMPDEST POP PUSH2 0x1D16 PUSH0 PUSH2 0x1CF8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D2A SWAP1 PUSH2 0x1D25 PUSH2 0x209D JUMP JUMPDEST PUSH2 0x1E48 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 PUSH32 0x4C5F414444524553530000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631506F6F6C466163746F72793A20494E56414C49445F504F4F PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1D86 PUSH1 0x29 PUSH1 0x40 SWAP3 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x1D8F DUP2 PUSH2 0x1D2C JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1DA8 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1D79 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1DB2 JUMPI JUMP JUMPDEST PUSH2 0x1DBA PUSH2 0x152 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1DEA PUSH1 0x4 DUP3 ADD PUSH2 0x1D93 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x1E1E JUMPI DUP3 PUSH2 0x1E16 SWAP2 PUSH1 0x1 PUSH2 0x1E1C SWAP6 ADD DUP2 SSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 PUSH2 0xD12 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4B6 JUMP JUMPDEST PUSH2 0x1E32 PUSH2 0x1E38 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x287 JUMP JUMPDEST SWAP3 PUSH2 0x287 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1E43 JUMPI JUMP JUMPDEST PUSH2 0xC81 JUMP JUMPDEST PUSH2 0x1E6D DUP2 PUSH2 0x1E66 PUSH2 0x1E60 PUSH2 0x1E5B PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ ISZERO PUSH2 0x1DAB JUMP JUMPDEST PUSH2 0x1E80 PUSH2 0x1E79 PUSH0 PUSH2 0xEF0 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1DEE JUMP JUMPDEST PUSH2 0x1EAB PUSH0 PUSH2 0x1E95 PUSH2 0x1E90 DUP5 PUSH2 0xD68 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH4 0x67E4AC2C SWAP1 PUSH2 0x1EA3 PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1EBB PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FFD JUMPI PUSH0 SWAP2 PUSH2 0x1FDB JUMPI JUMPDEST POP PUSH2 0x1ED7 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP3 JUMPDEST DUP4 PUSH2 0x1EF4 PUSH2 0x1EEE PUSH2 0x1EE9 DUP6 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x1FD5 JUMPI PUSH2 0x1F0E DUP5 PUSH2 0x1F08 PUSH1 0x1 PUSH2 0xC65 JUMP JUMPDEST SWAP1 PUSH2 0x1E23 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1F2A PUSH2 0x1F24 PUSH2 0x1F1F DUP7 PUSH2 0x3D0 JUMP JUMPDEST PUSH2 0x287 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST LT ISZERO PUSH2 0x1FC4 JUMPI PUSH2 0x1FBF SWAP1 PUSH2 0x1F77 DUP6 PUSH2 0x1F72 PUSH2 0x1F59 PUSH1 0x2 PUSH2 0x1F53 PUSH2 0x1F4E DUP11 DUP14 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x1F6C PUSH2 0x1F67 DUP10 DUP8 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0x1FBA DUP6 PUSH2 0x1FB5 PUSH2 0x1F9C PUSH1 0x2 PUSH2 0x1F96 PUSH2 0x1F91 DUP11 DUP9 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0x1FAF PUSH2 0x1FAA DUP10 DUP13 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST SWAP1 PUSH2 0x6CD JUMP JUMPDEST PUSH2 0xED0 JUMP JUMPDEST PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x1F0F JUMP JUMPDEST POP SWAP3 PUSH2 0x1FCF SWAP1 PUSH2 0xC53 JUMP JUMPDEST SWAP3 PUSH2 0x1ED9 JUMP JUMPDEST SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1FF7 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1FEF DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xE30 JUMP JUMPDEST PUSH0 PUSH2 0x1ECD JUMP JUMPDEST PUSH2 0xE65 JUMP JUMPDEST PUSH2 0x200B SWAP1 PUSH2 0x1D19 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x201E SWAP1 PUSH2 0x2019 PUSH2 0x209D JUMP JUMPDEST PUSH2 0x2020 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x203B PUSH2 0x2035 PUSH2 0x2030 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x204B JUMPI PUSH2 0x2049 SWAP1 PUSH2 0x2415 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x208E PUSH2 0x2057 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x205F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x209B SWAP1 PUSH2 0x200D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x20A5 PUSH2 0x14E0 JUMP JUMPDEST PUSH2 0x20BE PUSH2 0x20B8 PUSH2 0x20B3 PUSH2 0x2506 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x20C5 JUMPI JUMP JUMPDEST PUSH2 0x2107 PUSH2 0x20D0 PUSH2 0x2506 JUMP JUMPDEST PUSH2 0x20D8 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2114 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2120 ADDRESS PUSH2 0x210B JUMP JUMPDEST PUSH2 0x2152 PUSH2 0x214C PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x219C JUMPI JUMPDEST PUSH2 0x2160 JUMPI JUMP JUMPDEST PUSH2 0x2168 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2198 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x21A5 PUSH2 0x2513 JUMP JUMPDEST PUSH2 0x21D7 PUSH2 0x21D1 PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ ISZERO PUSH2 0x215A JUMP JUMPDEST POP PUSH2 0x21E7 PUSH2 0x209D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21F2 SWAP1 PUSH2 0x21DE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21FD SWAP1 PUSH2 0x683 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2209 SWAP1 PUSH2 0x21F4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2215 SWAP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2221 DUP2 PUSH2 0x626 JUMP JUMPDEST SUB PUSH2 0x2228 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x2239 DUP3 PUSH2 0x2218 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2254 JUMPI PUSH2 0x2251 SWAP2 PUSH0 ADD PUSH2 0x222C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2287 PUSH1 0x20 PUSH2 0x2271 PUSH2 0x226C DUP7 PUSH2 0x2200 JUMP JUMPDEST PUSH2 0x220C JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x227F PUSH2 0x152 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xD80 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2297 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x2367 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x22F8 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x22B9 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x22F4 SWAP1 PUSH2 0x22C5 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2313 PUSH2 0x230D PUSH2 0x2308 PUSH2 0x13E8 JUMP JUMPDEST PUSH2 0x626 JUMP JUMPDEST SWAP2 PUSH2 0x626 JUMP JUMPDEST SUB PUSH2 0x2328 JUMPI PUSH2 0x2323 SWAP3 SWAP4 POP PUSH2 0x253D JUMP JUMPDEST PUSH2 0x22B7 JUMP JUMPDEST PUSH2 0x2363 DUP5 PUSH2 0x2334 PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x636 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2389 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2390 JUMPI JUMPDEST PUSH2 0x2381 DUP2 DUP4 PUSH2 0x4E3 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x223B JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x22A4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2377 JUMP JUMPDEST PUSH2 0x23A0 ADDRESS PUSH2 0x210B JUMP JUMPDEST PUSH2 0x23D2 PUSH2 0x23CC PUSH32 0x0 PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST SUB PUSH2 0x23D9 JUMPI JUMP JUMPDEST PUSH2 0x23E1 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2411 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x241D PUSH2 0x2481 JUMP JUMPDEST PUSH2 0x2435 PUSH2 0x242B PUSH0 DUP4 ADD PUSH2 0xBEC JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0xED0 JUMP JUMPDEST SWAP1 PUSH2 0x2469 PUSH2 0x2463 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x6AB JUMP JUMPDEST SWAP2 PUSH2 0x6AB JUMP JUMPDEST SWAP2 PUSH2 0x2472 PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x247C DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x24D1 PUSH2 0x25C6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24DB PUSH2 0x24C9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24EE SWAP1 PUSH2 0x24E9 PUSH2 0x25C6 JUMP JUMPDEST PUSH2 0x24F0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24F9 SWAP1 PUSH2 0x269E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2504 SWAP1 PUSH2 0x24DD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x250E PUSH2 0xBCF JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x251B PUSH2 0xBCF JUMP JUMPDEST POP PUSH2 0x2536 PUSH0 PUSH2 0x2530 PUSH2 0x252B PUSH2 0x13E8 JUMP JUMPDEST PUSH2 0x26A9 JUMP JUMPDEST ADD PUSH2 0xBEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2547 DUP3 PUSH2 0x26AC JUMP JUMPDEST DUP2 PUSH2 0x2572 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH2 0x257B PUSH2 0x152 JUMP JUMPDEST DUP1 PUSH2 0x2585 DUP2 PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2591 DUP2 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x25A3 PUSH2 0x259D PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x25B7 JUMPI PUSH2 0x25B3 SWAP2 PUSH2 0x27BC JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x25C1 PUSH2 0x2721 JUMP JUMPDEST PUSH2 0x25B5 JUMP JUMPDEST PUSH2 0x25D7 PUSH2 0x25D1 PUSH2 0x27EB JUMP JUMPDEST ISZERO PUSH2 0x81E JUMP JUMPDEST PUSH2 0x25DD JUMPI JUMP JUMPDEST PUSH2 0x25E5 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2615 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x262A SWAP1 PUSH2 0x2625 PUSH2 0x25C6 JUMP JUMPDEST PUSH2 0x262C JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2647 PUSH2 0x2641 PUSH2 0x263C PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST SWAP2 PUSH2 0x17D JUMP JUMPDEST EQ PUSH2 0x2657 JUMPI PUSH2 0x2655 SWAP1 PUSH2 0x2415 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x269A PUSH2 0x2663 PUSH0 PUSH2 0xD50 JUMP JUMPDEST PUSH2 0x266B PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x26A7 SWAP1 PUSH2 0x2619 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x26C0 PUSH2 0x26BA PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ PUSH2 0x26E2 JUMPI PUSH2 0x26E0 SWAP1 PUSH0 PUSH2 0x26DA PUSH2 0x26D5 PUSH2 0x13E8 JUMP JUMPDEST PUSH2 0x26A9 JUMP JUMPDEST ADD PUSH2 0xED0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x271D SWAP1 PUSH2 0x26EE PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2734 PUSH2 0x272E PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST GT PUSH2 0x273B JUMPI JUMP JUMPDEST PUSH2 0x2743 PUSH2 0x152 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2773 PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x278E PUSH2 0x2789 DUP4 PUSH2 0x521 JUMP JUMPDEST PUSH2 0x50C JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x27AE JUMPI PUSH2 0x27A3 RETURNDATASIZE PUSH2 0x277C JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x27B6 PUSH2 0x2777 JUMP JUMPDEST SWAP1 PUSH2 0x27AC JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x27E8 SWAP4 PUSH2 0x27CA PUSH2 0x2777 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x27DF PUSH2 0x2793 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x2809 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x27F3 PUSH2 0x1462 JUMP JUMPDEST POP PUSH2 0x2806 PUSH0 PUSH2 0x2800 PUSH2 0x24A5 JUMP JUMPDEST ADD PUSH2 0x151E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x281D SWAP1 PUSH2 0x2816 PUSH2 0x2777 JUMP JUMPDEST POP ISZERO PUSH2 0x81E JUMP JUMPDEST PUSH0 EQ PUSH2 0x2829 JUMPI POP PUSH2 0x28AD JUMP JUMPDEST PUSH2 0x2832 DUP3 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x2844 PUSH2 0x283E PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ DUP1 PUSH2 0x2892 JUMPI JUMPDEST PUSH2 0x2853 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x288E SWAP1 PUSH2 0x285F PUSH2 0x152 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x28A7 PUSH2 0x28A1 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST EQ PUSH2 0x284B JUMP JUMPDEST PUSH2 0x28B6 DUP2 PUSH2 0x2539 JUMP JUMPDEST PUSH2 0x28C8 PUSH2 0x28C2 PUSH0 PUSH2 0xC37 JUMP JUMPDEST SWAP2 PUSH2 0x287 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x28D7 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x28DF PUSH2 0x152 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x290F PUSH1 0x4 DUP3 ADD PUSH2 0x24F JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY 0xA5 PUSH0 SGT PUSH13 0x411B847392E5B4891AD86C84C5 0xAE SWAP1 SWAP10 KECCAK256 PUSH6 0x3A8811713E41 CALLER 0xDB PUSH1 0x64 PUSH20 0x6F6C634300081900330000000000000000000000 ","sourceMap":"1791:4381:64:-:0;;;;;;;;;-1:-1:-1;1791:4381:64;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1882:25::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;;;1791:4381;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;1958:62::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1791:4381::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1916:33::-;;;;;;:::i;:::-;;:::o;1791:4381::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1791:4381:64:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4134:147::-;4249:23;4134:147;4249:15;:23;4134:147;4214:7;;:::i;:::-;4249;;:15;:::i;:::-;:23;:::i;:::-;;:::i;:::-;4234:39;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1791:4381:64:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;5638:531::-;5708:13;5720:1;5708:13;:::i;:::-;5744:3;5723:1;:19;;5727:15;:8;:15;:::i;:::-;5723:19;:::i;:::-;;;:::i;:::-;;;;;5768:11;;:8;5777:1;5768:11;;:::i;:::-;;;:::i;:::-;:20;;5783:5;5768:20;:::i;:::-;;;:::i;:::-;;5764:387;;5744:3;;;:::i;:::-;5708:13;;5764:387;5809:43;5823:8;5809:11;5823:29;;:8;5832:19;:15;:8;:15;:::i;:::-;:19;5850:1;5832:19;:::i;:::-;;;:::i;:::-;5823:29;;:::i;:::-;;;:::i;:::-;5809:8;;:11;:::i;:::-;:43;;:::i;:::-;5955:10;5963:1;5955:10;:::i;:::-;5879:32;5871:7;5879:32;:30;:20;5893:5;5879:20;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:35;;:32;5871:44;5879:32;;;;;5764:387;5912:1;5879:35;5912:1;5879:35;:::i;:::-;;;:::i;:::-;;:::i;:::-;5871:44;;:::i;:::-;5930:5;5916:32;;:30;:20;5930:5;5916:20;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:35;;5871:94;5916:32;5871:81;5916:32;;;;;5764:387;5949:1;5916:35;5949:1;5916:35;:::i;:::-;;;:::i;:::-;;:::i;:::-;5871:81;;:::i;:::-;:94;:::i;:::-;6068:10;6076:1;6068:10;:::i;:::-;5984:7;5992:32;;:30;:20;6006:5;5992:20;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;6029:20;5984:44;6029:30;5992:32;:35;;6029:32;5992;6029;5992;;;;;5764:387;6025:1;5992:35;6025:1;5992:35;:::i;:::-;;;:::i;:::-;;:::i;:::-;5984:44;;:::i;:::-;6043:5;6029:20;:::i;:::-;:30;:::i;:::-;;:32;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:35;;5984:94;6029:32;5984:81;6029:32;;;;;5764:387;6062:1;6029:35;6062:1;6029:35;:::i;:::-;;;:::i;:::-;;:::i;:::-;5984:81;;:::i;:::-;:94;:::i;:::-;6097:12;;:8;:12;:::i;:::-;;:::i;:::-;5703:459;5638:531::o;6029:32::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;5992:::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;5916:::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;5879:::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;5723:19::-;;;;;5638:531;;;;:::i;:::-;:::o;1791:4381::-;;;:::o;3706:185::-;3867:16;:14;3823:26;3867:16;3706:185;3773:16;;:::i;:::-;3837:11;3823:26;:::i;:::-;3867:14;:::i;:::-;;:16;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3706:185;3860:23;;:::o;3867:16::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;1791:4381:64:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;1791:4381:64:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;3155:101::-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;1791:4381:64:-;;;:::o;5382:248::-;5439:4;;:::i;:::-;5473:1;5461:13;5473:1;5461:13;:::i;:::-;5497:3;5476:1;:19;;5480:15;:8;:15;:::i;:::-;5476:19;:::i;:::-;;;:::i;:::-;;;;;5521:11;;:8;5530:1;5521:11;;:::i;:::-;;;:::i;:::-;:20;;5536:5;5521:20;:::i;:::-;;;:::i;:::-;;5517:72;;5497:3;;;:::i;:::-;5461:13;;5517:72;5569:4;;;5562:11;:::o;5476:19::-;;;5617:5;5610:12;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;1791:4381:64:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;2370:8:64;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;1791:4381:64;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2291:147::-;2391:39;2291:147;;2402:28;2291:147;2402:28;:::i;:::-;2391:39;;:::i;:::-;2291:147::o;:::-;;;;;:::i;:::-;:::o;1791:4381::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;4494:880::-;4557:16;;:::i;:::-;4625:8;4611:30;4625:15;:8;:15;:::i;:::-;4611:30;:::i;:::-;4668:1;4652:17;4668:1;4652:17;:::i;:::-;4699:1;4687:13;4699:1;4687:13;:::i;:::-;4682:507;4723:3;4702:1;:19;;4706:15;:8;:15;:::i;:::-;4702:19;:::i;:::-;;;:::i;:::-;;;;;4764:26;4778:11;;:8;4787:1;4778:11;;:::i;:::-;;;:::i;:::-;4764:26;:::i;:::-;4831:16;;:14;:4;:14;:::i;:::-;;:16;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4723:3;4805:42;4881:1;4869:13;4881:1;4869:13;:::i;:::-;4903:3;4884:1;:17;;4888:13;:6;:13;:::i;:::-;4884:17;:::i;:::-;;;:::i;:::-;;;;;4931:9;;:6;4938:1;4931:9;;:::i;:::-;;:::i;:::-;:18;;4944:5;4931:18;:::i;:::-;;;:::i;:::-;;4927:153;;4903:3;;;:::i;:::-;4869:13;;4927:153;4997:4;;;;4974:28;4989:13;5025:7;4997:4;4989:13;:::i;:::-;4974:28;:5;4980;;4974:28;;;:::i;:::-;;:::i;:::-;5025:7;:::i;:::-;5055:5;4864:231;5115:5;:21;;5124:12;:5;:12;:::i;:::-;5115:21;:::i;:::-;;;:::i;:::-;;5111:67;;4723:3;;;:::i;:::-;4687:13;;;5111:67;5157:5;;;;4682:507;5227:20;5241:5;5227:20;:::i;:::-;5275:1;5263:13;5275:1;5263:13;:::i;:::-;5289:3;5278:1;:9;;5282:5;5278:9;:::i;:::-;;;:::i;:::-;;;;;5289:3;5321:5;5309:20;5321:8;;:5;5327:1;5321:8;;:::i;:::-;;:::i;:::-;5309:20;:6;5316:1;;5309:20;;;:::i;:::-;;:::i;:::-;5289:3;:::i;:::-;5263:13;;5278:9;;;;;5353:13;:::o;4884:17::-;;;;;;;;4831:16;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;4702:19::-;;;;;;;;1791:4381;;;:::o;3431:98::-;3479:7;;:::i;:::-;3506:8;:15;:8;:15;:::i;:::-;3499:22;:::o;1791:4381::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2095:188:64;2247:28;2236:39;2095:188;;;:::i;:::-;2214:10;;;:::i;:::-;2247:28;:::i;:::-;2236:39;;:::i;:::-;2095:188::o;:::-;;;;:::i;:::-;:::o;1791:4381::-;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;3204:98::-;3250:16;;:::i;:::-;3286:8;3279:15;3286:8;3279:15;:::i;:::-;;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1791:4381:64:-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;2538:535::-;2606:79;2614:11;:25;;2629:10;2637:1;2629:10;:::i;:::-;2614:25;:::i;:::-;;;:::i;:::-;;;2606:79;:::i;:::-;2696:26;:13;:8;:13;:::i;:::-;2710:11;2696:26;;:::i;:::-;2759:38;;:36;:26;2773:11;2759:26;:::i;:::-;:36;:::i;:::-;;:38;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2538:535;2733:64;2813:13;2825:1;2813:13;:::i;:::-;2808:258;2847:3;2828:1;:17;;2832:13;:6;:13;:::i;:::-;2828:17;:::i;:::-;;;:::i;:::-;;;;;2884:5;:1;:5;2888:1;2884:5;:::i;:::-;;;:::i;:::-;2910:3;2891:1;:17;;2895:13;:6;:13;:::i;:::-;2891:17;:::i;:::-;;;:::i;:::-;;;;;2910:3;2966:11;2934:43;2966:11;2934:29;:18;:7;2942:9;;:6;2949:1;2942:9;;:::i;:::-;;:::i;:::-;2934:18;;:::i;:::-;2953:9;;:6;2960:1;2953:9;;:::i;:::-;;:::i;:::-;2934:29;;:::i;:::-;:43;:::i;:::-;2996;3028:11;2996:29;:18;:7;3004:9;;:6;3011:1;3004:9;;:::i;:::-;;:::i;:::-;2996:18;;:::i;:::-;3015:9;;:6;3022:1;3015:9;;:::i;:::-;;:::i;:::-;2996:29;;:::i;:::-;:43;:::i;:::-;2910:3;:::i;:::-;2872:17;;2891;;;2847:3;2891:17;2847:3;:::i;:::-;2813:13;;;2828:17;;;;;2538:535::o;2759:38::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;2538:535::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2658:162::-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1791:4381:64;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;2446:84:64:-;;;;:::i;:::-;:::o;1791:4381::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;1791:4381:64:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1791:4381:64;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2113800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","addPool(address)":"infinite","allPools(uint256)":"infinite","getAllPools()":"infinite","getPool(address,address)":"infinite","getPoolAssets(address)":"infinite","getPoolByAssets(address,address)":"infinite","getPoolsByAsset(address)":"infinite","getPoolsCount()":"2849","initialize(address)":"infinite","owner()":"2928","poolExist(address)":"infinite","proxiableUUID()":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","removePool(address)":"infinite","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addPool(address)":"d914cd4b","allPools(uint256)":"41d1de97","getAllPools()":"d88ff1f4","getPool(address,address)":"531aa03e","getPoolAssets(address)":"4276b97b","getPoolByAssets(address,address)":"2d5e94a7","getPoolsByAsset(address)":"b4340e6a","getPoolsCount()":"b4ac6860","initialize(address)":"c4d66de8","owner()":"8da5cb5b","poolExist(address)":"89345efb","proxiableUUID()":"52d1902d","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","removePool(address)":"3b7d0946","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"}],\"name\":\"addPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPools\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"}],\"name\":\"getPoolAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset2\",\"type\":\"address\"}],\"name\":\"getPoolByAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolsByAsset\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_register\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"}],\"name\":\"poolExist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_register\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"}],\"name\":\"removePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getAllPools()\":{\"details\":\"Retrieves all the pools created by the factory.\",\"returns\":{\"_0\":\"An array of pool addresses.\"}},\"getPoolAssets(address)\":{\"details\":\"Retrieves the assets of a specific pool.\",\"params\":{\"poolAddress\":\"The address of the pool.\"},\"returns\":{\"_0\":\"An array of asset addresses.\"}},\"getPoolByAssets(address,address)\":{\"details\":\"Retrieves the pool address based on the given assets.\",\"params\":{\"asset1\":\"The address of the first asset.\",\"asset2\":\"The address of the second asset.\"},\"returns\":{\"_0\":\"The address of the pool.\"}},\"getPoolsByAsset(address)\":{\"details\":\"Returns an array of pool addresses that contain the specified token.\",\"params\":{\"token\":\"The address of the token to search for.\"},\"returns\":{\"_0\":\"An array of pool addresses.\"}},\"getPoolsCount()\":{\"details\":\"Retrieves the number of pools created by the factory.\",\"returns\":{\"_0\":\"The count of pools.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/BaluniV1PoolRegistry.sol\":\"BaluniV1PoolRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Pool.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Pool\\r\\n * @dev Interface for the BaluniV1Pool contract\\r\\n */\\r\\ninterface IBaluniV1Pool {\\r\\n    struct AssetInfo {\\r\\n        address asset;\\r\\n        uint256 weight;\\r\\n        uint256 slippage;\\r\\n        uint256 reserve;\\r\\n    }\\r\\n\\r\\n    event WeightsRebalanced(address indexed user, uint256[] amountsToAdd);\\r\\n    event Swap(address indexed user, address fromToken, address toToken, uint256 amountIn, uint256 amountOut);\\r\\n    event Withdraw(address indexed user, uint256 amount);\\r\\n    event Deposit(address indexed user, uint256 amount);\\r\\n    event RebalancePerformed(address indexed user, address[] assets);\\r\\n\\r\\n    function rebalanceAndDeposit(address receiver) external returns (uint256[] memory);\\r\\n\\r\\n    function swap(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount,\\r\\n        uint256 minAmount,\\r\\n        address receiver,\\r\\n        uint256 deadline\\r\\n    ) external returns (uint256 amountOut, uint256 fee);\\r\\n\\r\\n    function quotePotentialSwap(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function getSlippage(address token) external view returns (uint256);\\r\\n\\r\\n    function getTokenWeight(address token) external view returns (uint256);\\r\\n\\r\\n    function getDeviationForToken(address token) external view returns (uint256);\\r\\n\\r\\n    function getSlippageParams() external view returns (uint256[] memory);\\r\\n\\r\\n    function deposit(address to, uint256[] memory amounts, uint256 deadline) external returns (uint256);\\r\\n\\r\\n    function withdraw(uint256 share, address to, uint256 deadline) external returns (uint256);\\r\\n\\r\\n    function getAmountOut(address fromToken, address toToken, uint256 amount) external view returns (uint256);\\r\\n\\r\\n    function rebalance() external;\\r\\n\\r\\n    function getDeviations() external view returns (bool[] memory directions, uint256[] memory deviations);\\r\\n\\r\\n    function assetLiquidity(uint256 assetIndex) external view returns (uint256);\\r\\n\\r\\n    function totalValuation() external view returns (uint256 totalVal, uint256[] memory valuations);\\r\\n\\r\\n    function liquidity() external view returns (uint256);\\r\\n\\r\\n    function unitPrice() external view returns (uint256);\\r\\n\\r\\n    function getReserves() external view returns (uint256[] memory);\\r\\n\\r\\n    function getAssetReserve(address asset) external view returns (uint256);\\r\\n\\r\\n    function getAssets() external view returns (address[] memory);\\r\\n\\r\\n    function getWeights() external view returns (uint256[] memory);\\r\\n\\r\\n    function isRebalanceNeeded() external view returns (bool);\\r\\n}\\r\\n\",\"keccak256\":\"0xee1a088737643c523dd1651cb6b00182d35a9365426a04493680682b38ea16d6\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/registry/BaluniV1PoolRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Pool.sol';\\r\\n\\r\\ncontract BaluniV1PoolRegistry is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\r\\n    address[] public allPools;\\r\\n\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    mapping(address => mapping(address => address)) public getPool;\\r\\n\\r\\n    event PoolCreated(address indexed pool, address[] assets);\\r\\n\\r\\n    function initialize(address _register) public initializer {\\r\\n        __UUPSUpgradeable_init();\\r\\n        __Ownable_init(msg.sender);\\r\\n        registry = IBaluniV1Registry(_register);\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _register, uint64 _version) public reinitializer(_version) {\\r\\n        registry = IBaluniV1Registry(_register);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    function addPool(address poolAddress) external onlyOwner {\\r\\n        require(poolAddress != address(0), 'BaluniV1PoolFactory: INVALID_POOL_ADDRESS');\\r\\n        allPools.push(poolAddress);\\r\\n        address[] memory assets = IBaluniV1Pool(poolAddress).getAssets();\\r\\n        for (uint256 i = 0; i < assets.length; i++) {\\r\\n            for (uint256 j = i + 1; j < assets.length; j++) {\\r\\n                getPool[assets[i]][assets[j]] = poolAddress;\\r\\n                getPool[assets[j]][assets[i]] = poolAddress;\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves all the pools created by the factory.\\r\\n     * @return An array of pool addresses.\\r\\n     */\\r\\n    function getAllPools() external view returns (address[] memory) {\\r\\n        return allPools;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the number of pools created by the factory.\\r\\n     * @return The count of pools.\\r\\n     */\\r\\n    function getPoolsCount() external view returns (uint256) {\\r\\n        return allPools.length;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the assets of a specific pool.\\r\\n     * @param poolAddress The address of the pool.\\r\\n     * @return An array of asset addresses.\\r\\n     */\\r\\n    function getPoolAssets(address poolAddress) external view returns (address[] memory) {\\r\\n        IBaluniV1Pool pool = IBaluniV1Pool(poolAddress);\\r\\n        return pool.getAssets();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the pool address based on the given assets.\\r\\n     * @param asset1 The address of the first asset.\\r\\n     * @param asset2 The address of the second asset.\\r\\n     * @return The address of the pool.\\r\\n     */\\r\\n    function getPoolByAssets(address asset1, address asset2) external view returns (address) {\\r\\n        return address(getPool[asset1][asset2]);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Returns an array of pool addresses that contain the specified token.\\r\\n     * @param token The address of the token to search for.\\r\\n     * @return An array of pool addresses.\\r\\n     */\\r\\n    function getPoolsByAsset(address token) external view returns (address[] memory) {\\r\\n        address[] memory pools = new address[](allPools.length);\\r\\n        uint256 count = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < allPools.length; i++) {\\r\\n            IBaluniV1Pool pool = IBaluniV1Pool(allPools[i]);\\r\\n            address[] memory assets = pool.getAssets();\\r\\n\\r\\n            for (uint256 j = 0; j < assets.length; j++) {\\r\\n                if (assets[j] == token) {\\r\\n                    pools[count] = address(pool);\\r\\n                    count++;\\r\\n                    break;\\r\\n                }\\r\\n            }\\r\\n\\r\\n            if (count == pools.length) {\\r\\n                break;\\r\\n            }\\r\\n        }\\r\\n\\r\\n        address[] memory result = new address[](count);\\r\\n        for (uint256 i = 0; i < count; i++) {\\r\\n            result[i] = pools[i];\\r\\n        }\\r\\n\\r\\n        return result;\\r\\n    }\\r\\n\\r\\n    function poolExist(address _pool) external view returns (bool) {\\r\\n        for (uint256 i = 0; i < allPools.length; i++) {\\r\\n            if (allPools[i] == _pool) {\\r\\n                return true;\\r\\n            }\\r\\n        }\\r\\n        return false;\\r\\n    }\\r\\n\\r\\n    function removePool(address _pool) external onlyOwner {\\r\\n        for (uint256 i = 0; i < allPools.length; i++) {\\r\\n            if (allPools[i] == _pool) {\\r\\n                allPools[i] = allPools[allPools.length - 1];\\r\\n                getPool[IBaluniV1Pool(_pool).getAssets()[0]][IBaluniV1Pool(_pool).getAssets()[1]] = address(0);\\r\\n                getPool[IBaluniV1Pool(_pool).getAssets()[1]][IBaluniV1Pool(_pool).getAssets()[0]] = address(0);\\r\\n                allPools.pop();\\r\\n                break;\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x1c82a3e479f33e9753f72afa5ccca5927919ecda9f100e1b916b7fa9e66eda99\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":18186,"contract":"contracts/registry/BaluniV1PoolRegistry.sol:BaluniV1PoolRegistry","label":"allPools","offset":0,"slot":"0","type":"t_array(t_address)dyn_storage"},{"astId":18189,"contract":"contracts/registry/BaluniV1PoolRegistry.sol:BaluniV1PoolRegistry","label":"registry","offset":0,"slot":"1","type":"t_contract(IBaluniV1Registry)4909"},{"astId":18195,"contract":"contracts/registry/BaluniV1PoolRegistry.sol:BaluniV1PoolRegistry","label":"getPool","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_address))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_address)dyn_storage":{"base":"t_address","encoding":"dynamic_array","label":"address[]","numberOfBytes":"32"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_address,t_mapping(t_address,t_address))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => address))","numberOfBytes":"32","value":"t_mapping(t_address,t_address)"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/registry/BaluniV1Registry.sol":{"BaluniV1Registry":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_1inchSpotAgg","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BPS_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MAX_BPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_REBALANCE_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniAgentFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniDCAVaultRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniHyperPoolZap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniPoolPeriphery","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniPoolRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniPoolZap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniRebalancer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniSwapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baluniYearnVaultRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"get1inchSpotAgg","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPS_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniAgentFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniDCAVaultRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniHyperPoolZap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolPeriphery","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniPoolZap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRebalancer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniSwapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaluniYearnVaultRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMAX_BPS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getREBALANCE_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStaticOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUSDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapQuoter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__1inchSpotAgg","type":"address"}],"name":"set1inchSpotAgg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__BPS_FEE","type":"uint256"}],"name":"setBPS_FEE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniAgentFactory","type":"address"}],"name":"setBaluniAgentFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniDCAVaultRegistry","type":"address"}],"name":"setBaluniDCAVaultRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniHyperPoolZap","type":"address"}],"name":"setBaluniHyperPoolZap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniOracle","type":"address"}],"name":"setBaluniOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolPeriphery","type":"address"}],"name":"setBaluniPoolPeriphery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolRegistry","type":"address"}],"name":"setBaluniPoolRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniPoolZap","type":"address"}],"name":"setBaluniPoolZap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRebalancer","type":"address"}],"name":"setBaluniRebalancer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRegistry","type":"address"}],"name":"setBaluniRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniRouter","type":"address"}],"name":"setBaluniRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniSwapper","type":"address"}],"name":"setBaluniSwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baluniYearnVaultRegistry","type":"address"}],"name":"setBaluniYearnVaultRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__REBALANCE_THRESHOLD","type":"uint256"}],"name":"setREBALANCE_THRESHOLD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staticOracle","type":"address"}],"name":"setStaticOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_USDC","type":"address"}],"name":"setUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapFactory","type":"address"}],"name":"setUniswapFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapQuoter","type":"address"}],"name":"setUniswapQuoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapRouter","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_WNATIVE","type":"address"}],"name":"setWNATIVE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staticOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapQuoter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":87,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1Registry":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IBaluniV1Registry":{"entryPoint":79,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":143,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":133,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":123,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":101,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":98,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b612f6061009c8239608051818181612735015281816127ba01526129bb0152612f6090f35b6043565b60405190565b5f80fd5b604d604f565b565b6055608f565b565b60018060a01b031690565b90565b607460706078926057565b6062565b6057565b90565b6082906065565b90565b608c90607b565b90565b6096306085565b60805256fe60806040526004361015610013575b6119f6565b61001d5f356104ec565b80630218ecd6146104e75780630241bffa146104e2578063040f767e146104dd57806304cc7325146104d85780630f21717d146104d35780631292f02e146104ce5780631acb6141146104c95780631bf01e9b146104c457806326158136146104bf5780632da52442146104ba57806332327d1f146104b557806332569e02146104b057806334decfc9146104ab57806339b65140146104a65780633b19e84a146104a15780633e6dfa361461049c578063400fb66814610497578063468a7071146104925780634b66a1351461048d5780634db4a352146104885780634f1ef286146104835780634f4608a21461047e578063524900b51461047957806352d1902d146104745780635333c1181461046f578063588c5b701461046a57806358a672331461046557806361d027b3146104605780636c43274c1461045b5780636c9c007814610456578063715018a614610451578063735de9f71461044c578063782dd902146104475780637dfb7ea1146104425780638129fc1c1461043d57806382755ebb14610438578063853771881461043357806385462d6f1461042e57806389a30271146104295780638bdb2afa146104245780638da5cb5b1461041f5780638e1c3a8a1461041a5780638ffc0673146104155780639380fb6f146104105780639454705f1461040b57806399c22ca6146104065780639d9a9d47146104015780639e6453f8146103fc578063a23dccee146103f7578063a5d2236f146103f2578063ad3cb1cc146103ed578063b0a70975146103e8578063b381cf40146103e3578063b3e089a2146103de578063b691a419146103d9578063b6fe9cc7146103d4578063b9f5e617146103cf578063ba535c54146103ca578063bb3ba04c146103c5578063bea9849e146103c0578063c08f786b146103bb578063c3f5df5c146103b6578063c9aba8ae146103b1578063cc01e9a6146103ac578063cff49d68146103a7578063d7e53673146103a2578063e04b677f1461039d578063e23d837b14610398578063e528ca1214610393578063ea233c051461038e578063f0f4426014610389578063f1dccde714610384578063f2fde38b1461037f578063f5b84f641461037a578063f5d2d99814610375578063f98977a9146103705763ffa08e950361000e576119c1565b61198e565b611959565b611926565b6118f3565b6118c0565b61188d565b611858565b611823565b6117df565b61179d565b61176a565b611735565b611702565b6116cd565b61169a565b611667565b611634565b6115ff565b6115cc565b611597565b611555565b611520565b6114de565b6114a9565b611465565b611430565b6112ff565b6112cc565b611299565b611264565b611220565b6111dc565b611198565b611165565b611130565b6110fb565b6110c6565b611084565b611040565b61100b565b610fc7565b610f94565b610f5f565b610f1b565b610ed7565b610e95565b610e60565b610e2d565b610df8565b610db4565b610d72565b610d3d565b610cf9565b610c9f565b610c6a565b610c40565b610ac2565b610a7e565b610a3a565b6109f8565b6109c3565b61098e565b610959565b610915565b610886565b610851565b61081e565b6107a7565b610772565b61073d565b610708565b6106c4565b61068f565b61065a565b610627565b6105a8565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261050a57565b6104fc565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61053c906008610541930261050f565b610513565b90565b9061054f915461052c565b90565b61055e600a5f90610544565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61058390610561565b90565b61058f9061057a565b9052565b91906105a6905f60208501940190610586565b565b346105d8576105b8366004610500565b6105d46105c3610552565b6105cb6104f2565b91829182610593565b0390f35b6104f8565b5f80fd5b6105ea8161057a565b036105f157565b5f80fd5b90503590610602826105e1565b565b9060208282031261061d5761061a915f016105f5565b90565b6104fc565b5f0190565b346106555761063f61063a366004610604565b611aa2565b6106476104f2565b8061065181610622565b0390f35b6104f8565b3461068a5761066a366004610500565b610686610675611ad7565b61067d6104f2565b91829182610593565b0390f35b6104f8565b346106bf5761069f366004610500565b6106bb6106aa611aed565b6106b26104f2565b91829182610593565b0390f35b6104f8565b346106f4576106d4366004610500565b6106f06106df611b03565b6106e76104f2565b91829182610593565b0390f35b6104f8565b61070560025f90610544565b90565b3461073857610718366004610500565b6107346107236106f9565b61072b6104f2565b91829182610593565b0390f35b6104f8565b3461076d5761074d366004610500565b610769610758611b19565b6107606104f2565b91829182610593565b0390f35b6104f8565b346107a257610782366004610500565b61079e61078d611b2f565b6107956104f2565b91829182610593565b0390f35b6104f8565b346107d5576107bf6107ba366004610604565b611b65565b6107c76104f2565b806107d181610622565b0390f35b6104f8565b90565b6107e6816107da565b036107ed57565b5f80fd5b905035906107fe826107dd565b565b9060208282031261081957610816915f016107f1565b90565b6104fc565b3461084c57610836610831366004610800565b611c04565b61083e6104f2565b8061084881610622565b0390f35b6104f8565b3461088157610861366004610500565b61087d61086c611c0f565b6108746104f2565b91829182610593565b0390f35b6104f8565b346108b657610896366004610500565b6108b26108a1611c25565b6108a96104f2565b91829182610593565b0390f35b6104f8565b90565b6108ce9060086108d3930261050f565b6108bb565b90565b906108e191546108be565b90565b6108f060115f906108d6565b90565b6108fc906107da565b9052565b9190610913905f602085019401906108f3565b565b3461094557610925366004610500565b6109416109306108e4565b6109386104f2565b91829182610900565b0390f35b6104f8565b61095660065f90610544565b90565b3461098957610969366004610500565b61098561097461094a565b61097c6104f2565b91829182610593565b0390f35b6104f8565b346109be5761099e366004610500565b6109ba6109a9611c3b565b6109b16104f2565b91829182610593565b0390f35b6104f8565b346109f3576109d3366004610500565b6109ef6109de611c51565b6109e66104f2565b91829182610593565b0390f35b6104f8565b34610a2657610a10610a0b366004610604565b611c86565b610a186104f2565b80610a2281610622565b0390f35b6104f8565b610a3760085f90610544565b90565b34610a6a57610a4a366004610500565b610a66610a55610a2b565b610a5d6104f2565b91829182610593565b0390f35b6104f8565b610a7b60045f90610544565b90565b34610aae57610a8e366004610500565b610aaa610a99610a6f565b610aa16104f2565b91829182610593565b0390f35b6104f8565b610abf60155f90610544565b90565b34610af257610ad2366004610500565b610aee610add610ab3565b610ae56104f2565b91829182610593565b0390f35b6104f8565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90610b4090610aff565b810190811067ffffffffffffffff821117610b5a57604052565b610b09565b90610b72610b6b6104f2565b9283610b36565b565b67ffffffffffffffff8111610b9257610b8e602091610aff565b0190565b610b09565b90825f939282370152565b90929192610bb7610bb282610b74565b610b5f565b93818552602085019082840111610bd357610bd192610b97565b565b610afb565b9080601f83011215610bf657816020610bf393359101610ba2565b90565b610af7565b919091604081840312610c3b57610c14835f83016105f5565b92602082013567ffffffffffffffff8111610c3657610c339201610bd8565b90565b6105dd565b6104fc565b610c54610c4e366004610bfb565b90611cba565b610c5c6104f2565b80610c6681610622565b0390f35b34610c9a57610c7a366004610500565b610c96610c85611ceb565b610c8d6104f2565b91829182610900565b0390f35b6104f8565b34610ccf57610caf366004610500565b610ccb610cba611d01565b610cc26104f2565b91829182610593565b0390f35b6104f8565b90565b610ce090610cd4565b9052565b9190610cf7905f60208501940190610cd7565b565b34610d2957610d09366004610500565b610d25610d14611d86565b610d1c6104f2565b91829182610ce4565b0390f35b6104f8565b610d3a60165f90610544565b90565b34610d6d57610d4d366004610500565b610d69610d58610d2e565b610d606104f2565b91829182610593565b0390f35b6104f8565b34610da057610d8a610d85366004610604565b611db9565b610d926104f2565b80610d9c81610622565b0390f35b6104f8565b610db160035f90610544565b90565b34610de457610dc4366004610500565b610de0610dcf610da5565b610dd76104f2565b91829182610593565b0390f35b6104f8565b610df5600c5f90610544565b90565b34610e2857610e08366004610500565b610e24610e13610de9565b610e1b6104f2565b91829182610593565b0390f35b6104f8565b34610e5b57610e45610e40366004610604565b611de4565b610e4d6104f2565b80610e5781610622565b0390f35b6104f8565b34610e9057610e70366004610500565b610e8c610e7b611def565b610e836104f2565b91829182610593565b0390f35b6104f8565b34610ec357610ea5366004610500565b610ead611e55565b610eb56104f2565b80610ebf81610622565b0390f35b6104f8565b610ed460015f90610544565b90565b34610f0757610ee7366004610500565b610f03610ef2610ec8565b610efa6104f2565b91829182610593565b0390f35b6104f8565b610f1860105f90610544565b90565b34610f4b57610f2b366004610500565b610f47610f36610f0c565b610f3e6104f2565b91829182610593565b0390f35b6104f8565b610f5c60095f90610544565b90565b34610f8f57610f6f366004610500565b610f8b610f7a610f50565b610f826104f2565b91829182610593565b0390f35b6104f8565b34610fc257610fa4366004610500565b610fac61223b565b610fb46104f2565b80610fbe81610622565b0390f35b6104f8565b34610ff757610fd7366004610500565b610ff3610fe2612245565b610fea6104f2565b91829182610593565b0390f35b6104f8565b61100860135f906108d6565b90565b3461103b5761101b366004610500565b611037611026610ffc565b61102e6104f2565b91829182610900565b0390f35b6104f8565b3461107057611050366004610500565b61106c61105b61225b565b6110636104f2565b91829182610900565b0390f35b6104f8565b611081600f5f90610544565b90565b346110b457611094366004610500565b6110b061109f611075565b6110a76104f2565b91829182610593565b0390f35b6104f8565b6110c35f80610544565b90565b346110f6576110d6366004610500565b6110f26110e16110b9565b6110e96104f2565b91829182610593565b0390f35b6104f8565b3461112b5761110b366004610500565b611127611116612271565b61111e6104f2565b91829182610593565b0390f35b6104f8565b3461116057611140366004610500565b61115c61114b61228f565b6111536104f2565b91829182610593565b0390f35b6104f8565b346111935761117d611178366004610604565b6122c5565b6111856104f2565b8061118f81610622565b0390f35b6104f8565b346111c8576111a8366004610500565b6111c46111b36122d0565b6111bb6104f2565b91829182610900565b0390f35b6104f8565b6111d9600d5f90610544565b90565b3461120c576111ec366004610500565b6112086111f76111cd565b6111ff6104f2565b91829182610593565b0390f35b6104f8565b61121d60145f906108d6565b90565b3461125057611230366004610500565b61124c61123b611211565b6112436104f2565b91829182610900565b0390f35b6104f8565b61126160175f90610544565b90565b3461129457611274366004610500565b61129061127f611255565b6112876104f2565b91829182610593565b0390f35b6104f8565b346112c7576112b16112ac366004610800565b612306565b6112b96104f2565b806112c381610622565b0390f35b6104f8565b346112fa576112e46112df366004610604565b612331565b6112ec6104f2565b806112f681610622565b0390f35b6104f8565b3461132f5761130f366004610500565b61132b61131a61233c565b6113226104f2565b91829182610593565b0390f35b6104f8565b67ffffffffffffffff81116113525761134e602091610aff565b0190565b610b09565b9061136961136483611334565b610b5f565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61139f6005611357565b906113ac6020830161136e565b565b6113b6611395565b90565b6113c16113ae565b90565b6113cc6113b9565b90565b5190565b60209181520190565b90825f9392825e0152565b61140661140f602093611414936113fd816113cf565b938480936113d3565b958691016113dc565b610aff565b0190565b61142d9160208201915f8184039101526113e7565b90565b3461146057611440366004610500565b61145c61144b6113c4565b6114536104f2565b91829182611418565b0390f35b6104f8565b3461149557611475366004610500565b611491611480612352565b6114886104f2565b91829182610593565b0390f35b6104f8565b6114a6600e5f90610544565b90565b346114d9576114b9366004610500565b6114d56114c461149a565b6114cc6104f2565b91829182610593565b0390f35b6104f8565b3461150c576114f66114f1366004610604565b612388565b6114fe6104f2565b8061150881610622565b0390f35b6104f8565b61151d60055f90610544565b90565b3461155057611530366004610500565b61154c61153b611511565b6115436104f2565b91829182610593565b0390f35b6104f8565b346115835761156d611568366004610604565b6123b3565b6115756104f2565b8061157f81610622565b0390f35b6104f8565b61159460125f906108d6565b90565b346115c7576115a7366004610500565b6115c36115b2611588565b6115ba6104f2565b91829182610900565b0390f35b6104f8565b346115fa576115e46115df366004610604565b6123de565b6115ec6104f2565b806115f681610622565b0390f35b6104f8565b3461162f5761160f366004610500565b61162b61161a6123e9565b6116226104f2565b91829182610593565b0390f35b6104f8565b346116625761164c611647366004610604565b61241f565b6116546104f2565b8061165e81610622565b0390f35b6104f8565b346116955761167f61167a366004610604565b61244a565b6116876104f2565b8061169181610622565b0390f35b6104f8565b346116c8576116b26116ad366004610604565b612475565b6116ba6104f2565b806116c481610622565b0390f35b6104f8565b346116fd576116dd366004610500565b6116f96116e8612480565b6116f06104f2565b91829182610593565b0390f35b6104f8565b346117305761171a611715366004610604565b6124b6565b6117226104f2565b8061172c81610622565b0390f35b6104f8565b3461176557611745366004610500565b6117616117506124c1565b6117586104f2565b91829182610593565b0390f35b6104f8565b346117985761178261177d366004610604565b6124f7565b61178a6104f2565b8061179481610622565b0390f35b6104f8565b346117cb576117b56117b0366004610604565b612521565b6117bd6104f2565b806117c781610622565b0390f35b6104f8565b6117dc600b5f90610544565b90565b3461180f576117ef366004610500565b61180b6117fa6117d0565b6118026104f2565b91829182610593565b0390f35b6104f8565b61182060075f90610544565b90565b3461185357611833366004610500565b61184f61183e611814565b6118466104f2565b91829182610593565b0390f35b6104f8565b3461188857611868366004610500565b61188461187361252c565b61187b6104f2565b91829182610900565b0390f35b6104f8565b346118bb576118a56118a0366004610604565b612562565b6118ad6104f2565b806118b781610622565b0390f35b6104f8565b346118ee576118d86118d3366004610604565b61258d565b6118e06104f2565b806118ea81610622565b0390f35b6104f8565b346119215761190b611906366004610604565b61261d565b6119136104f2565b8061191d81610622565b0390f35b6104f8565b346119545761193e611939366004610604565b612648565b6119466104f2565b8061195081610622565b0390f35b6104f8565b3461198957611969366004610500565b611985611974612653565b61197c6104f2565b91829182610593565b0390f35b6104f8565b346119bc576119a66119a1366004610604565b612689565b6119ae6104f2565b806119b881610622565b0390f35b6104f8565b346119f1576119d1366004610500565b6119ed6119dc612694565b6119e46104f2565b91829182610593565b0390f35b6104f8565b5f80fd5b611a0b90611a066126aa565b611a95565b565b5f1b90565b90611a3173ffffffffffffffffffffffffffffffffffffffff91611a0d565b9181191691161790565b90565b611a52611a4d611a5792610561565b611a3b565b610561565b90565b611a6390611a3e565b90565b611a6f90611a5a565b90565b90565b90611a8a611a85611a9192611a66565b611a72565b8254611a12565b9055565b611aa0906005611a75565b565b611aab906119fa565b565b5f90565b5f1c90565b611ac2611ac791611ab1565b610513565b90565b611ad49054611ab6565b90565b611adf611aad565b50611aea6016611aca565b90565b611af5611aad565b50611b006006611aca565b90565b611b0b611aad565b50611b166017611aca565b90565b611b21611aad565b50611b2c6003611aca565b90565b611b37611aad565b50611b42600f611aca565b90565b611b5690611b516126aa565b611b58565b565b611b63906015611a75565b565b611b6e90611b45565b565b611b8190611b7c6126aa565b611bf7565b565b90611bae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91611a0d565b9181191691161790565b611bcc611bc7611bd1926107da565b611a3b565b6107da565b90565b90565b90611bec611be7611bf392611bb8565b611bd4565b8254611b83565b9055565b611c02906014611bd7565b565b611c0d90611b70565b565b611c17611aad565b50611c22600a611aca565b90565b611c2d611aad565b50611c386004611aca565b90565b611c43611aad565b50611c4e600c611aca565b90565b611c59611aad565b50611c635f611aca565b90565b611c7790611c726126aa565b611c79565b565b611c84906006611a75565b565b611c8f90611c66565b565b90611ca391611c9e612724565b611ca5565b565b90611cb891611cb3816127f6565b61286c565b565b90611cc491611c91565b565b5f90565b611cd6611cdb91611ab1565b6108bb565b90565b611ce89054611cca565b90565b611cf3611cc6565b50611cfe6013611cde565b90565b611d09611aad565b50611d146001611aca565b90565b5f90565b611d2c90611d276129aa565b611d7a565b90565b90565b611d46611d41611d4b92611d2f565b611a0d565b610cd4565b90565b611d777f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc611d32565b90565b50611d83611d4e565b90565b611d96611d91611d17565b611d1b565b90565b611daa90611da56126aa565b611dac565b565b611db7906003611a75565b565b611dc290611d99565b565b611dd590611dd06126aa565b611dd7565b565b611de2906007611a75565b565b611ded90611dc4565b565b611df7611aad565b50611e02600e611aca565b90565b611e0d6126aa565b611e15611e42565b565b90565b611e2e611e29611e3392611e17565b611a3b565b610561565b90565b611e3f90611e1a565b90565b611e53611e4e5f611e36565b612a28565b565b611e5d611e05565b565b60401c90565b60ff1690565b611e77611e7c91611e5f565b611e65565b90565b611e899054611e6b565b90565b151590565b67ffffffffffffffff1690565b611eaa611eaf91611ab1565b611e91565b90565b611ebc9054611e9e565b90565b67ffffffffffffffff1690565b611ee0611edb611ee592611e17565b611a3b565b611ebf565b90565b90565b611eff611efa611f0492611ee8565b611a3b565b611ebf565b90565b611f1090611a5a565b90565b611f27611f22611f2c92611e17565b611a3b565b6107da565b90565b90611f4267ffffffffffffffff91611a0d565b9181191691161790565b611f60611f5b611f6592611ebf565b611a3b565b611ebf565b90565b90565b90611f80611f7b611f8792611f4c565b611f68565b8254611f2f565b9055565b60401b90565b90611fa568ff000000000000000091611f8b565b9181191691161790565b611fb890611e8c565b90565b90565b90611fd3611fce611fda92611faf565b611fbb565b8254611f91565b9055565b611fe790611eeb565b9052565b9190611ffe905f60208501940190611fde565b565b612008612a94565b61201c6120165f8301611e7f565b15611e8c565b6120275f8301611eb2565b8061203a6120345f611ecc565b91611ebf565b1480612173575b9061205561204f6001611eeb565b91611ebf565b148061214b575b612067909115611e8c565b908161213a575b506120fe576120886120806001611eeb565b5f8401611f6b565b806120ec575b6120966121d7565b61209e575b50565b6120ab905f809101611fbe565b60016120e37fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916120da6104f2565b91829182611feb565b0390a15f61209b565b6120f960015f8401611fbe565b61208e565b6121066104f2565b7ff92ee8a90000000000000000000000000000000000000000000000000000000081528061213660048201610622565b0390fd5b612145915015611e8c565b5f61206e565b5061206761215830611f07565b3b61216b6121655f611f13565b916107da565b14905061205c565b5081612041565b90565b61219161218c6121969261217a565b611a3b565b6107da565b90565b90565b6121b06121ab6121b592612199565b611a3b565b6107da565b90565b90565b6121cf6121ca6121d4926121b8565b611a3b565b6107da565b90565b6121e033612ad6565b6121e8612aeb565b6121fc6121f5606461217d565b6011611bd7565b612210612209601e61219c565b6012611bd7565b61222561221e6127106121bb565b6013611bd7565b612239612232606461217d565b6014611bd7565b565b612243612000565b565b61224d611aad565b506122586009611aca565b90565b612263611cc6565b5061226e6012611cde565b90565b612279611aad565b5061228c5f612286612af5565b01611aca565b90565b612297611aad565b506122a26010611aca565b90565b6122b6906122b16126aa565b6122b8565b565b6122c3906016611a75565b565b6122ce906122a5565b565b6122d8611cc6565b506122e36011611cde565b90565b6122f7906122f26126aa565b6122f9565b565b612304906012611bd7565b565b61230f906122e6565b565b6123229061231d6126aa565b612324565b565b61232f906017611a75565b565b61233a90612311565b565b612344611aad565b5061234f600d611aca565b90565b61235a611aad565b506123656015611aca565b90565b612379906123746126aa565b61237b565b565b61238690600f611a75565b565b61239190612368565b565b6123a49061239f6126aa565b6123a6565b565b6123b190600e611a75565b565b6123bc90612393565b565b6123cf906123ca6126aa565b6123d1565b565b6123dc90600a611a75565b565b6123e7906123be565b565b6123f1611aad565b506123fc6008611aca565b90565b6124109061240b6126aa565b612412565b565b61241d906001611a75565b565b612428906123ff565b565b61243b906124366126aa565b61243d565b565b612448906010611a75565b565b6124539061242a565b565b612466906124616126aa565b612468565b565b612473906009611a75565b565b61247e90612455565b565b612488611aad565b506124936007611aca565b90565b6124a7906124a26126aa565b6124a9565b565b6124b490600d611a75565b565b6124bf90612496565b565b6124c9611aad565b506124d46005611aca565b90565b6124e8906124e36126aa565b6124ea565b565b6124f590600b611a75565b565b612500906124d7565b565b6125139061250e6126aa565b612515565b565b61251f905f611a75565b565b61252a90612502565b565b612534611cc6565b5061253f6014611cde565b90565b6125539061254e6126aa565b612555565b565b61256090600c611a75565b565b61256b90612542565b565b61257e906125796126aa565b612580565b565b61258b906002611a75565b565b6125969061256d565b565b6125a9906125a46126aa565b6125ab565b565b806125c66125c06125bb5f611e36565b61057a565b9161057a565b146125d6576125d490612a28565b565b6126196125e25f611e36565b6125ea6104f2565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b61262690612598565b565b612639906126346126aa565b61263b565b565b612646906008611a75565b565b61265190612628565b565b61265b611aad565b506126666002611aca565b90565b61267a906126756126aa565b61267c565b565b612687906004611a75565b565b61269290612669565b565b61269c611aad565b506126a7600b611aca565b90565b6126b2612271565b6126cb6126c56126c0612b19565b61057a565b9161057a565b036126d257565b6127146126dd612b19565b6126e56104f2565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b61272190611a5a565b90565b61272d30612718565b61275f6127597f000000000000000000000000000000000000000000000000000000000000000061057a565b9161057a565b1480156127a9575b61276d57565b6127756104f2565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806127a560048201610622565b0390fd5b506127b2612b26565b6127e46127de7f000000000000000000000000000000000000000000000000000000000000000061057a565b9161057a565b1415612767565b506127f46126aa565b565b6127ff906127eb565b565b61280a90611a3e565b90565b61281690612801565b90565b61282290611a5a565b90565b60e01b90565b61283481610cd4565b0361283b57565b5f80fd5b9050519061284c8261282b565b565b9060208282031261286757612864915f0161283f565b90565b6104fc565b919061289a602061288461287f8661280d565b612819565b6352d1902d906128926104f2565b938492612825565b825281806128aa60048201610622565b03915afa80915f9261297a575b50155f1461290b5750509060016128cc57505b565b612907906128d86104f2565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b928361292661292061291b611d4e565b610cd4565b91610cd4565b0361293b57612936929350612b50565b6128ca565b612976846129476104f2565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610ce4565b0390fd5b61299c91925060203d81116129a3575b6129948183610b36565b81019061284e565b905f6128b7565b503d61298a565b6129b330612718565b6129e56129df7f000000000000000000000000000000000000000000000000000000000000000061057a565b9161057a565b036129ec57565b6129f46104f2565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280612a2460048201610622565b0390fd5b612a30612af5565b612a48612a3e5f8301611aca565b915f849101611a75565b90612a7c612a767f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611a66565b91611a66565b91612a856104f2565b80612a8f81610622565b0390a3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612ac990612ac4612bd9565b612acb565b565b612ad490612cb1565b565b612adf90612ab8565b565b612ae9612bd9565b565b612af3612ae1565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b612b21611aad565b503390565b612b2e611aad565b50612b495f612b43612b3e611d4e565b612cbc565b01611aca565b90565b5190565b90612b5a82612cbf565b81612b857fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91611a66565b90612b8e6104f2565b80612b9881610622565b0390a2612ba481612b4c565b612bb6612bb05f611f13565b916107da565b115f14612bca57612bc691612dcf565b505b565b5050612bd4612d34565b612bc8565b612bea612be4612e02565b15611e8c565b612bf057565b612bf86104f2565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612c2860048201610622565b0390fd5b612c3d90612c38612bd9565b612c3f565b565b80612c5a612c54612c4f5f611e36565b61057a565b9161057a565b14612c6a57612c6890612a28565b565b612cad612c765f611e36565b612c7e6104f2565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b612cba90612c2c565b565b90565b803b612cd3612ccd5f611f13565b916107da565b14612cf557612cf3905f612ced612ce8611d4e565b612cbc565b01611a75565b565b612d3090612d016104f2565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b34612d47612d415f611f13565b916107da565b11612d4e57565b612d566104f2565b7fb398979f00000000000000000000000000000000000000000000000000000000815280612d8660048201610622565b0390fd5b606090565b90612da1612d9c83610b74565b610b5f565b918252565b3d5f14612dc157612db63d612d8f565b903d5f602084013e5b565b612dc9612d8a565b90612dbf565b5f80612dfb93612ddd612d8a565b508390602081019051915af490612df2612da6565b90919091612e20565b90565b5f90565b612e0a612dfe565b50612e1d5f612e17612a94565b01611e7f565b90565b90612e3490612e2d612d8a565b5015611e8c565b5f14612e405750612ec4565b612e4982612b4c565b612e5b612e555f611f13565b916107da565b1480612ea9575b612e6a575090565b612ea590612e766104f2565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b50803b612ebe612eb85f611f13565b916107da565b14612e62565b612ecd81612b4c565b612edf612ed95f611f13565b916107da565b115f14612eee57805190602001fd5b612ef66104f2565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280612f2660048201610622565b0390fdfea2646970667358221220dbc3380cea3011a6ab926c13e065657aab37171c04ecc1bed89c2b10dd9ee9ea64736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x2F60 PUSH2 0x9C DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2735 ADD MSTORE DUP2 DUP2 PUSH2 0x27BA ADD MSTORE PUSH2 0x29BB ADD MSTORE PUSH2 0x2F60 SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x55 PUSH1 0x8F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x74 PUSH1 0x70 PUSH1 0x78 SWAP3 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x62 JUMP JUMPDEST PUSH1 0x57 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x82 SWAP1 PUSH1 0x65 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8C SWAP1 PUSH1 0x7B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x96 ADDRESS PUSH1 0x85 JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x19F6 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x4EC JUMP JUMPDEST DUP1 PUSH4 0x218ECD6 EQ PUSH2 0x4E7 JUMPI DUP1 PUSH4 0x241BFFA EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x40F767E EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x4CC7325 EQ PUSH2 0x4D8 JUMPI DUP1 PUSH4 0xF21717D EQ PUSH2 0x4D3 JUMPI DUP1 PUSH4 0x1292F02E EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0x1ACB6141 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0x1BF01E9B EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x26158136 EQ PUSH2 0x4BF JUMPI DUP1 PUSH4 0x2DA52442 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x32327D1F EQ PUSH2 0x4B5 JUMPI DUP1 PUSH4 0x32569E02 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x34DECFC9 EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x39B65140 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0x3B19E84A EQ PUSH2 0x4A1 JUMPI DUP1 PUSH4 0x3E6DFA36 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x400FB668 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x468A7071 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x4B66A135 EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x4DB4A352 EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0x4F4608A2 EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x524900B5 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0x5333C118 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x588C5B70 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x58A67233 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0x61D027B3 EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x6C43274C EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x6C9C0078 EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x735DE9F7 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x782DD902 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x7DFB7EA1 EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x43D JUMPI DUP1 PUSH4 0x82755EBB EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x85377188 EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x85462D6F EQ PUSH2 0x42E JUMPI DUP1 PUSH4 0x89A30271 EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x8BDB2AFA EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x41F JUMPI DUP1 PUSH4 0x8E1C3A8A EQ PUSH2 0x41A JUMPI DUP1 PUSH4 0x8FFC0673 EQ PUSH2 0x415 JUMPI DUP1 PUSH4 0x9380FB6F EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0x9454705F EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x99C22CA6 EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x9D9A9D47 EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0x9E6453F8 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0xA23DCCEE EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xA5D2236F EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0xB0A70975 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0xB381CF40 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xB3E089A2 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xB691A419 EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0xB6FE9CC7 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0xB9F5E617 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0xBA535C54 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0xBB3BA04C EQ PUSH2 0x3C5 JUMPI DUP1 PUSH4 0xBEA9849E EQ PUSH2 0x3C0 JUMPI DUP1 PUSH4 0xC08F786B EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0xC3F5DF5C EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xC9ABA8AE EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xCC01E9A6 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xCFF49D68 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0xD7E53673 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0xE04B677F EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0xE23D837B EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0xE528CA12 EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0xEA233C05 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xF0F44260 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0xF1DCCDE7 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xF5B84F64 EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0xF5D2D998 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0xF98977A9 EQ PUSH2 0x370 JUMPI PUSH4 0xFFA08E95 SUB PUSH2 0xE JUMPI PUSH2 0x19C1 JUMP JUMPDEST PUSH2 0x198E JUMP JUMPDEST PUSH2 0x1959 JUMP JUMPDEST PUSH2 0x1926 JUMP JUMPDEST PUSH2 0x18F3 JUMP JUMPDEST PUSH2 0x18C0 JUMP JUMPDEST PUSH2 0x188D JUMP JUMPDEST PUSH2 0x1858 JUMP JUMPDEST PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x17DF JUMP JUMPDEST PUSH2 0x179D JUMP JUMPDEST PUSH2 0x176A JUMP JUMPDEST PUSH2 0x1735 JUMP JUMPDEST PUSH2 0x1702 JUMP JUMPDEST PUSH2 0x16CD JUMP JUMPDEST PUSH2 0x169A JUMP JUMPDEST PUSH2 0x1667 JUMP JUMPDEST PUSH2 0x1634 JUMP JUMPDEST PUSH2 0x15FF JUMP JUMPDEST PUSH2 0x15CC JUMP JUMPDEST PUSH2 0x1597 JUMP JUMPDEST PUSH2 0x1555 JUMP JUMPDEST PUSH2 0x1520 JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14A9 JUMP JUMPDEST PUSH2 0x1465 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x12FF JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x1299 JUMP JUMPDEST PUSH2 0x1264 JUMP JUMPDEST PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x1198 JUMP JUMPDEST PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x1130 JUMP JUMPDEST PUSH2 0x10FB JUMP JUMPDEST PUSH2 0x10C6 JUMP JUMPDEST PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x1040 JUMP JUMPDEST PUSH2 0x100B JUMP JUMPDEST PUSH2 0xFC7 JUMP JUMPDEST PUSH2 0xF94 JUMP JUMPDEST PUSH2 0xF5F JUMP JUMPDEST PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST PUSH2 0xE60 JUMP JUMPDEST PUSH2 0xE2D JUMP JUMPDEST PUSH2 0xDF8 JUMP JUMPDEST PUSH2 0xDB4 JUMP JUMPDEST PUSH2 0xD72 JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST PUSH2 0xC9F JUMP JUMPDEST PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xC40 JUMP JUMPDEST PUSH2 0xAC2 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x98E JUMP JUMPDEST PUSH2 0x959 JUMP JUMPDEST PUSH2 0x915 JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST PUSH2 0x851 JUMP JUMPDEST PUSH2 0x81E JUMP JUMPDEST PUSH2 0x7A7 JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST PUSH2 0x73D JUMP JUMPDEST PUSH2 0x708 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x68F JUMP JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH2 0x627 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x50A JUMPI JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x53C SWAP1 PUSH1 0x8 PUSH2 0x541 SWAP4 MUL PUSH2 0x50F JUMP JUMPDEST PUSH2 0x513 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x54F SWAP2 SLOAD PUSH2 0x52C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x55E PUSH1 0xA PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x583 SWAP1 PUSH2 0x561 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x58F SWAP1 PUSH2 0x57A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5A6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x586 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5D8 JUMPI PUSH2 0x5B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x5D4 PUSH2 0x5C3 PUSH2 0x552 JUMP JUMPDEST PUSH2 0x5CB PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x5EA DUP2 PUSH2 0x57A JUMP JUMPDEST SUB PUSH2 0x5F1 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x602 DUP3 PUSH2 0x5E1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x61D JUMPI PUSH2 0x61A SWAP2 PUSH0 ADD PUSH2 0x5F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x655 JUMPI PUSH2 0x63F PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1AA2 JUMP JUMPDEST PUSH2 0x647 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x651 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x68A JUMPI PUSH2 0x66A CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x686 PUSH2 0x675 PUSH2 0x1AD7 JUMP JUMPDEST PUSH2 0x67D PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x6BF JUMPI PUSH2 0x69F CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x6AA PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x6B2 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x6F4 JUMPI PUSH2 0x6D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x6F0 PUSH2 0x6DF PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x6E7 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x705 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x738 JUMPI PUSH2 0x718 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x734 PUSH2 0x723 PUSH2 0x6F9 JUMP JUMPDEST PUSH2 0x72B PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x76D JUMPI PUSH2 0x74D CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x769 PUSH2 0x758 PUSH2 0x1B19 JUMP JUMPDEST PUSH2 0x760 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x7A2 JUMPI PUSH2 0x782 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x79E PUSH2 0x78D PUSH2 0x1B2F JUMP JUMPDEST PUSH2 0x795 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x7D5 JUMPI PUSH2 0x7BF PUSH2 0x7BA CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1B65 JUMP JUMPDEST PUSH2 0x7C7 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x7D1 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E6 DUP2 PUSH2 0x7DA JUMP JUMPDEST SUB PUSH2 0x7ED JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x7FE DUP3 PUSH2 0x7DD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x819 JUMPI PUSH2 0x816 SWAP2 PUSH0 ADD PUSH2 0x7F1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST CALLVALUE PUSH2 0x84C JUMPI PUSH2 0x836 PUSH2 0x831 CALLDATASIZE PUSH1 0x4 PUSH2 0x800 JUMP JUMPDEST PUSH2 0x1C04 JUMP JUMPDEST PUSH2 0x83E PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x848 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x881 JUMPI PUSH2 0x861 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x87D PUSH2 0x86C PUSH2 0x1C0F JUMP JUMPDEST PUSH2 0x874 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x8B6 JUMPI PUSH2 0x896 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x8B2 PUSH2 0x8A1 PUSH2 0x1C25 JUMP JUMPDEST PUSH2 0x8A9 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8CE SWAP1 PUSH1 0x8 PUSH2 0x8D3 SWAP4 MUL PUSH2 0x50F JUMP JUMPDEST PUSH2 0x8BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8E1 SWAP2 SLOAD PUSH2 0x8BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8F0 PUSH1 0x11 PUSH0 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8FC SWAP1 PUSH2 0x7DA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x913 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x8F3 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x945 JUMPI PUSH2 0x925 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x941 PUSH2 0x930 PUSH2 0x8E4 JUMP JUMPDEST PUSH2 0x938 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x956 PUSH1 0x6 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x989 JUMPI PUSH2 0x969 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x985 PUSH2 0x974 PUSH2 0x94A JUMP JUMPDEST PUSH2 0x97C PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x9BE JUMPI PUSH2 0x99E CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x9BA PUSH2 0x9A9 PUSH2 0x1C3B JUMP JUMPDEST PUSH2 0x9B1 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x9F3 JUMPI PUSH2 0x9D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x9EF PUSH2 0x9DE PUSH2 0x1C51 JUMP JUMPDEST PUSH2 0x9E6 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xA26 JUMPI PUSH2 0xA10 PUSH2 0xA0B CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1C86 JUMP JUMPDEST PUSH2 0xA18 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xA22 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xA37 PUSH1 0x8 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA6A JUMPI PUSH2 0xA4A CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xA66 PUSH2 0xA55 PUSH2 0xA2B JUMP JUMPDEST PUSH2 0xA5D PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xA7B PUSH1 0x4 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xAAE JUMPI PUSH2 0xA8E CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xAAA PUSH2 0xA99 PUSH2 0xA6F JUMP JUMPDEST PUSH2 0xAA1 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xABF PUSH1 0x15 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xAF2 JUMPI PUSH2 0xAD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xAEE PUSH2 0xADD PUSH2 0xAB3 JUMP JUMPDEST PUSH2 0xAE5 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xB40 SWAP1 PUSH2 0xAFF JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB5A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xB09 JUMP JUMPDEST SWAP1 PUSH2 0xB72 PUSH2 0xB6B PUSH2 0x4F2 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0xB36 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB92 JUMPI PUSH2 0xB8E PUSH1 0x20 SWAP2 PUSH2 0xAFF JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB09 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xBB7 PUSH2 0xBB2 DUP3 PUSH2 0xB74 JUMP JUMPDEST PUSH2 0xB5F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xBD3 JUMPI PUSH2 0xBD1 SWAP3 PUSH2 0xB97 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xAFB JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xBF6 JUMPI DUP2 PUSH1 0x20 PUSH2 0xBF3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xBA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAF7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0xC3B JUMPI PUSH2 0xC14 DUP4 PUSH0 DUP4 ADD PUSH2 0x5F5 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC36 JUMPI PUSH2 0xC33 SWAP3 ADD PUSH2 0xBD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5DD JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH2 0xC54 PUSH2 0xC4E CALLDATASIZE PUSH1 0x4 PUSH2 0xBFB JUMP JUMPDEST SWAP1 PUSH2 0x1CBA JUMP JUMPDEST PUSH2 0xC5C PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xC66 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xC9A JUMPI PUSH2 0xC7A CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xC96 PUSH2 0xC85 PUSH2 0x1CEB JUMP JUMPDEST PUSH2 0xC8D PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xCCF JUMPI PUSH2 0xCAF CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xCCB PUSH2 0xCBA PUSH2 0x1D01 JUMP JUMPDEST PUSH2 0xCC2 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCE0 SWAP1 PUSH2 0xCD4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xCF7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xCD7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xD29 JUMPI PUSH2 0xD09 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xD25 PUSH2 0xD14 PUSH2 0x1D86 JUMP JUMPDEST PUSH2 0xD1C PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xCE4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xD3A PUSH1 0x16 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD6D JUMPI PUSH2 0xD4D CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xD69 PUSH2 0xD58 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0xD60 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xDA0 JUMPI PUSH2 0xD8A PUSH2 0xD85 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1DB9 JUMP JUMPDEST PUSH2 0xD92 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xD9C DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xDB1 PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDE4 JUMPI PUSH2 0xDC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xDE0 PUSH2 0xDCF PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0xDD7 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xDF5 PUSH1 0xC PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE28 JUMPI PUSH2 0xE08 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xE24 PUSH2 0xE13 PUSH2 0xDE9 JUMP JUMPDEST PUSH2 0xE1B PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xE5B JUMPI PUSH2 0xE45 PUSH2 0xE40 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1DE4 JUMP JUMPDEST PUSH2 0xE4D PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xE57 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xE90 JUMPI PUSH2 0xE70 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xE8C PUSH2 0xE7B PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0xE83 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xEC3 JUMPI PUSH2 0xEA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xEAD PUSH2 0x1E55 JUMP JUMPDEST PUSH2 0xEB5 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xEBF DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xED4 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF07 JUMPI PUSH2 0xEE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xF03 PUSH2 0xEF2 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0xEFA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xF18 PUSH1 0x10 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF4B JUMPI PUSH2 0xF2B CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xF47 PUSH2 0xF36 PUSH2 0xF0C JUMP JUMPDEST PUSH2 0xF3E PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xF5C PUSH1 0x9 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF8F JUMPI PUSH2 0xF6F CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xF8B PUSH2 0xF7A PUSH2 0xF50 JUMP JUMPDEST PUSH2 0xF82 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xFC2 JUMPI PUSH2 0xFA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xFAC PUSH2 0x223B JUMP JUMPDEST PUSH2 0xFB4 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xFBE DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xFF7 JUMPI PUSH2 0xFD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xFF3 PUSH2 0xFE2 PUSH2 0x2245 JUMP JUMPDEST PUSH2 0xFEA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1008 PUSH1 0x13 PUSH0 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x103B JUMPI PUSH2 0x101B CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1037 PUSH2 0x1026 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0x102E PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1070 JUMPI PUSH2 0x1050 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x106C PUSH2 0x105B PUSH2 0x225B JUMP JUMPDEST PUSH2 0x1063 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1081 PUSH1 0xF PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x10B4 JUMPI PUSH2 0x1094 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x10B0 PUSH2 0x109F PUSH2 0x1075 JUMP JUMPDEST PUSH2 0x10A7 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x10C3 PUSH0 DUP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x10F6 JUMPI PUSH2 0x10D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x10F2 PUSH2 0x10E1 PUSH2 0x10B9 JUMP JUMPDEST PUSH2 0x10E9 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x112B JUMPI PUSH2 0x110B CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1127 PUSH2 0x1116 PUSH2 0x2271 JUMP JUMPDEST PUSH2 0x111E PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1160 JUMPI PUSH2 0x1140 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x115C PUSH2 0x114B PUSH2 0x228F JUMP JUMPDEST PUSH2 0x1153 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1193 JUMPI PUSH2 0x117D PUSH2 0x1178 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x22C5 JUMP JUMPDEST PUSH2 0x1185 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x118F DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x11C8 JUMPI PUSH2 0x11A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x11C4 PUSH2 0x11B3 PUSH2 0x22D0 JUMP JUMPDEST PUSH2 0x11BB PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x11D9 PUSH1 0xD PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x120C JUMPI PUSH2 0x11EC CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1208 PUSH2 0x11F7 PUSH2 0x11CD JUMP JUMPDEST PUSH2 0x11FF PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x121D PUSH1 0x14 PUSH0 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1250 JUMPI PUSH2 0x1230 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x124C PUSH2 0x123B PUSH2 0x1211 JUMP JUMPDEST PUSH2 0x1243 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1261 PUSH1 0x17 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1294 JUMPI PUSH2 0x1274 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1290 PUSH2 0x127F PUSH2 0x1255 JUMP JUMPDEST PUSH2 0x1287 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x12C7 JUMPI PUSH2 0x12B1 PUSH2 0x12AC CALLDATASIZE PUSH1 0x4 PUSH2 0x800 JUMP JUMPDEST PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x12B9 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x12C3 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x12FA JUMPI PUSH2 0x12E4 PUSH2 0x12DF CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2331 JUMP JUMPDEST PUSH2 0x12EC PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x12F6 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x132F JUMPI PUSH2 0x130F CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x132B PUSH2 0x131A PUSH2 0x233C JUMP JUMPDEST PUSH2 0x1322 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1352 JUMPI PUSH2 0x134E PUSH1 0x20 SWAP2 PUSH2 0xAFF JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB09 JUMP JUMPDEST SWAP1 PUSH2 0x1369 PUSH2 0x1364 DUP4 PUSH2 0x1334 JUMP JUMPDEST PUSH2 0xB5F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x139F PUSH1 0x5 PUSH2 0x1357 JUMP JUMPDEST SWAP1 PUSH2 0x13AC PUSH1 0x20 DUP4 ADD PUSH2 0x136E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x13B6 PUSH2 0x1395 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C1 PUSH2 0x13AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13CC PUSH2 0x13B9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x1406 PUSH2 0x140F PUSH1 0x20 SWAP4 PUSH2 0x1414 SWAP4 PUSH2 0x13FD DUP2 PUSH2 0x13CF JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x13D3 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x13DC JUMP JUMPDEST PUSH2 0xAFF JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x142D SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x13E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1460 JUMPI PUSH2 0x1440 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x145C PUSH2 0x144B PUSH2 0x13C4 JUMP JUMPDEST PUSH2 0x1453 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1418 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1495 JUMPI PUSH2 0x1475 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1491 PUSH2 0x1480 PUSH2 0x2352 JUMP JUMPDEST PUSH2 0x1488 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x14A6 PUSH1 0xE PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x14D9 JUMPI PUSH2 0x14B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x14D5 PUSH2 0x14C4 PUSH2 0x149A JUMP JUMPDEST PUSH2 0x14CC PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x150C JUMPI PUSH2 0x14F6 PUSH2 0x14F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2388 JUMP JUMPDEST PUSH2 0x14FE PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x1508 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x151D PUSH1 0x5 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1550 JUMPI PUSH2 0x1530 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x154C PUSH2 0x153B PUSH2 0x1511 JUMP JUMPDEST PUSH2 0x1543 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1583 JUMPI PUSH2 0x156D PUSH2 0x1568 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x23B3 JUMP JUMPDEST PUSH2 0x1575 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x157F DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1594 PUSH1 0x12 PUSH0 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x15C7 JUMPI PUSH2 0x15A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x15C3 PUSH2 0x15B2 PUSH2 0x1588 JUMP JUMPDEST PUSH2 0x15BA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x15FA JUMPI PUSH2 0x15E4 PUSH2 0x15DF CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x23DE JUMP JUMPDEST PUSH2 0x15EC PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x15F6 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x162F JUMPI PUSH2 0x160F CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x162B PUSH2 0x161A PUSH2 0x23E9 JUMP JUMPDEST PUSH2 0x1622 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1662 JUMPI PUSH2 0x164C PUSH2 0x1647 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x241F JUMP JUMPDEST PUSH2 0x1654 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x165E DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1695 JUMPI PUSH2 0x167F PUSH2 0x167A CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x244A JUMP JUMPDEST PUSH2 0x1687 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x1691 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x16C8 JUMPI PUSH2 0x16B2 PUSH2 0x16AD CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2475 JUMP JUMPDEST PUSH2 0x16BA PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x16C4 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x16FD JUMPI PUSH2 0x16DD CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x16F9 PUSH2 0x16E8 PUSH2 0x2480 JUMP JUMPDEST PUSH2 0x16F0 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1730 JUMPI PUSH2 0x171A PUSH2 0x1715 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x24B6 JUMP JUMPDEST PUSH2 0x1722 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x172C DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1765 JUMPI PUSH2 0x1745 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1761 PUSH2 0x1750 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x1758 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1798 JUMPI PUSH2 0x1782 PUSH2 0x177D CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x24F7 JUMP JUMPDEST PUSH2 0x178A PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x1794 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x17CB JUMPI PUSH2 0x17B5 PUSH2 0x17B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2521 JUMP JUMPDEST PUSH2 0x17BD PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x17C7 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x17DC PUSH1 0xB PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x180F JUMPI PUSH2 0x17EF CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x180B PUSH2 0x17FA PUSH2 0x17D0 JUMP JUMPDEST PUSH2 0x1802 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1820 PUSH1 0x7 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1853 JUMPI PUSH2 0x1833 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x184F PUSH2 0x183E PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x1846 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1888 JUMPI PUSH2 0x1868 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1884 PUSH2 0x1873 PUSH2 0x252C JUMP JUMPDEST PUSH2 0x187B PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x18BB JUMPI PUSH2 0x18A5 PUSH2 0x18A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2562 JUMP JUMPDEST PUSH2 0x18AD PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x18B7 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x18EE JUMPI PUSH2 0x18D8 PUSH2 0x18D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x258D JUMP JUMPDEST PUSH2 0x18E0 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x18EA DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1921 JUMPI PUSH2 0x190B PUSH2 0x1906 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x261D JUMP JUMPDEST PUSH2 0x1913 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x191D DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1954 JUMPI PUSH2 0x193E PUSH2 0x1939 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2648 JUMP JUMPDEST PUSH2 0x1946 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x1950 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1989 JUMPI PUSH2 0x1969 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1985 PUSH2 0x1974 PUSH2 0x2653 JUMP JUMPDEST PUSH2 0x197C PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x19BC JUMPI PUSH2 0x19A6 PUSH2 0x19A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2689 JUMP JUMPDEST PUSH2 0x19AE PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x19B8 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x19F1 JUMPI PUSH2 0x19D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x19ED PUSH2 0x19DC PUSH2 0x2694 JUMP JUMPDEST PUSH2 0x19E4 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1A0B SWAP1 PUSH2 0x1A06 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1A95 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A31 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1A0D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A52 PUSH2 0x1A4D PUSH2 0x1A57 SWAP3 PUSH2 0x561 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x561 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A63 SWAP1 PUSH2 0x1A3E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A6F SWAP1 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A8A PUSH2 0x1A85 PUSH2 0x1A91 SWAP3 PUSH2 0x1A66 JUMP JUMPDEST PUSH2 0x1A72 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1A12 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1AA0 SWAP1 PUSH1 0x5 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1AAB SWAP1 PUSH2 0x19FA JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x1AC2 PUSH2 0x1AC7 SWAP2 PUSH2 0x1AB1 JUMP JUMPDEST PUSH2 0x513 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1AD4 SWAP1 SLOAD PUSH2 0x1AB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1ADF PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1AEA PUSH1 0x16 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1AF5 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1B00 PUSH1 0x6 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B0B PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1B16 PUSH1 0x17 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B21 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1B2C PUSH1 0x3 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B37 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1B42 PUSH1 0xF PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B56 SWAP1 PUSH2 0x1B51 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1B58 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B63 SWAP1 PUSH1 0x15 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B6E SWAP1 PUSH2 0x1B45 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B81 SWAP1 PUSH2 0x1B7C PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1BF7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1BAE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1A0D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1BCC PUSH2 0x1BC7 PUSH2 0x1BD1 SWAP3 PUSH2 0x7DA JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1BEC PUSH2 0x1BE7 PUSH2 0x1BF3 SWAP3 PUSH2 0x1BB8 JUMP JUMPDEST PUSH2 0x1BD4 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1B83 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1C02 SWAP1 PUSH1 0x14 PUSH2 0x1BD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C0D SWAP1 PUSH2 0x1B70 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C17 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1C22 PUSH1 0xA PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C2D PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1C38 PUSH1 0x4 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C43 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1C4E PUSH1 0xC PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C59 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1C63 PUSH0 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C77 SWAP1 PUSH2 0x1C72 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1C79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C84 SWAP1 PUSH1 0x6 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C8F SWAP1 PUSH2 0x1C66 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1CA3 SWAP2 PUSH2 0x1C9E PUSH2 0x2724 JUMP JUMPDEST PUSH2 0x1CA5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1CB8 SWAP2 PUSH2 0x1CB3 DUP2 PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x286C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1CC4 SWAP2 PUSH2 0x1C91 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1CD6 PUSH2 0x1CDB SWAP2 PUSH2 0x1AB1 JUMP JUMPDEST PUSH2 0x8BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CE8 SWAP1 SLOAD PUSH2 0x1CCA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CF3 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH2 0x1CFE PUSH1 0x13 PUSH2 0x1CDE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D09 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1D14 PUSH1 0x1 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1D2C SWAP1 PUSH2 0x1D27 PUSH2 0x29AA JUMP JUMPDEST PUSH2 0x1D7A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D46 PUSH2 0x1D41 PUSH2 0x1D4B SWAP3 PUSH2 0x1D2F JUMP JUMPDEST PUSH2 0x1A0D JUMP JUMPDEST PUSH2 0xCD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D77 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x1D32 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x1D83 PUSH2 0x1D4E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D96 PUSH2 0x1D91 PUSH2 0x1D17 JUMP JUMPDEST PUSH2 0x1D1B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1DAA SWAP1 PUSH2 0x1DA5 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1DAC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DB7 SWAP1 PUSH1 0x3 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DC2 SWAP1 PUSH2 0x1D99 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DD5 SWAP1 PUSH2 0x1DD0 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1DD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DE2 SWAP1 PUSH1 0x7 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DED SWAP1 PUSH2 0x1DC4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DF7 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1E02 PUSH1 0xE PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E0D PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1E15 PUSH2 0x1E42 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E2E PUSH2 0x1E29 PUSH2 0x1E33 SWAP3 PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x561 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E3F SWAP1 PUSH2 0x1E1A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E53 PUSH2 0x1E4E PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x2A28 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1E5D PUSH2 0x1E05 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1E77 PUSH2 0x1E7C SWAP2 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1E65 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E89 SWAP1 SLOAD PUSH2 0x1E6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1EAA PUSH2 0x1EAF SWAP2 PUSH2 0x1AB1 JUMP JUMPDEST PUSH2 0x1E91 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1EBC SWAP1 SLOAD PUSH2 0x1E9E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1EE0 PUSH2 0x1EDB PUSH2 0x1EE5 SWAP3 PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x1EBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1EFF PUSH2 0x1EFA PUSH2 0x1F04 SWAP3 PUSH2 0x1EE8 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x1EBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F10 SWAP1 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F27 PUSH2 0x1F22 PUSH2 0x1F2C SWAP3 PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F42 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1A0D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1F60 PUSH2 0x1F5B PUSH2 0x1F65 SWAP3 PUSH2 0x1EBF JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x1EBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F80 PUSH2 0x1F7B PUSH2 0x1F87 SWAP3 PUSH2 0x1F4C JUMP JUMPDEST PUSH2 0x1F68 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1F2F JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1FA5 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x1F8B JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1FB8 SWAP1 PUSH2 0x1E8C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1FD3 PUSH2 0x1FCE PUSH2 0x1FDA SWAP3 PUSH2 0x1FAF JUMP JUMPDEST PUSH2 0x1FBB JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1F91 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1FE7 SWAP1 PUSH2 0x1EEB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1FFE SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1FDE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2008 PUSH2 0x2A94 JUMP JUMPDEST PUSH2 0x201C PUSH2 0x2016 PUSH0 DUP4 ADD PUSH2 0x1E7F JUMP JUMPDEST ISZERO PUSH2 0x1E8C JUMP JUMPDEST PUSH2 0x2027 PUSH0 DUP4 ADD PUSH2 0x1EB2 JUMP JUMPDEST DUP1 PUSH2 0x203A PUSH2 0x2034 PUSH0 PUSH2 0x1ECC JUMP JUMPDEST SWAP2 PUSH2 0x1EBF JUMP JUMPDEST EQ DUP1 PUSH2 0x2173 JUMPI JUMPDEST SWAP1 PUSH2 0x2055 PUSH2 0x204F PUSH1 0x1 PUSH2 0x1EEB JUMP JUMPDEST SWAP2 PUSH2 0x1EBF JUMP JUMPDEST EQ DUP1 PUSH2 0x214B JUMPI JUMPDEST PUSH2 0x2067 SWAP1 SWAP2 ISZERO PUSH2 0x1E8C JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x213A JUMPI JUMPDEST POP PUSH2 0x20FE JUMPI PUSH2 0x2088 PUSH2 0x2080 PUSH1 0x1 PUSH2 0x1EEB JUMP JUMPDEST PUSH0 DUP5 ADD PUSH2 0x1F6B JUMP JUMPDEST DUP1 PUSH2 0x20EC JUMPI JUMPDEST PUSH2 0x2096 PUSH2 0x21D7 JUMP JUMPDEST PUSH2 0x209E JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x20AB SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x1 PUSH2 0x20E3 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x20DA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1FEB JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x209B JUMP JUMPDEST PUSH2 0x20F9 PUSH1 0x1 PUSH0 DUP5 ADD PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x208E JUMP JUMPDEST PUSH2 0x2106 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2136 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2145 SWAP2 POP ISZERO PUSH2 0x1E8C JUMP JUMPDEST PUSH0 PUSH2 0x206E JUMP JUMPDEST POP PUSH2 0x2067 PUSH2 0x2158 ADDRESS PUSH2 0x1F07 JUMP JUMPDEST EXTCODESIZE PUSH2 0x216B PUSH2 0x2165 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x205C JUMP JUMPDEST POP DUP2 PUSH2 0x2041 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2191 PUSH2 0x218C PUSH2 0x2196 SWAP3 PUSH2 0x217A JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21B0 PUSH2 0x21AB PUSH2 0x21B5 SWAP3 PUSH2 0x2199 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21CF PUSH2 0x21CA PUSH2 0x21D4 SWAP3 PUSH2 0x21B8 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21E0 CALLER PUSH2 0x2AD6 JUMP JUMPDEST PUSH2 0x21E8 PUSH2 0x2AEB JUMP JUMPDEST PUSH2 0x21FC PUSH2 0x21F5 PUSH1 0x64 PUSH2 0x217D JUMP JUMPDEST PUSH1 0x11 PUSH2 0x1BD7 JUMP JUMPDEST PUSH2 0x2210 PUSH2 0x2209 PUSH1 0x1E PUSH2 0x219C JUMP JUMPDEST PUSH1 0x12 PUSH2 0x1BD7 JUMP JUMPDEST PUSH2 0x2225 PUSH2 0x221E PUSH2 0x2710 PUSH2 0x21BB JUMP JUMPDEST PUSH1 0x13 PUSH2 0x1BD7 JUMP JUMPDEST PUSH2 0x2239 PUSH2 0x2232 PUSH1 0x64 PUSH2 0x217D JUMP JUMPDEST PUSH1 0x14 PUSH2 0x1BD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2243 PUSH2 0x2000 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x224D PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2258 PUSH1 0x9 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2263 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH2 0x226E PUSH1 0x12 PUSH2 0x1CDE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2279 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x228C PUSH0 PUSH2 0x2286 PUSH2 0x2AF5 JUMP JUMPDEST ADD PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2297 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x22A2 PUSH1 0x10 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22B6 SWAP1 PUSH2 0x22B1 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x22B8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22C3 SWAP1 PUSH1 0x16 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22CE SWAP1 PUSH2 0x22A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22D8 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH2 0x22E3 PUSH1 0x11 PUSH2 0x1CDE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22F7 SWAP1 PUSH2 0x22F2 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x22F9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2304 SWAP1 PUSH1 0x12 PUSH2 0x1BD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x230F SWAP1 PUSH2 0x22E6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2322 SWAP1 PUSH2 0x231D PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2324 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x232F SWAP1 PUSH1 0x17 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x233A SWAP1 PUSH2 0x2311 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2344 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x234F PUSH1 0xD PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x235A PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2365 PUSH1 0x15 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2379 SWAP1 PUSH2 0x2374 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x237B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2386 SWAP1 PUSH1 0xF PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2391 SWAP1 PUSH2 0x2368 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23A4 SWAP1 PUSH2 0x239F PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x23A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23B1 SWAP1 PUSH1 0xE PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23BC SWAP1 PUSH2 0x2393 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23CF SWAP1 PUSH2 0x23CA PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x23D1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23DC SWAP1 PUSH1 0xA PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23E7 SWAP1 PUSH2 0x23BE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23F1 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x23FC PUSH1 0x8 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2410 SWAP1 PUSH2 0x240B PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2412 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x241D SWAP1 PUSH1 0x1 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2428 SWAP1 PUSH2 0x23FF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x243B SWAP1 PUSH2 0x2436 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x243D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2448 SWAP1 PUSH1 0x10 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2453 SWAP1 PUSH2 0x242A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2466 SWAP1 PUSH2 0x2461 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2468 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2473 SWAP1 PUSH1 0x9 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x247E SWAP1 PUSH2 0x2455 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2488 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2493 PUSH1 0x7 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24A7 SWAP1 PUSH2 0x24A2 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x24A9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24B4 SWAP1 PUSH1 0xD PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24BF SWAP1 PUSH2 0x2496 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24C9 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x24D4 PUSH1 0x5 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24E8 SWAP1 PUSH2 0x24E3 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x24EA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24F5 SWAP1 PUSH1 0xB PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2500 SWAP1 PUSH2 0x24D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2513 SWAP1 PUSH2 0x250E PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2515 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x251F SWAP1 PUSH0 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x252A SWAP1 PUSH2 0x2502 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2534 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH2 0x253F PUSH1 0x14 PUSH2 0x1CDE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2553 SWAP1 PUSH2 0x254E PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2555 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2560 SWAP1 PUSH1 0xC PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x256B SWAP1 PUSH2 0x2542 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257E SWAP1 PUSH2 0x2579 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2580 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x258B SWAP1 PUSH1 0x2 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2596 SWAP1 PUSH2 0x256D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25A9 SWAP1 PUSH2 0x25A4 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x25AB JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x25C6 PUSH2 0x25C0 PUSH2 0x25BB PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST EQ PUSH2 0x25D6 JUMPI PUSH2 0x25D4 SWAP1 PUSH2 0x2A28 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2619 PUSH2 0x25E2 PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x25EA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2626 SWAP1 PUSH2 0x2598 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2639 SWAP1 PUSH2 0x2634 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x263B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2646 SWAP1 PUSH1 0x8 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2651 SWAP1 PUSH2 0x2628 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x265B PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2666 PUSH1 0x2 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x267A SWAP1 PUSH2 0x2675 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x267C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2687 SWAP1 PUSH1 0x4 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2692 SWAP1 PUSH2 0x2669 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x269C PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x26A7 PUSH1 0xB PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26B2 PUSH2 0x2271 JUMP JUMPDEST PUSH2 0x26CB PUSH2 0x26C5 PUSH2 0x26C0 PUSH2 0x2B19 JUMP JUMPDEST PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST SUB PUSH2 0x26D2 JUMPI JUMP JUMPDEST PUSH2 0x2714 PUSH2 0x26DD PUSH2 0x2B19 JUMP JUMPDEST PUSH2 0x26E5 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2721 SWAP1 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x272D ADDRESS PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x275F PUSH2 0x2759 PUSH32 0x0 PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x27A9 JUMPI JUMPDEST PUSH2 0x276D JUMPI JUMP JUMPDEST PUSH2 0x2775 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x27A5 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x27B2 PUSH2 0x2B26 JUMP JUMPDEST PUSH2 0x27E4 PUSH2 0x27DE PUSH32 0x0 PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST EQ ISZERO PUSH2 0x2767 JUMP JUMPDEST POP PUSH2 0x27F4 PUSH2 0x26AA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x27FF SWAP1 PUSH2 0x27EB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x280A SWAP1 PUSH2 0x1A3E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2816 SWAP1 PUSH2 0x2801 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2822 SWAP1 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x2834 DUP2 PUSH2 0xCD4 JUMP JUMPDEST SUB PUSH2 0x283B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x284C DUP3 PUSH2 0x282B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2867 JUMPI PUSH2 0x2864 SWAP2 PUSH0 ADD PUSH2 0x283F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x289A PUSH1 0x20 PUSH2 0x2884 PUSH2 0x287F DUP7 PUSH2 0x280D JUMP JUMPDEST PUSH2 0x2819 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x2892 PUSH2 0x4F2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x2825 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x28AA PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x297A JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x290B JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x28CC JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x2907 SWAP1 PUSH2 0x28D8 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2926 PUSH2 0x2920 PUSH2 0x291B PUSH2 0x1D4E JUMP JUMPDEST PUSH2 0xCD4 JUMP JUMPDEST SWAP2 PUSH2 0xCD4 JUMP JUMPDEST SUB PUSH2 0x293B JUMPI PUSH2 0x2936 SWAP3 SWAP4 POP PUSH2 0x2B50 JUMP JUMPDEST PUSH2 0x28CA JUMP JUMPDEST PUSH2 0x2976 DUP5 PUSH2 0x2947 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xCE4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x299C SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x29A3 JUMPI JUMPDEST PUSH2 0x2994 DUP2 DUP4 PUSH2 0xB36 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x284E JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x28B7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x298A JUMP JUMPDEST PUSH2 0x29B3 ADDRESS PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x29E5 PUSH2 0x29DF PUSH32 0x0 PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST SUB PUSH2 0x29EC JUMPI JUMP JUMPDEST PUSH2 0x29F4 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2A24 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A30 PUSH2 0x2AF5 JUMP JUMPDEST PUSH2 0x2A48 PUSH2 0x2A3E PUSH0 DUP4 ADD PUSH2 0x1ACA JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x1A75 JUMP JUMPDEST SWAP1 PUSH2 0x2A7C PUSH2 0x2A76 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x1A66 JUMP JUMPDEST SWAP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP2 PUSH2 0x2A85 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x2A8F DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2AC9 SWAP1 PUSH2 0x2AC4 PUSH2 0x2BD9 JUMP JUMPDEST PUSH2 0x2ACB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2AD4 SWAP1 PUSH2 0x2CB1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2ADF SWAP1 PUSH2 0x2AB8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2AE9 PUSH2 0x2BD9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2AF3 PUSH2 0x2AE1 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH2 0x2B21 PUSH2 0x1AAD JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2B2E PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2B49 PUSH0 PUSH2 0x2B43 PUSH2 0x2B3E PUSH2 0x1D4E JUMP JUMPDEST PUSH2 0x2CBC JUMP JUMPDEST ADD PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2B5A DUP3 PUSH2 0x2CBF JUMP JUMPDEST DUP2 PUSH2 0x2B85 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP1 PUSH2 0x2B8E PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x2B98 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2BA4 DUP2 PUSH2 0x2B4C JUMP JUMPDEST PUSH2 0x2BB6 PUSH2 0x2BB0 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2BCA JUMPI PUSH2 0x2BC6 SWAP2 PUSH2 0x2DCF JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2BD4 PUSH2 0x2D34 JUMP JUMPDEST PUSH2 0x2BC8 JUMP JUMPDEST PUSH2 0x2BEA PUSH2 0x2BE4 PUSH2 0x2E02 JUMP JUMPDEST ISZERO PUSH2 0x1E8C JUMP JUMPDEST PUSH2 0x2BF0 JUMPI JUMP JUMPDEST PUSH2 0x2BF8 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2C28 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C3D SWAP1 PUSH2 0x2C38 PUSH2 0x2BD9 JUMP JUMPDEST PUSH2 0x2C3F JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2C5A PUSH2 0x2C54 PUSH2 0x2C4F PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST EQ PUSH2 0x2C6A JUMPI PUSH2 0x2C68 SWAP1 PUSH2 0x2A28 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2CAD PUSH2 0x2C76 PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x2C7E PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CBA SWAP1 PUSH2 0x2C2C JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x2CD3 PUSH2 0x2CCD PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST EQ PUSH2 0x2CF5 JUMPI PUSH2 0x2CF3 SWAP1 PUSH0 PUSH2 0x2CED PUSH2 0x2CE8 PUSH2 0x1D4E JUMP JUMPDEST PUSH2 0x2CBC JUMP JUMPDEST ADD PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2D30 SWAP1 PUSH2 0x2D01 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2D47 PUSH2 0x2D41 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST GT PUSH2 0x2D4E JUMPI JUMP JUMPDEST PUSH2 0x2D56 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2D86 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2DA1 PUSH2 0x2D9C DUP4 PUSH2 0xB74 JUMP JUMPDEST PUSH2 0xB5F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x2DC1 JUMPI PUSH2 0x2DB6 RETURNDATASIZE PUSH2 0x2D8F JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x2DC9 PUSH2 0x2D8A JUMP JUMPDEST SWAP1 PUSH2 0x2DBF JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2DFB SWAP4 PUSH2 0x2DDD PUSH2 0x2D8A JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x2DF2 PUSH2 0x2DA6 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x2E20 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2E0A PUSH2 0x2DFE JUMP JUMPDEST POP PUSH2 0x2E1D PUSH0 PUSH2 0x2E17 PUSH2 0x2A94 JUMP JUMPDEST ADD PUSH2 0x1E7F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2E34 SWAP1 PUSH2 0x2E2D PUSH2 0x2D8A JUMP JUMPDEST POP ISZERO PUSH2 0x1E8C JUMP JUMPDEST PUSH0 EQ PUSH2 0x2E40 JUMPI POP PUSH2 0x2EC4 JUMP JUMPDEST PUSH2 0x2E49 DUP3 PUSH2 0x2B4C JUMP JUMPDEST PUSH2 0x2E5B PUSH2 0x2E55 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST EQ DUP1 PUSH2 0x2EA9 JUMPI JUMPDEST PUSH2 0x2E6A JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x2EA5 SWAP1 PUSH2 0x2E76 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x2EBE PUSH2 0x2EB8 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST EQ PUSH2 0x2E62 JUMP JUMPDEST PUSH2 0x2ECD DUP2 PUSH2 0x2B4C JUMP JUMPDEST PUSH2 0x2EDF PUSH2 0x2ED9 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2EEE JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2EF6 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2F26 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB 0xC3 CODESIZE 0xC 0xEA ADDRESS GT 0xA6 0xAB SWAP3 PUSH13 0x13E065657AAB37171C04ECC1BE 0xD8 SWAP13 0x2B LT 0xDD SWAP15 0xE9 0xEA PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"1752:7233:65:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;160:3193:39:-;;;:::i;:::-;:::o;1752:7233:65:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":1280,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":1525,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_bytes":{"entryPoint":3067,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":2978,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3032,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":10318,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":10303,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":1540,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint256":{"entryPoint":2048,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":2033,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":1414,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":3300,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":3287,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":8171,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":8158,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":5144,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":5095,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple":{"entryPoint":1570,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":1427,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":2304,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":2291,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_memory":{"entryPoint":2911,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":11663,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":4951,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":1266,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":2932,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":4916,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":11084,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":5071,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":5075,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":1402,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":7820,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":3284,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":1299,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":7781,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":2235,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":7825,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by":{"entryPoint":7471,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_30_by":{"entryPoint":8601,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":8570,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":7912,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":8632,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":7703,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":1377,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":2010,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":7871,"id":null,"parameterSlots":1,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":7502,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":5049,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":6758,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":10253,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":8111,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":10265,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":7943,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":10008,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":7955,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_100_by_1_to_uint256":{"entryPoint":8573,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":7734,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":7474,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":7706,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":8604,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":7915,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":5038,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":8635,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":7884,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":6746,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":10241,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":6718,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":7096,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":8012,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":2967,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":5013,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":5084,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_BPS_BASE":{"entryPoint":4107,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_BPS_FEE":{"entryPoint":5527,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_MAX_BPS_FEE":{"entryPoint":2325,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_REBALANCE_THRESHOLD":{"entryPoint":4640,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":5168,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_USDC":{"entryPoint":4228,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_WNATIVE":{"entryPoint":5289,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniAgentFactory":{"entryPoint":1800,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniDCAVaultRegistry":{"entryPoint":6111,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniHyperPoolZap":{"entryPoint":4708,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniOracle":{"entryPoint":2618,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniPoolPeriphery":{"entryPoint":3508,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniPoolRegistry":{"entryPoint":2686,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniPoolZap":{"entryPoint":3389,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniRebalancer":{"entryPoint":5408,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniRegistry":{"entryPoint":6179,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniRouter":{"entryPoint":2393,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniSwapper":{"entryPoint":3935,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baluniYearnVaultRegistry":{"entryPoint":1448,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_get1inchSpotAgg":{"entryPoint":4400,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBPS_BASE":{"entryPoint":3178,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBPS_FEE":{"entryPoint":4160,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniAgentFactory":{"entryPoint":6489,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniDCAVaultRegistry":{"entryPoint":6593,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniHyperPoolZap":{"entryPoint":1732,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniOracle":{"entryPoint":5631,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniPoolPeriphery":{"entryPoint":1853,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniPoolRegistry":{"entryPoint":2182,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniPoolZap":{"entryPoint":1626,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniRebalancer":{"entryPoint":5941,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniRegistry":{"entryPoint":5837,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniRouter":{"entryPoint":1679,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniSwapper":{"entryPoint":4039,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBaluniYearnVaultRegistry":{"entryPoint":2129,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getMAX_BPS_FEE":{"entryPoint":4504,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getREBALANCE_THRESHOLD":{"entryPoint":6232,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getStaticOracle":{"entryPoint":4863,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getTreasury":{"entryPoint":2446,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getUSDC":{"entryPoint":1906,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getUniswapFactory":{"entryPoint":2499,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getUniswapQuoter":{"entryPoint":5221,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getUniswapRouter":{"entryPoint":3231,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getWNATIVE":{"entryPoint":3680,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_inchSpotAgg":{"entryPoint":3867,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":3988,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":4347,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":3321,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":3733,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_set1inchSpotAgg":{"entryPoint":5735,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBPS_FEE":{"entryPoint":4761,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniAgentFactory":{"entryPoint":6336,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniDCAVaultRegistry":{"entryPoint":5994,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniHyperPoolZap":{"entryPoint":4812,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniOracle":{"entryPoint":6438,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniPoolPeriphery":{"entryPoint":3442,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniPoolRegistry":{"entryPoint":6542,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniPoolZap":{"entryPoint":4453,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniRebalancer":{"entryPoint":1575,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniRegistry":{"entryPoint":3629,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniRouter":{"entryPoint":2552,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniSwapper":{"entryPoint":5786,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setBaluniYearnVaultRegistry":{"entryPoint":5580,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setREBALANCE_THRESHOLD":{"entryPoint":2078,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setStaticOracle":{"entryPoint":5890,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setTreasury":{"entryPoint":6285,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setUSDC":{"entryPoint":5342,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setUniswapFactory":{"entryPoint":6045,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setUniswapQuoter":{"entryPoint":1959,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setUniswapRouter":{"entryPoint":5684,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setWNATIVE":{"entryPoint":5461,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_staticOracle":{"entryPoint":4572,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":6387,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_treasury":{"entryPoint":3576,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_uniswapFactory":{"entryPoint":4294,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_uniswapQuoter":{"entryPoint":2754,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_uniswapRouter":{"entryPoint":3799,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":3136,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":1324,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_uint256":{"entryPoint":2238,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":6838,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":7787,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":7370,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":7838,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":11686,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":2870,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":10966,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":10955,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":11441,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":11327,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":10987,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":10792,"id":193,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":10230,"id":18747,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":11225,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":11572,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":10666,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":9898,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":10020,"id":562,"parameterSlots":0,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":11727,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_get1inchSpotAgg":{"entryPoint":8847,"id":19111,"parameterSlots":0,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":11452,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getBPS_BASE":{"entryPoint":7403,"id":19138,"parameterSlots":0,"returnSlots":1},"fun_getBPS_FEE":{"entryPoint":8795,"id":19120,"parameterSlots":0,"returnSlots":1},"fun_getBaluniAgentFactory":{"entryPoint":9811,"id":19039,"parameterSlots":0,"returnSlots":1},"fun_getBaluniDCAVaultRegistry":{"entryPoint":9876,"id":19183,"parameterSlots":0,"returnSlots":1},"fun_getBaluniHyperPoolZap":{"entryPoint":6915,"id":19255,"parameterSlots":0,"returnSlots":1},"fun_getBaluniOracle":{"entryPoint":9193,"id":19030,"parameterSlots":0,"returnSlots":1},"fun_getBaluniPoolPeriphery":{"entryPoint":6937,"id":19048,"parameterSlots":0,"returnSlots":1},"fun_getBaluniPoolRegistry":{"entryPoint":7205,"id":19057,"parameterSlots":0,"returnSlots":1},"fun_getBaluniPoolZap":{"entryPoint":6871,"id":19231,"parameterSlots":0,"returnSlots":1},"fun_getBaluniRebalancer":{"entryPoint":9409,"id":19066,"parameterSlots":0,"returnSlots":1},"fun_getBaluniRegistry":{"entryPoint":9344,"id":19084,"parameterSlots":0,"returnSlots":1},"fun_getBaluniRouter":{"entryPoint":6893,"id":19075,"parameterSlots":0,"returnSlots":1},"fun_getBaluniSwapper":{"entryPoint":8773,"id":19021,"parameterSlots":0,"returnSlots":1},"fun_getBaluniYearnVaultRegistry":{"entryPoint":7183,"id":19174,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":11046,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":10900,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getMAX_BPS_FEE":{"entryPoint":8912,"id":19129,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":10997,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getREBALANCE_THRESHOLD":{"entryPoint":9516,"id":19147,"parameterSlots":0,"returnSlots":1},"fun_getStaticOracle":{"entryPoint":9020,"id":19165,"parameterSlots":0,"returnSlots":1},"fun_getTreasury":{"entryPoint":7227,"id":19156,"parameterSlots":0,"returnSlots":1},"fun_getUSDC":{"entryPoint":6959,"id":19102,"parameterSlots":0,"returnSlots":1},"fun_getUniswapFactory":{"entryPoint":7249,"id":19003,"parameterSlots":0,"returnSlots":1},"fun_getUniswapQuoter":{"entryPoint":9042,"id":19207,"parameterSlots":0,"returnSlots":1},"fun_getUniswapRouter":{"entryPoint":7425,"id":19012,"parameterSlots":0,"returnSlots":1},"fun_getWNATIVE":{"entryPoint":7663,"id":19093,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":8763,"id":18738,"parameterSlots":0,"returnSlots":0},"fun_initialize_inner":{"entryPoint":8663,"id":null,"parameterSlots":0,"returnSlots":0},"fun_isInitializing":{"entryPoint":11778,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":11033,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_owner":{"entryPoint":8817,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":7558,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":7546,"id":null,"parameterSlots":1,"returnSlots":1},"fun_renounceOwnership":{"entryPoint":7765,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":7746,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":11972,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_set1inchSpotAgg":{"entryPoint":9290,"id":18942,"parameterSlots":1,"returnSlots":0},"fun_set1inchSpotAgg_inner":{"entryPoint":9277,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBPS_FEE":{"entryPoint":8966,"id":18981,"parameterSlots":1,"returnSlots":0},"fun_setBPS_FEE_inner":{"entryPoint":8953,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniAgentFactory":{"entryPoint":9613,"id":18825,"parameterSlots":1,"returnSlots":0},"fun_setBaluniAgentFactory_inner":{"entryPoint":9600,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniDCAVaultRegistry":{"entryPoint":9463,"id":18968,"parameterSlots":1,"returnSlots":0},"fun_setBaluniDCAVaultRegistry_inner":{"entryPoint":9450,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniHyperPoolZap":{"entryPoint":9009,"id":19246,"parameterSlots":1,"returnSlots":0},"fun_setBaluniHyperPoolZap_inner":{"entryPoint":8996,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniOracle":{"entryPoint":9800,"id":18812,"parameterSlots":1,"returnSlots":0},"fun_setBaluniOracle_inner":{"entryPoint":9787,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniPoolPeriphery":{"entryPoint":7609,"id":18838,"parameterSlots":1,"returnSlots":0},"fun_setBaluniPoolPeriphery_inner":{"entryPoint":7596,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniPoolRegistry":{"entryPoint":9865,"id":18851,"parameterSlots":1,"returnSlots":0},"fun_setBaluniPoolRegistry_inner":{"entryPoint":9852,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniPoolZap":{"entryPoint":8901,"id":19222,"parameterSlots":1,"returnSlots":0},"fun_setBaluniPoolZap_inner":{"entryPoint":8888,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniRebalancer":{"entryPoint":6818,"id":18864,"parameterSlots":1,"returnSlots":0},"fun_setBaluniRebalancer_inner":{"entryPoint":6805,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniRegistry":{"entryPoint":7652,"id":18903,"parameterSlots":1,"returnSlots":0},"fun_setBaluniRegistry_inner":{"entryPoint":7639,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniRouter":{"entryPoint":7302,"id":18890,"parameterSlots":1,"returnSlots":0},"fun_setBaluniRouter_inner":{"entryPoint":7289,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniSwapper":{"entryPoint":9333,"id":18799,"parameterSlots":1,"returnSlots":0},"fun_setBaluniSwapper_inner":{"entryPoint":9320,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setBaluniYearnVaultRegistry":{"entryPoint":9182,"id":18877,"parameterSlots":1,"returnSlots":0},"fun_setBaluniYearnVaultRegistry_inner":{"entryPoint":9169,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":11455,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_setREBALANCE_THRESHOLD":{"entryPoint":7172,"id":18994,"parameterSlots":1,"returnSlots":0},"fun_setREBALANCE_THRESHOLD_inner":{"entryPoint":7159,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setStaticOracle":{"entryPoint":9398,"id":18955,"parameterSlots":1,"returnSlots":0},"fun_setStaticOracle_inner":{"entryPoint":9385,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setTreasury":{"entryPoint":9570,"id":18760,"parameterSlots":1,"returnSlots":0},"fun_setTreasury_inner":{"entryPoint":9557,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setUSDC":{"entryPoint":9096,"id":18929,"parameterSlots":1,"returnSlots":0},"fun_setUSDC_inner":{"entryPoint":9083,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setUniswapFactory":{"entryPoint":9505,"id":18773,"parameterSlots":1,"returnSlots":0},"fun_setUniswapFactory_inner":{"entryPoint":9493,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setUniswapQuoter":{"entryPoint":7013,"id":19198,"parameterSlots":1,"returnSlots":0},"fun_setUniswapQuoter_inner":{"entryPoint":7000,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setUniswapRouter":{"entryPoint":9247,"id":18786,"parameterSlots":1,"returnSlots":0},"fun_setUniswapRouter_inner":{"entryPoint":9234,"id":null,"parameterSlots":1,"returnSlots":0},"fun_setWNATIVE":{"entryPoint":9139,"id":18916,"parameterSlots":1,"returnSlots":0},"fun_setWNATIVE_inner":{"entryPoint":9126,"id":null,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership":{"entryPoint":9757,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":9643,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":11088,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":10348,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":7354,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":7333,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":11808,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_BPS_BASE":{"entryPoint":4092,"id":18706,"parameterSlots":0,"returnSlots":1},"getter_fun_BPS_FEE":{"entryPoint":5512,"id":18704,"parameterSlots":0,"returnSlots":1},"getter_fun_MAX_BPS_FEE":{"entryPoint":2276,"id":18702,"parameterSlots":0,"returnSlots":1},"getter_fun_REBALANCE_THRESHOLD":{"entryPoint":4625,"id":18708,"parameterSlots":0,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":5060,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_USDC":{"entryPoint":4213,"id":18698,"parameterSlots":0,"returnSlots":1},"getter_fun_WNATIVE":{"entryPoint":5274,"id":18696,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniAgentFactory":{"entryPoint":1785,"id":18672,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniDCAVaultRegistry":{"entryPoint":6096,"id":18690,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniHyperPoolZap":{"entryPoint":4693,"id":19233,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniOracle":{"entryPoint":2603,"id":18684,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniPoolPeriphery":{"entryPoint":3493,"id":18674,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniPoolRegistry":{"entryPoint":2671,"id":18676,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniPoolZap":{"entryPoint":3374,"id":19209,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniRebalancer":{"entryPoint":5393,"id":18678,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniRegistry":{"entryPoint":6164,"id":18682,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniRouter":{"entryPoint":2378,"id":18680,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniSwapper":{"entryPoint":3920,"id":18686,"parameterSlots":0,"returnSlots":1},"getter_fun_baluniYearnVaultRegistry":{"entryPoint":1362,"id":18688,"parameterSlots":0,"returnSlots":1},"getter_fun_inchSpotAgg":{"entryPoint":3852,"id":18700,"parameterSlots":0,"returnSlots":1},"getter_fun_staticOracle":{"entryPoint":4557,"id":18694,"parameterSlots":0,"returnSlots":1},"getter_fun_treasury":{"entryPoint":3561,"id":18692,"parameterSlots":0,"returnSlots":1},"getter_fun_uniswapFactory":{"entryPoint":4281,"id":18668,"parameterSlots":0,"returnSlots":1},"getter_fun_uniswapQuoter":{"entryPoint":2739,"id":19185,"parameterSlots":0,"returnSlots":1},"getter_fun_uniswapRouter":{"entryPoint":3784,"id":18670,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":6715,"id":null,"parameterSlots":1,"returnSlots":1},"modifier_initializer":{"entryPoint":8192,"id":302,"parameterSlots":0,"returnSlots":0},"modifier_notDelegated":{"entryPoint":7451,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":11308,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":10936,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":10977,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":7685,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":9624,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18744":{"entryPoint":10219,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18753":{"entryPoint":9538,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18766":{"entryPoint":9474,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18779":{"entryPoint":9215,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18792":{"entryPoint":9301,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18805":{"entryPoint":9768,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18818":{"entryPoint":9581,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18831":{"entryPoint":7577,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18844":{"entryPoint":9833,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18857":{"entryPoint":6650,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18870":{"entryPoint":9150,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18883":{"entryPoint":7270,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18896":{"entryPoint":7620,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18909":{"entryPoint":9107,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18922":{"entryPoint":9064,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18935":{"entryPoint":9258,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18948":{"entryPoint":9366,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18961":{"entryPoint":9431,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18974":{"entryPoint":8934,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_18987":{"entryPoint":7024,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_19191":{"entryPoint":6981,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_19215":{"entryPoint":8869,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_19239":{"entryPoint":8977,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":7313,"id":488,"parameterSlots":2,"returnSlots":0},"panic_error_0x41":{"entryPoint":2825,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":6770,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":8123,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":7124,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":8040,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":1348,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_uint256":{"entryPoint":2262,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":6858,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":7807,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":7390,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":7858,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2807,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":6646,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":2811,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":1501,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":1272,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":1276,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":2815,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":6669,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":10277,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":8075,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":6833,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":7775,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":1260,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1295,"id":null,"parameterSlots":2,"returnSlots":1},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":4974,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":7983,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":7043,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":6674,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":8081,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":6773,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":8126,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":7127,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":8043,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":1505,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":10283,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":2013,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":6829,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":11774,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":11658,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":7447,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":7366,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":10037},{"length":32,"start":10170},{"length":32,"start":10683}]},"linkReferences":{},"object":"60806040526004361015610013575b6119f6565b61001d5f356104ec565b80630218ecd6146104e75780630241bffa146104e2578063040f767e146104dd57806304cc7325146104d85780630f21717d146104d35780631292f02e146104ce5780631acb6141146104c95780631bf01e9b146104c457806326158136146104bf5780632da52442146104ba57806332327d1f146104b557806332569e02146104b057806334decfc9146104ab57806339b65140146104a65780633b19e84a146104a15780633e6dfa361461049c578063400fb66814610497578063468a7071146104925780634b66a1351461048d5780634db4a352146104885780634f1ef286146104835780634f4608a21461047e578063524900b51461047957806352d1902d146104745780635333c1181461046f578063588c5b701461046a57806358a672331461046557806361d027b3146104605780636c43274c1461045b5780636c9c007814610456578063715018a614610451578063735de9f71461044c578063782dd902146104475780637dfb7ea1146104425780638129fc1c1461043d57806382755ebb14610438578063853771881461043357806385462d6f1461042e57806389a30271146104295780638bdb2afa146104245780638da5cb5b1461041f5780638e1c3a8a1461041a5780638ffc0673146104155780639380fb6f146104105780639454705f1461040b57806399c22ca6146104065780639d9a9d47146104015780639e6453f8146103fc578063a23dccee146103f7578063a5d2236f146103f2578063ad3cb1cc146103ed578063b0a70975146103e8578063b381cf40146103e3578063b3e089a2146103de578063b691a419146103d9578063b6fe9cc7146103d4578063b9f5e617146103cf578063ba535c54146103ca578063bb3ba04c146103c5578063bea9849e146103c0578063c08f786b146103bb578063c3f5df5c146103b6578063c9aba8ae146103b1578063cc01e9a6146103ac578063cff49d68146103a7578063d7e53673146103a2578063e04b677f1461039d578063e23d837b14610398578063e528ca1214610393578063ea233c051461038e578063f0f4426014610389578063f1dccde714610384578063f2fde38b1461037f578063f5b84f641461037a578063f5d2d99814610375578063f98977a9146103705763ffa08e950361000e576119c1565b61198e565b611959565b611926565b6118f3565b6118c0565b61188d565b611858565b611823565b6117df565b61179d565b61176a565b611735565b611702565b6116cd565b61169a565b611667565b611634565b6115ff565b6115cc565b611597565b611555565b611520565b6114de565b6114a9565b611465565b611430565b6112ff565b6112cc565b611299565b611264565b611220565b6111dc565b611198565b611165565b611130565b6110fb565b6110c6565b611084565b611040565b61100b565b610fc7565b610f94565b610f5f565b610f1b565b610ed7565b610e95565b610e60565b610e2d565b610df8565b610db4565b610d72565b610d3d565b610cf9565b610c9f565b610c6a565b610c40565b610ac2565b610a7e565b610a3a565b6109f8565b6109c3565b61098e565b610959565b610915565b610886565b610851565b61081e565b6107a7565b610772565b61073d565b610708565b6106c4565b61068f565b61065a565b610627565b6105a8565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261050a57565b6104fc565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61053c906008610541930261050f565b610513565b90565b9061054f915461052c565b90565b61055e600a5f90610544565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61058390610561565b90565b61058f9061057a565b9052565b91906105a6905f60208501940190610586565b565b346105d8576105b8366004610500565b6105d46105c3610552565b6105cb6104f2565b91829182610593565b0390f35b6104f8565b5f80fd5b6105ea8161057a565b036105f157565b5f80fd5b90503590610602826105e1565b565b9060208282031261061d5761061a915f016105f5565b90565b6104fc565b5f0190565b346106555761063f61063a366004610604565b611aa2565b6106476104f2565b8061065181610622565b0390f35b6104f8565b3461068a5761066a366004610500565b610686610675611ad7565b61067d6104f2565b91829182610593565b0390f35b6104f8565b346106bf5761069f366004610500565b6106bb6106aa611aed565b6106b26104f2565b91829182610593565b0390f35b6104f8565b346106f4576106d4366004610500565b6106f06106df611b03565b6106e76104f2565b91829182610593565b0390f35b6104f8565b61070560025f90610544565b90565b3461073857610718366004610500565b6107346107236106f9565b61072b6104f2565b91829182610593565b0390f35b6104f8565b3461076d5761074d366004610500565b610769610758611b19565b6107606104f2565b91829182610593565b0390f35b6104f8565b346107a257610782366004610500565b61079e61078d611b2f565b6107956104f2565b91829182610593565b0390f35b6104f8565b346107d5576107bf6107ba366004610604565b611b65565b6107c76104f2565b806107d181610622565b0390f35b6104f8565b90565b6107e6816107da565b036107ed57565b5f80fd5b905035906107fe826107dd565b565b9060208282031261081957610816915f016107f1565b90565b6104fc565b3461084c57610836610831366004610800565b611c04565b61083e6104f2565b8061084881610622565b0390f35b6104f8565b3461088157610861366004610500565b61087d61086c611c0f565b6108746104f2565b91829182610593565b0390f35b6104f8565b346108b657610896366004610500565b6108b26108a1611c25565b6108a96104f2565b91829182610593565b0390f35b6104f8565b90565b6108ce9060086108d3930261050f565b6108bb565b90565b906108e191546108be565b90565b6108f060115f906108d6565b90565b6108fc906107da565b9052565b9190610913905f602085019401906108f3565b565b3461094557610925366004610500565b6109416109306108e4565b6109386104f2565b91829182610900565b0390f35b6104f8565b61095660065f90610544565b90565b3461098957610969366004610500565b61098561097461094a565b61097c6104f2565b91829182610593565b0390f35b6104f8565b346109be5761099e366004610500565b6109ba6109a9611c3b565b6109b16104f2565b91829182610593565b0390f35b6104f8565b346109f3576109d3366004610500565b6109ef6109de611c51565b6109e66104f2565b91829182610593565b0390f35b6104f8565b34610a2657610a10610a0b366004610604565b611c86565b610a186104f2565b80610a2281610622565b0390f35b6104f8565b610a3760085f90610544565b90565b34610a6a57610a4a366004610500565b610a66610a55610a2b565b610a5d6104f2565b91829182610593565b0390f35b6104f8565b610a7b60045f90610544565b90565b34610aae57610a8e366004610500565b610aaa610a99610a6f565b610aa16104f2565b91829182610593565b0390f35b6104f8565b610abf60155f90610544565b90565b34610af257610ad2366004610500565b610aee610add610ab3565b610ae56104f2565b91829182610593565b0390f35b6104f8565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90610b4090610aff565b810190811067ffffffffffffffff821117610b5a57604052565b610b09565b90610b72610b6b6104f2565b9283610b36565b565b67ffffffffffffffff8111610b9257610b8e602091610aff565b0190565b610b09565b90825f939282370152565b90929192610bb7610bb282610b74565b610b5f565b93818552602085019082840111610bd357610bd192610b97565b565b610afb565b9080601f83011215610bf657816020610bf393359101610ba2565b90565b610af7565b919091604081840312610c3b57610c14835f83016105f5565b92602082013567ffffffffffffffff8111610c3657610c339201610bd8565b90565b6105dd565b6104fc565b610c54610c4e366004610bfb565b90611cba565b610c5c6104f2565b80610c6681610622565b0390f35b34610c9a57610c7a366004610500565b610c96610c85611ceb565b610c8d6104f2565b91829182610900565b0390f35b6104f8565b34610ccf57610caf366004610500565b610ccb610cba611d01565b610cc26104f2565b91829182610593565b0390f35b6104f8565b90565b610ce090610cd4565b9052565b9190610cf7905f60208501940190610cd7565b565b34610d2957610d09366004610500565b610d25610d14611d86565b610d1c6104f2565b91829182610ce4565b0390f35b6104f8565b610d3a60165f90610544565b90565b34610d6d57610d4d366004610500565b610d69610d58610d2e565b610d606104f2565b91829182610593565b0390f35b6104f8565b34610da057610d8a610d85366004610604565b611db9565b610d926104f2565b80610d9c81610622565b0390f35b6104f8565b610db160035f90610544565b90565b34610de457610dc4366004610500565b610de0610dcf610da5565b610dd76104f2565b91829182610593565b0390f35b6104f8565b610df5600c5f90610544565b90565b34610e2857610e08366004610500565b610e24610e13610de9565b610e1b6104f2565b91829182610593565b0390f35b6104f8565b34610e5b57610e45610e40366004610604565b611de4565b610e4d6104f2565b80610e5781610622565b0390f35b6104f8565b34610e9057610e70366004610500565b610e8c610e7b611def565b610e836104f2565b91829182610593565b0390f35b6104f8565b34610ec357610ea5366004610500565b610ead611e55565b610eb56104f2565b80610ebf81610622565b0390f35b6104f8565b610ed460015f90610544565b90565b34610f0757610ee7366004610500565b610f03610ef2610ec8565b610efa6104f2565b91829182610593565b0390f35b6104f8565b610f1860105f90610544565b90565b34610f4b57610f2b366004610500565b610f47610f36610f0c565b610f3e6104f2565b91829182610593565b0390f35b6104f8565b610f5c60095f90610544565b90565b34610f8f57610f6f366004610500565b610f8b610f7a610f50565b610f826104f2565b91829182610593565b0390f35b6104f8565b34610fc257610fa4366004610500565b610fac61223b565b610fb46104f2565b80610fbe81610622565b0390f35b6104f8565b34610ff757610fd7366004610500565b610ff3610fe2612245565b610fea6104f2565b91829182610593565b0390f35b6104f8565b61100860135f906108d6565b90565b3461103b5761101b366004610500565b611037611026610ffc565b61102e6104f2565b91829182610900565b0390f35b6104f8565b3461107057611050366004610500565b61106c61105b61225b565b6110636104f2565b91829182610900565b0390f35b6104f8565b611081600f5f90610544565b90565b346110b457611094366004610500565b6110b061109f611075565b6110a76104f2565b91829182610593565b0390f35b6104f8565b6110c35f80610544565b90565b346110f6576110d6366004610500565b6110f26110e16110b9565b6110e96104f2565b91829182610593565b0390f35b6104f8565b3461112b5761110b366004610500565b611127611116612271565b61111e6104f2565b91829182610593565b0390f35b6104f8565b3461116057611140366004610500565b61115c61114b61228f565b6111536104f2565b91829182610593565b0390f35b6104f8565b346111935761117d611178366004610604565b6122c5565b6111856104f2565b8061118f81610622565b0390f35b6104f8565b346111c8576111a8366004610500565b6111c46111b36122d0565b6111bb6104f2565b91829182610900565b0390f35b6104f8565b6111d9600d5f90610544565b90565b3461120c576111ec366004610500565b6112086111f76111cd565b6111ff6104f2565b91829182610593565b0390f35b6104f8565b61121d60145f906108d6565b90565b3461125057611230366004610500565b61124c61123b611211565b6112436104f2565b91829182610900565b0390f35b6104f8565b61126160175f90610544565b90565b3461129457611274366004610500565b61129061127f611255565b6112876104f2565b91829182610593565b0390f35b6104f8565b346112c7576112b16112ac366004610800565b612306565b6112b96104f2565b806112c381610622565b0390f35b6104f8565b346112fa576112e46112df366004610604565b612331565b6112ec6104f2565b806112f681610622565b0390f35b6104f8565b3461132f5761130f366004610500565b61132b61131a61233c565b6113226104f2565b91829182610593565b0390f35b6104f8565b67ffffffffffffffff81116113525761134e602091610aff565b0190565b610b09565b9061136961136483611334565b610b5f565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61139f6005611357565b906113ac6020830161136e565b565b6113b6611395565b90565b6113c16113ae565b90565b6113cc6113b9565b90565b5190565b60209181520190565b90825f9392825e0152565b61140661140f602093611414936113fd816113cf565b938480936113d3565b958691016113dc565b610aff565b0190565b61142d9160208201915f8184039101526113e7565b90565b3461146057611440366004610500565b61145c61144b6113c4565b6114536104f2565b91829182611418565b0390f35b6104f8565b3461149557611475366004610500565b611491611480612352565b6114886104f2565b91829182610593565b0390f35b6104f8565b6114a6600e5f90610544565b90565b346114d9576114b9366004610500565b6114d56114c461149a565b6114cc6104f2565b91829182610593565b0390f35b6104f8565b3461150c576114f66114f1366004610604565b612388565b6114fe6104f2565b8061150881610622565b0390f35b6104f8565b61151d60055f90610544565b90565b3461155057611530366004610500565b61154c61153b611511565b6115436104f2565b91829182610593565b0390f35b6104f8565b346115835761156d611568366004610604565b6123b3565b6115756104f2565b8061157f81610622565b0390f35b6104f8565b61159460125f906108d6565b90565b346115c7576115a7366004610500565b6115c36115b2611588565b6115ba6104f2565b91829182610900565b0390f35b6104f8565b346115fa576115e46115df366004610604565b6123de565b6115ec6104f2565b806115f681610622565b0390f35b6104f8565b3461162f5761160f366004610500565b61162b61161a6123e9565b6116226104f2565b91829182610593565b0390f35b6104f8565b346116625761164c611647366004610604565b61241f565b6116546104f2565b8061165e81610622565b0390f35b6104f8565b346116955761167f61167a366004610604565b61244a565b6116876104f2565b8061169181610622565b0390f35b6104f8565b346116c8576116b26116ad366004610604565b612475565b6116ba6104f2565b806116c481610622565b0390f35b6104f8565b346116fd576116dd366004610500565b6116f96116e8612480565b6116f06104f2565b91829182610593565b0390f35b6104f8565b346117305761171a611715366004610604565b6124b6565b6117226104f2565b8061172c81610622565b0390f35b6104f8565b3461176557611745366004610500565b6117616117506124c1565b6117586104f2565b91829182610593565b0390f35b6104f8565b346117985761178261177d366004610604565b6124f7565b61178a6104f2565b8061179481610622565b0390f35b6104f8565b346117cb576117b56117b0366004610604565b612521565b6117bd6104f2565b806117c781610622565b0390f35b6104f8565b6117dc600b5f90610544565b90565b3461180f576117ef366004610500565b61180b6117fa6117d0565b6118026104f2565b91829182610593565b0390f35b6104f8565b61182060075f90610544565b90565b3461185357611833366004610500565b61184f61183e611814565b6118466104f2565b91829182610593565b0390f35b6104f8565b3461188857611868366004610500565b61188461187361252c565b61187b6104f2565b91829182610900565b0390f35b6104f8565b346118bb576118a56118a0366004610604565b612562565b6118ad6104f2565b806118b781610622565b0390f35b6104f8565b346118ee576118d86118d3366004610604565b61258d565b6118e06104f2565b806118ea81610622565b0390f35b6104f8565b346119215761190b611906366004610604565b61261d565b6119136104f2565b8061191d81610622565b0390f35b6104f8565b346119545761193e611939366004610604565b612648565b6119466104f2565b8061195081610622565b0390f35b6104f8565b3461198957611969366004610500565b611985611974612653565b61197c6104f2565b91829182610593565b0390f35b6104f8565b346119bc576119a66119a1366004610604565b612689565b6119ae6104f2565b806119b881610622565b0390f35b6104f8565b346119f1576119d1366004610500565b6119ed6119dc612694565b6119e46104f2565b91829182610593565b0390f35b6104f8565b5f80fd5b611a0b90611a066126aa565b611a95565b565b5f1b90565b90611a3173ffffffffffffffffffffffffffffffffffffffff91611a0d565b9181191691161790565b90565b611a52611a4d611a5792610561565b611a3b565b610561565b90565b611a6390611a3e565b90565b611a6f90611a5a565b90565b90565b90611a8a611a85611a9192611a66565b611a72565b8254611a12565b9055565b611aa0906005611a75565b565b611aab906119fa565b565b5f90565b5f1c90565b611ac2611ac791611ab1565b610513565b90565b611ad49054611ab6565b90565b611adf611aad565b50611aea6016611aca565b90565b611af5611aad565b50611b006006611aca565b90565b611b0b611aad565b50611b166017611aca565b90565b611b21611aad565b50611b2c6003611aca565b90565b611b37611aad565b50611b42600f611aca565b90565b611b5690611b516126aa565b611b58565b565b611b63906015611a75565b565b611b6e90611b45565b565b611b8190611b7c6126aa565b611bf7565b565b90611bae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91611a0d565b9181191691161790565b611bcc611bc7611bd1926107da565b611a3b565b6107da565b90565b90565b90611bec611be7611bf392611bb8565b611bd4565b8254611b83565b9055565b611c02906014611bd7565b565b611c0d90611b70565b565b611c17611aad565b50611c22600a611aca565b90565b611c2d611aad565b50611c386004611aca565b90565b611c43611aad565b50611c4e600c611aca565b90565b611c59611aad565b50611c635f611aca565b90565b611c7790611c726126aa565b611c79565b565b611c84906006611a75565b565b611c8f90611c66565b565b90611ca391611c9e612724565b611ca5565b565b90611cb891611cb3816127f6565b61286c565b565b90611cc491611c91565b565b5f90565b611cd6611cdb91611ab1565b6108bb565b90565b611ce89054611cca565b90565b611cf3611cc6565b50611cfe6013611cde565b90565b611d09611aad565b50611d146001611aca565b90565b5f90565b611d2c90611d276129aa565b611d7a565b90565b90565b611d46611d41611d4b92611d2f565b611a0d565b610cd4565b90565b611d777f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc611d32565b90565b50611d83611d4e565b90565b611d96611d91611d17565b611d1b565b90565b611daa90611da56126aa565b611dac565b565b611db7906003611a75565b565b611dc290611d99565b565b611dd590611dd06126aa565b611dd7565b565b611de2906007611a75565b565b611ded90611dc4565b565b611df7611aad565b50611e02600e611aca565b90565b611e0d6126aa565b611e15611e42565b565b90565b611e2e611e29611e3392611e17565b611a3b565b610561565b90565b611e3f90611e1a565b90565b611e53611e4e5f611e36565b612a28565b565b611e5d611e05565b565b60401c90565b60ff1690565b611e77611e7c91611e5f565b611e65565b90565b611e899054611e6b565b90565b151590565b67ffffffffffffffff1690565b611eaa611eaf91611ab1565b611e91565b90565b611ebc9054611e9e565b90565b67ffffffffffffffff1690565b611ee0611edb611ee592611e17565b611a3b565b611ebf565b90565b90565b611eff611efa611f0492611ee8565b611a3b565b611ebf565b90565b611f1090611a5a565b90565b611f27611f22611f2c92611e17565b611a3b565b6107da565b90565b90611f4267ffffffffffffffff91611a0d565b9181191691161790565b611f60611f5b611f6592611ebf565b611a3b565b611ebf565b90565b90565b90611f80611f7b611f8792611f4c565b611f68565b8254611f2f565b9055565b60401b90565b90611fa568ff000000000000000091611f8b565b9181191691161790565b611fb890611e8c565b90565b90565b90611fd3611fce611fda92611faf565b611fbb565b8254611f91565b9055565b611fe790611eeb565b9052565b9190611ffe905f60208501940190611fde565b565b612008612a94565b61201c6120165f8301611e7f565b15611e8c565b6120275f8301611eb2565b8061203a6120345f611ecc565b91611ebf565b1480612173575b9061205561204f6001611eeb565b91611ebf565b148061214b575b612067909115611e8c565b908161213a575b506120fe576120886120806001611eeb565b5f8401611f6b565b806120ec575b6120966121d7565b61209e575b50565b6120ab905f809101611fbe565b60016120e37fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916120da6104f2565b91829182611feb565b0390a15f61209b565b6120f960015f8401611fbe565b61208e565b6121066104f2565b7ff92ee8a90000000000000000000000000000000000000000000000000000000081528061213660048201610622565b0390fd5b612145915015611e8c565b5f61206e565b5061206761215830611f07565b3b61216b6121655f611f13565b916107da565b14905061205c565b5081612041565b90565b61219161218c6121969261217a565b611a3b565b6107da565b90565b90565b6121b06121ab6121b592612199565b611a3b565b6107da565b90565b90565b6121cf6121ca6121d4926121b8565b611a3b565b6107da565b90565b6121e033612ad6565b6121e8612aeb565b6121fc6121f5606461217d565b6011611bd7565b612210612209601e61219c565b6012611bd7565b61222561221e6127106121bb565b6013611bd7565b612239612232606461217d565b6014611bd7565b565b612243612000565b565b61224d611aad565b506122586009611aca565b90565b612263611cc6565b5061226e6012611cde565b90565b612279611aad565b5061228c5f612286612af5565b01611aca565b90565b612297611aad565b506122a26010611aca565b90565b6122b6906122b16126aa565b6122b8565b565b6122c3906016611a75565b565b6122ce906122a5565b565b6122d8611cc6565b506122e36011611cde565b90565b6122f7906122f26126aa565b6122f9565b565b612304906012611bd7565b565b61230f906122e6565b565b6123229061231d6126aa565b612324565b565b61232f906017611a75565b565b61233a90612311565b565b612344611aad565b5061234f600d611aca565b90565b61235a611aad565b506123656015611aca565b90565b612379906123746126aa565b61237b565b565b61238690600f611a75565b565b61239190612368565b565b6123a49061239f6126aa565b6123a6565b565b6123b190600e611a75565b565b6123bc90612393565b565b6123cf906123ca6126aa565b6123d1565b565b6123dc90600a611a75565b565b6123e7906123be565b565b6123f1611aad565b506123fc6008611aca565b90565b6124109061240b6126aa565b612412565b565b61241d906001611a75565b565b612428906123ff565b565b61243b906124366126aa565b61243d565b565b612448906010611a75565b565b6124539061242a565b565b612466906124616126aa565b612468565b565b612473906009611a75565b565b61247e90612455565b565b612488611aad565b506124936007611aca565b90565b6124a7906124a26126aa565b6124a9565b565b6124b490600d611a75565b565b6124bf90612496565b565b6124c9611aad565b506124d46005611aca565b90565b6124e8906124e36126aa565b6124ea565b565b6124f590600b611a75565b565b612500906124d7565b565b6125139061250e6126aa565b612515565b565b61251f905f611a75565b565b61252a90612502565b565b612534611cc6565b5061253f6014611cde565b90565b6125539061254e6126aa565b612555565b565b61256090600c611a75565b565b61256b90612542565b565b61257e906125796126aa565b612580565b565b61258b906002611a75565b565b6125969061256d565b565b6125a9906125a46126aa565b6125ab565b565b806125c66125c06125bb5f611e36565b61057a565b9161057a565b146125d6576125d490612a28565b565b6126196125e25f611e36565b6125ea6104f2565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b61262690612598565b565b612639906126346126aa565b61263b565b565b612646906008611a75565b565b61265190612628565b565b61265b611aad565b506126666002611aca565b90565b61267a906126756126aa565b61267c565b565b612687906004611a75565b565b61269290612669565b565b61269c611aad565b506126a7600b611aca565b90565b6126b2612271565b6126cb6126c56126c0612b19565b61057a565b9161057a565b036126d257565b6127146126dd612b19565b6126e56104f2565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b61272190611a5a565b90565b61272d30612718565b61275f6127597f000000000000000000000000000000000000000000000000000000000000000061057a565b9161057a565b1480156127a9575b61276d57565b6127756104f2565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806127a560048201610622565b0390fd5b506127b2612b26565b6127e46127de7f000000000000000000000000000000000000000000000000000000000000000061057a565b9161057a565b1415612767565b506127f46126aa565b565b6127ff906127eb565b565b61280a90611a3e565b90565b61281690612801565b90565b61282290611a5a565b90565b60e01b90565b61283481610cd4565b0361283b57565b5f80fd5b9050519061284c8261282b565b565b9060208282031261286757612864915f0161283f565b90565b6104fc565b919061289a602061288461287f8661280d565b612819565b6352d1902d906128926104f2565b938492612825565b825281806128aa60048201610622565b03915afa80915f9261297a575b50155f1461290b5750509060016128cc57505b565b612907906128d86104f2565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b928361292661292061291b611d4e565b610cd4565b91610cd4565b0361293b57612936929350612b50565b6128ca565b612976846129476104f2565b9182917faa1d49a400000000000000000000000000000000000000000000000000000000835260048301610ce4565b0390fd5b61299c91925060203d81116129a3575b6129948183610b36565b81019061284e565b905f6128b7565b503d61298a565b6129b330612718565b6129e56129df7f000000000000000000000000000000000000000000000000000000000000000061057a565b9161057a565b036129ec57565b6129f46104f2565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280612a2460048201610622565b0390fd5b612a30612af5565b612a48612a3e5f8301611aca565b915f849101611a75565b90612a7c612a767f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611a66565b91611a66565b91612a856104f2565b80612a8f81610622565b0390a3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612ac990612ac4612bd9565b612acb565b565b612ad490612cb1565b565b612adf90612ab8565b565b612ae9612bd9565b565b612af3612ae1565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b612b21611aad565b503390565b612b2e611aad565b50612b495f612b43612b3e611d4e565b612cbc565b01611aca565b90565b5190565b90612b5a82612cbf565b81612b857fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91611a66565b90612b8e6104f2565b80612b9881610622565b0390a2612ba481612b4c565b612bb6612bb05f611f13565b916107da565b115f14612bca57612bc691612dcf565b505b565b5050612bd4612d34565b612bc8565b612bea612be4612e02565b15611e8c565b612bf057565b612bf86104f2565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280612c2860048201610622565b0390fd5b612c3d90612c38612bd9565b612c3f565b565b80612c5a612c54612c4f5f611e36565b61057a565b9161057a565b14612c6a57612c6890612a28565b565b612cad612c765f611e36565b612c7e6104f2565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b612cba90612c2c565b565b90565b803b612cd3612ccd5f611f13565b916107da565b14612cf557612cf3905f612ced612ce8611d4e565b612cbc565b01611a75565b565b612d3090612d016104f2565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b34612d47612d415f611f13565b916107da565b11612d4e57565b612d566104f2565b7fb398979f00000000000000000000000000000000000000000000000000000000815280612d8660048201610622565b0390fd5b606090565b90612da1612d9c83610b74565b610b5f565b918252565b3d5f14612dc157612db63d612d8f565b903d5f602084013e5b565b612dc9612d8a565b90612dbf565b5f80612dfb93612ddd612d8a565b508390602081019051915af490612df2612da6565b90919091612e20565b90565b5f90565b612e0a612dfe565b50612e1d5f612e17612a94565b01611e7f565b90565b90612e3490612e2d612d8a565b5015611e8c565b5f14612e405750612ec4565b612e4982612b4c565b612e5b612e555f611f13565b916107da565b1480612ea9575b612e6a575090565b612ea590612e766104f2565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610593565b0390fd5b50803b612ebe612eb85f611f13565b916107da565b14612e62565b612ecd81612b4c565b612edf612ed95f611f13565b916107da565b115f14612eee57805190602001fd5b612ef66104f2565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280612f2660048201610622565b0390fdfea2646970667358221220dbc3380cea3011a6ab926c13e065657aab37171c04ecc1bed89c2b10dd9ee9ea64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x19F6 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x4EC JUMP JUMPDEST DUP1 PUSH4 0x218ECD6 EQ PUSH2 0x4E7 JUMPI DUP1 PUSH4 0x241BFFA EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x40F767E EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x4CC7325 EQ PUSH2 0x4D8 JUMPI DUP1 PUSH4 0xF21717D EQ PUSH2 0x4D3 JUMPI DUP1 PUSH4 0x1292F02E EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0x1ACB6141 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0x1BF01E9B EQ PUSH2 0x4C4 JUMPI DUP1 PUSH4 0x26158136 EQ PUSH2 0x4BF JUMPI DUP1 PUSH4 0x2DA52442 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x32327D1F EQ PUSH2 0x4B5 JUMPI DUP1 PUSH4 0x32569E02 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x34DECFC9 EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x39B65140 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0x3B19E84A EQ PUSH2 0x4A1 JUMPI DUP1 PUSH4 0x3E6DFA36 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x400FB668 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x468A7071 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x4B66A135 EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x4DB4A352 EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0x4F4608A2 EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x524900B5 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0x5333C118 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x588C5B70 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x58A67233 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0x61D027B3 EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x6C43274C EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0x6C9C0078 EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x735DE9F7 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x782DD902 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x7DFB7EA1 EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x43D JUMPI DUP1 PUSH4 0x82755EBB EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x85377188 EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x85462D6F EQ PUSH2 0x42E JUMPI DUP1 PUSH4 0x89A30271 EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x8BDB2AFA EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x41F JUMPI DUP1 PUSH4 0x8E1C3A8A EQ PUSH2 0x41A JUMPI DUP1 PUSH4 0x8FFC0673 EQ PUSH2 0x415 JUMPI DUP1 PUSH4 0x9380FB6F EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0x9454705F EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x99C22CA6 EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x9D9A9D47 EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0x9E6453F8 EQ PUSH2 0x3FC JUMPI DUP1 PUSH4 0xA23DCCEE EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0xA5D2236F EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0xB0A70975 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0xB381CF40 EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xB3E089A2 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xB691A419 EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0xB6FE9CC7 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0xB9F5E617 EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0xBA535C54 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0xBB3BA04C EQ PUSH2 0x3C5 JUMPI DUP1 PUSH4 0xBEA9849E EQ PUSH2 0x3C0 JUMPI DUP1 PUSH4 0xC08F786B EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0xC3F5DF5C EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xC9ABA8AE EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xCC01E9A6 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xCFF49D68 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0xD7E53673 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0xE04B677F EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0xE23D837B EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0xE528CA12 EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0xEA233C05 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xF0F44260 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0xF1DCCDE7 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xF5B84F64 EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0xF5D2D998 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0xF98977A9 EQ PUSH2 0x370 JUMPI PUSH4 0xFFA08E95 SUB PUSH2 0xE JUMPI PUSH2 0x19C1 JUMP JUMPDEST PUSH2 0x198E JUMP JUMPDEST PUSH2 0x1959 JUMP JUMPDEST PUSH2 0x1926 JUMP JUMPDEST PUSH2 0x18F3 JUMP JUMPDEST PUSH2 0x18C0 JUMP JUMPDEST PUSH2 0x188D JUMP JUMPDEST PUSH2 0x1858 JUMP JUMPDEST PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x17DF JUMP JUMPDEST PUSH2 0x179D JUMP JUMPDEST PUSH2 0x176A JUMP JUMPDEST PUSH2 0x1735 JUMP JUMPDEST PUSH2 0x1702 JUMP JUMPDEST PUSH2 0x16CD JUMP JUMPDEST PUSH2 0x169A JUMP JUMPDEST PUSH2 0x1667 JUMP JUMPDEST PUSH2 0x1634 JUMP JUMPDEST PUSH2 0x15FF JUMP JUMPDEST PUSH2 0x15CC JUMP JUMPDEST PUSH2 0x1597 JUMP JUMPDEST PUSH2 0x1555 JUMP JUMPDEST PUSH2 0x1520 JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14A9 JUMP JUMPDEST PUSH2 0x1465 JUMP JUMPDEST PUSH2 0x1430 JUMP JUMPDEST PUSH2 0x12FF JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x1299 JUMP JUMPDEST PUSH2 0x1264 JUMP JUMPDEST PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x1198 JUMP JUMPDEST PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x1130 JUMP JUMPDEST PUSH2 0x10FB JUMP JUMPDEST PUSH2 0x10C6 JUMP JUMPDEST PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x1040 JUMP JUMPDEST PUSH2 0x100B JUMP JUMPDEST PUSH2 0xFC7 JUMP JUMPDEST PUSH2 0xF94 JUMP JUMPDEST PUSH2 0xF5F JUMP JUMPDEST PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xED7 JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST PUSH2 0xE60 JUMP JUMPDEST PUSH2 0xE2D JUMP JUMPDEST PUSH2 0xDF8 JUMP JUMPDEST PUSH2 0xDB4 JUMP JUMPDEST PUSH2 0xD72 JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST PUSH2 0xC9F JUMP JUMPDEST PUSH2 0xC6A JUMP JUMPDEST PUSH2 0xC40 JUMP JUMPDEST PUSH2 0xAC2 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x9C3 JUMP JUMPDEST PUSH2 0x98E JUMP JUMPDEST PUSH2 0x959 JUMP JUMPDEST PUSH2 0x915 JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST PUSH2 0x851 JUMP JUMPDEST PUSH2 0x81E JUMP JUMPDEST PUSH2 0x7A7 JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST PUSH2 0x73D JUMP JUMPDEST PUSH2 0x708 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x68F JUMP JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH2 0x627 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x50A JUMPI JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x53C SWAP1 PUSH1 0x8 PUSH2 0x541 SWAP4 MUL PUSH2 0x50F JUMP JUMPDEST PUSH2 0x513 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x54F SWAP2 SLOAD PUSH2 0x52C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x55E PUSH1 0xA PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x583 SWAP1 PUSH2 0x561 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x58F SWAP1 PUSH2 0x57A JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5A6 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x586 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5D8 JUMPI PUSH2 0x5B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x5D4 PUSH2 0x5C3 PUSH2 0x552 JUMP JUMPDEST PUSH2 0x5CB PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x5EA DUP2 PUSH2 0x57A JUMP JUMPDEST SUB PUSH2 0x5F1 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x602 DUP3 PUSH2 0x5E1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x61D JUMPI PUSH2 0x61A SWAP2 PUSH0 ADD PUSH2 0x5F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x655 JUMPI PUSH2 0x63F PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1AA2 JUMP JUMPDEST PUSH2 0x647 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x651 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x68A JUMPI PUSH2 0x66A CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x686 PUSH2 0x675 PUSH2 0x1AD7 JUMP JUMPDEST PUSH2 0x67D PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x6BF JUMPI PUSH2 0x69F CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0x6AA PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x6B2 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x6F4 JUMPI PUSH2 0x6D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x6F0 PUSH2 0x6DF PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x6E7 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x705 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x738 JUMPI PUSH2 0x718 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x734 PUSH2 0x723 PUSH2 0x6F9 JUMP JUMPDEST PUSH2 0x72B PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x76D JUMPI PUSH2 0x74D CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x769 PUSH2 0x758 PUSH2 0x1B19 JUMP JUMPDEST PUSH2 0x760 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x7A2 JUMPI PUSH2 0x782 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x79E PUSH2 0x78D PUSH2 0x1B2F JUMP JUMPDEST PUSH2 0x795 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x7D5 JUMPI PUSH2 0x7BF PUSH2 0x7BA CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1B65 JUMP JUMPDEST PUSH2 0x7C7 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x7D1 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7E6 DUP2 PUSH2 0x7DA JUMP JUMPDEST SUB PUSH2 0x7ED JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x7FE DUP3 PUSH2 0x7DD JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x819 JUMPI PUSH2 0x816 SWAP2 PUSH0 ADD PUSH2 0x7F1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST CALLVALUE PUSH2 0x84C JUMPI PUSH2 0x836 PUSH2 0x831 CALLDATASIZE PUSH1 0x4 PUSH2 0x800 JUMP JUMPDEST PUSH2 0x1C04 JUMP JUMPDEST PUSH2 0x83E PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x848 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x881 JUMPI PUSH2 0x861 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x87D PUSH2 0x86C PUSH2 0x1C0F JUMP JUMPDEST PUSH2 0x874 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x8B6 JUMPI PUSH2 0x896 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x8B2 PUSH2 0x8A1 PUSH2 0x1C25 JUMP JUMPDEST PUSH2 0x8A9 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8CE SWAP1 PUSH1 0x8 PUSH2 0x8D3 SWAP4 MUL PUSH2 0x50F JUMP JUMPDEST PUSH2 0x8BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8E1 SWAP2 SLOAD PUSH2 0x8BE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8F0 PUSH1 0x11 PUSH0 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8FC SWAP1 PUSH2 0x7DA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x913 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x8F3 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x945 JUMPI PUSH2 0x925 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x941 PUSH2 0x930 PUSH2 0x8E4 JUMP JUMPDEST PUSH2 0x938 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x956 PUSH1 0x6 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x989 JUMPI PUSH2 0x969 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x985 PUSH2 0x974 PUSH2 0x94A JUMP JUMPDEST PUSH2 0x97C PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x9BE JUMPI PUSH2 0x99E CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x9BA PUSH2 0x9A9 PUSH2 0x1C3B JUMP JUMPDEST PUSH2 0x9B1 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x9F3 JUMPI PUSH2 0x9D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x9EF PUSH2 0x9DE PUSH2 0x1C51 JUMP JUMPDEST PUSH2 0x9E6 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xA26 JUMPI PUSH2 0xA10 PUSH2 0xA0B CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1C86 JUMP JUMPDEST PUSH2 0xA18 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xA22 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xA37 PUSH1 0x8 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xA6A JUMPI PUSH2 0xA4A CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xA66 PUSH2 0xA55 PUSH2 0xA2B JUMP JUMPDEST PUSH2 0xA5D PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xA7B PUSH1 0x4 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xAAE JUMPI PUSH2 0xA8E CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xAAA PUSH2 0xA99 PUSH2 0xA6F JUMP JUMPDEST PUSH2 0xAA1 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xABF PUSH1 0x15 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xAF2 JUMPI PUSH2 0xAD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xAEE PUSH2 0xADD PUSH2 0xAB3 JUMP JUMPDEST PUSH2 0xAE5 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0xB40 SWAP1 PUSH2 0xAFF JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB5A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xB09 JUMP JUMPDEST SWAP1 PUSH2 0xB72 PUSH2 0xB6B PUSH2 0x4F2 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0xB36 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB92 JUMPI PUSH2 0xB8E PUSH1 0x20 SWAP2 PUSH2 0xAFF JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB09 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xBB7 PUSH2 0xBB2 DUP3 PUSH2 0xB74 JUMP JUMPDEST PUSH2 0xB5F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xBD3 JUMPI PUSH2 0xBD1 SWAP3 PUSH2 0xB97 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xAFB JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xBF6 JUMPI DUP2 PUSH1 0x20 PUSH2 0xBF3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xBA2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xAF7 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0xC3B JUMPI PUSH2 0xC14 DUP4 PUSH0 DUP4 ADD PUSH2 0x5F5 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC36 JUMPI PUSH2 0xC33 SWAP3 ADD PUSH2 0xBD8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5DD JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH2 0xC54 PUSH2 0xC4E CALLDATASIZE PUSH1 0x4 PUSH2 0xBFB JUMP JUMPDEST SWAP1 PUSH2 0x1CBA JUMP JUMPDEST PUSH2 0xC5C PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xC66 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xC9A JUMPI PUSH2 0xC7A CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xC96 PUSH2 0xC85 PUSH2 0x1CEB JUMP JUMPDEST PUSH2 0xC8D PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xCCF JUMPI PUSH2 0xCAF CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xCCB PUSH2 0xCBA PUSH2 0x1D01 JUMP JUMPDEST PUSH2 0xCC2 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCE0 SWAP1 PUSH2 0xCD4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xCF7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xCD7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xD29 JUMPI PUSH2 0xD09 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xD25 PUSH2 0xD14 PUSH2 0x1D86 JUMP JUMPDEST PUSH2 0xD1C PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xCE4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xD3A PUSH1 0x16 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD6D JUMPI PUSH2 0xD4D CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xD69 PUSH2 0xD58 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0xD60 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xDA0 JUMPI PUSH2 0xD8A PUSH2 0xD85 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1DB9 JUMP JUMPDEST PUSH2 0xD92 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xD9C DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xDB1 PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDE4 JUMPI PUSH2 0xDC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xDE0 PUSH2 0xDCF PUSH2 0xDA5 JUMP JUMPDEST PUSH2 0xDD7 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xDF5 PUSH1 0xC PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xE28 JUMPI PUSH2 0xE08 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xE24 PUSH2 0xE13 PUSH2 0xDE9 JUMP JUMPDEST PUSH2 0xE1B PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xE5B JUMPI PUSH2 0xE45 PUSH2 0xE40 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x1DE4 JUMP JUMPDEST PUSH2 0xE4D PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xE57 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xE90 JUMPI PUSH2 0xE70 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xE8C PUSH2 0xE7B PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0xE83 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xEC3 JUMPI PUSH2 0xEA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xEAD PUSH2 0x1E55 JUMP JUMPDEST PUSH2 0xEB5 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xEBF DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xED4 PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF07 JUMPI PUSH2 0xEE7 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xF03 PUSH2 0xEF2 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0xEFA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xF18 PUSH1 0x10 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF4B JUMPI PUSH2 0xF2B CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xF47 PUSH2 0xF36 PUSH2 0xF0C JUMP JUMPDEST PUSH2 0xF3E PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xF5C PUSH1 0x9 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF8F JUMPI PUSH2 0xF6F CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xF8B PUSH2 0xF7A PUSH2 0xF50 JUMP JUMPDEST PUSH2 0xF82 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xFC2 JUMPI PUSH2 0xFA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xFAC PUSH2 0x223B JUMP JUMPDEST PUSH2 0xFB4 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0xFBE DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0xFF7 JUMPI PUSH2 0xFD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0xFF3 PUSH2 0xFE2 PUSH2 0x2245 JUMP JUMPDEST PUSH2 0xFEA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1008 PUSH1 0x13 PUSH0 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x103B JUMPI PUSH2 0x101B CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1037 PUSH2 0x1026 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0x102E PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1070 JUMPI PUSH2 0x1050 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x106C PUSH2 0x105B PUSH2 0x225B JUMP JUMPDEST PUSH2 0x1063 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1081 PUSH1 0xF PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x10B4 JUMPI PUSH2 0x1094 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x10B0 PUSH2 0x109F PUSH2 0x1075 JUMP JUMPDEST PUSH2 0x10A7 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x10C3 PUSH0 DUP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x10F6 JUMPI PUSH2 0x10D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x10F2 PUSH2 0x10E1 PUSH2 0x10B9 JUMP JUMPDEST PUSH2 0x10E9 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x112B JUMPI PUSH2 0x110B CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1127 PUSH2 0x1116 PUSH2 0x2271 JUMP JUMPDEST PUSH2 0x111E PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1160 JUMPI PUSH2 0x1140 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x115C PUSH2 0x114B PUSH2 0x228F JUMP JUMPDEST PUSH2 0x1153 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1193 JUMPI PUSH2 0x117D PUSH2 0x1178 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x22C5 JUMP JUMPDEST PUSH2 0x1185 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x118F DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x11C8 JUMPI PUSH2 0x11A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x11C4 PUSH2 0x11B3 PUSH2 0x22D0 JUMP JUMPDEST PUSH2 0x11BB PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x11D9 PUSH1 0xD PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x120C JUMPI PUSH2 0x11EC CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1208 PUSH2 0x11F7 PUSH2 0x11CD JUMP JUMPDEST PUSH2 0x11FF PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x121D PUSH1 0x14 PUSH0 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1250 JUMPI PUSH2 0x1230 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x124C PUSH2 0x123B PUSH2 0x1211 JUMP JUMPDEST PUSH2 0x1243 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1261 PUSH1 0x17 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1294 JUMPI PUSH2 0x1274 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1290 PUSH2 0x127F PUSH2 0x1255 JUMP JUMPDEST PUSH2 0x1287 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x12C7 JUMPI PUSH2 0x12B1 PUSH2 0x12AC CALLDATASIZE PUSH1 0x4 PUSH2 0x800 JUMP JUMPDEST PUSH2 0x2306 JUMP JUMPDEST PUSH2 0x12B9 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x12C3 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x12FA JUMPI PUSH2 0x12E4 PUSH2 0x12DF CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2331 JUMP JUMPDEST PUSH2 0x12EC PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x12F6 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x132F JUMPI PUSH2 0x130F CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x132B PUSH2 0x131A PUSH2 0x233C JUMP JUMPDEST PUSH2 0x1322 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1352 JUMPI PUSH2 0x134E PUSH1 0x20 SWAP2 PUSH2 0xAFF JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xB09 JUMP JUMPDEST SWAP1 PUSH2 0x1369 PUSH2 0x1364 DUP4 PUSH2 0x1334 JUMP JUMPDEST PUSH2 0xB5F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x139F PUSH1 0x5 PUSH2 0x1357 JUMP JUMPDEST SWAP1 PUSH2 0x13AC PUSH1 0x20 DUP4 ADD PUSH2 0x136E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x13B6 PUSH2 0x1395 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13C1 PUSH2 0x13AE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x13CC PUSH2 0x13B9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0x1406 PUSH2 0x140F PUSH1 0x20 SWAP4 PUSH2 0x1414 SWAP4 PUSH2 0x13FD DUP2 PUSH2 0x13CF JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x13D3 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x13DC JUMP JUMPDEST PUSH2 0xAFF JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x142D SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x13E7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1460 JUMPI PUSH2 0x1440 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x145C PUSH2 0x144B PUSH2 0x13C4 JUMP JUMPDEST PUSH2 0x1453 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1418 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1495 JUMPI PUSH2 0x1475 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1491 PUSH2 0x1480 PUSH2 0x2352 JUMP JUMPDEST PUSH2 0x1488 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x14A6 PUSH1 0xE PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x14D9 JUMPI PUSH2 0x14B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x14D5 PUSH2 0x14C4 PUSH2 0x149A JUMP JUMPDEST PUSH2 0x14CC PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x150C JUMPI PUSH2 0x14F6 PUSH2 0x14F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2388 JUMP JUMPDEST PUSH2 0x14FE PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x1508 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x151D PUSH1 0x5 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1550 JUMPI PUSH2 0x1530 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x154C PUSH2 0x153B PUSH2 0x1511 JUMP JUMPDEST PUSH2 0x1543 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1583 JUMPI PUSH2 0x156D PUSH2 0x1568 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x23B3 JUMP JUMPDEST PUSH2 0x1575 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x157F DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1594 PUSH1 0x12 PUSH0 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x15C7 JUMPI PUSH2 0x15A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x15C3 PUSH2 0x15B2 PUSH2 0x1588 JUMP JUMPDEST PUSH2 0x15BA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x15FA JUMPI PUSH2 0x15E4 PUSH2 0x15DF CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x23DE JUMP JUMPDEST PUSH2 0x15EC PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x15F6 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x162F JUMPI PUSH2 0x160F CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x162B PUSH2 0x161A PUSH2 0x23E9 JUMP JUMPDEST PUSH2 0x1622 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1662 JUMPI PUSH2 0x164C PUSH2 0x1647 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x241F JUMP JUMPDEST PUSH2 0x1654 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x165E DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1695 JUMPI PUSH2 0x167F PUSH2 0x167A CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x244A JUMP JUMPDEST PUSH2 0x1687 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x1691 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x16C8 JUMPI PUSH2 0x16B2 PUSH2 0x16AD CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2475 JUMP JUMPDEST PUSH2 0x16BA PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x16C4 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x16FD JUMPI PUSH2 0x16DD CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x16F9 PUSH2 0x16E8 PUSH2 0x2480 JUMP JUMPDEST PUSH2 0x16F0 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1730 JUMPI PUSH2 0x171A PUSH2 0x1715 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x24B6 JUMP JUMPDEST PUSH2 0x1722 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x172C DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1765 JUMPI PUSH2 0x1745 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1761 PUSH2 0x1750 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x1758 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1798 JUMPI PUSH2 0x1782 PUSH2 0x177D CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x24F7 JUMP JUMPDEST PUSH2 0x178A PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x1794 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x17CB JUMPI PUSH2 0x17B5 PUSH2 0x17B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2521 JUMP JUMPDEST PUSH2 0x17BD PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x17C7 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x17DC PUSH1 0xB PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x180F JUMPI PUSH2 0x17EF CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x180B PUSH2 0x17FA PUSH2 0x17D0 JUMP JUMPDEST PUSH2 0x1802 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x1820 PUSH1 0x7 PUSH0 SWAP1 PUSH2 0x544 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x1853 JUMPI PUSH2 0x1833 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x184F PUSH2 0x183E PUSH2 0x1814 JUMP JUMPDEST PUSH2 0x1846 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1888 JUMPI PUSH2 0x1868 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1884 PUSH2 0x1873 PUSH2 0x252C JUMP JUMPDEST PUSH2 0x187B PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x900 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x18BB JUMPI PUSH2 0x18A5 PUSH2 0x18A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2562 JUMP JUMPDEST PUSH2 0x18AD PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x18B7 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x18EE JUMPI PUSH2 0x18D8 PUSH2 0x18D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x258D JUMP JUMPDEST PUSH2 0x18E0 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x18EA DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1921 JUMPI PUSH2 0x190B PUSH2 0x1906 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x261D JUMP JUMPDEST PUSH2 0x1913 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x191D DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1954 JUMPI PUSH2 0x193E PUSH2 0x1939 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2648 JUMP JUMPDEST PUSH2 0x1946 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x1950 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x1989 JUMPI PUSH2 0x1969 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x1985 PUSH2 0x1974 PUSH2 0x2653 JUMP JUMPDEST PUSH2 0x197C PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x19BC JUMPI PUSH2 0x19A6 PUSH2 0x19A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x2689 JUMP JUMPDEST PUSH2 0x19AE PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x19B8 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST CALLVALUE PUSH2 0x19F1 JUMPI PUSH2 0x19D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x19ED PUSH2 0x19DC PUSH2 0x2694 JUMP JUMPDEST PUSH2 0x19E4 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1A0B SWAP1 PUSH2 0x1A06 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1A95 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A31 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1A0D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A52 PUSH2 0x1A4D PUSH2 0x1A57 SWAP3 PUSH2 0x561 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x561 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A63 SWAP1 PUSH2 0x1A3E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1A6F SWAP1 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A8A PUSH2 0x1A85 PUSH2 0x1A91 SWAP3 PUSH2 0x1A66 JUMP JUMPDEST PUSH2 0x1A72 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1A12 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1AA0 SWAP1 PUSH1 0x5 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1AAB SWAP1 PUSH2 0x19FA JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x1AC2 PUSH2 0x1AC7 SWAP2 PUSH2 0x1AB1 JUMP JUMPDEST PUSH2 0x513 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1AD4 SWAP1 SLOAD PUSH2 0x1AB6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1ADF PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1AEA PUSH1 0x16 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1AF5 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1B00 PUSH1 0x6 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B0B PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1B16 PUSH1 0x17 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B21 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1B2C PUSH1 0x3 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B37 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1B42 PUSH1 0xF PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B56 SWAP1 PUSH2 0x1B51 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1B58 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B63 SWAP1 PUSH1 0x15 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B6E SWAP1 PUSH2 0x1B45 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B81 SWAP1 PUSH2 0x1B7C PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1BF7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1BAE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1A0D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1BCC PUSH2 0x1BC7 PUSH2 0x1BD1 SWAP3 PUSH2 0x7DA JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1BEC PUSH2 0x1BE7 PUSH2 0x1BF3 SWAP3 PUSH2 0x1BB8 JUMP JUMPDEST PUSH2 0x1BD4 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1B83 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1C02 SWAP1 PUSH1 0x14 PUSH2 0x1BD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C0D SWAP1 PUSH2 0x1B70 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C17 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1C22 PUSH1 0xA PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C2D PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1C38 PUSH1 0x4 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C43 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1C4E PUSH1 0xC PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C59 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1C63 PUSH0 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C77 SWAP1 PUSH2 0x1C72 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1C79 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C84 SWAP1 PUSH1 0x6 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1C8F SWAP1 PUSH2 0x1C66 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1CA3 SWAP2 PUSH2 0x1C9E PUSH2 0x2724 JUMP JUMPDEST PUSH2 0x1CA5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1CB8 SWAP2 PUSH2 0x1CB3 DUP2 PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x286C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1CC4 SWAP2 PUSH2 0x1C91 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1CD6 PUSH2 0x1CDB SWAP2 PUSH2 0x1AB1 JUMP JUMPDEST PUSH2 0x8BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CE8 SWAP1 SLOAD PUSH2 0x1CCA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1CF3 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH2 0x1CFE PUSH1 0x13 PUSH2 0x1CDE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D09 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1D14 PUSH1 0x1 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x1D2C SWAP1 PUSH2 0x1D27 PUSH2 0x29AA JUMP JUMPDEST PUSH2 0x1D7A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D46 PUSH2 0x1D41 PUSH2 0x1D4B SWAP3 PUSH2 0x1D2F JUMP JUMPDEST PUSH2 0x1A0D JUMP JUMPDEST PUSH2 0xCD4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D77 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x1D32 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x1D83 PUSH2 0x1D4E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1D96 PUSH2 0x1D91 PUSH2 0x1D17 JUMP JUMPDEST PUSH2 0x1D1B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1DAA SWAP1 PUSH2 0x1DA5 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1DAC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DB7 SWAP1 PUSH1 0x3 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DC2 SWAP1 PUSH2 0x1D99 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DD5 SWAP1 PUSH2 0x1DD0 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1DD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DE2 SWAP1 PUSH1 0x7 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DED SWAP1 PUSH2 0x1DC4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1DF7 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x1E02 PUSH1 0xE PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E0D PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x1E15 PUSH2 0x1E42 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E2E PUSH2 0x1E29 PUSH2 0x1E33 SWAP3 PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x561 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E3F SWAP1 PUSH2 0x1E1A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E53 PUSH2 0x1E4E PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x2A28 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1E5D PUSH2 0x1E05 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1E77 PUSH2 0x1E7C SWAP2 PUSH2 0x1E5F JUMP JUMPDEST PUSH2 0x1E65 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E89 SWAP1 SLOAD PUSH2 0x1E6B JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1EAA PUSH2 0x1EAF SWAP2 PUSH2 0x1AB1 JUMP JUMPDEST PUSH2 0x1E91 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1EBC SWAP1 SLOAD PUSH2 0x1E9E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1EE0 PUSH2 0x1EDB PUSH2 0x1EE5 SWAP3 PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x1EBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1EFF PUSH2 0x1EFA PUSH2 0x1F04 SWAP3 PUSH2 0x1EE8 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x1EBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F10 SWAP1 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1F27 PUSH2 0x1F22 PUSH2 0x1F2C SWAP3 PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F42 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1A0D JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1F60 PUSH2 0x1F5B PUSH2 0x1F65 SWAP3 PUSH2 0x1EBF JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x1EBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1F80 PUSH2 0x1F7B PUSH2 0x1F87 SWAP3 PUSH2 0x1F4C JUMP JUMPDEST PUSH2 0x1F68 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1F2F JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1FA5 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x1F8B JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1FB8 SWAP1 PUSH2 0x1E8C JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1FD3 PUSH2 0x1FCE PUSH2 0x1FDA SWAP3 PUSH2 0x1FAF JUMP JUMPDEST PUSH2 0x1FBB JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1F91 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1FE7 SWAP1 PUSH2 0x1EEB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1FFE SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1FDE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2008 PUSH2 0x2A94 JUMP JUMPDEST PUSH2 0x201C PUSH2 0x2016 PUSH0 DUP4 ADD PUSH2 0x1E7F JUMP JUMPDEST ISZERO PUSH2 0x1E8C JUMP JUMPDEST PUSH2 0x2027 PUSH0 DUP4 ADD PUSH2 0x1EB2 JUMP JUMPDEST DUP1 PUSH2 0x203A PUSH2 0x2034 PUSH0 PUSH2 0x1ECC JUMP JUMPDEST SWAP2 PUSH2 0x1EBF JUMP JUMPDEST EQ DUP1 PUSH2 0x2173 JUMPI JUMPDEST SWAP1 PUSH2 0x2055 PUSH2 0x204F PUSH1 0x1 PUSH2 0x1EEB JUMP JUMPDEST SWAP2 PUSH2 0x1EBF JUMP JUMPDEST EQ DUP1 PUSH2 0x214B JUMPI JUMPDEST PUSH2 0x2067 SWAP1 SWAP2 ISZERO PUSH2 0x1E8C JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x213A JUMPI JUMPDEST POP PUSH2 0x20FE JUMPI PUSH2 0x2088 PUSH2 0x2080 PUSH1 0x1 PUSH2 0x1EEB JUMP JUMPDEST PUSH0 DUP5 ADD PUSH2 0x1F6B JUMP JUMPDEST DUP1 PUSH2 0x20EC JUMPI JUMPDEST PUSH2 0x2096 PUSH2 0x21D7 JUMP JUMPDEST PUSH2 0x209E JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x20AB SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x1FBE JUMP JUMPDEST PUSH1 0x1 PUSH2 0x20E3 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x20DA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1FEB JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x209B JUMP JUMPDEST PUSH2 0x20F9 PUSH1 0x1 PUSH0 DUP5 ADD PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x208E JUMP JUMPDEST PUSH2 0x2106 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2136 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2145 SWAP2 POP ISZERO PUSH2 0x1E8C JUMP JUMPDEST PUSH0 PUSH2 0x206E JUMP JUMPDEST POP PUSH2 0x2067 PUSH2 0x2158 ADDRESS PUSH2 0x1F07 JUMP JUMPDEST EXTCODESIZE PUSH2 0x216B PUSH2 0x2165 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x205C JUMP JUMPDEST POP DUP2 PUSH2 0x2041 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2191 PUSH2 0x218C PUSH2 0x2196 SWAP3 PUSH2 0x217A JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21B0 PUSH2 0x21AB PUSH2 0x21B5 SWAP3 PUSH2 0x2199 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21CF PUSH2 0x21CA PUSH2 0x21D4 SWAP3 PUSH2 0x21B8 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x7DA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21E0 CALLER PUSH2 0x2AD6 JUMP JUMPDEST PUSH2 0x21E8 PUSH2 0x2AEB JUMP JUMPDEST PUSH2 0x21FC PUSH2 0x21F5 PUSH1 0x64 PUSH2 0x217D JUMP JUMPDEST PUSH1 0x11 PUSH2 0x1BD7 JUMP JUMPDEST PUSH2 0x2210 PUSH2 0x2209 PUSH1 0x1E PUSH2 0x219C JUMP JUMPDEST PUSH1 0x12 PUSH2 0x1BD7 JUMP JUMPDEST PUSH2 0x2225 PUSH2 0x221E PUSH2 0x2710 PUSH2 0x21BB JUMP JUMPDEST PUSH1 0x13 PUSH2 0x1BD7 JUMP JUMPDEST PUSH2 0x2239 PUSH2 0x2232 PUSH1 0x64 PUSH2 0x217D JUMP JUMPDEST PUSH1 0x14 PUSH2 0x1BD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2243 PUSH2 0x2000 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x224D PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2258 PUSH1 0x9 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2263 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH2 0x226E PUSH1 0x12 PUSH2 0x1CDE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2279 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x228C PUSH0 PUSH2 0x2286 PUSH2 0x2AF5 JUMP JUMPDEST ADD PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2297 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x22A2 PUSH1 0x10 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22B6 SWAP1 PUSH2 0x22B1 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x22B8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22C3 SWAP1 PUSH1 0x16 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22CE SWAP1 PUSH2 0x22A5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x22D8 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH2 0x22E3 PUSH1 0x11 PUSH2 0x1CDE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x22F7 SWAP1 PUSH2 0x22F2 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x22F9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2304 SWAP1 PUSH1 0x12 PUSH2 0x1BD7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x230F SWAP1 PUSH2 0x22E6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2322 SWAP1 PUSH2 0x231D PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2324 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x232F SWAP1 PUSH1 0x17 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x233A SWAP1 PUSH2 0x2311 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2344 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x234F PUSH1 0xD PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x235A PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2365 PUSH1 0x15 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2379 SWAP1 PUSH2 0x2374 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x237B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2386 SWAP1 PUSH1 0xF PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2391 SWAP1 PUSH2 0x2368 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23A4 SWAP1 PUSH2 0x239F PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x23A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23B1 SWAP1 PUSH1 0xE PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23BC SWAP1 PUSH2 0x2393 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23CF SWAP1 PUSH2 0x23CA PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x23D1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23DC SWAP1 PUSH1 0xA PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23E7 SWAP1 PUSH2 0x23BE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23F1 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x23FC PUSH1 0x8 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2410 SWAP1 PUSH2 0x240B PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2412 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x241D SWAP1 PUSH1 0x1 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2428 SWAP1 PUSH2 0x23FF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x243B SWAP1 PUSH2 0x2436 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x243D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2448 SWAP1 PUSH1 0x10 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2453 SWAP1 PUSH2 0x242A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2466 SWAP1 PUSH2 0x2461 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2468 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2473 SWAP1 PUSH1 0x9 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x247E SWAP1 PUSH2 0x2455 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2488 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2493 PUSH1 0x7 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24A7 SWAP1 PUSH2 0x24A2 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x24A9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24B4 SWAP1 PUSH1 0xD PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24BF SWAP1 PUSH2 0x2496 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24C9 PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x24D4 PUSH1 0x5 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24E8 SWAP1 PUSH2 0x24E3 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x24EA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x24F5 SWAP1 PUSH1 0xB PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2500 SWAP1 PUSH2 0x24D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2513 SWAP1 PUSH2 0x250E PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2515 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x251F SWAP1 PUSH0 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x252A SWAP1 PUSH2 0x2502 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2534 PUSH2 0x1CC6 JUMP JUMPDEST POP PUSH2 0x253F PUSH1 0x14 PUSH2 0x1CDE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2553 SWAP1 PUSH2 0x254E PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2555 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2560 SWAP1 PUSH1 0xC PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x256B SWAP1 PUSH2 0x2542 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257E SWAP1 PUSH2 0x2579 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x2580 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x258B SWAP1 PUSH1 0x2 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2596 SWAP1 PUSH2 0x256D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x25A9 SWAP1 PUSH2 0x25A4 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x25AB JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x25C6 PUSH2 0x25C0 PUSH2 0x25BB PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST EQ PUSH2 0x25D6 JUMPI PUSH2 0x25D4 SWAP1 PUSH2 0x2A28 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2619 PUSH2 0x25E2 PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x25EA PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2626 SWAP1 PUSH2 0x2598 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2639 SWAP1 PUSH2 0x2634 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x263B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2646 SWAP1 PUSH1 0x8 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2651 SWAP1 PUSH2 0x2628 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x265B PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2666 PUSH1 0x2 PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x267A SWAP1 PUSH2 0x2675 PUSH2 0x26AA JUMP JUMPDEST PUSH2 0x267C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2687 SWAP1 PUSH1 0x4 PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2692 SWAP1 PUSH2 0x2669 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x269C PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x26A7 PUSH1 0xB PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26B2 PUSH2 0x2271 JUMP JUMPDEST PUSH2 0x26CB PUSH2 0x26C5 PUSH2 0x26C0 PUSH2 0x2B19 JUMP JUMPDEST PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST SUB PUSH2 0x26D2 JUMPI JUMP JUMPDEST PUSH2 0x2714 PUSH2 0x26DD PUSH2 0x2B19 JUMP JUMPDEST PUSH2 0x26E5 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2721 SWAP1 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x272D ADDRESS PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x275F PUSH2 0x2759 PUSH32 0x0 PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x27A9 JUMPI JUMPDEST PUSH2 0x276D JUMPI JUMP JUMPDEST PUSH2 0x2775 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x27A5 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x27B2 PUSH2 0x2B26 JUMP JUMPDEST PUSH2 0x27E4 PUSH2 0x27DE PUSH32 0x0 PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST EQ ISZERO PUSH2 0x2767 JUMP JUMPDEST POP PUSH2 0x27F4 PUSH2 0x26AA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x27FF SWAP1 PUSH2 0x27EB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x280A SWAP1 PUSH2 0x1A3E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2816 SWAP1 PUSH2 0x2801 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2822 SWAP1 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x2834 DUP2 PUSH2 0xCD4 JUMP JUMPDEST SUB PUSH2 0x283B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x284C DUP3 PUSH2 0x282B JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2867 JUMPI PUSH2 0x2864 SWAP2 PUSH0 ADD PUSH2 0x283F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x289A PUSH1 0x20 PUSH2 0x2884 PUSH2 0x287F DUP7 PUSH2 0x280D JUMP JUMPDEST PUSH2 0x2819 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x2892 PUSH2 0x4F2 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x2825 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x28AA PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x297A JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x290B JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x28CC JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x2907 SWAP1 PUSH2 0x28D8 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2926 PUSH2 0x2920 PUSH2 0x291B PUSH2 0x1D4E JUMP JUMPDEST PUSH2 0xCD4 JUMP JUMPDEST SWAP2 PUSH2 0xCD4 JUMP JUMPDEST SUB PUSH2 0x293B JUMPI PUSH2 0x2936 SWAP3 SWAP4 POP PUSH2 0x2B50 JUMP JUMPDEST PUSH2 0x28CA JUMP JUMPDEST PUSH2 0x2976 DUP5 PUSH2 0x2947 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xCE4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x299C SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x29A3 JUMPI JUMPDEST PUSH2 0x2994 DUP2 DUP4 PUSH2 0xB36 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x284E JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x28B7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x298A JUMP JUMPDEST PUSH2 0x29B3 ADDRESS PUSH2 0x2718 JUMP JUMPDEST PUSH2 0x29E5 PUSH2 0x29DF PUSH32 0x0 PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST SUB PUSH2 0x29EC JUMPI JUMP JUMPDEST PUSH2 0x29F4 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2A24 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A30 PUSH2 0x2AF5 JUMP JUMPDEST PUSH2 0x2A48 PUSH2 0x2A3E PUSH0 DUP4 ADD PUSH2 0x1ACA JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x1A75 JUMP JUMPDEST SWAP1 PUSH2 0x2A7C PUSH2 0x2A76 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x1A66 JUMP JUMPDEST SWAP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP2 PUSH2 0x2A85 PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x2A8F DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2AC9 SWAP1 PUSH2 0x2AC4 PUSH2 0x2BD9 JUMP JUMPDEST PUSH2 0x2ACB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2AD4 SWAP1 PUSH2 0x2CB1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2ADF SWAP1 PUSH2 0x2AB8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2AE9 PUSH2 0x2BD9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2AF3 PUSH2 0x2AE1 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH2 0x2B21 PUSH2 0x1AAD JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2B2E PUSH2 0x1AAD JUMP JUMPDEST POP PUSH2 0x2B49 PUSH0 PUSH2 0x2B43 PUSH2 0x2B3E PUSH2 0x1D4E JUMP JUMPDEST PUSH2 0x2CBC JUMP JUMPDEST ADD PUSH2 0x1ACA JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2B5A DUP3 PUSH2 0x2CBF JUMP JUMPDEST DUP2 PUSH2 0x2B85 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP1 PUSH2 0x2B8E PUSH2 0x4F2 JUMP JUMPDEST DUP1 PUSH2 0x2B98 DUP2 PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2BA4 DUP2 PUSH2 0x2B4C JUMP JUMPDEST PUSH2 0x2BB6 PUSH2 0x2BB0 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2BCA JUMPI PUSH2 0x2BC6 SWAP2 PUSH2 0x2DCF JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x2BD4 PUSH2 0x2D34 JUMP JUMPDEST PUSH2 0x2BC8 JUMP JUMPDEST PUSH2 0x2BEA PUSH2 0x2BE4 PUSH2 0x2E02 JUMP JUMPDEST ISZERO PUSH2 0x1E8C JUMP JUMPDEST PUSH2 0x2BF0 JUMPI JUMP JUMPDEST PUSH2 0x2BF8 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2C28 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C3D SWAP1 PUSH2 0x2C38 PUSH2 0x2BD9 JUMP JUMPDEST PUSH2 0x2C3F JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2C5A PUSH2 0x2C54 PUSH2 0x2C4F PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x57A JUMP JUMPDEST SWAP2 PUSH2 0x57A JUMP JUMPDEST EQ PUSH2 0x2C6A JUMPI PUSH2 0x2C68 SWAP1 PUSH2 0x2A28 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2CAD PUSH2 0x2C76 PUSH0 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x2C7E PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CBA SWAP1 PUSH2 0x2C2C JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x2CD3 PUSH2 0x2CCD PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST EQ PUSH2 0x2CF5 JUMPI PUSH2 0x2CF3 SWAP1 PUSH0 PUSH2 0x2CED PUSH2 0x2CE8 PUSH2 0x1D4E JUMP JUMPDEST PUSH2 0x2CBC JUMP JUMPDEST ADD PUSH2 0x1A75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2D30 SWAP1 PUSH2 0x2D01 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2D47 PUSH2 0x2D41 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST GT PUSH2 0x2D4E JUMPI JUMP JUMPDEST PUSH2 0x2D56 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2D86 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2DA1 PUSH2 0x2D9C DUP4 PUSH2 0xB74 JUMP JUMPDEST PUSH2 0xB5F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x2DC1 JUMPI PUSH2 0x2DB6 RETURNDATASIZE PUSH2 0x2D8F JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x2DC9 PUSH2 0x2D8A JUMP JUMPDEST SWAP1 PUSH2 0x2DBF JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2DFB SWAP4 PUSH2 0x2DDD PUSH2 0x2D8A JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x2DF2 PUSH2 0x2DA6 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x2E20 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2E0A PUSH2 0x2DFE JUMP JUMPDEST POP PUSH2 0x2E1D PUSH0 PUSH2 0x2E17 PUSH2 0x2A94 JUMP JUMPDEST ADD PUSH2 0x1E7F JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2E34 SWAP1 PUSH2 0x2E2D PUSH2 0x2D8A JUMP JUMPDEST POP ISZERO PUSH2 0x1E8C JUMP JUMPDEST PUSH0 EQ PUSH2 0x2E40 JUMPI POP PUSH2 0x2EC4 JUMP JUMPDEST PUSH2 0x2E49 DUP3 PUSH2 0x2B4C JUMP JUMPDEST PUSH2 0x2E5B PUSH2 0x2E55 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST EQ DUP1 PUSH2 0x2EA9 JUMPI JUMPDEST PUSH2 0x2E6A JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x2EA5 SWAP1 PUSH2 0x2E76 PUSH2 0x4F2 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x593 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x2EBE PUSH2 0x2EB8 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST EQ PUSH2 0x2E62 JUMP JUMPDEST PUSH2 0x2ECD DUP2 PUSH2 0x2B4C JUMP JUMPDEST PUSH2 0x2EDF PUSH2 0x2ED9 PUSH0 PUSH2 0x1F13 JUMP JUMPDEST SWAP2 PUSH2 0x7DA JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2EEE JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2EF6 PUSH2 0x4F2 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2F26 PUSH1 0x4 DUP3 ADD PUSH2 0x622 JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB 0xC3 CODESIZE 0xC 0xEA ADDRESS GT 0xA6 0xAB SWAP3 PUSH13 0x13E065657AAB37171C04ECC1BE 0xD8 SWAP13 0x2B LT 0xDD SWAP15 0xE9 0xEA PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"1752:7233:65:-:0;;;;;;;;;-1:-1:-1;1752:7233:65;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2227:39::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1929:33::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;2473:27::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2088:27::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;2158:27::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2010:33::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8065:28::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8366:28::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1969:34::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2319:23::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1894:28::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2438:28::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2192:28::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2537:24::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2412:19::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1858:29::-;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2349:27::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2568:35::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8667:33::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1752:7233:65:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2383:22::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;2050:31::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;2507:23::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;2273:37::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2122:29::-;;;;;;:::i;:::-;;:::o;1752:7233::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;2303:62:0;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1752:7233:65:-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;4075:139::-;4170:36;4075:139;4170:36;;:::i;:::-;4075:139::o;:::-;;;;:::i;:::-;:::o;1752:7233::-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;8538:108::-;8598:7;;:::i;:::-;8625:13;;;;:::i;:::-;8618:20;:::o;6559:106::-;6618:7;;:::i;:::-;6645:12;;;;:::i;:::-;6638:19;:::o;8864:118::-;8929:7;;:::i;:::-;8956:18;;;;:::i;:::-;8949:25;:::o;6183:120::-;6249:7;;:::i;:::-;6276:19;;;;:::i;:::-;6269:26;:::o;6895:90::-;6946:7;;:::i;:::-;6973:4;;;;:::i;:::-;6966:11;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;8102:127:65:-;8191:30;8102:127;8191:30;;:::i;:::-;8102:127::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1752:7233:65:-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;5431:154::-;5533:44;5431:154;5533:44;;:::i;:::-;5431:154::o;:::-;;;;:::i;:::-;:::o;7782:130::-;7853:7;;:::i;:::-;7880:24;;;;:::i;:::-;7873:31;:::o;6311:118::-;6376:7;;:::i;:::-;6403:18;;;;:::i;:::-;6396:25;:::o;7562:98::-;7617:7;;:::i;:::-;7644:8;;;;:::i;:::-;7637:15;:::o;5593:110::-;5654:7;;:::i;:::-;5681:14;;;;:::i;:::-;5674:21;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4401:123:65:-;4488:28;4401:123;4488:28;;:::i;:::-;4401:123::o;:::-;;;;:::i;:::-;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;1752:7233:65:-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;7326:99::-;7381:7;;:::i;:::-;7408:9;;;;:::i;:::-;7401:16;:::o;5711:108::-;5771:7;;:::i;:::-;5798:13;;;;:::i;:::-;5791:20;:::o;1752:7233::-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;1752:7233:65:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3761:151:65:-;3862:42;3761:151;3862:42;;:::i;:::-;3761:151::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4532:131:65:-;4623:32;4532:131;4623:32;;:::i;:::-;4532:131::o;:::-;;;;:::i;:::-;:::o;6791:96::-;6845:7;;:::i;:::-;6872;;;;:::i;:::-;6865:14;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;1752:7233:65:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;1752:7233:65:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1752:7233:65;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2612:239::-;2679:10;;;:::i;:::-;;;:::i;:::-;2736:18;;2751:3;2736:18;:::i;:::-;;;:::i;:::-;2765:13;;2776:2;2765:13;:::i;:::-;;;:::i;:::-;2789:17;;2801:5;2789:17;:::i;:::-;;;:::i;:::-;2817:26;;2840:3;2817:26;:::i;:::-;;;:::i;:::-;2612:239::o;:::-;;;:::i;:::-;:::o;5827:108::-;5887:7;;:::i;:::-;5914:13;;;;:::i;:::-;5907:20;:::o;7108:97::-;7162:7;;:::i;:::-;7189:8;;;;:::i;:::-;7182:15;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;6993:107:65:-;7052:7;;:::i;:::-;7079:13;;;;:::i;:::-;7072:20;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;8403:127:65:-;8492:30;8403:127;8492:30;;:::i;:::-;8403:127::o;:::-;;;;:::i;:::-;:::o;7213:105::-;7271:7;;:::i;:::-;7298:12;;;;:::i;:::-;7291:19;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;5317:106:65:-;5395:20;5317:106;5395:20;;:::i;:::-;5317:106::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;8709:147:65:-;8808:40;8709:147;8808:40;;:::i;:::-;8709:147::o;:::-;;;;:::i;:::-;:::o;7668:106::-;7727:7;;:::i;:::-;7754:12;;;;:::i;:::-;7747:19;:::o;8237:108::-;8297:7;;:::i;:::-;8324:13;;;;:::i;:::-;8317:20;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4782:91:65:-;4853:12;4782:91;4853:12;;:::i;:::-;4782:91::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4671:103:65:-;4748:18;4671:103;4748:18;;:::i;:::-;4671:103::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4222:171:65:-;4333:52;4222:171;4333:52;;:::i;:::-;4222:171::o;:::-;;;;:::i;:::-;:::o;5943:106::-;6002:7;;:::i;:::-;6029:12;;;;:::i;:::-;6022:19;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3205:127:65:-;3294:30;3205:127;3294:30;;:::i;:::-;3205:127::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;4881:126:65:-;4969:30;4881:126;4969:30;;:::i;:::-;4881:126::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3340:127:65:-;3429:30;3340:127;3429:30;;:::i;:::-;3340:127::o;:::-;;;;:::i;:::-;:::o;6673:110::-;6734:7;;:::i;:::-;6761:14;;;;:::i;:::-;6754:21;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;5015:123:65:-;5102:28;5015:123;5102:28;;:::i;:::-;5015:123::o;:::-;;;;:::i;:::-;:::o;6437:114::-;6500:7;;:::i;:::-;6527:16;;;;:::i;:::-;6520:23;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;5146:163:65:-;5253:48;5146:163;5253:48;;:::i;:::-;5146:163::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3066:131:65:-;3157:32;3066:131;3157:32;;:::i;:::-;3066:131::o;:::-;;;;:::i;:::-;:::o;7433:121::-;7499:7;;:::i;:::-;7526:20;;;;:::i;:::-;7519:27;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;2951:107:65:-;3030:20;2951:107;3030:20;;:::i;:::-;2951:107::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3606:147:65:-;3705:40;3606:147;3705:40;;:::i;:::-;3606:147::o;:::-;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2303:62::-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3475:123:65:-;3562:28;3475:123;3562:28;;:::i;:::-;3475:123::o;:::-;;;;:::i;:::-;:::o;6057:118::-;6122:7;;:::i;:::-;6149:18;;;;:::i;:::-;6142:25;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3920:147:65:-;4019:40;3920:147;4019:40;;:::i;:::-;3920:147::o;:::-;;;;:::i;:::-;:::o;7920:126::-;7989:7;;:::i;:::-;8016:22;;;;:::i;:::-;8009:29;:::o;2658:162:0:-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1752:7233:65;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;2859:84:65:-;;;;:::i;:::-;:::o;1752:7233::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;1192:159:0:-;1280:65;1192:159;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;1752:7233:65:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1752:7233:65;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;1752:7233:65:-;;;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2425600","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","USDC()":"3498","WNATIVE()":"3806","_1inchSpotAgg()":"3366","_BPS_BASE()":"3412","_BPS_FEE()":"3852","_MAX_BPS_FEE()":"2884","_REBALANCE_THRESHOLD()":"3610","baluniAgentFactory()":"2772","baluniDCAVaultRegistry()":"4136","baluniHyperPoolZap()":"3674","baluniOracle()":"3036","baluniPoolPeriphery()":"3234","baluniPoolRegistry()":"3058","baluniPoolZap()":"3190","baluniRebalancer()":"3850","baluniRegistry()":"4158","baluniRouter()":"2948","baluniSwapper()":"3388","baluniYearnVaultRegistry()":"2662","get1inchSpotAgg()":"3578","getBPS_BASE()":"3096","getBPS_FEE()":"3448","getBaluniAgentFactory()":"4304","getBaluniDCAVaultRegistry()":"4344","getBaluniHyperPoolZap()":"2764","getBaluniOracle()":"3952","getBaluniPoolPeriphery()":"2808","getBaluniPoolRegistry()":"2918","getBaluniPoolZap()":"2720","getBaluniRebalancer()":"4084","getBaluniRegistry()":"4040","getBaluniRouter()":"2742","getBaluniSwapper()":"3446","getBaluniYearnVaultRegistry()":"2896","getMAX_BPS_FEE()":"3580","getREBALANCE_THRESHOLD()":"4152","getStaticOracle()":"3754","getTreasury()":"2984","getUSDC()":"2830","getUniswapFactory()":"3005","getUniswapQuoter()":"3798","getUniswapRouter()":"3160","getWNATIVE()":"3314","initialize()":"infinite","owner()":"3588","proxiableUUID()":"infinite","renounceOwnership()":"infinite","set1inchSpotAgg(address)":"infinite","setBPS_FEE(uint256)":"infinite","setBaluniAgentFactory(address)":"infinite","setBaluniDCAVaultRegistry(address)":"infinite","setBaluniHyperPoolZap(address)":"infinite","setBaluniOracle(address)":"infinite","setBaluniPoolPeriphery(address)":"infinite","setBaluniPoolRegistry(address)":"infinite","setBaluniPoolZap(address)":"infinite","setBaluniRebalancer(address)":"infinite","setBaluniRegistry(address)":"infinite","setBaluniRouter(address)":"infinite","setBaluniSwapper(address)":"infinite","setBaluniYearnVaultRegistry(address)":"infinite","setREBALANCE_THRESHOLD(uint256)":"infinite","setStaticOracle(address)":"infinite","setTreasury(address)":"infinite","setUSDC(address)":"infinite","setUniswapFactory(address)":"infinite","setUniswapQuoter(address)":"infinite","setUniswapRouter(address)":"infinite","setWNATIVE(address)":"infinite","staticOracle()":"3630","transferOwnership(address)":"infinite","treasury()":"3256","uniswapFactory()":"3517","uniswapQuoter()":"3080","uniswapRouter()":"3344","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","USDC()":"89a30271","WNATIVE()":"b381cf40","_1inchSpotAgg()":"782dd902","_BPS_BASE()":"85377188","_BPS_FEE()":"b9f5e617","_MAX_BPS_FEE()":"34decfc9","_REBALANCE_THRESHOLD()":"99c22ca6","baluniAgentFactory()":"1292f02e","baluniDCAVaultRegistry()":"e23d837b","baluniHyperPoolZap()":"9d9a9d47","baluniOracle()":"468a7071","baluniPoolPeriphery()":"58a67233","baluniPoolRegistry()":"4b66a135","baluniPoolZap()":"5333c118","baluniRebalancer()":"b691a419","baluniRegistry()":"e528ca12","baluniRouter()":"39b65140","baluniSwapper()":"7dfb7ea1","baluniYearnVaultRegistry()":"0218ecd6","get1inchSpotAgg()":"8e1c3a8a","getBPS_BASE()":"4f4608a2","getBPS_FEE()":"85462d6f","getBaluniAgentFactory()":"f5d2d998","getBaluniDCAVaultRegistry()":"ffa08e95","getBaluniHyperPoolZap()":"0f21717d","getBaluniOracle()":"bb3ba04c","getBaluniPoolPeriphery()":"1acb6141","getBaluniPoolRegistry()":"32569e02","getBaluniPoolZap()":"040f767e","getBaluniRebalancer()":"cff49d68","getBaluniRegistry()":"c9aba8ae","getBaluniRouter()":"04cc7325","getBaluniSwapper()":"82755ebb","getBaluniYearnVaultRegistry()":"32327d1f","getMAX_BPS_FEE()":"9380fb6f","getREBALANCE_THRESHOLD()":"ea233c05","getStaticOracle()":"a5d2236f","getTreasury()":"3b19e84a","getUSDC()":"1bf01e9b","getUniswapFactory()":"3e6dfa36","getUniswapQuoter()":"b0a70975","getUniswapRouter()":"524900b5","getWNATIVE()":"6c9c0078","initialize()":"8129fc1c","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","set1inchSpotAgg(address)":"c08f786b","setBPS_FEE(uint256)":"9e6453f8","setBaluniAgentFactory(address)":"f1dccde7","setBaluniDCAVaultRegistry(address)":"d7e53673","setBaluniHyperPoolZap(address)":"a23dccee","setBaluniOracle(address)":"f5b84f64","setBaluniPoolPeriphery(address)":"588c5b70","setBaluniPoolRegistry(address)":"f98977a9","setBaluniPoolZap(address)":"8ffc0673","setBaluniRebalancer(address)":"0241bffa","setBaluniRegistry(address)":"6c43274c","setBaluniRouter(address)":"400fb668","setBaluniSwapper(address)":"c3f5df5c","setBaluniYearnVaultRegistry(address)":"ba535c54","setREBALANCE_THRESHOLD(uint256)":"2da52442","setStaticOracle(address)":"cc01e9a6","setTreasury(address)":"f0f44260","setUSDC(address)":"b3e089a2","setUniswapFactory(address)":"e04b677f","setUniswapQuoter(address)":"26158136","setUniswapRouter(address)":"bea9849e","setWNATIVE(address)":"b6fe9cc7","staticOracle()":"9454705f","transferOwnership(address)":"f2fde38b","treasury()":"61d027b3","uniswapFactory()":"8bdb2afa","uniswapQuoter()":"4db4a352","uniswapRouter()":"735de9f7","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WNATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_1inchSpotAgg\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_BPS_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_BPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_MAX_BPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_REBALANCE_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniAgentFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniDCAVaultRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniHyperPoolZap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniPoolPeriphery\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniPoolRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniPoolZap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniRebalancer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniSwapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baluniYearnVaultRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get1inchSpotAgg\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPS_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniAgentFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniDCAVaultRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniHyperPoolZap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolPeriphery\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniPoolZap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRebalancer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniSwapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBaluniYearnVaultRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMAX_BPS_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getREBALANCE_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUSDC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapQuoter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUniswapRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWNATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__1inchSpotAgg\",\"type\":\"address\"}],\"name\":\"set1inchSpotAgg\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"__BPS_FEE\",\"type\":\"uint256\"}],\"name\":\"setBPS_FEE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniAgentFactory\",\"type\":\"address\"}],\"name\":\"setBaluniAgentFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniDCAVaultRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniDCAVaultRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniHyperPoolZap\",\"type\":\"address\"}],\"name\":\"setBaluniHyperPoolZap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniOracle\",\"type\":\"address\"}],\"name\":\"setBaluniOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolPeriphery\",\"type\":\"address\"}],\"name\":\"setBaluniPoolPeriphery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniPoolRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniPoolZap\",\"type\":\"address\"}],\"name\":\"setBaluniPoolZap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRebalancer\",\"type\":\"address\"}],\"name\":\"setBaluniRebalancer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniRouter\",\"type\":\"address\"}],\"name\":\"setBaluniRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniSwapper\",\"type\":\"address\"}],\"name\":\"setBaluniSwapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_baluniYearnVaultRegistry\",\"type\":\"address\"}],\"name\":\"setBaluniYearnVaultRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"__REBALANCE_THRESHOLD\",\"type\":\"uint256\"}],\"name\":\"setREBALANCE_THRESHOLD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_staticOracle\",\"type\":\"address\"}],\"name\":\"setStaticOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_USDC\",\"type\":\"address\"}],\"name\":\"setUSDC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapFactory\",\"type\":\"address\"}],\"name\":\"setUniswapFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapQuoter\",\"type\":\"address\"}],\"name\":\"setUniswapQuoter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_uniswapRouter\",\"type\":\"address\"}],\"name\":\"setUniswapRouter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_WNATIVE\",\"type\":\"address\"}],\"name\":\"setWNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staticOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapQuoter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/BaluniV1Registry.sol\":\"BaluniV1Registry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/registry/BaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\n\\r\\ncontract BaluniV1Registry is Initializable, OwnableUpgradeable, UUPSUpgradeable, IBaluniV1Registry {\\r\\n    address public uniswapFactory;\\r\\n    address public uniswapRouter;\\r\\n    address public baluniAgentFactory;\\r\\n    address public baluniPoolPeriphery;\\r\\n    address public baluniPoolRegistry;\\r\\n    address public baluniRebalancer;\\r\\n    address public baluniRouter;\\r\\n    address public baluniRegistry;\\r\\n    address public baluniOracle;\\r\\n    address public baluniSwapper;\\r\\n    address public baluniYearnVaultRegistry;\\r\\n    address public baluniDCAVaultRegistry;\\r\\n\\r\\n    address public treasury;\\r\\n    address public staticOracle;\\r\\n    address public WNATIVE;\\r\\n    address public USDC;\\r\\n    address public _1inchSpotAgg;\\r\\n    uint256 public _MAX_BPS_FEE;\\r\\n    uint256 public _BPS_FEE;\\r\\n    uint256 public _BPS_BASE;\\r\\n    uint256 public _REBALANCE_THRESHOLD;\\r\\n\\r\\n    function initialize() public initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __UUPSUpgradeable_init();\\r\\n        _MAX_BPS_FEE = 100;\\r\\n        _BPS_FEE = 30;\\r\\n        _BPS_BASE = 10000;\\r\\n        _REBALANCE_THRESHOLD = 100;\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    function setTreasury(address _treasury) external override onlyOwner {\\r\\n        treasury = _treasury;\\r\\n    }\\r\\n\\r\\n    function setUniswapFactory(address _uniswapFactory) external override onlyOwner {\\r\\n        uniswapFactory = _uniswapFactory;\\r\\n    }\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external override onlyOwner {\\r\\n        uniswapRouter = _uniswapRouter;\\r\\n    }\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external override onlyOwner {\\r\\n        baluniSwapper = _baluniSwapper;\\r\\n    }\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external override onlyOwner {\\r\\n        baluniOracle = _baluniOracle;\\r\\n    }\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external override onlyOwner {\\r\\n        baluniAgentFactory = _baluniAgentFactory;\\r\\n    }\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external override onlyOwner {\\r\\n        baluniPoolPeriphery = _baluniPoolPeriphery;\\r\\n    }\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external override onlyOwner {\\r\\n        baluniPoolRegistry = _baluniPoolRegistry;\\r\\n    }\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external override onlyOwner {\\r\\n        baluniRebalancer = _baluniRebalancer;\\r\\n    }\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external override onlyOwner {\\r\\n        baluniYearnVaultRegistry = _baluniYearnVaultRegistry;\\r\\n    }\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external override onlyOwner {\\r\\n        baluniRouter = _baluniRouter;\\r\\n    }\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external override onlyOwner {\\r\\n        baluniRegistry = _baluniRegistry;\\r\\n    }\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external override onlyOwner {\\r\\n        WNATIVE = _WNATIVE;\\r\\n    }\\r\\n\\r\\n    function setUSDC(address _USDC) external override onlyOwner {\\r\\n        USDC = _USDC;\\r\\n    }\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external override onlyOwner {\\r\\n        _1inchSpotAgg = __1inchSpotAgg;\\r\\n    }\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external override onlyOwner {\\r\\n        staticOracle = _staticOracle;\\r\\n    }\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniDCAVaultRegistry) external override onlyOwner {\\r\\n        baluniDCAVaultRegistry = _baluniDCAVaultRegistry;\\r\\n    }\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external override onlyOwner {\\r\\n        _BPS_FEE = __BPS_FEE;\\r\\n    }\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 __REBALANCE_THRESHOLD) external override onlyOwner {\\r\\n        _REBALANCE_THRESHOLD = __REBALANCE_THRESHOLD;\\r\\n    }\\r\\n\\r\\n    function getUniswapFactory() external view override returns (address) {\\r\\n        return uniswapFactory;\\r\\n    }\\r\\n\\r\\n    function getUniswapRouter() external view override returns (address) {\\r\\n        return uniswapRouter;\\r\\n    }\\r\\n\\r\\n    function getBaluniSwapper() external view override returns (address) {\\r\\n        return baluniSwapper;\\r\\n    }\\r\\n\\r\\n    function getBaluniOracle() external view override returns (address) {\\r\\n        return baluniOracle;\\r\\n    }\\r\\n\\r\\n    function getBaluniAgentFactory() external view override returns (address) {\\r\\n        return baluniAgentFactory;\\r\\n    }\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view override returns (address) {\\r\\n        return baluniPoolPeriphery;\\r\\n    }\\r\\n\\r\\n    function getBaluniPoolRegistry() external view override returns (address) {\\r\\n        return baluniPoolRegistry;\\r\\n    }\\r\\n\\r\\n    function getBaluniRebalancer() external view override returns (address) {\\r\\n        return baluniRebalancer;\\r\\n    }\\r\\n\\r\\n    function getBaluniRouter() external view override returns (address) {\\r\\n        return baluniRouter;\\r\\n    }\\r\\n\\r\\n    function getBaluniRegistry() external view override returns (address) {\\r\\n        return baluniRegistry;\\r\\n    }\\r\\n\\r\\n    function getWNATIVE() external view override returns (address) {\\r\\n        return WNATIVE;\\r\\n    }\\r\\n\\r\\n    function getUSDC() external view override returns (address) {\\r\\n        return USDC;\\r\\n    }\\r\\n\\r\\n    function get1inchSpotAgg() external view override returns (address) {\\r\\n        return _1inchSpotAgg;\\r\\n    }\\r\\n\\r\\n    function getBPS_FEE() external view override returns (uint256) {\\r\\n        return _BPS_FEE;\\r\\n    }\\r\\n\\r\\n    function getMAX_BPS_FEE() external view override returns (uint256) {\\r\\n        return _MAX_BPS_FEE;\\r\\n    }\\r\\n\\r\\n    function getBPS_BASE() external view override returns (uint256) {\\r\\n        return _BPS_BASE;\\r\\n    }\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view override returns (uint256) {\\r\\n        return _REBALANCE_THRESHOLD;\\r\\n    }\\r\\n\\r\\n    function getTreasury() external view override returns (address) {\\r\\n        return treasury;\\r\\n    }\\r\\n\\r\\n    function getStaticOracle() external view override returns (address) {\\r\\n        return staticOracle;\\r\\n    }\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view override returns (address) {\\r\\n        return baluniYearnVaultRegistry;\\r\\n    }\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view override returns (address) {\\r\\n        return baluniDCAVaultRegistry;\\r\\n    }\\r\\n\\r\\n    // v1\\r\\n    address public uniswapQuoter;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external override onlyOwner {\\r\\n        uniswapQuoter = _uniswapQuoter;\\r\\n    }\\r\\n\\r\\n    function getUniswapQuoter() external view override returns (address) {\\r\\n        return uniswapQuoter;\\r\\n    }\\r\\n\\r\\n    // v2\\r\\n\\r\\n    address public baluniPoolZap;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external override onlyOwner {\\r\\n        baluniPoolZap = _baluniPoolZap;\\r\\n    }\\r\\n\\r\\n    function getBaluniPoolZap() external view override returns (address) {\\r\\n        return baluniPoolZap;\\r\\n    }\\r\\n\\r\\n    // v3\\r\\n\\r\\n    address public baluniHyperPoolZap;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external override onlyOwner {\\r\\n        baluniHyperPoolZap = _baluniHyperPoolZap;\\r\\n    }\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view override returns (address) {\\r\\n        return baluniHyperPoolZap;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x0f96bb7ab741b3ba99c7f864a93622a68b3b7ab3c65c1d6209c44e8f2fb4dca3\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":18668,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"uniswapFactory","offset":0,"slot":"0","type":"t_address"},{"astId":18670,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"uniswapRouter","offset":0,"slot":"1","type":"t_address"},{"astId":18672,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniAgentFactory","offset":0,"slot":"2","type":"t_address"},{"astId":18674,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniPoolPeriphery","offset":0,"slot":"3","type":"t_address"},{"astId":18676,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniPoolRegistry","offset":0,"slot":"4","type":"t_address"},{"astId":18678,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniRebalancer","offset":0,"slot":"5","type":"t_address"},{"astId":18680,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniRouter","offset":0,"slot":"6","type":"t_address"},{"astId":18682,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniRegistry","offset":0,"slot":"7","type":"t_address"},{"astId":18684,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniOracle","offset":0,"slot":"8","type":"t_address"},{"astId":18686,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniSwapper","offset":0,"slot":"9","type":"t_address"},{"astId":18688,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniYearnVaultRegistry","offset":0,"slot":"10","type":"t_address"},{"astId":18690,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniDCAVaultRegistry","offset":0,"slot":"11","type":"t_address"},{"astId":18692,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"treasury","offset":0,"slot":"12","type":"t_address"},{"astId":18694,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"staticOracle","offset":0,"slot":"13","type":"t_address"},{"astId":18696,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"WNATIVE","offset":0,"slot":"14","type":"t_address"},{"astId":18698,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"USDC","offset":0,"slot":"15","type":"t_address"},{"astId":18700,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"_1inchSpotAgg","offset":0,"slot":"16","type":"t_address"},{"astId":18702,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"_MAX_BPS_FEE","offset":0,"slot":"17","type":"t_uint256"},{"astId":18704,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"_BPS_FEE","offset":0,"slot":"18","type":"t_uint256"},{"astId":18706,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"_BPS_BASE","offset":0,"slot":"19","type":"t_uint256"},{"astId":18708,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"_REBALANCE_THRESHOLD","offset":0,"slot":"20","type":"t_uint256"},{"astId":19185,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"uniswapQuoter","offset":0,"slot":"21","type":"t_address"},{"astId":19209,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniPoolZap","offset":0,"slot":"22","type":"t_address"},{"astId":19233,"contract":"contracts/registry/BaluniV1Registry.sol:BaluniV1Registry","label":"baluniHyperPoolZap","offset":0,"slot":"23","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/registry/BaluniV1YearnVaultRegistry.sol":{"BaluniV1YearnVaultRegistry":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"address[]","name":"assets","type":"address[]"}],"name":"vaultCreated","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vaultAddress","type":"address"}],"name":"addVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allVaults","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllVaults","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vaultAddress","type":"address"}],"name":"getVaultAsset","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getVaultType0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getVaultType0ByAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getVaultType1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset1","type":"address"},{"internalType":"address","name":"asset2","type":"address"}],"name":"getVaultType1ByAssets","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getVaultsByAsset","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_register","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract IBaluniV1Registry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_register","type":"address"},{"internalType":"uint64","name":"_version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"removeVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"vaultExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"getAllVaults()":{"details":"Retrieves all the vaults created by the factory.","returns":{"_0":"An array of vault addresses."}},"getVaultAsset(address)":{"details":"Retrieves the assets of a specific vault.","params":{"vaultAddress":"The address of the vault."},"returns":{"_0":"An array of asset addresses."}},"getVaultType0ByAsset(address)":{"details":"Retrieves the address of the vault type 0 associated with the given asset.","params":{"asset":"The address of the asset."},"returns":{"_0":"The address of the vault type 0 associated with the asset."}},"getVaultType1ByAssets(address,address)":{"details":"Retrieves the vault address based on the given assets.","params":{"asset1":"The address of the first asset.","asset2":"The address of the second asset."},"returns":{"_0":"The address of the vault."}},"getVaultsCount()":{"details":"Retrieves the number of vaults created by the factory.","returns":{"_0":"The count of vaults."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":61,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":95,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1YearnVaultRegistry":{"entryPoint":71,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ContextUpgradeable":{"entryPoint":87,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_OwnableUpgradeable":{"entryPoint":79,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":151,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":141,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":131,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":109,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":106,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234603957600e6047565b6014603d565b612a6f6100a4823960805181818161224e015281816122d301526124ce0152612a6f90f35b6043565b60405190565b5f80fd5b604d604f565b565b60556057565b565b605d6097565b565b60018060a01b031690565b90565b607c6078608092605f565b606a565b605f565b90565b608a90606d565b90565b6094906083565b90565b609e30608d565b60805256fe60806040526004361015610013575b610c6e565b61001d5f3561016c565b806302b3537d1461016757806310894052146101625780631f844a4c1461015d578063256b5a02146101585780634f1ef2861461015357806352d1902d1461014e578063592717af14610149578063715018a6146101445780637b1039991461013f5780638da5cb5b1461013a5780638f2248bc146101355780639094a91e1461013057806397331bf91461012b578063a14eb08514610126578063ad3cb1cc14610121578063b9b658db1461011c578063c4d66de814610117578063ca9d67c814610112578063ceb68c231461010d578063f2fde38b146101085763f76932270361000e57610c39565b610c06565b610bd3565b610b9e565b610b6b565b610b36565b610adf565b6109ad565b610941565b61090c565b610807565b610775565b610740565b610691565b61065b565b6105f9565b61059b565b61041f565b6103e5565b6102e5565b610211565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6101a690610184565b90565b6101b28161019d565b036101b957565b5f80fd5b905035906101ca826101a9565b565b906020828203126101e5576101e2915f016101bd565b90565b61017c565b151590565b6101f8906101ea565b9052565b919061020f905f602085019401906101ef565b565b346102415761023d61022c6102273660046101cc565b610ca4565b610234610172565b918291826101fc565b0390f35b610178565b5190565b60209181520190565b60200190565b6102629061019d565b9052565b9061027381602093610259565b0190565b60200190565b9061029a61029461028d84610246565b809361024a565b92610253565b905f5b8181106102aa5750505090565b9091926102c36102bd6001928651610266565b94610277565b910191909161029d565b6102e29160208201915f81840391015261027d565b90565b34610315576103116103006102fb3660046101cc565b610e8d565b610308610172565b918291826102cd565b0390f35b610178565b90565b61033161032c61033692610184565b61031a565b610184565b90565b6103429061031d565b90565b61034e90610339565b90565b9061035b90610345565b5f5260205260405f2090565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6103949060086103999302610367565b61036b565b90565b906103a79154610384565b90565b6103c0906103bb6002915f92610351565b61039c565b90565b6103cc9061019d565b9052565b91906103e3905f602085019401906103c3565b565b34610415576104116104006103fb3660046101cc565b6103aa565b610408610172565b918291826103d0565b0390f35b610178565b5f0190565b3461044d576104376104323660046101cc565b611436565b61043f610172565b806104498161041a565b0390f35b610178565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061049b9061045a565b810190811067ffffffffffffffff8211176104b557604052565b610464565b906104cd6104c6610172565b9283610491565b565b67ffffffffffffffff81116104ed576104e960209161045a565b0190565b610464565b90825f939282370152565b9092919261051261050d826104cf565b6104ba565b9381855260208501908284011161052e5761052c926104f2565b565b610456565b9080601f830112156105515781602061054e933591016104fd565b90565b610452565b9190916040818403126105965761056f835f83016101bd565b92602082013567ffffffffffffffff81116105915761058e9201610533565b90565b610180565b61017c565b6105af6105a9366004610556565b9061146a565b6105b7610172565b806105c18161041a565b0390f35b5f9103126105cf57565b61017c565b90565b6105e0906105d4565b9052565b91906105f7905f602085019401906105d7565b565b34610629576106093660046105c5565b6106256106146114e5565b61061c610172565b918291826105e4565b0390f35b610178565b9190604083820312610656578061064a610653925f86016101bd565b936020016101bd565b90565b61017c565b3461068c5761068861067761067136600461062e565b90611522565b61067f610172565b918291826103d0565b0390f35b610178565b346106bf576106a13660046105c5565b6106a961156f565b6106b1610172565b806106bb8161041a565b0390f35b610178565b73ffffffffffffffffffffffffffffffffffffffff1690565b6106ed9060086106f29302610367565b6106c4565b90565b9061070091546106dd565b90565b61070f60015f906106f5565b90565b61071b90610339565b90565b61072790610712565b9052565b919061073e905f6020850194019061071e565b565b34610770576107503660046105c5565b61076c61075b610703565b610763610172565b9182918261072b565b0390f35b610178565b346107a5576107853660046105c5565b6107a1610790611579565b610798610172565b918291826103d0565b0390f35b610178565b67ffffffffffffffff1690565b6107c0816107aa565b036107c757565b5f80fd5b905035906107d8826107b7565b565b919060408382031261080257806107f66107ff925f86016101bd565b936020016107cb565b90565b61017c565b346108365761082061081a3660046107da565b9061180e565b610828610172565b806108328161041a565b0390f35b610178565b90565b6108478161083b565b0361084e57565b5f80fd5b9050359061085f8261083e565b565b9060208282031261087a57610877915f01610852565b90565b61017c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5490565b5f5260205f2090565b6108c2816108ac565b8210156108dc576108d46001916108b0565b910201905f90565b61087f565b5f6108eb816108ac565b82101561090857610905916108ff916108b9565b9061039c565b90565b5f80fd5b3461093c57610938610927610922366004610861565b6108e1565b61092f610172565b918291826103d0565b0390f35b610178565b34610971576109513660046105c5565b61096d61095c6118c8565b610964610172565b918291826102cd565b0390f35b610178565b9061098090610345565b5f5260205260405f2090565b6109a56109aa926109a06003935f94610976565b610351565b61039c565b90565b346109de576109da6109c96109c336600461062e565b9061098c565b6109d1610172565b918291826103d0565b0390f35b610178565b67ffffffffffffffff8111610a01576109fd60209161045a565b0190565b610464565b90610a18610a13836109e3565b6104ba565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610a4e6005610a06565b90610a5b60208301610a1d565b565b610a65610a44565b90565b610a70610a5d565b90565b610a7b610a68565b90565b5190565b60209181520190565b90825f9392825e0152565b610ab5610abe602093610ac393610aac81610a7e565b93848093610a82565b95869101610a8b565b61045a565b0190565b610adc9160208201915f818403910152610a96565b90565b34610b0f57610aef3660046105c5565b610b0b610afa610a73565b610b02610172565b91829182610ac7565b0390f35b610178565b610b1d9061083b565b9052565b9190610b34905f60208501940190610b14565b565b34610b6657610b463660046105c5565b610b62610b516118e1565b610b59610172565b91829182610b21565b0390f35b610178565b34610b9957610b83610b7e3660046101cc565b611b02565b610b8b610172565b80610b958161041a565b0390f35b610178565b34610bce57610bca610bb9610bb43660046101cc565b611b48565b610bc1610172565b918291826102cd565b0390f35b610178565b34610c0157610beb610be63660046101cc565b612109565b610bf3610172565b80610bfd8161041a565b0390f35b610178565b34610c3457610c1e610c193660046101cc565b612199565b610c26610172565b80610c308161041a565b0390f35b610178565b34610c6957610c65610c54610c4f3660046101cc565b6121a4565b610c5c610172565b918291826103d0565b0390f35b610178565b5f80fd5b5f90565b90565b610c8d610c88610c9292610c76565b61031a565b61083b565b90565b6001610ca1910161083b565b90565b610cac610c72565b50610cb65f610c79565b5b80610cd2610ccc610cc75f6108ac565b61083b565b9161083b565b1015610d1857610cec610ce65f83906108b9565b9061039c565b610cfe610cf88461019d565b9161019d565b14610d1157610d0c90610c95565b610cb7565b5050600190565b50505f90565b606090565b67ffffffffffffffff8111610d3b5760208091020190565b610464565b90610d52610d4d83610d23565b6104ba565b918252565b369037565b90610d81610d6983610d40565b92602080610d778693610d23565b9201910390610d57565b565b610d8c9061031d565b90565b610d9890610d83565b90565b610da490610339565b90565b60e01b90565b90505190610dba826101a9565b565b90602082820312610dd557610dd2915f01610dad565b90565b61017c565b610de2610172565b3d5f823e3d90fd5b90610df482610246565b811015610e05576020809102010190565b61087f565b90610e149061019d565b9052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610e4e9061083b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e7b5760010190565b610e18565b610e8a905161019d565b90565b610e95610d1e565b50610ea7610ea25f6108ac565b610d5c565b91610eb15f610c79565b92610ebb5f610c79565b5b80610ed7610ed1610ecc5f6108ac565b61083b565b9161083b565b101561105c57610ef9610ef4610eee5f84906108b9565b9061039c565b610d8f565b610f1d6020610f0783610d9b565b63cdf456e190610f15610172565b938492610da7565b82528180610f2d6004820161041a565b03915afa908115611057575f91611029575b50610f52610f4c8761019d565b9161019d565b14610ff5575084610f73610f6d610f6885610246565b61083b565b9161083b565b14610f8657610f8190610c95565b610ebc565b509091505b610f9483610d5c565b91610f9e5f610c79565b5b80610fb2610fac8761083b565b9161083b565b1015610fee57610fe990610fe4610fd2610fcd868490610dea565b610e80565b610fdf8791849092610dea565b610e0a565b610c95565b610f9f565b5092505090565b61102393945061101e915061100c90959295610d9b565b6110198691849092610dea565b610e0a565b610e45565b91610f8b565b61104a915060203d8111611050575b6110428183610491565b810190610dbc565b5f610f3f565b503d611038565b610dda565b50909150610f8b565b611076906110716121c3565b61127e565b565b61108c61108761109192610c76565b61031a565b610184565b90565b61109d90611078565b90565b60207f756c745f41444452455353000000000000000000000000000000000000000000917f42616c756e6956315661756c74466163746f72793a20494e56414c49445f76615f8201520152565b6110fa602b604092610a82565b611103816110a0565b0190565b61111c9060208101905f8183039101526110ed565b90565b1561112657565b61112e610172565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061115e60048201611107565b0390fd5b90565b5f5260205f2090565b5490565b61117b8161116e565b8210156111955761118d600191611165565b910201905f90565b61087f565b1b90565b919060086111cc9102916111c673ffffffffffffffffffffffffffffffffffffffff8461119a565b9261119a565b9181191691161790565b90565b91906111ef6111ea6111f793610345565b6111d6565b90835461119e565b9055565b908154916801000000000000000083101561122b578261122391600161122995018155611172565b906111d9565b565b610464565b5f1b90565b9061125473ffffffffffffffffffffffffffffffffffffffff91611230565b9181191691161790565b9061127361126e61127a92610345565b6111d6565b8254611235565b9055565b6112a38161129c6112966112915f611094565b61019d565b9161019d565b141561111f565b6112b66112af5f611162565b82906111fb565b6112e260206112cc6112c784610d8f565b610d9b565b63cdf456e1906112da610172565b938492610da7565b825281806112f26004820161041a565b03915afa908115611431575f91611403575b50611331602061131b61131685610d8f565b610d9b565b63fdf262b790611329610172565b938492610da7565b825281806113416004820161041a565b03915afa9081156113fe575f916113d0575b508061136f6113696113645f611094565b61019d565b9161019d565b145f1461138e575061138661138b92916002610351565b61125e565b5b565b906113c6906113c1846113b96113cb966113b46113ad60038790610976565b8890610351565b61125e565b936003610976565b610351565b61125e565b61138c565b6113f1915060203d81116113f7575b6113e98183610491565b810190610dbc565b5f611353565b503d6113df565b610dda565b611424915060203d811161142a575b61141c8183610491565b810190610dbc565b5f611304565b503d611412565b610dda565b61143f90611065565b565b906114539161144e61223d565b611455565b565b90611468916114638161230f565b61237f565b565b9061147491611441565b565b5f90565b61148b906114866124bd565b6114d9565b90565b90565b6114a56114a06114aa9261148e565b611230565b6105d4565b90565b6114d67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc611491565b90565b506114e26114ad565b90565b6114f56114f0611476565b61147a565b90565b5f90565b5f1c90565b61150d611512916114fc565b61036b565b90565b61151f9054611501565b90565b6115479161153d611542926115356114f8565b506003610976565b610351565b611515565b90565b6115526121c3565b61155a61155c565b565b61156d6115685f611094565b61253b565b565b61157761154a565b565b6115816114f8565b506115945f61158e6125a7565b01611515565b90565b60401c90565b60ff1690565b6115af6115b491611597565b61159d565b90565b6115c190546115a3565b90565b67ffffffffffffffff1690565b6115dd6115e2916114fc565b6115c4565b90565b6115ef90546115d1565b90565b9061160567ffffffffffffffff91611230565b9181191691161790565b61162361161e611628926107aa565b61031a565b6107aa565b90565b90565b9061164361163e61164a9261160f565b61162b565b82546115f2565b9055565b60401b90565b9061166868ff00000000000000009161164e565b9181191691161790565b61167b906101ea565b90565b90565b9061169661169161169d92611672565b61167e565b8254611654565b9055565b6116aa906107aa565b9052565b91906116c1905f602085019401906116a1565b565b9080916116ce6125cb565b906116da5f83016115b7565b801561178b575b61174f576117149261170b916116f9865f860161162e565b61170660015f8601611681565b6117f7565b5f809101611681565b61174a7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611741610172565b918291826116ae565b0390a1565b611757610172565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806117876004820161041a565b0390fd5b506117975f83016115e5565b6117a96117a3866107aa565b916107aa565b10156116e1565b6117b99061031d565b90565b6117c5906117b0565b90565b6117d1906117b0565b90565b90565b906117ec6117e76117f3926117c8565b6117d4565b8254611235565b9055565b61180c9150611805906117bc565b60016117d7565b565b90611818916116c3565b565b60209181520190565b61182d9054611501565b90565b60010190565b9061185361184d611846846108ac565b809361181a565b926108b0565b905f5b8181106118635750505090565b90919261188361187d60019261187887611823565b610266565b94611830565b9101919091611856565b9061189791611836565b90565b906118ba6118b3926118aa610172565b9384809261188d565b0383610491565b565b6118c59061189a565b90565b6118d0610d1e565b506118da5f6118bc565b90565b5f90565b6118e96118dd565b506118f35f6108ac565b90565b61190a61190561190f92610c76565b61031a565b6107aa565b90565b90565b61192961192461192e92611912565b61031a565b6107aa565b90565b61193a90610339565b90565b61194690611915565b9052565b919061195d905f6020850194019061193d565b565b6119676125cb565b9061197c6119765f84016115b7565b156101ea565b906119885f84016115e5565b8061199b6119955f6118f6565b916107aa565b1480611ad5575b906119b66119b06001611915565b916107aa565b1480611aad575b6119c89091156101ea565b9081611a9c575b50611a60576119f8906119ed6119e56001611915565b5f860161162e565b82611a4e575b611adc565b611a00575b50565b611a0d905f809101611681565b6001611a457fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611a3c610172565b9182918261194a565b0390a15f6119fd565b611a5b60015f8601611681565b6119f3565b611a68610172565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280611a986004820161041a565b0390fd5b611aa79150156101ea565b5f6119cf565b506119c8611aba30611931565b3b611acd611ac75f610c79565b9161083b565b1490506119bd565b50826119a2565b611af9611b0091611aeb6125f9565b611af433612621565b6117bc565b60016117d7565b565b611b0b9061195f565b565b90565b611b24611b1f611b2992611b0d565b61031a565b61083b565b90565b611b40611b3b611b4592611912565b61031a565b61083b565b90565b611b50610d1e565b50611b90611b66611b616002611b10565b610d5c565b916020611b7a611b7583610d8f565b610d9b565b63cdf456e190611b88610172565b948592610da7565b82528180611ba06004820161041a565b03915afa918215611c9e57611be1602092611bdc611bfc95611be6945f91611c71575b50611bd788611bd15f610c79565b90610dea565b610e0a565b610d8f565b610d9b565b63fdf262b790611bf4610172565b938492610da7565b82528180611c0c6004820161041a565b03915afa8015611c6c57611c3b915f91611c3e575b50611c3683611c306001611b2c565b90610dea565b610e0a565b90565b611c5f915060203d8111611c65575b611c578183610491565b810190610dbc565b5f611c21565b503d611c4d565b610dda565b611c919150863d8111611c97575b611c898183610491565b810190610dbc565b5f611bc3565b503d611c7f565b610dda565b611cb490611caf6121c3565b611d4b565b565b611cc5611ccb9193929361083b565b9261083b565b8203918211611cd657565b610e18565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b611d1a91611d146114f8565b916111d9565b565b611d258161116e565b8015611d46576001900390611d43611d3d8383611172565b90611d08565b55565b611cdb565b611d545f610c79565b5b80611d70611d6a611d655f6108ac565b61083b565b9161083b565b101561210257611d8a611d845f83906108b9565b9061039c565b611d9c611d968461019d565b9161019d565b14611daf57611daa90610c95565b611d55565b611df290611dec611de5611ddf5f611dd9611dc95f6108ac565b611dd36001611b2c565b90611cb6565b906108b9565b9061039c565b915f6108b9565b906111d9565b611dfb5f611094565b600290611e2a6020611e14611e0f86610d8f565b610d9b565b63cdf456e190611e22610172565b938492610da7565b82528180611e3a6004820161041a565b03915afa80156120fd57611e5e93611e59925f926120cd575b50610351565b61125e565b611e675f611094565b611e9560036020611e7f611e7a86610d8f565b610d9b565b63fdf262b790611e8d610172565b948592610da7565b82528180611ea56004820161041a565b03915afa9081156120c857611ec1925f92612098575b50610976565b90611eee6020611ed8611ed386610d8f565b610d9b565b63cdf456e190611ee6610172565b938492610da7565b82528180611efe6004820161041a565b03915afa801561209357611f2293611f1d925f92612063575b50610351565b61125e565b611f2b5f611094565b6003611f596020611f43611f3e86610d8f565b610d9b565b63cdf456e190611f51610172565b938492610da7565b82528180611f696004820161041a565b03915afa801561205e57611f97611f91611f9c92611fb2956020955f9261202f575b50610976565b95610d8f565b610d9b565b63fdf262b790611faa610172565b938492610da7565b82528180611fc26004820161041a565b03915afa801561202a57611fe693611fe1925f92611ffa575b50610351565b61125e565b611ff7611ff25f611162565b611d1c565b5b565b61201c91925060203d8111612023575b6120148183610491565b810190610dbc565b905f611fdb565b503d61200a565b610dda565b612050919250863d8111612057575b6120488183610491565b810190610dbc565b905f611f8b565b503d61203e565b610dda565b61208591925060203d811161208c575b61207d8183610491565b810190610dbc565b905f611f17565b503d612073565b610dda565b6120ba91925060203d81116120c1575b6120b28183610491565b810190610dbc565b905f611ebb565b503d6120a8565b610dda565b6120ef91925060203d81116120f6575b6120e78183610491565b810190610dbc565b905f611e53565b503d6120dd565b610dda565b5050611ff8565b61211290611ca3565b565b612125906121206121c3565b612127565b565b8061214261213c6121375f611094565b61019d565b9161019d565b14612152576121509061253b565b565b61219561215e5f611094565b612166610172565b9182917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b6121a290612114565b565b6121bb6121c0916121b36114f8565b506002610351565b611515565b90565b6121cb611579565b6121e46121de6121d961262c565b61019d565b9161019d565b036121eb57565b61222d6121f661262c565b6121fe610172565b9182917f118cdaa7000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b61223a90610339565b90565b61224630612231565b6122786122727f000000000000000000000000000000000000000000000000000000000000000061019d565b9161019d565b1480156122c2575b61228657565b61228e610172565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806122be6004820161041a565b0390fd5b506122cb612639565b6122fd6122f77f000000000000000000000000000000000000000000000000000000000000000061019d565b9161019d565b1415612280565b5061230d6121c3565b565b61231890612304565b565b6123239061031d565b90565b61232f9061231a565b90565b61233b90610339565b90565b612347816105d4565b0361234e57565b5f80fd5b9050519061235f8261233e565b565b9060208282031261237a57612377915f01612352565b90565b61017c565b91906123ad602061239761239286612326565b612332565b6352d1902d906123a5610172565b938492610da7565b825281806123bd6004820161041a565b03915afa80915f9261248d575b50155f1461241e5750509060016123df57505b565b61241a906123eb610172565b9182917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b928361243961243361242e6114ad565b6105d4565b916105d4565b0361244e57612449929350612663565b6123dd565b6124898461245a610172565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016105e4565b0390fd5b6124af91925060203d81116124b6575b6124a78183610491565b810190612361565b905f6123ca565b503d61249d565b6124c630612231565b6124f86124f27f000000000000000000000000000000000000000000000000000000000000000061019d565b9161019d565b036124ff57565b612507610172565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806125376004820161041a565b0390fd5b6125436125a7565b61255b6125515f8301611515565b915f84910161125e565b9061258f6125897f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610345565b91610345565b91612598610172565b806125a28161041a565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6125f76126ec565b565b6126016125ef565b565b6126149061260f6126ec565b612616565b565b61261f906127c4565b565b61262a90612603565b565b6126346114f8565b503390565b6126416114f8565b5061265c5f6126566126516114ad565b6127cf565b01611515565b90565b5190565b9061266d826127d2565b816126987fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610345565b906126a1610172565b806126ab8161041a565b0390a26126b78161265f565b6126c96126c35f610c79565b9161083b565b115f146126dd576126d9916128e2565b505b565b50506126e7612847565b6126db565b6126fd6126f7612911565b156101ea565b61270357565b61270b610172565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061273b6004820161041a565b0390fd5b6127509061274b6126ec565b612752565b565b8061276d6127676127625f611094565b61019d565b9161019d565b1461277d5761277b9061253b565b565b6127c06127895f611094565b612791610172565b9182917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b6127cd9061273f565b565b90565b803b6127e66127e05f610c79565b9161083b565b1461280857612806905f6128006127fb6114ad565b6127cf565b0161125e565b565b61284390612814610172565b9182917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b3461285a6128545f610c79565b9161083b565b1161286157565b612869610172565b7fb398979f000000000000000000000000000000000000000000000000000000008152806128996004820161041a565b0390fd5b606090565b906128b46128af836104cf565b6104ba565b918252565b3d5f146128d4576128c93d6128a2565b903d5f602084013e5b565b6128dc61289d565b906128d2565b5f8061290e936128f061289d565b508390602081019051915af4906129056128b9565b9091909161292f565b90565b612919610c72565b5061292c5f6129266125cb565b016115b7565b90565b906129439061293c61289d565b50156101ea565b5f1461294f57506129d3565b6129588261265f565b61296a6129645f610c79565b9161083b565b14806129b8575b612979575090565b6129b490612985610172565b9182917f9996b315000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b50803b6129cd6129c75f610c79565b9161083b565b14612971565b6129dc8161265f565b6129ee6129e85f610c79565b9161083b565b115f146129fd57805190602001fd5b612a05610172565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280612a356004820161041a565b0390fdfea26469706673582212209bc8fd3e4e25f516c0b2ff472c250d13fd5b5ba4bd31f4eeae401f6ff016763d64736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x39 JUMPI PUSH1 0xE PUSH1 0x47 JUMP JUMPDEST PUSH1 0x14 PUSH1 0x3D JUMP JUMPDEST PUSH2 0x2A6F PUSH2 0xA4 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x224E ADD MSTORE DUP2 DUP2 PUSH2 0x22D3 ADD MSTORE PUSH2 0x24CE ADD MSTORE PUSH2 0x2A6F SWAP1 RETURN JUMPDEST PUSH1 0x43 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4D PUSH1 0x4F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x55 PUSH1 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x5D PUSH1 0x97 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x7C PUSH1 0x78 PUSH1 0x80 SWAP3 PUSH1 0x5F JUMP JUMPDEST PUSH1 0x6A JUMP JUMPDEST PUSH1 0x5F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x8A SWAP1 PUSH1 0x6D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x94 SWAP1 PUSH1 0x83 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x9E ADDRESS PUSH1 0x8D JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xC6E JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x2B3537D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x10894052 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0x1F844A4C EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x256B5A02 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x592717AF EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x9094A91E EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0x97331BF9 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0xA14EB085 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xB9B658DB EQ PUSH2 0x11C JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0xCA9D67C8 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xCEB68C23 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x108 JUMPI PUSH4 0xF7693227 SUB PUSH2 0xE JUMPI PUSH2 0xC39 JUMP JUMPDEST PUSH2 0xC06 JUMP JUMPDEST PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0xB9E JUMP JUMPDEST PUSH2 0xB6B JUMP JUMPDEST PUSH2 0xB36 JUMP JUMPDEST PUSH2 0xADF JUMP JUMPDEST PUSH2 0x9AD JUMP JUMPDEST PUSH2 0x941 JUMP JUMPDEST PUSH2 0x90C JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST PUSH2 0x775 JUMP JUMPDEST PUSH2 0x740 JUMP JUMPDEST PUSH2 0x691 JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH2 0x5F9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST PUSH2 0x41F JUMP JUMPDEST PUSH2 0x3E5 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH2 0x211 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1A6 SWAP1 PUSH2 0x184 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B2 DUP2 PUSH2 0x19D JUMP JUMPDEST SUB PUSH2 0x1B9 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1CA DUP3 PUSH2 0x1A9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E5 JUMPI PUSH2 0x1E2 SWAP2 PUSH0 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1F8 SWAP1 PUSH2 0x1EA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x20F SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1EF JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x241 JUMPI PUSH2 0x23D PUSH2 0x22C PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0xCA4 JUMP JUMPDEST PUSH2 0x234 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1FC JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x262 SWAP1 PUSH2 0x19D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x273 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x259 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x29A PUSH2 0x294 PUSH2 0x28D DUP5 PUSH2 0x246 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x24A JUMP JUMPDEST SWAP3 PUSH2 0x253 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x2AA JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x2C3 PUSH2 0x2BD PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x266 JUMP JUMPDEST SWAP5 PUSH2 0x277 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x29D JUMP JUMPDEST PUSH2 0x2E2 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x27D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x315 JUMPI PUSH2 0x311 PUSH2 0x300 PUSH2 0x2FB CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0xE8D JUMP JUMPDEST PUSH2 0x308 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2CD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x331 PUSH2 0x32C PUSH2 0x336 SWAP3 PUSH2 0x184 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x342 SWAP1 PUSH2 0x31D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x34E SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x35B SWAP1 PUSH2 0x345 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x394 SWAP1 PUSH1 0x8 PUSH2 0x399 SWAP4 MUL PUSH2 0x367 JUMP JUMPDEST PUSH2 0x36B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3A7 SWAP2 SLOAD PUSH2 0x384 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3C0 SWAP1 PUSH2 0x3BB PUSH1 0x2 SWAP2 PUSH0 SWAP3 PUSH2 0x351 JUMP JUMPDEST PUSH2 0x39C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3CC SWAP1 PUSH2 0x19D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3E3 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3C3 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x415 JUMPI PUSH2 0x411 PUSH2 0x400 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x408 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x44D JUMPI PUSH2 0x437 PUSH2 0x432 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x1436 JUMP JUMPDEST PUSH2 0x43F PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x449 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x49B SWAP1 PUSH2 0x45A JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x4B5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 PUSH2 0x4CD PUSH2 0x4C6 PUSH2 0x172 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x491 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4ED JUMPI PUSH2 0x4E9 PUSH1 0x20 SWAP2 PUSH2 0x45A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x512 PUSH2 0x50D DUP3 PUSH2 0x4CF JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x52E JUMPI PUSH2 0x52C SWAP3 PUSH2 0x4F2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x456 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x551 JUMPI DUP2 PUSH1 0x20 PUSH2 0x54E SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4FD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x596 JUMPI PUSH2 0x56F DUP4 PUSH0 DUP4 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x591 JUMPI PUSH2 0x58E SWAP3 ADD PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x180 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x5A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x556 JUMP JUMPDEST SWAP1 PUSH2 0x146A JUMP JUMPDEST PUSH2 0x5B7 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x5C1 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x5CF JUMPI JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E0 SWAP1 PUSH2 0x5D4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5F7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5D7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x629 JUMPI PUSH2 0x609 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x625 PUSH2 0x614 PUSH2 0x14E5 JUMP JUMPDEST PUSH2 0x61C PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5E4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x656 JUMPI DUP1 PUSH2 0x64A PUSH2 0x653 SWAP3 PUSH0 DUP7 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST CALLVALUE PUSH2 0x68C JUMPI PUSH2 0x688 PUSH2 0x677 PUSH2 0x671 CALLDATASIZE PUSH1 0x4 PUSH2 0x62E JUMP JUMPDEST SWAP1 PUSH2 0x1522 JUMP JUMPDEST PUSH2 0x67F PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0x6BF JUMPI PUSH2 0x6A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x6A9 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x6B1 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x6BB DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6ED SWAP1 PUSH1 0x8 PUSH2 0x6F2 SWAP4 MUL PUSH2 0x367 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x700 SWAP2 SLOAD PUSH2 0x6DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x70F PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x71B SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x727 SWAP1 PUSH2 0x712 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x73E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x71E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x770 JUMPI PUSH2 0x750 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x76C PUSH2 0x75B PUSH2 0x703 JUMP JUMPDEST PUSH2 0x763 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x72B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0x7A5 JUMPI PUSH2 0x785 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x7A1 PUSH2 0x790 PUSH2 0x1579 JUMP JUMPDEST PUSH2 0x798 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7C0 DUP2 PUSH2 0x7AA JUMP JUMPDEST SUB PUSH2 0x7C7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x7D8 DUP3 PUSH2 0x7B7 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x802 JUMPI DUP1 PUSH2 0x7F6 PUSH2 0x7FF SWAP3 PUSH0 DUP7 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x7CB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST CALLVALUE PUSH2 0x836 JUMPI PUSH2 0x820 PUSH2 0x81A CALLDATASIZE PUSH1 0x4 PUSH2 0x7DA JUMP JUMPDEST SWAP1 PUSH2 0x180E JUMP JUMPDEST PUSH2 0x828 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x832 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x847 DUP2 PUSH2 0x83B JUMP JUMPDEST SUB PUSH2 0x84E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x85F DUP3 PUSH2 0x83E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x87A JUMPI PUSH2 0x877 SWAP2 PUSH0 ADD PUSH2 0x852 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x8C2 DUP2 PUSH2 0x8AC JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x8DC JUMPI PUSH2 0x8D4 PUSH1 0x1 SWAP2 PUSH2 0x8B0 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH0 PUSH2 0x8EB DUP2 PUSH2 0x8AC JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x908 JUMPI PUSH2 0x905 SWAP2 PUSH2 0x8FF SWAP2 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x93C JUMPI PUSH2 0x938 PUSH2 0x927 PUSH2 0x922 CALLDATASIZE PUSH1 0x4 PUSH2 0x861 JUMP JUMPDEST PUSH2 0x8E1 JUMP JUMPDEST PUSH2 0x92F PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0x971 JUMPI PUSH2 0x951 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x96D PUSH2 0x95C PUSH2 0x18C8 JUMP JUMPDEST PUSH2 0x964 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2CD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST SWAP1 PUSH2 0x980 SWAP1 PUSH2 0x345 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x9A5 PUSH2 0x9AA SWAP3 PUSH2 0x9A0 PUSH1 0x3 SWAP4 PUSH0 SWAP5 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x351 JUMP JUMPDEST PUSH2 0x39C JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x9DE JUMPI PUSH2 0x9DA PUSH2 0x9C9 PUSH2 0x9C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x62E JUMP JUMPDEST SWAP1 PUSH2 0x98C JUMP JUMPDEST PUSH2 0x9D1 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA01 JUMPI PUSH2 0x9FD PUSH1 0x20 SWAP2 PUSH2 0x45A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 PUSH2 0xA18 PUSH2 0xA13 DUP4 PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xA4E PUSH1 0x5 PUSH2 0xA06 JUMP JUMPDEST SWAP1 PUSH2 0xA5B PUSH1 0x20 DUP4 ADD PUSH2 0xA1D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA65 PUSH2 0xA44 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA70 PUSH2 0xA5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA7B PUSH2 0xA68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0xAB5 PUSH2 0xABE PUSH1 0x20 SWAP4 PUSH2 0xAC3 SWAP4 PUSH2 0xAAC DUP2 PUSH2 0xA7E JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0xA82 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x45A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xADC SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xA96 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB0F JUMPI PUSH2 0xAEF CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0xB0B PUSH2 0xAFA PUSH2 0xA73 JUMP JUMPDEST PUSH2 0xB02 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xAC7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH2 0xB1D SWAP1 PUSH2 0x83B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xB34 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xB14 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xB66 JUMPI PUSH2 0xB46 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0xB62 PUSH2 0xB51 PUSH2 0x18E1 JUMP JUMPDEST PUSH2 0xB59 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB21 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xB99 JUMPI PUSH2 0xB83 PUSH2 0xB7E CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x1B02 JUMP JUMPDEST PUSH2 0xB8B PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0xB95 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xBCE JUMPI PUSH2 0xBCA PUSH2 0xBB9 PUSH2 0xBB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x1B48 JUMP JUMPDEST PUSH2 0xBC1 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2CD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xC01 JUMPI PUSH2 0xBEB PUSH2 0xBE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x2109 JUMP JUMPDEST PUSH2 0xBF3 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0xBFD DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xC34 JUMPI PUSH2 0xC1E PUSH2 0xC19 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x2199 JUMP JUMPDEST PUSH2 0xC26 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0xC30 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xC69 JUMPI PUSH2 0xC65 PUSH2 0xC54 PUSH2 0xC4F CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x21A4 JUMP JUMPDEST PUSH2 0xC5C PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC8D PUSH2 0xC88 PUSH2 0xC92 SWAP3 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xCA1 SWAP2 ADD PUSH2 0x83B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCAC PUSH2 0xC72 JUMP JUMPDEST POP PUSH2 0xCB6 PUSH0 PUSH2 0xC79 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xCD2 PUSH2 0xCCC PUSH2 0xCC7 PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST LT ISZERO PUSH2 0xD18 JUMPI PUSH2 0xCEC PUSH2 0xCE6 PUSH0 DUP4 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH2 0xCFE PUSH2 0xCF8 DUP5 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0xD11 JUMPI PUSH2 0xD0C SWAP1 PUSH2 0xC95 JUMP JUMPDEST PUSH2 0xCB7 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD3B JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 PUSH2 0xD52 PUSH2 0xD4D DUP4 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0xD81 PUSH2 0xD69 DUP4 PUSH2 0xD40 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0xD77 DUP7 SWAP4 PUSH2 0xD23 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0xD57 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xD8C SWAP1 PUSH2 0x31D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD98 SWAP1 PUSH2 0xD83 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDA4 SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xDBA DUP3 PUSH2 0x1A9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xDD5 JUMPI PUSH2 0xDD2 SWAP2 PUSH0 ADD PUSH2 0xDAD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST PUSH2 0xDE2 PUSH2 0x172 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xDF4 DUP3 PUSH2 0x246 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST SWAP1 PUSH2 0xE14 SWAP1 PUSH2 0x19D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xE4E SWAP1 PUSH2 0x83B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xE7B JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0xE18 JUMP JUMPDEST PUSH2 0xE8A SWAP1 MLOAD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE95 PUSH2 0xD1E JUMP JUMPDEST POP PUSH2 0xEA7 PUSH2 0xEA2 PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0xD5C JUMP JUMPDEST SWAP2 PUSH2 0xEB1 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP3 PUSH2 0xEBB PUSH0 PUSH2 0xC79 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xED7 PUSH2 0xED1 PUSH2 0xECC PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST LT ISZERO PUSH2 0x105C JUMPI PUSH2 0xEF9 PUSH2 0xEF4 PUSH2 0xEEE PUSH0 DUP5 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xF1D PUSH1 0x20 PUSH2 0xF07 DUP4 PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0xF15 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xF2D PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1057 JUMPI PUSH0 SWAP2 PUSH2 0x1029 JUMPI JUMPDEST POP PUSH2 0xF52 PUSH2 0xF4C DUP8 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0xFF5 JUMPI POP DUP5 PUSH2 0xF73 PUSH2 0xF6D PUSH2 0xF68 DUP6 PUSH2 0x246 JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ PUSH2 0xF86 JUMPI PUSH2 0xF81 SWAP1 PUSH2 0xC95 JUMP JUMPDEST PUSH2 0xEBC JUMP JUMPDEST POP SWAP1 SWAP2 POP JUMPDEST PUSH2 0xF94 DUP4 PUSH2 0xD5C JUMP JUMPDEST SWAP2 PUSH2 0xF9E PUSH0 PUSH2 0xC79 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFB2 PUSH2 0xFAC DUP8 PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST LT ISZERO PUSH2 0xFEE JUMPI PUSH2 0xFE9 SWAP1 PUSH2 0xFE4 PUSH2 0xFD2 PUSH2 0xFCD DUP7 DUP5 SWAP1 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE80 JUMP JUMPDEST PUSH2 0xFDF DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE0A JUMP JUMPDEST PUSH2 0xC95 JUMP JUMPDEST PUSH2 0xF9F JUMP JUMPDEST POP SWAP3 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1023 SWAP4 SWAP5 POP PUSH2 0x101E SWAP2 POP PUSH2 0x100C SWAP1 SWAP6 SWAP3 SWAP6 PUSH2 0xD9B JUMP JUMPDEST PUSH2 0x1019 DUP7 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE0A JUMP JUMPDEST PUSH2 0xE45 JUMP JUMPDEST SWAP2 PUSH2 0xF8B JUMP JUMPDEST PUSH2 0x104A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1050 JUMPI JUMPDEST PUSH2 0x1042 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0xF3F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1038 JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST POP SWAP1 SWAP2 POP PUSH2 0xF8B JUMP JUMPDEST PUSH2 0x1076 SWAP1 PUSH2 0x1071 PUSH2 0x21C3 JUMP JUMPDEST PUSH2 0x127E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x108C PUSH2 0x1087 PUSH2 0x1091 SWAP3 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x109D SWAP1 PUSH2 0x1078 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x756C745F41444452455353000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E6956315661756C74466163746F72793A20494E56414C49445F7661 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x10FA PUSH1 0x2B PUSH1 0x40 SWAP3 PUSH2 0xA82 JUMP JUMPDEST PUSH2 0x1103 DUP2 PUSH2 0x10A0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x111C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10ED JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1126 JUMPI JUMP JUMPDEST PUSH2 0x112E PUSH2 0x172 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x115E PUSH1 0x4 DUP3 ADD PUSH2 0x1107 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x117B DUP2 PUSH2 0x116E JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x1195 JUMPI PUSH2 0x118D PUSH1 0x1 SWAP2 PUSH2 0x1165 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x11CC SWAP2 MUL SWAP2 PUSH2 0x11C6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x119A JUMP JUMPDEST SWAP3 PUSH2 0x119A JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x11EF PUSH2 0x11EA PUSH2 0x11F7 SWAP4 PUSH2 0x345 JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x119E JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x122B JUMPI DUP3 PUSH2 0x1223 SWAP2 PUSH1 0x1 PUSH2 0x1229 SWAP6 ADD DUP2 SSTORE PUSH2 0x1172 JUMP JUMPDEST SWAP1 PUSH2 0x11D9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1254 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1230 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1273 PUSH2 0x126E PUSH2 0x127A SWAP3 PUSH2 0x345 JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1235 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x12A3 DUP2 PUSH2 0x129C PUSH2 0x1296 PUSH2 0x1291 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ ISZERO PUSH2 0x111F JUMP JUMPDEST PUSH2 0x12B6 PUSH2 0x12AF PUSH0 PUSH2 0x1162 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x11FB JUMP JUMPDEST PUSH2 0x12E2 PUSH1 0x20 PUSH2 0x12CC PUSH2 0x12C7 DUP5 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x12DA PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x12F2 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1431 JUMPI PUSH0 SWAP2 PUSH2 0x1403 JUMPI JUMPDEST POP PUSH2 0x1331 PUSH1 0x20 PUSH2 0x131B PUSH2 0x1316 DUP6 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1329 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1341 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x13FE JUMPI PUSH0 SWAP2 PUSH2 0x13D0 JUMPI JUMPDEST POP DUP1 PUSH2 0x136F PUSH2 0x1369 PUSH2 0x1364 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x138E JUMPI POP PUSH2 0x1386 PUSH2 0x138B SWAP3 SWAP2 PUSH1 0x2 PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x13C6 SWAP1 PUSH2 0x13C1 DUP5 PUSH2 0x13B9 PUSH2 0x13CB SWAP7 PUSH2 0x13B4 PUSH2 0x13AD PUSH1 0x3 DUP8 SWAP1 PUSH2 0x976 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST SWAP4 PUSH1 0x3 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST PUSH2 0x138C JUMP JUMPDEST PUSH2 0x13F1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x13F7 JUMPI JUMPDEST PUSH2 0x13E9 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0x1353 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13DF JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x1424 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x142A JUMPI JUMPDEST PUSH2 0x141C DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0x1304 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1412 JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x143F SWAP1 PUSH2 0x1065 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1453 SWAP2 PUSH2 0x144E PUSH2 0x223D JUMP JUMPDEST PUSH2 0x1455 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1468 SWAP2 PUSH2 0x1463 DUP2 PUSH2 0x230F JUMP JUMPDEST PUSH2 0x237F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1474 SWAP2 PUSH2 0x1441 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x148B SWAP1 PUSH2 0x1486 PUSH2 0x24BD JUMP JUMPDEST PUSH2 0x14D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14A5 PUSH2 0x14A0 PUSH2 0x14AA SWAP3 PUSH2 0x148E JUMP JUMPDEST PUSH2 0x1230 JUMP JUMPDEST PUSH2 0x5D4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14D6 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x1491 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x14E2 PUSH2 0x14AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14F5 PUSH2 0x14F0 PUSH2 0x1476 JUMP JUMPDEST PUSH2 0x147A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x150D PUSH2 0x1512 SWAP2 PUSH2 0x14FC JUMP JUMPDEST PUSH2 0x36B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x151F SWAP1 SLOAD PUSH2 0x1501 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1547 SWAP2 PUSH2 0x153D PUSH2 0x1542 SWAP3 PUSH2 0x1535 PUSH2 0x14F8 JUMP JUMPDEST POP PUSH1 0x3 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x351 JUMP JUMPDEST PUSH2 0x1515 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1552 PUSH2 0x21C3 JUMP JUMPDEST PUSH2 0x155A PUSH2 0x155C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x156D PUSH2 0x1568 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x253B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1577 PUSH2 0x154A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1581 PUSH2 0x14F8 JUMP JUMPDEST POP PUSH2 0x1594 PUSH0 PUSH2 0x158E PUSH2 0x25A7 JUMP JUMPDEST ADD PUSH2 0x1515 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x15AF PUSH2 0x15B4 SWAP2 PUSH2 0x1597 JUMP JUMPDEST PUSH2 0x159D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C1 SWAP1 SLOAD PUSH2 0x15A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x15DD PUSH2 0x15E2 SWAP2 PUSH2 0x14FC JUMP JUMPDEST PUSH2 0x15C4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15EF SWAP1 SLOAD PUSH2 0x15D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1605 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1230 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1623 PUSH2 0x161E PUSH2 0x1628 SWAP3 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1643 PUSH2 0x163E PUSH2 0x164A SWAP3 PUSH2 0x160F JUMP JUMPDEST PUSH2 0x162B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15F2 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1668 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x164E JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x167B SWAP1 PUSH2 0x1EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1696 PUSH2 0x1691 PUSH2 0x169D SWAP3 PUSH2 0x1672 JUMP JUMPDEST PUSH2 0x167E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1654 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x16AA SWAP1 PUSH2 0x7AA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x16C1 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x16A1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x16CE PUSH2 0x25CB JUMP JUMPDEST SWAP1 PUSH2 0x16DA PUSH0 DUP4 ADD PUSH2 0x15B7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x178B JUMPI JUMPDEST PUSH2 0x174F JUMPI PUSH2 0x1714 SWAP3 PUSH2 0x170B SWAP2 PUSH2 0x16F9 DUP7 PUSH0 DUP7 ADD PUSH2 0x162E JUMP JUMPDEST PUSH2 0x1706 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1681 JUMP JUMPDEST PUSH2 0x17F7 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x1681 JUMP JUMPDEST PUSH2 0x174A PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1741 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x16AE JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1757 PUSH2 0x172 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1787 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x1797 PUSH0 DUP4 ADD PUSH2 0x15E5 JUMP JUMPDEST PUSH2 0x17A9 PUSH2 0x17A3 DUP7 PUSH2 0x7AA JUMP JUMPDEST SWAP2 PUSH2 0x7AA JUMP JUMPDEST LT ISZERO PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x17B9 SWAP1 PUSH2 0x31D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C5 SWAP1 PUSH2 0x17B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17D1 SWAP1 PUSH2 0x17B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x17EC PUSH2 0x17E7 PUSH2 0x17F3 SWAP3 PUSH2 0x17C8 JUMP JUMPDEST PUSH2 0x17D4 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1235 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x180C SWAP2 POP PUSH2 0x1805 SWAP1 PUSH2 0x17BC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x17D7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1818 SWAP2 PUSH2 0x16C3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x182D SWAP1 SLOAD PUSH2 0x1501 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1853 PUSH2 0x184D PUSH2 0x1846 DUP5 PUSH2 0x8AC JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x181A JUMP JUMPDEST SWAP3 PUSH2 0x8B0 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1863 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x1883 PUSH2 0x187D PUSH1 0x1 SWAP3 PUSH2 0x1878 DUP8 PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x266 JUMP JUMPDEST SWAP5 PUSH2 0x1830 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x1856 JUMP JUMPDEST SWAP1 PUSH2 0x1897 SWAP2 PUSH2 0x1836 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x18BA PUSH2 0x18B3 SWAP3 PUSH2 0x18AA PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x188D JUMP JUMPDEST SUB DUP4 PUSH2 0x491 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x18C5 SWAP1 PUSH2 0x189A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18D0 PUSH2 0xD1E JUMP JUMPDEST POP PUSH2 0x18DA PUSH0 PUSH2 0x18BC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x18E9 PUSH2 0x18DD JUMP JUMPDEST POP PUSH2 0x18F3 PUSH0 PUSH2 0x8AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x190A PUSH2 0x1905 PUSH2 0x190F SWAP3 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1929 PUSH2 0x1924 PUSH2 0x192E SWAP3 PUSH2 0x1912 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x193A SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1946 SWAP1 PUSH2 0x1915 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x195D SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x193D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1967 PUSH2 0x25CB JUMP JUMPDEST SWAP1 PUSH2 0x197C PUSH2 0x1976 PUSH0 DUP5 ADD PUSH2 0x15B7 JUMP JUMPDEST ISZERO PUSH2 0x1EA JUMP JUMPDEST SWAP1 PUSH2 0x1988 PUSH0 DUP5 ADD PUSH2 0x15E5 JUMP JUMPDEST DUP1 PUSH2 0x199B PUSH2 0x1995 PUSH0 PUSH2 0x18F6 JUMP JUMPDEST SWAP2 PUSH2 0x7AA JUMP JUMPDEST EQ DUP1 PUSH2 0x1AD5 JUMPI JUMPDEST SWAP1 PUSH2 0x19B6 PUSH2 0x19B0 PUSH1 0x1 PUSH2 0x1915 JUMP JUMPDEST SWAP2 PUSH2 0x7AA JUMP JUMPDEST EQ DUP1 PUSH2 0x1AAD JUMPI JUMPDEST PUSH2 0x19C8 SWAP1 SWAP2 ISZERO PUSH2 0x1EA JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1A9C JUMPI JUMPDEST POP PUSH2 0x1A60 JUMPI PUSH2 0x19F8 SWAP1 PUSH2 0x19ED PUSH2 0x19E5 PUSH1 0x1 PUSH2 0x1915 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x162E JUMP JUMPDEST DUP3 PUSH2 0x1A4E JUMPI JUMPDEST PUSH2 0x1ADC JUMP JUMPDEST PUSH2 0x1A00 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1A0D SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x1681 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1A45 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1A3C PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x194A JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x19FD JUMP JUMPDEST PUSH2 0x1A5B PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1681 JUMP JUMPDEST PUSH2 0x19F3 JUMP JUMPDEST PUSH2 0x1A68 PUSH2 0x172 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1A98 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1AA7 SWAP2 POP ISZERO PUSH2 0x1EA JUMP JUMPDEST PUSH0 PUSH2 0x19CF JUMP JUMPDEST POP PUSH2 0x19C8 PUSH2 0x1ABA ADDRESS PUSH2 0x1931 JUMP JUMPDEST EXTCODESIZE PUSH2 0x1ACD PUSH2 0x1AC7 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x19BD JUMP JUMPDEST POP DUP3 PUSH2 0x19A2 JUMP JUMPDEST PUSH2 0x1AF9 PUSH2 0x1B00 SWAP2 PUSH2 0x1AEB PUSH2 0x25F9 JUMP JUMPDEST PUSH2 0x1AF4 CALLER PUSH2 0x2621 JUMP JUMPDEST PUSH2 0x17BC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x17D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B0B SWAP1 PUSH2 0x195F JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B24 PUSH2 0x1B1F PUSH2 0x1B29 SWAP3 PUSH2 0x1B0D JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B40 PUSH2 0x1B3B PUSH2 0x1B45 SWAP3 PUSH2 0x1912 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B50 PUSH2 0xD1E JUMP JUMPDEST POP PUSH2 0x1B90 PUSH2 0x1B66 PUSH2 0x1B61 PUSH1 0x2 PUSH2 0x1B10 JUMP JUMPDEST PUSH2 0xD5C JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1B7A PUSH2 0x1B75 DUP4 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1B88 PUSH2 0x172 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1BA0 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1C9E JUMPI PUSH2 0x1BE1 PUSH1 0x20 SWAP3 PUSH2 0x1BDC PUSH2 0x1BFC SWAP6 PUSH2 0x1BE6 SWAP5 PUSH0 SWAP2 PUSH2 0x1C71 JUMPI JUMPDEST POP PUSH2 0x1BD7 DUP9 PUSH2 0x1BD1 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP1 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE0A JUMP JUMPDEST PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1BF4 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1C0C PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1C6C JUMPI PUSH2 0x1C3B SWAP2 PUSH0 SWAP2 PUSH2 0x1C3E JUMPI JUMPDEST POP PUSH2 0x1C36 DUP4 PUSH2 0x1C30 PUSH1 0x1 PUSH2 0x1B2C JUMP JUMPDEST SWAP1 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE0A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C5F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1C65 JUMPI JUMPDEST PUSH2 0x1C57 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0x1C21 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1C4D JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x1C91 SWAP2 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1C97 JUMPI JUMPDEST PUSH2 0x1C89 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0x1BC3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1C7F JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x1CB4 SWAP1 PUSH2 0x1CAF PUSH2 0x21C3 JUMP JUMPDEST PUSH2 0x1D4B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1CC5 PUSH2 0x1CCB SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x83B JUMP JUMPDEST SWAP3 PUSH2 0x83B JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1CD6 JUMPI JUMP JUMPDEST PUSH2 0xE18 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1D1A SWAP2 PUSH2 0x1D14 PUSH2 0x14F8 JUMP JUMPDEST SWAP2 PUSH2 0x11D9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1D25 DUP2 PUSH2 0x116E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D46 JUMPI PUSH1 0x1 SWAP1 SUB SWAP1 PUSH2 0x1D43 PUSH2 0x1D3D DUP4 DUP4 PUSH2 0x1172 JUMP JUMPDEST SWAP1 PUSH2 0x1D08 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0x1CDB JUMP JUMPDEST PUSH2 0x1D54 PUSH0 PUSH2 0xC79 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1D70 PUSH2 0x1D6A PUSH2 0x1D65 PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST LT ISZERO PUSH2 0x2102 JUMPI PUSH2 0x1D8A PUSH2 0x1D84 PUSH0 DUP4 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH2 0x1D9C PUSH2 0x1D96 DUP5 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0x1DAF JUMPI PUSH2 0x1DAA SWAP1 PUSH2 0xC95 JUMP JUMPDEST PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x1DF2 SWAP1 PUSH2 0x1DEC PUSH2 0x1DE5 PUSH2 0x1DDF PUSH0 PUSH2 0x1DD9 PUSH2 0x1DC9 PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x1DD3 PUSH1 0x1 PUSH2 0x1B2C JUMP JUMPDEST SWAP1 PUSH2 0x1CB6 JUMP JUMPDEST SWAP1 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x11D9 JUMP JUMPDEST PUSH2 0x1DFB PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x2 SWAP1 PUSH2 0x1E2A PUSH1 0x20 PUSH2 0x1E14 PUSH2 0x1E0F DUP7 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1E22 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1E3A PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x20FD JUMPI PUSH2 0x1E5E SWAP4 PUSH2 0x1E59 SWAP3 PUSH0 SWAP3 PUSH2 0x20CD JUMPI JUMPDEST POP PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST PUSH2 0x1E67 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x1E95 PUSH1 0x3 PUSH1 0x20 PUSH2 0x1E7F PUSH2 0x1E7A DUP7 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1E8D PUSH2 0x172 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1EA5 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x20C8 JUMPI PUSH2 0x1EC1 SWAP3 PUSH0 SWAP3 PUSH2 0x2098 JUMPI JUMPDEST POP PUSH2 0x976 JUMP JUMPDEST SWAP1 PUSH2 0x1EEE PUSH1 0x20 PUSH2 0x1ED8 PUSH2 0x1ED3 DUP7 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1EE6 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1EFE PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2093 JUMPI PUSH2 0x1F22 SWAP4 PUSH2 0x1F1D SWAP3 PUSH0 SWAP3 PUSH2 0x2063 JUMPI JUMPDEST POP PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST PUSH2 0x1F2B PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x3 PUSH2 0x1F59 PUSH1 0x20 PUSH2 0x1F43 PUSH2 0x1F3E DUP7 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1F51 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1F69 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x205E JUMPI PUSH2 0x1F97 PUSH2 0x1F91 PUSH2 0x1F9C SWAP3 PUSH2 0x1FB2 SWAP6 PUSH1 0x20 SWAP6 PUSH0 SWAP3 PUSH2 0x202F JUMPI JUMPDEST POP PUSH2 0x976 JUMP JUMPDEST SWAP6 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1FAA PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1FC2 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x202A JUMPI PUSH2 0x1FE6 SWAP4 PUSH2 0x1FE1 SWAP3 PUSH0 SWAP3 PUSH2 0x1FFA JUMPI JUMPDEST POP PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST PUSH2 0x1FF7 PUSH2 0x1FF2 PUSH0 PUSH2 0x1162 JUMP JUMPDEST PUSH2 0x1D1C JUMP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH2 0x201C SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2023 JUMPI JUMPDEST PUSH2 0x2014 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1FDB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x200A JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x2050 SWAP2 SWAP3 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x2057 JUMPI JUMPDEST PUSH2 0x2048 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1F8B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x203E JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x2085 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x208C JUMPI JUMPDEST PUSH2 0x207D DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1F17 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2073 JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x20BA SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x20C1 JUMPI JUMPDEST PUSH2 0x20B2 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1EBB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x20A8 JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x20EF SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x20F6 JUMPI JUMPDEST PUSH2 0x20E7 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1E53 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x20DD JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST POP POP PUSH2 0x1FF8 JUMP JUMPDEST PUSH2 0x2112 SWAP1 PUSH2 0x1CA3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2125 SWAP1 PUSH2 0x2120 PUSH2 0x21C3 JUMP JUMPDEST PUSH2 0x2127 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2142 PUSH2 0x213C PUSH2 0x2137 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0x2152 JUMPI PUSH2 0x2150 SWAP1 PUSH2 0x253B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2195 PUSH2 0x215E PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x2166 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x21A2 SWAP1 PUSH2 0x2114 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21BB PUSH2 0x21C0 SWAP2 PUSH2 0x21B3 PUSH2 0x14F8 JUMP JUMPDEST POP PUSH1 0x2 PUSH2 0x351 JUMP JUMPDEST PUSH2 0x1515 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21CB PUSH2 0x1579 JUMP JUMPDEST PUSH2 0x21E4 PUSH2 0x21DE PUSH2 0x21D9 PUSH2 0x262C JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST SUB PUSH2 0x21EB JUMPI JUMP JUMPDEST PUSH2 0x222D PUSH2 0x21F6 PUSH2 0x262C JUMP JUMPDEST PUSH2 0x21FE PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x223A SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2246 ADDRESS PUSH2 0x2231 JUMP JUMPDEST PUSH2 0x2278 PUSH2 0x2272 PUSH32 0x0 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x22C2 JUMPI JUMPDEST PUSH2 0x2286 JUMPI JUMP JUMPDEST PUSH2 0x228E PUSH2 0x172 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x22BE PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x22CB PUSH2 0x2639 JUMP JUMPDEST PUSH2 0x22FD PUSH2 0x22F7 PUSH32 0x0 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ ISZERO PUSH2 0x2280 JUMP JUMPDEST POP PUSH2 0x230D PUSH2 0x21C3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2318 SWAP1 PUSH2 0x2304 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2323 SWAP1 PUSH2 0x31D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x232F SWAP1 PUSH2 0x231A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x233B SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2347 DUP2 PUSH2 0x5D4 JUMP JUMPDEST SUB PUSH2 0x234E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x235F DUP3 PUSH2 0x233E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x237A JUMPI PUSH2 0x2377 SWAP2 PUSH0 ADD PUSH2 0x2352 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x23AD PUSH1 0x20 PUSH2 0x2397 PUSH2 0x2392 DUP7 PUSH2 0x2326 JUMP JUMPDEST PUSH2 0x2332 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x23A5 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x23BD PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x248D JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x241E JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x23DF JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x241A SWAP1 PUSH2 0x23EB PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2439 PUSH2 0x2433 PUSH2 0x242E PUSH2 0x14AD JUMP JUMPDEST PUSH2 0x5D4 JUMP JUMPDEST SWAP2 PUSH2 0x5D4 JUMP JUMPDEST SUB PUSH2 0x244E JUMPI PUSH2 0x2449 SWAP3 SWAP4 POP PUSH2 0x2663 JUMP JUMPDEST PUSH2 0x23DD JUMP JUMPDEST PUSH2 0x2489 DUP5 PUSH2 0x245A PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5E4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x24AF SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x24B6 JUMPI JUMPDEST PUSH2 0x24A7 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2361 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x23CA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x249D JUMP JUMPDEST PUSH2 0x24C6 ADDRESS PUSH2 0x2231 JUMP JUMPDEST PUSH2 0x24F8 PUSH2 0x24F2 PUSH32 0x0 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST SUB PUSH2 0x24FF JUMPI JUMP JUMPDEST PUSH2 0x2507 PUSH2 0x172 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2537 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2543 PUSH2 0x25A7 JUMP JUMPDEST PUSH2 0x255B PUSH2 0x2551 PUSH0 DUP4 ADD PUSH2 0x1515 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x125E JUMP JUMPDEST SWAP1 PUSH2 0x258F PUSH2 0x2589 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x345 JUMP JUMPDEST SWAP2 PUSH2 0x345 JUMP JUMPDEST SWAP2 PUSH2 0x2598 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x25A2 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x25F7 PUSH2 0x26EC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2601 PUSH2 0x25EF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2614 SWAP1 PUSH2 0x260F PUSH2 0x26EC JUMP JUMPDEST PUSH2 0x2616 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x261F SWAP1 PUSH2 0x27C4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x262A SWAP1 PUSH2 0x2603 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2634 PUSH2 0x14F8 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2641 PUSH2 0x14F8 JUMP JUMPDEST POP PUSH2 0x265C PUSH0 PUSH2 0x2656 PUSH2 0x2651 PUSH2 0x14AD JUMP JUMPDEST PUSH2 0x27CF JUMP JUMPDEST ADD PUSH2 0x1515 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x266D DUP3 PUSH2 0x27D2 JUMP JUMPDEST DUP2 PUSH2 0x2698 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x345 JUMP JUMPDEST SWAP1 PUSH2 0x26A1 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x26AB DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x26B7 DUP2 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x26C9 PUSH2 0x26C3 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x26DD JUMPI PUSH2 0x26D9 SWAP2 PUSH2 0x28E2 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x26E7 PUSH2 0x2847 JUMP JUMPDEST PUSH2 0x26DB JUMP JUMPDEST PUSH2 0x26FD PUSH2 0x26F7 PUSH2 0x2911 JUMP JUMPDEST ISZERO PUSH2 0x1EA JUMP JUMPDEST PUSH2 0x2703 JUMPI JUMP JUMPDEST PUSH2 0x270B PUSH2 0x172 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x273B PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2750 SWAP1 PUSH2 0x274B PUSH2 0x26EC JUMP JUMPDEST PUSH2 0x2752 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x276D PUSH2 0x2767 PUSH2 0x2762 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0x277D JUMPI PUSH2 0x277B SWAP1 PUSH2 0x253B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x27C0 PUSH2 0x2789 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x2791 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27CD SWAP1 PUSH2 0x273F JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x27E6 PUSH2 0x27E0 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ PUSH2 0x2808 JUMPI PUSH2 0x2806 SWAP1 PUSH0 PUSH2 0x2800 PUSH2 0x27FB PUSH2 0x14AD JUMP JUMPDEST PUSH2 0x27CF JUMP JUMPDEST ADD PUSH2 0x125E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2843 SWAP1 PUSH2 0x2814 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x285A PUSH2 0x2854 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST GT PUSH2 0x2861 JUMPI JUMP JUMPDEST PUSH2 0x2869 PUSH2 0x172 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2899 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x28B4 PUSH2 0x28AF DUP4 PUSH2 0x4CF JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x28D4 JUMPI PUSH2 0x28C9 RETURNDATASIZE PUSH2 0x28A2 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x28DC PUSH2 0x289D JUMP JUMPDEST SWAP1 PUSH2 0x28D2 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x290E SWAP4 PUSH2 0x28F0 PUSH2 0x289D JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x2905 PUSH2 0x28B9 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x292F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2919 PUSH2 0xC72 JUMP JUMPDEST POP PUSH2 0x292C PUSH0 PUSH2 0x2926 PUSH2 0x25CB JUMP JUMPDEST ADD PUSH2 0x15B7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2943 SWAP1 PUSH2 0x293C PUSH2 0x289D JUMP JUMPDEST POP ISZERO PUSH2 0x1EA JUMP JUMPDEST PUSH0 EQ PUSH2 0x294F JUMPI POP PUSH2 0x29D3 JUMP JUMPDEST PUSH2 0x2958 DUP3 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x296A PUSH2 0x2964 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ DUP1 PUSH2 0x29B8 JUMPI JUMPDEST PUSH2 0x2979 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x29B4 SWAP1 PUSH2 0x2985 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x29CD PUSH2 0x29C7 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ PUSH2 0x2971 JUMP JUMPDEST PUSH2 0x29DC DUP2 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x29EE PUSH2 0x29E8 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x29FD JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2A05 PUSH2 0x172 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2A35 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 0xC8 REVERT RETURNDATACOPY 0x4E 0x25 CREATE2 AND 0xC0 0xB2 SELFDESTRUCT SELFBALANCE 0x2C 0x25 0xD SGT REVERT JUMPDEST JUMPDEST LOG4 0xBD BALANCE DELEGATECALL 0xEE 0xAE BLOCKHASH 0x1F PUSH16 0xF016763D64736F6C6343000819003300 ","sourceMap":"1797:4943:66:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;749:3275:0:-;;;:::i;:::-;:::o;688:505:4:-;;;:::i;:::-;:::o;1797:4943:66:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":1477,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":445,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":3501,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":1582,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_bytes":{"entryPoint":1366,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint64":{"entryPoint":2010,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":1277,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes":{"entryPoint":1331,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":9057,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":9042,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":460,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":3516,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint256":{"entryPoint":2145,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":2130,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint64":{"entryPoint":1995,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_address":{"entryPoint":614,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_array_address_dyn_storage":{"entryPoint":6285,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":963,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_to_address":{"entryPoint":601,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_address_dyn":{"entryPoint":637,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_memory_ptr":{"entryPoint":717,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn_storage":{"entryPoint":6198,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":508,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":495,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":1508,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":1495,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IBaluniV1Registry":{"entryPoint":1822,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":6474,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":6461,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":2759,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":2710,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":4359,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_7510":{"entryPoint":4333,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":1050,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":976,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_contract_IBaluniV1Registry":{"entryPoint":1835,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":5806,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":2849,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":2836,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint64":{"entryPoint":5793,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_address_dyn":{"entryPoint":3420,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":1210,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_array_address_dyn":{"entryPoint":3392,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":10402,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":2566,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":370,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":3363,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":1231,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2531,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn":{"entryPoint":595,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn_storage":{"entryPoint":2224,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_address_dyn_storage_ptr":{"entryPoint":4453,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn":{"entryPoint":582,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn_storage":{"entryPoint":2220,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_array_address_dyn_storage_ptr":{"entryPoint":4462,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":9823,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":2686,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn":{"entryPoint":631,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_array_address_dyn_storage":{"entryPoint":6192,"id":null,"parameterSlots":1,"returnSlots":1},"array_pop_array_address_dyn_storage_ptr":{"entryPoint":7452,"id":null,"parameterSlots":1,"returnSlots":0},"array_push_from_address_to_array_address_dyn_storage_ptr":{"entryPoint":4603,"id":null,"parameterSlots":2,"returnSlots":0},"array_storeLengthForEncoding_array_address_dyn":{"entryPoint":6170,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_array_address_dyn_fromStack":{"entryPoint":586,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":2690,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":7350,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_address":{"entryPoint":413,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":490,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":1492,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":875,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":5533,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":1732,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":5572,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":6418,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":5262,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":3190,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":6925,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":388,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":2107,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":1962,"id":null,"parameterSlots":1,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":5293,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":2664,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":837,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":6076,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1YearnVault":{"entryPoint":3471,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":8998,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_address_dyn_storage_to_array_address_dyn":{"entryPoint":6332,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_array_address_dyn_storage_to_array_address_dyn_ptr":{"entryPoint":4450,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":5746,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":1810,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":6088,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1YearnVault_to_address":{"entryPoint":3483,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":9010,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":6449,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":8753,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":6928,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":4244,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":5265,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":4216,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":6956,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":6421,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":2653,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint256":{"entryPoint":3193,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":6390,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":825,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":6064,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1YearnVault":{"entryPoint":3459,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":8986,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":797,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":5647,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_array_address_dyn":{"entryPoint":6298,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1266,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2628,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2699,"id":null,"parameterSlots":3,"returnSlots":0},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2783,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_addVault":{"entryPoint":1055,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allVaults":{"entryPoint":2316,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAllVaults":{"entryPoint":2369,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultAsset":{"entryPoint":2974,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultType0":{"entryPoint":997,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultType0ByAsset":{"entryPoint":3129,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultType1":{"entryPoint":2477,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultType1ByAssets":{"entryPoint":1627,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultsByAsset":{"entryPoint":741,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultsCount":{"entryPoint":2870,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":2923,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":1909,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":1529,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":1856,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":2055,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_removeVault":{"entryPoint":3027,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":1681,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":3078,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":1435,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_vaultExist":{"entryPoint":529,"id":null,"parameterSlots":0,"returnSlots":0},"extract_from_storage_value_dynamict_address":{"entryPoint":900,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_contract_IBaluniV1Registry":{"entryPoint":1757,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":5377,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":5539,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":5585,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":10425,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":1169,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":9761,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":9750,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":10180,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":10066,"id":null,"parameterSlots":1,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":9721,"id":502,"parameterSlots":0,"returnSlots":0},"fun__transferOwnership":{"entryPoint":9531,"id":193,"parameterSlots":1,"returnSlots":0},"fun_addVault":{"entryPoint":5174,"id":19411,"parameterSlots":1,"returnSlots":0},"fun_addVault_inner":{"entryPoint":4734,"id":null,"parameterSlots":1,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":8975,"id":19340,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":9964,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":10311,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":9405,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":8643,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":8765,"id":562,"parameterSlots":0,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":10466,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":10191,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getAllVaults":{"entryPoint":6344,"id":19421,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":9785,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":9675,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":9639,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getVaultAsset":{"entryPoint":6984,"id":19474,"parameterSlots":1,"returnSlots":1},"fun_getVaultType0ByAsset":{"entryPoint":8612,"id":19504,"parameterSlots":1,"returnSlots":1},"fun_getVaultType1ByAssets":{"entryPoint":5410,"id":19491,"parameterSlots":2,"returnSlots":1},"fun_getVaultsByAsset":{"entryPoint":3725,"id":19615,"parameterSlots":1,"returnSlots":1},"fun_getVaultsCount":{"entryPoint":6369,"id":19431,"parameterSlots":0,"returnSlots":1},"fun_initialize":{"entryPoint":6914,"id":19314,"parameterSlots":1,"returnSlots":0},"fun_initialize_inner":{"entryPoint":6876,"id":null,"parameterSlots":1,"returnSlots":0},"fun_isInitializing":{"entryPoint":10513,"id":438,"parameterSlots":0,"returnSlots":1},"fun_msgSender":{"entryPoint":9772,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_owner":{"entryPoint":5497,"id":105,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":5349,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":5337,"id":null,"parameterSlots":1,"returnSlots":1},"fun_reinitialize":{"entryPoint":6158,"id":19331,"parameterSlots":2,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":6135,"id":null,"parameterSlots":2,"returnSlots":0},"fun_removeVault":{"entryPoint":8457,"id":19743,"parameterSlots":1,"returnSlots":0},"fun_removeVault_inner":{"entryPoint":7499,"id":null,"parameterSlots":1,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":5487,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":5468,"id":null,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":10707,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":10194,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership":{"entryPoint":8601,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":8487,"id":null,"parameterSlots":1,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":9827,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":9087,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":5226,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":5205,"id":null,"parameterSlots":2,"returnSlots":0},"fun_vaultExist":{"entryPoint":3236,"id":19647,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":10543,"id":2889,"parameterSlots":3,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":2675,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_allVaults":{"entryPoint":2273,"id":19272,"parameterSlots":1,"returnSlots":1},"getter_fun_getVaultType0":{"entryPoint":938,"id":19279,"parameterSlots":1,"returnSlots":1},"getter_fun_getVaultType1":{"entryPoint":2444,"id":19285,"parameterSlots":2,"returnSlots":1},"getter_fun_registry":{"entryPoint":1795,"id":19275,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":794,"id":null,"parameterSlots":1,"returnSlots":1},"increment_uint256":{"entryPoint":3653,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint256":{"entryPoint":3221,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_address_of_address":{"entryPoint":849,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_address_of_address":{"entryPoint":2422,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":3562,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":6495,"id":302,"parameterSlots":1,"returnSlots":0},"modifier_notDelegated":{"entryPoint":5242,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":10047,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":9731,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":9711,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":5450,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":8468,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_19337":{"entryPoint":8964,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_19345":{"entryPoint":4197,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_19652":{"entryPoint":7331,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":5185,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":5827,"id":349,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":3608,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":7387,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2175,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1124,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":4566,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":5758,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":6100,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":5675,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":3712,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_offset_address":{"entryPoint":6179,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":924,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_contract_IBaluniV1Registry":{"entryPoint":1781,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":5397,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":5559,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":5605,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":4383,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":1106,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":3182,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":1110,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":384,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":376,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":380,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":3546,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":1114,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":4656,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":3495,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":5710,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":4506,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":5372,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":5527,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":364,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":871,"id":null,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_address_dyn":{"entryPoint":2233,"id":null,"parameterSlots":2,"returnSlots":2},"storage_array_index_access_address_dyn_ptr":{"entryPoint":4466,"id":null,"parameterSlots":2,"returnSlots":2},"storage_set_to_zero_address":{"entryPoint":7432,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":2589,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7510511c72bfe0cca9302d42db6cb14a9ff3bc6071674c6a36f4798a31a6f98d":{"entryPoint":4256,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_8_shift":{"entryPoint":5618,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_dynamic20":{"entryPoint":4510,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":5716,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":4661,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_address_to_address":{"entryPoint":4569,"id":null,"parameterSlots":3,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":4702,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":5761,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":6103,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":5678,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":425,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":9022,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":2110,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":1975,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_address":{"entryPoint":3594,"id":null,"parameterSlots":2,"returnSlots":0},"zero_memory_chunk_address":{"entryPoint":3415,"id":null,"parameterSlots":2,"returnSlots":0},"zero_value_for_split_address":{"entryPoint":5368,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_array_address_dyn":{"entryPoint":3358,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":3186,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":10397,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":5238,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":6365,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":8782},{"length":32,"start":8915},{"length":32,"start":9422}]},"linkReferences":{},"object":"60806040526004361015610013575b610c6e565b61001d5f3561016c565b806302b3537d1461016757806310894052146101625780631f844a4c1461015d578063256b5a02146101585780634f1ef2861461015357806352d1902d1461014e578063592717af14610149578063715018a6146101445780637b1039991461013f5780638da5cb5b1461013a5780638f2248bc146101355780639094a91e1461013057806397331bf91461012b578063a14eb08514610126578063ad3cb1cc14610121578063b9b658db1461011c578063c4d66de814610117578063ca9d67c814610112578063ceb68c231461010d578063f2fde38b146101085763f76932270361000e57610c39565b610c06565b610bd3565b610b9e565b610b6b565b610b36565b610adf565b6109ad565b610941565b61090c565b610807565b610775565b610740565b610691565b61065b565b6105f9565b61059b565b61041f565b6103e5565b6102e5565b610211565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6101a690610184565b90565b6101b28161019d565b036101b957565b5f80fd5b905035906101ca826101a9565b565b906020828203126101e5576101e2915f016101bd565b90565b61017c565b151590565b6101f8906101ea565b9052565b919061020f905f602085019401906101ef565b565b346102415761023d61022c6102273660046101cc565b610ca4565b610234610172565b918291826101fc565b0390f35b610178565b5190565b60209181520190565b60200190565b6102629061019d565b9052565b9061027381602093610259565b0190565b60200190565b9061029a61029461028d84610246565b809361024a565b92610253565b905f5b8181106102aa5750505090565b9091926102c36102bd6001928651610266565b94610277565b910191909161029d565b6102e29160208201915f81840391015261027d565b90565b34610315576103116103006102fb3660046101cc565b610e8d565b610308610172565b918291826102cd565b0390f35b610178565b90565b61033161032c61033692610184565b61031a565b610184565b90565b6103429061031d565b90565b61034e90610339565b90565b9061035b90610345565b5f5260205260405f2090565b1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6103949060086103999302610367565b61036b565b90565b906103a79154610384565b90565b6103c0906103bb6002915f92610351565b61039c565b90565b6103cc9061019d565b9052565b91906103e3905f602085019401906103c3565b565b34610415576104116104006103fb3660046101cc565b6103aa565b610408610172565b918291826103d0565b0390f35b610178565b5f0190565b3461044d576104376104323660046101cc565b611436565b61043f610172565b806104498161041a565b0390f35b610178565b5f80fd5b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061049b9061045a565b810190811067ffffffffffffffff8211176104b557604052565b610464565b906104cd6104c6610172565b9283610491565b565b67ffffffffffffffff81116104ed576104e960209161045a565b0190565b610464565b90825f939282370152565b9092919261051261050d826104cf565b6104ba565b9381855260208501908284011161052e5761052c926104f2565b565b610456565b9080601f830112156105515781602061054e933591016104fd565b90565b610452565b9190916040818403126105965761056f835f83016101bd565b92602082013567ffffffffffffffff81116105915761058e9201610533565b90565b610180565b61017c565b6105af6105a9366004610556565b9061146a565b6105b7610172565b806105c18161041a565b0390f35b5f9103126105cf57565b61017c565b90565b6105e0906105d4565b9052565b91906105f7905f602085019401906105d7565b565b34610629576106093660046105c5565b6106256106146114e5565b61061c610172565b918291826105e4565b0390f35b610178565b9190604083820312610656578061064a610653925f86016101bd565b936020016101bd565b90565b61017c565b3461068c5761068861067761067136600461062e565b90611522565b61067f610172565b918291826103d0565b0390f35b610178565b346106bf576106a13660046105c5565b6106a961156f565b6106b1610172565b806106bb8161041a565b0390f35b610178565b73ffffffffffffffffffffffffffffffffffffffff1690565b6106ed9060086106f29302610367565b6106c4565b90565b9061070091546106dd565b90565b61070f60015f906106f5565b90565b61071b90610339565b90565b61072790610712565b9052565b919061073e905f6020850194019061071e565b565b34610770576107503660046105c5565b61076c61075b610703565b610763610172565b9182918261072b565b0390f35b610178565b346107a5576107853660046105c5565b6107a1610790611579565b610798610172565b918291826103d0565b0390f35b610178565b67ffffffffffffffff1690565b6107c0816107aa565b036107c757565b5f80fd5b905035906107d8826107b7565b565b919060408382031261080257806107f66107ff925f86016101bd565b936020016107cb565b90565b61017c565b346108365761082061081a3660046107da565b9061180e565b610828610172565b806108328161041a565b0390f35b610178565b90565b6108478161083b565b0361084e57565b5f80fd5b9050359061085f8261083e565b565b9060208282031261087a57610877915f01610852565b90565b61017c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5490565b5f5260205f2090565b6108c2816108ac565b8210156108dc576108d46001916108b0565b910201905f90565b61087f565b5f6108eb816108ac565b82101561090857610905916108ff916108b9565b9061039c565b90565b5f80fd5b3461093c57610938610927610922366004610861565b6108e1565b61092f610172565b918291826103d0565b0390f35b610178565b34610971576109513660046105c5565b61096d61095c6118c8565b610964610172565b918291826102cd565b0390f35b610178565b9061098090610345565b5f5260205260405f2090565b6109a56109aa926109a06003935f94610976565b610351565b61039c565b90565b346109de576109da6109c96109c336600461062e565b9061098c565b6109d1610172565b918291826103d0565b0390f35b610178565b67ffffffffffffffff8111610a01576109fd60209161045a565b0190565b610464565b90610a18610a13836109e3565b6104ba565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610a4e6005610a06565b90610a5b60208301610a1d565b565b610a65610a44565b90565b610a70610a5d565b90565b610a7b610a68565b90565b5190565b60209181520190565b90825f9392825e0152565b610ab5610abe602093610ac393610aac81610a7e565b93848093610a82565b95869101610a8b565b61045a565b0190565b610adc9160208201915f818403910152610a96565b90565b34610b0f57610aef3660046105c5565b610b0b610afa610a73565b610b02610172565b91829182610ac7565b0390f35b610178565b610b1d9061083b565b9052565b9190610b34905f60208501940190610b14565b565b34610b6657610b463660046105c5565b610b62610b516118e1565b610b59610172565b91829182610b21565b0390f35b610178565b34610b9957610b83610b7e3660046101cc565b611b02565b610b8b610172565b80610b958161041a565b0390f35b610178565b34610bce57610bca610bb9610bb43660046101cc565b611b48565b610bc1610172565b918291826102cd565b0390f35b610178565b34610c0157610beb610be63660046101cc565b612109565b610bf3610172565b80610bfd8161041a565b0390f35b610178565b34610c3457610c1e610c193660046101cc565b612199565b610c26610172565b80610c308161041a565b0390f35b610178565b34610c6957610c65610c54610c4f3660046101cc565b6121a4565b610c5c610172565b918291826103d0565b0390f35b610178565b5f80fd5b5f90565b90565b610c8d610c88610c9292610c76565b61031a565b61083b565b90565b6001610ca1910161083b565b90565b610cac610c72565b50610cb65f610c79565b5b80610cd2610ccc610cc75f6108ac565b61083b565b9161083b565b1015610d1857610cec610ce65f83906108b9565b9061039c565b610cfe610cf88461019d565b9161019d565b14610d1157610d0c90610c95565b610cb7565b5050600190565b50505f90565b606090565b67ffffffffffffffff8111610d3b5760208091020190565b610464565b90610d52610d4d83610d23565b6104ba565b918252565b369037565b90610d81610d6983610d40565b92602080610d778693610d23565b9201910390610d57565b565b610d8c9061031d565b90565b610d9890610d83565b90565b610da490610339565b90565b60e01b90565b90505190610dba826101a9565b565b90602082820312610dd557610dd2915f01610dad565b90565b61017c565b610de2610172565b3d5f823e3d90fd5b90610df482610246565b811015610e05576020809102010190565b61087f565b90610e149061019d565b9052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610e4e9061083b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e7b5760010190565b610e18565b610e8a905161019d565b90565b610e95610d1e565b50610ea7610ea25f6108ac565b610d5c565b91610eb15f610c79565b92610ebb5f610c79565b5b80610ed7610ed1610ecc5f6108ac565b61083b565b9161083b565b101561105c57610ef9610ef4610eee5f84906108b9565b9061039c565b610d8f565b610f1d6020610f0783610d9b565b63cdf456e190610f15610172565b938492610da7565b82528180610f2d6004820161041a565b03915afa908115611057575f91611029575b50610f52610f4c8761019d565b9161019d565b14610ff5575084610f73610f6d610f6885610246565b61083b565b9161083b565b14610f8657610f8190610c95565b610ebc565b509091505b610f9483610d5c565b91610f9e5f610c79565b5b80610fb2610fac8761083b565b9161083b565b1015610fee57610fe990610fe4610fd2610fcd868490610dea565b610e80565b610fdf8791849092610dea565b610e0a565b610c95565b610f9f565b5092505090565b61102393945061101e915061100c90959295610d9b565b6110198691849092610dea565b610e0a565b610e45565b91610f8b565b61104a915060203d8111611050575b6110428183610491565b810190610dbc565b5f610f3f565b503d611038565b610dda565b50909150610f8b565b611076906110716121c3565b61127e565b565b61108c61108761109192610c76565b61031a565b610184565b90565b61109d90611078565b90565b60207f756c745f41444452455353000000000000000000000000000000000000000000917f42616c756e6956315661756c74466163746f72793a20494e56414c49445f76615f8201520152565b6110fa602b604092610a82565b611103816110a0565b0190565b61111c9060208101905f8183039101526110ed565b90565b1561112657565b61112e610172565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061115e60048201611107565b0390fd5b90565b5f5260205f2090565b5490565b61117b8161116e565b8210156111955761118d600191611165565b910201905f90565b61087f565b1b90565b919060086111cc9102916111c673ffffffffffffffffffffffffffffffffffffffff8461119a565b9261119a565b9181191691161790565b90565b91906111ef6111ea6111f793610345565b6111d6565b90835461119e565b9055565b908154916801000000000000000083101561122b578261122391600161122995018155611172565b906111d9565b565b610464565b5f1b90565b9061125473ffffffffffffffffffffffffffffffffffffffff91611230565b9181191691161790565b9061127361126e61127a92610345565b6111d6565b8254611235565b9055565b6112a38161129c6112966112915f611094565b61019d565b9161019d565b141561111f565b6112b66112af5f611162565b82906111fb565b6112e260206112cc6112c784610d8f565b610d9b565b63cdf456e1906112da610172565b938492610da7565b825281806112f26004820161041a565b03915afa908115611431575f91611403575b50611331602061131b61131685610d8f565b610d9b565b63fdf262b790611329610172565b938492610da7565b825281806113416004820161041a565b03915afa9081156113fe575f916113d0575b508061136f6113696113645f611094565b61019d565b9161019d565b145f1461138e575061138661138b92916002610351565b61125e565b5b565b906113c6906113c1846113b96113cb966113b46113ad60038790610976565b8890610351565b61125e565b936003610976565b610351565b61125e565b61138c565b6113f1915060203d81116113f7575b6113e98183610491565b810190610dbc565b5f611353565b503d6113df565b610dda565b611424915060203d811161142a575b61141c8183610491565b810190610dbc565b5f611304565b503d611412565b610dda565b61143f90611065565b565b906114539161144e61223d565b611455565b565b90611468916114638161230f565b61237f565b565b9061147491611441565b565b5f90565b61148b906114866124bd565b6114d9565b90565b90565b6114a56114a06114aa9261148e565b611230565b6105d4565b90565b6114d67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc611491565b90565b506114e26114ad565b90565b6114f56114f0611476565b61147a565b90565b5f90565b5f1c90565b61150d611512916114fc565b61036b565b90565b61151f9054611501565b90565b6115479161153d611542926115356114f8565b506003610976565b610351565b611515565b90565b6115526121c3565b61155a61155c565b565b61156d6115685f611094565b61253b565b565b61157761154a565b565b6115816114f8565b506115945f61158e6125a7565b01611515565b90565b60401c90565b60ff1690565b6115af6115b491611597565b61159d565b90565b6115c190546115a3565b90565b67ffffffffffffffff1690565b6115dd6115e2916114fc565b6115c4565b90565b6115ef90546115d1565b90565b9061160567ffffffffffffffff91611230565b9181191691161790565b61162361161e611628926107aa565b61031a565b6107aa565b90565b90565b9061164361163e61164a9261160f565b61162b565b82546115f2565b9055565b60401b90565b9061166868ff00000000000000009161164e565b9181191691161790565b61167b906101ea565b90565b90565b9061169661169161169d92611672565b61167e565b8254611654565b9055565b6116aa906107aa565b9052565b91906116c1905f602085019401906116a1565b565b9080916116ce6125cb565b906116da5f83016115b7565b801561178b575b61174f576117149261170b916116f9865f860161162e565b61170660015f8601611681565b6117f7565b5f809101611681565b61174a7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611741610172565b918291826116ae565b0390a1565b611757610172565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806117876004820161041a565b0390fd5b506117975f83016115e5565b6117a96117a3866107aa565b916107aa565b10156116e1565b6117b99061031d565b90565b6117c5906117b0565b90565b6117d1906117b0565b90565b90565b906117ec6117e76117f3926117c8565b6117d4565b8254611235565b9055565b61180c9150611805906117bc565b60016117d7565b565b90611818916116c3565b565b60209181520190565b61182d9054611501565b90565b60010190565b9061185361184d611846846108ac565b809361181a565b926108b0565b905f5b8181106118635750505090565b90919261188361187d60019261187887611823565b610266565b94611830565b9101919091611856565b9061189791611836565b90565b906118ba6118b3926118aa610172565b9384809261188d565b0383610491565b565b6118c59061189a565b90565b6118d0610d1e565b506118da5f6118bc565b90565b5f90565b6118e96118dd565b506118f35f6108ac565b90565b61190a61190561190f92610c76565b61031a565b6107aa565b90565b90565b61192961192461192e92611912565b61031a565b6107aa565b90565b61193a90610339565b90565b61194690611915565b9052565b919061195d905f6020850194019061193d565b565b6119676125cb565b9061197c6119765f84016115b7565b156101ea565b906119885f84016115e5565b8061199b6119955f6118f6565b916107aa565b1480611ad5575b906119b66119b06001611915565b916107aa565b1480611aad575b6119c89091156101ea565b9081611a9c575b50611a60576119f8906119ed6119e56001611915565b5f860161162e565b82611a4e575b611adc565b611a00575b50565b611a0d905f809101611681565b6001611a457fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291611a3c610172565b9182918261194a565b0390a15f6119fd565b611a5b60015f8601611681565b6119f3565b611a68610172565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280611a986004820161041a565b0390fd5b611aa79150156101ea565b5f6119cf565b506119c8611aba30611931565b3b611acd611ac75f610c79565b9161083b565b1490506119bd565b50826119a2565b611af9611b0091611aeb6125f9565b611af433612621565b6117bc565b60016117d7565b565b611b0b9061195f565b565b90565b611b24611b1f611b2992611b0d565b61031a565b61083b565b90565b611b40611b3b611b4592611912565b61031a565b61083b565b90565b611b50610d1e565b50611b90611b66611b616002611b10565b610d5c565b916020611b7a611b7583610d8f565b610d9b565b63cdf456e190611b88610172565b948592610da7565b82528180611ba06004820161041a565b03915afa918215611c9e57611be1602092611bdc611bfc95611be6945f91611c71575b50611bd788611bd15f610c79565b90610dea565b610e0a565b610d8f565b610d9b565b63fdf262b790611bf4610172565b938492610da7565b82528180611c0c6004820161041a565b03915afa8015611c6c57611c3b915f91611c3e575b50611c3683611c306001611b2c565b90610dea565b610e0a565b90565b611c5f915060203d8111611c65575b611c578183610491565b810190610dbc565b5f611c21565b503d611c4d565b610dda565b611c919150863d8111611c97575b611c898183610491565b810190610dbc565b5f611bc3565b503d611c7f565b610dda565b611cb490611caf6121c3565b611d4b565b565b611cc5611ccb9193929361083b565b9261083b565b8203918211611cd657565b610e18565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b611d1a91611d146114f8565b916111d9565b565b611d258161116e565b8015611d46576001900390611d43611d3d8383611172565b90611d08565b55565b611cdb565b611d545f610c79565b5b80611d70611d6a611d655f6108ac565b61083b565b9161083b565b101561210257611d8a611d845f83906108b9565b9061039c565b611d9c611d968461019d565b9161019d565b14611daf57611daa90610c95565b611d55565b611df290611dec611de5611ddf5f611dd9611dc95f6108ac565b611dd36001611b2c565b90611cb6565b906108b9565b9061039c565b915f6108b9565b906111d9565b611dfb5f611094565b600290611e2a6020611e14611e0f86610d8f565b610d9b565b63cdf456e190611e22610172565b938492610da7565b82528180611e3a6004820161041a565b03915afa80156120fd57611e5e93611e59925f926120cd575b50610351565b61125e565b611e675f611094565b611e9560036020611e7f611e7a86610d8f565b610d9b565b63fdf262b790611e8d610172565b948592610da7565b82528180611ea56004820161041a565b03915afa9081156120c857611ec1925f92612098575b50610976565b90611eee6020611ed8611ed386610d8f565b610d9b565b63cdf456e190611ee6610172565b938492610da7565b82528180611efe6004820161041a565b03915afa801561209357611f2293611f1d925f92612063575b50610351565b61125e565b611f2b5f611094565b6003611f596020611f43611f3e86610d8f565b610d9b565b63cdf456e190611f51610172565b938492610da7565b82528180611f696004820161041a565b03915afa801561205e57611f97611f91611f9c92611fb2956020955f9261202f575b50610976565b95610d8f565b610d9b565b63fdf262b790611faa610172565b938492610da7565b82528180611fc26004820161041a565b03915afa801561202a57611fe693611fe1925f92611ffa575b50610351565b61125e565b611ff7611ff25f611162565b611d1c565b5b565b61201c91925060203d8111612023575b6120148183610491565b810190610dbc565b905f611fdb565b503d61200a565b610dda565b612050919250863d8111612057575b6120488183610491565b810190610dbc565b905f611f8b565b503d61203e565b610dda565b61208591925060203d811161208c575b61207d8183610491565b810190610dbc565b905f611f17565b503d612073565b610dda565b6120ba91925060203d81116120c1575b6120b28183610491565b810190610dbc565b905f611ebb565b503d6120a8565b610dda565b6120ef91925060203d81116120f6575b6120e78183610491565b810190610dbc565b905f611e53565b503d6120dd565b610dda565b5050611ff8565b61211290611ca3565b565b612125906121206121c3565b612127565b565b8061214261213c6121375f611094565b61019d565b9161019d565b14612152576121509061253b565b565b61219561215e5f611094565b612166610172565b9182917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b6121a290612114565b565b6121bb6121c0916121b36114f8565b506002610351565b611515565b90565b6121cb611579565b6121e46121de6121d961262c565b61019d565b9161019d565b036121eb57565b61222d6121f661262c565b6121fe610172565b9182917f118cdaa7000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b61223a90610339565b90565b61224630612231565b6122786122727f000000000000000000000000000000000000000000000000000000000000000061019d565b9161019d565b1480156122c2575b61228657565b61228e610172565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806122be6004820161041a565b0390fd5b506122cb612639565b6122fd6122f77f000000000000000000000000000000000000000000000000000000000000000061019d565b9161019d565b1415612280565b5061230d6121c3565b565b61231890612304565b565b6123239061031d565b90565b61232f9061231a565b90565b61233b90610339565b90565b612347816105d4565b0361234e57565b5f80fd5b9050519061235f8261233e565b565b9060208282031261237a57612377915f01612352565b90565b61017c565b91906123ad602061239761239286612326565b612332565b6352d1902d906123a5610172565b938492610da7565b825281806123bd6004820161041a565b03915afa80915f9261248d575b50155f1461241e5750509060016123df57505b565b61241a906123eb610172565b9182917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b928361243961243361242e6114ad565b6105d4565b916105d4565b0361244e57612449929350612663565b6123dd565b6124898461245a610172565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016105e4565b0390fd5b6124af91925060203d81116124b6575b6124a78183610491565b810190612361565b905f6123ca565b503d61249d565b6124c630612231565b6124f86124f27f000000000000000000000000000000000000000000000000000000000000000061019d565b9161019d565b036124ff57565b612507610172565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806125376004820161041a565b0390fd5b6125436125a7565b61255b6125515f8301611515565b915f84910161125e565b9061258f6125897f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610345565b91610345565b91612598610172565b806125a28161041a565b0390a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6125f76126ec565b565b6126016125ef565b565b6126149061260f6126ec565b612616565b565b61261f906127c4565b565b61262a90612603565b565b6126346114f8565b503390565b6126416114f8565b5061265c5f6126566126516114ad565b6127cf565b01611515565b90565b5190565b9061266d826127d2565b816126987fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610345565b906126a1610172565b806126ab8161041a565b0390a26126b78161265f565b6126c96126c35f610c79565b9161083b565b115f146126dd576126d9916128e2565b505b565b50506126e7612847565b6126db565b6126fd6126f7612911565b156101ea565b61270357565b61270b610172565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000081528061273b6004820161041a565b0390fd5b6127509061274b6126ec565b612752565b565b8061276d6127676127625f611094565b61019d565b9161019d565b1461277d5761277b9061253b565b565b6127c06127895f611094565b612791610172565b9182917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b6127cd9061273f565b565b90565b803b6127e66127e05f610c79565b9161083b565b1461280857612806905f6128006127fb6114ad565b6127cf565b0161125e565b565b61284390612814610172565b9182917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b3461285a6128545f610c79565b9161083b565b1161286157565b612869610172565b7fb398979f000000000000000000000000000000000000000000000000000000008152806128996004820161041a565b0390fd5b606090565b906128b46128af836104cf565b6104ba565b918252565b3d5f146128d4576128c93d6128a2565b903d5f602084013e5b565b6128dc61289d565b906128d2565b5f8061290e936128f061289d565b508390602081019051915af4906129056128b9565b9091909161292f565b90565b612919610c72565b5061292c5f6129266125cb565b016115b7565b90565b906129439061293c61289d565b50156101ea565b5f1461294f57506129d3565b6129588261265f565b61296a6129645f610c79565b9161083b565b14806129b8575b612979575090565b6129b490612985610172565b9182917f9996b315000000000000000000000000000000000000000000000000000000008352600483016103d0565b0390fd5b50803b6129cd6129c75f610c79565b9161083b565b14612971565b6129dc8161265f565b6129ee6129e85f610c79565b9161083b565b115f146129fd57805190602001fd5b612a05610172565b7f1425ea4200000000000000000000000000000000000000000000000000000000815280612a356004820161041a565b0390fdfea26469706673582212209bc8fd3e4e25f516c0b2ff472c250d13fd5b5ba4bd31f4eeae401f6ff016763d64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xC6E JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x2B3537D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x10894052 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0x1F844A4C EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x256B5A02 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x592717AF EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x8F2248BC EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x9094A91E EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0x97331BF9 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0xA14EB085 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xB9B658DB EQ PUSH2 0x11C JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0xCA9D67C8 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xCEB68C23 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x108 JUMPI PUSH4 0xF7693227 SUB PUSH2 0xE JUMPI PUSH2 0xC39 JUMP JUMPDEST PUSH2 0xC06 JUMP JUMPDEST PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0xB9E JUMP JUMPDEST PUSH2 0xB6B JUMP JUMPDEST PUSH2 0xB36 JUMP JUMPDEST PUSH2 0xADF JUMP JUMPDEST PUSH2 0x9AD JUMP JUMPDEST PUSH2 0x941 JUMP JUMPDEST PUSH2 0x90C JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST PUSH2 0x775 JUMP JUMPDEST PUSH2 0x740 JUMP JUMPDEST PUSH2 0x691 JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH2 0x5F9 JUMP JUMPDEST PUSH2 0x59B JUMP JUMPDEST PUSH2 0x41F JUMP JUMPDEST PUSH2 0x3E5 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH2 0x211 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1A6 SWAP1 PUSH2 0x184 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B2 DUP2 PUSH2 0x19D JUMP JUMPDEST SUB PUSH2 0x1B9 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x1CA DUP3 PUSH2 0x1A9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E5 JUMPI PUSH2 0x1E2 SWAP2 PUSH0 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1F8 SWAP1 PUSH2 0x1EA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x20F SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x1EF JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x241 JUMPI PUSH2 0x23D PUSH2 0x22C PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0xCA4 JUMP JUMPDEST PUSH2 0x234 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1FC JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x262 SWAP1 PUSH2 0x19D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x273 DUP2 PUSH1 0x20 SWAP4 PUSH2 0x259 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x29A PUSH2 0x294 PUSH2 0x28D DUP5 PUSH2 0x246 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x24A JUMP JUMPDEST SWAP3 PUSH2 0x253 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x2AA JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x2C3 PUSH2 0x2BD PUSH1 0x1 SWAP3 DUP7 MLOAD PUSH2 0x266 JUMP JUMPDEST SWAP5 PUSH2 0x277 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x29D JUMP JUMPDEST PUSH2 0x2E2 SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x27D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x315 JUMPI PUSH2 0x311 PUSH2 0x300 PUSH2 0x2FB CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0xE8D JUMP JUMPDEST PUSH2 0x308 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2CD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x331 PUSH2 0x32C PUSH2 0x336 SWAP3 PUSH2 0x184 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x342 SWAP1 PUSH2 0x31D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x34E SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x35B SWAP1 PUSH2 0x345 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x394 SWAP1 PUSH1 0x8 PUSH2 0x399 SWAP4 MUL PUSH2 0x367 JUMP JUMPDEST PUSH2 0x36B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3A7 SWAP2 SLOAD PUSH2 0x384 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3C0 SWAP1 PUSH2 0x3BB PUSH1 0x2 SWAP2 PUSH0 SWAP3 PUSH2 0x351 JUMP JUMPDEST PUSH2 0x39C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3CC SWAP1 PUSH2 0x19D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x3E3 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3C3 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x415 JUMPI PUSH2 0x411 PUSH2 0x400 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x408 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x44D JUMPI PUSH2 0x437 PUSH2 0x432 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x1436 JUMP JUMPDEST PUSH2 0x43F PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x449 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x49B SWAP1 PUSH2 0x45A JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x4B5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 PUSH2 0x4CD PUSH2 0x4C6 PUSH2 0x172 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x491 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4ED JUMPI PUSH2 0x4E9 PUSH1 0x20 SWAP2 PUSH2 0x45A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x512 PUSH2 0x50D DUP3 PUSH2 0x4CF JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x52E JUMPI PUSH2 0x52C SWAP3 PUSH2 0x4F2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x456 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x551 JUMPI DUP2 PUSH1 0x20 PUSH2 0x54E SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4FD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x596 JUMPI PUSH2 0x56F DUP4 PUSH0 DUP4 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x591 JUMPI PUSH2 0x58E SWAP3 ADD PUSH2 0x533 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x180 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST PUSH2 0x5AF PUSH2 0x5A9 CALLDATASIZE PUSH1 0x4 PUSH2 0x556 JUMP JUMPDEST SWAP1 PUSH2 0x146A JUMP JUMPDEST PUSH2 0x5B7 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x5C1 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x5CF JUMPI JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E0 SWAP1 PUSH2 0x5D4 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5F7 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x5D7 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x629 JUMPI PUSH2 0x609 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x625 PUSH2 0x614 PUSH2 0x14E5 JUMP JUMPDEST PUSH2 0x61C PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x5E4 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x656 JUMPI DUP1 PUSH2 0x64A PUSH2 0x653 SWAP3 PUSH0 DUP7 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST CALLVALUE PUSH2 0x68C JUMPI PUSH2 0x688 PUSH2 0x677 PUSH2 0x671 CALLDATASIZE PUSH1 0x4 PUSH2 0x62E JUMP JUMPDEST SWAP1 PUSH2 0x1522 JUMP JUMPDEST PUSH2 0x67F PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0x6BF JUMPI PUSH2 0x6A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x6A9 PUSH2 0x156F JUMP JUMPDEST PUSH2 0x6B1 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x6BB DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x6ED SWAP1 PUSH1 0x8 PUSH2 0x6F2 SWAP4 MUL PUSH2 0x367 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x700 SWAP2 SLOAD PUSH2 0x6DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x70F PUSH1 0x1 PUSH0 SWAP1 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x71B SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x727 SWAP1 PUSH2 0x712 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x73E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x71E JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x770 JUMPI PUSH2 0x750 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x76C PUSH2 0x75B PUSH2 0x703 JUMP JUMPDEST PUSH2 0x763 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x72B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0x7A5 JUMPI PUSH2 0x785 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x7A1 PUSH2 0x790 PUSH2 0x1579 JUMP JUMPDEST PUSH2 0x798 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7C0 DUP2 PUSH2 0x7AA JUMP JUMPDEST SUB PUSH2 0x7C7 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x7D8 DUP3 PUSH2 0x7B7 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x802 JUMPI DUP1 PUSH2 0x7F6 PUSH2 0x7FF SWAP3 PUSH0 DUP7 ADD PUSH2 0x1BD JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x7CB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST CALLVALUE PUSH2 0x836 JUMPI PUSH2 0x820 PUSH2 0x81A CALLDATASIZE PUSH1 0x4 PUSH2 0x7DA JUMP JUMPDEST SWAP1 PUSH2 0x180E JUMP JUMPDEST PUSH2 0x828 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x832 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x847 DUP2 PUSH2 0x83B JUMP JUMPDEST SUB PUSH2 0x84E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x85F DUP3 PUSH2 0x83E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x87A JUMPI PUSH2 0x877 SWAP2 PUSH0 ADD PUSH2 0x852 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x8C2 DUP2 PUSH2 0x8AC JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x8DC JUMPI PUSH2 0x8D4 PUSH1 0x1 SWAP2 PUSH2 0x8B0 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH0 PUSH2 0x8EB DUP2 PUSH2 0x8AC JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x908 JUMPI PUSH2 0x905 SWAP2 PUSH2 0x8FF SWAP2 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x93C JUMPI PUSH2 0x938 PUSH2 0x927 PUSH2 0x922 CALLDATASIZE PUSH1 0x4 PUSH2 0x861 JUMP JUMPDEST PUSH2 0x8E1 JUMP JUMPDEST PUSH2 0x92F PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0x971 JUMPI PUSH2 0x951 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x96D PUSH2 0x95C PUSH2 0x18C8 JUMP JUMPDEST PUSH2 0x964 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2CD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST SWAP1 PUSH2 0x980 SWAP1 PUSH2 0x345 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x9A5 PUSH2 0x9AA SWAP3 PUSH2 0x9A0 PUSH1 0x3 SWAP4 PUSH0 SWAP5 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x351 JUMP JUMPDEST PUSH2 0x39C JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x9DE JUMPI PUSH2 0x9DA PUSH2 0x9C9 PUSH2 0x9C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x62E JUMP JUMPDEST SWAP1 PUSH2 0x98C JUMP JUMPDEST PUSH2 0x9D1 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA01 JUMPI PUSH2 0x9FD PUSH1 0x20 SWAP2 PUSH2 0x45A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 PUSH2 0xA18 PUSH2 0xA13 DUP4 PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xA4E PUSH1 0x5 PUSH2 0xA06 JUMP JUMPDEST SWAP1 PUSH2 0xA5B PUSH1 0x20 DUP4 ADD PUSH2 0xA1D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA65 PUSH2 0xA44 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA70 PUSH2 0xA5D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xA7B PUSH2 0xA68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH2 0xAB5 PUSH2 0xABE PUSH1 0x20 SWAP4 PUSH2 0xAC3 SWAP4 PUSH2 0xAAC DUP2 PUSH2 0xA7E JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0xA82 JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x45A JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0xADC SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xA96 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xB0F JUMPI PUSH2 0xAEF CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0xB0B PUSH2 0xAFA PUSH2 0xA73 JUMP JUMPDEST PUSH2 0xB02 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xAC7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH2 0xB1D SWAP1 PUSH2 0x83B JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xB34 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xB14 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xB66 JUMPI PUSH2 0xB46 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0xB62 PUSH2 0xB51 PUSH2 0x18E1 JUMP JUMPDEST PUSH2 0xB59 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB21 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xB99 JUMPI PUSH2 0xB83 PUSH2 0xB7E CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x1B02 JUMP JUMPDEST PUSH2 0xB8B PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0xB95 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xBCE JUMPI PUSH2 0xBCA PUSH2 0xBB9 PUSH2 0xBB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x1B48 JUMP JUMPDEST PUSH2 0xBC1 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2CD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xC01 JUMPI PUSH2 0xBEB PUSH2 0xBE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x2109 JUMP JUMPDEST PUSH2 0xBF3 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0xBFD DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xC34 JUMPI PUSH2 0xC1E PUSH2 0xC19 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x2199 JUMP JUMPDEST PUSH2 0xC26 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0xC30 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST CALLVALUE PUSH2 0xC69 JUMPI PUSH2 0xC65 PUSH2 0xC54 PUSH2 0xC4F CALLDATASIZE PUSH1 0x4 PUSH2 0x1CC JUMP JUMPDEST PUSH2 0x21A4 JUMP JUMPDEST PUSH2 0xC5C PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xC8D PUSH2 0xC88 PUSH2 0xC92 SWAP3 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xCA1 SWAP2 ADD PUSH2 0x83B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCAC PUSH2 0xC72 JUMP JUMPDEST POP PUSH2 0xCB6 PUSH0 PUSH2 0xC79 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xCD2 PUSH2 0xCCC PUSH2 0xCC7 PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST LT ISZERO PUSH2 0xD18 JUMPI PUSH2 0xCEC PUSH2 0xCE6 PUSH0 DUP4 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH2 0xCFE PUSH2 0xCF8 DUP5 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0xD11 JUMPI PUSH2 0xD0C SWAP1 PUSH2 0xC95 JUMP JUMPDEST PUSH2 0xCB7 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD3B JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 PUSH2 0xD52 PUSH2 0xD4D DUP4 PUSH2 0xD23 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 CALLDATACOPY JUMP JUMPDEST SWAP1 PUSH2 0xD81 PUSH2 0xD69 DUP4 PUSH2 0xD40 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP1 PUSH2 0xD77 DUP7 SWAP4 PUSH2 0xD23 JUMP JUMPDEST SWAP3 ADD SWAP2 SUB SWAP1 PUSH2 0xD57 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xD8C SWAP1 PUSH2 0x31D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD98 SWAP1 PUSH2 0xD83 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xDA4 SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0xDBA DUP3 PUSH2 0x1A9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0xDD5 JUMPI PUSH2 0xDD2 SWAP2 PUSH0 ADD PUSH2 0xDAD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST PUSH2 0xDE2 PUSH2 0x172 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH2 0xDF4 DUP3 PUSH2 0x246 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x20 DUP1 SWAP2 MUL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST SWAP1 PUSH2 0xE14 SWAP1 PUSH2 0x19D JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xE4E SWAP1 PUSH2 0x83B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xE7B JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0xE18 JUMP JUMPDEST PUSH2 0xE8A SWAP1 MLOAD PUSH2 0x19D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE95 PUSH2 0xD1E JUMP JUMPDEST POP PUSH2 0xEA7 PUSH2 0xEA2 PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0xD5C JUMP JUMPDEST SWAP2 PUSH2 0xEB1 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP3 PUSH2 0xEBB PUSH0 PUSH2 0xC79 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xED7 PUSH2 0xED1 PUSH2 0xECC PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST LT ISZERO PUSH2 0x105C JUMPI PUSH2 0xEF9 PUSH2 0xEF4 PUSH2 0xEEE PUSH0 DUP5 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xF1D PUSH1 0x20 PUSH2 0xF07 DUP4 PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0xF15 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0xF2D PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1057 JUMPI PUSH0 SWAP2 PUSH2 0x1029 JUMPI JUMPDEST POP PUSH2 0xF52 PUSH2 0xF4C DUP8 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0xFF5 JUMPI POP DUP5 PUSH2 0xF73 PUSH2 0xF6D PUSH2 0xF68 DUP6 PUSH2 0x246 JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ PUSH2 0xF86 JUMPI PUSH2 0xF81 SWAP1 PUSH2 0xC95 JUMP JUMPDEST PUSH2 0xEBC JUMP JUMPDEST POP SWAP1 SWAP2 POP JUMPDEST PUSH2 0xF94 DUP4 PUSH2 0xD5C JUMP JUMPDEST SWAP2 PUSH2 0xF9E PUSH0 PUSH2 0xC79 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFB2 PUSH2 0xFAC DUP8 PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST LT ISZERO PUSH2 0xFEE JUMPI PUSH2 0xFE9 SWAP1 PUSH2 0xFE4 PUSH2 0xFD2 PUSH2 0xFCD DUP7 DUP5 SWAP1 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE80 JUMP JUMPDEST PUSH2 0xFDF DUP8 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE0A JUMP JUMPDEST PUSH2 0xC95 JUMP JUMPDEST PUSH2 0xF9F JUMP JUMPDEST POP SWAP3 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1023 SWAP4 SWAP5 POP PUSH2 0x101E SWAP2 POP PUSH2 0x100C SWAP1 SWAP6 SWAP3 SWAP6 PUSH2 0xD9B JUMP JUMPDEST PUSH2 0x1019 DUP7 SWAP2 DUP5 SWAP1 SWAP3 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE0A JUMP JUMPDEST PUSH2 0xE45 JUMP JUMPDEST SWAP2 PUSH2 0xF8B JUMP JUMPDEST PUSH2 0x104A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1050 JUMPI JUMPDEST PUSH2 0x1042 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0xF3F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1038 JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST POP SWAP1 SWAP2 POP PUSH2 0xF8B JUMP JUMPDEST PUSH2 0x1076 SWAP1 PUSH2 0x1071 PUSH2 0x21C3 JUMP JUMPDEST PUSH2 0x127E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x108C PUSH2 0x1087 PUSH2 0x1091 SWAP3 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x109D SWAP1 PUSH2 0x1078 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x756C745F41444452455353000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E6956315661756C74466163746F72793A20494E56414C49445F7661 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x10FA PUSH1 0x2B PUSH1 0x40 SWAP3 PUSH2 0xA82 JUMP JUMPDEST PUSH2 0x1103 DUP2 PUSH2 0x10A0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x111C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10ED JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1126 JUMPI JUMP JUMPDEST PUSH2 0x112E PUSH2 0x172 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x115E PUSH1 0x4 DUP3 ADD PUSH2 0x1107 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x117B DUP2 PUSH2 0x116E JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x1195 JUMPI PUSH2 0x118D PUSH1 0x1 SWAP2 PUSH2 0x1165 JUMP JUMPDEST SWAP2 MUL ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x11CC SWAP2 MUL SWAP2 PUSH2 0x11C6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x119A JUMP JUMPDEST SWAP3 PUSH2 0x119A JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x11EF PUSH2 0x11EA PUSH2 0x11F7 SWAP4 PUSH2 0x345 JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x119E JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP2 SLOAD SWAP2 PUSH9 0x10000000000000000 DUP4 LT ISZERO PUSH2 0x122B JUMPI DUP3 PUSH2 0x1223 SWAP2 PUSH1 0x1 PUSH2 0x1229 SWAP6 ADD DUP2 SSTORE PUSH2 0x1172 JUMP JUMPDEST SWAP1 PUSH2 0x11D9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1254 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1230 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1273 PUSH2 0x126E PUSH2 0x127A SWAP3 PUSH2 0x345 JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1235 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x12A3 DUP2 PUSH2 0x129C PUSH2 0x1296 PUSH2 0x1291 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ ISZERO PUSH2 0x111F JUMP JUMPDEST PUSH2 0x12B6 PUSH2 0x12AF PUSH0 PUSH2 0x1162 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x11FB JUMP JUMPDEST PUSH2 0x12E2 PUSH1 0x20 PUSH2 0x12CC PUSH2 0x12C7 DUP5 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x12DA PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x12F2 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1431 JUMPI PUSH0 SWAP2 PUSH2 0x1403 JUMPI JUMPDEST POP PUSH2 0x1331 PUSH1 0x20 PUSH2 0x131B PUSH2 0x1316 DUP6 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1329 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1341 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x13FE JUMPI PUSH0 SWAP2 PUSH2 0x13D0 JUMPI JUMPDEST POP DUP1 PUSH2 0x136F PUSH2 0x1369 PUSH2 0x1364 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x138E JUMPI POP PUSH2 0x1386 PUSH2 0x138B SWAP3 SWAP2 PUSH1 0x2 PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x13C6 SWAP1 PUSH2 0x13C1 DUP5 PUSH2 0x13B9 PUSH2 0x13CB SWAP7 PUSH2 0x13B4 PUSH2 0x13AD PUSH1 0x3 DUP8 SWAP1 PUSH2 0x976 JUMP JUMPDEST DUP9 SWAP1 PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST SWAP4 PUSH1 0x3 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST PUSH2 0x138C JUMP JUMPDEST PUSH2 0x13F1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x13F7 JUMPI JUMPDEST PUSH2 0x13E9 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0x1353 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x13DF JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x1424 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x142A JUMPI JUMPDEST PUSH2 0x141C DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0x1304 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1412 JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x143F SWAP1 PUSH2 0x1065 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1453 SWAP2 PUSH2 0x144E PUSH2 0x223D JUMP JUMPDEST PUSH2 0x1455 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1468 SWAP2 PUSH2 0x1463 DUP2 PUSH2 0x230F JUMP JUMPDEST PUSH2 0x237F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1474 SWAP2 PUSH2 0x1441 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x148B SWAP1 PUSH2 0x1486 PUSH2 0x24BD JUMP JUMPDEST PUSH2 0x14D9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14A5 PUSH2 0x14A0 PUSH2 0x14AA SWAP3 PUSH2 0x148E JUMP JUMPDEST PUSH2 0x1230 JUMP JUMPDEST PUSH2 0x5D4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14D6 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x1491 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x14E2 PUSH2 0x14AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14F5 PUSH2 0x14F0 PUSH2 0x1476 JUMP JUMPDEST PUSH2 0x147A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x150D PUSH2 0x1512 SWAP2 PUSH2 0x14FC JUMP JUMPDEST PUSH2 0x36B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x151F SWAP1 SLOAD PUSH2 0x1501 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1547 SWAP2 PUSH2 0x153D PUSH2 0x1542 SWAP3 PUSH2 0x1535 PUSH2 0x14F8 JUMP JUMPDEST POP PUSH1 0x3 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x351 JUMP JUMPDEST PUSH2 0x1515 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1552 PUSH2 0x21C3 JUMP JUMPDEST PUSH2 0x155A PUSH2 0x155C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x156D PUSH2 0x1568 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x253B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1577 PUSH2 0x154A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1581 PUSH2 0x14F8 JUMP JUMPDEST POP PUSH2 0x1594 PUSH0 PUSH2 0x158E PUSH2 0x25A7 JUMP JUMPDEST ADD PUSH2 0x1515 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x15AF PUSH2 0x15B4 SWAP2 PUSH2 0x1597 JUMP JUMPDEST PUSH2 0x159D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15C1 SWAP1 SLOAD PUSH2 0x15A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x15DD PUSH2 0x15E2 SWAP2 PUSH2 0x14FC JUMP JUMPDEST PUSH2 0x15C4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x15EF SWAP1 SLOAD PUSH2 0x15D1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1605 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1230 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1623 PUSH2 0x161E PUSH2 0x1628 SWAP3 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1643 PUSH2 0x163E PUSH2 0x164A SWAP3 PUSH2 0x160F JUMP JUMPDEST PUSH2 0x162B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15F2 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1668 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x164E JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x167B SWAP1 PUSH2 0x1EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1696 PUSH2 0x1691 PUSH2 0x169D SWAP3 PUSH2 0x1672 JUMP JUMPDEST PUSH2 0x167E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1654 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x16AA SWAP1 PUSH2 0x7AA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x16C1 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x16A1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 DUP1 SWAP2 PUSH2 0x16CE PUSH2 0x25CB JUMP JUMPDEST SWAP1 PUSH2 0x16DA PUSH0 DUP4 ADD PUSH2 0x15B7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x178B JUMPI JUMPDEST PUSH2 0x174F JUMPI PUSH2 0x1714 SWAP3 PUSH2 0x170B SWAP2 PUSH2 0x16F9 DUP7 PUSH0 DUP7 ADD PUSH2 0x162E JUMP JUMPDEST PUSH2 0x1706 PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1681 JUMP JUMPDEST PUSH2 0x17F7 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x1681 JUMP JUMPDEST PUSH2 0x174A PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1741 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x16AE JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x1757 PUSH2 0x172 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1787 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x1797 PUSH0 DUP4 ADD PUSH2 0x15E5 JUMP JUMPDEST PUSH2 0x17A9 PUSH2 0x17A3 DUP7 PUSH2 0x7AA JUMP JUMPDEST SWAP2 PUSH2 0x7AA JUMP JUMPDEST LT ISZERO PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x17B9 SWAP1 PUSH2 0x31D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C5 SWAP1 PUSH2 0x17B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17D1 SWAP1 PUSH2 0x17B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x17EC PUSH2 0x17E7 PUSH2 0x17F3 SWAP3 PUSH2 0x17C8 JUMP JUMPDEST PUSH2 0x17D4 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x1235 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x180C SWAP2 POP PUSH2 0x1805 SWAP1 PUSH2 0x17BC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x17D7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1818 SWAP2 PUSH2 0x16C3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x182D SWAP1 SLOAD PUSH2 0x1501 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1853 PUSH2 0x184D PUSH2 0x1846 DUP5 PUSH2 0x8AC JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x181A JUMP JUMPDEST SWAP3 PUSH2 0x8B0 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1863 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x1883 PUSH2 0x187D PUSH1 0x1 SWAP3 PUSH2 0x1878 DUP8 PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x266 JUMP JUMPDEST SWAP5 PUSH2 0x1830 JUMP JUMPDEST SWAP2 ADD SWAP2 SWAP1 SWAP2 PUSH2 0x1856 JUMP JUMPDEST SWAP1 PUSH2 0x1897 SWAP2 PUSH2 0x1836 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x18BA PUSH2 0x18B3 SWAP3 PUSH2 0x18AA PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x188D JUMP JUMPDEST SUB DUP4 PUSH2 0x491 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x18C5 SWAP1 PUSH2 0x189A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x18D0 PUSH2 0xD1E JUMP JUMPDEST POP PUSH2 0x18DA PUSH0 PUSH2 0x18BC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x18E9 PUSH2 0x18DD JUMP JUMPDEST POP PUSH2 0x18F3 PUSH0 PUSH2 0x8AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x190A PUSH2 0x1905 PUSH2 0x190F SWAP3 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1929 PUSH2 0x1924 PUSH2 0x192E SWAP3 PUSH2 0x1912 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x7AA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x193A SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1946 SWAP1 PUSH2 0x1915 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x195D SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x193D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1967 PUSH2 0x25CB JUMP JUMPDEST SWAP1 PUSH2 0x197C PUSH2 0x1976 PUSH0 DUP5 ADD PUSH2 0x15B7 JUMP JUMPDEST ISZERO PUSH2 0x1EA JUMP JUMPDEST SWAP1 PUSH2 0x1988 PUSH0 DUP5 ADD PUSH2 0x15E5 JUMP JUMPDEST DUP1 PUSH2 0x199B PUSH2 0x1995 PUSH0 PUSH2 0x18F6 JUMP JUMPDEST SWAP2 PUSH2 0x7AA JUMP JUMPDEST EQ DUP1 PUSH2 0x1AD5 JUMPI JUMPDEST SWAP1 PUSH2 0x19B6 PUSH2 0x19B0 PUSH1 0x1 PUSH2 0x1915 JUMP JUMPDEST SWAP2 PUSH2 0x7AA JUMP JUMPDEST EQ DUP1 PUSH2 0x1AAD JUMPI JUMPDEST PUSH2 0x19C8 SWAP1 SWAP2 ISZERO PUSH2 0x1EA JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1A9C JUMPI JUMPDEST POP PUSH2 0x1A60 JUMPI PUSH2 0x19F8 SWAP1 PUSH2 0x19ED PUSH2 0x19E5 PUSH1 0x1 PUSH2 0x1915 JUMP JUMPDEST PUSH0 DUP7 ADD PUSH2 0x162E JUMP JUMPDEST DUP3 PUSH2 0x1A4E JUMPI JUMPDEST PUSH2 0x1ADC JUMP JUMPDEST PUSH2 0x1A00 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x1A0D SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x1681 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1A45 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x1A3C PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x194A JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x19FD JUMP JUMPDEST PUSH2 0x1A5B PUSH1 0x1 PUSH0 DUP7 ADD PUSH2 0x1681 JUMP JUMPDEST PUSH2 0x19F3 JUMP JUMPDEST PUSH2 0x1A68 PUSH2 0x172 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1A98 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x1AA7 SWAP2 POP ISZERO PUSH2 0x1EA JUMP JUMPDEST PUSH0 PUSH2 0x19CF JUMP JUMPDEST POP PUSH2 0x19C8 PUSH2 0x1ABA ADDRESS PUSH2 0x1931 JUMP JUMPDEST EXTCODESIZE PUSH2 0x1ACD PUSH2 0x1AC7 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x19BD JUMP JUMPDEST POP DUP3 PUSH2 0x19A2 JUMP JUMPDEST PUSH2 0x1AF9 PUSH2 0x1B00 SWAP2 PUSH2 0x1AEB PUSH2 0x25F9 JUMP JUMPDEST PUSH2 0x1AF4 CALLER PUSH2 0x2621 JUMP JUMPDEST PUSH2 0x17BC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x17D7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B0B SWAP1 PUSH2 0x195F JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B24 PUSH2 0x1B1F PUSH2 0x1B29 SWAP3 PUSH2 0x1B0D JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B40 PUSH2 0x1B3B PUSH2 0x1B45 SWAP3 PUSH2 0x1912 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1B50 PUSH2 0xD1E JUMP JUMPDEST POP PUSH2 0x1B90 PUSH2 0x1B66 PUSH2 0x1B61 PUSH1 0x2 PUSH2 0x1B10 JUMP JUMPDEST PUSH2 0xD5C JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x1B7A PUSH2 0x1B75 DUP4 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1B88 PUSH2 0x172 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1BA0 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1C9E JUMPI PUSH2 0x1BE1 PUSH1 0x20 SWAP3 PUSH2 0x1BDC PUSH2 0x1BFC SWAP6 PUSH2 0x1BE6 SWAP5 PUSH0 SWAP2 PUSH2 0x1C71 JUMPI JUMPDEST POP PUSH2 0x1BD7 DUP9 PUSH2 0x1BD1 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP1 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE0A JUMP JUMPDEST PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1BF4 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1C0C PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1C6C JUMPI PUSH2 0x1C3B SWAP2 PUSH0 SWAP2 PUSH2 0x1C3E JUMPI JUMPDEST POP PUSH2 0x1C36 DUP4 PUSH2 0x1C30 PUSH1 0x1 PUSH2 0x1B2C JUMP JUMPDEST SWAP1 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xE0A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C5F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1C65 JUMPI JUMPDEST PUSH2 0x1C57 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0x1C21 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1C4D JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x1C91 SWAP2 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x1C97 JUMPI JUMPDEST PUSH2 0x1C89 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST PUSH0 PUSH2 0x1BC3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1C7F JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x1CB4 SWAP1 PUSH2 0x1CAF PUSH2 0x21C3 JUMP JUMPDEST PUSH2 0x1D4B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1CC5 PUSH2 0x1CCB SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x83B JUMP JUMPDEST SWAP3 PUSH2 0x83B JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1CD6 JUMPI JUMP JUMPDEST PUSH2 0xE18 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1D1A SWAP2 PUSH2 0x1D14 PUSH2 0x14F8 JUMP JUMPDEST SWAP2 PUSH2 0x11D9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1D25 DUP2 PUSH2 0x116E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D46 JUMPI PUSH1 0x1 SWAP1 SUB SWAP1 PUSH2 0x1D43 PUSH2 0x1D3D DUP4 DUP4 PUSH2 0x1172 JUMP JUMPDEST SWAP1 PUSH2 0x1D08 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0x1CDB JUMP JUMPDEST PUSH2 0x1D54 PUSH0 PUSH2 0xC79 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0x1D70 PUSH2 0x1D6A PUSH2 0x1D65 PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST LT ISZERO PUSH2 0x2102 JUMPI PUSH2 0x1D8A PUSH2 0x1D84 PUSH0 DUP4 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST PUSH2 0x1D9C PUSH2 0x1D96 DUP5 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0x1DAF JUMPI PUSH2 0x1DAA SWAP1 PUSH2 0xC95 JUMP JUMPDEST PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x1DF2 SWAP1 PUSH2 0x1DEC PUSH2 0x1DE5 PUSH2 0x1DDF PUSH0 PUSH2 0x1DD9 PUSH2 0x1DC9 PUSH0 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x1DD3 PUSH1 0x1 PUSH2 0x1B2C JUMP JUMPDEST SWAP1 PUSH2 0x1CB6 JUMP JUMPDEST SWAP1 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x39C JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x8B9 JUMP JUMPDEST SWAP1 PUSH2 0x11D9 JUMP JUMPDEST PUSH2 0x1DFB PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x2 SWAP1 PUSH2 0x1E2A PUSH1 0x20 PUSH2 0x1E14 PUSH2 0x1E0F DUP7 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1E22 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1E3A PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x20FD JUMPI PUSH2 0x1E5E SWAP4 PUSH2 0x1E59 SWAP3 PUSH0 SWAP3 PUSH2 0x20CD JUMPI JUMPDEST POP PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST PUSH2 0x1E67 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x1E95 PUSH1 0x3 PUSH1 0x20 PUSH2 0x1E7F PUSH2 0x1E7A DUP7 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1E8D PUSH2 0x172 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1EA5 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x20C8 JUMPI PUSH2 0x1EC1 SWAP3 PUSH0 SWAP3 PUSH2 0x2098 JUMPI JUMPDEST POP PUSH2 0x976 JUMP JUMPDEST SWAP1 PUSH2 0x1EEE PUSH1 0x20 PUSH2 0x1ED8 PUSH2 0x1ED3 DUP7 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1EE6 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1EFE PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2093 JUMPI PUSH2 0x1F22 SWAP4 PUSH2 0x1F1D SWAP3 PUSH0 SWAP3 PUSH2 0x2063 JUMPI JUMPDEST POP PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST PUSH2 0x1F2B PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x3 PUSH2 0x1F59 PUSH1 0x20 PUSH2 0x1F43 PUSH2 0x1F3E DUP7 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xCDF456E1 SWAP1 PUSH2 0x1F51 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1F69 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x205E JUMPI PUSH2 0x1F97 PUSH2 0x1F91 PUSH2 0x1F9C SWAP3 PUSH2 0x1FB2 SWAP6 PUSH1 0x20 SWAP6 PUSH0 SWAP3 PUSH2 0x202F JUMPI JUMPDEST POP PUSH2 0x976 JUMP JUMPDEST SWAP6 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH4 0xFDF262B7 SWAP1 PUSH2 0x1FAA PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1FC2 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x202A JUMPI PUSH2 0x1FE6 SWAP4 PUSH2 0x1FE1 SWAP3 PUSH0 SWAP3 PUSH2 0x1FFA JUMPI JUMPDEST POP PUSH2 0x351 JUMP JUMPDEST PUSH2 0x125E JUMP JUMPDEST PUSH2 0x1FF7 PUSH2 0x1FF2 PUSH0 PUSH2 0x1162 JUMP JUMPDEST PUSH2 0x1D1C JUMP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH2 0x201C SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2023 JUMPI JUMPDEST PUSH2 0x2014 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1FDB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x200A JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x2050 SWAP2 SWAP3 POP DUP7 RETURNDATASIZE DUP2 GT PUSH2 0x2057 JUMPI JUMPDEST PUSH2 0x2048 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1F8B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x203E JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x2085 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x208C JUMPI JUMPDEST PUSH2 0x207D DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1F17 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2073 JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x20BA SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x20C1 JUMPI JUMPDEST PUSH2 0x20B2 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1EBB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x20A8 JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST PUSH2 0x20EF SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x20F6 JUMPI JUMPDEST PUSH2 0x20E7 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xDBC JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1E53 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x20DD JUMP JUMPDEST PUSH2 0xDDA JUMP JUMPDEST POP POP PUSH2 0x1FF8 JUMP JUMPDEST PUSH2 0x2112 SWAP1 PUSH2 0x1CA3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2125 SWAP1 PUSH2 0x2120 PUSH2 0x21C3 JUMP JUMPDEST PUSH2 0x2127 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x2142 PUSH2 0x213C PUSH2 0x2137 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0x2152 JUMPI PUSH2 0x2150 SWAP1 PUSH2 0x253B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2195 PUSH2 0x215E PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x2166 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x21A2 SWAP1 PUSH2 0x2114 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21BB PUSH2 0x21C0 SWAP2 PUSH2 0x21B3 PUSH2 0x14F8 JUMP JUMPDEST POP PUSH1 0x2 PUSH2 0x351 JUMP JUMPDEST PUSH2 0x1515 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21CB PUSH2 0x1579 JUMP JUMPDEST PUSH2 0x21E4 PUSH2 0x21DE PUSH2 0x21D9 PUSH2 0x262C JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST SUB PUSH2 0x21EB JUMPI JUMP JUMPDEST PUSH2 0x222D PUSH2 0x21F6 PUSH2 0x262C JUMP JUMPDEST PUSH2 0x21FE PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x223A SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2246 ADDRESS PUSH2 0x2231 JUMP JUMPDEST PUSH2 0x2278 PUSH2 0x2272 PUSH32 0x0 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x22C2 JUMPI JUMPDEST PUSH2 0x2286 JUMPI JUMP JUMPDEST PUSH2 0x228E PUSH2 0x172 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x22BE PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x22CB PUSH2 0x2639 JUMP JUMPDEST PUSH2 0x22FD PUSH2 0x22F7 PUSH32 0x0 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ ISZERO PUSH2 0x2280 JUMP JUMPDEST POP PUSH2 0x230D PUSH2 0x21C3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2318 SWAP1 PUSH2 0x2304 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2323 SWAP1 PUSH2 0x31D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x232F SWAP1 PUSH2 0x231A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x233B SWAP1 PUSH2 0x339 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2347 DUP2 PUSH2 0x5D4 JUMP JUMPDEST SUB PUSH2 0x234E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x235F DUP3 PUSH2 0x233E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x237A JUMPI PUSH2 0x2377 SWAP2 PUSH0 ADD PUSH2 0x2352 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x17C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x23AD PUSH1 0x20 PUSH2 0x2397 PUSH2 0x2392 DUP7 PUSH2 0x2326 JUMP JUMPDEST PUSH2 0x2332 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x23A5 PUSH2 0x172 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0xDA7 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x23BD PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x248D JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x241E JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x23DF JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x241A SWAP1 PUSH2 0x23EB PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x2439 PUSH2 0x2433 PUSH2 0x242E PUSH2 0x14AD JUMP JUMPDEST PUSH2 0x5D4 JUMP JUMPDEST SWAP2 PUSH2 0x5D4 JUMP JUMPDEST SUB PUSH2 0x244E JUMPI PUSH2 0x2449 SWAP3 SWAP4 POP PUSH2 0x2663 JUMP JUMPDEST PUSH2 0x23DD JUMP JUMPDEST PUSH2 0x2489 DUP5 PUSH2 0x245A PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5E4 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x24AF SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x24B6 JUMPI JUMPDEST PUSH2 0x24A7 DUP2 DUP4 PUSH2 0x491 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2361 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x23CA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x249D JUMP JUMPDEST PUSH2 0x24C6 ADDRESS PUSH2 0x2231 JUMP JUMPDEST PUSH2 0x24F8 PUSH2 0x24F2 PUSH32 0x0 PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST SUB PUSH2 0x24FF JUMPI JUMP JUMPDEST PUSH2 0x2507 PUSH2 0x172 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2537 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2543 PUSH2 0x25A7 JUMP JUMPDEST PUSH2 0x255B PUSH2 0x2551 PUSH0 DUP4 ADD PUSH2 0x1515 JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x125E JUMP JUMPDEST SWAP1 PUSH2 0x258F PUSH2 0x2589 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x345 JUMP JUMPDEST SWAP2 PUSH2 0x345 JUMP JUMPDEST SWAP2 PUSH2 0x2598 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x25A2 DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x25F7 PUSH2 0x26EC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2601 PUSH2 0x25EF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2614 SWAP1 PUSH2 0x260F PUSH2 0x26EC JUMP JUMPDEST PUSH2 0x2616 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x261F SWAP1 PUSH2 0x27C4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x262A SWAP1 PUSH2 0x2603 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2634 PUSH2 0x14F8 JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2641 PUSH2 0x14F8 JUMP JUMPDEST POP PUSH2 0x265C PUSH0 PUSH2 0x2656 PUSH2 0x2651 PUSH2 0x14AD JUMP JUMPDEST PUSH2 0x27CF JUMP JUMPDEST ADD PUSH2 0x1515 JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x266D DUP3 PUSH2 0x27D2 JUMP JUMPDEST DUP2 PUSH2 0x2698 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x345 JUMP JUMPDEST SWAP1 PUSH2 0x26A1 PUSH2 0x172 JUMP JUMPDEST DUP1 PUSH2 0x26AB DUP2 PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x26B7 DUP2 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x26C9 PUSH2 0x26C3 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x26DD JUMPI PUSH2 0x26D9 SWAP2 PUSH2 0x28E2 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x26E7 PUSH2 0x2847 JUMP JUMPDEST PUSH2 0x26DB JUMP JUMPDEST PUSH2 0x26FD PUSH2 0x26F7 PUSH2 0x2911 JUMP JUMPDEST ISZERO PUSH2 0x1EA JUMP JUMPDEST PUSH2 0x2703 JUMPI JUMP JUMPDEST PUSH2 0x270B PUSH2 0x172 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x273B PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2750 SWAP1 PUSH2 0x274B PUSH2 0x26EC JUMP JUMPDEST PUSH2 0x2752 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x276D PUSH2 0x2767 PUSH2 0x2762 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x19D JUMP JUMPDEST SWAP2 PUSH2 0x19D JUMP JUMPDEST EQ PUSH2 0x277D JUMPI PUSH2 0x277B SWAP1 PUSH2 0x253B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x27C0 PUSH2 0x2789 PUSH0 PUSH2 0x1094 JUMP JUMPDEST PUSH2 0x2791 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27CD SWAP1 PUSH2 0x273F JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x27E6 PUSH2 0x27E0 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ PUSH2 0x2808 JUMPI PUSH2 0x2806 SWAP1 PUSH0 PUSH2 0x2800 PUSH2 0x27FB PUSH2 0x14AD JUMP JUMPDEST PUSH2 0x27CF JUMP JUMPDEST ADD PUSH2 0x125E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2843 SWAP1 PUSH2 0x2814 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x285A PUSH2 0x2854 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST GT PUSH2 0x2861 JUMPI JUMP JUMPDEST PUSH2 0x2869 PUSH2 0x172 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2899 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x28B4 PUSH2 0x28AF DUP4 PUSH2 0x4CF JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x28D4 JUMPI PUSH2 0x28C9 RETURNDATASIZE PUSH2 0x28A2 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x28DC PUSH2 0x289D JUMP JUMPDEST SWAP1 PUSH2 0x28D2 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x290E SWAP4 PUSH2 0x28F0 PUSH2 0x289D JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x2905 PUSH2 0x28B9 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x292F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2919 PUSH2 0xC72 JUMP JUMPDEST POP PUSH2 0x292C PUSH0 PUSH2 0x2926 PUSH2 0x25CB JUMP JUMPDEST ADD PUSH2 0x15B7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2943 SWAP1 PUSH2 0x293C PUSH2 0x289D JUMP JUMPDEST POP ISZERO PUSH2 0x1EA JUMP JUMPDEST PUSH0 EQ PUSH2 0x294F JUMPI POP PUSH2 0x29D3 JUMP JUMPDEST PUSH2 0x2958 DUP3 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x296A PUSH2 0x2964 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ DUP1 PUSH2 0x29B8 JUMPI JUMPDEST PUSH2 0x2979 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x29B4 SWAP1 PUSH2 0x2985 PUSH2 0x172 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3D0 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x29CD PUSH2 0x29C7 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST EQ PUSH2 0x2971 JUMP JUMPDEST PUSH2 0x29DC DUP2 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x29EE PUSH2 0x29E8 PUSH0 PUSH2 0xC79 JUMP JUMPDEST SWAP2 PUSH2 0x83B JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x29FD JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2A05 PUSH2 0x172 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2A35 PUSH1 0x4 DUP3 ADD PUSH2 0x41A JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 0xC8 REVERT RETURNDATACOPY 0x4E 0x25 CREATE2 AND 0xC0 0xB2 SELFDESTRUCT SELFBALANCE 0x2C 0x25 0xD SGT REVERT JUMPDEST JUMPDEST LOG4 0xBD BALANCE DELEGATECALL 0xEE 0xAE BLOCKHASH 0x1F PUSH16 0xF016763D64736F6C6343000819003300 ","sourceMap":"1797:4943:66:-:0;;;;;;;;;-1:-1:-1;1797:4943:66;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1971:48::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;1797:4943::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1929:33::-;;;;;;:::i;:::-;;:::o;1797:4943::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;1894:26::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;;;1797:4943;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2026:68::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1797:4943::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1797:4943:66:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;5740:253::-;5799:4;;:::i;:::-;5833:1;5821:13;5833:1;5821:13;:::i;:::-;5858:3;5836:1;:20;;5840:16;:9;:16;:::i;:::-;5836:20;:::i;:::-;;;:::i;:::-;;;;;5882:12;;:9;5892:1;5882:12;;:::i;:::-;;;:::i;:::-;:22;;5898:6;5882:22;:::i;:::-;;;:::i;:::-;;5878:74;;5858:3;;;:::i;:::-;5821:13;;5878:74;5932:4;;;5925:11;:::o;5836:20::-;;;5980:5;5973:12;:::o;1797:4943::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;4937:795::-;5001:16;;:::i;:::-;5070:9;5056:31;5070:16;:9;:16;:::i;:::-;5056:31;:::i;:::-;5114:1;5098:17;5114:1;5098:17;:::i;:::-;5145:1;5133:13;5145:1;5133:13;:::i;:::-;5170:3;5148:1;:20;;5152:16;:9;:16;:::i;:::-;5148:20;:::i;:::-;;;:::i;:::-;;;;;5218:33;5238:12;;:9;5248:1;5238:12;;:::i;:::-;;;:::i;:::-;5218:33;:::i;:::-;5282:17;;:15;:5;:15;:::i;:::-;;:17;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5170:3;5266:33;5320:14;;5329:5;5320:14;:::i;:::-;;;:::i;:::-;;5316:135;;5471:5;;:22;;5480:13;:6;:13;:::i;:::-;5471:22;:::i;:::-;;;:::i;:::-;;5467:68;;5170:3;;;:::i;:::-;5133:13;;5467:68;5514:5;;;;5128:418;5584:20;5598:5;5584:20;:::i;:::-;5632:1;5620:13;5632:1;5620:13;:::i;:::-;5646:3;5635:1;:9;;5639:5;5635:9;:::i;:::-;;;:::i;:::-;;;;;5646:3;5678:6;5666:21;5678:9;;:6;5685:1;5678:9;;:::i;:::-;;:::i;:::-;5666:21;:6;5673:1;;5666:21;;;:::i;:::-;;:::i;:::-;5646:3;:::i;:::-;5620:13;;5635:9;;;;;5711:13;:::o;5316:135::-;5404:7;5379:5;;;5355:30;5379:5;;5371:14;5379:5;;;;5371:14;:::i;:::-;5355:30;:6;5362:5;;5355:30;;;:::i;:::-;;:::i;:::-;5404:7;:::i;:::-;5430:5;;;5282:17;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5148:20::-;;;;;;;2303:62:0;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1797:4943:66:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2614:609::-;2684:82;2692:12;:26;;2708:10;2716:1;2708:10;:::i;:::-;2692:26;:::i;:::-;;;:::i;:::-;;;2684:82;:::i;:::-;2777:28;:14;:9;:14;:::i;:::-;2792:12;2777:28;;:::i;:::-;2836:45;;:43;:33;2856:12;2836:33;:::i;:::-;:43;:::i;:::-;;:45;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2614:609;2816:65;2913:46;;:44;:33;2933:12;2913:33;:::i;:::-;:44;:::i;:::-;;:46;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2614:609;2892:67;2974:10;:24;;2988:10;2996:1;2988:10;:::i;:::-;2974:24;:::i;:::-;;;:::i;:::-;;2970:246;;;;3042:12;3015:24;:39;3042:12;3015:13;;:24;:::i;:::-;:39;:::i;:::-;2970:246;2614:609::o;2970:246::-;3126:12;3153:36;3126:12;3153:25;3126:12;3087:51;3153;3126:12;3087:36;:24;:13;3101:9;3087:24;;:::i;:::-;3112:10;3087:36;;:::i;:::-;:51;:::i;:::-;3153:13;;:25;:::i;:::-;:36;:::i;:::-;:51;:::i;:::-;2970:246;;2913:46;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2836:45::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2614:609::-;;;;:::i;:::-;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;1797:4943:66:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;1797:4943:66:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;1797:4943:66:-;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4420:150::-;4533:29;4420:150;4533:21;:29;4420:150;4506:7;;:::i;:::-;4533:13;;:21;:::i;:::-;:29;:::i;:::-;;:::i;:::-;4526:36;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;3155:101::-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;2441:144::-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;1797:4943:66:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;2446:8:66;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;1797:4943:66;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;2367:147::-;2467:39;2367:147;;2478:28;2367:147;2478:28;:::i;:::-;2467:39;;:::i;:::-;2367:147::o;:::-;;;;;:::i;:::-;:::o;1797:4943::-;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;3356:100::-;3403:16;;:::i;:::-;3439:9;3432:16;3439:9;3432:16;:::i;:::-;;:::o;1797:4943::-;;;:::o;3587:100::-;3636:7;;:::i;:::-;3663:9;:16;:9;:16;:::i;:::-;3656:23;:::o;1797:4943::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;2171:188:66;2323:28;2312:39;2171:188;;;:::i;:::-;2290:10;;;:::i;:::-;2323:28;:::i;:::-;2312:39;;:::i;:::-;2171:188::o;:::-;;;;:::i;:::-;:::o;1797:4943::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;3867:308::-;3935:16;;:::i;:::-;4004:1;4029:45;3990:16;;4004:1;3990:16;:::i;:::-;;:::i;:::-;4049:12;4029:45;:43;:33;4049:12;4029:33;:::i;:::-;:43;:::i;:::-;;:45;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;4097:33;:46;4029:45;4017:57;4097:46;4029:45;4097:44;4029:45;;;;;3867:308;4017:6;:57;:6;:57;4024:1;4017:57;:::i;:::-;;;:::i;:::-;;:::i;:::-;4097:33;:::i;:::-;:44;:::i;:::-;;:46;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;4085:58;4097:46;;;;;3867:308;4085:6;:58;:6;:58;4092:1;4085:58;:::i;:::-;;;:::i;:::-;;:::i;:::-;4154:13;:::o;4097:46::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4029:45::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;1797:4943:66:-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;6001:736::-;6073:13;6085:1;6073:13;:::i;:::-;6110:3;6088:1;:20;;6092:16;:9;:16;:::i;:::-;6088:20;:::i;:::-;;;:::i;:::-;;;;;6134:12;;:9;6144:1;6134:12;;:::i;:::-;;;:::i;:::-;:22;;6150:6;6134:22;:::i;:::-;;;:::i;:::-;;6130:589;;6110:3;;;:::i;:::-;6073:13;;6130:589;6177:46;6192:9;6177:12;6192:31;;:9;6202:20;:16;:9;:16;:::i;:::-;:20;6221:1;6202:20;:::i;:::-;;;:::i;:::-;6192:31;;:::i;:::-;;;:::i;:::-;6177:9;;:12;:::i;:::-;:46;;:::i;:::-;6299:10;6307:1;6299:10;:::i;:::-;6242:13;6276:6;6256:39;;:37;:27;6276:6;6256:27;:::i;:::-;:37;:::i;:::-;;:39;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6242:67;6256:39;6242:54;6256:39;;;;;6130:589;6242:54;;:::i;:::-;:67;:::i;:::-;6467:10;6475:1;6467:10;:::i;:::-;6342:40;6328:13;6342:40;:38;:27;6362:6;6342:27;:::i;:::-;:38;:::i;:::-;;:40;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;6328:55;6342:40;;;;;6130:589;6328:55;;:::i;:::-;6426:6;6406:39;;:37;:27;6426:6;6406:27;:::i;:::-;:37;:::i;:::-;;:39;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6328:149;6406:39;6328:136;6406:39;;;;;6130:589;6328:136;;:::i;:::-;:149;:::i;:::-;6635:10;6643:1;6635:10;:::i;:::-;6496:13;6510:39;;:37;:27;6530:6;6510:27;:::i;:::-;:37;:::i;:::-;;:39;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6573:27;6496:54;6573:38;6510:39;6573:40;6510:39;6573:40;6510:39;;;;;6130:589;6496:54;;:::i;:::-;6593:6;6573:27;:::i;:::-;:38;:::i;:::-;;:40;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6496:149;6573:40;6496:136;6573:40;;;;;6130:589;6496:136;;:::i;:::-;:149;:::i;:::-;6664:13;;:9;:13;:::i;:::-;;:::i;:::-;6068:662;6001:736::o;6573:40::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6510:39::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6406:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6342:40::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6256:39::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6088:20::-;;;;;6001:736;;;;:::i;:::-;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;4806:123:66:-;4901:20;;4806:123;4874:7;;:::i;:::-;4901:13;;:20;:::i;:::-;;:::i;:::-;4894:27;:::o;2658:162:0:-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1797:4943:66;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;2522:84:66:-;;;;:::i;:::-;:::o;1797:4943::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;1192:159::-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;1957:138:9:-;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;1797:4943:66:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1797:4943:66;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"2172600","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","addVault(address)":"infinite","allVaults(uint256)":"infinite","getAllVaults()":"infinite","getVaultAsset(address)":"infinite","getVaultType0(address)":"infinite","getVaultType0ByAsset(address)":"infinite","getVaultType1(address,address)":"infinite","getVaultType1ByAssets(address,address)":"infinite","getVaultsByAsset(address)":"infinite","getVaultsCount()":"2871","initialize(address)":"infinite","owner()":"2906","proxiableUUID()":"infinite","registry()":"infinite","reinitialize(address,uint64)":"infinite","removeVault(address)":"infinite","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite","vaultExist(address)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addVault(address)":"256b5a02","allVaults(uint256)":"9094a91e","getAllVaults()":"97331bf9","getVaultAsset(address)":"ca9d67c8","getVaultType0(address)":"1f844a4c","getVaultType0ByAsset(address)":"f7693227","getVaultType1(address,address)":"a14eb085","getVaultType1ByAssets(address,address)":"592717af","getVaultsByAsset(address)":"10894052","getVaultsCount()":"b9b658db","initialize(address)":"c4d66de8","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registry()":"7b103999","reinitialize(address,uint64)":"8f2248bc","removeVault(address)":"ceb68c23","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","vaultExist(address)":"02b3537d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"name\":\"vaultCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"}],\"name\":\"addVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllVaults\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"}],\"name\":\"getVaultAsset\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getVaultType0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getVaultType0ByAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getVaultType1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset2\",\"type\":\"address\"}],\"name\":\"getVaultType1ByAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getVaultsByAsset\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_register\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IBaluniV1Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_register\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"removeVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"vaultExist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getAllVaults()\":{\"details\":\"Retrieves all the vaults created by the factory.\",\"returns\":{\"_0\":\"An array of vault addresses.\"}},\"getVaultAsset(address)\":{\"details\":\"Retrieves the assets of a specific vault.\",\"params\":{\"vaultAddress\":\"The address of the vault.\"},\"returns\":{\"_0\":\"An array of asset addresses.\"}},\"getVaultType0ByAsset(address)\":{\"details\":\"Retrieves the address of the vault type 0 associated with the given asset.\",\"params\":{\"asset\":\"The address of the asset.\"},\"returns\":{\"_0\":\"The address of the vault type 0 associated with the asset.\"}},\"getVaultType1ByAssets(address,address)\":{\"details\":\"Retrieves the vault address based on the given assets.\",\"params\":{\"asset1\":\"The address of the first asset.\",\"asset2\":\"The address of the second asset.\"},\"returns\":{\"_0\":\"The address of the vault.\"}},\"getVaultsCount()\":{\"details\":\"Retrieves the number of vaults created by the factory.\",\"returns\":{\"_0\":\"The count of vaults.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/registry/BaluniV1YearnVaultRegistry.sol\":\"BaluniV1YearnVaultRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1YearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1YearnVault {\\r\\n    function baseAsset() external view returns (address);\\r\\n    function yearnVault() external view returns (address);\\r\\n    function quoteAsset() external view returns (address);\\r\\n    function registry() external view returns (address);\\r\\n    function lastDeposit() external view returns (uint256);\\r\\n    function deposit(uint256 amount, address to) external;\\r\\n    function withdraw(uint256 shares, address to) external;\\r\\n    function buy() external;\\r\\n    function pause() external;\\r\\n    function unpause() external;\\r\\n    function totalValuation() external view returns (uint256);\\r\\n    function unitPrice() external view returns (uint256);\\r\\n    function interestEarned() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x1bc913632491c1953bdd30cc0a35acc2b8987b2309495e18bd8756f235b3f614\",\"license\":\"GNU AGPLv3\"},\"contracts/registry/BaluniV1YearnVaultRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n/**\\r\\n *  __                  __                      __\\r\\n * /  |                /  |                    /  |\\r\\n * $$ |____    ______  $$ | __    __  _______  $$/\\r\\n * $$      \\\\  /      \\\\ $$ |/  |  /  |/       \\\\ /  |\\r\\n * $$$$$$$  | $$$$$$  |$$ |$$ |  $$ |$$$$$$$  |$$ |\\r\\n * $$ |  $$ | /    $$ |$$ |$$ |  $$ |$$ |  $$ |$$ |\\r\\n * $$ |__$$ |/$$$$$$$ |$$ |$$ \\\\__$$ |$$ |  $$ |$$ |\\r\\n * $$    $$/ $$    $$ |$$ |$$    $$/ $$ |  $$ |$$ |\\r\\n * $$$$$$$/   $$$$$$$/ $$/  $$$$$$/  $$/   $$/ $$/\\r\\n *\\r\\n *\\r\\n *                  ,-\\\"\\\"\\\"\\\"-.\\r\\n *                ,'      _ `.\\r\\n *               /       )_)  \\\\\\r\\n *              :              :\\r\\n *              \\\\              /\\r\\n *               \\\\            /\\r\\n *                `.        ,'\\r\\n *                  `.    ,'\\r\\n *                    `.,'\\r\\n *                     /\\\\`.   ,-._\\r\\n *                         `-'    \\\\__\\r\\n *                              .\\r\\n *               s                \\\\\\r\\n *                                \\\\\\\\\\r\\n *                                 \\\\\\\\\\r\\n *                                  >\\\\/7\\r\\n *                              _.-(6'  \\\\\\r\\n *                             (=___._/` \\\\\\r\\n *                                  )  \\\\ |\\r\\n *                                 /   / |\\r\\n *                                /    > /\\r\\n *                               j    < _\\\\\\r\\n *                           _.-' :      ``.\\r\\n *                           \\\\ r=._\\\\        `.\\r\\n */\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1YearnVault.sol';\\r\\n\\r\\ncontract BaluniV1YearnVaultRegistry is Initializable, UUPSUpgradeable, OwnableUpgradeable {\\r\\n    address[] public allVaults;\\r\\n\\r\\n    IBaluniV1Registry public registry;\\r\\n\\r\\n    mapping(address => address) public getVaultType0;\\r\\n    mapping(address => mapping(address => address)) public getVaultType1;\\r\\n\\r\\n    event vaultCreated(address indexed vault, address[] assets);\\r\\n\\r\\n    function initialize(address _register) public initializer {\\r\\n        __UUPSUpgradeable_init();\\r\\n        __Ownable_init(msg.sender);\\r\\n        registry = IBaluniV1Registry(_register);\\r\\n    }\\r\\n\\r\\n    function reinitialize(address _register, uint64 _version) public reinitializer(_version) {\\r\\n        registry = IBaluniV1Registry(_register);\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    function addVault(address vaultAddress) external onlyOwner {\\r\\n        require(vaultAddress != address(0), 'BaluniV1VaultFactory: INVALID_vault_ADDRESS');\\r\\n        allVaults.push(vaultAddress);\\r\\n        address baseAsset = IBaluniV1YearnVault(vaultAddress).baseAsset();\\r\\n        address quoteAsset = IBaluniV1YearnVault(vaultAddress).quoteAsset();\\r\\n        if (quoteAsset == address(0)) {\\r\\n            getVaultType0[baseAsset] = vaultAddress;\\r\\n        } else {\\r\\n            getVaultType1[baseAsset][quoteAsset] = vaultAddress;\\r\\n            getVaultType1[quoteAsset][baseAsset] = vaultAddress;\\r\\n        }\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves all the vaults created by the factory.\\r\\n     * @return An array of vault addresses.\\r\\n     */\\r\\n    function getAllVaults() external view returns (address[] memory) {\\r\\n        return allVaults;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the number of vaults created by the factory.\\r\\n     * @return The count of vaults.\\r\\n     */\\r\\n    function getVaultsCount() external view returns (uint256) {\\r\\n        return allVaults.length;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the assets of a specific vault.\\r\\n     * @param vaultAddress The address of the vault.\\r\\n     * @return An array of asset addresses.\\r\\n     */\\r\\n    function getVaultAsset(address vaultAddress) external view returns (address[] memory) {\\r\\n        address[] memory assets = new address[](2);\\r\\n        assets[0] = IBaluniV1YearnVault(vaultAddress).baseAsset();\\r\\n        assets[1] = IBaluniV1YearnVault(vaultAddress).quoteAsset();\\r\\n        return assets;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the vault address based on the given assets.\\r\\n     * @param asset1 The address of the first asset.\\r\\n     * @param asset2 The address of the second asset.\\r\\n     * @return The address of the vault.\\r\\n     */\\r\\n    function getVaultType1ByAssets(address asset1, address asset2) external view returns (address) {\\r\\n        return getVaultType1[asset1][asset2];\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Retrieves the address of the vault type 0 associated with the given asset.\\r\\n     * @param asset The address of the asset.\\r\\n     * @return The address of the vault type 0 associated with the asset.\\r\\n     */\\r\\n    function getVaultType0ByAsset(address asset) external view returns (address) {\\r\\n        return getVaultType0[asset];\\r\\n    }\\r\\n\\r\\n    function getVaultsByAsset(address token) external view returns (address[] memory) {\\r\\n        address[] memory vaults = new address[](allVaults.length);\\r\\n        uint256 count = 0;\\r\\n\\r\\n        for (uint256 i = 0; i < allVaults.length; i++) {\\r\\n            IBaluniV1YearnVault vault = IBaluniV1YearnVault(allVaults[i]);\\r\\n            address asset = vault.baseAsset();\\r\\n\\r\\n            if (asset == token) {\\r\\n                vaults[count] = address(vault);\\r\\n                count++;\\r\\n                break;\\r\\n            }\\r\\n\\r\\n            if (count == vaults.length) {\\r\\n                break;\\r\\n            }\\r\\n        }\\r\\n\\r\\n        address[] memory result = new address[](count);\\r\\n        for (uint256 i = 0; i < count; i++) {\\r\\n            result[i] = vaults[i];\\r\\n        }\\r\\n\\r\\n        return result;\\r\\n    }\\r\\n\\r\\n    function vaultExist(address _vault) external view returns (bool) {\\r\\n        for (uint256 i = 0; i < allVaults.length; i++) {\\r\\n            if (allVaults[i] == _vault) {\\r\\n                return true;\\r\\n            }\\r\\n        }\\r\\n        return false;\\r\\n    }\\r\\n\\r\\n    function removeVault(address _vault) external onlyOwner {\\r\\n        for (uint256 i = 0; i < allVaults.length; i++) {\\r\\n            if (allVaults[i] == _vault) {\\r\\n                allVaults[i] = allVaults[allVaults.length - 1];\\r\\n                getVaultType0[IBaluniV1YearnVault(_vault).baseAsset()] = address(0);\\r\\n                getVaultType1[IBaluniV1YearnVault(_vault).quoteAsset()][\\r\\n                    IBaluniV1YearnVault(_vault).baseAsset()\\r\\n                ] = address(0);\\r\\n                getVaultType1[IBaluniV1YearnVault(_vault).baseAsset()][\\r\\n                    IBaluniV1YearnVault(_vault).quoteAsset()\\r\\n                ] = address(0);\\r\\n                allVaults.pop();\\r\\n                break;\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x76a45d20508e95df131c9b7c7541b1c5ca89205971f1d16372b5d8feeffccb84\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":19272,"contract":"contracts/registry/BaluniV1YearnVaultRegistry.sol:BaluniV1YearnVaultRegistry","label":"allVaults","offset":0,"slot":"0","type":"t_array(t_address)dyn_storage"},{"astId":19275,"contract":"contracts/registry/BaluniV1YearnVaultRegistry.sol:BaluniV1YearnVaultRegistry","label":"registry","offset":0,"slot":"1","type":"t_contract(IBaluniV1Registry)4909"},{"astId":19279,"contract":"contracts/registry/BaluniV1YearnVaultRegistry.sol:BaluniV1YearnVaultRegistry","label":"getVaultType0","offset":0,"slot":"2","type":"t_mapping(t_address,t_address)"},{"astId":19285,"contract":"contracts/registry/BaluniV1YearnVaultRegistry.sol:BaluniV1YearnVaultRegistry","label":"getVaultType1","offset":0,"slot":"3","type":"t_mapping(t_address,t_mapping(t_address,t_address))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_address)dyn_storage":{"base":"t_address","encoding":"dynamic_array","label":"address[]","numberOfBytes":"32"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_address,t_mapping(t_address,t_address))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => address))","numberOfBytes":"32","value":"t_mapping(t_address,t_address)"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/vaults/BaluniV1DCAVault.sol":{"BaluniV1DCAVault":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"ExecuteTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedAssetB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canSystemDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reinvestDuration","type":"uint256"}],"name":"changeReinvestDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"executors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAmountToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_baseAsset","type":"address"},{"internalType":"address","name":"_quoteAsset","type":"address"},{"internalType":"address","name":"_registryAddress","type":"address"},{"internalType":"uint256","name":"_reinvestDuration","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastInvestedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerSwap","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":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quoteAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_baseAsset","type":"address"},{"internalType":"address","name":"_quoteAsset","type":"address"},{"internalType":"address","name":"_registryAddress","type":"address"},{"internalType":"uint256","name":"_reinvestDuration","type":"uint256"},{"internalType":"uint64","name":"_version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reinvestDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_allow","type":"bool"}],"name":"setExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"systemDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"deposit(uint256,address)":{"details":"Deposits assetA into the pool.","params":{"amount":"The amount of assetA to deposit.","to":"The address to receive pool tokens."}},"initialize(string,string,address,address,address,uint256)":{"details":"Initializes the BaluniV1DCA contract.","params":{"_baseAsset":"The address of the base asset.","_name":"The name of the token.","_quoteAsset":"The address of the quote asset.","_registryAddress":"The address of the registry contract.","_reinvestDuration":"The duration between reinvestments.","_symbol":"The symbol of the token."}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"pause()":{"details":"pause pool, restricting certain operations"},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause()":{"details":"unpause pool, enabling certain operations"},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"withdraw(uint256,address)":{"details":"Withdraws assetA and assetB from the pool.","params":{"shares":"The amount of pool tokens to redeem.","to":"The address to receive assetA and assetB."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":177,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1DCAVault":{"entryPoint":77,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ContextUpgradeable":{"entryPoint":167,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ERC20Upgradeable":{"entryPoint":117,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IBaluniV1DCAVault":{"entryPoint":87,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20":{"entryPoint":147,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20Errors":{"entryPoint":127,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20Metadata":{"entryPoint":137,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_OwnableUpgradeable":{"entryPoint":157,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_PausableUpgradeable":{"entryPoint":97,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ReentrancyGuardUpgradeable":{"entryPoint":107,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":243,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":231,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":219,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":191,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":188,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":73,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a06040523461003e5761001161004d565b610019610043565b6152de61010282396080518181816143080152818161438d015261458801526152de90f35b610049565b60405190565b5f80fd5b610055610057565b565b61005f610061565b565b61006961006b565b565b610073610075565b565b61007d61007f565b565b610087610089565b565b610091610093565b565b61009b61009d565b565b6100a56100a7565b565b6100af6100f3565b565b60018060a01b031690565b90565b6100d36100ce6100d8926100b1565b6100bc565b6100b1565b90565b6100e4906100bf565b90565b6100f0906100db565b90565b6100fc306100e7565b60805256fe60806040526004361015610013575b6112a7565b61001d5f3561028b565b8062f714ce1461028657806306fdde0314610281578063095ea7b31461027c57806318160ddd146102775780631e1bff3f1461027257806323b872dd1461026d578063295b930014610268578063313ce5671461026357806336b771071461025e5780633f4ba83a146102595780634f1ef286146102545780634fe84c421461024f57806352d1902d1461024a5780635c975abb146102455780636e553f651461024057806370a082311461023b578063715018a6146102365780637b103999146102315780638456cb591461022c5780638da5cb5b1461022757806395d89b41146102225780639ac2a0111461021d578063a9059cbb14610218578063ad3cb1cc14610213578063b3404efd1461020e578063bc4ba73114610209578063c80b0baf14610204578063cdf456e1146101ff578063d53419a3146101fa578063d9d47d69146101f5578063db48a5e3146101f0578063dd62ed3e146101eb578063e73faa2d146101e6578063edf3e29e146101e1578063f267d91b146101dc578063f2fde38b146101d7578063f661af29146101d2578063f7fde10f146101cd5763fdf262b70361000e57611272565b61122e565b6111ec565b61119b565b611166565b61112c565b611063565b61102d565b610fcb565b610f87565b610f54565b610f1f565b610e99565b610d3b565b610cf7565b610cb3565b610be2565b610bad565b610ae6565b610ab1565b610a7e565b610a49565b6109f4565b6109bf565b61096d565b610938565b610903565b6108a9565b610870565b6106fe565b6106c9565b610658565b6105fb565b6105c5565b610557565b6104d2565b61047a565b6103f1565b610343565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b6102af816102a3565b036102b657565b5f80fd5b905035906102c7826102a6565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102eb906102c9565b90565b6102f7816102e2565b036102fe57565b5f80fd5b9050359061030f826102ee565b565b9190604083820312610339578061032d610336925f86016102ba565b93602001610302565b90565b61029b565b5f0190565b346103725761035c610356366004610311565b90611f07565b610364610291565b8061036e8161033e565b0390f35b610297565b5f91031261038157565b61029b565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6103c76103d06020936103d5936103be81610386565b9384809361038a565b95869101610393565b61039e565b0190565b6103ee9160208201915f8184039101526103a8565b90565b3461042157610401366004610377565b61041d61040c612048565b610414610291565b918291826103d9565b0390f35b610297565b919060408382031261044e578061044261044b925f8601610302565b936020016102ba565b90565b61029b565b151590565b61046190610453565b9052565b9190610478905f60208501940190610458565b565b346104ab576104a7610496610490366004610426565b9061206b565b61049e610291565b91829182610465565b0390f35b610297565b6104b9906102a3565b9052565b91906104d0905f602085019401906104b0565b565b34610502576104e2366004610377565b6104fe6104ed612091565b6104f5610291565b918291826104bd565b0390f35b610297565b61051081610453565b0361051757565b5f80fd5b9050359061052882610507565b565b9190604083820312610552578061054661054f925f8601610302565b9360200161051b565b90565b61029b565b346105865761057061056a36600461052a565b9061211f565b610578610291565b806105828161033e565b0390f35b610297565b90916060828403126105c0576105bd6105a6845f8501610302565b936105b48160208601610302565b936040016102ba565b90565b61029b565b346105f6576105f26105e16105db36600461058b565b9161212b565b6105e9610291565b91829182610465565b0390f35b610297565b3461062b5761060b366004610377565b6106276106166121d5565b61061e610291565b918291826104bd565b0390f35b610297565b60ff1690565b61063f90610630565b9052565b9190610656905f60208501940190610636565b565b3461068857610668366004610377565b6106846106736125d1565b61067b610291565b91829182610643565b0390f35b610297565b1c90565b90565b6106a49060086106a9930261068d565b610691565b90565b906106b79154610694565b90565b6106c660045f906106ac565b90565b346106f9576106d9366004610377565b6106f56106e46106ba565b6106ec610291565b918291826104bd565b0390f35b610297565b3461072c5761070e366004610377565b610716612603565b61071e610291565b806107288161033e565b0390f35b610297565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906107709061039e565b810190811067ffffffffffffffff82111761078a57604052565b610739565b906107a261079b610291565b9283610766565b565b67ffffffffffffffff81116107c2576107be60209161039e565b0190565b610739565b90825f939282370152565b909291926107e76107e2826107a4565b61078f565b9381855260208501908284011161080357610801926107c7565b565b610735565b9080601f8301121561082657816020610823933591016107d2565b90565b610731565b91909160408184031261086b57610844835f8301610302565b92602082013567ffffffffffffffff8111610866576108639201610808565b90565b61029f565b61029b565b61088461087e36600461082b565b90612636565b61088c610291565b806108968161033e565b0390f35b6108a660085f906106ac565b90565b346108d9576108b9366004610377565b6108d56108c461089a565b6108cc610291565b918291826104bd565b0390f35b610297565b90565b6108ea906108de565b9052565b9190610901905f602085019401906108e1565b565b3461093357610913366004610377565b61092f61091e6126b1565b610926610291565b918291826108ee565b0390f35b610297565b3461096857610948366004610377565b6109646109536126e5565b61095b610291565b91829182610465565b0390f35b610297565b3461099c57610986610980366004610311565b90612b9d565b61098e610291565b806109988161033e565b0390f35b610297565b906020828203126109ba576109b7915f01610302565b90565b61029b565b346109ef576109eb6109da6109d53660046109a1565b612bbf565b6109e2610291565b918291826104bd565b0390f35b610297565b34610a2257610a04366004610377565b610a0c612c33565b610a14610291565b80610a1e8161033e565b0390f35b610297565b610a30906102e2565b9052565b9190610a47905f60208501940190610a27565b565b34610a7957610a59366004610377565b610a75610a64612c41565b610a6c610291565b91829182610a34565b0390f35b610297565b34610aac57610a8e366004610377565b610a96612c7b565b610a9e610291565b80610aa88161033e565b0390f35b610297565b34610ae157610ac1366004610377565b610add610acc612c85565b610ad4610291565b91829182610a34565b0390f35b610297565b34610b1657610af6366004610377565b610b12610b01612ca3565b610b09610291565b918291826103d9565b0390f35b610297565b90565b610b32610b2d610b37926102c9565b610b1b565b6102c9565b90565b610b4390610b1e565b90565b610b4f90610b3a565b90565b90610b5c90610b46565b5f5260205260405f2090565b60ff1690565b610b7e906008610b83930261068d565b610b68565b90565b90610b919154610b6e565b90565b610baa90610ba56009915f92610b52565b610b86565b90565b34610bdd57610bd9610bc8610bc33660046109a1565b610b94565b610bd0610291565b91829182610465565b0390f35b610297565b34610c1357610c0f610bfe610bf8366004610426565b90612cc2565b610c06610291565b91829182610465565b0390f35b610297565b67ffffffffffffffff8111610c3657610c3260209161039e565b0190565b610739565b90610c4d610c4883610c18565b61078f565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610c836005610c3b565b90610c9060208301610c52565b565b610c9a610c79565b90565b610ca5610c92565b90565b610cb0610c9d565b90565b34610ce357610cc3366004610377565b610cdf610cce610ca8565b610cd6610291565b918291826103d9565b0390f35b610297565b610cf460075f906106ac565b90565b34610d2757610d07366004610377565b610d23610d12610ce8565b610d1a610291565b918291826104bd565b0390f35b610297565b610d3860055f906106ac565b90565b34610d6b57610d4b366004610377565b610d67610d56610d2c565b610d5e610291565b918291826104bd565b0390f35b610297565b90929192610d85610d8082610c18565b61078f565b93818552602085019082840111610da157610d9f926107c7565b565b610735565b9080601f83011215610dc457816020610dc193359101610d70565b90565b610731565b67ffffffffffffffff1690565b610ddf81610dc9565b03610de657565b5f80fd5b90503590610df782610dd6565b565b60e081830312610e94575f81013567ffffffffffffffff8111610e8f5782610e22918301610da6565b92602082013567ffffffffffffffff8111610e8a5783610e43918401610da6565b92610e518160408501610302565b92610e5f8260608301610302565b92610e87610e708460808501610302565b93610e7e8160a086016102ba565b9360c001610dea565b90565b61029f565b61029f565b61029b565b34610ece57610eb8610eac366004610df9565b9594909493919361311a565b610ec0610291565b80610eca8161033e565b0390f35b610297565b73ffffffffffffffffffffffffffffffffffffffff1690565b610efc906008610f01930261068d565b610ed3565b90565b90610f0f9154610eec565b90565b610f1c5f80610f04565b90565b34610f4f57610f2f366004610377565b610f4b610f3a610f12565b610f42610291565b91829182610a34565b0390f35b610297565b34610f8257610f64366004610377565b610f6c613581565b610f74610291565b80610f7e8161033e565b0390f35b610297565b34610fb757610f97366004610377565b610fb3610fa261358b565b610faa610291565b918291826104bd565b0390f35b610297565b610fc860065f906106ac565b90565b34610ffb57610fdb366004610377565b610ff7610fe6610fbc565b610fee610291565b918291826104bd565b0390f35b610297565b9190604083820312611028578061101c611025925f8601610302565b93602001610302565b90565b61029b565b3461105e5761105a611049611043366004611000565b906136a9565b611051610291565b918291826104bd565b0390f35b610297565b3461109357611073366004610377565b61108f61107e6136f9565b611086610291565b918291826104bd565b0390f35b610297565b909160c082840312611127575f82013567ffffffffffffffff811161112257836110c3918401610da6565b92602083013567ffffffffffffffff811161111d57816110e4918501610da6565b926110f28260408301610302565b9261111a6111038460608501610302565b936111118160808601610302565b9360a0016102ba565b90565b61029f565b61029f565b61029b565b346111615761114b61113f366004611098565b94939093929192613bad565b611153610291565b8061115d8161033e565b0390f35b610297565b3461119657611176366004610377565b611192611181613bbd565b611189610291565b91829182610465565b0390f35b610297565b346111c9576111b36111ae3660046109a1565b613ca9565b6111bb610291565b806111c58161033e565b0390f35b610297565b906020828203126111e7576111e4915f016102ba565b90565b61029b565b3461121a576112046111ff3660046111ce565b613cf2565b61120c610291565b806112168161033e565b0390f35b610297565b61122b60035f906106ac565b90565b3461125e5761123e366004610377565b61125a61124961121f565b611251610291565b918291826104bd565b0390f35b610297565b61126f60015f90610f04565b90565b346112a257611282366004610377565b61129e61128d611263565b611295610291565b91829182610a34565b0390f35b610297565b5f80fd5b906112bd916112b8613d29565b6112c7565b6112c5613dd5565b565b906112d9916112d4613df2565b6117c1565b565b90565b6112f26112ed6112f7926112db565b610b1b565b6102a3565b90565b5f7f536861726573206d7573742062652067726561746572207468616e207a65726f910152565b61132d6020809261038a565b611336816112fa565b0190565b61134f9060208101905f818303910152611321565b90565b1561135957565b611361610291565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806113916004820161133a565b0390fd5b5f7f496e73756666696369656e742062616c616e6365000000000000000000000000910152565b6113c9601460209261038a565b6113d281611395565b0190565b6113eb9060208101905f8183039101526113bc565b90565b156113f557565b6113fd610291565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061142d600482016113d6565b0390fd5b5f1c90565b61144261144791611431565b610ed3565b90565b6114549054611436565b90565b61146090610b1e565b90565b61146c90611457565b90565b61147890610b3a565b90565b60e01b90565b61148a81610630565b0361149157565b5f80fd5b905051906114a282611481565b565b906020828203126114bd576114ba915f01611495565b90565b61029b565b6114ca610291565b3d5f823e3d90fd5b6114db90610b1e565b90565b6114e7906114d2565b90565b6114f390610b3a565b90565b6114ff90610b3a565b90565b9050519061150f826102a6565b565b9060208282031261152a57611527915f01611502565b90565b61029b565b90565b61154661154161154b9261152f565b610b1b565b610630565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61158761158d91610630565b91610630565b90039060ff821161159a57565b61154e565b6115a890610630565b604d81116115b657600a0a90565b61154e565b6115ca6115d0919392936102a3565b926102a3565b916115dc8382026102a3565b9281840414901517156115eb57565b61154e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61162961162f916102a3565b916102a3565b90811561163a570490565b6115f0565b61164e611654919392936102a3565b926102a3565b820391821161165f57565b61154e565b9050519061167182610507565b565b9060208282031261168c57611689915f01611664565b90565b61029b565b9160206116b29294936116ab60408201965f830190610a27565b01906104b0565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b6116d96116de91611431565b6116b4565b90565b6116eb90546116cd565b90565b6116f790610b3a565b90565b90505190611707826102ee565b565b906020828203126117225761171f915f016116fa565b90565b61029b565b61173361173891611431565b610691565b90565b6117459054611727565b90565b5f1b90565b906117787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91611748565b9181191691161790565b61179661179161179b926102a3565b610b1b565b6102a3565b90565b90565b906117b66117b16117bd92611782565b61179e565b825461174d565b9055565b906117de826117d86117d25f6112de565b916102a3565b11611352565b6118036117ea33612bbf565b6117fc6117f6856102a3565b916102a3565b10156113ee565b611838602061182261181d611818600161144a565b611463565b61146f565b63313ce56790611830610291565b93849261147b565b825281806118486004820161033e565b03915afa908115611f02575f91611ed4575b506118ac602061187a611875611870600161144a565b6114de565b6114ea565b6370a08231906118a161188c306114f6565b92611895610291565b9586948593849361147b565b835260048301610a34565b03915afa908115611ecf575f91611ea1575b509261191060206118de6118d96118d45f61144a565b6114de565b6114ea565b6370a08231906119056118f0306114f6565b926118f9610291565b9586948593849361147b565b835260048301610a34565b03915afa908115611e9c576119af9361199561198e61198061197961196b6119646119a9986119a4985f91611e6e575b509c61195e61195960126119548b91611532565b61157b565b61159f565b906115bb565b9b896115bb565b611973612091565b9061161d565b99876115bb565b611988612091565b9061161d565b9433613e3c565b61199f6012611532565b61157b565b61159f565b9061161d565b91906119ba82613ebb565b926119d46119cf6119ca5f61144a565b6114de565b6114ea565b602063a9059cbb918490611a055f6119ed898b9061163f565b95611a106119f9610291565b9788968795869461147b565b845260048401611691565b03925af18015611e6957611e3d575b50611a2984613ebb565b91611a576020611a41611a3c60026116e1565b6116ee565b6304cc732590611a4f610291565b93849261147b565b82528180611a676004820161033e565b03915afa908115611e38575f91611e0a575b5092611aa86020611a92611a8d60026116e1565b6116ee565b633b19e84a90611aa0610291565b93849261147b565b82528180611ab86004820161033e565b03915afa908115611e05575f91611dd7575b50956020611ae7611ae2611add5f61144a565b6114de565b6114ea565b9163a9059cbb92611b165f611afe8a94889061163f565b95611b21611b0a610291565b9788968795869461147b565b845260048401611691565b03925af18015611dd257611da6575b506020611b4c611b47611b425f61144a565b6114de565b6114ea565b9163a9059cbb92611b715f8a9395611b7c611b65610291565b9788968795869461147b565b845260048401611691565b03925af18015611da157611d75575b506020611b9783613ebb565b92611bb2611bad611ba8600161144a565b6114de565b6114ea565b611bdf5f611bc763a9059cbb9694889061163f565b95611bea611bd3610291565b9788968795869461147b565b845260048401611691565b03925af18015611d7057611d44575b506020611c0582613ebb565b91611c1f611c1a611c155f61144a565b6114de565b6114ea565b611c4c5f611c3463a9059cbb9794879061163f565b96611c57611c40610291565b9889968795869461147b565b845260048401611691565b03925af1918215611d3f57602092611d14575b50611c84611c7f611c7a5f61144a565b6114de565b6114ea565b611ca75f63a9059cbb969396611cb2611c9b610291565b9889968795869461147b565b845260048401611691565b03925af1908115611d0f57611ce192611cda92611ce3575b50611cd5600461173b565b61163f565b60046117a1565b565b611d039060203d8111611d08575b611cfb8183610766565b810190611673565b611cca565b503d611cf1565b6114c2565b611d3390833d8111611d38575b611d2b8183610766565b810190611673565b611c6a565b503d611d21565b6114c2565b611d649060203d8111611d69575b611d5c8183610766565b810190611673565b611bf9565b503d611d52565b6114c2565b611d959060203d8111611d9a575b611d8d8183610766565b810190611673565b611b8b565b503d611d83565b6114c2565b611dc69060203d8111611dcb575b611dbe8183610766565b810190611673565b611b30565b503d611db4565b6114c2565b611df8915060203d8111611dfe575b611df08183610766565b810190611709565b5f611aca565b503d611de6565b6114c2565b611e2b915060203d8111611e31575b611e238183610766565b810190611709565b5f611a79565b503d611e19565b6114c2565b611e5d9060203d8111611e62575b611e558183610766565b810190611673565b611a1f565b503d611e4b565b6114c2565b611e8f915060203d8111611e95575b611e878183610766565b810190611511565b5f611940565b503d611e7d565b6114c2565b611ec2915060203d8111611ec8575b611eba8183610766565b810190611511565b5f6118be565b503d611eb0565b6114c2565b611ef5915060203d8111611efb575b611eed8183610766565b8101906114a4565b5f61185a565b503d611ee3565b6114c2565b90611f11916112ab565b565b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b9060016002830492168015611f65575b6020831014611f6057565b611f18565b91607f1691611f55565b60209181520190565b5f5260205f2090565b905f9291805490611f9b611f9483611f45565b8094611f6f565b916001811690815f14611ff25750600114611fb6575b505050565b611fc39192939450611f78565b915f925b818410611fda57505001905f8080611fb1565b60018160209295939554848601520191019290611fc7565b92949550505060ff19168252151560200201905f8080611fb1565b9061201791611f81565b90565b9061203a6120339261202a610291565b9384809261200d565b0383610766565b565b6120459061201a565b90565b612050611f13565b50612064600361205e613fe1565b0161203c565b90565b5f90565b61208891612077612067565b50612080614005565b919091614012565b600190565b5f90565b61209961208d565b506120ad60026120a7613fe1565b0161173b565b90565b906120c2916120bd614022565b612109565b565b906120d060ff91611748565b9181191691161790565b6120e390610453565b90565b90565b906120fe6120f9612105926120da565b6120e6565b82546120c4565b9055565b61211861211d92916009610b52565b6120e9565b565b90612129916120b0565b565b9161215592612138612067565b5061214d612144614005565b829084916140d0565b91909161419b565b600190565b61216390610b1e565b90565b61216f9061215a565b90565b61217b90610b3a565b90565b6040906121a76121ae949695939661219d60608401985f850190610a27565b6020830190610a27565b01906104b0565b565b6121bf6121c5919392936102a3565b926102a3565b82018092116121d057565b61154e565b6121dd61208d565b5061220b60206121f56121f060026116e1565b6116ee565b63bb3ba04c90612203610291565b93849261147b565b8252818061221b6004820161033e565b03915afa80156125c857612236915f9161259a575b50612166565b612263602061224d61224860026116e1565b6116ee565b631bf01e9b9061225b610291565b93849261147b565b825281806122736004820161033e565b03915afa908115612595575f91612567575b50906122905f6112de565b916122e160206122af6122aa6122a55f61144a565b6114de565b6114ea565b6370a08231906122d66122c1306114f6565b926122ca610291565b9586948593849361147b565b835260048301610a34565b03915afa908115612562575f91612534575b5092612346602061231461230f61230a600161144a565b6114de565b6114ea565b6370a082319061233b612326306114f6565b9261232f610291565b9586948593849361147b565b835260048301610a34565b03915afa90811561252f575f91612501575b50908461236d6123675f6112de565b916102a3565b14806124e7575b6124d657602061238385612172565b63248391ff906123b0612396600161144a565b926123bb88976123a4610291565b9889968795869561147b565b85526004850161217e565b03915afa9081156124d1576123d7925f926124a1575b506121b0565b916123e15f61144a565b6123f36123ed846102e2565b916102e2565b145f1461240a57505061240691906121b0565b5b90565b90612416602092612172565b61244063248391ff61244b61242a5f61144a565b9497612434610291565b9889968795869561147b565b85526004850161217e565b03915afa90811561249c57612467925f9261246c575b506121b0565b612407565b61248e91925060203d8111612495575b6124868183610766565b810190611511565b905f612461565b503d61247c565b6114c2565b6124c391925060203d81116124ca575b6124bb8183610766565b810190611511565b905f6123d1565b503d6124b1565b6114c2565b50505050506124e45f6112de565b90565b50816124fb6124f55f6112de565b916102a3565b14612374565b612522915060203d8111612528575b61251a8183610766565b810190611511565b5f612358565b503d612510565b6114c2565b612555915060203d811161255b575b61254d8183610766565b810190611511565b5f6122f3565b503d612543565b6114c2565b612588915060203d811161258e575b6125808183610766565b810190611709565b5f612285565b503d612576565b6114c2565b6125bb915060203d81116125c1575b6125b38183610766565b810190611709565b5f612230565b503d6125a9565b6114c2565b5f90565b6125d96125cd565b506125e46012611532565b90565b6125ef614022565b6125f76125f9565b565b6126016142e1565b565b61260b6125e7565b565b9061261f9161261a6142f7565b612621565b565b906126349161262f816143c9565b614439565b565b906126409161260d565b565b5f90565b61265790612652614577565b6126a5565b90565b90565b61267161266c6126769261265a565b611748565b6108de565b90565b6126a27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61265d565b90565b506126ae612679565b90565b6126c16126bc612642565b612646565b90565b6126d06126d591611431565b610b68565b90565b6126e290546126c4565b90565b6126ed612067565b506127005f6126fa6145f5565b016126d8565b90565b9061271591612710613d29565b61271f565b61271d613dd5565b565b906127319161272c613df2565b6127ce565b565b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b6127666020809261038a565b61276f81612733565b0190565b6127889060208101905f81830391015261275a565b90565b1561279257565b61279a610291565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806127ca60048201612773565b0390fd5b6127ea816127e46127de5f6112de565b916102a3565b1161278b565b6128036127fe6127f95f61144a565b6114de565b6114ea565b60206323b872dd9133906128335f61281a306114f6565b9561283e88612827610291565b9889978896879561147b565b85526004850161217e565b03925af18015612b9857612b6c575b5061287b602061286561286060026116e1565b6116ee565b6304cc732590612873610291565b93849261147b565b8252818061288b6004820161033e565b03915afa908115612b67575f91612b39575b50906128cc60206128b66128b160026116e1565b6116ee565b633b19e84a906128c4610291565b93849261147b565b825281806128dc6004820161033e565b03915afa908115612b34575f91612b06575b50916128f982613ebb565b9061290382613ebb565b602061291e6129196129145f61144a565b6114de565b6114ea565b63a9059cbb939061294c5f61293488879061163f565b96612957612940610291565b9889968795869461147b565b845260048401611691565b03925af1918215612b0157602092612ad6575b5061298461297f61297a5f61144a565b6114de565b6114ea565b6129a75f63a9059cbb9793976129b261299b610291565b998a968795869461147b565b845260048401611691565b03925af1918215612ad157612a01936129d093612aa5575b5061163f565b60206129eb6129e66129e15f61144a565b611463565b61146f565b63313ce567906129f9610291565b94859261147b565b82528180612a116004820161033e565b03915afa8015612aa057612a7093612a54612a5a92612a69955f91612a72575b50612a4e612a498692612a446012611532565b61157b565b61159f565b906115bb565b90614619565b612a64600461173b565b6121b0565b60046117a1565b565b612a93915060203d8111612a99575b612a8b8183610766565b8101906114a4565b5f612a31565b503d612a81565b6114c2565b612ac59060203d8111612aca575b612abd8183610766565b810190611673565b6129ca565b503d612ab3565b6114c2565b612af590833d8111612afa575b612aed8183610766565b810190611673565b61296a565b503d612ae3565b6114c2565b612b27915060203d8111612b2d575b612b1f8183610766565b810190611709565b5f6128ee565b503d612b15565b6114c2565b612b5a915060203d8111612b60575b612b528183610766565b810190611709565b5f61289d565b503d612b48565b6114c2565b612b8c9060203d8111612b91575b612b848183610766565b810190611673565b61284d565b503d612b7a565b6114c2565b90612ba791612703565b565b90612bb390610b46565b5f5260205260405f2090565b612bde612be391612bce61208d565b505f612bd8613fe1565b01612ba9565b61173b565b90565b612bee614022565b612bf6612c20565b565b612c0c612c07612c11926112db565b610b1b565b6102c9565b90565b612c1d90612bf8565b90565b612c31612c2c5f612c14565b614697565b565b612c3b612be6565b565b5f90565b612c49612c3d565b50612c5c612c5760026116e1565b6116ee565b90565b612c67614022565b612c6f612c71565b565b612c7961476d565b565b612c83612c5f565b565b612c8d612c3d565b50612ca05f612c9a614777565b0161144a565b90565b612cab611f13565b50612cbf6004612cb9613fe1565b0161203c565b90565b612cdf91612cce612067565b50612cd7614005565b91909161419b565b600190565b60401c90565b612cf6612cfb91612ce4565b610b68565b90565b612d089054612cea565b90565b67ffffffffffffffff1690565b612d24612d2991611431565b612d0b565b90565b612d369054612d18565b90565b90612d4c67ffffffffffffffff91611748565b9181191691161790565b612d6a612d65612d6f92610dc9565b610b1b565b610dc9565b90565b90565b90612d8a612d85612d9192612d56565b612d72565b8254612d39565b9055565b60401b90565b90612daf68ff000000000000000091612d95565b9181191691161790565b90612dce612dc9612dd5926120da565b6120e6565b8254612d9b565b9055565b612de290610dc9565b9052565b9190612df9905f60208501940190612dd9565b565b929591939490948296612e0c61479b565b95612e185f8801612cfe565b8015612ec9575b612e8d57612e5297612e4996612e378b5f8b01612d75565b612e4460015f8b01612db9565b612fe3565b5f809101612db9565b612e887fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612e7f610291565b91829182612de6565b0390a1565b612e95610291565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280612ec56004820161033e565b0390fd5b50612ed55f8801612d2c565b612ee7612ee18b610dc9565b91610dc9565b1015612e1f565b90612f0d73ffffffffffffffffffffffffffffffffffffffff91611748565b9181191691161790565b90565b90612f2f612f2a612f3692610b46565b612f17565b8254612eee565b9055565b612f4390610b1e565b90565b612f4f90612f3a565b90565b612f5b90612f3a565b90565b90565b90612f76612f71612f7d92612f52565b612f5e565b8254612eee565b9055565b90565b612f98612f93612f9d92612f81565b610b1b565b6102a3565b90565b612fa990610b1e565b90565b612fb590612fa0565b90565b612fc190610b3a565b90565b90565b612fdb612fd6612fe092612fc4565b610b1b565b6102a3565b90565b61303692965061303d9361300861306397969361303193613003336147dd565b614808565b61301061481e565b613018614844565b61302061486a565b61302a885f612f1a565b6001612f1a565b612f46565b6002612f61565b61305c6130556101686130508491612f84565b6115bb565b60076117a1565b60086117a1565b61306e4360056117a1565b61309d602061308761308261271094612fac565b612fb8565b63313ce56790613095610291565b93849261147b565b825281806130ad6004820161033e565b03915afa918215613115576130d96130d36130e5946130de945f916130e7575b5061159f565b91612fc7565b6115bb565b60066117a1565b565b613108915060203d811161310e575b6131008183610766565b8101906114a4565b5f6130cd565b503d6130f6565b6114c2565b90613129969594939291612dfb565b565b613133613d29565b61313b613145565b613143613dd5565b565b61314d613df2565b613155613314565b565b5f7f776169742074696c6c206e657874207265696e76657374206379636c65000000910152565b61318b601d60209261038a565b61319481613157565b0190565b6131ad9060208101905f81830391015261317e565b90565b156131b757565b6131bf610291565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806131ef60048201613198565b0390fd5b5f7f4e6f7468696e6720746f20737761700000000000000000000000000000000000910152565b613227600f60209261038a565b613230816131f3565b0190565b6132499060208101905f81830391015261321a565b90565b1561325357565b61325b610291565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061328b60048201613234565b0390fd5b61329890610b1e565b90565b6132a49061328f565b90565b6132b090610b3a565b90565b6132e86132ef946132de6060949897956132d4608086019a5f870190610a27565b6020850190610a27565b60408301906104b0565b0190610a27565b565b91602061331292949361330b60408201965f8301906104b0565b01906104b0565b565b61334c61332b43613325600561173b565b9061163f565b61334661334061333b600861173b565b6102a3565b916102a3565b116131b0565b61335461358b565b6133708161336a6133645f6112de565b916102a3565b1161324c565b61339d602061338761338260026116e1565b6116ee565b6382755ebb90613395610291565b93849261147b565b825281806133ad6004820161033e565b03915afa801561357c576133c8915f9161354e575b5061329b565b6133e16133dc6133d75f61144a565b6114de565b6114ea565b90602063095ea7b3926133f3836132a7565b906134115f879661341c613405610291565b9889968795869461147b565b845260048401611691565b03925af1918215613549576134369261351d575b506132a7565b6020632d6bc8ea916134475f61144a565b906134795f613456600161144a565b9561348488613464306114f6565b9061346d610291565b998a988997889661147b565b8652600486016132b3565b03925af1908115613518575f916134ea575b50906134a34360056117a1565b3390916134d07f129ac658e77b551b004790e5bd957532cef552c50852a1ee0e38dd3e23fe85db92610b46565b926134e56134dc610291565b928392836132f1565b0390a2565b61350b915060203d8111613511575b6135038183610766565b810190611511565b5f613496565b503d6134f9565b6114c2565b61353d9060203d8111613542575b6135358183610766565b810190611673565b613430565b503d61352b565b6114c2565b61356f915060203d8111613575575b6135678183610766565b810190611709565b5f6133c2565b503d61355d565b6114c2565b61358961312b565b565b61359361208d565b506135e460206135b26135ad6135a85f61144a565b6114de565b6114ea565b6370a08231906135d96135c4306114f6565b926135cd610291565b9586948593849361147b565b835260048301610a34565b03915afa90811561368e5761362991613619915f91613660575b506136134361360d600561173b565b9061163f565b906115bb565b613623600761173b565b9061161d565b8061364561363f61363a600661173b565b6102a3565b916102a3565b115f1461365b5750613657600661173b565b5b90565b613658565b613681915060203d8111613687575b6136798183610766565b810190611511565b5f6135fe565b503d61366f565b6114c2565b9061369d90610b46565b5f5260205260405f2090565b6136d7916136cd6136d2926136bc61208d565b5060016136c7613fe1565b01613693565b612ba9565b61173b565b90565b90565b6136f16136ec6136f6926136da565b610b1b565b6102a3565b90565b61370161208d565b5061370a612091565b61371c6137165f6112de565b916102a3565b1461387f5761374e602061373861373360026116e1565b6116ee565b631bf01e9b90613746610291565b93849261147b565b8252818061375e6004820161033e565b03915afa90811561387a5761378861378361379e936020935f9161384d575b50611463565b61146f565b63313ce56790613796610291565b93849261147b565b825281806137ae6004820161033e565b03915afa8015613848576137f26137e56137e061380993613817955f9161381a575b506137db6012611532565b61157b565b61159f565b6137ed6121d5565b6115bb565b613803670de0b6b3a76400006136dd565b906115bb565b613811612091565b9061161d565b90565b61383b915060203d8111613841575b6138338183610766565b8101906114a4565b5f6137d0565b503d613829565b6114c2565b61386d9150843d8111613873575b6138658183610766565b810190611709565b5f61377d565b503d61385b565b6114c2565b6138885f6112de565b90565b61389f61389a6138a4926112db565b610b1b565b610dc9565b90565b90565b6138be6138b96138c3926138a7565b610b1b565b610dc9565b90565b6138cf90610b3a565b90565b6138db906138aa565b9052565b91906138f2905f602085019401906138d2565b565b9294919493909361390361479b565b956139186139125f8901612cfe565b15610453565b956139245f8901612d2c565b806139376139315f61388b565b91610dc9565b1480613a71575b9061395261394c60016138aa565b91610dc9565b1480613a49575b613964909115610453565b9081613a38575b506139fc576139949561398961398160016138aa565b5f8b01612d75565b876139ea575b613a78565b61399c575b50565b6139a9905f809101612db9565b60016139e17fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916139d8610291565b918291826138df565b0390a15f613999565b6139f760015f8b01612db9565b61398f565b613a04610291565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613a346004820161033e565b0390fd5b613a43915015610453565b5f61396b565b50613964613a56306138c6565b3b613a69613a635f6112de565b916102a3565b149050613959565b508761393e565b93613ac4613ad0939694613a9b613ac994613af698613a96336147dd565b614808565b613aa361481e565b613aab614844565b613ab361486a565b613abd885f612f1a565b6001612f1a565b612f46565b6002612f61565b613aef613ae8610168613ae38491612f84565b6115bb565b60076117a1565b60086117a1565b613b014360056117a1565b613b306020613b1a613b1561271094612fac565b612fb8565b63313ce56790613b28610291565b93849261147b565b82528180613b406004820161033e565b03915afa918215613ba857613b6c613b66613b7894613b71945f91613b7a575b5061159f565b91612fc7565b6115bb565b60066117a1565b565b613b9b915060203d8111613ba1575b613b938183610766565b8101906114a4565b5f613b60565b503d613b89565b6114c2565b90613bbb95949392916138f4565b565b613bc5612067565b50613bce61358b565b613be243613bdc600561173b565b9061163f565b613bfd613bf7613bf2600861173b565b6102a3565b916102a3565b119081613c09575b5090565b9050613c1d613c175f6112de565b916102a3565b115f613c05565b613c3590613c30614022565b613c37565b565b80613c52613c4c613c475f612c14565b6102e2565b916102e2565b14613c6257613c6090614697565b565b613ca5613c6e5f612c14565b613c76610291565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b613cb290613c24565b565b613cc590613cc0614022565b613cc7565b565b613ce9613cf091613cd98160086117a1565b613ce4610168612f84565b6115bb565b60076117a1565b565b613cfb90613cb4565b565b90565b613d14613d0f613d1992613cfd565b610b1b565b6102a3565b90565b613d266002613d00565b90565b613d31614874565b613d3c5f820161173b565b613d55613d4f613d4a613d1c565b6102a3565b916102a3565b14613d7057613d6e905f613d67613d1c565b91016117a1565b565b613d78610291565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280613da86004820161033e565b0390fd5b613dc0613dbb613dc5926138a7565b610b1b565b6102a3565b90565b613dd26001613dac565b90565b613df0613de0614874565b5f613de9613dc8565b91016117a1565b565b613dfa6126e5565b613e0057565b613e08610291565b7fd93c066500000000000000000000000000000000000000000000000000000000815280613e386004820161033e565b0390fd5b9081613e58613e52613e4d5f612c14565b6102e2565b916102e2565b14613e7457613e729190613e6b5f612c14565b90916148a6565b565b613eb7613e805f612c14565b613e88610291565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b613ec361208d565b50613ef16020613edb613ed660026116e1565b6116ee565b6385462d6f90613ee9610291565b93849261147b565b82528180613f016004820161033e565b03915afa908115613fdc575f91613fae575b5090613f426020613f2c613f2760026116e1565b6116ee565b634f4608a290613f3a610291565b93849261147b565b82528180613f526004820161033e565b03915afa928315613fa957613f7893613f73925f91613f7b575b50926115bb565b61161d565b90565b613f9c915060203d8111613fa2575b613f948183610766565b810190611511565b5f613f6c565b503d613f8a565b6114c2565b613fcf915060203d8111613fd5575b613fc78183610766565b810190611511565b5f613f13565b503d613fbd565b6114c2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b61400d612c3d565b503390565b916140209291600192614a4c565b565b61402a612c85565b61404361403d614038614005565b6102e2565b916102e2565b0361404a57565b61408c614055614005565b61405d610291565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b6040906140b96140c094969593966140af60608401985f850190610a27565b60208301906104b0565b01906104b0565b565b906140cd91036102a3565b90565b9291926140de8183906136a9565b908161411261410c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102a3565b916102a3565b0361411f575b5050509050565b8161413261412c876102a3565b916102a3565b106141585761414f93946141479193926140c2565b905f92614a4c565b805f8080614118565b5061419784929192614168610291565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501614090565b0390fd5b91826141b76141b16141ac5f612c14565b6102e2565b916102e2565b1461423157816141d76141d16141cc5f612c14565b6102e2565b916102e2565b146141ea576141e8929190916148a6565b565b61422d6141f65f612c14565b6141fe610291565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b61427461423d5f612c14565b614245610291565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b614280614ba6565b61428861428a565b565b61429e6142956145f5565b5f8091016120e9565b6142a6614005565b6142dc7f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa916142d3610291565b91829182610a34565b0390a1565b6142e9614278565b565b6142f490610b3a565b90565b614300306142eb565b61433261432c7f00000000000000000000000000000000000000000000000000000000000000006102e2565b916102e2565b14801561437c575b61434057565b614348610291565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806143786004820161033e565b0390fd5b50614385614bf9565b6143b76143b17f00000000000000000000000000000000000000000000000000000000000000006102e2565b916102e2565b141561433a565b506143c7614022565b565b6143d2906143be565b565b6143dd90610b1e565b90565b6143e9906143d4565b90565b6143f590610b3a565b90565b614401816108de565b0361440857565b5f80fd5b90505190614419826143f8565b565b9060208282031261443457614431915f0161440c565b90565b61029b565b9190614467602061445161444c866143e0565b6143ec565b6352d1902d9061445f610291565b93849261147b565b825281806144776004820161033e565b03915afa80915f92614547575b50155f146144d857505090600161449957505b565b6144d4906144a5610291565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b92836144f36144ed6144e8612679565b6108de565b916108de565b0361450857614503929350614c23565b614497565b61454384614514610291565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016108ee565b0390fd5b61456991925060203d8111614570575b6145618183610766565b81019061441b565b905f614484565b503d614557565b614580306142eb565b6145b26145ac7f00000000000000000000000000000000000000000000000000000000000000006102e2565b916102e2565b036145b957565b6145c1610291565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806145f16004820161033e565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b8061463461462e6146295f612c14565b6102e2565b916102e2565b146146505761464e916146465f612c14565b9190916148a6565b565b61469361465c5f612c14565b614664610291565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b61469f614777565b6146b76146ad5f830161144a565b915f849101612f1a565b906146eb6146e57f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610b46565b91610b46565b916146f4610291565b806146fe8161033e565b0390a3565b61470b613df2565b614713614715565b565b61472a6147206145f5565b5f600191016120e9565b614732614005565b6147687f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589161475f610291565b91829182610a34565b0390a1565b614775614703565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6147d0906147cb614cac565b6147d2565b565b6147db90614d84565b565b6147e6906147bf565b565b906147fa916147f5614cac565b6147fc565b565b9061480691614fc7565b565b90614812916147e8565b565b61481c614cac565b565b614826614814565b565b614830614cac565b61483861483a565b565b614842615002565b565b61484c614828565b565b614856614cac565b61485e614860565b565b614868615034565b565b61487261484e565b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906148a391016102a3565b90565b9190916148b1613fe1565b816148cc6148c66148c15f612c14565b6102e2565b916102e2565b145f146149b7576148f3836148ed60028401916148e88361173b565b6121b0565b906117a1565b5b8361490f6149096149045f612c14565b6102e2565b916102e2565b145f14614988576149379061493160028592019161492c8361173b565b6140c2565b906117a1565b5b91909161498361497161496b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93610b46565b93610b46565b9361497a610291565b918291826104bd565b0390a3565b6149b2906149ac61499d5f8693018790612ba9565b916149a78361173b565b614898565b906117a1565b614938565b6149cc6149c75f83018490612ba9565b61173b565b806149df6149d9866102a3565b916102a3565b10614a09576149f2614a049185906140c2565b6149ff5f84018590612ba9565b6117a1565b6148f4565b91614a4891509192614a19610291565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501614090565b0390fd5b9092614a56613fe1565b82614a71614a6b614a665f612c14565b6102e2565b916102e2565b14614b5f5784614a91614a8b614a865f612c14565b6102e2565b916102e2565b14614b1857614ab890614ab3614aac60018793018690613693565b8790612ba9565b6117a1565b614ac2575b505050565b919091614b0d614afb614af57f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593610b46565b93610b46565b93614b04610291565b918291826104bd565b0390a35f8080614abd565b614b5b614b245f612c14565b614b2c610291565b9182917f94280d6200000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b614ba2614b6b5f612c14565b614b73610291565b9182917fe602df0500000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b614bb7614bb16126e5565b15610453565b614bbd57565b614bc5610291565b7f8dfc202b00000000000000000000000000000000000000000000000000000000815280614bf56004820161033e565b0390fd5b614c01612c3d565b50614c1c5f614c16614c11612679565b61503e565b0161144a565b90565b5190565b90614c2d82615041565b81614c587fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610b46565b90614c61610291565b80614c6b8161033e565b0390a2614c7781614c1f565b614c89614c835f6112de565b916102a3565b115f14614c9d57614c9991615151565b505b565b5050614ca76150b6565b614c9b565b614cbd614cb7615180565b15610453565b614cc357565b614ccb610291565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280614cfb6004820161033e565b0390fd5b614d1090614d0b614cac565b614d12565b565b80614d2d614d27614d225f612c14565b6102e2565b916102e2565b14614d3d57614d3b90614697565b565b614d80614d495f612c14565b614d51610291565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b614d8d90614cff565b565b90614da191614d9c614cac565b614fa3565b565b601f602091010490565b1b90565b91906008614deb910291614de57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84614dad565b92614dad565b9181191691161790565b9190614e0b614e06614e1393611782565b61179e565b908354614db1565b9055565b614e2991614e2361208d565b91614df5565b565b5b818110614e37575050565b80614e445f600193614e17565b01614e2c565b9190601f8111614e5a575b505050565b614e66614e8b93611f78565b906020614e7284614da3565b83019310614e93575b614e8490614da3565b0190614e2b565b5f8080614e55565b9150614e8481929050614e7b565b90614eb1905f199060080261068d565b191690565b81614ec091614ea1565b906002021790565b90614ed281610386565b9067ffffffffffffffff8211614f9257614ef682614ef08554611f45565b85614e4a565b602090601f8311600114614f2a57918091614f19935f92614f1e575b5050614eb6565b90555b565b90915001515f80614f12565b601f19831691614f3985611f78565b925f5b818110614f7a57509160029391856001969410614f60575b50505002019055614f1c565b614f70910151601f841690614ea1565b90555f8080614f54565b91936020600181928787015181550195019201614f3c565b610739565b90614fa191614ec8565b565b6004614fc592614fbe614fb4613fe1565b9360038501614f97565b9101614f97565b565b90614fd191614d8f565b565b614fdb614cac565b614fe3614fe5565b565b615000614ff0614874565b5f614ff9613dc8565b91016117a1565b565b61500a614fd3565b565b615014614cac565b61501c61501e565b565b6150326150296145f5565b5f8091016120e9565b565b61503c61500c565b565b90565b803b61505561504f5f6112de565b916102a3565b1461507757615075905f61506f61506a612679565b61503e565b01612f1a565b565b6150b290615083610291565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b346150c96150c35f6112de565b916102a3565b116150d057565b6150d8610291565b7fb398979f000000000000000000000000000000000000000000000000000000008152806151086004820161033e565b0390fd5b606090565b9061512361511e836107a4565b61078f565b918252565b3d5f14615143576151383d615111565b903d5f602084013e5b565b61514b61510c565b90615141565b5f8061517d9361515f61510c565b508390602081019051915af490615174615128565b9091909161519e565b90565b615188612067565b5061519b5f61519561479b565b01612cfe565b90565b906151b2906151ab61510c565b5015610453565b5f146151be5750615242565b6151c782614c1f565b6151d96151d35f6112de565b916102a3565b1480615227575b6151e8575090565b615223906151f4610291565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b50803b61523c6152365f6112de565b916102a3565b146151e0565b61524b81614c1f565b61525d6152575f6112de565b916102a3565b115f1461526c57805190602001fd5b615274610291565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806152a46004820161033e565b0390fdfea26469706673582212200c8dff1d3529d23f5125c5e639a3980721d5f1fac6fe7959f97d618a0c6cfbf864736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x3E JUMPI PUSH2 0x11 PUSH2 0x4D JUMP JUMPDEST PUSH2 0x19 PUSH2 0x43 JUMP JUMPDEST PUSH2 0x52DE PUSH2 0x102 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x4308 ADD MSTORE DUP2 DUP2 PUSH2 0x438D ADD MSTORE PUSH2 0x4588 ADD MSTORE PUSH2 0x52DE SWAP1 RETURN JUMPDEST PUSH2 0x49 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH2 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5F PUSH2 0x61 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69 PUSH2 0x6B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x73 PUSH2 0x75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7D PUSH2 0x7F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x87 PUSH2 0x89 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x91 PUSH2 0x93 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9B PUSH2 0x9D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA5 PUSH2 0xA7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xAF PUSH2 0xF3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD3 PUSH2 0xCE PUSH2 0xD8 SWAP3 PUSH2 0xB1 JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH2 0xB1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE4 SWAP1 PUSH2 0xBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF0 SWAP1 PUSH2 0xDB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC ADDRESS PUSH2 0xE7 JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x12A7 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x28B JUMP JUMPDEST DUP1 PUSH3 0xF714CE EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x1E1BFF3F EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x268 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x36B77107 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0x4FE84C42 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x9AC2A011 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0xB3404EFD EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0xBC4BA731 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xC80B0BAF EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xD53419A3 EQ PUSH2 0x1FA JUMPI DUP1 PUSH4 0xD9D47D69 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0xDB48A5E3 EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xEDF3E29E EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xF267D91B EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0xF661AF29 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xF7FDE10F EQ PUSH2 0x1CD JUMPI PUSH4 0xFDF262B7 SUB PUSH2 0xE JUMPI PUSH2 0x1272 JUMP JUMPDEST PUSH2 0x122E JUMP JUMPDEST PUSH2 0x11EC JUMP JUMPDEST PUSH2 0x119B JUMP JUMPDEST PUSH2 0x1166 JUMP JUMPDEST PUSH2 0x112C JUMP JUMPDEST PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x102D JUMP JUMPDEST PUSH2 0xFCB JUMP JUMPDEST PUSH2 0xF87 JUMP JUMPDEST PUSH2 0xF54 JUMP JUMPDEST PUSH2 0xF1F JUMP JUMPDEST PUSH2 0xE99 JUMP JUMPDEST PUSH2 0xD3B JUMP JUMPDEST PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0xCB3 JUMP JUMPDEST PUSH2 0xBE2 JUMP JUMPDEST PUSH2 0xBAD JUMP JUMPDEST PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0xAB1 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST PUSH2 0xA49 JUMP JUMPDEST PUSH2 0x9F4 JUMP JUMPDEST PUSH2 0x9BF JUMP JUMPDEST PUSH2 0x96D JUMP JUMPDEST PUSH2 0x938 JUMP JUMPDEST PUSH2 0x903 JUMP JUMPDEST PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x870 JUMP JUMPDEST PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x6C9 JUMP JUMPDEST PUSH2 0x658 JUMP JUMPDEST PUSH2 0x5FB JUMP JUMPDEST PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x557 JUMP JUMPDEST PUSH2 0x4D2 JUMP JUMPDEST PUSH2 0x47A JUMP JUMPDEST PUSH2 0x3F1 JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2AF DUP2 PUSH2 0x2A3 JUMP JUMPDEST SUB PUSH2 0x2B6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x2C7 DUP3 PUSH2 0x2A6 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2EB SWAP1 PUSH2 0x2C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F7 DUP2 PUSH2 0x2E2 JUMP JUMPDEST SUB PUSH2 0x2FE JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x30F DUP3 PUSH2 0x2EE JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x339 JUMPI DUP1 PUSH2 0x32D PUSH2 0x336 SWAP3 PUSH0 DUP7 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x302 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x372 JUMPI PUSH2 0x35C PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x311 JUMP JUMPDEST SWAP1 PUSH2 0x1F07 JUMP JUMPDEST PUSH2 0x364 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x36E DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x381 JUMPI JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x3C7 PUSH2 0x3D0 PUSH1 0x20 SWAP4 PUSH2 0x3D5 SWAP4 PUSH2 0x3BE DUP2 PUSH2 0x386 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x38A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x393 JUMP JUMPDEST PUSH2 0x39E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3EE SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x3A8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x421 JUMPI PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x40C PUSH2 0x2048 JUMP JUMPDEST PUSH2 0x414 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x44E JUMPI DUP1 PUSH2 0x442 PUSH2 0x44B SWAP3 PUSH0 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x461 SWAP1 PUSH2 0x453 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x478 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x458 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4AB JUMPI PUSH2 0x4A7 PUSH2 0x496 PUSH2 0x490 CALLDATASIZE PUSH1 0x4 PUSH2 0x426 JUMP JUMPDEST SWAP1 PUSH2 0x206B JUMP JUMPDEST PUSH2 0x49E PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x4B9 SWAP1 PUSH2 0x2A3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4D0 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x502 JUMPI PUSH2 0x4E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x4FE PUSH2 0x4ED PUSH2 0x2091 JUMP JUMPDEST PUSH2 0x4F5 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x510 DUP2 PUSH2 0x453 JUMP JUMPDEST SUB PUSH2 0x517 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x528 DUP3 PUSH2 0x507 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x552 JUMPI DUP1 PUSH2 0x546 PUSH2 0x54F SWAP3 PUSH0 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x51B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x586 JUMPI PUSH2 0x570 PUSH2 0x56A CALLDATASIZE PUSH1 0x4 PUSH2 0x52A JUMP JUMPDEST SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH2 0x578 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x582 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x5C0 JUMPI PUSH2 0x5BD PUSH2 0x5A6 DUP5 PUSH0 DUP6 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH2 0x5B4 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x5F6 JUMPI PUSH2 0x5F2 PUSH2 0x5E1 PUSH2 0x5DB CALLDATASIZE PUSH1 0x4 PUSH2 0x58B JUMP JUMPDEST SWAP2 PUSH2 0x212B JUMP JUMPDEST PUSH2 0x5E9 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x62B JUMPI PUSH2 0x60B CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x627 PUSH2 0x616 PUSH2 0x21D5 JUMP JUMPDEST PUSH2 0x61E PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x63F SWAP1 PUSH2 0x630 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x656 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x636 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x688 JUMPI PUSH2 0x668 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x684 PUSH2 0x673 PUSH2 0x25D1 JUMP JUMPDEST PUSH2 0x67B PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x643 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A4 SWAP1 PUSH1 0x8 PUSH2 0x6A9 SWAP4 MUL PUSH2 0x68D JUMP JUMPDEST PUSH2 0x691 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 SWAP2 SLOAD PUSH2 0x694 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6C6 PUSH1 0x4 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6F9 JUMPI PUSH2 0x6D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x6F5 PUSH2 0x6E4 PUSH2 0x6BA JUMP JUMPDEST PUSH2 0x6EC PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x72C JUMPI PUSH2 0x70E CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x716 PUSH2 0x2603 JUMP JUMPDEST PUSH2 0x71E PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x728 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x770 SWAP1 PUSH2 0x39E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x78A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST SWAP1 PUSH2 0x7A2 PUSH2 0x79B PUSH2 0x291 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x766 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7C2 JUMPI PUSH2 0x7BE PUSH1 0x20 SWAP2 PUSH2 0x39E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x7E7 PUSH2 0x7E2 DUP3 PUSH2 0x7A4 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x803 JUMPI PUSH2 0x801 SWAP3 PUSH2 0x7C7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x735 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x826 JUMPI DUP2 PUSH1 0x20 PUSH2 0x823 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x7D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x86B JUMPI PUSH2 0x844 DUP4 PUSH0 DUP4 ADD PUSH2 0x302 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x866 JUMPI PUSH2 0x863 SWAP3 ADD PUSH2 0x808 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH2 0x884 PUSH2 0x87E CALLDATASIZE PUSH1 0x4 PUSH2 0x82B JUMP JUMPDEST SWAP1 PUSH2 0x2636 JUMP JUMPDEST PUSH2 0x88C PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x896 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A6 PUSH1 0x8 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8D9 JUMPI PUSH2 0x8B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x8D5 PUSH2 0x8C4 PUSH2 0x89A JUMP JUMPDEST PUSH2 0x8CC PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8EA SWAP1 PUSH2 0x8DE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x901 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x8E1 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x933 JUMPI PUSH2 0x913 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x92F PUSH2 0x91E PUSH2 0x26B1 JUMP JUMPDEST PUSH2 0x926 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x8EE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x968 JUMPI PUSH2 0x948 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x964 PUSH2 0x953 PUSH2 0x26E5 JUMP JUMPDEST PUSH2 0x95B PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x99C JUMPI PUSH2 0x986 PUSH2 0x980 CALLDATASIZE PUSH1 0x4 PUSH2 0x311 JUMP JUMPDEST SWAP1 PUSH2 0x2B9D JUMP JUMPDEST PUSH2 0x98E PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x998 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x9BA JUMPI PUSH2 0x9B7 SWAP2 PUSH0 ADD PUSH2 0x302 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x9EF JUMPI PUSH2 0x9EB PUSH2 0x9DA PUSH2 0x9D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x9E2 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xA22 JUMPI PUSH2 0xA04 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xA0C PUSH2 0x2C33 JUMP JUMPDEST PUSH2 0xA14 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0xA1E DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0xA30 SWAP1 PUSH2 0x2E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xA47 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xA79 JUMPI PUSH2 0xA59 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xA75 PUSH2 0xA64 PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0xA6C PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xAAC JUMPI PUSH2 0xA8E CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xA96 PUSH2 0x2C7B JUMP JUMPDEST PUSH2 0xA9E PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0xAA8 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xAE1 JUMPI PUSH2 0xAC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xADD PUSH2 0xACC PUSH2 0x2C85 JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xB16 JUMPI PUSH2 0xAF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xB12 PUSH2 0xB01 PUSH2 0x2CA3 JUMP JUMPDEST PUSH2 0xB09 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB32 PUSH2 0xB2D PUSH2 0xB37 SWAP3 PUSH2 0x2C9 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB43 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB4F SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB5C SWAP1 PUSH2 0xB46 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB7E SWAP1 PUSH1 0x8 PUSH2 0xB83 SWAP4 MUL PUSH2 0x68D JUMP JUMPDEST PUSH2 0xB68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB91 SWAP2 SLOAD PUSH2 0xB6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBAA SWAP1 PUSH2 0xBA5 PUSH1 0x9 SWAP2 PUSH0 SWAP3 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0xB86 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xBDD JUMPI PUSH2 0xBD9 PUSH2 0xBC8 PUSH2 0xBC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0xB94 JUMP JUMPDEST PUSH2 0xBD0 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xC13 JUMPI PUSH2 0xC0F PUSH2 0xBFE PUSH2 0xBF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x426 JUMP JUMPDEST SWAP1 PUSH2 0x2CC2 JUMP JUMPDEST PUSH2 0xC06 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC36 JUMPI PUSH2 0xC32 PUSH1 0x20 SWAP2 PUSH2 0x39E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST SWAP1 PUSH2 0xC4D PUSH2 0xC48 DUP4 PUSH2 0xC18 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xC83 PUSH1 0x5 PUSH2 0xC3B JUMP JUMPDEST SWAP1 PUSH2 0xC90 PUSH1 0x20 DUP4 ADD PUSH2 0xC52 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC9A PUSH2 0xC79 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA5 PUSH2 0xC92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB0 PUSH2 0xC9D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xCE3 JUMPI PUSH2 0xCC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xCDF PUSH2 0xCCE PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0xCD6 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0xCF4 PUSH1 0x7 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD27 JUMPI PUSH2 0xD07 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xD23 PUSH2 0xD12 PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0xD1A PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0xD38 PUSH1 0x5 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD6B JUMPI PUSH2 0xD4B CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xD67 PUSH2 0xD56 PUSH2 0xD2C JUMP JUMPDEST PUSH2 0xD5E PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xD85 PUSH2 0xD80 DUP3 PUSH2 0xC18 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xDA1 JUMPI PUSH2 0xD9F SWAP3 PUSH2 0x7C7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x735 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xDC4 JUMPI DUP2 PUSH1 0x20 PUSH2 0xDC1 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xD70 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xDDF DUP2 PUSH2 0xDC9 JUMP JUMPDEST SUB PUSH2 0xDE6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xDF7 DUP3 PUSH2 0xDD6 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xE0 DUP2 DUP4 SUB SLT PUSH2 0xE94 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE8F JUMPI DUP3 PUSH2 0xE22 SWAP2 DUP4 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE8A JUMPI DUP4 PUSH2 0xE43 SWAP2 DUP5 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP3 PUSH2 0xE51 DUP2 PUSH1 0x40 DUP6 ADD PUSH2 0x302 JUMP JUMPDEST SWAP3 PUSH2 0xE5F DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x302 JUMP JUMPDEST SWAP3 PUSH2 0xE87 PUSH2 0xE70 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH2 0xE7E DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0xDEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0xECE JUMPI PUSH2 0xEB8 PUSH2 0xEAC CALLDATASIZE PUSH1 0x4 PUSH2 0xDF9 JUMP JUMPDEST SWAP6 SWAP5 SWAP1 SWAP5 SWAP4 SWAP2 SWAP4 PUSH2 0x311A JUMP JUMPDEST PUSH2 0xEC0 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0xECA DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xEFC SWAP1 PUSH1 0x8 PUSH2 0xF01 SWAP4 MUL PUSH2 0x68D JUMP JUMPDEST PUSH2 0xED3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF0F SWAP2 SLOAD PUSH2 0xEEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF1C PUSH0 DUP1 PUSH2 0xF04 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF4F JUMPI PUSH2 0xF2F CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xF4B PUSH2 0xF3A PUSH2 0xF12 JUMP JUMPDEST PUSH2 0xF42 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xF82 JUMPI PUSH2 0xF64 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xF6C PUSH2 0x3581 JUMP JUMPDEST PUSH2 0xF74 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0xF7E DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xFB7 JUMPI PUSH2 0xF97 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xFB3 PUSH2 0xFA2 PUSH2 0x358B JUMP JUMPDEST PUSH2 0xFAA PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0xFC8 PUSH1 0x6 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xFFB JUMPI PUSH2 0xFDB CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xFF7 PUSH2 0xFE6 PUSH2 0xFBC JUMP JUMPDEST PUSH2 0xFEE PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x1028 JUMPI DUP1 PUSH2 0x101C PUSH2 0x1025 SWAP3 PUSH0 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x302 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x105E JUMPI PUSH2 0x105A PUSH2 0x1049 PUSH2 0x1043 CALLDATASIZE PUSH1 0x4 PUSH2 0x1000 JUMP JUMPDEST SWAP1 PUSH2 0x36A9 JUMP JUMPDEST PUSH2 0x1051 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x1093 JUMPI PUSH2 0x1073 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x108F PUSH2 0x107E PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x1086 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0x1127 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1122 JUMPI DUP4 PUSH2 0x10C3 SWAP2 DUP5 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x111D JUMPI DUP2 PUSH2 0x10E4 SWAP2 DUP6 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP3 PUSH2 0x10F2 DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x302 JUMP JUMPDEST SWAP3 PUSH2 0x111A PUSH2 0x1103 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH2 0x1111 DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x1161 JUMPI PUSH2 0x114B PUSH2 0x113F CALLDATASIZE PUSH1 0x4 PUSH2 0x1098 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x3BAD JUMP JUMPDEST PUSH2 0x1153 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x115D DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x1196 JUMPI PUSH2 0x1176 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x1192 PUSH2 0x1181 PUSH2 0x3BBD JUMP JUMPDEST PUSH2 0x1189 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x11C9 JUMPI PUSH2 0x11B3 PUSH2 0x11AE CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x3CA9 JUMP JUMPDEST PUSH2 0x11BB PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x11C5 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x11E7 JUMPI PUSH2 0x11E4 SWAP2 PUSH0 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x121A JUMPI PUSH2 0x1204 PUSH2 0x11FF CALLDATASIZE PUSH1 0x4 PUSH2 0x11CE JUMP JUMPDEST PUSH2 0x3CF2 JUMP JUMPDEST PUSH2 0x120C PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x1216 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x122B PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x125E JUMPI PUSH2 0x123E CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x125A PUSH2 0x1249 PUSH2 0x121F JUMP JUMPDEST PUSH2 0x1251 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x126F PUSH1 0x1 PUSH0 SWAP1 PUSH2 0xF04 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x12A2 JUMPI PUSH2 0x1282 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x129E PUSH2 0x128D PUSH2 0x1263 JUMP JUMPDEST PUSH2 0x1295 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0x12BD SWAP2 PUSH2 0x12B8 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x12C7 JUMP JUMPDEST PUSH2 0x12C5 PUSH2 0x3DD5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x12D9 SWAP2 PUSH2 0x12D4 PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x17C1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12F2 PUSH2 0x12ED PUSH2 0x12F7 SWAP3 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x536861726573206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x132D PUSH1 0x20 DUP1 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x1336 DUP2 PUSH2 0x12FA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x134F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1321 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1359 JUMPI JUMP JUMPDEST PUSH2 0x1361 PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1391 PUSH1 0x4 DUP3 ADD PUSH2 0x133A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742062616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x13C9 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x13D2 DUP2 PUSH2 0x1395 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x13EB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x13BC JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x13F5 JUMPI JUMP JUMPDEST PUSH2 0x13FD PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x142D PUSH1 0x4 DUP3 ADD PUSH2 0x13D6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x1442 PUSH2 0x1447 SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0xED3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1454 SWAP1 SLOAD PUSH2 0x1436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1460 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x146C SWAP1 PUSH2 0x1457 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1478 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x148A DUP2 PUSH2 0x630 JUMP JUMPDEST SUB PUSH2 0x1491 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x14A2 DUP3 PUSH2 0x1481 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x14BD JUMPI PUSH2 0x14BA SWAP2 PUSH0 ADD PUSH2 0x1495 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH2 0x14CA PUSH2 0x291 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x14DB SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14E7 SWAP1 PUSH2 0x14D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14F3 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14FF SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x150F DUP3 PUSH2 0x2A6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x152A JUMPI PUSH2 0x1527 SWAP2 PUSH0 ADD PUSH2 0x1502 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1546 PUSH2 0x1541 PUSH2 0x154B SWAP3 PUSH2 0x152F JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x630 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1587 PUSH2 0x158D SWAP2 PUSH2 0x630 JUMP JUMPDEST SWAP2 PUSH2 0x630 JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x159A JUMPI JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH2 0x15A8 SWAP1 PUSH2 0x630 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x15B6 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH2 0x15CA PUSH2 0x15D0 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x15DC DUP4 DUP3 MUL PUSH2 0x2A3 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x15EB JUMPI JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1629 PUSH2 0x162F SWAP2 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x163A JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x15F0 JUMP JUMPDEST PUSH2 0x164E PUSH2 0x1654 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 PUSH2 0x2A3 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x165F JUMPI JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1671 DUP3 PUSH2 0x507 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x168C JUMPI PUSH2 0x1689 SWAP2 PUSH0 ADD PUSH2 0x1664 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x16B2 SWAP3 SWAP5 SWAP4 PUSH2 0x16AB PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x16D9 PUSH2 0x16DE SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x16B4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16EB SWAP1 SLOAD PUSH2 0x16CD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16F7 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1707 DUP3 PUSH2 0x2EE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1722 JUMPI PUSH2 0x171F SWAP2 PUSH0 ADD PUSH2 0x16FA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH2 0x1733 PUSH2 0x1738 SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x691 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1745 SWAP1 SLOAD PUSH2 0x1727 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1778 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1796 PUSH2 0x1791 PUSH2 0x179B SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x17B6 PUSH2 0x17B1 PUSH2 0x17BD SWAP3 PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x179E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x174D JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 PUSH2 0x17DE DUP3 PUSH2 0x17D8 PUSH2 0x17D2 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x1352 JUMP JUMPDEST PUSH2 0x1803 PUSH2 0x17EA CALLER PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x17FC PUSH2 0x17F6 DUP6 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST LT ISZERO PUSH2 0x13EE JUMP JUMPDEST PUSH2 0x1838 PUSH1 0x20 PUSH2 0x1822 PUSH2 0x181D PUSH2 0x1818 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x1463 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1830 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1848 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F02 JUMPI PUSH0 SWAP2 PUSH2 0x1ED4 JUMPI JUMPDEST POP PUSH2 0x18AC PUSH1 0x20 PUSH2 0x187A PUSH2 0x1875 PUSH2 0x1870 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x18A1 PUSH2 0x188C ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x1895 PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1ECF JUMPI PUSH0 SWAP2 PUSH2 0x1EA1 JUMPI JUMPDEST POP SWAP3 PUSH2 0x1910 PUSH1 0x20 PUSH2 0x18DE PUSH2 0x18D9 PUSH2 0x18D4 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1905 PUSH2 0x18F0 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x18F9 PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E9C JUMPI PUSH2 0x19AF SWAP4 PUSH2 0x1995 PUSH2 0x198E PUSH2 0x1980 PUSH2 0x1979 PUSH2 0x196B PUSH2 0x1964 PUSH2 0x19A9 SWAP9 PUSH2 0x19A4 SWAP9 PUSH0 SWAP2 PUSH2 0x1E6E JUMPI JUMPDEST POP SWAP13 PUSH2 0x195E PUSH2 0x1959 PUSH1 0x12 PUSH2 0x1954 DUP12 SWAP2 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x157B JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST SWAP1 PUSH2 0x15BB JUMP JUMPDEST SWAP12 DUP10 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x1973 PUSH2 0x2091 JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST SWAP10 DUP8 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x1988 PUSH2 0x2091 JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST SWAP5 CALLER PUSH2 0x3E3C JUMP JUMPDEST PUSH2 0x199F PUSH1 0x12 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x157B JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x19BA DUP3 PUSH2 0x3EBB JUMP JUMPDEST SWAP3 PUSH2 0x19D4 PUSH2 0x19CF PUSH2 0x19CA PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH1 0x20 PUSH4 0xA9059CBB SWAP2 DUP5 SWAP1 PUSH2 0x1A05 PUSH0 PUSH2 0x19ED DUP10 DUP12 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP6 PUSH2 0x1A10 PUSH2 0x19F9 PUSH2 0x291 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1E69 JUMPI PUSH2 0x1E3D JUMPI JUMPDEST POP PUSH2 0x1A29 DUP5 PUSH2 0x3EBB JUMP JUMPDEST SWAP2 PUSH2 0x1A57 PUSH1 0x20 PUSH2 0x1A41 PUSH2 0x1A3C PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x1A4F PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1A67 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E38 JUMPI PUSH0 SWAP2 PUSH2 0x1E0A JUMPI JUMPDEST POP SWAP3 PUSH2 0x1AA8 PUSH1 0x20 PUSH2 0x1A92 PUSH2 0x1A8D PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x1AA0 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1AB8 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E05 JUMPI PUSH0 SWAP2 PUSH2 0x1DD7 JUMPI JUMPDEST POP SWAP6 PUSH1 0x20 PUSH2 0x1AE7 PUSH2 0x1AE2 PUSH2 0x1ADD PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x1B16 PUSH0 PUSH2 0x1AFE DUP11 SWAP5 DUP9 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP6 PUSH2 0x1B21 PUSH2 0x1B0A PUSH2 0x291 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1DD2 JUMPI PUSH2 0x1DA6 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1B4C PUSH2 0x1B47 PUSH2 0x1B42 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x1B71 PUSH0 DUP11 SWAP4 SWAP6 PUSH2 0x1B7C PUSH2 0x1B65 PUSH2 0x291 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1DA1 JUMPI PUSH2 0x1D75 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1B97 DUP4 PUSH2 0x3EBB JUMP JUMPDEST SWAP3 PUSH2 0x1BB2 PUSH2 0x1BAD PUSH2 0x1BA8 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x1BDF PUSH0 PUSH2 0x1BC7 PUSH4 0xA9059CBB SWAP7 SWAP5 DUP9 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP6 PUSH2 0x1BEA PUSH2 0x1BD3 PUSH2 0x291 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1D70 JUMPI PUSH2 0x1D44 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1C05 DUP3 PUSH2 0x3EBB JUMP JUMPDEST SWAP2 PUSH2 0x1C1F PUSH2 0x1C1A PUSH2 0x1C15 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x1C4C PUSH0 PUSH2 0x1C34 PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP7 PUSH2 0x1C57 PUSH2 0x1C40 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1D3F JUMPI PUSH1 0x20 SWAP3 PUSH2 0x1D14 JUMPI JUMPDEST POP PUSH2 0x1C84 PUSH2 0x1C7F PUSH2 0x1C7A PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x1CA7 PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x1CB2 PUSH2 0x1C9B PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1D0F JUMPI PUSH2 0x1CE1 SWAP3 PUSH2 0x1CDA SWAP3 PUSH2 0x1CE3 JUMPI JUMPDEST POP PUSH2 0x1CD5 PUSH1 0x4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x163F JUMP JUMPDEST PUSH1 0x4 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1D03 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D08 JUMPI JUMPDEST PUSH2 0x1CFB DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1CCA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1CF1 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1D33 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x1D38 JUMPI JUMPDEST PUSH2 0x1D2B DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1C6A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D21 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1D64 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D69 JUMPI JUMPDEST PUSH2 0x1D5C DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1BF9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D52 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1D95 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D9A JUMPI JUMPDEST PUSH2 0x1D8D DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1B8B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D83 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1DC6 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1DCB JUMPI JUMPDEST PUSH2 0x1DBE DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1B30 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1DF8 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1DFE JUMPI JUMPDEST PUSH2 0x1DF0 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x1ACA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1DE6 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1E2B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E31 JUMPI JUMPDEST PUSH2 0x1E23 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x1A79 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E19 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1E5D SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E62 JUMPI JUMPDEST PUSH2 0x1E55 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1A1F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E4B JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1E8F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E95 JUMPI JUMPDEST PUSH2 0x1E87 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x1940 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1EC2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EC8 JUMPI JUMPDEST PUSH2 0x1EBA DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x18BE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EB0 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1EF5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EFB JUMPI JUMPDEST PUSH2 0x1EED DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x185A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EE3 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x1F11 SWAP2 PUSH2 0x12AB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x1F65 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1F60 JUMPI JUMP JUMPDEST PUSH2 0x1F18 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1F55 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x1F9B PUSH2 0x1F94 DUP4 PUSH2 0x1F45 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x1F6F JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x1FF2 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1FB6 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1FC3 SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x1F78 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x1FDA JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1FB1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x1FC7 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1FB1 JUMP JUMPDEST SWAP1 PUSH2 0x2017 SWAP2 PUSH2 0x1F81 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x203A PUSH2 0x2033 SWAP3 PUSH2 0x202A PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x200D JUMP JUMPDEST SUB DUP4 PUSH2 0x766 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2045 SWAP1 PUSH2 0x201A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2050 PUSH2 0x1F13 JUMP JUMPDEST POP PUSH2 0x2064 PUSH1 0x3 PUSH2 0x205E PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x203C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2088 SWAP2 PUSH2 0x2077 PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x2080 PUSH2 0x4005 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x4012 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2099 PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x20AD PUSH1 0x2 PUSH2 0x20A7 PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x173B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20C2 SWAP2 PUSH2 0x20BD PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x2109 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x20D0 PUSH1 0xFF SWAP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x20E3 SWAP1 PUSH2 0x453 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20FE PUSH2 0x20F9 PUSH2 0x2105 SWAP3 PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x20E6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x20C4 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2118 PUSH2 0x211D SWAP3 SWAP2 PUSH1 0x9 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x20E9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2129 SWAP2 PUSH2 0x20B0 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH2 0x2155 SWAP3 PUSH2 0x2138 PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x214D PUSH2 0x2144 PUSH2 0x4005 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x40D0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x419B JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x2163 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x216F SWAP1 PUSH2 0x215A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x217B SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x21A7 PUSH2 0x21AE SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x219D PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21BF PUSH2 0x21C5 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 PUSH2 0x2A3 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x21D0 JUMPI JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH2 0x21DD PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x220B PUSH1 0x20 PUSH2 0x21F5 PUSH2 0x21F0 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2203 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x221B PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x25C8 JUMPI PUSH2 0x2236 SWAP2 PUSH0 SWAP2 PUSH2 0x259A JUMPI JUMPDEST POP PUSH2 0x2166 JUMP JUMPDEST PUSH2 0x2263 PUSH1 0x20 PUSH2 0x224D PUSH2 0x2248 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x225B PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2273 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2595 JUMPI PUSH0 SWAP2 PUSH2 0x2567 JUMPI JUMPDEST POP SWAP1 PUSH2 0x2290 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x22E1 PUSH1 0x20 PUSH2 0x22AF PUSH2 0x22AA PUSH2 0x22A5 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x22D6 PUSH2 0x22C1 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x22CA PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2562 JUMPI PUSH0 SWAP2 PUSH2 0x2534 JUMPI JUMPDEST POP SWAP3 PUSH2 0x2346 PUSH1 0x20 PUSH2 0x2314 PUSH2 0x230F PUSH2 0x230A PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x233B PUSH2 0x2326 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x232F PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x252F JUMPI PUSH0 SWAP2 PUSH2 0x2501 JUMPI JUMPDEST POP SWAP1 DUP5 PUSH2 0x236D PUSH2 0x2367 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ DUP1 PUSH2 0x24E7 JUMPI JUMPDEST PUSH2 0x24D6 JUMPI PUSH1 0x20 PUSH2 0x2383 DUP6 PUSH2 0x2172 JUMP JUMPDEST PUSH4 0x248391FF SWAP1 PUSH2 0x23B0 PUSH2 0x2396 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST SWAP3 PUSH2 0x23BB DUP9 SWAP8 PUSH2 0x23A4 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x147B JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x217E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x24D1 JUMPI PUSH2 0x23D7 SWAP3 PUSH0 SWAP3 PUSH2 0x24A1 JUMPI JUMPDEST POP PUSH2 0x21B0 JUMP JUMPDEST SWAP2 PUSH2 0x23E1 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x23F3 PUSH2 0x23ED DUP5 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x240A JUMPI POP POP PUSH2 0x2406 SWAP2 SWAP1 PUSH2 0x21B0 JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2416 PUSH1 0x20 SWAP3 PUSH2 0x2172 JUMP JUMPDEST PUSH2 0x2440 PUSH4 0x248391FF PUSH2 0x244B PUSH2 0x242A PUSH0 PUSH2 0x144A JUMP JUMPDEST SWAP5 SWAP8 PUSH2 0x2434 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x147B JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x217E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x249C JUMPI PUSH2 0x2467 SWAP3 PUSH0 SWAP3 PUSH2 0x246C JUMPI JUMPDEST POP PUSH2 0x21B0 JUMP JUMPDEST PUSH2 0x2407 JUMP JUMPDEST PUSH2 0x248E SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2495 JUMPI JUMPDEST PUSH2 0x2486 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2461 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x247C JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x24C3 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x24CA JUMPI JUMPDEST PUSH2 0x24BB DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x23D1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x24B1 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST POP POP POP POP POP PUSH2 0x24E4 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP DUP2 PUSH2 0x24FB PUSH2 0x24F5 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x2374 JUMP JUMPDEST PUSH2 0x2522 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2528 JUMPI JUMPDEST PUSH2 0x251A DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x2358 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2510 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2555 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x255B JUMPI JUMPDEST PUSH2 0x254D DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x22F3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2588 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x258E JUMPI JUMPDEST PUSH2 0x2580 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x2285 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2576 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x25BB SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x25C1 JUMPI JUMPDEST PUSH2 0x25B3 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x2230 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25A9 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x25D9 PUSH2 0x25CD JUMP JUMPDEST POP PUSH2 0x25E4 PUSH1 0x12 PUSH2 0x1532 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25EF PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x25F7 PUSH2 0x25F9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2601 PUSH2 0x42E1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x260B PUSH2 0x25E7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x261F SWAP2 PUSH2 0x261A PUSH2 0x42F7 JUMP JUMPDEST PUSH2 0x2621 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2634 SWAP2 PUSH2 0x262F DUP2 PUSH2 0x43C9 JUMP JUMPDEST PUSH2 0x4439 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2640 SWAP2 PUSH2 0x260D JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2657 SWAP1 PUSH2 0x2652 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x26A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2671 PUSH2 0x266C PUSH2 0x2676 SWAP3 PUSH2 0x265A JUMP JUMPDEST PUSH2 0x1748 JUMP JUMPDEST PUSH2 0x8DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26A2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x265D JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x26AE PUSH2 0x2679 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26C1 PUSH2 0x26BC PUSH2 0x2642 JUMP JUMPDEST PUSH2 0x2646 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26D0 PUSH2 0x26D5 SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0xB68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26E2 SWAP1 SLOAD PUSH2 0x26C4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26ED PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x2700 PUSH0 PUSH2 0x26FA PUSH2 0x45F5 JUMP JUMPDEST ADD PUSH2 0x26D8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2715 SWAP2 PUSH2 0x2710 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x271F JUMP JUMPDEST PUSH2 0x271D PUSH2 0x3DD5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2731 SWAP2 PUSH2 0x272C PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x27CE JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2766 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x276F DUP2 PUSH2 0x2733 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2788 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x275A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2792 JUMPI JUMP JUMPDEST PUSH2 0x279A PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x27CA PUSH1 0x4 DUP3 ADD PUSH2 0x2773 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27EA DUP2 PUSH2 0x27E4 PUSH2 0x27DE PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x278B JUMP JUMPDEST PUSH2 0x2803 PUSH2 0x27FE PUSH2 0x27F9 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x2833 PUSH0 PUSH2 0x281A ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP6 PUSH2 0x283E DUP9 PUSH2 0x2827 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x147B JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x217E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2B98 JUMPI PUSH2 0x2B6C JUMPI JUMPDEST POP PUSH2 0x287B PUSH1 0x20 PUSH2 0x2865 PUSH2 0x2860 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x2873 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x288B PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2B67 JUMPI PUSH0 SWAP2 PUSH2 0x2B39 JUMPI JUMPDEST POP SWAP1 PUSH2 0x28CC PUSH1 0x20 PUSH2 0x28B6 PUSH2 0x28B1 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x28C4 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x28DC PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2B34 JUMPI PUSH0 SWAP2 PUSH2 0x2B06 JUMPI JUMPDEST POP SWAP2 PUSH2 0x28F9 DUP3 PUSH2 0x3EBB JUMP JUMPDEST SWAP1 PUSH2 0x2903 DUP3 PUSH2 0x3EBB JUMP JUMPDEST PUSH1 0x20 PUSH2 0x291E PUSH2 0x2919 PUSH2 0x2914 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0xA9059CBB SWAP4 SWAP1 PUSH2 0x294C PUSH0 PUSH2 0x2934 DUP9 DUP8 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP7 PUSH2 0x2957 PUSH2 0x2940 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2B01 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x2AD6 JUMPI JUMPDEST POP PUSH2 0x2984 PUSH2 0x297F PUSH2 0x297A PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x29A7 PUSH0 PUSH4 0xA9059CBB SWAP8 SWAP4 SWAP8 PUSH2 0x29B2 PUSH2 0x299B PUSH2 0x291 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2AD1 JUMPI PUSH2 0x2A01 SWAP4 PUSH2 0x29D0 SWAP4 PUSH2 0x2AA5 JUMPI JUMPDEST POP PUSH2 0x163F JUMP JUMPDEST PUSH1 0x20 PUSH2 0x29EB PUSH2 0x29E6 PUSH2 0x29E1 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x1463 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x29F9 PUSH2 0x291 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2A11 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2AA0 JUMPI PUSH2 0x2A70 SWAP4 PUSH2 0x2A54 PUSH2 0x2A5A SWAP3 PUSH2 0x2A69 SWAP6 PUSH0 SWAP2 PUSH2 0x2A72 JUMPI JUMPDEST POP PUSH2 0x2A4E PUSH2 0x2A49 DUP7 SWAP3 PUSH2 0x2A44 PUSH1 0x12 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x157B JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST SWAP1 PUSH2 0x15BB JUMP JUMPDEST SWAP1 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x2A64 PUSH1 0x4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x21B0 JUMP JUMPDEST PUSH1 0x4 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2A93 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2A99 JUMPI JUMPDEST PUSH2 0x2A8B DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x2A31 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2A81 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2AC5 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2ACA JUMPI JUMPDEST PUSH2 0x2ABD DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x29CA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2AB3 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2AF5 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x2AFA JUMPI JUMPDEST PUSH2 0x2AED DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x296A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2B27 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2B2D JUMPI JUMPDEST PUSH2 0x2B1F DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x28EE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B15 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2B5A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2B60 JUMPI JUMPDEST PUSH2 0x2B52 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x289D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B48 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2B8C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2B91 JUMPI JUMPDEST PUSH2 0x2B84 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x284D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B7A JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x2BA7 SWAP2 PUSH2 0x2703 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2BB3 SWAP1 PUSH2 0xB46 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2BDE PUSH2 0x2BE3 SWAP2 PUSH2 0x2BCE PUSH2 0x208D JUMP JUMPDEST POP PUSH0 PUSH2 0x2BD8 PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x173B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2BEE PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x2BF6 PUSH2 0x2C20 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C0C PUSH2 0x2C07 PUSH2 0x2C11 SWAP3 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C1D SWAP1 PUSH2 0x2BF8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C31 PUSH2 0x2C2C PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4697 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C3B PUSH2 0x2BE6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2C49 PUSH2 0x2C3D JUMP JUMPDEST POP PUSH2 0x2C5C PUSH2 0x2C57 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C67 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x2C6F PUSH2 0x2C71 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C79 PUSH2 0x476D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C83 PUSH2 0x2C5F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C8D PUSH2 0x2C3D JUMP JUMPDEST POP PUSH2 0x2CA0 PUSH0 PUSH2 0x2C9A PUSH2 0x4777 JUMP JUMPDEST ADD PUSH2 0x144A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CAB PUSH2 0x1F13 JUMP JUMPDEST POP PUSH2 0x2CBF PUSH1 0x4 PUSH2 0x2CB9 PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x203C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CDF SWAP2 PUSH2 0x2CCE PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x2CD7 PUSH2 0x4005 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x419B JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH2 0x2CF6 PUSH2 0x2CFB SWAP2 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0xB68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2D08 SWAP1 SLOAD PUSH2 0x2CEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2D24 PUSH2 0x2D29 SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x2D0B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2D36 SWAP1 SLOAD PUSH2 0x2D18 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2D4C PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2D6A PUSH2 0x2D65 PUSH2 0x2D6F SWAP3 PUSH2 0xDC9 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0xDC9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2D8A PUSH2 0x2D85 PUSH2 0x2D91 SWAP3 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x2D72 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2D39 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2DAF PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x2D95 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2DCE PUSH2 0x2DC9 PUSH2 0x2DD5 SWAP3 PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x20E6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2DE2 SWAP1 PUSH2 0xDC9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2DF9 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x2DD9 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP4 SWAP5 SWAP1 SWAP5 DUP3 SWAP7 PUSH2 0x2E0C PUSH2 0x479B JUMP JUMPDEST SWAP6 PUSH2 0x2E18 PUSH0 DUP9 ADD PUSH2 0x2CFE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EC9 JUMPI JUMPDEST PUSH2 0x2E8D JUMPI PUSH2 0x2E52 SWAP8 PUSH2 0x2E49 SWAP7 PUSH2 0x2E37 DUP12 PUSH0 DUP12 ADD PUSH2 0x2D75 JUMP JUMPDEST PUSH2 0x2E44 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x2FE3 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x2E88 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x2E7F PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2DE6 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x2E95 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2EC5 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2ED5 PUSH0 DUP9 ADD PUSH2 0x2D2C JUMP JUMPDEST PUSH2 0x2EE7 PUSH2 0x2EE1 DUP12 PUSH2 0xDC9 JUMP JUMPDEST SWAP2 PUSH2 0xDC9 JUMP JUMPDEST LT ISZERO PUSH2 0x2E1F JUMP JUMPDEST SWAP1 PUSH2 0x2F0D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F2F PUSH2 0x2F2A PUSH2 0x2F36 SWAP3 PUSH2 0xB46 JUMP JUMPDEST PUSH2 0x2F17 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2EEE JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2F43 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F4F SWAP1 PUSH2 0x2F3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F5B SWAP1 PUSH2 0x2F3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F76 PUSH2 0x2F71 PUSH2 0x2F7D SWAP3 PUSH2 0x2F52 JUMP JUMPDEST PUSH2 0x2F5E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2EEE JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F98 PUSH2 0x2F93 PUSH2 0x2F9D SWAP3 PUSH2 0x2F81 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FA9 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FB5 SWAP1 PUSH2 0x2FA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FC1 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FDB PUSH2 0x2FD6 PUSH2 0x2FE0 SWAP3 PUSH2 0x2FC4 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3036 SWAP3 SWAP7 POP PUSH2 0x303D SWAP4 PUSH2 0x3008 PUSH2 0x3063 SWAP8 SWAP7 SWAP4 PUSH2 0x3031 SWAP4 PUSH2 0x3003 CALLER PUSH2 0x47DD JUMP JUMPDEST PUSH2 0x4808 JUMP JUMPDEST PUSH2 0x3010 PUSH2 0x481E JUMP JUMPDEST PUSH2 0x3018 PUSH2 0x4844 JUMP JUMPDEST PUSH2 0x3020 PUSH2 0x486A JUMP JUMPDEST PUSH2 0x302A DUP9 PUSH0 PUSH2 0x2F1A JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x2F46 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x2F61 JUMP JUMPDEST PUSH2 0x305C PUSH2 0x3055 PUSH2 0x168 PUSH2 0x3050 DUP5 SWAP2 PUSH2 0x2F84 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x7 PUSH2 0x17A1 JUMP JUMPDEST PUSH1 0x8 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x306E NUMBER PUSH1 0x5 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x309D PUSH1 0x20 PUSH2 0x3087 PUSH2 0x3082 PUSH2 0x2710 SWAP5 PUSH2 0x2FAC JUMP JUMPDEST PUSH2 0x2FB8 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3095 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x30AD PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3115 JUMPI PUSH2 0x30D9 PUSH2 0x30D3 PUSH2 0x30E5 SWAP5 PUSH2 0x30DE SWAP5 PUSH0 SWAP2 PUSH2 0x30E7 JUMPI JUMPDEST POP PUSH2 0x159F JUMP JUMPDEST SWAP2 PUSH2 0x2FC7 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x6 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3108 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x310E JUMPI JUMPDEST PUSH2 0x3100 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x30CD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30F6 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x3129 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x2DFB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3133 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x313B PUSH2 0x3145 JUMP JUMPDEST PUSH2 0x3143 PUSH2 0x3DD5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x314D PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x3155 PUSH2 0x3314 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x776169742074696C6C206E657874207265696E76657374206379636C65000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x318B PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x3194 DUP2 PUSH2 0x3157 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x31AD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x317E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x31B7 JUMPI JUMP JUMPDEST PUSH2 0x31BF PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x31EF PUSH1 0x4 DUP3 ADD PUSH2 0x3198 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4E6F7468696E6720746F20737761700000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3227 PUSH1 0xF PUSH1 0x20 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x3230 DUP2 PUSH2 0x31F3 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3249 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x321A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3253 JUMPI JUMP JUMPDEST PUSH2 0x325B PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x328B PUSH1 0x4 DUP3 ADD PUSH2 0x3234 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3298 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x32A4 SWAP1 PUSH2 0x328F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x32B0 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x32E8 PUSH2 0x32EF SWAP5 PUSH2 0x32DE PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x32D4 PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x3312 SWAP3 SWAP5 SWAP4 PUSH2 0x330B PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x334C PUSH2 0x332B NUMBER PUSH2 0x3325 PUSH1 0x5 PUSH2 0x173B JUMP JUMPDEST SWAP1 PUSH2 0x163F JUMP JUMPDEST PUSH2 0x3346 PUSH2 0x3340 PUSH2 0x333B PUSH1 0x8 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x31B0 JUMP JUMPDEST PUSH2 0x3354 PUSH2 0x358B JUMP JUMPDEST PUSH2 0x3370 DUP2 PUSH2 0x336A PUSH2 0x3364 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x324C JUMP JUMPDEST PUSH2 0x339D PUSH1 0x20 PUSH2 0x3387 PUSH2 0x3382 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x3395 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x33AD PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x357C JUMPI PUSH2 0x33C8 SWAP2 PUSH0 SWAP2 PUSH2 0x354E JUMPI JUMPDEST POP PUSH2 0x329B JUMP JUMPDEST PUSH2 0x33E1 PUSH2 0x33DC PUSH2 0x33D7 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x33F3 DUP4 PUSH2 0x32A7 JUMP JUMPDEST SWAP1 PUSH2 0x3411 PUSH0 DUP8 SWAP7 PUSH2 0x341C PUSH2 0x3405 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3549 JUMPI PUSH2 0x3436 SWAP3 PUSH2 0x351D JUMPI JUMPDEST POP PUSH2 0x32A7 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 PUSH2 0x3447 PUSH0 PUSH2 0x144A JUMP JUMPDEST SWAP1 PUSH2 0x3479 PUSH0 PUSH2 0x3456 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST SWAP6 PUSH2 0x3484 DUP9 PUSH2 0x3464 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP1 PUSH2 0x346D PUSH2 0x291 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x147B JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x32B3 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3518 JUMPI PUSH0 SWAP2 PUSH2 0x34EA JUMPI JUMPDEST POP SWAP1 PUSH2 0x34A3 NUMBER PUSH1 0x5 PUSH2 0x17A1 JUMP JUMPDEST CALLER SWAP1 SWAP2 PUSH2 0x34D0 PUSH32 0x129AC658E77B551B004790E5BD957532CEF552C50852A1EE0E38DD3E23FE85DB SWAP3 PUSH2 0xB46 JUMP JUMPDEST SWAP3 PUSH2 0x34E5 PUSH2 0x34DC PUSH2 0x291 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x32F1 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x350B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3511 JUMPI JUMPDEST PUSH2 0x3503 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x3496 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34F9 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x353D SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3542 JUMPI JUMPDEST PUSH2 0x3535 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x3430 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x352B JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x356F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3575 JUMPI JUMPDEST PUSH2 0x3567 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x33C2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x355D JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x3589 PUSH2 0x312B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3593 PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x35E4 PUSH1 0x20 PUSH2 0x35B2 PUSH2 0x35AD PUSH2 0x35A8 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x35D9 PUSH2 0x35C4 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x35CD PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x368E JUMPI PUSH2 0x3629 SWAP2 PUSH2 0x3619 SWAP2 PUSH0 SWAP2 PUSH2 0x3660 JUMPI JUMPDEST POP PUSH2 0x3613 NUMBER PUSH2 0x360D PUSH1 0x5 PUSH2 0x173B JUMP JUMPDEST SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP1 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x3623 PUSH1 0x7 PUSH2 0x173B JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST DUP1 PUSH2 0x3645 PUSH2 0x363F PUSH2 0x363A PUSH1 0x6 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x365B JUMPI POP PUSH2 0x3657 PUSH1 0x6 PUSH2 0x173B JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3658 JUMP JUMPDEST PUSH2 0x3681 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3687 JUMPI JUMPDEST PUSH2 0x3679 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x35FE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x366F JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x369D SWAP1 PUSH2 0xB46 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x36D7 SWAP2 PUSH2 0x36CD PUSH2 0x36D2 SWAP3 PUSH2 0x36BC PUSH2 0x208D JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x36C7 PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x3693 JUMP JUMPDEST PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x173B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36F1 PUSH2 0x36EC PUSH2 0x36F6 SWAP3 PUSH2 0x36DA JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3701 PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x370A PUSH2 0x2091 JUMP JUMPDEST PUSH2 0x371C PUSH2 0x3716 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x387F JUMPI PUSH2 0x374E PUSH1 0x20 PUSH2 0x3738 PUSH2 0x3733 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x3746 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x375E PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x387A JUMPI PUSH2 0x3788 PUSH2 0x3783 PUSH2 0x379E SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x384D JUMPI JUMPDEST POP PUSH2 0x1463 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3796 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x37AE PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3848 JUMPI PUSH2 0x37F2 PUSH2 0x37E5 PUSH2 0x37E0 PUSH2 0x3809 SWAP4 PUSH2 0x3817 SWAP6 PUSH0 SWAP2 PUSH2 0x381A JUMPI JUMPDEST POP PUSH2 0x37DB PUSH1 0x12 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x157B JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST PUSH2 0x37ED PUSH2 0x21D5 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x3803 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36DD JUMP JUMPDEST SWAP1 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x3811 PUSH2 0x2091 JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x383B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3841 JUMPI JUMPDEST PUSH2 0x3833 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x37D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3829 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x386D SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x3873 JUMPI JUMPDEST PUSH2 0x3865 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x377D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x385B JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x3888 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x389F PUSH2 0x389A PUSH2 0x38A4 SWAP3 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0xDC9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38BE PUSH2 0x38B9 PUSH2 0x38C3 SWAP3 PUSH2 0x38A7 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0xDC9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38CF SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38DB SWAP1 PUSH2 0x38AA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x38F2 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x38D2 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP5 SWAP2 SWAP5 SWAP4 SWAP1 SWAP4 PUSH2 0x3903 PUSH2 0x479B JUMP JUMPDEST SWAP6 PUSH2 0x3918 PUSH2 0x3912 PUSH0 DUP10 ADD PUSH2 0x2CFE JUMP JUMPDEST ISZERO PUSH2 0x453 JUMP JUMPDEST SWAP6 PUSH2 0x3924 PUSH0 DUP10 ADD PUSH2 0x2D2C JUMP JUMPDEST DUP1 PUSH2 0x3937 PUSH2 0x3931 PUSH0 PUSH2 0x388B JUMP JUMPDEST SWAP2 PUSH2 0xDC9 JUMP JUMPDEST EQ DUP1 PUSH2 0x3A71 JUMPI JUMPDEST SWAP1 PUSH2 0x3952 PUSH2 0x394C PUSH1 0x1 PUSH2 0x38AA JUMP JUMPDEST SWAP2 PUSH2 0xDC9 JUMP JUMPDEST EQ DUP1 PUSH2 0x3A49 JUMPI JUMPDEST PUSH2 0x3964 SWAP1 SWAP2 ISZERO PUSH2 0x453 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x3A38 JUMPI JUMPDEST POP PUSH2 0x39FC JUMPI PUSH2 0x3994 SWAP6 PUSH2 0x3989 PUSH2 0x3981 PUSH1 0x1 PUSH2 0x38AA JUMP JUMPDEST PUSH0 DUP12 ADD PUSH2 0x2D75 JUMP JUMPDEST DUP8 PUSH2 0x39EA JUMPI JUMPDEST PUSH2 0x3A78 JUMP JUMPDEST PUSH2 0x399C JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x39A9 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x2DB9 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x39E1 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x39D8 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x38DF JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x3999 JUMP JUMPDEST PUSH2 0x39F7 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x398F JUMP JUMPDEST PUSH2 0x3A04 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3A34 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3A43 SWAP2 POP ISZERO PUSH2 0x453 JUMP JUMPDEST PUSH0 PUSH2 0x396B JUMP JUMPDEST POP PUSH2 0x3964 PUSH2 0x3A56 ADDRESS PUSH2 0x38C6 JUMP JUMPDEST EXTCODESIZE PUSH2 0x3A69 PUSH2 0x3A63 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x3959 JUMP JUMPDEST POP DUP8 PUSH2 0x393E JUMP JUMPDEST SWAP4 PUSH2 0x3AC4 PUSH2 0x3AD0 SWAP4 SWAP7 SWAP5 PUSH2 0x3A9B PUSH2 0x3AC9 SWAP5 PUSH2 0x3AF6 SWAP9 PUSH2 0x3A96 CALLER PUSH2 0x47DD JUMP JUMPDEST PUSH2 0x4808 JUMP JUMPDEST PUSH2 0x3AA3 PUSH2 0x481E JUMP JUMPDEST PUSH2 0x3AAB PUSH2 0x4844 JUMP JUMPDEST PUSH2 0x3AB3 PUSH2 0x486A JUMP JUMPDEST PUSH2 0x3ABD DUP9 PUSH0 PUSH2 0x2F1A JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x2F46 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x2F61 JUMP JUMPDEST PUSH2 0x3AEF PUSH2 0x3AE8 PUSH2 0x168 PUSH2 0x3AE3 DUP5 SWAP2 PUSH2 0x2F84 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x7 PUSH2 0x17A1 JUMP JUMPDEST PUSH1 0x8 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x3B01 NUMBER PUSH1 0x5 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x3B30 PUSH1 0x20 PUSH2 0x3B1A PUSH2 0x3B15 PUSH2 0x2710 SWAP5 PUSH2 0x2FAC JUMP JUMPDEST PUSH2 0x2FB8 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3B28 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3B40 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3BA8 JUMPI PUSH2 0x3B6C PUSH2 0x3B66 PUSH2 0x3B78 SWAP5 PUSH2 0x3B71 SWAP5 PUSH0 SWAP2 PUSH2 0x3B7A JUMPI JUMPDEST POP PUSH2 0x159F JUMP JUMPDEST SWAP2 PUSH2 0x2FC7 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x6 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B9B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3BA1 JUMPI JUMPDEST PUSH2 0x3B93 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x3B60 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3B89 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x3BBB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x38F4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3BC5 PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x3BCE PUSH2 0x358B JUMP JUMPDEST PUSH2 0x3BE2 NUMBER PUSH2 0x3BDC PUSH1 0x5 PUSH2 0x173B JUMP JUMPDEST SWAP1 PUSH2 0x163F JUMP JUMPDEST PUSH2 0x3BFD PUSH2 0x3BF7 PUSH2 0x3BF2 PUSH1 0x8 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT SWAP1 DUP2 PUSH2 0x3C09 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C1D PUSH2 0x3C17 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH0 PUSH2 0x3C05 JUMP JUMPDEST PUSH2 0x3C35 SWAP1 PUSH2 0x3C30 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x3C37 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x3C52 PUSH2 0x3C4C PUSH2 0x3C47 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x3C62 JUMPI PUSH2 0x3C60 SWAP1 PUSH2 0x4697 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3CA5 PUSH2 0x3C6E PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x3C76 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3CB2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3CC5 SWAP1 PUSH2 0x3CC0 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x3CC7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3CE9 PUSH2 0x3CF0 SWAP2 PUSH2 0x3CD9 DUP2 PUSH1 0x8 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x3CE4 PUSH2 0x168 PUSH2 0x2F84 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x7 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3CFB SWAP1 PUSH2 0x3CB4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3D14 PUSH2 0x3D0F PUSH2 0x3D19 SWAP3 PUSH2 0x3CFD JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3D26 PUSH1 0x2 PUSH2 0x3D00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3D31 PUSH2 0x4874 JUMP JUMPDEST PUSH2 0x3D3C PUSH0 DUP3 ADD PUSH2 0x173B JUMP JUMPDEST PUSH2 0x3D55 PUSH2 0x3D4F PUSH2 0x3D4A PUSH2 0x3D1C JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x3D70 JUMPI PUSH2 0x3D6E SWAP1 PUSH0 PUSH2 0x3D67 PUSH2 0x3D1C JUMP JUMPDEST SWAP2 ADD PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3D78 PUSH2 0x291 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3DA8 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3DC0 PUSH2 0x3DBB PUSH2 0x3DC5 SWAP3 PUSH2 0x38A7 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DD2 PUSH1 0x1 PUSH2 0x3DAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DF0 PUSH2 0x3DE0 PUSH2 0x4874 JUMP JUMPDEST PUSH0 PUSH2 0x3DE9 PUSH2 0x3DC8 JUMP JUMPDEST SWAP2 ADD PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3DFA PUSH2 0x26E5 JUMP JUMPDEST PUSH2 0x3E00 JUMPI JUMP JUMPDEST PUSH2 0x3E08 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3E38 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP2 PUSH2 0x3E58 PUSH2 0x3E52 PUSH2 0x3E4D PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x3E74 JUMPI PUSH2 0x3E72 SWAP2 SWAP1 PUSH2 0x3E6B PUSH0 PUSH2 0x2C14 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x48A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3EB7 PUSH2 0x3E80 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x3E88 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3EC3 PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x3EF1 PUSH1 0x20 PUSH2 0x3EDB PUSH2 0x3ED6 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x3EE9 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3F01 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3FDC JUMPI PUSH0 SWAP2 PUSH2 0x3FAE JUMPI JUMPDEST POP SWAP1 PUSH2 0x3F42 PUSH1 0x20 PUSH2 0x3F2C PUSH2 0x3F27 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x3F3A PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3F52 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x3FA9 JUMPI PUSH2 0x3F78 SWAP4 PUSH2 0x3F73 SWAP3 PUSH0 SWAP2 PUSH2 0x3F7B JUMPI JUMPDEST POP SWAP3 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x161D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3F9C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3FA2 JUMPI JUMPDEST PUSH2 0x3F94 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x3F6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F8A JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x3FCF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3FD5 JUMPI JUMPDEST PUSH2 0x3FC7 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x3F13 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3FBD JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x400D PUSH2 0x2C3D JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4020 SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x4A4C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x402A PUSH2 0x2C85 JUMP JUMPDEST PUSH2 0x4043 PUSH2 0x403D PUSH2 0x4038 PUSH2 0x4005 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST SUB PUSH2 0x404A JUMPI JUMP JUMPDEST PUSH2 0x408C PUSH2 0x4055 PUSH2 0x4005 JUMP JUMPDEST PUSH2 0x405D PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x40B9 PUSH2 0x40C0 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x40AF PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x40CD SWAP2 SUB PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x40DE DUP2 DUP4 SWAP1 PUSH2 0x36A9 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x4112 PUSH2 0x410C PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST SUB PUSH2 0x411F JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x4132 PUSH2 0x412C DUP8 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST LT PUSH2 0x4158 JUMPI PUSH2 0x414F SWAP4 SWAP5 PUSH2 0x4147 SWAP2 SWAP4 SWAP3 PUSH2 0x40C2 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x4A4C JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x4118 JUMP JUMPDEST POP PUSH2 0x4197 DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x4168 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4090 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x41B7 PUSH2 0x41B1 PUSH2 0x41AC PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4231 JUMPI DUP2 PUSH2 0x41D7 PUSH2 0x41D1 PUSH2 0x41CC PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x41EA JUMPI PUSH2 0x41E8 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x48A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x422D PUSH2 0x41F6 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x41FE PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4274 PUSH2 0x423D PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4245 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4280 PUSH2 0x4BA6 JUMP JUMPDEST PUSH2 0x4288 PUSH2 0x428A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x429E PUSH2 0x4295 PUSH2 0x45F5 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x20E9 JUMP JUMPDEST PUSH2 0x42A6 PUSH2 0x4005 JUMP JUMPDEST PUSH2 0x42DC PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 PUSH2 0x42D3 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x42E9 PUSH2 0x4278 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x42F4 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4300 ADDRESS PUSH2 0x42EB JUMP JUMPDEST PUSH2 0x4332 PUSH2 0x432C PUSH32 0x0 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x437C JUMPI JUMPDEST PUSH2 0x4340 JUMPI JUMP JUMPDEST PUSH2 0x4348 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4378 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x4385 PUSH2 0x4BF9 JUMP JUMPDEST PUSH2 0x43B7 PUSH2 0x43B1 PUSH32 0x0 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ ISZERO PUSH2 0x433A JUMP JUMPDEST POP PUSH2 0x43C7 PUSH2 0x4022 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x43D2 SWAP1 PUSH2 0x43BE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x43DD SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x43E9 SWAP1 PUSH2 0x43D4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x43F5 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4401 DUP2 PUSH2 0x8DE JUMP JUMPDEST SUB PUSH2 0x4408 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x4419 DUP3 PUSH2 0x43F8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x4434 JUMPI PUSH2 0x4431 SWAP2 PUSH0 ADD PUSH2 0x440C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4467 PUSH1 0x20 PUSH2 0x4451 PUSH2 0x444C DUP7 PUSH2 0x43E0 JUMP JUMPDEST PUSH2 0x43EC JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x445F PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4477 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x4547 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x44D8 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x4499 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x44D4 SWAP1 PUSH2 0x44A5 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x44F3 PUSH2 0x44ED PUSH2 0x44E8 PUSH2 0x2679 JUMP JUMPDEST PUSH2 0x8DE JUMP JUMPDEST SWAP2 PUSH2 0x8DE JUMP JUMPDEST SUB PUSH2 0x4508 JUMPI PUSH2 0x4503 SWAP3 SWAP4 POP PUSH2 0x4C23 JUMP JUMPDEST PUSH2 0x4497 JUMP JUMPDEST PUSH2 0x4543 DUP5 PUSH2 0x4514 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x8EE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4569 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4570 JUMPI JUMPDEST PUSH2 0x4561 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x441B JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x4484 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4557 JUMP JUMPDEST PUSH2 0x4580 ADDRESS PUSH2 0x42EB JUMP JUMPDEST PUSH2 0x45B2 PUSH2 0x45AC PUSH32 0x0 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST SUB PUSH2 0x45B9 JUMPI JUMP JUMPDEST PUSH2 0x45C1 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x45F1 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x4634 PUSH2 0x462E PUSH2 0x4629 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4650 JUMPI PUSH2 0x464E SWAP2 PUSH2 0x4646 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x48A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4693 PUSH2 0x465C PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4664 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x469F PUSH2 0x4777 JUMP JUMPDEST PUSH2 0x46B7 PUSH2 0x46AD PUSH0 DUP4 ADD PUSH2 0x144A JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x2F1A JUMP JUMPDEST SWAP1 PUSH2 0x46EB PUSH2 0x46E5 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP2 PUSH2 0xB46 JUMP JUMPDEST SWAP2 PUSH2 0x46F4 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x46FE DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x470B PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x4713 PUSH2 0x4715 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x472A PUSH2 0x4720 PUSH2 0x45F5 JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP2 ADD PUSH2 0x20E9 JUMP JUMPDEST PUSH2 0x4732 PUSH2 0x4005 JUMP JUMPDEST PUSH2 0x4768 PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 PUSH2 0x475F PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x4775 PUSH2 0x4703 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x47D0 SWAP1 PUSH2 0x47CB PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x47D2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x47DB SWAP1 PUSH2 0x4D84 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x47E6 SWAP1 PUSH2 0x47BF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x47FA SWAP2 PUSH2 0x47F5 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x47FC JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4806 SWAP2 PUSH2 0x4FC7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4812 SWAP2 PUSH2 0x47E8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x481C PUSH2 0x4CAC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4826 PUSH2 0x4814 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4830 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x4838 PUSH2 0x483A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4842 PUSH2 0x5002 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x484C PUSH2 0x4828 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4856 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x485E PUSH2 0x4860 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4868 PUSH2 0x5034 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4872 PUSH2 0x484E JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x48A3 SWAP2 ADD PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x48B1 PUSH2 0x3FE1 JUMP JUMPDEST DUP2 PUSH2 0x48CC PUSH2 0x48C6 PUSH2 0x48C1 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x49B7 JUMPI PUSH2 0x48F3 DUP4 PUSH2 0x48ED PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x48E8 DUP4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x21B0 JUMP JUMPDEST SWAP1 PUSH2 0x17A1 JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x490F PUSH2 0x4909 PUSH2 0x4904 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x4988 JUMPI PUSH2 0x4937 SWAP1 PUSH2 0x4931 PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x492C DUP4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x40C2 JUMP JUMPDEST SWAP1 PUSH2 0x17A1 JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x4983 PUSH2 0x4971 PUSH2 0x496B PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP4 PUSH2 0x497A PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x49B2 SWAP1 PUSH2 0x49AC PUSH2 0x499D PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x2BA9 JUMP JUMPDEST SWAP2 PUSH2 0x49A7 DUP4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x4898 JUMP JUMPDEST SWAP1 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x4938 JUMP JUMPDEST PUSH2 0x49CC PUSH2 0x49C7 PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x173B JUMP JUMPDEST DUP1 PUSH2 0x49DF PUSH2 0x49D9 DUP7 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST LT PUSH2 0x4A09 JUMPI PUSH2 0x49F2 PUSH2 0x4A04 SWAP2 DUP6 SWAP1 PUSH2 0x40C2 JUMP JUMPDEST PUSH2 0x49FF PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x48F4 JUMP JUMPDEST SWAP2 PUSH2 0x4A48 SWAP2 POP SWAP2 SWAP3 PUSH2 0x4A19 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4090 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP3 PUSH2 0x4A56 PUSH2 0x3FE1 JUMP JUMPDEST DUP3 PUSH2 0x4A71 PUSH2 0x4A6B PUSH2 0x4A66 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4B5F JUMPI DUP5 PUSH2 0x4A91 PUSH2 0x4A8B PUSH2 0x4A86 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4B18 JUMPI PUSH2 0x4AB8 SWAP1 PUSH2 0x4AB3 PUSH2 0x4AAC PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x3693 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x4AC2 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x4B0D PUSH2 0x4AFB PUSH2 0x4AF5 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP4 PUSH2 0x4B04 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x4ABD JUMP JUMPDEST PUSH2 0x4B5B PUSH2 0x4B24 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4B2C PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BA2 PUSH2 0x4B6B PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4B73 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BB7 PUSH2 0x4BB1 PUSH2 0x26E5 JUMP JUMPDEST ISZERO PUSH2 0x453 JUMP JUMPDEST PUSH2 0x4BBD JUMPI JUMP JUMPDEST PUSH2 0x4BC5 PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4BF5 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4C01 PUSH2 0x2C3D JUMP JUMPDEST POP PUSH2 0x4C1C PUSH0 PUSH2 0x4C16 PUSH2 0x4C11 PUSH2 0x2679 JUMP JUMPDEST PUSH2 0x503E JUMP JUMPDEST ADD PUSH2 0x144A JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4C2D DUP3 PUSH2 0x5041 JUMP JUMPDEST DUP2 PUSH2 0x4C58 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0xB46 JUMP JUMPDEST SWAP1 PUSH2 0x4C61 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x4C6B DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x4C77 DUP2 PUSH2 0x4C1F JUMP JUMPDEST PUSH2 0x4C89 PUSH2 0x4C83 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x4C9D JUMPI PUSH2 0x4C99 SWAP2 PUSH2 0x5151 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x4CA7 PUSH2 0x50B6 JUMP JUMPDEST PUSH2 0x4C9B JUMP JUMPDEST PUSH2 0x4CBD PUSH2 0x4CB7 PUSH2 0x5180 JUMP JUMPDEST ISZERO PUSH2 0x453 JUMP JUMPDEST PUSH2 0x4CC3 JUMPI JUMP JUMPDEST PUSH2 0x4CCB PUSH2 0x291 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4CFB PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D10 SWAP1 PUSH2 0x4D0B PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x4D12 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x4D2D PUSH2 0x4D27 PUSH2 0x4D22 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4D3D JUMPI PUSH2 0x4D3B SWAP1 PUSH2 0x4697 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4D80 PUSH2 0x4D49 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4D51 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D8D SWAP1 PUSH2 0x4CFF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4DA1 SWAP2 PUSH2 0x4D9C PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x4FA3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x4DEB SWAP2 MUL SWAP2 PUSH2 0x4DE5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x4DAD JUMP JUMPDEST SWAP3 PUSH2 0x4DAD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4E0B PUSH2 0x4E06 PUSH2 0x4E13 SWAP4 PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x179E JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x4DB1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4E29 SWAP2 PUSH2 0x4E23 PUSH2 0x208D JUMP JUMPDEST SWAP2 PUSH2 0x4DF5 JUMP JUMPDEST JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x4E37 JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x4E44 PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x4E17 JUMP JUMPDEST ADD PUSH2 0x4E2C JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x4E5A JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4E66 PUSH2 0x4E8B SWAP4 PUSH2 0x1F78 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x4E72 DUP5 PUSH2 0x4DA3 JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x4E93 JUMPI JUMPDEST PUSH2 0x4E84 SWAP1 PUSH2 0x4DA3 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4E2B JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x4E55 JUMP JUMPDEST SWAP2 POP PUSH2 0x4E84 DUP2 SWAP3 SWAP1 POP PUSH2 0x4E7B JUMP JUMPDEST SWAP1 PUSH2 0x4EB1 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0x68D JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x4EC0 SWAP2 PUSH2 0x4EA1 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4ED2 DUP2 PUSH2 0x386 JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x4F92 JUMPI PUSH2 0x4EF6 DUP3 PUSH2 0x4EF0 DUP6 SLOAD PUSH2 0x1F45 JUMP JUMPDEST DUP6 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x4F2A JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x4F19 SWAP4 PUSH0 SWAP3 PUSH2 0x4F1E JUMPI JUMPDEST POP POP PUSH2 0x4EB6 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x4F12 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x4F39 DUP6 PUSH2 0x1F78 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4F7A JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x4F60 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x4F1C JUMP JUMPDEST PUSH2 0x4F70 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x4EA1 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x4F54 JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x4F3C JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST SWAP1 PUSH2 0x4FA1 SWAP2 PUSH2 0x4EC8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x4FC5 SWAP3 PUSH2 0x4FBE PUSH2 0x4FB4 PUSH2 0x3FE1 JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x4F97 JUMP JUMPDEST SWAP2 ADD PUSH2 0x4F97 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4FD1 SWAP2 PUSH2 0x4D8F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4FDB PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x4FE3 PUSH2 0x4FE5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5000 PUSH2 0x4FF0 PUSH2 0x4874 JUMP JUMPDEST PUSH0 PUSH2 0x4FF9 PUSH2 0x3DC8 JUMP JUMPDEST SWAP2 ADD PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x500A PUSH2 0x4FD3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5014 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x501C PUSH2 0x501E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5032 PUSH2 0x5029 PUSH2 0x45F5 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x20E9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x503C PUSH2 0x500C JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x5055 PUSH2 0x504F PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x5077 JUMPI PUSH2 0x5075 SWAP1 PUSH0 PUSH2 0x506F PUSH2 0x506A PUSH2 0x2679 JUMP JUMPDEST PUSH2 0x503E JUMP JUMPDEST ADD PUSH2 0x2F1A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x50B2 SWAP1 PUSH2 0x5083 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x50C9 PUSH2 0x50C3 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x50D0 JUMPI JUMP JUMPDEST PUSH2 0x50D8 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5108 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5123 PUSH2 0x511E DUP4 PUSH2 0x7A4 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x5143 JUMPI PUSH2 0x5138 RETURNDATASIZE PUSH2 0x5111 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x514B PUSH2 0x510C JUMP JUMPDEST SWAP1 PUSH2 0x5141 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x517D SWAP4 PUSH2 0x515F PUSH2 0x510C JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x5174 PUSH2 0x5128 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x519E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5188 PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x519B PUSH0 PUSH2 0x5195 PUSH2 0x479B JUMP JUMPDEST ADD PUSH2 0x2CFE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x51B2 SWAP1 PUSH2 0x51AB PUSH2 0x510C JUMP JUMPDEST POP ISZERO PUSH2 0x453 JUMP JUMPDEST PUSH0 EQ PUSH2 0x51BE JUMPI POP PUSH2 0x5242 JUMP JUMPDEST PUSH2 0x51C7 DUP3 PUSH2 0x4C1F JUMP JUMPDEST PUSH2 0x51D9 PUSH2 0x51D3 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ DUP1 PUSH2 0x5227 JUMPI JUMPDEST PUSH2 0x51E8 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x5223 SWAP1 PUSH2 0x51F4 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x523C PUSH2 0x5236 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x51E0 JUMP JUMPDEST PUSH2 0x524B DUP2 PUSH2 0x4C1F JUMP JUMPDEST PUSH2 0x525D PUSH2 0x5257 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x526C JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x5274 PUSH2 0x291 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x52A4 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC DUP14 SELFDESTRUCT SAR CALLDATALOAD 0x29 0xD2 EXTCODEHASH MLOAD 0x25 0xC5 0xE6 CODECOPY LOG3 SWAP9 SMOD 0x21 0xD5 CALL STATICCALL 0xC6 INVALID PUSH26 0x59F97D618A0C6CFBF864736F6C63430008190033000000000000 ","sourceMap":"730:9546:67:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;67:580:31:-;;;:::i;:::-;:::o;701:3153:5:-;;;:::i;:::-;:::o;950:3411:6:-;;;:::i;:::-;:::o;1576:10896:3:-;;;:::i;:::-;:::o;278:1764:8:-;;;:::i;:::-;:::o;277:405:13:-;;;:::i;:::-;:::o;203:2575:12:-;;;:::i;:::-;:::o;749:3275:0:-;;;:::i;:::-;:::o;688:505:4:-;;;:::i;:::-;:::o;730:9546:67:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":887,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":770,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":5882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":4096,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":1419,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_bool":{"entryPoint":1322,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_bytes":{"entryPoint":2091,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint256":{"entryPoint":1062,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":2002,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_string":{"entryPoint":3440,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":1307,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":5747,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":2056,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":17435,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_string":{"entryPoint":3494,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_stringt_stringt_addresst_addresst_addresst_uint256":{"entryPoint":4248,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_stringt_stringt_addresst_addresst_addresst_uint256t_uint64":{"entryPoint":3577,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_t_bool_fromMemory":{"entryPoint":5732,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":17420,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":5378,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":2465,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":5897,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint256":{"entryPoint":4558,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":5284,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":698,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":5393,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_address":{"entryPoint":785,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint64":{"entryPoint":3562,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":5269,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_string_storage":{"entryPoint":8205,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":2599,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address_uint256":{"entryPoint":8574,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_address":{"entryPoint":12979,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":5777,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_uint256_uint256":{"entryPoint":16528,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bool":{"entryPoint":1125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":1112,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":2286,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":2273,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":14559,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":14546,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":985,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":936,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":8065,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":5052,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335f":{"entryPoint":10099,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":10074,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5344":{"entryPoint":12826,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_8475":{"entryPoint":12670,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f247":{"entryPoint":4897,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":830,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":2612,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":12696,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_4753":{"entryPoint":5078,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_5344":{"entryPoint":12852,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_f247":{"entryPoint":4922,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":11750,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":1213,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":1200,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_uint256":{"entryPoint":13041,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint64":{"entryPoint":11737,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint8":{"entryPoint":1603,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint8_to_uint8":{"entryPoint":1590,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_memory":{"entryPoint":1935,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":20753,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":3131,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":657,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":1956,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":3096,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":8056,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":19487,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":902,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":8047,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string_fromStack":{"entryPoint":906,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":8624,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":5661,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint8":{"entryPoint":5535,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":5563,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":5695,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint8":{"entryPoint":5499,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":20042,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_address":{"entryPoint":738,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":1107,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":2270,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":3795,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":2920,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":5812,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":1681,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":11531,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_0_by":{"entryPoint":4827,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_1_by":{"entryPoint":14503,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by":{"entryPoint":9818,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_2_by":{"entryPoint":15613,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":12161,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":5423,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":12228,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":14042,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":713,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":675,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":3529,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":1584,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":20011,"id":null,"parameterSlots":2,"returnSlots":0},"constant_ENTERED":{"entryPoint":15644,"id":null,"parameterSlots":0,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":9849,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NOT_ENTERED":{"entryPoint":15816,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":3229,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":2886,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_ERC20Upgradeable":{"entryPoint":12204,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Oracle":{"entryPoint":8550,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":12102,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Swapper":{"entryPoint":12955,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":17376,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":5342,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":5219,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_string_storage_to_string":{"entryPoint":8252,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":8410,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1DCAVault_to_address":{"entryPoint":5366,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_ERC20Upgradeable_to_address":{"entryPoint":12216,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Oracle_to_address":{"entryPoint":8562,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":5870,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":12114,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_address":{"entryPoint":12967,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":17388,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":5231,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":5354,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":14534,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":17131,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":4830,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_10000_by_1_to_uint256":{"entryPoint":12231,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1_by_1_to_uint256":{"entryPoint":15788,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":15616,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_360_by_1_to_uint256":{"entryPoint":12164,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":11284,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":9821,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":11256,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":14045,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":14506,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint8":{"entryPoint":5426,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":3218,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":14475,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":2874,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_ERC20Upgradeable":{"entryPoint":12192,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Oracle":{"entryPoint":8538,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":12090,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Swapper":{"entryPoint":12943,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":17364,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":5330,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":5207,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":2846,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":6018,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":11606,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_string":{"entryPoint":8218,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_string_to_string":{"entryPoint":20168,"id":null,"parameterSlots":2,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1991,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":3193,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":915,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_ceil":{"entryPoint":19875,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":3251,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_accumulatedAssetB":{"entryPoint":4654,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allowance":{"entryPoint":4141,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":1146,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":2495,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baseAsset":{"entryPoint":3871,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_canSystemDeposit":{"entryPoint":4454,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_changeReinvestDuration":{"entryPoint":4588,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_decimals":{"entryPoint":1624,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_deposit":{"entryPoint":2413,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_executors":{"entryPoint":2989,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAmountToSwap":{"entryPoint":3975,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":4396,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_lastDeposit":{"entryPoint":1737,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_lastInvestedBlock":{"entryPoint":3387,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_maxPerSwap":{"entryPoint":4043,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_name":{"entryPoint":1009,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":2737,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_pause":{"entryPoint":2686,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_paused":{"entryPoint":2360,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":2307,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quoteAsset":{"entryPoint":4722,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":2633,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":3737,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinvestDuration":{"entryPoint":2217,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":2548,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setExecutor":{"entryPoint":1367,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_swapDuration":{"entryPoint":3319,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_symbol":{"entryPoint":2790,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_systemDeposit":{"entryPoint":3924,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":1234,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalValuation":{"entryPoint":1531,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transfer":{"entryPoint":3042,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":1477,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":4507,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unitPrice":{"entryPoint":4195,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unpause":{"entryPoint":1790,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":2160,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_withdraw":{"entryPoint":835,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":8005,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_dynamict_address":{"entryPoint":3820,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_bool":{"entryPoint":2926,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_uint256":{"entryPoint":1684,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offset_8t_bool":{"entryPoint":11498,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":5174,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":9924,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":5837,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":5927,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":11544,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":20776,"id":null,"parameterSlots":0,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":20150,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":1894,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init":{"entryPoint":18440,"id":698,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_inner":{"entryPoint":18428,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained":{"entryPoint":20423,"id":726,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained_inner":{"entryPoint":20387,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":18397,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":18386,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":19844,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":19730,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Pausable_init":{"entryPoint":18538,"id":1345,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_inner":{"entryPoint":18528,"id":null,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_unchained":{"entryPoint":20532,"id":1363,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_unchained_inner":{"entryPoint":20510,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init":{"entryPoint":18500,"id":1509,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_inner":{"entryPoint":18490,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained":{"entryPoint":20482,"id":1527,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained_inner":{"entryPoint":20453,"id":null,"parameterSlots":0,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":18462,"id":502,"parameterSlots":0,"returnSlots":0},"fun__approve":{"entryPoint":16402,"id":1130,"parameterSlots":3,"returnSlots":0},"fun__pause":{"entryPoint":18285,"id":1444,"parameterSlots":0,"returnSlots":0},"fun__pause_inner":{"entryPoint":18197,"id":null,"parameterSlots":0,"returnSlots":0},"fun__transfer":{"entryPoint":16795,"id":954,"parameterSlots":3,"returnSlots":0},"fun__transferOwnership":{"entryPoint":18071,"id":193,"parameterSlots":1,"returnSlots":0},"fun_allowance":{"entryPoint":13993,"id":851,"parameterSlots":2,"returnSlots":1},"fun_approve":{"entryPoint":8299,"id":875,"parameterSlots":2,"returnSlots":1},"fun_approve_1198":{"entryPoint":19020,"id":1198,"parameterSlots":4,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":17353,"id":20001,"parameterSlots":1,"returnSlots":0},"fun_balanceOf":{"entryPoint":11199,"id":803,"parameterSlots":1,"returnSlots":1},"fun_burn":{"entryPoint":15932,"id":1112,"parameterSlots":2,"returnSlots":0},"fun_canSystemDeposit":{"entryPoint":15293,"id":20458,"parameterSlots":0,"returnSlots":1},"fun_changeReinvestDuration":{"entryPoint":15602,"id":19979,"parameterSlots":1,"returnSlots":0},"fun_changeReinvestDuration_inner":{"entryPoint":15559,"id":null,"parameterSlots":1,"returnSlots":0},"fun_checkInitializing":{"entryPoint":19628,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":20662,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":17783,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":16418,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":17143,"id":562,"parameterSlots":0,"returnSlots":0},"fun_decimals":{"entryPoint":9681,"id":767,"parameterSlots":0,"returnSlots":1},"fun_deposit":{"entryPoint":11165,"id":20110,"parameterSlots":2,"returnSlots":0},"fun_deposit_inner":{"entryPoint":10190,"id":null,"parameterSlots":2,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":20817,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":20542,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getAmountToSwap":{"entryPoint":13707,"id":20433,"parameterSlots":0,"returnSlots":1},"fun_getERC20Storage":{"entryPoint":16353,"id":682,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":19449,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":18331,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":18295,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getPausableStorage":{"entryPoint":17909,"id":1319,"parameterSlots":0,"returnSlots":1},"fun_getReentrancyGuardStorage":{"entryPoint":18548,"id":1497,"parameterSlots":0,"returnSlots":1},"fun_haircut":{"entryPoint":16059,"id":20588,"parameterSlots":1,"returnSlots":1},"fun_initialize":{"entryPoint":15277,"id":19880,"parameterSlots":6,"returnSlots":0},"fun_initialize_inner":{"entryPoint":14968,"id":null,"parameterSlots":6,"returnSlots":0},"fun_isInitializing":{"entryPoint":20864,"id":438,"parameterSlots":0,"returnSlots":1},"fun_mint":{"entryPoint":17945,"id":1079,"parameterSlots":2,"returnSlots":0},"fun_msgSender":{"entryPoint":16389,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_name":{"entryPoint":8264,"id":742,"parameterSlots":0,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":15829,"id":1579,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":15657,"id":1563,"parameterSlots":0,"returnSlots":0},"fun_owner":{"entryPoint":11397,"id":105,"parameterSlots":0,"returnSlots":1},"fun_pause":{"entryPoint":11387,"id":20468,"parameterSlots":0,"returnSlots":0},"fun_pause_inner":{"entryPoint":11377,"id":null,"parameterSlots":0,"returnSlots":0},"fun_paused":{"entryPoint":9957,"id":1395,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID":{"entryPoint":9905,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":9893,"id":null,"parameterSlots":1,"returnSlots":1},"fun_registry":{"entryPoint":11329,"id":20544,"parameterSlots":0,"returnSlots":1},"fun_reinitialize":{"entryPoint":12570,"id":19961,"parameterSlots":7,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":12259,"id":null,"parameterSlots":7,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":11315,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":11296,"id":null,"parameterSlots":0,"returnSlots":0},"fun_requireNotPaused":{"entryPoint":15858,"id":1407,"parameterSlots":0,"returnSlots":0},"fun_requirePaused":{"entryPoint":19366,"id":1420,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":21058,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setExecutor":{"entryPoint":8479,"id":20560,"parameterSlots":2,"returnSlots":0},"fun_setExecutor_inner":{"entryPoint":8457,"id":null,"parameterSlots":2,"returnSlots":0},"fun_setImplementation":{"entryPoint":20545,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_spendAllowance":{"entryPoint":16592,"id":1246,"parameterSlots":3,"returnSlots":0},"fun_symbol":{"entryPoint":11427,"id":758,"parameterSlots":0,"returnSlots":1},"fun_systemDeposit":{"entryPoint":13697,"id":20392,"parameterSlots":0,"returnSlots":0},"fun_systemDeposit_inner":{"entryPoint":13076,"id":null,"parameterSlots":0,"returnSlots":0},"fun_totalSupply":{"entryPoint":8337,"id":783,"parameterSlots":0,"returnSlots":1},"fun_totalValuation":{"entryPoint":8661,"id":20677,"parameterSlots":0,"returnSlots":1},"fun_transfer":{"entryPoint":11458,"id":827,"parameterSlots":2,"returnSlots":1},"fun_transferFrom":{"entryPoint":8491,"id":907,"parameterSlots":3,"returnSlots":1},"fun_transferOwnership":{"entryPoint":15529,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":15415,"id":null,"parameterSlots":1,"returnSlots":0},"fun_unitPrice":{"entryPoint":14073,"id":20533,"parameterSlots":0,"returnSlots":1},"fun_unpause":{"entryPoint":17121,"id":1468,"parameterSlots":0,"returnSlots":0},"fun_unpause_20478":{"entryPoint":9731,"id":20478,"parameterSlots":0,"returnSlots":0},"fun_unpause_20478_inner":{"entryPoint":9721,"id":null,"parameterSlots":0,"returnSlots":0},"fun_unpause_inner":{"entryPoint":17034,"id":null,"parameterSlots":0,"returnSlots":0},"fun_update":{"entryPoint":18598,"id":1046,"parameterSlots":3,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":19491,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":17465,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":9782,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":9761,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":20894,"id":2889,"parameterSlots":3,"returnSlots":1},"fun_withdraw":{"entryPoint":7943,"id":20316,"parameterSlots":2,"returnSlots":0},"fun_withdraw_inner":{"entryPoint":6081,"id":null,"parameterSlots":2,"returnSlots":0},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":3240,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_accumulatedAssetB":{"entryPoint":4639,"id":19779,"parameterSlots":0,"returnSlots":1},"getter_fun_baseAsset":{"entryPoint":3858,"id":19772,"parameterSlots":0,"returnSlots":1},"getter_fun_executors":{"entryPoint":2964,"id":19793,"parameterSlots":1,"returnSlots":1},"getter_fun_lastDeposit":{"entryPoint":1722,"id":19781,"parameterSlots":0,"returnSlots":1},"getter_fun_lastInvestedBlock":{"entryPoint":3372,"id":19783,"parameterSlots":0,"returnSlots":1},"getter_fun_maxPerSwap":{"entryPoint":4028,"id":19785,"parameterSlots":0,"returnSlots":1},"getter_fun_quoteAsset":{"entryPoint":4707,"id":19774,"parameterSlots":0,"returnSlots":1},"getter_fun_reinvestDuration":{"entryPoint":2202,"id":19789,"parameterSlots":0,"returnSlots":1},"getter_fun_swapDuration":{"entryPoint":3304,"id":19787,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":2843,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_bool_of_address":{"entryPoint":2898,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":13971,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":11177,"id":null,"parameterSlots":2,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":20129,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":14580,"id":302,"parameterSlots":6,"returnSlots":0},"modifier_nonReentrant":{"entryPoint":12587,"id":1538,"parameterSlots":0,"returnSlots":0},"modifier_nonReentrant_20009":{"entryPoint":9987,"id":1538,"parameterSlots":2,"returnSlots":0},"modifier_nonReentrant_20118":{"entryPoint":4779,"id":1538,"parameterSlots":2,"returnSlots":0},"modifier_notDelegated":{"entryPoint":9798,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":19711,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_1339":{"entryPoint":18510,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1348":{"entryPoint":20492,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1503":{"entryPoint":18472,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1512":{"entryPoint":20435,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":18367,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":18452,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_690":{"entryPoint":18408,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyInitializing_705":{"entryPoint":19855,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":8368,"id":89,"parameterSlots":2,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":11238,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":15396,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_19966":{"entryPoint":15540,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_19998":{"entryPoint":17342,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_20462":{"entryPoint":11359,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_20472":{"entryPoint":9703,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":9741,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":11771,"id":349,"parameterSlots":7,"returnSlots":0},"modifier_whenNotPaused":{"entryPoint":18179,"id":1371,"parameterSlots":0,"returnSlots":0},"modifier_whenNotPaused_20011":{"entryPoint":10015,"id":1371,"parameterSlots":2,"returnSlots":0},"modifier_whenNotPaused_20120":{"entryPoint":4807,"id":1371,"parameterSlots":2,"returnSlots":0},"modifier_whenNotPaused_20321":{"entryPoint":12613,"id":1371,"parameterSlots":0,"returnSlots":0},"modifier_whenPaused":{"entryPoint":17016,"id":1379,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":5454,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5616,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":7960,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1849,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":12055,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":8422,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":12126,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":6046,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":11634,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":3844,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_bool":{"entryPoint":2950,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_uint256":{"entryPoint":1708,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":5194,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":11518,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":5857,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_t_bool":{"entryPoint":9944,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":5947,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":11564,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":12876,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_335f":{"entryPoint":10123,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_4753":{"entryPoint":5102,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8475":{"entryPoint":12720,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_f247":{"entryPoint":4946,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":1841,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":4775,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":1845,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":671,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":663,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":667,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":5314,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":926,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":5960,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":5243,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":11669,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":19885,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":5169,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":11492,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":651,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1677,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_uint256":{"entryPoint":19991,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":3154,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":10035,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5":{"entryPoint":5013,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_53449748a5034738d502a01b62b389ab55b3ebc840f594da71fc707f6109e0a1":{"entryPoint":12787,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8475dfc2a61c983fde89982d493adea657965a16ea35a31669edc1d76f0cb847":{"entryPoint":12631,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6":{"entryPoint":4858,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_20_shift":{"entryPoint":12014,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_8_shift":{"entryPoint":11577,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_dynamic32":{"entryPoint":19889,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":5965,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":8388,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":11675,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":12058,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":11705,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_t_bool":{"entryPoint":8425,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":12129,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_string_to_string":{"entryPoint":20375,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":6049,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":11637,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_uint256_to_uint256":{"entryPoint":19957,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":750,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":1287,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":17400,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":678,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":3542,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":5249,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_add_uint256":{"entryPoint":18584,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_sub_uint256":{"entryPoint":16578,"id":null,"parameterSlots":2,"returnSlots":1},"zero_value_for_split_address":{"entryPoint":11325,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":8295,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":20748,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":9794,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_string":{"entryPoint":7955,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":8333,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint8":{"entryPoint":9677,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":17160},{"length":32,"start":17293},{"length":32,"start":17800}]},"linkReferences":{},"object":"60806040526004361015610013575b6112a7565b61001d5f3561028b565b8062f714ce1461028657806306fdde0314610281578063095ea7b31461027c57806318160ddd146102775780631e1bff3f1461027257806323b872dd1461026d578063295b930014610268578063313ce5671461026357806336b771071461025e5780633f4ba83a146102595780634f1ef286146102545780634fe84c421461024f57806352d1902d1461024a5780635c975abb146102455780636e553f651461024057806370a082311461023b578063715018a6146102365780637b103999146102315780638456cb591461022c5780638da5cb5b1461022757806395d89b41146102225780639ac2a0111461021d578063a9059cbb14610218578063ad3cb1cc14610213578063b3404efd1461020e578063bc4ba73114610209578063c80b0baf14610204578063cdf456e1146101ff578063d53419a3146101fa578063d9d47d69146101f5578063db48a5e3146101f0578063dd62ed3e146101eb578063e73faa2d146101e6578063edf3e29e146101e1578063f267d91b146101dc578063f2fde38b146101d7578063f661af29146101d2578063f7fde10f146101cd5763fdf262b70361000e57611272565b61122e565b6111ec565b61119b565b611166565b61112c565b611063565b61102d565b610fcb565b610f87565b610f54565b610f1f565b610e99565b610d3b565b610cf7565b610cb3565b610be2565b610bad565b610ae6565b610ab1565b610a7e565b610a49565b6109f4565b6109bf565b61096d565b610938565b610903565b6108a9565b610870565b6106fe565b6106c9565b610658565b6105fb565b6105c5565b610557565b6104d2565b61047a565b6103f1565b610343565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b6102af816102a3565b036102b657565b5f80fd5b905035906102c7826102a6565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102eb906102c9565b90565b6102f7816102e2565b036102fe57565b5f80fd5b9050359061030f826102ee565b565b9190604083820312610339578061032d610336925f86016102ba565b93602001610302565b90565b61029b565b5f0190565b346103725761035c610356366004610311565b90611f07565b610364610291565b8061036e8161033e565b0390f35b610297565b5f91031261038157565b61029b565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6103c76103d06020936103d5936103be81610386565b9384809361038a565b95869101610393565b61039e565b0190565b6103ee9160208201915f8184039101526103a8565b90565b3461042157610401366004610377565b61041d61040c612048565b610414610291565b918291826103d9565b0390f35b610297565b919060408382031261044e578061044261044b925f8601610302565b936020016102ba565b90565b61029b565b151590565b61046190610453565b9052565b9190610478905f60208501940190610458565b565b346104ab576104a7610496610490366004610426565b9061206b565b61049e610291565b91829182610465565b0390f35b610297565b6104b9906102a3565b9052565b91906104d0905f602085019401906104b0565b565b34610502576104e2366004610377565b6104fe6104ed612091565b6104f5610291565b918291826104bd565b0390f35b610297565b61051081610453565b0361051757565b5f80fd5b9050359061052882610507565b565b9190604083820312610552578061054661054f925f8601610302565b9360200161051b565b90565b61029b565b346105865761057061056a36600461052a565b9061211f565b610578610291565b806105828161033e565b0390f35b610297565b90916060828403126105c0576105bd6105a6845f8501610302565b936105b48160208601610302565b936040016102ba565b90565b61029b565b346105f6576105f26105e16105db36600461058b565b9161212b565b6105e9610291565b91829182610465565b0390f35b610297565b3461062b5761060b366004610377565b6106276106166121d5565b61061e610291565b918291826104bd565b0390f35b610297565b60ff1690565b61063f90610630565b9052565b9190610656905f60208501940190610636565b565b3461068857610668366004610377565b6106846106736125d1565b61067b610291565b91829182610643565b0390f35b610297565b1c90565b90565b6106a49060086106a9930261068d565b610691565b90565b906106b79154610694565b90565b6106c660045f906106ac565b90565b346106f9576106d9366004610377565b6106f56106e46106ba565b6106ec610291565b918291826104bd565b0390f35b610297565b3461072c5761070e366004610377565b610716612603565b61071e610291565b806107288161033e565b0390f35b610297565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906107709061039e565b810190811067ffffffffffffffff82111761078a57604052565b610739565b906107a261079b610291565b9283610766565b565b67ffffffffffffffff81116107c2576107be60209161039e565b0190565b610739565b90825f939282370152565b909291926107e76107e2826107a4565b61078f565b9381855260208501908284011161080357610801926107c7565b565b610735565b9080601f8301121561082657816020610823933591016107d2565b90565b610731565b91909160408184031261086b57610844835f8301610302565b92602082013567ffffffffffffffff8111610866576108639201610808565b90565b61029f565b61029b565b61088461087e36600461082b565b90612636565b61088c610291565b806108968161033e565b0390f35b6108a660085f906106ac565b90565b346108d9576108b9366004610377565b6108d56108c461089a565b6108cc610291565b918291826104bd565b0390f35b610297565b90565b6108ea906108de565b9052565b9190610901905f602085019401906108e1565b565b3461093357610913366004610377565b61092f61091e6126b1565b610926610291565b918291826108ee565b0390f35b610297565b3461096857610948366004610377565b6109646109536126e5565b61095b610291565b91829182610465565b0390f35b610297565b3461099c57610986610980366004610311565b90612b9d565b61098e610291565b806109988161033e565b0390f35b610297565b906020828203126109ba576109b7915f01610302565b90565b61029b565b346109ef576109eb6109da6109d53660046109a1565b612bbf565b6109e2610291565b918291826104bd565b0390f35b610297565b34610a2257610a04366004610377565b610a0c612c33565b610a14610291565b80610a1e8161033e565b0390f35b610297565b610a30906102e2565b9052565b9190610a47905f60208501940190610a27565b565b34610a7957610a59366004610377565b610a75610a64612c41565b610a6c610291565b91829182610a34565b0390f35b610297565b34610aac57610a8e366004610377565b610a96612c7b565b610a9e610291565b80610aa88161033e565b0390f35b610297565b34610ae157610ac1366004610377565b610add610acc612c85565b610ad4610291565b91829182610a34565b0390f35b610297565b34610b1657610af6366004610377565b610b12610b01612ca3565b610b09610291565b918291826103d9565b0390f35b610297565b90565b610b32610b2d610b37926102c9565b610b1b565b6102c9565b90565b610b4390610b1e565b90565b610b4f90610b3a565b90565b90610b5c90610b46565b5f5260205260405f2090565b60ff1690565b610b7e906008610b83930261068d565b610b68565b90565b90610b919154610b6e565b90565b610baa90610ba56009915f92610b52565b610b86565b90565b34610bdd57610bd9610bc8610bc33660046109a1565b610b94565b610bd0610291565b91829182610465565b0390f35b610297565b34610c1357610c0f610bfe610bf8366004610426565b90612cc2565b610c06610291565b91829182610465565b0390f35b610297565b67ffffffffffffffff8111610c3657610c3260209161039e565b0190565b610739565b90610c4d610c4883610c18565b61078f565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610c836005610c3b565b90610c9060208301610c52565b565b610c9a610c79565b90565b610ca5610c92565b90565b610cb0610c9d565b90565b34610ce357610cc3366004610377565b610cdf610cce610ca8565b610cd6610291565b918291826103d9565b0390f35b610297565b610cf460075f906106ac565b90565b34610d2757610d07366004610377565b610d23610d12610ce8565b610d1a610291565b918291826104bd565b0390f35b610297565b610d3860055f906106ac565b90565b34610d6b57610d4b366004610377565b610d67610d56610d2c565b610d5e610291565b918291826104bd565b0390f35b610297565b90929192610d85610d8082610c18565b61078f565b93818552602085019082840111610da157610d9f926107c7565b565b610735565b9080601f83011215610dc457816020610dc193359101610d70565b90565b610731565b67ffffffffffffffff1690565b610ddf81610dc9565b03610de657565b5f80fd5b90503590610df782610dd6565b565b60e081830312610e94575f81013567ffffffffffffffff8111610e8f5782610e22918301610da6565b92602082013567ffffffffffffffff8111610e8a5783610e43918401610da6565b92610e518160408501610302565b92610e5f8260608301610302565b92610e87610e708460808501610302565b93610e7e8160a086016102ba565b9360c001610dea565b90565b61029f565b61029f565b61029b565b34610ece57610eb8610eac366004610df9565b9594909493919361311a565b610ec0610291565b80610eca8161033e565b0390f35b610297565b73ffffffffffffffffffffffffffffffffffffffff1690565b610efc906008610f01930261068d565b610ed3565b90565b90610f0f9154610eec565b90565b610f1c5f80610f04565b90565b34610f4f57610f2f366004610377565b610f4b610f3a610f12565b610f42610291565b91829182610a34565b0390f35b610297565b34610f8257610f64366004610377565b610f6c613581565b610f74610291565b80610f7e8161033e565b0390f35b610297565b34610fb757610f97366004610377565b610fb3610fa261358b565b610faa610291565b918291826104bd565b0390f35b610297565b610fc860065f906106ac565b90565b34610ffb57610fdb366004610377565b610ff7610fe6610fbc565b610fee610291565b918291826104bd565b0390f35b610297565b9190604083820312611028578061101c611025925f8601610302565b93602001610302565b90565b61029b565b3461105e5761105a611049611043366004611000565b906136a9565b611051610291565b918291826104bd565b0390f35b610297565b3461109357611073366004610377565b61108f61107e6136f9565b611086610291565b918291826104bd565b0390f35b610297565b909160c082840312611127575f82013567ffffffffffffffff811161112257836110c3918401610da6565b92602083013567ffffffffffffffff811161111d57816110e4918501610da6565b926110f28260408301610302565b9261111a6111038460608501610302565b936111118160808601610302565b9360a0016102ba565b90565b61029f565b61029f565b61029b565b346111615761114b61113f366004611098565b94939093929192613bad565b611153610291565b8061115d8161033e565b0390f35b610297565b3461119657611176366004610377565b611192611181613bbd565b611189610291565b91829182610465565b0390f35b610297565b346111c9576111b36111ae3660046109a1565b613ca9565b6111bb610291565b806111c58161033e565b0390f35b610297565b906020828203126111e7576111e4915f016102ba565b90565b61029b565b3461121a576112046111ff3660046111ce565b613cf2565b61120c610291565b806112168161033e565b0390f35b610297565b61122b60035f906106ac565b90565b3461125e5761123e366004610377565b61125a61124961121f565b611251610291565b918291826104bd565b0390f35b610297565b61126f60015f90610f04565b90565b346112a257611282366004610377565b61129e61128d611263565b611295610291565b91829182610a34565b0390f35b610297565b5f80fd5b906112bd916112b8613d29565b6112c7565b6112c5613dd5565b565b906112d9916112d4613df2565b6117c1565b565b90565b6112f26112ed6112f7926112db565b610b1b565b6102a3565b90565b5f7f536861726573206d7573742062652067726561746572207468616e207a65726f910152565b61132d6020809261038a565b611336816112fa565b0190565b61134f9060208101905f818303910152611321565b90565b1561135957565b611361610291565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806113916004820161133a565b0390fd5b5f7f496e73756666696369656e742062616c616e6365000000000000000000000000910152565b6113c9601460209261038a565b6113d281611395565b0190565b6113eb9060208101905f8183039101526113bc565b90565b156113f557565b6113fd610291565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061142d600482016113d6565b0390fd5b5f1c90565b61144261144791611431565b610ed3565b90565b6114549054611436565b90565b61146090610b1e565b90565b61146c90611457565b90565b61147890610b3a565b90565b60e01b90565b61148a81610630565b0361149157565b5f80fd5b905051906114a282611481565b565b906020828203126114bd576114ba915f01611495565b90565b61029b565b6114ca610291565b3d5f823e3d90fd5b6114db90610b1e565b90565b6114e7906114d2565b90565b6114f390610b3a565b90565b6114ff90610b3a565b90565b9050519061150f826102a6565b565b9060208282031261152a57611527915f01611502565b90565b61029b565b90565b61154661154161154b9261152f565b610b1b565b610630565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61158761158d91610630565b91610630565b90039060ff821161159a57565b61154e565b6115a890610630565b604d81116115b657600a0a90565b61154e565b6115ca6115d0919392936102a3565b926102a3565b916115dc8382026102a3565b9281840414901517156115eb57565b61154e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61162961162f916102a3565b916102a3565b90811561163a570490565b6115f0565b61164e611654919392936102a3565b926102a3565b820391821161165f57565b61154e565b9050519061167182610507565b565b9060208282031261168c57611689915f01611664565b90565b61029b565b9160206116b29294936116ab60408201965f830190610a27565b01906104b0565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b6116d96116de91611431565b6116b4565b90565b6116eb90546116cd565b90565b6116f790610b3a565b90565b90505190611707826102ee565b565b906020828203126117225761171f915f016116fa565b90565b61029b565b61173361173891611431565b610691565b90565b6117459054611727565b90565b5f1b90565b906117787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91611748565b9181191691161790565b61179661179161179b926102a3565b610b1b565b6102a3565b90565b90565b906117b66117b16117bd92611782565b61179e565b825461174d565b9055565b906117de826117d86117d25f6112de565b916102a3565b11611352565b6118036117ea33612bbf565b6117fc6117f6856102a3565b916102a3565b10156113ee565b611838602061182261181d611818600161144a565b611463565b61146f565b63313ce56790611830610291565b93849261147b565b825281806118486004820161033e565b03915afa908115611f02575f91611ed4575b506118ac602061187a611875611870600161144a565b6114de565b6114ea565b6370a08231906118a161188c306114f6565b92611895610291565b9586948593849361147b565b835260048301610a34565b03915afa908115611ecf575f91611ea1575b509261191060206118de6118d96118d45f61144a565b6114de565b6114ea565b6370a08231906119056118f0306114f6565b926118f9610291565b9586948593849361147b565b835260048301610a34565b03915afa908115611e9c576119af9361199561198e61198061197961196b6119646119a9986119a4985f91611e6e575b509c61195e61195960126119548b91611532565b61157b565b61159f565b906115bb565b9b896115bb565b611973612091565b9061161d565b99876115bb565b611988612091565b9061161d565b9433613e3c565b61199f6012611532565b61157b565b61159f565b9061161d565b91906119ba82613ebb565b926119d46119cf6119ca5f61144a565b6114de565b6114ea565b602063a9059cbb918490611a055f6119ed898b9061163f565b95611a106119f9610291565b9788968795869461147b565b845260048401611691565b03925af18015611e6957611e3d575b50611a2984613ebb565b91611a576020611a41611a3c60026116e1565b6116ee565b6304cc732590611a4f610291565b93849261147b565b82528180611a676004820161033e565b03915afa908115611e38575f91611e0a575b5092611aa86020611a92611a8d60026116e1565b6116ee565b633b19e84a90611aa0610291565b93849261147b565b82528180611ab86004820161033e565b03915afa908115611e05575f91611dd7575b50956020611ae7611ae2611add5f61144a565b6114de565b6114ea565b9163a9059cbb92611b165f611afe8a94889061163f565b95611b21611b0a610291565b9788968795869461147b565b845260048401611691565b03925af18015611dd257611da6575b506020611b4c611b47611b425f61144a565b6114de565b6114ea565b9163a9059cbb92611b715f8a9395611b7c611b65610291565b9788968795869461147b565b845260048401611691565b03925af18015611da157611d75575b506020611b9783613ebb565b92611bb2611bad611ba8600161144a565b6114de565b6114ea565b611bdf5f611bc763a9059cbb9694889061163f565b95611bea611bd3610291565b9788968795869461147b565b845260048401611691565b03925af18015611d7057611d44575b506020611c0582613ebb565b91611c1f611c1a611c155f61144a565b6114de565b6114ea565b611c4c5f611c3463a9059cbb9794879061163f565b96611c57611c40610291565b9889968795869461147b565b845260048401611691565b03925af1918215611d3f57602092611d14575b50611c84611c7f611c7a5f61144a565b6114de565b6114ea565b611ca75f63a9059cbb969396611cb2611c9b610291565b9889968795869461147b565b845260048401611691565b03925af1908115611d0f57611ce192611cda92611ce3575b50611cd5600461173b565b61163f565b60046117a1565b565b611d039060203d8111611d08575b611cfb8183610766565b810190611673565b611cca565b503d611cf1565b6114c2565b611d3390833d8111611d38575b611d2b8183610766565b810190611673565b611c6a565b503d611d21565b6114c2565b611d649060203d8111611d69575b611d5c8183610766565b810190611673565b611bf9565b503d611d52565b6114c2565b611d959060203d8111611d9a575b611d8d8183610766565b810190611673565b611b8b565b503d611d83565b6114c2565b611dc69060203d8111611dcb575b611dbe8183610766565b810190611673565b611b30565b503d611db4565b6114c2565b611df8915060203d8111611dfe575b611df08183610766565b810190611709565b5f611aca565b503d611de6565b6114c2565b611e2b915060203d8111611e31575b611e238183610766565b810190611709565b5f611a79565b503d611e19565b6114c2565b611e5d9060203d8111611e62575b611e558183610766565b810190611673565b611a1f565b503d611e4b565b6114c2565b611e8f915060203d8111611e95575b611e878183610766565b810190611511565b5f611940565b503d611e7d565b6114c2565b611ec2915060203d8111611ec8575b611eba8183610766565b810190611511565b5f6118be565b503d611eb0565b6114c2565b611ef5915060203d8111611efb575b611eed8183610766565b8101906114a4565b5f61185a565b503d611ee3565b6114c2565b90611f11916112ab565b565b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b9060016002830492168015611f65575b6020831014611f6057565b611f18565b91607f1691611f55565b60209181520190565b5f5260205f2090565b905f9291805490611f9b611f9483611f45565b8094611f6f565b916001811690815f14611ff25750600114611fb6575b505050565b611fc39192939450611f78565b915f925b818410611fda57505001905f8080611fb1565b60018160209295939554848601520191019290611fc7565b92949550505060ff19168252151560200201905f8080611fb1565b9061201791611f81565b90565b9061203a6120339261202a610291565b9384809261200d565b0383610766565b565b6120459061201a565b90565b612050611f13565b50612064600361205e613fe1565b0161203c565b90565b5f90565b61208891612077612067565b50612080614005565b919091614012565b600190565b5f90565b61209961208d565b506120ad60026120a7613fe1565b0161173b565b90565b906120c2916120bd614022565b612109565b565b906120d060ff91611748565b9181191691161790565b6120e390610453565b90565b90565b906120fe6120f9612105926120da565b6120e6565b82546120c4565b9055565b61211861211d92916009610b52565b6120e9565b565b90612129916120b0565b565b9161215592612138612067565b5061214d612144614005565b829084916140d0565b91909161419b565b600190565b61216390610b1e565b90565b61216f9061215a565b90565b61217b90610b3a565b90565b6040906121a76121ae949695939661219d60608401985f850190610a27565b6020830190610a27565b01906104b0565b565b6121bf6121c5919392936102a3565b926102a3565b82018092116121d057565b61154e565b6121dd61208d565b5061220b60206121f56121f060026116e1565b6116ee565b63bb3ba04c90612203610291565b93849261147b565b8252818061221b6004820161033e565b03915afa80156125c857612236915f9161259a575b50612166565b612263602061224d61224860026116e1565b6116ee565b631bf01e9b9061225b610291565b93849261147b565b825281806122736004820161033e565b03915afa908115612595575f91612567575b50906122905f6112de565b916122e160206122af6122aa6122a55f61144a565b6114de565b6114ea565b6370a08231906122d66122c1306114f6565b926122ca610291565b9586948593849361147b565b835260048301610a34565b03915afa908115612562575f91612534575b5092612346602061231461230f61230a600161144a565b6114de565b6114ea565b6370a082319061233b612326306114f6565b9261232f610291565b9586948593849361147b565b835260048301610a34565b03915afa90811561252f575f91612501575b50908461236d6123675f6112de565b916102a3565b14806124e7575b6124d657602061238385612172565b63248391ff906123b0612396600161144a565b926123bb88976123a4610291565b9889968795869561147b565b85526004850161217e565b03915afa9081156124d1576123d7925f926124a1575b506121b0565b916123e15f61144a565b6123f36123ed846102e2565b916102e2565b145f1461240a57505061240691906121b0565b5b90565b90612416602092612172565b61244063248391ff61244b61242a5f61144a565b9497612434610291565b9889968795869561147b565b85526004850161217e565b03915afa90811561249c57612467925f9261246c575b506121b0565b612407565b61248e91925060203d8111612495575b6124868183610766565b810190611511565b905f612461565b503d61247c565b6114c2565b6124c391925060203d81116124ca575b6124bb8183610766565b810190611511565b905f6123d1565b503d6124b1565b6114c2565b50505050506124e45f6112de565b90565b50816124fb6124f55f6112de565b916102a3565b14612374565b612522915060203d8111612528575b61251a8183610766565b810190611511565b5f612358565b503d612510565b6114c2565b612555915060203d811161255b575b61254d8183610766565b810190611511565b5f6122f3565b503d612543565b6114c2565b612588915060203d811161258e575b6125808183610766565b810190611709565b5f612285565b503d612576565b6114c2565b6125bb915060203d81116125c1575b6125b38183610766565b810190611709565b5f612230565b503d6125a9565b6114c2565b5f90565b6125d96125cd565b506125e46012611532565b90565b6125ef614022565b6125f76125f9565b565b6126016142e1565b565b61260b6125e7565b565b9061261f9161261a6142f7565b612621565b565b906126349161262f816143c9565b614439565b565b906126409161260d565b565b5f90565b61265790612652614577565b6126a5565b90565b90565b61267161266c6126769261265a565b611748565b6108de565b90565b6126a27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61265d565b90565b506126ae612679565b90565b6126c16126bc612642565b612646565b90565b6126d06126d591611431565b610b68565b90565b6126e290546126c4565b90565b6126ed612067565b506127005f6126fa6145f5565b016126d8565b90565b9061271591612710613d29565b61271f565b61271d613dd5565b565b906127319161272c613df2565b6127ce565b565b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b6127666020809261038a565b61276f81612733565b0190565b6127889060208101905f81830391015261275a565b90565b1561279257565b61279a610291565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806127ca60048201612773565b0390fd5b6127ea816127e46127de5f6112de565b916102a3565b1161278b565b6128036127fe6127f95f61144a565b6114de565b6114ea565b60206323b872dd9133906128335f61281a306114f6565b9561283e88612827610291565b9889978896879561147b565b85526004850161217e565b03925af18015612b9857612b6c575b5061287b602061286561286060026116e1565b6116ee565b6304cc732590612873610291565b93849261147b565b8252818061288b6004820161033e565b03915afa908115612b67575f91612b39575b50906128cc60206128b66128b160026116e1565b6116ee565b633b19e84a906128c4610291565b93849261147b565b825281806128dc6004820161033e565b03915afa908115612b34575f91612b06575b50916128f982613ebb565b9061290382613ebb565b602061291e6129196129145f61144a565b6114de565b6114ea565b63a9059cbb939061294c5f61293488879061163f565b96612957612940610291565b9889968795869461147b565b845260048401611691565b03925af1918215612b0157602092612ad6575b5061298461297f61297a5f61144a565b6114de565b6114ea565b6129a75f63a9059cbb9793976129b261299b610291565b998a968795869461147b565b845260048401611691565b03925af1918215612ad157612a01936129d093612aa5575b5061163f565b60206129eb6129e66129e15f61144a565b611463565b61146f565b63313ce567906129f9610291565b94859261147b565b82528180612a116004820161033e565b03915afa8015612aa057612a7093612a54612a5a92612a69955f91612a72575b50612a4e612a498692612a446012611532565b61157b565b61159f565b906115bb565b90614619565b612a64600461173b565b6121b0565b60046117a1565b565b612a93915060203d8111612a99575b612a8b8183610766565b8101906114a4565b5f612a31565b503d612a81565b6114c2565b612ac59060203d8111612aca575b612abd8183610766565b810190611673565b6129ca565b503d612ab3565b6114c2565b612af590833d8111612afa575b612aed8183610766565b810190611673565b61296a565b503d612ae3565b6114c2565b612b27915060203d8111612b2d575b612b1f8183610766565b810190611709565b5f6128ee565b503d612b15565b6114c2565b612b5a915060203d8111612b60575b612b528183610766565b810190611709565b5f61289d565b503d612b48565b6114c2565b612b8c9060203d8111612b91575b612b848183610766565b810190611673565b61284d565b503d612b7a565b6114c2565b90612ba791612703565b565b90612bb390610b46565b5f5260205260405f2090565b612bde612be391612bce61208d565b505f612bd8613fe1565b01612ba9565b61173b565b90565b612bee614022565b612bf6612c20565b565b612c0c612c07612c11926112db565b610b1b565b6102c9565b90565b612c1d90612bf8565b90565b612c31612c2c5f612c14565b614697565b565b612c3b612be6565b565b5f90565b612c49612c3d565b50612c5c612c5760026116e1565b6116ee565b90565b612c67614022565b612c6f612c71565b565b612c7961476d565b565b612c83612c5f565b565b612c8d612c3d565b50612ca05f612c9a614777565b0161144a565b90565b612cab611f13565b50612cbf6004612cb9613fe1565b0161203c565b90565b612cdf91612cce612067565b50612cd7614005565b91909161419b565b600190565b60401c90565b612cf6612cfb91612ce4565b610b68565b90565b612d089054612cea565b90565b67ffffffffffffffff1690565b612d24612d2991611431565b612d0b565b90565b612d369054612d18565b90565b90612d4c67ffffffffffffffff91611748565b9181191691161790565b612d6a612d65612d6f92610dc9565b610b1b565b610dc9565b90565b90565b90612d8a612d85612d9192612d56565b612d72565b8254612d39565b9055565b60401b90565b90612daf68ff000000000000000091612d95565b9181191691161790565b90612dce612dc9612dd5926120da565b6120e6565b8254612d9b565b9055565b612de290610dc9565b9052565b9190612df9905f60208501940190612dd9565b565b929591939490948296612e0c61479b565b95612e185f8801612cfe565b8015612ec9575b612e8d57612e5297612e4996612e378b5f8b01612d75565b612e4460015f8b01612db9565b612fe3565b5f809101612db9565b612e887fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612e7f610291565b91829182612de6565b0390a1565b612e95610291565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280612ec56004820161033e565b0390fd5b50612ed55f8801612d2c565b612ee7612ee18b610dc9565b91610dc9565b1015612e1f565b90612f0d73ffffffffffffffffffffffffffffffffffffffff91611748565b9181191691161790565b90565b90612f2f612f2a612f3692610b46565b612f17565b8254612eee565b9055565b612f4390610b1e565b90565b612f4f90612f3a565b90565b612f5b90612f3a565b90565b90565b90612f76612f71612f7d92612f52565b612f5e565b8254612eee565b9055565b90565b612f98612f93612f9d92612f81565b610b1b565b6102a3565b90565b612fa990610b1e565b90565b612fb590612fa0565b90565b612fc190610b3a565b90565b90565b612fdb612fd6612fe092612fc4565b610b1b565b6102a3565b90565b61303692965061303d9361300861306397969361303193613003336147dd565b614808565b61301061481e565b613018614844565b61302061486a565b61302a885f612f1a565b6001612f1a565b612f46565b6002612f61565b61305c6130556101686130508491612f84565b6115bb565b60076117a1565b60086117a1565b61306e4360056117a1565b61309d602061308761308261271094612fac565b612fb8565b63313ce56790613095610291565b93849261147b565b825281806130ad6004820161033e565b03915afa918215613115576130d96130d36130e5946130de945f916130e7575b5061159f565b91612fc7565b6115bb565b60066117a1565b565b613108915060203d811161310e575b6131008183610766565b8101906114a4565b5f6130cd565b503d6130f6565b6114c2565b90613129969594939291612dfb565b565b613133613d29565b61313b613145565b613143613dd5565b565b61314d613df2565b613155613314565b565b5f7f776169742074696c6c206e657874207265696e76657374206379636c65000000910152565b61318b601d60209261038a565b61319481613157565b0190565b6131ad9060208101905f81830391015261317e565b90565b156131b757565b6131bf610291565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806131ef60048201613198565b0390fd5b5f7f4e6f7468696e6720746f20737761700000000000000000000000000000000000910152565b613227600f60209261038a565b613230816131f3565b0190565b6132499060208101905f81830391015261321a565b90565b1561325357565b61325b610291565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061328b60048201613234565b0390fd5b61329890610b1e565b90565b6132a49061328f565b90565b6132b090610b3a565b90565b6132e86132ef946132de6060949897956132d4608086019a5f870190610a27565b6020850190610a27565b60408301906104b0565b0190610a27565b565b91602061331292949361330b60408201965f8301906104b0565b01906104b0565b565b61334c61332b43613325600561173b565b9061163f565b61334661334061333b600861173b565b6102a3565b916102a3565b116131b0565b61335461358b565b6133708161336a6133645f6112de565b916102a3565b1161324c565b61339d602061338761338260026116e1565b6116ee565b6382755ebb90613395610291565b93849261147b565b825281806133ad6004820161033e565b03915afa801561357c576133c8915f9161354e575b5061329b565b6133e16133dc6133d75f61144a565b6114de565b6114ea565b90602063095ea7b3926133f3836132a7565b906134115f879661341c613405610291565b9889968795869461147b565b845260048401611691565b03925af1918215613549576134369261351d575b506132a7565b6020632d6bc8ea916134475f61144a565b906134795f613456600161144a565b9561348488613464306114f6565b9061346d610291565b998a988997889661147b565b8652600486016132b3565b03925af1908115613518575f916134ea575b50906134a34360056117a1565b3390916134d07f129ac658e77b551b004790e5bd957532cef552c50852a1ee0e38dd3e23fe85db92610b46565b926134e56134dc610291565b928392836132f1565b0390a2565b61350b915060203d8111613511575b6135038183610766565b810190611511565b5f613496565b503d6134f9565b6114c2565b61353d9060203d8111613542575b6135358183610766565b810190611673565b613430565b503d61352b565b6114c2565b61356f915060203d8111613575575b6135678183610766565b810190611709565b5f6133c2565b503d61355d565b6114c2565b61358961312b565b565b61359361208d565b506135e460206135b26135ad6135a85f61144a565b6114de565b6114ea565b6370a08231906135d96135c4306114f6565b926135cd610291565b9586948593849361147b565b835260048301610a34565b03915afa90811561368e5761362991613619915f91613660575b506136134361360d600561173b565b9061163f565b906115bb565b613623600761173b565b9061161d565b8061364561363f61363a600661173b565b6102a3565b916102a3565b115f1461365b5750613657600661173b565b5b90565b613658565b613681915060203d8111613687575b6136798183610766565b810190611511565b5f6135fe565b503d61366f565b6114c2565b9061369d90610b46565b5f5260205260405f2090565b6136d7916136cd6136d2926136bc61208d565b5060016136c7613fe1565b01613693565b612ba9565b61173b565b90565b90565b6136f16136ec6136f6926136da565b610b1b565b6102a3565b90565b61370161208d565b5061370a612091565b61371c6137165f6112de565b916102a3565b1461387f5761374e602061373861373360026116e1565b6116ee565b631bf01e9b90613746610291565b93849261147b565b8252818061375e6004820161033e565b03915afa90811561387a5761378861378361379e936020935f9161384d575b50611463565b61146f565b63313ce56790613796610291565b93849261147b565b825281806137ae6004820161033e565b03915afa8015613848576137f26137e56137e061380993613817955f9161381a575b506137db6012611532565b61157b565b61159f565b6137ed6121d5565b6115bb565b613803670de0b6b3a76400006136dd565b906115bb565b613811612091565b9061161d565b90565b61383b915060203d8111613841575b6138338183610766565b8101906114a4565b5f6137d0565b503d613829565b6114c2565b61386d9150843d8111613873575b6138658183610766565b810190611709565b5f61377d565b503d61385b565b6114c2565b6138885f6112de565b90565b61389f61389a6138a4926112db565b610b1b565b610dc9565b90565b90565b6138be6138b96138c3926138a7565b610b1b565b610dc9565b90565b6138cf90610b3a565b90565b6138db906138aa565b9052565b91906138f2905f602085019401906138d2565b565b9294919493909361390361479b565b956139186139125f8901612cfe565b15610453565b956139245f8901612d2c565b806139376139315f61388b565b91610dc9565b1480613a71575b9061395261394c60016138aa565b91610dc9565b1480613a49575b613964909115610453565b9081613a38575b506139fc576139949561398961398160016138aa565b5f8b01612d75565b876139ea575b613a78565b61399c575b50565b6139a9905f809101612db9565b60016139e17fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916139d8610291565b918291826138df565b0390a15f613999565b6139f760015f8b01612db9565b61398f565b613a04610291565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613a346004820161033e565b0390fd5b613a43915015610453565b5f61396b565b50613964613a56306138c6565b3b613a69613a635f6112de565b916102a3565b149050613959565b508761393e565b93613ac4613ad0939694613a9b613ac994613af698613a96336147dd565b614808565b613aa361481e565b613aab614844565b613ab361486a565b613abd885f612f1a565b6001612f1a565b612f46565b6002612f61565b613aef613ae8610168613ae38491612f84565b6115bb565b60076117a1565b60086117a1565b613b014360056117a1565b613b306020613b1a613b1561271094612fac565b612fb8565b63313ce56790613b28610291565b93849261147b565b82528180613b406004820161033e565b03915afa918215613ba857613b6c613b66613b7894613b71945f91613b7a575b5061159f565b91612fc7565b6115bb565b60066117a1565b565b613b9b915060203d8111613ba1575b613b938183610766565b8101906114a4565b5f613b60565b503d613b89565b6114c2565b90613bbb95949392916138f4565b565b613bc5612067565b50613bce61358b565b613be243613bdc600561173b565b9061163f565b613bfd613bf7613bf2600861173b565b6102a3565b916102a3565b119081613c09575b5090565b9050613c1d613c175f6112de565b916102a3565b115f613c05565b613c3590613c30614022565b613c37565b565b80613c52613c4c613c475f612c14565b6102e2565b916102e2565b14613c6257613c6090614697565b565b613ca5613c6e5f612c14565b613c76610291565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b613cb290613c24565b565b613cc590613cc0614022565b613cc7565b565b613ce9613cf091613cd98160086117a1565b613ce4610168612f84565b6115bb565b60076117a1565b565b613cfb90613cb4565b565b90565b613d14613d0f613d1992613cfd565b610b1b565b6102a3565b90565b613d266002613d00565b90565b613d31614874565b613d3c5f820161173b565b613d55613d4f613d4a613d1c565b6102a3565b916102a3565b14613d7057613d6e905f613d67613d1c565b91016117a1565b565b613d78610291565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280613da86004820161033e565b0390fd5b613dc0613dbb613dc5926138a7565b610b1b565b6102a3565b90565b613dd26001613dac565b90565b613df0613de0614874565b5f613de9613dc8565b91016117a1565b565b613dfa6126e5565b613e0057565b613e08610291565b7fd93c066500000000000000000000000000000000000000000000000000000000815280613e386004820161033e565b0390fd5b9081613e58613e52613e4d5f612c14565b6102e2565b916102e2565b14613e7457613e729190613e6b5f612c14565b90916148a6565b565b613eb7613e805f612c14565b613e88610291565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b613ec361208d565b50613ef16020613edb613ed660026116e1565b6116ee565b6385462d6f90613ee9610291565b93849261147b565b82528180613f016004820161033e565b03915afa908115613fdc575f91613fae575b5090613f426020613f2c613f2760026116e1565b6116ee565b634f4608a290613f3a610291565b93849261147b565b82528180613f526004820161033e565b03915afa928315613fa957613f7893613f73925f91613f7b575b50926115bb565b61161d565b90565b613f9c915060203d8111613fa2575b613f948183610766565b810190611511565b5f613f6c565b503d613f8a565b6114c2565b613fcf915060203d8111613fd5575b613fc78183610766565b810190611511565b5f613f13565b503d613fbd565b6114c2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b61400d612c3d565b503390565b916140209291600192614a4c565b565b61402a612c85565b61404361403d614038614005565b6102e2565b916102e2565b0361404a57565b61408c614055614005565b61405d610291565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b6040906140b96140c094969593966140af60608401985f850190610a27565b60208301906104b0565b01906104b0565b565b906140cd91036102a3565b90565b9291926140de8183906136a9565b908161411261410c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102a3565b916102a3565b0361411f575b5050509050565b8161413261412c876102a3565b916102a3565b106141585761414f93946141479193926140c2565b905f92614a4c565b805f8080614118565b5061419784929192614168610291565b9384937ffb8f41b200000000000000000000000000000000000000000000000000000000855260048501614090565b0390fd5b91826141b76141b16141ac5f612c14565b6102e2565b916102e2565b1461423157816141d76141d16141cc5f612c14565b6102e2565b916102e2565b146141ea576141e8929190916148a6565b565b61422d6141f65f612c14565b6141fe610291565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b61427461423d5f612c14565b614245610291565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b614280614ba6565b61428861428a565b565b61429e6142956145f5565b5f8091016120e9565b6142a6614005565b6142dc7f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa916142d3610291565b91829182610a34565b0390a1565b6142e9614278565b565b6142f490610b3a565b90565b614300306142eb565b61433261432c7f00000000000000000000000000000000000000000000000000000000000000006102e2565b916102e2565b14801561437c575b61434057565b614348610291565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806143786004820161033e565b0390fd5b50614385614bf9565b6143b76143b17f00000000000000000000000000000000000000000000000000000000000000006102e2565b916102e2565b141561433a565b506143c7614022565b565b6143d2906143be565b565b6143dd90610b1e565b90565b6143e9906143d4565b90565b6143f590610b3a565b90565b614401816108de565b0361440857565b5f80fd5b90505190614419826143f8565b565b9060208282031261443457614431915f0161440c565b90565b61029b565b9190614467602061445161444c866143e0565b6143ec565b6352d1902d9061445f610291565b93849261147b565b825281806144776004820161033e565b03915afa80915f92614547575b50155f146144d857505090600161449957505b565b6144d4906144a5610291565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b92836144f36144ed6144e8612679565b6108de565b916108de565b0361450857614503929350614c23565b614497565b61454384614514610291565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016108ee565b0390fd5b61456991925060203d8111614570575b6145618183610766565b81019061441b565b905f614484565b503d614557565b614580306142eb565b6145b26145ac7f00000000000000000000000000000000000000000000000000000000000000006102e2565b916102e2565b036145b957565b6145c1610291565b7fe07c8dba000000000000000000000000000000000000000000000000000000008152806145f16004820161033e565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b8061463461462e6146295f612c14565b6102e2565b916102e2565b146146505761464e916146465f612c14565b9190916148a6565b565b61469361465c5f612c14565b614664610291565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b61469f614777565b6146b76146ad5f830161144a565b915f849101612f1a565b906146eb6146e57f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610b46565b91610b46565b916146f4610291565b806146fe8161033e565b0390a3565b61470b613df2565b614713614715565b565b61472a6147206145f5565b5f600191016120e9565b614732614005565b6147687f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589161475f610291565b91829182610a34565b0390a1565b614775614703565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6147d0906147cb614cac565b6147d2565b565b6147db90614d84565b565b6147e6906147bf565b565b906147fa916147f5614cac565b6147fc565b565b9061480691614fc7565b565b90614812916147e8565b565b61481c614cac565b565b614826614814565b565b614830614cac565b61483861483a565b565b614842615002565b565b61484c614828565b565b614856614cac565b61485e614860565b565b614868615034565b565b61487261484e565b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906148a391016102a3565b90565b9190916148b1613fe1565b816148cc6148c66148c15f612c14565b6102e2565b916102e2565b145f146149b7576148f3836148ed60028401916148e88361173b565b6121b0565b906117a1565b5b8361490f6149096149045f612c14565b6102e2565b916102e2565b145f14614988576149379061493160028592019161492c8361173b565b6140c2565b906117a1565b5b91909161498361497161496b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93610b46565b93610b46565b9361497a610291565b918291826104bd565b0390a3565b6149b2906149ac61499d5f8693018790612ba9565b916149a78361173b565b614898565b906117a1565b614938565b6149cc6149c75f83018490612ba9565b61173b565b806149df6149d9866102a3565b916102a3565b10614a09576149f2614a049185906140c2565b6149ff5f84018590612ba9565b6117a1565b6148f4565b91614a4891509192614a19610291565b9384937fe450d38c00000000000000000000000000000000000000000000000000000000855260048501614090565b0390fd5b9092614a56613fe1565b82614a71614a6b614a665f612c14565b6102e2565b916102e2565b14614b5f5784614a91614a8b614a865f612c14565b6102e2565b916102e2565b14614b1857614ab890614ab3614aac60018793018690613693565b8790612ba9565b6117a1565b614ac2575b505050565b919091614b0d614afb614af57f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593610b46565b93610b46565b93614b04610291565b918291826104bd565b0390a35f8080614abd565b614b5b614b245f612c14565b614b2c610291565b9182917f94280d6200000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b614ba2614b6b5f612c14565b614b73610291565b9182917fe602df0500000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b614bb7614bb16126e5565b15610453565b614bbd57565b614bc5610291565b7f8dfc202b00000000000000000000000000000000000000000000000000000000815280614bf56004820161033e565b0390fd5b614c01612c3d565b50614c1c5f614c16614c11612679565b61503e565b0161144a565b90565b5190565b90614c2d82615041565b81614c587fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91610b46565b90614c61610291565b80614c6b8161033e565b0390a2614c7781614c1f565b614c89614c835f6112de565b916102a3565b115f14614c9d57614c9991615151565b505b565b5050614ca76150b6565b614c9b565b614cbd614cb7615180565b15610453565b614cc357565b614ccb610291565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280614cfb6004820161033e565b0390fd5b614d1090614d0b614cac565b614d12565b565b80614d2d614d27614d225f612c14565b6102e2565b916102e2565b14614d3d57614d3b90614697565b565b614d80614d495f612c14565b614d51610291565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b614d8d90614cff565b565b90614da191614d9c614cac565b614fa3565b565b601f602091010490565b1b90565b91906008614deb910291614de57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84614dad565b92614dad565b9181191691161790565b9190614e0b614e06614e1393611782565b61179e565b908354614db1565b9055565b614e2991614e2361208d565b91614df5565b565b5b818110614e37575050565b80614e445f600193614e17565b01614e2c565b9190601f8111614e5a575b505050565b614e66614e8b93611f78565b906020614e7284614da3565b83019310614e93575b614e8490614da3565b0190614e2b565b5f8080614e55565b9150614e8481929050614e7b565b90614eb1905f199060080261068d565b191690565b81614ec091614ea1565b906002021790565b90614ed281610386565b9067ffffffffffffffff8211614f9257614ef682614ef08554611f45565b85614e4a565b602090601f8311600114614f2a57918091614f19935f92614f1e575b5050614eb6565b90555b565b90915001515f80614f12565b601f19831691614f3985611f78565b925f5b818110614f7a57509160029391856001969410614f60575b50505002019055614f1c565b614f70910151601f841690614ea1565b90555f8080614f54565b91936020600181928787015181550195019201614f3c565b610739565b90614fa191614ec8565b565b6004614fc592614fbe614fb4613fe1565b9360038501614f97565b9101614f97565b565b90614fd191614d8f565b565b614fdb614cac565b614fe3614fe5565b565b615000614ff0614874565b5f614ff9613dc8565b91016117a1565b565b61500a614fd3565b565b615014614cac565b61501c61501e565b565b6150326150296145f5565b5f8091016120e9565b565b61503c61500c565b565b90565b803b61505561504f5f6112de565b916102a3565b1461507757615075905f61506f61506a612679565b61503e565b01612f1a565b565b6150b290615083610291565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b346150c96150c35f6112de565b916102a3565b116150d057565b6150d8610291565b7fb398979f000000000000000000000000000000000000000000000000000000008152806151086004820161033e565b0390fd5b606090565b9061512361511e836107a4565b61078f565b918252565b3d5f14615143576151383d615111565b903d5f602084013e5b565b61514b61510c565b90615141565b5f8061517d9361515f61510c565b508390602081019051915af490615174615128565b9091909161519e565b90565b615188612067565b5061519b5f61519561479b565b01612cfe565b90565b906151b2906151ab61510c565b5015610453565b5f146151be5750615242565b6151c782614c1f565b6151d96151d35f6112de565b916102a3565b1480615227575b6151e8575090565b615223906151f4610291565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610a34565b0390fd5b50803b61523c6152365f6112de565b916102a3565b146151e0565b61524b81614c1f565b61525d6152575f6112de565b916102a3565b115f1461526c57805190602001fd5b615274610291565b7f1425ea42000000000000000000000000000000000000000000000000000000008152806152a46004820161033e565b0390fdfea26469706673582212200c8dff1d3529d23f5125c5e639a3980721d5f1fac6fe7959f97d618a0c6cfbf864736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0x12A7 JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x28B JUMP JUMPDEST DUP1 PUSH3 0xF714CE EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x1E1BFF3F EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x268 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x36B77107 EQ PUSH2 0x25E JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0x4FE84C42 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x9AC2A011 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0xB3404EFD EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0xBC4BA731 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xC80B0BAF EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xD53419A3 EQ PUSH2 0x1FA JUMPI DUP1 PUSH4 0xD9D47D69 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0xDB48A5E3 EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xEDF3E29E EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xF267D91B EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0xF661AF29 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xF7FDE10F EQ PUSH2 0x1CD JUMPI PUSH4 0xFDF262B7 SUB PUSH2 0xE JUMPI PUSH2 0x1272 JUMP JUMPDEST PUSH2 0x122E JUMP JUMPDEST PUSH2 0x11EC JUMP JUMPDEST PUSH2 0x119B JUMP JUMPDEST PUSH2 0x1166 JUMP JUMPDEST PUSH2 0x112C JUMP JUMPDEST PUSH2 0x1063 JUMP JUMPDEST PUSH2 0x102D JUMP JUMPDEST PUSH2 0xFCB JUMP JUMPDEST PUSH2 0xF87 JUMP JUMPDEST PUSH2 0xF54 JUMP JUMPDEST PUSH2 0xF1F JUMP JUMPDEST PUSH2 0xE99 JUMP JUMPDEST PUSH2 0xD3B JUMP JUMPDEST PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0xCB3 JUMP JUMPDEST PUSH2 0xBE2 JUMP JUMPDEST PUSH2 0xBAD JUMP JUMPDEST PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0xAB1 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST PUSH2 0xA49 JUMP JUMPDEST PUSH2 0x9F4 JUMP JUMPDEST PUSH2 0x9BF JUMP JUMPDEST PUSH2 0x96D JUMP JUMPDEST PUSH2 0x938 JUMP JUMPDEST PUSH2 0x903 JUMP JUMPDEST PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x870 JUMP JUMPDEST PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x6C9 JUMP JUMPDEST PUSH2 0x658 JUMP JUMPDEST PUSH2 0x5FB JUMP JUMPDEST PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x557 JUMP JUMPDEST PUSH2 0x4D2 JUMP JUMPDEST PUSH2 0x47A JUMP JUMPDEST PUSH2 0x3F1 JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2AF DUP2 PUSH2 0x2A3 JUMP JUMPDEST SUB PUSH2 0x2B6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x2C7 DUP3 PUSH2 0x2A6 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2EB SWAP1 PUSH2 0x2C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F7 DUP2 PUSH2 0x2E2 JUMP JUMPDEST SUB PUSH2 0x2FE JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x30F DUP3 PUSH2 0x2EE JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x339 JUMPI DUP1 PUSH2 0x32D PUSH2 0x336 SWAP3 PUSH0 DUP7 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x302 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x372 JUMPI PUSH2 0x35C PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x311 JUMP JUMPDEST SWAP1 PUSH2 0x1F07 JUMP JUMPDEST PUSH2 0x364 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x36E DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x381 JUMPI JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x3C7 PUSH2 0x3D0 PUSH1 0x20 SWAP4 PUSH2 0x3D5 SWAP4 PUSH2 0x3BE DUP2 PUSH2 0x386 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x38A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x393 JUMP JUMPDEST PUSH2 0x39E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3EE SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x3A8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x421 JUMPI PUSH2 0x401 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x41D PUSH2 0x40C PUSH2 0x2048 JUMP JUMPDEST PUSH2 0x414 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x44E JUMPI DUP1 PUSH2 0x442 PUSH2 0x44B SWAP3 PUSH0 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x461 SWAP1 PUSH2 0x453 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x478 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x458 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4AB JUMPI PUSH2 0x4A7 PUSH2 0x496 PUSH2 0x490 CALLDATASIZE PUSH1 0x4 PUSH2 0x426 JUMP JUMPDEST SWAP1 PUSH2 0x206B JUMP JUMPDEST PUSH2 0x49E PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x4B9 SWAP1 PUSH2 0x2A3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4D0 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x502 JUMPI PUSH2 0x4E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x4FE PUSH2 0x4ED PUSH2 0x2091 JUMP JUMPDEST PUSH2 0x4F5 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x510 DUP2 PUSH2 0x453 JUMP JUMPDEST SUB PUSH2 0x517 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x528 DUP3 PUSH2 0x507 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x552 JUMPI DUP1 PUSH2 0x546 PUSH2 0x54F SWAP3 PUSH0 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x51B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x586 JUMPI PUSH2 0x570 PUSH2 0x56A CALLDATASIZE PUSH1 0x4 PUSH2 0x52A JUMP JUMPDEST SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH2 0x578 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x582 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x5C0 JUMPI PUSH2 0x5BD PUSH2 0x5A6 DUP5 PUSH0 DUP6 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH2 0x5B4 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x5F6 JUMPI PUSH2 0x5F2 PUSH2 0x5E1 PUSH2 0x5DB CALLDATASIZE PUSH1 0x4 PUSH2 0x58B JUMP JUMPDEST SWAP2 PUSH2 0x212B JUMP JUMPDEST PUSH2 0x5E9 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x62B JUMPI PUSH2 0x60B CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x627 PUSH2 0x616 PUSH2 0x21D5 JUMP JUMPDEST PUSH2 0x61E PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x63F SWAP1 PUSH2 0x630 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x656 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x636 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x688 JUMPI PUSH2 0x668 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x684 PUSH2 0x673 PUSH2 0x25D1 JUMP JUMPDEST PUSH2 0x67B PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x643 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6A4 SWAP1 PUSH1 0x8 PUSH2 0x6A9 SWAP4 MUL PUSH2 0x68D JUMP JUMPDEST PUSH2 0x691 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6B7 SWAP2 SLOAD PUSH2 0x694 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x6C6 PUSH1 0x4 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6F9 JUMPI PUSH2 0x6D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x6F5 PUSH2 0x6E4 PUSH2 0x6BA JUMP JUMPDEST PUSH2 0x6EC PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x72C JUMPI PUSH2 0x70E CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x716 PUSH2 0x2603 JUMP JUMPDEST PUSH2 0x71E PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x728 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x770 SWAP1 PUSH2 0x39E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x78A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST SWAP1 PUSH2 0x7A2 PUSH2 0x79B PUSH2 0x291 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x766 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7C2 JUMPI PUSH2 0x7BE PUSH1 0x20 SWAP2 PUSH2 0x39E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x7E7 PUSH2 0x7E2 DUP3 PUSH2 0x7A4 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x803 JUMPI PUSH2 0x801 SWAP3 PUSH2 0x7C7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x735 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x826 JUMPI DUP2 PUSH1 0x20 PUSH2 0x823 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x7D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x86B JUMPI PUSH2 0x844 DUP4 PUSH0 DUP4 ADD PUSH2 0x302 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x866 JUMPI PUSH2 0x863 SWAP3 ADD PUSH2 0x808 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH2 0x884 PUSH2 0x87E CALLDATASIZE PUSH1 0x4 PUSH2 0x82B JUMP JUMPDEST SWAP1 PUSH2 0x2636 JUMP JUMPDEST PUSH2 0x88C PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x896 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A6 PUSH1 0x8 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8D9 JUMPI PUSH2 0x8B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x8D5 PUSH2 0x8C4 PUSH2 0x89A JUMP JUMPDEST PUSH2 0x8CC PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8EA SWAP1 PUSH2 0x8DE JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x901 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x8E1 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x933 JUMPI PUSH2 0x913 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x92F PUSH2 0x91E PUSH2 0x26B1 JUMP JUMPDEST PUSH2 0x926 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x8EE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x968 JUMPI PUSH2 0x948 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x964 PUSH2 0x953 PUSH2 0x26E5 JUMP JUMPDEST PUSH2 0x95B PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x99C JUMPI PUSH2 0x986 PUSH2 0x980 CALLDATASIZE PUSH1 0x4 PUSH2 0x311 JUMP JUMPDEST SWAP1 PUSH2 0x2B9D JUMP JUMPDEST PUSH2 0x98E PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x998 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x9BA JUMPI PUSH2 0x9B7 SWAP2 PUSH0 ADD PUSH2 0x302 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x9EF JUMPI PUSH2 0x9EB PUSH2 0x9DA PUSH2 0x9D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x9E2 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xA22 JUMPI PUSH2 0xA04 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xA0C PUSH2 0x2C33 JUMP JUMPDEST PUSH2 0xA14 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0xA1E DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0xA30 SWAP1 PUSH2 0x2E2 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xA47 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xA79 JUMPI PUSH2 0xA59 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xA75 PUSH2 0xA64 PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0xA6C PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xAAC JUMPI PUSH2 0xA8E CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xA96 PUSH2 0x2C7B JUMP JUMPDEST PUSH2 0xA9E PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0xAA8 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xAE1 JUMPI PUSH2 0xAC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xADD PUSH2 0xACC PUSH2 0x2C85 JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xB16 JUMPI PUSH2 0xAF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xB12 PUSH2 0xB01 PUSH2 0x2CA3 JUMP JUMPDEST PUSH2 0xB09 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB32 PUSH2 0xB2D PUSH2 0xB37 SWAP3 PUSH2 0x2C9 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB43 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB4F SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB5C SWAP1 PUSH2 0xB46 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB7E SWAP1 PUSH1 0x8 PUSH2 0xB83 SWAP4 MUL PUSH2 0x68D JUMP JUMPDEST PUSH2 0xB68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB91 SWAP2 SLOAD PUSH2 0xB6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBAA SWAP1 PUSH2 0xBA5 PUSH1 0x9 SWAP2 PUSH0 SWAP3 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0xB86 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xBDD JUMPI PUSH2 0xBD9 PUSH2 0xBC8 PUSH2 0xBC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0xB94 JUMP JUMPDEST PUSH2 0xBD0 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xC13 JUMPI PUSH2 0xC0F PUSH2 0xBFE PUSH2 0xBF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x426 JUMP JUMPDEST SWAP1 PUSH2 0x2CC2 JUMP JUMPDEST PUSH2 0xC06 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC36 JUMPI PUSH2 0xC32 PUSH1 0x20 SWAP2 PUSH2 0x39E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST SWAP1 PUSH2 0xC4D PUSH2 0xC48 DUP4 PUSH2 0xC18 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xC83 PUSH1 0x5 PUSH2 0xC3B JUMP JUMPDEST SWAP1 PUSH2 0xC90 PUSH1 0x20 DUP4 ADD PUSH2 0xC52 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xC9A PUSH2 0xC79 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCA5 PUSH2 0xC92 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCB0 PUSH2 0xC9D JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xCE3 JUMPI PUSH2 0xCC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xCDF PUSH2 0xCCE PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0xCD6 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3D9 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0xCF4 PUSH1 0x7 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD27 JUMPI PUSH2 0xD07 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xD23 PUSH2 0xD12 PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0xD1A PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0xD38 PUSH1 0x5 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD6B JUMPI PUSH2 0xD4B CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xD67 PUSH2 0xD56 PUSH2 0xD2C JUMP JUMPDEST PUSH2 0xD5E PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xD85 PUSH2 0xD80 DUP3 PUSH2 0xC18 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xDA1 JUMPI PUSH2 0xD9F SWAP3 PUSH2 0x7C7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x735 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xDC4 JUMPI DUP2 PUSH1 0x20 PUSH2 0xDC1 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xD70 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xDDF DUP2 PUSH2 0xDC9 JUMP JUMPDEST SUB PUSH2 0xDE6 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xDF7 DUP3 PUSH2 0xDD6 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xE0 DUP2 DUP4 SUB SLT PUSH2 0xE94 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE8F JUMPI DUP3 PUSH2 0xE22 SWAP2 DUP4 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE8A JUMPI DUP4 PUSH2 0xE43 SWAP2 DUP5 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP3 PUSH2 0xE51 DUP2 PUSH1 0x40 DUP6 ADD PUSH2 0x302 JUMP JUMPDEST SWAP3 PUSH2 0xE5F DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x302 JUMP JUMPDEST SWAP3 PUSH2 0xE87 PUSH2 0xE70 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH2 0xE7E DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0xDEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0xECE JUMPI PUSH2 0xEB8 PUSH2 0xEAC CALLDATASIZE PUSH1 0x4 PUSH2 0xDF9 JUMP JUMPDEST SWAP6 SWAP5 SWAP1 SWAP5 SWAP4 SWAP2 SWAP4 PUSH2 0x311A JUMP JUMPDEST PUSH2 0xEC0 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0xECA DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xEFC SWAP1 PUSH1 0x8 PUSH2 0xF01 SWAP4 MUL PUSH2 0x68D JUMP JUMPDEST PUSH2 0xED3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF0F SWAP2 SLOAD PUSH2 0xEEC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF1C PUSH0 DUP1 PUSH2 0xF04 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF4F JUMPI PUSH2 0xF2F CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xF4B PUSH2 0xF3A PUSH2 0xF12 JUMP JUMPDEST PUSH2 0xF42 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xF82 JUMPI PUSH2 0xF64 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xF6C PUSH2 0x3581 JUMP JUMPDEST PUSH2 0xF74 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0xF7E DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0xFB7 JUMPI PUSH2 0xF97 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xFB3 PUSH2 0xFA2 PUSH2 0x358B JUMP JUMPDEST PUSH2 0xFAA PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0xFC8 PUSH1 0x6 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xFFB JUMPI PUSH2 0xFDB CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0xFF7 PUSH2 0xFE6 PUSH2 0xFBC JUMP JUMPDEST PUSH2 0xFEE PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x1028 JUMPI DUP1 PUSH2 0x101C PUSH2 0x1025 SWAP3 PUSH0 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x302 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x105E JUMPI PUSH2 0x105A PUSH2 0x1049 PUSH2 0x1043 CALLDATASIZE PUSH1 0x4 PUSH2 0x1000 JUMP JUMPDEST SWAP1 PUSH2 0x36A9 JUMP JUMPDEST PUSH2 0x1051 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x1093 JUMPI PUSH2 0x1073 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x108F PUSH2 0x107E PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x1086 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0x1127 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1122 JUMPI DUP4 PUSH2 0x10C3 SWAP2 DUP5 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x111D JUMPI DUP2 PUSH2 0x10E4 SWAP2 DUP6 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP3 PUSH2 0x10F2 DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x302 JUMP JUMPDEST SWAP3 PUSH2 0x111A PUSH2 0x1103 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH2 0x1111 DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x302 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x1161 JUMPI PUSH2 0x114B PUSH2 0x113F CALLDATASIZE PUSH1 0x4 PUSH2 0x1098 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x3BAD JUMP JUMPDEST PUSH2 0x1153 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x115D DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x1196 JUMPI PUSH2 0x1176 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x1192 PUSH2 0x1181 PUSH2 0x3BBD JUMP JUMPDEST PUSH2 0x1189 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x465 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST CALLVALUE PUSH2 0x11C9 JUMPI PUSH2 0x11B3 PUSH2 0x11AE CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x3CA9 JUMP JUMPDEST PUSH2 0x11BB PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x11C5 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x11E7 JUMPI PUSH2 0x11E4 SWAP2 PUSH0 ADD PUSH2 0x2BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST CALLVALUE PUSH2 0x121A JUMPI PUSH2 0x1204 PUSH2 0x11FF CALLDATASIZE PUSH1 0x4 PUSH2 0x11CE JUMP JUMPDEST PUSH2 0x3CF2 JUMP JUMPDEST PUSH2 0x120C PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x1216 DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x122B PUSH1 0x3 PUSH0 SWAP1 PUSH2 0x6AC JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x125E JUMPI PUSH2 0x123E CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x125A PUSH2 0x1249 PUSH2 0x121F JUMP JUMPDEST PUSH2 0x1251 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH2 0x126F PUSH1 0x1 PUSH0 SWAP1 PUSH2 0xF04 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x12A2 JUMPI PUSH2 0x1282 CALLDATASIZE PUSH1 0x4 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x129E PUSH2 0x128D PUSH2 0x1263 JUMP JUMPDEST PUSH2 0x1295 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x297 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0x12BD SWAP2 PUSH2 0x12B8 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x12C7 JUMP JUMPDEST PUSH2 0x12C5 PUSH2 0x3DD5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x12D9 SWAP2 PUSH2 0x12D4 PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x17C1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12F2 PUSH2 0x12ED PUSH2 0x12F7 SWAP3 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x536861726573206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x132D PUSH1 0x20 DUP1 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x1336 DUP2 PUSH2 0x12FA JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x134F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x1321 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1359 JUMPI JUMP JUMPDEST PUSH2 0x1361 PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1391 PUSH1 0x4 DUP3 ADD PUSH2 0x133A JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742062616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x13C9 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x13D2 DUP2 PUSH2 0x1395 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x13EB SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x13BC JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x13F5 JUMPI JUMP JUMPDEST PUSH2 0x13FD PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x142D PUSH1 0x4 DUP3 ADD PUSH2 0x13D6 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH2 0x1442 PUSH2 0x1447 SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0xED3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1454 SWAP1 SLOAD PUSH2 0x1436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1460 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x146C SWAP1 PUSH2 0x1457 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1478 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x148A DUP2 PUSH2 0x630 JUMP JUMPDEST SUB PUSH2 0x1491 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x14A2 DUP3 PUSH2 0x1481 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x14BD JUMPI PUSH2 0x14BA SWAP2 PUSH0 ADD PUSH2 0x1495 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH2 0x14CA PUSH2 0x291 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x14DB SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14E7 SWAP1 PUSH2 0x14D2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14F3 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14FF SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x150F DUP3 PUSH2 0x2A6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x152A JUMPI PUSH2 0x1527 SWAP2 PUSH0 ADD PUSH2 0x1502 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1546 PUSH2 0x1541 PUSH2 0x154B SWAP3 PUSH2 0x152F JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x630 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1587 PUSH2 0x158D SWAP2 PUSH2 0x630 JUMP JUMPDEST SWAP2 PUSH2 0x630 JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x159A JUMPI JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH2 0x15A8 SWAP1 PUSH2 0x630 JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x15B6 JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH2 0x15CA PUSH2 0x15D0 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x15DC DUP4 DUP3 MUL PUSH2 0x2A3 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x15EB JUMPI JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1629 PUSH2 0x162F SWAP2 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x163A JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x15F0 JUMP JUMPDEST PUSH2 0x164E PUSH2 0x1654 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 PUSH2 0x2A3 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x165F JUMPI JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1671 DUP3 PUSH2 0x507 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x168C JUMPI PUSH2 0x1689 SWAP2 PUSH0 ADD PUSH2 0x1664 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x16B2 SWAP3 SWAP5 SWAP4 PUSH2 0x16AB PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x16D9 PUSH2 0x16DE SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x16B4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16EB SWAP1 SLOAD PUSH2 0x16CD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x16F7 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1707 DUP3 PUSH2 0x2EE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1722 JUMPI PUSH2 0x171F SWAP2 PUSH0 ADD PUSH2 0x16FA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST PUSH2 0x1733 PUSH2 0x1738 SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x691 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1745 SWAP1 SLOAD PUSH2 0x1727 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1778 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1796 PUSH2 0x1791 PUSH2 0x179B SWAP3 PUSH2 0x2A3 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x17B6 PUSH2 0x17B1 PUSH2 0x17BD SWAP3 PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x179E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x174D JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 PUSH2 0x17DE DUP3 PUSH2 0x17D8 PUSH2 0x17D2 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x1352 JUMP JUMPDEST PUSH2 0x1803 PUSH2 0x17EA CALLER PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x17FC PUSH2 0x17F6 DUP6 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST LT ISZERO PUSH2 0x13EE JUMP JUMPDEST PUSH2 0x1838 PUSH1 0x20 PUSH2 0x1822 PUSH2 0x181D PUSH2 0x1818 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x1463 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x1830 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1848 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F02 JUMPI PUSH0 SWAP2 PUSH2 0x1ED4 JUMPI JUMPDEST POP PUSH2 0x18AC PUSH1 0x20 PUSH2 0x187A PUSH2 0x1875 PUSH2 0x1870 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x18A1 PUSH2 0x188C ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x1895 PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1ECF JUMPI PUSH0 SWAP2 PUSH2 0x1EA1 JUMPI JUMPDEST POP SWAP3 PUSH2 0x1910 PUSH1 0x20 PUSH2 0x18DE PUSH2 0x18D9 PUSH2 0x18D4 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1905 PUSH2 0x18F0 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x18F9 PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E9C JUMPI PUSH2 0x19AF SWAP4 PUSH2 0x1995 PUSH2 0x198E PUSH2 0x1980 PUSH2 0x1979 PUSH2 0x196B PUSH2 0x1964 PUSH2 0x19A9 SWAP9 PUSH2 0x19A4 SWAP9 PUSH0 SWAP2 PUSH2 0x1E6E JUMPI JUMPDEST POP SWAP13 PUSH2 0x195E PUSH2 0x1959 PUSH1 0x12 PUSH2 0x1954 DUP12 SWAP2 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x157B JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST SWAP1 PUSH2 0x15BB JUMP JUMPDEST SWAP12 DUP10 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x1973 PUSH2 0x2091 JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST SWAP10 DUP8 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x1988 PUSH2 0x2091 JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST SWAP5 CALLER PUSH2 0x3E3C JUMP JUMPDEST PUSH2 0x199F PUSH1 0x12 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x157B JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x19BA DUP3 PUSH2 0x3EBB JUMP JUMPDEST SWAP3 PUSH2 0x19D4 PUSH2 0x19CF PUSH2 0x19CA PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH1 0x20 PUSH4 0xA9059CBB SWAP2 DUP5 SWAP1 PUSH2 0x1A05 PUSH0 PUSH2 0x19ED DUP10 DUP12 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP6 PUSH2 0x1A10 PUSH2 0x19F9 PUSH2 0x291 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1E69 JUMPI PUSH2 0x1E3D JUMPI JUMPDEST POP PUSH2 0x1A29 DUP5 PUSH2 0x3EBB JUMP JUMPDEST SWAP2 PUSH2 0x1A57 PUSH1 0x20 PUSH2 0x1A41 PUSH2 0x1A3C PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x1A4F PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1A67 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E38 JUMPI PUSH0 SWAP2 PUSH2 0x1E0A JUMPI JUMPDEST POP SWAP3 PUSH2 0x1AA8 PUSH1 0x20 PUSH2 0x1A92 PUSH2 0x1A8D PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x1AA0 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1AB8 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E05 JUMPI PUSH0 SWAP2 PUSH2 0x1DD7 JUMPI JUMPDEST POP SWAP6 PUSH1 0x20 PUSH2 0x1AE7 PUSH2 0x1AE2 PUSH2 0x1ADD PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x1B16 PUSH0 PUSH2 0x1AFE DUP11 SWAP5 DUP9 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP6 PUSH2 0x1B21 PUSH2 0x1B0A PUSH2 0x291 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1DD2 JUMPI PUSH2 0x1DA6 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1B4C PUSH2 0x1B47 PUSH2 0x1B42 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x1B71 PUSH0 DUP11 SWAP4 SWAP6 PUSH2 0x1B7C PUSH2 0x1B65 PUSH2 0x291 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1DA1 JUMPI PUSH2 0x1D75 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1B97 DUP4 PUSH2 0x3EBB JUMP JUMPDEST SWAP3 PUSH2 0x1BB2 PUSH2 0x1BAD PUSH2 0x1BA8 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x1BDF PUSH0 PUSH2 0x1BC7 PUSH4 0xA9059CBB SWAP7 SWAP5 DUP9 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP6 PUSH2 0x1BEA PUSH2 0x1BD3 PUSH2 0x291 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1D70 JUMPI PUSH2 0x1D44 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x1C05 DUP3 PUSH2 0x3EBB JUMP JUMPDEST SWAP2 PUSH2 0x1C1F PUSH2 0x1C1A PUSH2 0x1C15 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x1C4C PUSH0 PUSH2 0x1C34 PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP7 PUSH2 0x1C57 PUSH2 0x1C40 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1D3F JUMPI PUSH1 0x20 SWAP3 PUSH2 0x1D14 JUMPI JUMPDEST POP PUSH2 0x1C84 PUSH2 0x1C7F PUSH2 0x1C7A PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x1CA7 PUSH0 PUSH4 0xA9059CBB SWAP7 SWAP4 SWAP7 PUSH2 0x1CB2 PUSH2 0x1C9B PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1D0F JUMPI PUSH2 0x1CE1 SWAP3 PUSH2 0x1CDA SWAP3 PUSH2 0x1CE3 JUMPI JUMPDEST POP PUSH2 0x1CD5 PUSH1 0x4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x163F JUMP JUMPDEST PUSH1 0x4 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1D03 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D08 JUMPI JUMPDEST PUSH2 0x1CFB DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1CCA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1CF1 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1D33 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x1D38 JUMPI JUMPDEST PUSH2 0x1D2B DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1C6A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D21 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1D64 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D69 JUMPI JUMPDEST PUSH2 0x1D5C DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1BF9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D52 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1D95 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D9A JUMPI JUMPDEST PUSH2 0x1D8D DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1B8B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D83 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1DC6 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1DCB JUMPI JUMPDEST PUSH2 0x1DBE DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1B30 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1DF8 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1DFE JUMPI JUMPDEST PUSH2 0x1DF0 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x1ACA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1DE6 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1E2B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E31 JUMPI JUMPDEST PUSH2 0x1E23 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x1A79 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E19 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1E5D SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E62 JUMPI JUMPDEST PUSH2 0x1E55 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x1A1F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E4B JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1E8F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E95 JUMPI JUMPDEST PUSH2 0x1E87 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x1940 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1EC2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EC8 JUMPI JUMPDEST PUSH2 0x1EBA DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x18BE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EB0 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x1EF5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EFB JUMPI JUMPDEST PUSH2 0x1EED DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x185A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EE3 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x1F11 SWAP2 PUSH2 0x12AB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x1F65 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1F60 JUMPI JUMP JUMPDEST PUSH2 0x1F18 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1F55 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x1F9B PUSH2 0x1F94 DUP4 PUSH2 0x1F45 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x1F6F JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x1FF2 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1FB6 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1FC3 SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x1F78 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x1FDA JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1FB1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x1FC7 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1FB1 JUMP JUMPDEST SWAP1 PUSH2 0x2017 SWAP2 PUSH2 0x1F81 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x203A PUSH2 0x2033 SWAP3 PUSH2 0x202A PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x200D JUMP JUMPDEST SUB DUP4 PUSH2 0x766 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2045 SWAP1 PUSH2 0x201A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2050 PUSH2 0x1F13 JUMP JUMPDEST POP PUSH2 0x2064 PUSH1 0x3 PUSH2 0x205E PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x203C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2088 SWAP2 PUSH2 0x2077 PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x2080 PUSH2 0x4005 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x4012 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2099 PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x20AD PUSH1 0x2 PUSH2 0x20A7 PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x173B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20C2 SWAP2 PUSH2 0x20BD PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x2109 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x20D0 PUSH1 0xFF SWAP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x20E3 SWAP1 PUSH2 0x453 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20FE PUSH2 0x20F9 PUSH2 0x2105 SWAP3 PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x20E6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x20C4 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2118 PUSH2 0x211D SWAP3 SWAP2 PUSH1 0x9 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x20E9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2129 SWAP2 PUSH2 0x20B0 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH2 0x2155 SWAP3 PUSH2 0x2138 PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x214D PUSH2 0x2144 PUSH2 0x4005 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x40D0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x419B JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x2163 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x216F SWAP1 PUSH2 0x215A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x217B SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x21A7 PUSH2 0x21AE SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x219D PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x21BF PUSH2 0x21C5 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 PUSH2 0x2A3 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x21D0 JUMPI JUMP JUMPDEST PUSH2 0x154E JUMP JUMPDEST PUSH2 0x21DD PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x220B PUSH1 0x20 PUSH2 0x21F5 PUSH2 0x21F0 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2203 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x221B PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x25C8 JUMPI PUSH2 0x2236 SWAP2 PUSH0 SWAP2 PUSH2 0x259A JUMPI JUMPDEST POP PUSH2 0x2166 JUMP JUMPDEST PUSH2 0x2263 PUSH1 0x20 PUSH2 0x224D PUSH2 0x2248 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x225B PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2273 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2595 JUMPI PUSH0 SWAP2 PUSH2 0x2567 JUMPI JUMPDEST POP SWAP1 PUSH2 0x2290 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x22E1 PUSH1 0x20 PUSH2 0x22AF PUSH2 0x22AA PUSH2 0x22A5 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x22D6 PUSH2 0x22C1 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x22CA PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2562 JUMPI PUSH0 SWAP2 PUSH2 0x2534 JUMPI JUMPDEST POP SWAP3 PUSH2 0x2346 PUSH1 0x20 PUSH2 0x2314 PUSH2 0x230F PUSH2 0x230A PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x233B PUSH2 0x2326 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x232F PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x252F JUMPI PUSH0 SWAP2 PUSH2 0x2501 JUMPI JUMPDEST POP SWAP1 DUP5 PUSH2 0x236D PUSH2 0x2367 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ DUP1 PUSH2 0x24E7 JUMPI JUMPDEST PUSH2 0x24D6 JUMPI PUSH1 0x20 PUSH2 0x2383 DUP6 PUSH2 0x2172 JUMP JUMPDEST PUSH4 0x248391FF SWAP1 PUSH2 0x23B0 PUSH2 0x2396 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST SWAP3 PUSH2 0x23BB DUP9 SWAP8 PUSH2 0x23A4 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x147B JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x217E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x24D1 JUMPI PUSH2 0x23D7 SWAP3 PUSH0 SWAP3 PUSH2 0x24A1 JUMPI JUMPDEST POP PUSH2 0x21B0 JUMP JUMPDEST SWAP2 PUSH2 0x23E1 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x23F3 PUSH2 0x23ED DUP5 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x240A JUMPI POP POP PUSH2 0x2406 SWAP2 SWAP1 PUSH2 0x21B0 JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2416 PUSH1 0x20 SWAP3 PUSH2 0x2172 JUMP JUMPDEST PUSH2 0x2440 PUSH4 0x248391FF PUSH2 0x244B PUSH2 0x242A PUSH0 PUSH2 0x144A JUMP JUMPDEST SWAP5 SWAP8 PUSH2 0x2434 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x147B JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x217E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x249C JUMPI PUSH2 0x2467 SWAP3 PUSH0 SWAP3 PUSH2 0x246C JUMPI JUMPDEST POP PUSH2 0x21B0 JUMP JUMPDEST PUSH2 0x2407 JUMP JUMPDEST PUSH2 0x248E SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2495 JUMPI JUMPDEST PUSH2 0x2486 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x2461 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x247C JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x24C3 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x24CA JUMPI JUMPDEST PUSH2 0x24BB DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x23D1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x24B1 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST POP POP POP POP POP PUSH2 0x24E4 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP DUP2 PUSH2 0x24FB PUSH2 0x24F5 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x2374 JUMP JUMPDEST PUSH2 0x2522 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2528 JUMPI JUMPDEST PUSH2 0x251A DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x2358 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2510 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2555 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x255B JUMPI JUMPDEST PUSH2 0x254D DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x22F3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2543 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2588 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x258E JUMPI JUMPDEST PUSH2 0x2580 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x2285 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2576 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x25BB SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x25C1 JUMPI JUMPDEST PUSH2 0x25B3 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x2230 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25A9 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x25D9 PUSH2 0x25CD JUMP JUMPDEST POP PUSH2 0x25E4 PUSH1 0x12 PUSH2 0x1532 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x25EF PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x25F7 PUSH2 0x25F9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2601 PUSH2 0x42E1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x260B PUSH2 0x25E7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x261F SWAP2 PUSH2 0x261A PUSH2 0x42F7 JUMP JUMPDEST PUSH2 0x2621 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2634 SWAP2 PUSH2 0x262F DUP2 PUSH2 0x43C9 JUMP JUMPDEST PUSH2 0x4439 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2640 SWAP2 PUSH2 0x260D JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2657 SWAP1 PUSH2 0x2652 PUSH2 0x4577 JUMP JUMPDEST PUSH2 0x26A5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2671 PUSH2 0x266C PUSH2 0x2676 SWAP3 PUSH2 0x265A JUMP JUMPDEST PUSH2 0x1748 JUMP JUMPDEST PUSH2 0x8DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26A2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x265D JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x26AE PUSH2 0x2679 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26C1 PUSH2 0x26BC PUSH2 0x2642 JUMP JUMPDEST PUSH2 0x2646 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26D0 PUSH2 0x26D5 SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0xB68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26E2 SWAP1 SLOAD PUSH2 0x26C4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x26ED PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x2700 PUSH0 PUSH2 0x26FA PUSH2 0x45F5 JUMP JUMPDEST ADD PUSH2 0x26D8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2715 SWAP2 PUSH2 0x2710 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x271F JUMP JUMPDEST PUSH2 0x271D PUSH2 0x3DD5 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2731 SWAP2 PUSH2 0x272C PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x27CE JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2766 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x276F DUP2 PUSH2 0x2733 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2788 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x275A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2792 JUMPI JUMP JUMPDEST PUSH2 0x279A PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x27CA PUSH1 0x4 DUP3 ADD PUSH2 0x2773 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x27EA DUP2 PUSH2 0x27E4 PUSH2 0x27DE PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x278B JUMP JUMPDEST PUSH2 0x2803 PUSH2 0x27FE PUSH2 0x27F9 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x2833 PUSH0 PUSH2 0x281A ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP6 PUSH2 0x283E DUP9 PUSH2 0x2827 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x147B JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x217E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2B98 JUMPI PUSH2 0x2B6C JUMPI JUMPDEST POP PUSH2 0x287B PUSH1 0x20 PUSH2 0x2865 PUSH2 0x2860 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x2873 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x288B PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2B67 JUMPI PUSH0 SWAP2 PUSH2 0x2B39 JUMPI JUMPDEST POP SWAP1 PUSH2 0x28CC PUSH1 0x20 PUSH2 0x28B6 PUSH2 0x28B1 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x28C4 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x28DC PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2B34 JUMPI PUSH0 SWAP2 PUSH2 0x2B06 JUMPI JUMPDEST POP SWAP2 PUSH2 0x28F9 DUP3 PUSH2 0x3EBB JUMP JUMPDEST SWAP1 PUSH2 0x2903 DUP3 PUSH2 0x3EBB JUMP JUMPDEST PUSH1 0x20 PUSH2 0x291E PUSH2 0x2919 PUSH2 0x2914 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0xA9059CBB SWAP4 SWAP1 PUSH2 0x294C PUSH0 PUSH2 0x2934 DUP9 DUP8 SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP7 PUSH2 0x2957 PUSH2 0x2940 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2B01 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x2AD6 JUMPI JUMPDEST POP PUSH2 0x2984 PUSH2 0x297F PUSH2 0x297A PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x29A7 PUSH0 PUSH4 0xA9059CBB SWAP8 SWAP4 SWAP8 PUSH2 0x29B2 PUSH2 0x299B PUSH2 0x291 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2AD1 JUMPI PUSH2 0x2A01 SWAP4 PUSH2 0x29D0 SWAP4 PUSH2 0x2AA5 JUMPI JUMPDEST POP PUSH2 0x163F JUMP JUMPDEST PUSH1 0x20 PUSH2 0x29EB PUSH2 0x29E6 PUSH2 0x29E1 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x1463 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x29F9 PUSH2 0x291 JUMP JUMPDEST SWAP5 DUP6 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2A11 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2AA0 JUMPI PUSH2 0x2A70 SWAP4 PUSH2 0x2A54 PUSH2 0x2A5A SWAP3 PUSH2 0x2A69 SWAP6 PUSH0 SWAP2 PUSH2 0x2A72 JUMPI JUMPDEST POP PUSH2 0x2A4E PUSH2 0x2A49 DUP7 SWAP3 PUSH2 0x2A44 PUSH1 0x12 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x157B JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST SWAP1 PUSH2 0x15BB JUMP JUMPDEST SWAP1 PUSH2 0x4619 JUMP JUMPDEST PUSH2 0x2A64 PUSH1 0x4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x21B0 JUMP JUMPDEST PUSH1 0x4 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2A93 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2A99 JUMPI JUMPDEST PUSH2 0x2A8B DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x2A31 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2A81 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2AC5 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2ACA JUMPI JUMPDEST PUSH2 0x2ABD DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x29CA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2AB3 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2AF5 SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x2AFA JUMPI JUMPDEST PUSH2 0x2AED DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x296A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2B27 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2B2D JUMPI JUMPDEST PUSH2 0x2B1F DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x28EE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B15 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2B5A SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2B60 JUMPI JUMPDEST PUSH2 0x2B52 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x289D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B48 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x2B8C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2B91 JUMPI JUMPDEST PUSH2 0x2B84 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x284D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B7A JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x2BA7 SWAP2 PUSH2 0x2703 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2BB3 SWAP1 PUSH2 0xB46 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2BDE PUSH2 0x2BE3 SWAP2 PUSH2 0x2BCE PUSH2 0x208D JUMP JUMPDEST POP PUSH0 PUSH2 0x2BD8 PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x173B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2BEE PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x2BF6 PUSH2 0x2C20 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C0C PUSH2 0x2C07 PUSH2 0x2C11 SWAP3 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C1D SWAP1 PUSH2 0x2BF8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C31 PUSH2 0x2C2C PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4697 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C3B PUSH2 0x2BE6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2C49 PUSH2 0x2C3D JUMP JUMPDEST POP PUSH2 0x2C5C PUSH2 0x2C57 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C67 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x2C6F PUSH2 0x2C71 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C79 PUSH2 0x476D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C83 PUSH2 0x2C5F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2C8D PUSH2 0x2C3D JUMP JUMPDEST POP PUSH2 0x2CA0 PUSH0 PUSH2 0x2C9A PUSH2 0x4777 JUMP JUMPDEST ADD PUSH2 0x144A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CAB PUSH2 0x1F13 JUMP JUMPDEST POP PUSH2 0x2CBF PUSH1 0x4 PUSH2 0x2CB9 PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x203C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2CDF SWAP2 PUSH2 0x2CCE PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x2CD7 PUSH2 0x4005 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x419B JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH2 0x2CF6 PUSH2 0x2CFB SWAP2 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0xB68 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2D08 SWAP1 SLOAD PUSH2 0x2CEA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2D24 PUSH2 0x2D29 SWAP2 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x2D0B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2D36 SWAP1 SLOAD PUSH2 0x2D18 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2D4C PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x2D6A PUSH2 0x2D65 PUSH2 0x2D6F SWAP3 PUSH2 0xDC9 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0xDC9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2D8A PUSH2 0x2D85 PUSH2 0x2D91 SWAP3 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x2D72 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2D39 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2DAF PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x2D95 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2DCE PUSH2 0x2DC9 PUSH2 0x2DD5 SWAP3 PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x20E6 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2D9B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2DE2 SWAP1 PUSH2 0xDC9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2DF9 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x2DD9 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP4 SWAP5 SWAP1 SWAP5 DUP3 SWAP7 PUSH2 0x2E0C PUSH2 0x479B JUMP JUMPDEST SWAP6 PUSH2 0x2E18 PUSH0 DUP9 ADD PUSH2 0x2CFE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EC9 JUMPI JUMPDEST PUSH2 0x2E8D JUMPI PUSH2 0x2E52 SWAP8 PUSH2 0x2E49 SWAP7 PUSH2 0x2E37 DUP12 PUSH0 DUP12 ADD PUSH2 0x2D75 JUMP JUMPDEST PUSH2 0x2E44 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x2FE3 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x2E88 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x2E7F PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2DE6 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x2E95 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2EC5 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2ED5 PUSH0 DUP9 ADD PUSH2 0x2D2C JUMP JUMPDEST PUSH2 0x2EE7 PUSH2 0x2EE1 DUP12 PUSH2 0xDC9 JUMP JUMPDEST SWAP2 PUSH2 0xDC9 JUMP JUMPDEST LT ISZERO PUSH2 0x2E1F JUMP JUMPDEST SWAP1 PUSH2 0x2F0D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x1748 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F2F PUSH2 0x2F2A PUSH2 0x2F36 SWAP3 PUSH2 0xB46 JUMP JUMPDEST PUSH2 0x2F17 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2EEE JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2F43 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F4F SWAP1 PUSH2 0x2F3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F5B SWAP1 PUSH2 0x2F3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2F76 PUSH2 0x2F71 PUSH2 0x2F7D SWAP3 PUSH2 0x2F52 JUMP JUMPDEST PUSH2 0x2F5E JUMP JUMPDEST DUP3 SLOAD PUSH2 0x2EEE JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2F98 PUSH2 0x2F93 PUSH2 0x2F9D SWAP3 PUSH2 0x2F81 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FA9 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FB5 SWAP1 PUSH2 0x2FA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FC1 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2FDB PUSH2 0x2FD6 PUSH2 0x2FE0 SWAP3 PUSH2 0x2FC4 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3036 SWAP3 SWAP7 POP PUSH2 0x303D SWAP4 PUSH2 0x3008 PUSH2 0x3063 SWAP8 SWAP7 SWAP4 PUSH2 0x3031 SWAP4 PUSH2 0x3003 CALLER PUSH2 0x47DD JUMP JUMPDEST PUSH2 0x4808 JUMP JUMPDEST PUSH2 0x3010 PUSH2 0x481E JUMP JUMPDEST PUSH2 0x3018 PUSH2 0x4844 JUMP JUMPDEST PUSH2 0x3020 PUSH2 0x486A JUMP JUMPDEST PUSH2 0x302A DUP9 PUSH0 PUSH2 0x2F1A JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x2F46 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x2F61 JUMP JUMPDEST PUSH2 0x305C PUSH2 0x3055 PUSH2 0x168 PUSH2 0x3050 DUP5 SWAP2 PUSH2 0x2F84 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x7 PUSH2 0x17A1 JUMP JUMPDEST PUSH1 0x8 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x306E NUMBER PUSH1 0x5 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x309D PUSH1 0x20 PUSH2 0x3087 PUSH2 0x3082 PUSH2 0x2710 SWAP5 PUSH2 0x2FAC JUMP JUMPDEST PUSH2 0x2FB8 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3095 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x30AD PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3115 JUMPI PUSH2 0x30D9 PUSH2 0x30D3 PUSH2 0x30E5 SWAP5 PUSH2 0x30DE SWAP5 PUSH0 SWAP2 PUSH2 0x30E7 JUMPI JUMPDEST POP PUSH2 0x159F JUMP JUMPDEST SWAP2 PUSH2 0x2FC7 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x6 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3108 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x310E JUMPI JUMPDEST PUSH2 0x3100 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x30CD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30F6 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x3129 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x2DFB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3133 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x313B PUSH2 0x3145 JUMP JUMPDEST PUSH2 0x3143 PUSH2 0x3DD5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x314D PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x3155 PUSH2 0x3314 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x776169742074696C6C206E657874207265696E76657374206379636C65000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x318B PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x3194 DUP2 PUSH2 0x3157 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x31AD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x317E JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x31B7 JUMPI JUMP JUMPDEST PUSH2 0x31BF PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x31EF PUSH1 0x4 DUP3 ADD PUSH2 0x3198 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x4E6F7468696E6720746F20737761700000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3227 PUSH1 0xF PUSH1 0x20 SWAP3 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x3230 DUP2 PUSH2 0x31F3 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3249 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x321A JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3253 JUMPI JUMP JUMPDEST PUSH2 0x325B PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x328B PUSH1 0x4 DUP3 ADD PUSH2 0x3234 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3298 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x32A4 SWAP1 PUSH2 0x328F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x32B0 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x32E8 PUSH2 0x32EF SWAP5 PUSH2 0x32DE PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x32D4 PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x3312 SWAP3 SWAP5 SWAP4 PUSH2 0x330B PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x334C PUSH2 0x332B NUMBER PUSH2 0x3325 PUSH1 0x5 PUSH2 0x173B JUMP JUMPDEST SWAP1 PUSH2 0x163F JUMP JUMPDEST PUSH2 0x3346 PUSH2 0x3340 PUSH2 0x333B PUSH1 0x8 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x31B0 JUMP JUMPDEST PUSH2 0x3354 PUSH2 0x358B JUMP JUMPDEST PUSH2 0x3370 DUP2 PUSH2 0x336A PUSH2 0x3364 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x324C JUMP JUMPDEST PUSH2 0x339D PUSH1 0x20 PUSH2 0x3387 PUSH2 0x3382 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x3395 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x33AD PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x357C JUMPI PUSH2 0x33C8 SWAP2 PUSH0 SWAP2 PUSH2 0x354E JUMPI JUMPDEST POP PUSH2 0x329B JUMP JUMPDEST PUSH2 0x33E1 PUSH2 0x33DC PUSH2 0x33D7 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x33F3 DUP4 PUSH2 0x32A7 JUMP JUMPDEST SWAP1 PUSH2 0x3411 PUSH0 DUP8 SWAP7 PUSH2 0x341C PUSH2 0x3405 PUSH2 0x291 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x147B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1691 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3549 JUMPI PUSH2 0x3436 SWAP3 PUSH2 0x351D JUMPI JUMPDEST POP PUSH2 0x32A7 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 PUSH2 0x3447 PUSH0 PUSH2 0x144A JUMP JUMPDEST SWAP1 PUSH2 0x3479 PUSH0 PUSH2 0x3456 PUSH1 0x1 PUSH2 0x144A JUMP JUMPDEST SWAP6 PUSH2 0x3484 DUP9 PUSH2 0x3464 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP1 PUSH2 0x346D PUSH2 0x291 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x147B JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x32B3 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3518 JUMPI PUSH0 SWAP2 PUSH2 0x34EA JUMPI JUMPDEST POP SWAP1 PUSH2 0x34A3 NUMBER PUSH1 0x5 PUSH2 0x17A1 JUMP JUMPDEST CALLER SWAP1 SWAP2 PUSH2 0x34D0 PUSH32 0x129AC658E77B551B004790E5BD957532CEF552C50852A1EE0E38DD3E23FE85DB SWAP3 PUSH2 0xB46 JUMP JUMPDEST SWAP3 PUSH2 0x34E5 PUSH2 0x34DC PUSH2 0x291 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x32F1 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x350B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3511 JUMPI JUMPDEST PUSH2 0x3503 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x3496 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34F9 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x353D SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3542 JUMPI JUMPDEST PUSH2 0x3535 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1673 JUMP JUMPDEST PUSH2 0x3430 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x352B JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x356F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3575 JUMPI JUMPDEST PUSH2 0x3567 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x33C2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x355D JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x3589 PUSH2 0x312B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3593 PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x35E4 PUSH1 0x20 PUSH2 0x35B2 PUSH2 0x35AD PUSH2 0x35A8 PUSH0 PUSH2 0x144A JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST PUSH2 0x14EA JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x35D9 PUSH2 0x35C4 ADDRESS PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH2 0x35CD PUSH2 0x291 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x147B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x368E JUMPI PUSH2 0x3629 SWAP2 PUSH2 0x3619 SWAP2 PUSH0 SWAP2 PUSH2 0x3660 JUMPI JUMPDEST POP PUSH2 0x3613 NUMBER PUSH2 0x360D PUSH1 0x5 PUSH2 0x173B JUMP JUMPDEST SWAP1 PUSH2 0x163F JUMP JUMPDEST SWAP1 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x3623 PUSH1 0x7 PUSH2 0x173B JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST DUP1 PUSH2 0x3645 PUSH2 0x363F PUSH2 0x363A PUSH1 0x6 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x365B JUMPI POP PUSH2 0x3657 PUSH1 0x6 PUSH2 0x173B JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3658 JUMP JUMPDEST PUSH2 0x3681 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3687 JUMPI JUMPDEST PUSH2 0x3679 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x35FE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x366F JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x369D SWAP1 PUSH2 0xB46 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x36D7 SWAP2 PUSH2 0x36CD PUSH2 0x36D2 SWAP3 PUSH2 0x36BC PUSH2 0x208D JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x36C7 PUSH2 0x3FE1 JUMP JUMPDEST ADD PUSH2 0x3693 JUMP JUMPDEST PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x173B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x36F1 PUSH2 0x36EC PUSH2 0x36F6 SWAP3 PUSH2 0x36DA JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3701 PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x370A PUSH2 0x2091 JUMP JUMPDEST PUSH2 0x371C PUSH2 0x3716 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x387F JUMPI PUSH2 0x374E PUSH1 0x20 PUSH2 0x3738 PUSH2 0x3733 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x3746 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x375E PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x387A JUMPI PUSH2 0x3788 PUSH2 0x3783 PUSH2 0x379E SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x384D JUMPI JUMPDEST POP PUSH2 0x1463 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3796 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x37AE PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3848 JUMPI PUSH2 0x37F2 PUSH2 0x37E5 PUSH2 0x37E0 PUSH2 0x3809 SWAP4 PUSH2 0x3817 SWAP6 PUSH0 SWAP2 PUSH2 0x381A JUMPI JUMPDEST POP PUSH2 0x37DB PUSH1 0x12 PUSH2 0x1532 JUMP JUMPDEST PUSH2 0x157B JUMP JUMPDEST PUSH2 0x159F JUMP JUMPDEST PUSH2 0x37ED PUSH2 0x21D5 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x3803 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36DD JUMP JUMPDEST SWAP1 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x3811 PUSH2 0x2091 JUMP JUMPDEST SWAP1 PUSH2 0x161D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x383B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3841 JUMPI JUMPDEST PUSH2 0x3833 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x37D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3829 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x386D SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x3873 JUMPI JUMPDEST PUSH2 0x3865 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH0 PUSH2 0x377D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x385B JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x3888 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x389F PUSH2 0x389A PUSH2 0x38A4 SWAP3 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0xDC9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38BE PUSH2 0x38B9 PUSH2 0x38C3 SWAP3 PUSH2 0x38A7 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0xDC9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38CF SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38DB SWAP1 PUSH2 0x38AA JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x38F2 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x38D2 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP5 SWAP2 SWAP5 SWAP4 SWAP1 SWAP4 PUSH2 0x3903 PUSH2 0x479B JUMP JUMPDEST SWAP6 PUSH2 0x3918 PUSH2 0x3912 PUSH0 DUP10 ADD PUSH2 0x2CFE JUMP JUMPDEST ISZERO PUSH2 0x453 JUMP JUMPDEST SWAP6 PUSH2 0x3924 PUSH0 DUP10 ADD PUSH2 0x2D2C JUMP JUMPDEST DUP1 PUSH2 0x3937 PUSH2 0x3931 PUSH0 PUSH2 0x388B JUMP JUMPDEST SWAP2 PUSH2 0xDC9 JUMP JUMPDEST EQ DUP1 PUSH2 0x3A71 JUMPI JUMPDEST SWAP1 PUSH2 0x3952 PUSH2 0x394C PUSH1 0x1 PUSH2 0x38AA JUMP JUMPDEST SWAP2 PUSH2 0xDC9 JUMP JUMPDEST EQ DUP1 PUSH2 0x3A49 JUMPI JUMPDEST PUSH2 0x3964 SWAP1 SWAP2 ISZERO PUSH2 0x453 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x3A38 JUMPI JUMPDEST POP PUSH2 0x39FC JUMPI PUSH2 0x3994 SWAP6 PUSH2 0x3989 PUSH2 0x3981 PUSH1 0x1 PUSH2 0x38AA JUMP JUMPDEST PUSH0 DUP12 ADD PUSH2 0x2D75 JUMP JUMPDEST DUP8 PUSH2 0x39EA JUMPI JUMPDEST PUSH2 0x3A78 JUMP JUMPDEST PUSH2 0x399C JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x39A9 SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x2DB9 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x39E1 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x39D8 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x38DF JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x3999 JUMP JUMPDEST PUSH2 0x39F7 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x398F JUMP JUMPDEST PUSH2 0x3A04 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3A34 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3A43 SWAP2 POP ISZERO PUSH2 0x453 JUMP JUMPDEST PUSH0 PUSH2 0x396B JUMP JUMPDEST POP PUSH2 0x3964 PUSH2 0x3A56 ADDRESS PUSH2 0x38C6 JUMP JUMPDEST EXTCODESIZE PUSH2 0x3A69 PUSH2 0x3A63 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x3959 JUMP JUMPDEST POP DUP8 PUSH2 0x393E JUMP JUMPDEST SWAP4 PUSH2 0x3AC4 PUSH2 0x3AD0 SWAP4 SWAP7 SWAP5 PUSH2 0x3A9B PUSH2 0x3AC9 SWAP5 PUSH2 0x3AF6 SWAP9 PUSH2 0x3A96 CALLER PUSH2 0x47DD JUMP JUMPDEST PUSH2 0x4808 JUMP JUMPDEST PUSH2 0x3AA3 PUSH2 0x481E JUMP JUMPDEST PUSH2 0x3AAB PUSH2 0x4844 JUMP JUMPDEST PUSH2 0x3AB3 PUSH2 0x486A JUMP JUMPDEST PUSH2 0x3ABD DUP9 PUSH0 PUSH2 0x2F1A JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2F1A JUMP JUMPDEST PUSH2 0x2F46 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x2F61 JUMP JUMPDEST PUSH2 0x3AEF PUSH2 0x3AE8 PUSH2 0x168 PUSH2 0x3AE3 DUP5 SWAP2 PUSH2 0x2F84 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x7 PUSH2 0x17A1 JUMP JUMPDEST PUSH1 0x8 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x3B01 NUMBER PUSH1 0x5 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x3B30 PUSH1 0x20 PUSH2 0x3B1A PUSH2 0x3B15 PUSH2 0x2710 SWAP5 PUSH2 0x2FAC JUMP JUMPDEST PUSH2 0x2FB8 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3B28 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3B40 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3BA8 JUMPI PUSH2 0x3B6C PUSH2 0x3B66 PUSH2 0x3B78 SWAP5 PUSH2 0x3B71 SWAP5 PUSH0 SWAP2 PUSH2 0x3B7A JUMPI JUMPDEST POP PUSH2 0x159F JUMP JUMPDEST SWAP2 PUSH2 0x2FC7 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x6 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3B9B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3BA1 JUMPI JUMPDEST PUSH2 0x3B93 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14A4 JUMP JUMPDEST PUSH0 PUSH2 0x3B60 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3B89 JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST SWAP1 PUSH2 0x3BBB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x38F4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3BC5 PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x3BCE PUSH2 0x358B JUMP JUMPDEST PUSH2 0x3BE2 NUMBER PUSH2 0x3BDC PUSH1 0x5 PUSH2 0x173B JUMP JUMPDEST SWAP1 PUSH2 0x163F JUMP JUMPDEST PUSH2 0x3BFD PUSH2 0x3BF7 PUSH2 0x3BF2 PUSH1 0x8 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT SWAP1 DUP2 PUSH2 0x3C09 JUMPI JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C1D PUSH2 0x3C17 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH0 PUSH2 0x3C05 JUMP JUMPDEST PUSH2 0x3C35 SWAP1 PUSH2 0x3C30 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x3C37 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x3C52 PUSH2 0x3C4C PUSH2 0x3C47 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x3C62 JUMPI PUSH2 0x3C60 SWAP1 PUSH2 0x4697 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3CA5 PUSH2 0x3C6E PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x3C76 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3CB2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3CC5 SWAP1 PUSH2 0x3CC0 PUSH2 0x4022 JUMP JUMPDEST PUSH2 0x3CC7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3CE9 PUSH2 0x3CF0 SWAP2 PUSH2 0x3CD9 DUP2 PUSH1 0x8 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x3CE4 PUSH2 0x168 PUSH2 0x2F84 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH1 0x7 PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3CFB SWAP1 PUSH2 0x3CB4 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3D14 PUSH2 0x3D0F PUSH2 0x3D19 SWAP3 PUSH2 0x3CFD JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3D26 PUSH1 0x2 PUSH2 0x3D00 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3D31 PUSH2 0x4874 JUMP JUMPDEST PUSH2 0x3D3C PUSH0 DUP3 ADD PUSH2 0x173B JUMP JUMPDEST PUSH2 0x3D55 PUSH2 0x3D4F PUSH2 0x3D4A PUSH2 0x3D1C JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x3D70 JUMPI PUSH2 0x3D6E SWAP1 PUSH0 PUSH2 0x3D67 PUSH2 0x3D1C JUMP JUMPDEST SWAP2 ADD PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3D78 PUSH2 0x291 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3DA8 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3DC0 PUSH2 0x3DBB PUSH2 0x3DC5 SWAP3 PUSH2 0x38A7 JUMP JUMPDEST PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DD2 PUSH1 0x1 PUSH2 0x3DAC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DF0 PUSH2 0x3DE0 PUSH2 0x4874 JUMP JUMPDEST PUSH0 PUSH2 0x3DE9 PUSH2 0x3DC8 JUMP JUMPDEST SWAP2 ADD PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3DFA PUSH2 0x26E5 JUMP JUMPDEST PUSH2 0x3E00 JUMPI JUMP JUMPDEST PUSH2 0x3E08 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3E38 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP2 PUSH2 0x3E58 PUSH2 0x3E52 PUSH2 0x3E4D PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x3E74 JUMPI PUSH2 0x3E72 SWAP2 SWAP1 PUSH2 0x3E6B PUSH0 PUSH2 0x2C14 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x48A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3EB7 PUSH2 0x3E80 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x3E88 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3EC3 PUSH2 0x208D JUMP JUMPDEST POP PUSH2 0x3EF1 PUSH1 0x20 PUSH2 0x3EDB PUSH2 0x3ED6 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x3EE9 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3F01 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3FDC JUMPI PUSH0 SWAP2 PUSH2 0x3FAE JUMPI JUMPDEST POP SWAP1 PUSH2 0x3F42 PUSH1 0x20 PUSH2 0x3F2C PUSH2 0x3F27 PUSH1 0x2 PUSH2 0x16E1 JUMP JUMPDEST PUSH2 0x16EE JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x3F3A PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3F52 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x3FA9 JUMPI PUSH2 0x3F78 SWAP4 PUSH2 0x3F73 SWAP3 PUSH0 SWAP2 PUSH2 0x3F7B JUMPI JUMPDEST POP SWAP3 PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x161D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3F9C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3FA2 JUMPI JUMPDEST PUSH2 0x3F94 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x3F6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F8A JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH2 0x3FCF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3FD5 JUMPI JUMPDEST PUSH2 0x3FC7 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0x3F13 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3FBD JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x400D PUSH2 0x2C3D JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4020 SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x4A4C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x402A PUSH2 0x2C85 JUMP JUMPDEST PUSH2 0x4043 PUSH2 0x403D PUSH2 0x4038 PUSH2 0x4005 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST SUB PUSH2 0x404A JUMPI JUMP JUMPDEST PUSH2 0x408C PUSH2 0x4055 PUSH2 0x4005 JUMP JUMPDEST PUSH2 0x405D PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x40B9 PUSH2 0x40C0 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x40AF PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0xA27 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4B0 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x40CD SWAP2 SUB PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x40DE DUP2 DUP4 SWAP1 PUSH2 0x36A9 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x4112 PUSH2 0x410C PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST SUB PUSH2 0x411F JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x4132 PUSH2 0x412C DUP8 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST LT PUSH2 0x4158 JUMPI PUSH2 0x414F SWAP4 SWAP5 PUSH2 0x4147 SWAP2 SWAP4 SWAP3 PUSH2 0x40C2 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x4A4C JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x4118 JUMP JUMPDEST POP PUSH2 0x4197 DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x4168 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4090 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x41B7 PUSH2 0x41B1 PUSH2 0x41AC PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4231 JUMPI DUP2 PUSH2 0x41D7 PUSH2 0x41D1 PUSH2 0x41CC PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x41EA JUMPI PUSH2 0x41E8 SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x48A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x422D PUSH2 0x41F6 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x41FE PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4274 PUSH2 0x423D PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4245 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4280 PUSH2 0x4BA6 JUMP JUMPDEST PUSH2 0x4288 PUSH2 0x428A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x429E PUSH2 0x4295 PUSH2 0x45F5 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x20E9 JUMP JUMPDEST PUSH2 0x42A6 PUSH2 0x4005 JUMP JUMPDEST PUSH2 0x42DC PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 PUSH2 0x42D3 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x42E9 PUSH2 0x4278 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x42F4 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4300 ADDRESS PUSH2 0x42EB JUMP JUMPDEST PUSH2 0x4332 PUSH2 0x432C PUSH32 0x0 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x437C JUMPI JUMPDEST PUSH2 0x4340 JUMPI JUMP JUMPDEST PUSH2 0x4348 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4378 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x4385 PUSH2 0x4BF9 JUMP JUMPDEST PUSH2 0x43B7 PUSH2 0x43B1 PUSH32 0x0 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ ISZERO PUSH2 0x433A JUMP JUMPDEST POP PUSH2 0x43C7 PUSH2 0x4022 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x43D2 SWAP1 PUSH2 0x43BE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x43DD SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x43E9 SWAP1 PUSH2 0x43D4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x43F5 SWAP1 PUSH2 0xB3A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4401 DUP2 PUSH2 0x8DE JUMP JUMPDEST SUB PUSH2 0x4408 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x4419 DUP3 PUSH2 0x43F8 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x4434 JUMPI PUSH2 0x4431 SWAP2 PUSH0 ADD PUSH2 0x440C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4467 PUSH1 0x20 PUSH2 0x4451 PUSH2 0x444C DUP7 PUSH2 0x43E0 JUMP JUMPDEST PUSH2 0x43EC JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x445F PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x147B JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4477 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x4547 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x44D8 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x4499 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x44D4 SWAP1 PUSH2 0x44A5 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x44F3 PUSH2 0x44ED PUSH2 0x44E8 PUSH2 0x2679 JUMP JUMPDEST PUSH2 0x8DE JUMP JUMPDEST SWAP2 PUSH2 0x8DE JUMP JUMPDEST SUB PUSH2 0x4508 JUMPI PUSH2 0x4503 SWAP3 SWAP4 POP PUSH2 0x4C23 JUMP JUMPDEST PUSH2 0x4497 JUMP JUMPDEST PUSH2 0x4543 DUP5 PUSH2 0x4514 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x8EE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4569 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4570 JUMPI JUMPDEST PUSH2 0x4561 DUP2 DUP4 PUSH2 0x766 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x441B JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x4484 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4557 JUMP JUMPDEST PUSH2 0x4580 ADDRESS PUSH2 0x42EB JUMP JUMPDEST PUSH2 0x45B2 PUSH2 0x45AC PUSH32 0x0 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST SUB PUSH2 0x45B9 JUMPI JUMP JUMPDEST PUSH2 0x45C1 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x45F1 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x4634 PUSH2 0x462E PUSH2 0x4629 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4650 JUMPI PUSH2 0x464E SWAP2 PUSH2 0x4646 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x48A6 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4693 PUSH2 0x465C PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4664 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x469F PUSH2 0x4777 JUMP JUMPDEST PUSH2 0x46B7 PUSH2 0x46AD PUSH0 DUP4 ADD PUSH2 0x144A JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x2F1A JUMP JUMPDEST SWAP1 PUSH2 0x46EB PUSH2 0x46E5 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP2 PUSH2 0xB46 JUMP JUMPDEST SWAP2 PUSH2 0x46F4 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x46FE DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x470B PUSH2 0x3DF2 JUMP JUMPDEST PUSH2 0x4713 PUSH2 0x4715 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x472A PUSH2 0x4720 PUSH2 0x45F5 JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP2 ADD PUSH2 0x20E9 JUMP JUMPDEST PUSH2 0x4732 PUSH2 0x4005 JUMP JUMPDEST PUSH2 0x4768 PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 PUSH2 0x475F PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x4775 PUSH2 0x4703 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x47D0 SWAP1 PUSH2 0x47CB PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x47D2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x47DB SWAP1 PUSH2 0x4D84 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x47E6 SWAP1 PUSH2 0x47BF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x47FA SWAP2 PUSH2 0x47F5 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x47FC JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4806 SWAP2 PUSH2 0x4FC7 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4812 SWAP2 PUSH2 0x47E8 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x481C PUSH2 0x4CAC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4826 PUSH2 0x4814 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4830 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x4838 PUSH2 0x483A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4842 PUSH2 0x5002 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x484C PUSH2 0x4828 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4856 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x485E PUSH2 0x4860 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4868 PUSH2 0x5034 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4872 PUSH2 0x484E JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x48A3 SWAP2 ADD PUSH2 0x2A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x48B1 PUSH2 0x3FE1 JUMP JUMPDEST DUP2 PUSH2 0x48CC PUSH2 0x48C6 PUSH2 0x48C1 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x49B7 JUMPI PUSH2 0x48F3 DUP4 PUSH2 0x48ED PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x48E8 DUP4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x21B0 JUMP JUMPDEST SWAP1 PUSH2 0x17A1 JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x490F PUSH2 0x4909 PUSH2 0x4904 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x4988 JUMPI PUSH2 0x4937 SWAP1 PUSH2 0x4931 PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x492C DUP4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x40C2 JUMP JUMPDEST SWAP1 PUSH2 0x17A1 JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x4983 PUSH2 0x4971 PUSH2 0x496B PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP4 PUSH2 0x497A PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x49B2 SWAP1 PUSH2 0x49AC PUSH2 0x499D PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x2BA9 JUMP JUMPDEST SWAP2 PUSH2 0x49A7 DUP4 PUSH2 0x173B JUMP JUMPDEST PUSH2 0x4898 JUMP JUMPDEST SWAP1 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x4938 JUMP JUMPDEST PUSH2 0x49CC PUSH2 0x49C7 PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x173B JUMP JUMPDEST DUP1 PUSH2 0x49DF PUSH2 0x49D9 DUP7 PUSH2 0x2A3 JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST LT PUSH2 0x4A09 JUMPI PUSH2 0x49F2 PUSH2 0x4A04 SWAP2 DUP6 SWAP1 PUSH2 0x40C2 JUMP JUMPDEST PUSH2 0x49FF PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x48F4 JUMP JUMPDEST SWAP2 PUSH2 0x4A48 SWAP2 POP SWAP2 SWAP3 PUSH2 0x4A19 PUSH2 0x291 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x4090 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP3 PUSH2 0x4A56 PUSH2 0x3FE1 JUMP JUMPDEST DUP3 PUSH2 0x4A71 PUSH2 0x4A6B PUSH2 0x4A66 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4B5F JUMPI DUP5 PUSH2 0x4A91 PUSH2 0x4A8B PUSH2 0x4A86 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4B18 JUMPI PUSH2 0x4AB8 SWAP1 PUSH2 0x4AB3 PUSH2 0x4AAC PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x3693 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x2BA9 JUMP JUMPDEST PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x4AC2 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x4B0D PUSH2 0x4AFB PUSH2 0x4AF5 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP4 PUSH2 0xB46 JUMP JUMPDEST SWAP4 PUSH2 0x4B04 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x4BD JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x4ABD JUMP JUMPDEST PUSH2 0x4B5B PUSH2 0x4B24 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4B2C PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BA2 PUSH2 0x4B6B PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4B73 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BB7 PUSH2 0x4BB1 PUSH2 0x26E5 JUMP JUMPDEST ISZERO PUSH2 0x453 JUMP JUMPDEST PUSH2 0x4BBD JUMPI JUMP JUMPDEST PUSH2 0x4BC5 PUSH2 0x291 JUMP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4BF5 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4C01 PUSH2 0x2C3D JUMP JUMPDEST POP PUSH2 0x4C1C PUSH0 PUSH2 0x4C16 PUSH2 0x4C11 PUSH2 0x2679 JUMP JUMPDEST PUSH2 0x503E JUMP JUMPDEST ADD PUSH2 0x144A JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4C2D DUP3 PUSH2 0x5041 JUMP JUMPDEST DUP2 PUSH2 0x4C58 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0xB46 JUMP JUMPDEST SWAP1 PUSH2 0x4C61 PUSH2 0x291 JUMP JUMPDEST DUP1 PUSH2 0x4C6B DUP2 PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x4C77 DUP2 PUSH2 0x4C1F JUMP JUMPDEST PUSH2 0x4C89 PUSH2 0x4C83 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x4C9D JUMPI PUSH2 0x4C99 SWAP2 PUSH2 0x5151 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x4CA7 PUSH2 0x50B6 JUMP JUMPDEST PUSH2 0x4C9B JUMP JUMPDEST PUSH2 0x4CBD PUSH2 0x4CB7 PUSH2 0x5180 JUMP JUMPDEST ISZERO PUSH2 0x453 JUMP JUMPDEST PUSH2 0x4CC3 JUMPI JUMP JUMPDEST PUSH2 0x4CCB PUSH2 0x291 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4CFB PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D10 SWAP1 PUSH2 0x4D0B PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x4D12 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x4D2D PUSH2 0x4D27 PUSH2 0x4D22 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST SWAP2 PUSH2 0x2E2 JUMP JUMPDEST EQ PUSH2 0x4D3D JUMPI PUSH2 0x4D3B SWAP1 PUSH2 0x4697 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4D80 PUSH2 0x4D49 PUSH0 PUSH2 0x2C14 JUMP JUMPDEST PUSH2 0x4D51 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D8D SWAP1 PUSH2 0x4CFF JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4DA1 SWAP2 PUSH2 0x4D9C PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x4FA3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x4DEB SWAP2 MUL SWAP2 PUSH2 0x4DE5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x4DAD JUMP JUMPDEST SWAP3 PUSH2 0x4DAD JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4E0B PUSH2 0x4E06 PUSH2 0x4E13 SWAP4 PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x179E JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x4DB1 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4E29 SWAP2 PUSH2 0x4E23 PUSH2 0x208D JUMP JUMPDEST SWAP2 PUSH2 0x4DF5 JUMP JUMPDEST JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x4E37 JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x4E44 PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x4E17 JUMP JUMPDEST ADD PUSH2 0x4E2C JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x4E5A JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4E66 PUSH2 0x4E8B SWAP4 PUSH2 0x1F78 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x4E72 DUP5 PUSH2 0x4DA3 JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x4E93 JUMPI JUMPDEST PUSH2 0x4E84 SWAP1 PUSH2 0x4DA3 JUMP JUMPDEST ADD SWAP1 PUSH2 0x4E2B JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x4E55 JUMP JUMPDEST SWAP2 POP PUSH2 0x4E84 DUP2 SWAP3 SWAP1 POP PUSH2 0x4E7B JUMP JUMPDEST SWAP1 PUSH2 0x4EB1 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0x68D JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x4EC0 SWAP2 PUSH2 0x4EA1 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4ED2 DUP2 PUSH2 0x386 JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x4F92 JUMPI PUSH2 0x4EF6 DUP3 PUSH2 0x4EF0 DUP6 SLOAD PUSH2 0x1F45 JUMP JUMPDEST DUP6 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x4F2A JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x4F19 SWAP4 PUSH0 SWAP3 PUSH2 0x4F1E JUMPI JUMPDEST POP POP PUSH2 0x4EB6 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x4F12 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x4F39 DUP6 PUSH2 0x1F78 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4F7A JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x4F60 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x4F1C JUMP JUMPDEST PUSH2 0x4F70 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x4EA1 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x4F54 JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x4F3C JUMP JUMPDEST PUSH2 0x739 JUMP JUMPDEST SWAP1 PUSH2 0x4FA1 SWAP2 PUSH2 0x4EC8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x4FC5 SWAP3 PUSH2 0x4FBE PUSH2 0x4FB4 PUSH2 0x3FE1 JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x4F97 JUMP JUMPDEST SWAP2 ADD PUSH2 0x4F97 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4FD1 SWAP2 PUSH2 0x4D8F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4FDB PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x4FE3 PUSH2 0x4FE5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5000 PUSH2 0x4FF0 PUSH2 0x4874 JUMP JUMPDEST PUSH0 PUSH2 0x4FF9 PUSH2 0x3DC8 JUMP JUMPDEST SWAP2 ADD PUSH2 0x17A1 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x500A PUSH2 0x4FD3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5014 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x501C PUSH2 0x501E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5032 PUSH2 0x5029 PUSH2 0x45F5 JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x20E9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x503C PUSH2 0x500C JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x5055 PUSH2 0x504F PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x5077 JUMPI PUSH2 0x5075 SWAP1 PUSH0 PUSH2 0x506F PUSH2 0x506A PUSH2 0x2679 JUMP JUMPDEST PUSH2 0x503E JUMP JUMPDEST ADD PUSH2 0x2F1A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x50B2 SWAP1 PUSH2 0x5083 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x50C9 PUSH2 0x50C3 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH2 0x50D0 JUMPI JUMP JUMPDEST PUSH2 0x50D8 PUSH2 0x291 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5108 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5123 PUSH2 0x511E DUP4 PUSH2 0x7A4 JUMP JUMPDEST PUSH2 0x78F JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x5143 JUMPI PUSH2 0x5138 RETURNDATASIZE PUSH2 0x5111 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x514B PUSH2 0x510C JUMP JUMPDEST SWAP1 PUSH2 0x5141 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x517D SWAP4 PUSH2 0x515F PUSH2 0x510C JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x5174 PUSH2 0x5128 JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x519E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5188 PUSH2 0x2067 JUMP JUMPDEST POP PUSH2 0x519B PUSH0 PUSH2 0x5195 PUSH2 0x479B JUMP JUMPDEST ADD PUSH2 0x2CFE JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x51B2 SWAP1 PUSH2 0x51AB PUSH2 0x510C JUMP JUMPDEST POP ISZERO PUSH2 0x453 JUMP JUMPDEST PUSH0 EQ PUSH2 0x51BE JUMPI POP PUSH2 0x5242 JUMP JUMPDEST PUSH2 0x51C7 DUP3 PUSH2 0x4C1F JUMP JUMPDEST PUSH2 0x51D9 PUSH2 0x51D3 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ DUP1 PUSH2 0x5227 JUMPI JUMPDEST PUSH2 0x51E8 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x5223 SWAP1 PUSH2 0x51F4 PUSH2 0x291 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xA34 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x523C PUSH2 0x5236 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST EQ PUSH2 0x51E0 JUMP JUMPDEST PUSH2 0x524B DUP2 PUSH2 0x4C1F JUMP JUMPDEST PUSH2 0x525D PUSH2 0x5257 PUSH0 PUSH2 0x12DE JUMP JUMPDEST SWAP2 PUSH2 0x2A3 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x526C JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x5274 PUSH2 0x291 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x52A4 PUSH1 0x4 DUP3 ADD PUSH2 0x33E JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC DUP14 SELFDESTRUCT SAR CALLDATALOAD 0x29 0xD2 EXTCODEHASH MLOAD 0x25 0xC5 0xE6 CODECOPY LOG3 SWAP9 SMOD 0x21 0xD5 CALL STATICCALL 0xC6 INVALID PUSH26 0x59F97D618A0C6CFBF864736F6C63430008190033000000000000 ","sourceMap":"730:9546:67:-:0;;;;;;;;;-1:-1:-1;730:9546:67;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1087:26::-;;;;;;:::i;:::-;;:::o;730:9546::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;1225:31;;;;;;:::i;:::-;;:::o;730:9546::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1265:41::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;730:9546::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;730:9546:67:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1191:27::-;;;;;;:::i;:::-;;:::o;730:9546::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1120:32::-;;;;;;:::i;:::-;;:::o;730:9546::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;939:24::-;;;;;:::i;:::-;;:::o;730:9546::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1159:25::-;;;;;;:::i;:::-;;:::o;730:9546::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1046:32::-;;;;;;:::i;:::-;;:::o;730:9546::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;970:25::-;;;;;;:::i;:::-;;:::o;730:9546::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3217:103:6;;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;2345:1;2281:72;;;:::i;:::-;2345:1;:::i;:::-;2281:72::o;730:9546:67:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;5296:1646::-;;5389:55;5397:6;:10;;5406:1;5397:10;:::i;:::-;;;:::i;:::-;;5389:55;:::i;:::-;5455:64;5463:21;5473:10;5463:21;:::i;:::-;:31;;5488:6;5463:31;:::i;:::-;;;:::i;:::-;;;5455:64;:::i;:::-;5553:37;;:35;:26;5568:10;;;:::i;:::-;5553:26;:::i;:::-;:35;:::i;:::-;;:37;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5296:1646;5532:58;5624:43;;:28;:18;5631:10;;;:::i;:::-;5624:18;:::i;:::-;:28;:::i;:::-;;5661:4;5624:43;5653:13;5661:4;5653:13;:::i;:::-;5624:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;5296:1646;5601:66;5707:9;5700:42;;:27;:17;5707:9;;;:::i;:::-;5700:17;:::i;:::-;:27;:::i;:::-;;5736:4;5700:42;5728:13;5736:4;5728:13;:::i;:::-;5700:42;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6112:44;5700:42;6035:6;5965:39;5966:21;5890:38;5891:20;5810:41;6131:25;5700:42;6138:17;5700:42;;;;;5296:1646;5678:64;5833:2;5826:25;5833:17;:2;:17;5838:12;5833:17;;:::i;:::-;;:::i;:::-;5826:25;:::i;:::-;5810:41;;:::i;:::-;5891:6;;:20;:::i;:::-;5915:13;;:::i;:::-;5890:38;;:::i;:::-;5966:6;;:21;:::i;:::-;5991:13;;:::i;:::-;5965:39;;:::i;:::-;6023:10;;6035:6;:::i;:::-;6138:17;:2;:17;:::i;:::-;;:::i;:::-;6131:25;:::i;:::-;6112:44;;:::i;:::-;6192:15;6244:12;6235:22;6244:12;6235:22;:::i;:::-;6275:9;6268:26;:17;6275:9;;;:::i;:::-;6268:17;:::i;:::-;:26;:::i;:::-;:54;:26;6295:2;;6299:12;6268:54;;6299:22;:12;6314:7;6299:22;;:::i;:::-;6268:54;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;5296:1646;6360:7;6351:17;6360:7;6351:17;:::i;:::-;6402:9;:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5296:1646;6379:50;6459:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5296:1646;6440:42;6500:9;6493:60;:26;:17;6500:9;;;:::i;:::-;6493:17;:::i;:::-;:26;:::i;:::-;;;6520:12;6493:60;;6534:18;6520:12;6534:7;6544:8;6534:18;;:::i;:::-;6493:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;5296:1646;6571:9;6564:46;:26;:17;6571:9;;;:::i;:::-;6564:17;:::i;:::-;:26;:::i;:::-;;;6591:8;6564:46;;6591:8;6601;6564:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;5296:1646;6642:15;6669:58;6633:25;6642:15;6633:25;:::i;:::-;6676:10;6669:27;:18;6676:10;;;:::i;:::-;6669:18;:::i;:::-;:27;:::i;:::-;:58;;6701:25;6669:27;6697:2;6701:15;6719:7;6701:25;;:::i;:::-;6669:58;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;5296:1646;6758:7;6777:60;6749:17;6758:7;6749:17;:::i;:::-;6784:9;6777:26;:17;6784:9;;;:::i;:::-;6777:17;:::i;:::-;:26;:::i;:::-;:60;;6818:18;6777:26;6804:12;6818:7;6828:8;6818:18;;:::i;:::-;6777:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6848:46;6777:60;;;5296:1646;6855:9;6848:26;:17;6855:9;;;:::i;:::-;6848:17;:::i;:::-;:26;:::i;:::-;:46;;:26;6875:8;6885;6848:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6907:27;6848:46;6907:27;6848:46;;;5296:1646;6922:12;6907:27;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;5296:1646::o;6848:46::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;6777:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;6669:58::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;6564:46::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;6493:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;6459:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6402:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6268:54::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5700:42::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5624:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5553:37::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5296:1646::-;;;;;:::i;:::-;:::o;730:9546::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;3011:144:3:-;3056:13;;:::i;:::-;3106:18;3134:14;3141:7;3106:18;;:::i;:::-;3141:7;3134:14;:::i;:::-;;:::o;730:9546:67:-;;;:::o;5505:186:3:-;5657:5;5505:186;5578:4;;:::i;:::-;5610:12;;;:::i;:::-;5648:7;5657:5;;;:::i;:::-;5680:4;5673:11;:::o;730:9546:67:-;;;:::o;4191:152:3:-;4243:7;;:::i;:::-;4287:18;4322:14;;4287:18;;:::i;:::-;4322:14;;:::i;:::-;4315:21;:::o;2303:62:0:-;;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;730:9546:67:-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;8998:116::-;9079:18;:27;8998:116;9079:9;;:18;:::i;:::-;:27;:::i;:::-;8998:116::o;:::-;;;;;:::i;:::-;:::o;6251:244:3:-;;6461:5;6251:244;6338:4;;:::i;:::-;6372:12;6425:5;6372:12;;:::i;:::-;6410:4;6416:7;6425:5;;;:::i;:::-;6457:2;6461:5;;;:::i;:::-;6484:4;6477:11;:::o;730:9546:67:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;9563:710::-;9610:7;;:::i;:::-;9671:9;:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;9655:44;9671:27;;;;;9563:710;9655:44;;:::i;:::-;9725:19;;:17;:9;;;:::i;:::-;:17;:::i;:::-;;:19;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;9563:710;9710:34;9775:1;9755:21;9775:1;9755:21;:::i;:::-;9815:9;9808:42;;:27;:17;9815:9;;;:::i;:::-;9808:17;:::i;:::-;:27;:::i;:::-;;9844:4;9808:42;9836:13;9844:4;9836:13;:::i;:::-;9808:42;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;9563:710;9789:61;9888:10;9881:43;;:28;:18;9888:10;;;:::i;:::-;9881:18;:::i;:::-;:28;:::i;:::-;;9918:4;9881:43;9910:13;9918:4;9910:13;:::i;:::-;9881:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;9563:710;9861:63;9941:11;;:16;;9956:1;9941:16;:::i;:::-;;;:::i;:::-;;:37;;;9563:710;9937:51;;10014:46;:14;:6;:14;:::i;:::-;;10029:10;10014:46;10029:10;;;:::i;:::-;10041:4;10014:46;10041:4;10047:12;10014:46;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10001:59;10014:46;;;;;9563:710;10001:59;;:::i;:::-;10077:9;;;;:::i;:::-;:17;;10090:4;10077:17;:::i;:::-;;;:::i;:::-;;10073:164;;;;10124:11;;10111:24;10124:11;10111:24;;:::i;:::-;10073:164;10249:16;:::o;10073:164::-;10181:6;:14;:44;:6;:14;:::i;:::-;:44;:14;:44;10196:9;;;:::i;:::-;10207:4;10213:11;10181:44;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10168:57;10181:44;;;;;10073:164;10168:57;;:::i;:::-;10073:164;;10181:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;10014:46::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;9937:51::-;9987:1;;;;;9980:8;9987:1;9980:8;:::i;:::-;;:::o;9941:37::-;9961:12;;:17;;9977:1;9961:17;:::i;:::-;;;:::i;:::-;;9941:37;;9881:43;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9808:42::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9725:19::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9671:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;730:9546::-;;;:::o;4049:82:3:-;4098:5;;:::i;:::-;4122:2;4115:9;4122:2;4115:9;:::i;:::-;;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;8376:67:67:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;730:9546:67:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;730:9546:67:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;730:9546:67:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:5:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;3217:103:6:-;;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;2345:1;2281:72;;;:::i;:::-;2345:1;:::i;:::-;2281:72::o;730:9546:67:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4235:860;4327:55;4335:6;:10;;4344:1;4335:10;:::i;:::-;;;:::i;:::-;;4327:55;:::i;:::-;4395:30;:17;4402:9;;;:::i;:::-;4395:17;:::i;:::-;:30;:::i;:::-;:65;:30;4426:10;;4446:4;4395:65;;4438:13;4446:4;4438:13;:::i;:::-;4453:6;4395:65;4453:6;4395:65;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;4235:860;4496:9;:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4235:860;4473:50;4553:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4235:860;4534:42;4613:6;4604:16;4613:6;4604:16;:::i;:::-;4656:7;4647:17;4656:7;4647:17;:::i;:::-;4677:60;:26;:17;4684:9;;;:::i;:::-;4677:17;:::i;:::-;:26;:::i;:::-;;4704:12;4718:7;4677:60;;4718:18;:7;4728:8;4718:18;;:::i;:::-;4677:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4748:46;4677:60;;;4235:860;4755:9;4748:26;:17;4755:9;;;:::i;:::-;4748:17;:::i;:::-;:26;:::i;:::-;:46;;:26;4775:8;4785;4748:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4876:36;4748:46;4829:16;4748:46;;;4235:860;4829:6;:16;:::i;:::-;4876:36;:34;:25;4891:9;;;:::i;:::-;4876:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5061:26;4876:36;4976:38;5035:12;4876:36;5061:26;4876:36;;;;;4235:860;4856:56;4990:24;4997:16;4976:11;4997:2;:16;:2;:16;:::i;:::-;;:::i;:::-;4990:24;:::i;:::-;4976:38;;:::i;:::-;5035:12;;:::i;:::-;5061:26;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;4235:860::o;4876:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4748:46::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;4677:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;4553:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4496:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4395:65::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;4235:860::-;;;;;:::i;:::-;:::o;730:9546::-;;;;;:::i;:::-;;;;;;;;;:::o;4401:171:3:-;4545:20;;4401:171;4466:7;;:::i;:::-;4510:18;4545:11;4510:18;;:::i;:::-;4545:11;:20;:::i;:::-;;:::i;:::-;4538:27;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;730:9546:67:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;730:9546:67:-;;;:::o;8894:96::-;8937:7;;:::i;:::-;8972:9;8964:18;8972:9;;;:::i;:::-;8964:18;:::i;:::-;8957:25;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;8232:63:67:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;3268:148:3:-;3315:13;;:::i;:::-;3365:18;3393:16;3400:9;3365:18;;:::i;:::-;3400:9;3393:16;:::i;:::-;;:::o;4767:178::-;4911:5;4767:178;4836:4;;:::i;:::-;4868:12;;;:::i;:::-;4907:2;4911:5;;;:::i;:::-;4934:4;4927:11;:::o;730:9546:67:-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;;;;;;;2865:8:67;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;730:9546:67;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2595:808::-;3142:35;2595:808;;;3130:47;2595:808;2943:7;3239:36;2595:808;;;3095:24;2595:808;2901:10;;;:::i;:::-;2943:7;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;3062:22;3074:10;3062:22;;:::i;:::-;3095:24;;:::i;:::-;3142:35;:::i;:::-;3130:47;;:::i;:::-;3190:38;3205:23;:3;:23;3211:17;3205:23;;:::i;:::-;;:::i;:::-;3190:38;;:::i;:::-;3239:36;;:::i;:::-;3286:32;3306:12;3286:32;;:::i;:::-;3356:39;;:37;:28;3342:5;3373:10;3356:28;:::i;:::-;:37;:::i;:::-;;:39;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;3342:53;3350:45;3329:66;3356:39;3342:53;3356:39;;;;;2595:808;3350:45;;:::i;:::-;3342:53;;:::i;:::-;;:::i;:::-;3329:66;;:::i;:::-;2595:808::o;3356:39::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2595:808::-;;;;;;;;;;:::i;:::-;:::o;3217:103:6:-;;;:::i;:::-;3282:1;;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;;:::i;:::-;2345:1;;:::i;:::-;2281:72::o;730:9546:67:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;6950:655::-;7022:95;7031:32;:12;7046:17;;;:::i;:::-;7031:32;;:::i;:::-;7030:53;;7067:16;;;:::i;:::-;7030:53;:::i;:::-;;;:::i;:::-;;7022:95;:::i;:::-;7147:17;;:::i;:::-;7190:41;7198:9;:13;;7210:1;7198:13;:::i;:::-;;;:::i;:::-;;7190:41;:::i;:::-;7288:28;;:26;:9;;;:::i;:::-;:26;:::i;:::-;;:28;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;7271:46;7288:28;;;;;6950:655;7271:46;;:::i;:::-;7328:25;:17;7335:9;;;:::i;:::-;7328:17;:::i;:::-;:25;:::i;:::-;;:54;:25;7362:7;7354:16;7362:7;7354:16;:::i;:::-;7372:9;7328:54;;7372:9;7328:54;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;7419:18;7328:54;;;6950:655;7419:7;:18;:::i;:::-;:67;:18;7438:9;;;;:::i;:::-;7449:10;7419:67;;7449:10;;;:::i;:::-;7461:9;7419:67;7461:9;7472:13;7480:4;7472:13;:::i;:::-;7419:67;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;6950:655;7395:91;7517:12;7497:32;7517:12;7497:32;;:::i;:::-;7560:10;7572:9;7583:13;7547:50;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6950:655::o;7419:67::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7328:54::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;7288:28::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6950:655::-;;;:::i;:::-;:::o;7613:329::-;7661:4;;:::i;:::-;7705:9;7698:42;;:27;:17;7705:9;;;:::i;:::-;7698:17;:::i;:::-;:27;:::i;:::-;;7734:4;7698:42;7726:13;7734:4;7726:13;:::i;:::-;7698:42;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;7828:41;7698:42;7829:24;7698:42;;;;;7613:329;7678:62;7768:32;:12;7783:17;;;:::i;:::-;7768:32;;:::i;:::-;7829:24;;:::i;:::-;7857:12;;;:::i;:::-;7828:41;;:::i;:::-;7887:9;:22;;7899:10;;;:::i;:::-;7887:22;:::i;:::-;;;:::i;:::-;;:47;;;;7912:10;;;;:::i;:::-;7887:47;7880:54;:::o;7887:47::-;;;7698:42;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;730:9546::-;;;;;:::i;:::-;;;;;;;;;:::o;5003:195:3:-;5162:29;5003:195;5162:20;:29;5003:195;5083:7;;:::i;:::-;5127:18;5162:13;5127:18;;:::i;:::-;5162:13;:20;:::i;:::-;:29;:::i;:::-;;:::i;:::-;5155:36;:::o;730:9546:67:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;8451:435::-;8495:7;;:::i;:::-;8519:13;;;:::i;:::-;:18;;8536:1;8519:18;:::i;:::-;;;:::i;:::-;;8515:32;;8575:19;;:17;:9;;;:::i;:::-;:17;:::i;:::-;;:19;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;8622:29;:20;:31;8575:19;8622:31;8575:19;;;;;8451:435;8560:34;8622:20;:::i;:::-;:29;:::i;:::-;;:31;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;8741:25;8681:21;8688:13;8804:24;8622:31;8803:42;8622:31;;;;;8451:435;8605:48;8688:13;:2;:13;:::i;:::-;;:::i;:::-;8681:21;:::i;:::-;8741:16;;:::i;:::-;:25;:::i;:::-;8804:24;8824:4;8804:24;:::i;:::-;;;:::i;:::-;8832:13;;:::i;:::-;8803:42;;:::i;:::-;8856:22;:::o;8622:31::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8575:19::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8515:32::-;8539:8;8546:1;8539:8;:::i;:::-;;:::o;730:9546::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;;;;;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1819:768:67;;2279:24;2314:47;1819:768;;;2127:7;2326:35;1819:768;2423:36;1819:768;2085:10;;;:::i;:::-;2127:7;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2246:22;2258:10;2246:22;;:::i;:::-;2279:24;;:::i;:::-;2326:35;:::i;:::-;2314:47;;:::i;:::-;2374:38;2389:23;:3;:23;2395:17;2389:23;;:::i;:::-;;:::i;:::-;2374:38;;:::i;:::-;2423:36;;:::i;:::-;2470:32;2490:12;2470:32;;:::i;:::-;2540:39;;:37;:28;2526:5;2557:10;2540:28;:::i;:::-;:37;:::i;:::-;;:39;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;2526:53;2534:45;2513:66;2540:39;2526:53;2540:39;;;;;1819:768;2534:45;;:::i;:::-;2526:53;;:::i;:::-;;:::i;:::-;2513:66;;:::i;:::-;1819:768::o;2540:39::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1819:768::-;;;;;;;;;:::i;:::-;:::o;7950:200::-;7999:4;;:::i;:::-;8033:17;;;:::i;:::-;8070:32;:12;8085:17;;;:::i;:::-;8070:32;;:::i;:::-;8069:53;;8106:16;;;:::i;:::-;8069:53;:::i;:::-;;;:::i;:::-;;8068:74;;;;7950:200;8061:81;;:::o;8068:74::-;8128:9;;:13;;8140:1;8128:13;:::i;:::-;;;:::i;:::-;;8068:74;;;2303:62:0;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;2303:62::-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3411:182:67:-;3562:23;3547:38;3411:182;3500:36;3519:17;3500:36;;:::i;:::-;3562:23;:3;:23;:::i;:::-;;:::i;:::-;3547:38;;:::i;:::-;3411:182::o;:::-;;;;:::i;:::-;:::o;730:9546::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1812:36:6:-;1847:1;;;:::i;:::-;1812:36;:::o;3326:384::-;3410:28;;:::i;:::-;3526:9;;:1;:9;;:::i;:::-;:20;;3539:7;;:::i;:::-;3526:20;:::i;:::-;;;:::i;:::-;;3522:88;;3684:19;3696:7;3684:9;3696:7;;:::i;:::-;3684:1;:9;:19;:::i;:::-;3326:384::o;3522:88::-;3569:30;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;730:9546:67;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1766:40:6:-;1805:1;;;:::i;:::-;1766:40;:::o;3716:283::-;3969:23;3799:28;;:::i;:::-;3969:9;3981:11;;:::i;:::-;3969:1;:9;:23;:::i;:::-;3716:283::o;2905:128:5:-;2970:8;;:::i;:::-;2966:61;;2905:128::o;2966:61::-;3001:15;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;9522:206:3;;9592:7;:21;;9603:10;9611:1;9603:10;:::i;:::-;9592:21;:::i;:::-;;;:::i;:::-;;9588:89;;9715:5;9694:7;9711:1;9703:10;9711:1;9703:10;:::i;:::-;9715:5;;;:::i;:::-;9522:206::o;9588:89::-;9636:30;9655:10;9663:1;9655:10;:::i;:::-;9636:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;9326:229:67;9383:7;;:::i;:::-;9422:9;:22;;:20;:9;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;9326:229;9403:41;9475:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;9516:31;9475:23;9517:17;9475:23;;;;;9326:229;9455:43;9517:6;:17;:::i;:::-;9516:31;:::i;:::-;9509:38;:::o;9475:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9422:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2242:153:3:-;2326:63;2242:153;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;10264:128:3:-;;10380:4;10264:128;10364:7;10380:4;;;:::i;:::-;10264:128::o;2658:162:0:-;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;730:9546:67;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::o;11993:477:3:-;;;;12119:25;12129:5;12136:7;12119:25;;:::i;:::-;12158:16;;:37;;12178:17;12158:37;:::i;:::-;;;:::i;:::-;;12154:310;;11993:477;;;;;;:::o;12154:310::-;12215:16;:24;;12234:5;12215:24;:::i;:::-;;;:::i;:::-;;12211:130;;12433:5;12391;;12407:24;12391:5;12398:7;12407:16;:24;:::i;:::-;12433:5;;;;:::i;:::-;12154:310;;;;;;12211:130;12293:7;12266:60;12293:7;;12302:16;12320:5;12266:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6868:300;;6951:4;:18;;6959:10;6967:1;6959:10;:::i;:::-;6951:18;:::i;:::-;;;:::i;:::-;;6947:86;;7046:2;:16;;7052:10;7060:1;7052:10;:::i;:::-;7046:16;:::i;:::-;;;:::i;:::-;;7042:86;;7155:5;7145:4;7151:2;7155:5;;;:::i;:::-;6868:300::o;7042:86::-;7085:32;7106:10;7114:1;7106:10;:::i;:::-;7085:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6947:86;6992:30;7011:10;7019:1;7011:10;:::i;:::-;6992:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2531:66:5;;;:::i;:::-;2589:1;;:::i;:::-;2531:66::o;3674:178::-;3791:17;3760:21;;:::i;:::-;3791:9;3803:5;3791:1;:9;:17;:::i;:::-;3832:12;;:::i;:::-;3823:22;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3674:178::o;:::-;;;:::i;:::-;:::o;730:9546:67:-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;3972:84:67:-;;;;:::i;:::-;:::o;730:9546::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1147:162:5;1237:66;1147:162;:::o;8996:208:3:-;9066:7;:21;;9077:10;9085:1;9077:10;:::i;:::-;9066:21;:::i;:::-;;;:::i;:::-;;9062:91;;9191:5;9178:1;9170:10;9178:1;9170:10;:::i;:::-;9182:7;9191:5;;;:::i;:::-;8996:208::o;9062:91::-;9110:32;9131:10;9139:1;9131:10;:::i;:::-;9110:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;2281:72:5:-;;;:::i;:::-;2345:1;;:::i;:::-;2281:72::o;3366:176::-;3484:16;3453:21;;:::i;:::-;3484:9;3496:4;3484:1;:9;:16;:::i;:::-;3522:12;;:::i;:::-;3515:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3366:176::o;:::-;;;:::i;:::-;:::o;1192:159:0:-;1280:65;1192:159;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;2577:147:3:-;;2709:7;2577:147;2709:7;:::i;:::-;2577:147::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2540:111:6:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:5:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;2251:183:6:-;2355:73;2251:183;:::o;730:9546:67:-;;;;;;:::i;:::-;;:::o;7483:1170:3:-;;;;7593:18;;:::i;:::-;7625:4;:18;;7633:10;7641:1;7633:10;:::i;:::-;7625:18;:::i;:::-;;;:::i;:::-;;7621:546;;;;7761:23;7779:5;7761:23;:14;:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;7621:546;8181:2;:16;;8187:10;8195:1;8187:10;:::i;:::-;8181:16;:::i;:::-;;;:::i;:::-;;8177:429;;;;8344:23;8362:5;8344:23;:14;8362:5;8344:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;8636:2;8640:5;8621:25;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;7483:1170::o;8177:429::-;8557:24;8576:5;8557:24;:15;:11;8576:5;8557:1;:11;8569:2;8557:15;;:::i;:::-;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;;7621:546;7837:17;;:11;:1;:11;7849:4;7837:17;;:::i;:::-;;:::i;:::-;7872:11;:19;;7886:5;7872:19;:::i;:::-;;;:::i;:::-;;7868:115;;8123:19;8103:39;8123:11;8137:5;8123:19;;:::i;:::-;8103:17;:11;:1;:11;8115:4;8103:17;;:::i;:::-;:39;:::i;:::-;7621:546;;7868:115;7943:4;7918:50;7943:4;;7949:11;7962:5;7918:50;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11224:487;;;11357:18;;:::i;:::-;11389:5;:19;;11398:10;11406:1;11398:10;:::i;:::-;11389:19;:::i;:::-;;;:::i;:::-;;11385:89;;11487:7;:21;;11498:10;11506:1;11498:10;:::i;:::-;11487:21;:::i;:::-;;;:::i;:::-;;11483:90;;11582:37;11614:5;11582:29;:20;:13;11614:5;11582:1;:13;11596:5;11582:20;;:::i;:::-;11603:7;11582:29;;:::i;:::-;:37;:::i;:::-;11629:76;;11224:487;;;;:::o;11629:76::-;11679:7;11688:5;11663:31;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;11629:76;;;;;11483:90;11531:31;11551:10;11559:1;11551:10;:::i;:::-;11531:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11385:89;11431:32;11452:10;11460:1;11452:10;:::i;:::-;11431:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3105:126:5;3167:9;3168:8;;:::i;:::-;3167:9;;:::i;:::-;3163:62;;3105:126::o;3163:62::-;3199:15;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1957:138:9;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;730:9546:67:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;730:9546:67:-;;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;2730:216:3:-;2920:9;:19;2730:216;2895:15;2867:18;;:::i;:::-;2905:5;2895:7;:1;:7;:15;:::i;:::-;2920:1;:9;:19;:::i;:::-;2730:216::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2657:183:6:-;2810:23;2772:28;;:::i;:::-;2810:9;2822:11;;:::i;:::-;2810:1;:9;:23;:::i;:::-;2657:183::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:5:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;730:9546:67;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"4242800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","accumulatedAssetB()":"3434","allowance(address,address)":"infinite","approve(address,uint256)":"infinite","balanceOf(address)":"infinite","baseAsset()":"3253","canSystemDeposit()":"infinite","changeReinvestDuration(uint256)":"infinite","decimals()":"infinite","deposit(uint256,address)":"infinite","executors(address)":"infinite","getAmountToSwap()":"infinite","initialize(string,string,address,address,address,uint256)":"infinite","lastDeposit()":"2796","lastInvestedBlock()":"3170","maxPerSwap()":"3280","name()":"infinite","owner()":"3126","pause()":"infinite","paused()":"2964","proxiableUUID()":"infinite","quoteAsset()":"3494","registry()":"infinite","reinitialize(string,string,address,address,address,uint256,uint64)":"infinite","reinvestDuration()":"2862","renounceOwnership()":"infinite","setExecutor(address,bool)":"infinite","swapDuration()":"3148","symbol()":"infinite","systemDeposit()":"infinite","totalSupply()":"2733","totalValuation()":"infinite","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"infinite","unitPrice()":"infinite","unpause()":"infinite","upgradeToAndCall(address,bytes)":"infinite","withdraw(uint256,address)":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_haircut(uint256)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","accumulatedAssetB()":"f7fde10f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseAsset()":"cdf456e1","canSystemDeposit()":"f267d91b","changeReinvestDuration(uint256)":"f661af29","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","executors(address)":"9ac2a011","getAmountToSwap()":"d9d47d69","initialize(string,string,address,address,address,uint256)":"edf3e29e","lastDeposit()":"36b77107","lastInvestedBlock()":"bc4ba731","maxPerSwap()":"db48a5e3","name()":"06fdde03","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","quoteAsset()":"fdf262b7","registry()":"7b103999","reinitialize(string,string,address,address,address,uint256,uint64)":"c80b0baf","reinvestDuration()":"4fe84c42","renounceOwnership()":"715018a6","setExecutor(address,bool)":"1e1bff3f","swapDuration()":"b3404efd","symbol()":"95d89b41","systemDeposit()":"d53419a3","totalSupply()":"18160ddd","totalValuation()":"295b9300","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unitPrice()":"e73faa2d","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(uint256,address)":"00f714ce"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ExecuteTrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accumulatedAssetB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"canSystemDeposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_reinvestDuration\",\"type\":\"uint256\"}],\"name\":\"changeReinvestDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"executors\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAmountToSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_baseAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_quoteAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_registryAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_reinvestDuration\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastInvestedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerSwap\",\"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\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoteAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_baseAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_quoteAsset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_registryAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_reinvestDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinvestDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_allow\",\"type\":\"bool\"}],\"name\":\"setExecutor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"systemDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"deposit(uint256,address)\":{\"details\":\"Deposits assetA into the pool.\",\"params\":{\"amount\":\"The amount of assetA to deposit.\",\"to\":\"The address to receive pool tokens.\"}},\"initialize(string,string,address,address,address,uint256)\":{\"details\":\"Initializes the BaluniV1DCA contract.\",\"params\":{\"_baseAsset\":\"The address of the base asset.\",\"_name\":\"The name of the token.\",\"_quoteAsset\":\"The address of the quote asset.\",\"_registryAddress\":\"The address of the registry contract.\",\"_reinvestDuration\":\"The duration between reinvestments.\",\"_symbol\":\"The symbol of the token.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"pause pool, restricting certain operations\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause()\":{\"details\":\"unpause pool, enabling certain operations\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdraw(uint256,address)\":{\"details\":\"Withdraws assetA and assetB from the pool.\",\"params\":{\"shares\":\"The amount of pool tokens to redeem.\",\"to\":\"The address to receive assetA and assetB.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/vaults/BaluniV1DCAVault.sol\":\"BaluniV1DCAVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\\n    struct PausableStorage {\\n        bool _paused;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Pausable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\\n\\n    function _getPausableStorage() private pure returns (PausableStorage storage $) {\\n        assembly {\\n            $.slot := PausableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Emitted when the pause is triggered by `account`.\\n     */\\n    event Paused(address account);\\n\\n    /**\\n     * @dev Emitted when the pause is lifted by `account`.\\n     */\\n    event Unpaused(address account);\\n\\n    /**\\n     * @dev The operation failed because the contract is paused.\\n     */\\n    error EnforcedPause();\\n\\n    /**\\n     * @dev The operation failed because the contract is not paused.\\n     */\\n    error ExpectedPause();\\n\\n    /**\\n     * @dev Initializes the contract in unpaused state.\\n     */\\n    function __Pausable_init() internal onlyInitializing {\\n        __Pausable_init_unchained();\\n    }\\n\\n    function __Pausable_init_unchained() internal onlyInitializing {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is not paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    modifier whenNotPaused() {\\n        _requireNotPaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    modifier whenPaused() {\\n        _requirePaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns true if the contract is paused, and false otherwise.\\n     */\\n    function paused() public view virtual returns (bool) {\\n        PausableStorage storage $ = _getPausableStorage();\\n        return $._paused;\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is paused.\\n     */\\n    function _requireNotPaused() internal view virtual {\\n        if (paused()) {\\n            revert EnforcedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is not paused.\\n     */\\n    function _requirePaused() internal view virtual {\\n        if (!paused()) {\\n            revert ExpectedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Triggers stopped state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    function _pause() internal virtual whenNotPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = true;\\n        emit Paused(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns to normal state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    function _unpause() internal virtual whenPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n        emit Unpaused(_msgSender());\\n    }\\n}\\n\",\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1DCAVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1DCAVault {\\r\\n    function baseAsset() external view returns (address);\\r\\n    function quoteAsset() external view returns (address);\\r\\n    function registry() external view returns (address);\\r\\n    function lastDeposit() external view returns (uint256);\\r\\n    function deposit(uint256 amount, address to) external;\\r\\n    function withdraw(uint256 shares, address to) external;\\r\\n    function pause() external;\\r\\n    function unpause() external;\\r\\n    function totalValuation() external view returns (uint256);\\r\\n    function unitPrice() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0xc7fa68680d00716d3c09298f77099f8a8afe02bf6030819587408e5f152eb088\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/vaults/BaluniV1DCAVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1Oracle.sol';\\r\\nimport '../interfaces/IBaluniV1DCAVault.sol';\\r\\n\\r\\ncontract BaluniV1DCAVault is\\r\\n    Initializable,\\r\\n    UUPSUpgradeable,\\r\\n    OwnableUpgradeable,\\r\\n    ERC20Upgradeable,\\r\\n    ReentrancyGuardUpgradeable,\\r\\n    PausableUpgradeable,\\r\\n    IBaluniV1DCAVault\\r\\n{\\r\\n    address public baseAsset;\\r\\n    address public quoteAsset;\\r\\n\\r\\n    IBaluniV1Registry private _registry;\\r\\n    uint256 public accumulatedAssetB;\\r\\n\\r\\n    uint256 public lastDeposit;\\r\\n    uint256 public lastInvestedBlock;\\r\\n    uint256 public maxPerSwap;\\r\\n    uint256 public swapDuration;\\r\\n    uint256 public reinvestDuration;\\r\\n\\r\\n    mapping(address => bool) public executors;\\r\\n\\r\\n    event ExecuteTrade(address indexed sender, uint256 amountIn, uint256 amountOut);\\r\\n\\r\\n    /**\\r\\n     * @dev Initializes the BaluniV1DCA contract.\\r\\n     * @param _name The name of the token.\\r\\n     * @param _symbol The symbol of the token.\\r\\n     * @param _baseAsset The address of the base asset.\\r\\n     * @param _quoteAsset The address of the quote asset.\\r\\n     * @param _registryAddress The address of the registry contract.\\r\\n     * @param _reinvestDuration The duration between reinvestments.\\r\\n     */\\r\\n    function initialize(\\r\\n        string memory _name,\\r\\n        string memory _symbol,\\r\\n        address _baseAsset,\\r\\n        address _quoteAsset,\\r\\n        address _registryAddress,\\r\\n        uint256 _reinvestDuration\\r\\n    ) external initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ERC20_init(_name, _symbol);\\r\\n        __UUPSUpgradeable_init();\\r\\n        __ReentrancyGuard_init();\\r\\n        __Pausable_init();\\r\\n\\r\\n        baseAsset = _baseAsset;\\r\\n        quoteAsset = _quoteAsset;\\r\\n        _registry = IBaluniV1Registry(_registryAddress);\\r\\n\\r\\n        swapDuration = 360 * _reinvestDuration;\\r\\n        reinvestDuration = _reinvestDuration;\\r\\n        lastInvestedBlock = block.number;\\r\\n        maxPerSwap = 10000 * 10 ** ERC20Upgradeable(_baseAsset).decimals();\\r\\n    }\\r\\n\\r\\n    function reinitialize(\\r\\n        string memory _name,\\r\\n        string memory _symbol,\\r\\n        address _baseAsset,\\r\\n        address _quoteAsset,\\r\\n        address _registryAddress,\\r\\n        uint256 _reinvestDuration,\\r\\n        uint64 _version\\r\\n    ) external reinitializer(_version) {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ERC20_init(_name, _symbol);\\r\\n        __UUPSUpgradeable_init();\\r\\n        __ReentrancyGuard_init();\\r\\n        __Pausable_init();\\r\\n\\r\\n        baseAsset = _baseAsset;\\r\\n        quoteAsset = _quoteAsset;\\r\\n        _registry = IBaluniV1Registry(_registryAddress);\\r\\n\\r\\n        swapDuration = 360 * _reinvestDuration;\\r\\n        reinvestDuration = _reinvestDuration;\\r\\n        lastInvestedBlock = block.number;\\r\\n        maxPerSwap = 10000 * 10 ** ERC20Upgradeable(_baseAsset).decimals();\\r\\n    }\\r\\n\\r\\n    function changeReinvestDuration(uint256 _reinvestDuration) external onlyOwner {\\r\\n        reinvestDuration = _reinvestDuration;\\r\\n        swapDuration = 360 * _reinvestDuration;\\r\\n    }\\r\\n\\r\\n    modifier onlyExecutor() {\\r\\n        require(executors[msg.sender], 'executor: wut?');\\r\\n        _;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Internal function to authorize an upgrade to a new implementation contract.\\r\\n     * @param newImplementation The address of the new implementation contract.\\r\\n     * @notice This function can only be called by the contract owner.\\r\\n     */\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    /**\\r\\n     * @dev Deposits assetA into the pool.\\r\\n     * @param amount The amount of assetA to deposit.\\r\\n     * @param to The address to receive pool tokens.\\r\\n     */\\r\\n    function deposit(uint256 amount, address to) external nonReentrant whenNotPaused {\\r\\n        require(amount > 0, 'Amount must be greater than zero');\\r\\n\\r\\n        IERC20(baseAsset).transferFrom(msg.sender, address(this), amount);\\r\\n\\r\\n        address baluniRouter = _registry.getBaluniRouter();\\r\\n        address treasury = _registry.getTreasury();\\r\\n\\r\\n        uint hairCut = _haircut(amount);\\r\\n        uint hairCut2 = _haircut(hairCut);\\r\\n\\r\\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n        IERC20(baseAsset).transfer(treasury, hairCut2);\\r\\n\\r\\n        uint256 amountAfter = amount - hairCut;\\r\\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\\r\\n\\r\\n        // scale up amount\\r\\n        uint256 amountScaled = amountAfter * 10 ** (18 - baseDecimal);\\r\\n        _mint(to, amountScaled);\\r\\n\\r\\n        lastDeposit += amountAfter;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Withdraws assetA and assetB from the pool.\\r\\n     * @param shares The amount of pool tokens to redeem.\\r\\n     * @param to The address to receive assetA and assetB.\\r\\n     */\\r\\n    function withdraw(uint256 shares, address to) external nonReentrant whenNotPaused {\\r\\n        require(shares > 0, 'Shares must be greater than zero');\\r\\n        require(balanceOf(msg.sender) >= shares, 'Insufficient balance');\\r\\n\\r\\n        uint8 quoteDecimal = IERC20Metadata(quoteAsset).decimals();\\r\\n        uint256 quoteBalance = IERC20(quoteAsset).balanceOf(address(this));\\r\\n        uint256 baseBalance = IERC20(baseAsset).balanceOf(address(this));\\r\\n\\r\\n        // scale up totalDeposit and accumualteAssetB\\r\\n        quoteBalance *= 10 ** (18 - quoteDecimal);\\r\\n\\r\\n        uint256 withdrawAmountA = (shares * baseBalance) / totalSupply();\\r\\n        uint256 withdrawAmountB = (shares * quoteBalance) / totalSupply();\\r\\n\\r\\n        _burn(msg.sender, shares);\\r\\n\\r\\n        // scale down totalDeposit and accumualteAssetB\\r\\n        withdrawAmountB /= 10 ** (18 - quoteDecimal);\\r\\n\\r\\n        uint256 amountToSend = withdrawAmountA;\\r\\n\\r\\n        uint hairCut = _haircut(amountToSend);\\r\\n        IERC20(baseAsset).transfer(to, amountToSend - hairCut);\\r\\n\\r\\n        uint hairCut2 = _haircut(hairCut);\\r\\n        address baluniRouter = _registry.getBaluniRouter();\\r\\n        address treasury = _registry.getTreasury();\\r\\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n        IERC20(baseAsset).transfer(treasury, hairCut2);\\r\\n\\r\\n        hairCut = _haircut(withdrawAmountB);\\r\\n        IERC20(quoteAsset).transfer(to, withdrawAmountB - hairCut);\\r\\n        hairCut2 = _haircut(hairCut);\\r\\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n        IERC20(baseAsset).transfer(treasury, hairCut2);\\r\\n\\r\\n        lastDeposit -= amountToSend;\\r\\n    }\\r\\n\\r\\n    function systemDeposit() external nonReentrant whenNotPaused {\\r\\n        require((block.number - lastInvestedBlock) > reinvestDuration, 'wait till next reinvest cycle');\\r\\n\\r\\n        uint amtToSwap = getAmountToSwap(); // return 1e18\\r\\n        require(amtToSwap > 0, 'Nothing to swap');\\r\\n\\r\\n        IBaluniV1Swapper swapper = IBaluniV1Swapper(_registry.getBaluniSwapper());\\r\\n        IERC20(baseAsset).approve(address(swapper), amtToSwap);\\r\\n\\r\\n        uint256 quoteReceived = swapper.singleSwap(baseAsset, quoteAsset, amtToSwap, address(this));\\r\\n        lastInvestedBlock = block.number;\\r\\n\\r\\n        emit ExecuteTrade(msg.sender, amtToSwap, quoteReceived);\\r\\n    }\\r\\n\\r\\n    function getAmountToSwap() public view returns (uint) {\\r\\n        uint baseTokenBal = IERC20(baseAsset).balanceOf(address(this));\\r\\n        uint blockDiff = block.number - lastInvestedBlock;\\r\\n        uint toSwapQty = (baseTokenBal * blockDiff) / swapDuration;\\r\\n        return toSwapQty > maxPerSwap ? maxPerSwap : toSwapQty;\\r\\n    }\\r\\n\\r\\n    function canSystemDeposit() public view returns (bool) {\\r\\n        uint amtToSwap = getAmountToSwap();\\r\\n        return ((block.number - lastInvestedBlock) > reinvestDuration) && (amtToSwap > 0);\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev pause pool, restricting certain operations\\r\\n     */\\r\\n    function pause() external onlyOwner {\\r\\n        _pause();\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev unpause pool, enabling certain operations\\r\\n     */\\r\\n    function unpause() external onlyOwner {\\r\\n        _unpause();\\r\\n    }\\r\\n\\r\\n    function unitPrice() external view returns (uint256) {\\r\\n        if (totalSupply() == 0) return 0;\\r\\n\\r\\n        address USDC = _registry.getUSDC();\\r\\n        uint8 decimals = IERC20Metadata(USDC).decimals();\\r\\n        uint256 factor = 10 ** (18 - decimals);\\r\\n        uint256 valuationScaledUp = totalValuation() * factor;\\r\\n        uint256 unitPriceScaled = (valuationScaledUp * 1e18) / totalSupply();\\r\\n        return unitPriceScaled;\\r\\n    }\\r\\n\\r\\n    function registry() external view returns (address) {\\r\\n        return address(_registry);\\r\\n    }\\r\\n\\r\\n    function setExecutor(address _wallet, bool _allow) external onlyOwner {\\r\\n        executors[_wallet] = _allow;\\r\\n    }\\r\\n\\r\\n    /**\\r\\n     * @dev Calculates the fee amount based on the provided amount using the haircut formula.\\r\\n     * @param amount The amount to calculate the fee for.\\r\\n     * @return The fee amount.\\r\\n     */\\r\\n    function _haircut(uint256 amount) internal view returns (uint256) {\\r\\n        uint256 _BPS_FEE = _registry.getBPS_FEE();\\r\\n        uint256 _BPS_BASE = _registry.getBPS_BASE();\\r\\n        return (amount * _BPS_FEE) / _BPS_BASE;\\r\\n    }\\r\\n\\r\\n    function totalValuation() public view returns (uint256) {\\r\\n        IBaluniV1Oracle oracle = IBaluniV1Oracle(_registry.getBaluniOracle());\\r\\n        address USDC = _registry.getUSDC();\\r\\n        uint256 valuation = 0;\\r\\n\\r\\n        uint baseBalance = IERC20(baseAsset).balanceOf(address(this));\\r\\n        uint balanceQuote = IERC20(quoteAsset).balanceOf(address(this));\\r\\n\\r\\n        if (baseBalance == 0 && balanceQuote == 0) return 0;\\r\\n\\r\\n        valuation += oracle.convert(quoteAsset, USDC, balanceQuote);\\r\\n\\r\\n        if (baseAsset == USDC) {\\r\\n            valuation += baseBalance;\\r\\n        } else {\\r\\n            valuation += oracle.convert(baseAsset, USDC, baseBalance);\\r\\n        }\\r\\n\\r\\n        return valuation;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x699dcc80aa8e4dd6f573c87e0db42541e1ebdd8b96e3d317744d38cb652a247b\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":19772,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"baseAsset","offset":0,"slot":"0","type":"t_address"},{"astId":19774,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"quoteAsset","offset":0,"slot":"1","type":"t_address"},{"astId":19777,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"_registry","offset":0,"slot":"2","type":"t_contract(IBaluniV1Registry)4909"},{"astId":19779,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"accumulatedAssetB","offset":0,"slot":"3","type":"t_uint256"},{"astId":19781,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"lastDeposit","offset":0,"slot":"4","type":"t_uint256"},{"astId":19783,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"lastInvestedBlock","offset":0,"slot":"5","type":"t_uint256"},{"astId":19785,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"maxPerSwap","offset":0,"slot":"6","type":"t_uint256"},{"astId":19787,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"swapDuration","offset":0,"slot":"7","type":"t_uint256"},{"astId":19789,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"reinvestDuration","offset":0,"slot":"8","type":"t_uint256"},{"astId":19793,"contract":"contracts/vaults/BaluniV1DCAVault.sol:BaluniV1DCAVault","label":"executors","offset":0,"slot":"9","type":"t_mapping(t_address,t_bool)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/vaults/BaluniV1YearnVault.sol":{"BaluniV1YearnVault":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interest","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedAssetB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allTimeInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_assetA","type":"address"},{"internalType":"address","name":"_yearnVaultAddress","type":"address"},{"internalType":"address","name":"_assetB","type":"address"},{"internalType":"address","name":"_registryAddress","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"interestEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDeposit","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":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quoteAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_assetA","type":"address"},{"internalType":"address","name":"_yearnVaultAddress","type":"address"},{"internalType":"address","name":"_assetB","type":"address"},{"internalType":"address","name":"_registryAddress","type":"address"},{"internalType":"uint64","name":"_version","type":"uint64"}],"name":"reinitialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yearnVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"EnforcedPause()":[{"details":"The operation failed because the contract is paused."}],"ExpectedPause()":[{"details":"The operation failed because the contract is not paused."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Paused(address)":{"details":"Emitted when the pause is triggered by `account`."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."},"Unpaused(address)":{"details":"Emitted when the pause is lifted by `account`."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"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."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"allocate_unbounded":{"entryPoint":67,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_uint160":{"entryPoint":177,"id":null,"parameterSlots":1,"returnSlots":1},"constructor_BaluniV1YearnVault":{"entryPoint":77,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ContextUpgradeable":{"entryPoint":167,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ERC20Upgradeable":{"entryPoint":117,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IBaluniV1YearnVault":{"entryPoint":87,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20":{"entryPoint":147,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20Errors":{"entryPoint":127,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_IERC20Metadata":{"entryPoint":137,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_OwnableUpgradeable":{"entryPoint":157,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_PausableUpgradeable":{"entryPoint":97,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_ReentrancyGuardUpgradeable":{"entryPoint":107,"id":null,"parameterSlots":0,"returnSlots":0},"constructor_UUPSUpgradeable":{"entryPoint":243,"id":null,"parameterSlots":0,"returnSlots":0},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":231,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":219,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":191,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":188,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":73,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a06040523461003e5761001161004d565b610019610043565b6160d56101028239608051818181614801015281816148860152614a8101526160d590f35b610049565b60405190565b5f80fd5b610055610057565b565b61005f610061565b565b61006961006b565b565b610073610075565b565b61007d61007f565b565b610087610089565b565b610091610093565b565b61009b61009d565b565b6100a56100a7565b565b6100af6100f3565b565b60018060a01b031690565b90565b6100d36100ce6100d8926100b1565b6100bc565b6100b1565b90565b6100e4906100bf565b90565b6100f0906100db565b90565b6100fc306100e7565b60805256fe60806040526004361015610013575b610fdf565b61001d5f3561022b565b8062f714ce1461022657806306fdde0314610221578063095ea7b31461021c57806318160ddd1461021757806323b872dd14610212578063295b93001461020d578063313ce5671461020857806336b7710714610203578063374261ab146101fe5780633f4ba83a146101f95780634f1ef286146101f457806352d1902d146101ef5780635c975abb146101ea5780636560bc80146101e55780636e553f65146101e057806370a08231146101db578063715018a6146101d65780637b103999146101d15780638456cb59146101cc57806388696f62146101c75780638da5cb5b146101c257806395d89b41146101bd5780639db5df46146101b8578063a6f2ae3a146101b3578063a9059cbb146101ae578063ad3cb1cc146101a9578063cdf456e1146101a4578063dd62ed3e1461019f578063e56f2fe41461019a578063e73faa2d14610195578063f2fde38b14610190578063f7fde10f1461018b5763fdf262b70361000e57610faa565b610f66565b610f24565b610eef565b610eb5565b610deb565b610d89565b610d08565b610c5a565b610c27565b610bf2565b610bbd565b610b88565b610b4e565b6109cf565b61099a565b610945565b610910565b6108be565b610889565b610845565b610810565b6107c1565b61064f565b61061a565b6105e5565b610574565b610517565b6104e1565b610472565b61041a565b610391565b6102e3565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b61024f81610243565b0361025657565b5f80fd5b9050359061026782610246565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b61028b90610269565b90565b61029781610282565b0361029e57565b5f80fd5b905035906102af8261028e565b565b91906040838203126102d957806102cd6102d6925f860161025a565b936020016102a2565b90565b61023b565b5f0190565b34610312576102fc6102f63660046102b1565b90611fb6565b610304610231565b8061030e816102de565b0390f35b610237565b5f91031261032157565b61023b565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6103676103706020936103759361035e81610326565b9384809361032a565b95869101610333565b61033e565b0190565b61038e9160208201915f818403910152610348565b90565b346103c1576103a1366004610317565b6103bd6103ac6120f7565b6103b4610231565b91829182610379565b0390f35b610237565b91906040838203126103ee57806103e26103eb925f86016102a2565b9360200161025a565b90565b61023b565b151590565b610401906103f3565b9052565b9190610418905f602085019401906103f8565b565b3461044b576104476104366104303660046103c6565b9061211a565b61043e610231565b91829182610405565b0390f35b610237565b61045990610243565b9052565b9190610470905f60208501940190610450565b565b346104a257610482366004610317565b61049e61048d612161565b610495610231565b9182918261045d565b0390f35b610237565b90916060828403126104dc576104d96104c2845f85016102a2565b936104d081602086016102a2565b9360400161025a565b90565b61023b565b346105125761050e6104fd6104f73660046104a7565b91612180565b610505610231565b91829182610405565b0390f35b610237565b3461054757610527366004610317565b61054361053261222a565b61053a610231565b9182918261045d565b0390f35b610237565b60ff1690565b61055b9061054c565b9052565b9190610572905f60208501940190610552565b565b346105a457610584366004610317565b6105a061058f612734565b610597610231565b9182918261055f565b0390f35b610237565b1c90565b90565b6105c09060086105c593026105a9565b6105ad565b90565b906105d391546105b0565b90565b6105e260055f906105c8565b90565b34610615576105f5366004610317565b6106116106006105d6565b610608610231565b9182918261045d565b0390f35b610237565b3461064a5761062a366004610317565b61064661063561274a565b61063d610231565b9182918261045d565b0390f35b610237565b3461067d5761065f366004610317565b6106676128d5565b61066f610231565b80610679816102de565b0390f35b610237565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906106c19061033e565b810190811067ffffffffffffffff8211176106db57604052565b61068a565b906106f36106ec610231565b92836106b7565b565b67ffffffffffffffff81116107135761070f60209161033e565b0190565b61068a565b90825f939282370152565b90929192610738610733826106f5565b6106e0565b938185526020850190828401116107545761075292610718565b565b610686565b9080601f830112156107775781602061077493359101610723565b90565b610682565b9190916040818403126107bc57610795835f83016102a2565b92602082013567ffffffffffffffff81116107b7576107b49201610759565b90565b61023f565b61023b565b6107d56107cf36600461077c565b90612908565b6107dd610231565b806107e7816102de565b0390f35b90565b6107f7906107eb565b9052565b919061080e905f602085019401906107ee565b565b3461084057610820366004610317565b61083c61082b612983565b610833610231565b918291826107fb565b0390f35b610237565b3461087557610855366004610317565b6108716108606129bd565b610868610231565b91829182610405565b0390f35b610237565b61088660065f906105c8565b90565b346108b957610899366004610317565b6108b56108a461087a565b6108ac610231565b9182918261045d565b0390f35b610237565b346108ed576108d76108d13660046102b1565b906131c2565b6108df610231565b806108e9816102de565b0390f35b610237565b9060208282031261090b57610908915f016102a2565b90565b61023b565b346109405761093c61092b6109263660046108f2565b6131f0565b610933610231565b9182918261045d565b0390f35b610237565b3461097357610955366004610317565b61095d613264565b610965610231565b8061096f816102de565b0390f35b610237565b61098190610282565b9052565b9190610998905f60208501940190610978565b565b346109ca576109aa366004610317565b6109c66109b5613272565b6109bd610231565b91829182610985565b0390f35b610237565b346109fd576109df366004610317565b6109e76132ac565b6109ef610231565b806109f9816102de565b0390f35b610237565b67ffffffffffffffff8111610a2057610a1c60209161033e565b0190565b61068a565b90929192610a3a610a3582610a02565b6106e0565b93818552602085019082840111610a5657610a5492610718565b565b610686565b9080601f83011215610a7957816020610a7693359101610a25565b90565b610682565b67ffffffffffffffff1690565b610a9481610a7e565b03610a9b57565b5f80fd5b90503590610aac82610a8b565b565b60e081830312610b49575f81013567ffffffffffffffff8111610b445782610ad7918301610a5b565b92602082013567ffffffffffffffff8111610b3f5783610af8918401610a5b565b92610b0681604085016102a2565b92610b1482606083016102a2565b92610b3c610b2584608085016102a2565b93610b338160a086016102a2565b9360c001610a9f565b90565b61023f565b61023f565b61023b565b34610b8357610b6d610b61366004610aae565b95949094939193613878565b610b75610231565b80610b7f816102de565b0390f35b610237565b34610bb857610b98366004610317565b610bb4610ba3613889565b610bab610231565b91829182610985565b0390f35b610237565b34610bed57610bcd366004610317565b610be9610bd86138a7565b610be0610231565b91829182610379565b0390f35b610237565b34610c2257610c02366004610317565b610c1e610c0d6138c6565b610c15610231565b91829182610985565b0390f35b610237565b34610c5557610c37366004610317565b610c3f61391a565b610c47610231565b80610c51816102de565b0390f35b610237565b34610c8b57610c87610c76610c703660046103c6565b90613924565b610c7e610231565b91829182610405565b0390f35b610237565b90610ca2610c9d83610a02565b6106e0565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610cd86005610c90565b90610ce560208301610ca7565b565b610cef610cce565b90565b610cfa610ce7565b90565b610d05610cf2565b90565b34610d3857610d18366004610317565b610d34610d23610cfd565b610d2b610231565b91829182610379565b0390f35b610237565b73ffffffffffffffffffffffffffffffffffffffff1690565b610d66906008610d6b93026105a9565b610d3d565b90565b90610d799154610d56565b90565b610d865f80610d6e565b90565b34610db957610d99366004610317565b610db5610da4610d7c565b610dac610231565b91829182610985565b0390f35b610237565b9190604083820312610de65780610dda610de3925f86016102a2565b936020016102a2565b90565b61023b565b34610e1c57610e18610e07610e01366004610dbe565b9061395c565b610e0f610231565b9182918261045d565b0390f35b610237565b909160c082840312610eb0575f82013567ffffffffffffffff8111610eab5783610e4c918401610a5b565b92602083013567ffffffffffffffff8111610ea65781610e6d918501610a5b565b92610e7b82604083016102a2565b92610ea3610e8c84606085016102a2565b93610e9a81608086016102a2565b9360a0016102a2565b90565b61023f565b61023f565b61023b565b34610eea57610ed4610ec8366004610e21565b94939093929192613c73565b610edc610231565b80610ee6816102de565b0390f35b610237565b34610f1f57610eff366004610317565b610f1b610f0a613ca2565b610f12610231565b9182918261045d565b0390f35b610237565b34610f5257610f3c610f373660046108f2565b613eb9565b610f44610231565b80610f4e816102de565b0390f35b610237565b610f6360045f906105c8565b90565b34610f9657610f76366004610317565b610f92610f81610f57565b610f89610231565b9182918261045d565b0390f35b610237565b610fa760025f90610d6e565b90565b34610fda57610fba366004610317565b610fd6610fc5610f9b565b610fcd610231565b91829182610985565b0390f35b610237565b5f80fd5b90610ff591610ff0613ef0565b610fff565b610ffd613f9c565b565b906110119161100c613fb9565b61162b565b565b90565b90565b61102d61102861103292611013565b611016565b610243565b90565b5f7f536861726573206d7573742062652067726561746572207468616e207a65726f910152565b6110686020809261032a565b61107181611035565b0190565b61108a9060208101905f81830391015261105c565b90565b1561109457565b61109c610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806110cc60048201611075565b0390fd5b5f7f496e73756666696369656e742062616c616e6365000000000000000000000000910152565b611104601460209261032a565b61110d816110d0565b0190565b6111269060208101905f8183039101526110f7565b90565b1561113057565b611138610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061116860048201611111565b0390fd5b5f1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61119661119b9161116c565b611171565b90565b6111a8905461118a565b90565b6111bf6111ba6111c492610269565b611016565b610269565b90565b6111d0906111ab565b90565b6111dc906111c7565b90565b6111e8906111ab565b90565b6111f4906111df565b90565b611200906111c7565b90565b60e01b90565b6112128161054c565b0361121957565b5f80fd5b9050519061122a82611209565b565b9060208282031261124557611242915f0161121d565b90565b61023b565b611252610231565b3d5f823e3d90fd5b61126661126b9161116c565b610d3d565b90565b611278905461125a565b90565b611284906111c7565b90565b9050519061129482610246565b565b906020828203126112af576112ac915f01611287565b90565b61023b565b6112bd906111ab565b90565b6112c9906112b4565b90565b6112d5906111c7565b90565b90565b6112ef6112ea6112f4926112d8565b611016565b61054c565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6113306113369161054c565b9161054c565b90039060ff821161134357565b6112f7565b6113519061054c565b604d811161135f57600a0a90565b6112f7565b61137361137991939293610243565b92610243565b91611385838202610243565b92818404149015171561139457565b6112f7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6113d26113d891610243565b91610243565b9081156113e3570490565b611399565b604090611411611418949695939661140760608401985f850190610450565b6020830190610978565b0190610978565b565b61142961142f91939293610243565b92610243565b820391821161143a57565b6112f7565b611448816103f3565b0361144f57565b5f80fd5b905051906114608261143f565b565b9060208282031261147b57611478915f01611453565b90565b61023b565b9160206114a192949361149a60408201965f830190610978565b0190610450565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b6114c86114cd9161116c565b6114a3565b90565b6114da90546114bc565b90565b6114e6906111c7565b90565b905051906114f68261028e565b565b906020828203126115115761150e915f016114e9565b90565b61023b565b5f7f4661696c656420746f207472616e736665722071756f74654173736574000000910152565b61154a601d60209261032a565b61155381611516565b0190565b61156c9060208101905f81830391015261153d565b90565b1561157657565b61157e610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806115ae60048201611557565b0390fd5b5f1b90565b906115e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916115b2565b9181191691161790565b6116006115fb61160592610243565b611016565b610243565b90565b90565b9061162061161b611627926115ec565b611608565b82546115b7565b9055565b6116478161164161163b5f611019565b91610243565b1161108d565b61166c611653336131f0565b61166561165f84610243565b91610243565b1015611129565b6116a9602061169361168e611689611684600161119e565b6111d3565b6111eb565b6111f7565b63313ce567906116a1610231565b938492611203565b825281806116b9600482016102de565b03915afa908115611fb1575f91611f83575b509061170260206116ec6116e76116e2600261126e565b6111eb565b6111f7565b63313ce567906116fa610231565b938492611203565b82528180611712600482016102de565b03915afa908115611f7e575f91611f50575b509061176f602061173d611738600161119e565b6111d3565b6370a082319061176461174f3061127b565b92611758610231565b95869485938493611203565b835260048301610985565b03915afa908115611f4b575f91611f1d575b50926117d460206117a261179d611798600261126e565b6112c0565b6112cc565b6370a08231906117c96117b43061127b565b926117bd610231565b95869485938493611203565b835260048301610985565b03915afa908115611f18575f91611eea575b509061183860206118066118016117fc5f61126e565b6112c0565b6112cc565b6370a082319061182d6118183061127b565b92611821610231565b95869485938493611203565b835260048301610985565b03915afa908115611ee5575f91611eb7575b509460128290611859906112db565b9061186391611324565b61186c90611348565b61187591611364565b9160128590611883906112db565b9061188d91611324565b61189690611348565b61189f91611364565b9183906118ab91611364565b6118b3612161565b6118bc916113c6565b9183906118c891611364565b6118d0612161565b6118d9916113c6565b9233906118e591614003565b60126118f0906112db565b906118fa91611324565b61190390611348565b61190c916113c6565b916012611918906112db565b9061192291611324565b61192b90611348565b611934916113c6565b9161193f600161119e565b611948906111d3565b63ba087652306119579061127b565b90306119629061127b565b9461196b610231565b9586936119788594611203565b84526004840192611988936113e8565b03815a6020945f91f1918215611eb2576119ef92611e86575b5060206119bd6119b86119b35f61126e565b6112c0565b6112cc565b6370a08231906119e46119cf3061127b565b926119d8610231565b96879485938493611203565b835260048301610985565b03915afa8015611e8157611a0a925f91611e53575b5061141a565b80611a1d611a175f611019565b91610243565b11611b80575b5080611a37611a315f611019565b91610243565b11611b67575b5050611a51611a4c600161119e565b6111d3565b611aa06307a2d13a916020611a6e611a69600161119e565b6111d3565b6370a0823190611a95611a803061127b565b92611a89610231565b96879485938493611203565b835260048301610985565b03915afa908115611b6257611add936020935f93611b2f575b50611ad290611ac6610231565b95869485938493611203565b83526004830161045d565b03915afa8015611b2a57611afa915f91611afc575b50600561160b565b565b611b1d915060203d8111611b23575b611b1581836106b7565b810190611296565b5f611af2565b503d611b0b565b61124a565b611ad2919350611b5490853d8111611b5b575b611b4c81836106b7565b810190611296565b9290611ab9565b503d611b42565b61124a565b611b7991611b74916141a8565b61156f565b5f80611a3d565b611b8981614082565b906020611ba5611ba0611b9b5f61126e565b6112c0565b6112cc565b9163a9059cbb92611bd45f611bbc8994889061141a565b95611bdf611bc8610231565b97889687958694611203565b845260048401611480565b03925af18015611e4e57611e22575b50611bf881614082565b611c256020611c0f611c0a60036114d0565b6114dd565b6304cc732590611c1d610231565b938492611203565b82528180611c35600482016102de565b03915afa908115611e1d575f91611def575b5090611c766020611c60611c5b60036114d0565b6114dd565b633b19e84a90611c6e610231565b938492611203565b82528180611c86600482016102de565b03915afa8015611dea576020915f91611dbd575b5093611cb5611cb0611cab5f61126e565b6112c0565b6112cc565b611ce25f611cca63a9059cbb9794879061141a565b96611ced611cd6610231565b98899687958694611203565b845260048401611480565b03925af1918215611db857602092611d8d575b50611d1a611d15611d105f61126e565b6112c0565b6112cc565b611d3d5f63a9059cbb959395611d48611d31610231565b97889687958694611203565b845260048401611480565b03925af18015611d8857611d5c575b611a23565b611d7c9060203d8111611d81575b611d7481836106b7565b810190611462565b611d57565b503d611d6a565b61124a565b611dac90833d8111611db1575b611da481836106b7565b810190611462565b611d00565b503d611d9a565b61124a565b611ddd9150823d8111611de3575b611dd581836106b7565b8101906114f8565b5f611c9a565b503d611dcb565b61124a565b611e10915060203d8111611e16575b611e0881836106b7565b8101906114f8565b5f611c47565b503d611dfe565b61124a565b611e429060203d8111611e47575b611e3a81836106b7565b810190611462565b611bee565b503d611e30565b61124a565b611e74915060203d8111611e7a575b611e6c81836106b7565b810190611296565b5f611a04565b503d611e62565b61124a565b611ea69060203d8111611eab575b611e9e81836106b7565b810190611296565b6119a1565b503d611e94565b61124a565b611ed8915060203d8111611ede575b611ed081836106b7565b810190611296565b5f61184a565b503d611ec6565b61124a565b611f0b915060203d8111611f11575b611f0381836106b7565b810190611296565b5f6117e6565b503d611ef9565b61124a565b611f3e915060203d8111611f44575b611f3681836106b7565b810190611296565b5f611781565b503d611f2c565b61124a565b611f71915060203d8111611f77575b611f6981836106b7565b81019061122c565b5f611724565b503d611f5f565b61124a565b611fa4915060203d8111611faa575b611f9c81836106b7565b81019061122c565b5f6116cb565b503d611f92565b61124a565b90611fc091610fe3565b565b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b9060016002830492168015612014575b602083101461200f57565b611fc7565b91607f1691612004565b60209181520190565b5f5260205f2090565b905f929180549061204a61204383611ff4565b809461201e565b916001811690815f146120a15750600114612065575b505050565b6120729192939450612027565b915f925b81841061208957505001905f8080612060565b60018160209295939554848601520191019290612076565b92949550505060ff19168252151560200201905f8080612060565b906120c691612030565b90565b906120e96120e2926120d9610231565b938480926120bc565b03836106b7565b565b6120f4906120c9565b90565b6120ff611fc2565b50612113600361210d6144a4565b016120eb565b90565b5f90565b61213791612126612116565b5061212f6144c8565b9190916144d5565b600190565b5f90565b61214c6121519161116c565b6105ad565b90565b61215e9054612140565b90565b61216961213c565b5061217d60026121776144a4565b01612154565b90565b916121aa9261218d612116565b506121a26121996144c8565b82908491614525565b9190916145f0565b600190565b6121b8906111ab565b90565b6121c4906121af565b90565b6121d0906111c7565b90565b6040906121fc61220394969593966121f260608401985f850190610978565b6020830190610978565b0190610450565b565b61221461221a91939293610243565b92610243565b820180921161222557565b6112f7565b61223261213c565b50612260602061224a61224560036114d0565b6114dd565b63bb3ba04c90612258610231565b938492611203565b82528180612270600482016102de565b03915afa801561272b5761228b915f916126fd575b506121bb565b6122b860206122a261229d60036114d0565b6114dd565b631bf01e9b906122b0610231565b938492611203565b825281806122c8600482016102de565b03915afa9081156126f8575f916126ca575b50906122e55f611019565b61232e60206122fc6122f7600161119e565b6111d3565b6370a082319061232361230e3061127b565b92612317610231565b95869485938493611203565b835260048301610985565b03915afa9081156126c557612381916020915f91612698575b5061235a612355600161119e565b6111d3565b6123766307a2d13a61236a610231565b95869485938493611203565b83526004830161045d565b03915afa908115612693575f91612665575b506123e560206123b36123ae6123a9600261126e565b6112c0565b6112cc565b6370a08231906123da6123c53061127b565b926123ce610231565b95869485938493611203565b835260048301610985565b03915afa908115612660575f91612632575b506124015f61126e565b61241361240d87610282565b91610282565b03612596575b6020612424856121c7565b63248391ff90612459612437600261126e565b926124646124445f61126e565b9661244d610231565b97889687958695611203565b8552600485016121d3565b03915afa80156125915761248893612483925f92612561575b50612205565b612205565b9161249161274a565b9161249b5f61126e565b6124ad6124a784610282565b91610282565b036124c3575b5050906124c09190612205565b90565b6124ce6020916121c7565b9163248391ff926124fb6124e15f61126e565b9294612506876124ef610231565b97889687958695611203565b8552600485016121d3565b03915afa801561255c576124c093612525925f9261252c575b50612205565b915f6124b3565b61254e91925060203d8111612555575b61254681836106b7565b810190611296565b905f61251f565b503d61253c565b61124a565b61258391925060203d811161258a575b61257b81836106b7565b810190611296565b905f61247d565b503d612571565b61124a565b916125a0846121c7565b90602063248391ff926125b25f61126e565b906125d089956125db886125c4610231565b98899687958695611203565b8552600485016121d3565b03915afa90811561262d576125f7925f926125fd575b50612205565b91612419565b61261f91925060203d8111612626575b61261781836106b7565b810190611296565b905f6125f1565b503d61260d565b61124a565b612653915060203d8111612659575b61264b81836106b7565b810190611296565b5f6123f7565b503d612641565b61124a565b612686915060203d811161268c575b61267e81836106b7565b810190611296565b5f612393565b503d612674565b61124a565b6126b89150823d81116126be575b6126b081836106b7565b810190611296565b5f612347565b503d6126a6565b61124a565b6126eb915060203d81116126f1575b6126e381836106b7565b8101906114f8565b5f6122da565b503d6126d9565b61124a565b61271e915060203d8111612724575b61271681836106b7565b8101906114f8565b5f612285565b503d61270c565b61124a565b5f90565b61273c612730565b5061274760126112db565b90565b61275261213c565b50612765612760600161119e565b6111d3565b6127b46307a2d13a91602061278261277d600161119e565b6111d3565b6370a08231906127a96127943061127b565b9261279d610231565b96879485938493611203565b835260048301610985565b03915afa9081156128b4576127f1936020935f93612881575b506127e6906127da610231565b95869485938493611203565b83526004830161045d565b03915afa90811561287c575f9161284e575b508061282061281a6128156005612154565b610243565b91610243565b115f1461283f5761283b906128356005612154565b9061141a565b5b90565b506128495f611019565b61283c565b61286f915060203d8111612875575b61286781836106b7565b810190611296565b5f612803565b503d61285d565b61124a565b6127e69193506128a690853d81116128ad575b61289e81836106b7565b810190611296565b92906127cd565b503d612894565b61124a565b6128c16146cd565b6128c96128cb565b565b6128d36147da565b565b6128dd6128b9565b565b906128f1916128ec6147f0565b6128f3565b565b9061290691612901816148c2565b614932565b565b90612912916128df565b565b5f90565b61292990612924614a70565b612977565b90565b90565b61294361293e6129489261292c565b6115b2565b6107eb565b90565b6129747f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61292f565b90565b5061298061294b565b90565b61299361298e612914565b612918565b90565b60ff1690565b6129a86129ad9161116c565b612996565b90565b6129ba905461299c565b90565b6129c5612116565b506129d85f6129d2614aee565b016129b0565b90565b906129ed916129e8613ef0565b6129f7565b6129f5613f9c565b565b90612a0991612a04613fb9565b612ac9565b565b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b612a3e6020809261032a565b612a4781612a0b565b0190565b612a609060208101905f818303910152612a32565b90565b15612a6a57565b612a72610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612aa260048201612a4b565b0390fd5b916020612ac7929493612ac060408201965f830190610450565b0190610978565b565b612ae581612adf612ad95f611019565b91610243565b11612a63565b612aed614b2e565b612b06612b01612afc5f61126e565b6112c0565b6112cc565b60206323b872dd913390612b365f612b1d3061127b565b95612b4188612b2a610231565b98899788968795611203565b8552600485016121d3565b03925af180156131bd57613191575b50612b7e6020612b68612b6360036114d0565b6114dd565b6304cc732590612b76610231565b938492611203565b82528180612b8e600482016102de565b03915afa90811561318c575f9161315e575b50612bce6020612bb8612bb360036114d0565b6114dd565b633b19e84a90612bc6610231565b938492611203565b82528180612bde600482016102de565b03915afa908115613159575f9161312b575b5091612bfb81614082565b91612c0583614082565b6020612c20612c1b612c165f61126e565b6112c0565b6112cc565b63a9059cbb9390612c4e5f612c3689879061141a565b96612c59612c42610231565b98899687958694611203565b845260048401611480565b03925af1918215613126576020926130fb575b50612c86612c81612c7c5f61126e565b6112c0565b6112cc565b612ca95f63a9059cbb979397612cb4612c9d610231565b998a9687958694611203565b845260048401611480565b03925af19283156130f657612cce936130ca575b5061141a565b90612ce8612ce3612cde5f61126e565b6112c0565b6112cc565b602063095ea7b391612d02612cfd600161119e565b6111d3565b90612d205f8795612d2b612d14610231565b97889687958694611203565b845260048401611480565b03925af180156130c557613099575b50612d4d612d48600161119e565b6111d3565b916020636e553f65938290612d7d5f612d653061127b565b97612d88612d71610231565b998a9687958694611203565b845260048401612aa6565b03925af192831561309457612dce93613068575b506020612db8612db3612dae5f61126e565b6111eb565b6111f7565b63313ce56790612dc6610231565b958692611203565b82528180612dde600482016102de565b03915afa801561306357612e2e935f91613035575b506020612e18612e13612e0e612e09600161119e565b6111d3565b6111eb565b6111f7565b63313ce56790612e26610231565b968792611203565b82528180612e3e600482016102de565b03915afa801561303057612ea8612eb393612ead92612eb9975f91613002575b509380612e73612e6d8761054c565b9161054c565b115f14612fe157612e91612e8c612e9793928790611324565b611348565b906113c6565b5b92612ea360126112db565b611324565b611348565b90611364565b90614d71565b612ecb612ec6600161119e565b6111d3565b612f1a6307a2d13a916020612ee8612ee3600161119e565b6111d3565b6370a0823190612f0f612efa3061127b565b92612f03610231565b96879485938493611203565b835260048301610985565b03915afa908115612fdc57612f57936020935f93612fa9575b50612f4c90612f40610231565b95869485938493611203565b83526004830161045d565b03915afa8015612fa457612f74915f91612f76575b50600561160b565b565b612f97915060203d8111612f9d575b612f8f81836106b7565b810190611296565b5f612f6c565b503d612f85565b61124a565b612f4c919350612fce90853d8111612fd5575b612fc681836106b7565b810190611296565b9290612f33565b503d612fbc565b61124a565b612ff7612ff2612ffd939287611324565b611348565b90611364565b612e98565b613023915060203d8111613029575b61301b81836106b7565b81019061122c565b5f612e5e565b503d613011565b61124a565b613056915060203d811161305c575b61304e81836106b7565b81019061122c565b5f612df3565b503d613044565b61124a565b6130889060203d811161308d575b61308081836106b7565b810190611296565b612d9c565b503d613076565b61124a565b6130b99060203d81116130be575b6130b181836106b7565b810190611462565b612d3a565b503d6130a7565b61124a565b6130ea9060203d81116130ef575b6130e281836106b7565b810190611462565b612cc8565b503d6130d8565b61124a565b61311a90833d811161311f575b61311281836106b7565b810190611462565b612c6c565b503d613108565b61124a565b61314c915060203d8111613152575b61314481836106b7565b8101906114f8565b5f612bf0565b503d61313a565b61124a565b61317f915060203d8111613185575b61317781836106b7565b8101906114f8565b5f612ba0565b503d61316d565b61124a565b6131b19060203d81116131b6575b6131a981836106b7565b810190611462565b612b50565b503d61319f565b61124a565b906131cc916129db565b565b6131d7906111c7565b90565b906131e4906131ce565b5f5260205260405f2090565b61320f613214916131ff61213c565b505f6132096144a4565b016131da565b612154565b90565b61321f6146cd565b613227613251565b565b61323d61323861324292611013565b611016565b610269565b90565b61324e90613229565b90565b61326261325d5f613245565b614def565b565b61326c613217565b565b5f90565b61327a61326e565b5061328d61328860036114d0565b6114dd565b90565b6132986146cd565b6132a06132a2565b565b6132aa614ec5565b565b6132b4613290565b565b60401c90565b6132c86132cd916132b6565b612996565b90565b6132da90546132bc565b90565b67ffffffffffffffff1690565b6132f66132fb9161116c565b6132dd565b90565b61330890546132ea565b90565b9061331e67ffffffffffffffff916115b2565b9181191691161790565b61333c61333761334192610a7e565b611016565b610a7e565b90565b90565b9061335c61335761336392613328565b613344565b825461330b565b9055565b60401b90565b9061338168ff000000000000000091613367565b9181191691161790565b613394906103f3565b90565b90565b906133af6133aa6133b69261338b565b613397565b825461336d565b9055565b6133c390610a7e565b9052565b91906133da905f602085019401906133ba565b565b9295919394909482966133ed614ecf565b956133f95f88016132d0565b80156134aa575b61346e576134339761342a966134188b5f8b01613347565b61342560015f8b0161339a565b61377d565b5f80910161339a565b6134697fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291613460610231565b918291826133c7565b0390a1565b613476610231565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806134a6600482016102de565b0390fd5b506134b65f88016132fe565b6134c86134c28b610a7e565b91610a7e565b1015613400565b906134ee73ffffffffffffffffffffffffffffffffffffffff916115b2565b9181191691161790565b90565b9061351061350b613517926131ce565b6134f8565b82546134cf565b9055565b613524906111ab565b90565b6135309061351b565b90565b61353c9061351b565b90565b90565b9061355761355261355e92613533565b61353f565b82546134cf565b9055565b61356b906111ab565b90565b61357790613562565b90565b61358390613562565b90565b90565b9061359e6135996135a59261357a565b613586565b82546134cf565b9055565b5f7f496e76616c696420617373657441206164647265737300000000000000000000910152565b6135dd601660209261032a565b6135e6816135a9565b0190565b6135ff9060208101905f8183039101526135d0565b90565b1561360957565b613611610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613641600482016135ea565b0390fd5b5f7f496e76616c696420596561726e205661756c7420616464726573730000000000910152565b613679601b60209261032a565b61368281613645565b0190565b61369b9060208101905f81830391015261366c565b90565b156136a557565b6136ad610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806136dd60048201613686565b0390fd5b5f7f496e76616c696420617373657442206164647265737300000000000000000000910152565b613715601660209261032a565b61371e816136e1565b0190565b6137379060208101905f818303910152613708565b90565b1561374157565b613749610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061377960048201613722565b0390fd5b6137e596506137d9936137c66137de9796946137a86137d2956137cb956137a333614f11565b614f3c565b6137b0614f52565b6137b8614f78565b6137c0614f9e565b5f6134fb565b613527565b6001613542565b60026134fb565b61356e565b6003613589565b6138126137f15f61126e565b61380b6138056138005f613245565b610282565b91610282565b1415613602565b613848613827613822600161119e565b6111d3565b61384161383b6138365f613245565b610282565b91610282565b141561369e565b613876613855600261126e565b61386f6138696138645f613245565b610282565b91610282565b141561373a565b565b906138879695949392916133dc565b565b61389161326e565b506138a45f61389e614fa8565b0161126e565b90565b6138af611fc2565b506138c360046138bd6144a4565b016120eb565b90565b6138ce61326e565b506138e16138dc600161119e565b6111d3565b90565b6138ec613ef0565b6138f46138fe565b6138fc613f9c565b565b613906613fb9565b61390e613910565b565b6139186151af565b565b6139226138e4565b565b61394191613930612116565b506139396144c8565b9190916145f0565b600190565b90613950906131ce565b5f5260205260405f2090565b61398a916139806139859261396f61213c565b50600161397a6144a4565b01613946565b6131da565b612154565b90565b6139a161399c6139a692611013565b611016565b610a7e565b90565b90565b6139c06139bb6139c5926139a9565b611016565b610a7e565b90565b6139d1906111c7565b90565b6139dd906139ac565b9052565b91906139f4905f602085019401906139d4565b565b92949194939093613a05614ecf565b95613a1a613a145f89016132d0565b156103f3565b95613a265f89016132fe565b80613a39613a335f61398d565b91610a7e565b1480613b73575b90613a54613a4e60016139ac565b91610a7e565b1480613b4b575b613a669091156103f3565b9081613b3a575b50613afe57613a9695613a8b613a8360016139ac565b5f8b01613347565b87613aec575b613b7a565b613a9e575b50565b613aab905f80910161339a565b6001613ae37fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291613ada610231565b918291826139e1565b0390a15f613a9b565b613af960015f8b0161339a565b613a91565b613b06610231565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613b36600482016102de565b0390fd5b613b459150156103f3565b5f613a6d565b50613a66613b58306139c8565b3b613b6b613b655f611019565b91610243565b149050613a5b565b5087613a40565b613bc6613be09694613bc1613bd495613ba3613bd99996613bcd96613b9e33614f11565b614f3c565b613bab614f52565b613bb3614f78565b613bbb614f9e565b5f6134fb565b613527565b6001613542565b60026134fb565b61356e565b6003613589565b613c0d613bec5f61126e565b613c06613c00613bfb5f613245565b610282565b91610282565b1415613602565b613c43613c22613c1d600161119e565b6111d3565b613c3c613c36613c315f613245565b610282565b91610282565b141561369e565b613c71613c50600261126e565b613c6a613c64613c5f5f613245565b610282565b91610282565b141561373a565b565b90613c8195949392916139f6565b565b90565b613c9a613c95613c9f92613c83565b611016565b610243565b90565b613caa61213c565b50613cb3612161565b613cc5613cbf5f611019565b91610243565b14613e2857613cf76020613ce1613cdc60036114d0565b6114dd565b631bf01e9b90613cef610231565b938492611203565b82528180613d07600482016102de565b03915afa908115613e2357613d31613d2c613d47936020935f91613df6575b506111eb565b6111f7565b63313ce56790613d3f610231565b938492611203565b82528180613d57600482016102de565b03915afa8015613df157613d9b613d8e613d89613db293613dc0955f91613dc3575b50613d8460126112db565b611324565b611348565b613d9661222a565b611364565b613dac670de0b6b3a7640000613c86565b90611364565b613dba612161565b906113c6565b90565b613de4915060203d8111613dea575b613ddc81836106b7565b81019061122c565b5f613d79565b503d613dd2565b61124a565b613e169150843d8111613e1c575b613e0e81836106b7565b8101906114f8565b5f613d26565b503d613e04565b61124a565b613e315f611019565b90565b613e4590613e406146cd565b613e47565b565b80613e62613e5c613e575f613245565b610282565b91610282565b14613e7257613e7090614def565b565b613eb5613e7e5f613245565b613e86610231565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b613ec290613e34565b565b90565b613edb613ed6613ee092613ec4565b611016565b610243565b90565b613eed6002613ec7565b90565b613ef861566b565b613f035f8201612154565b613f1c613f16613f11613ee3565b610243565b91610243565b14613f3757613f35905f613f2e613ee3565b910161160b565b565b613f3f610231565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280613f6f600482016102de565b0390fd5b613f87613f82613f8c926139a9565b611016565b610243565b90565b613f996001613f73565b90565b613fb7613fa761566b565b5f613fb0613f8f565b910161160b565b565b613fc16129bd565b613fc757565b613fcf610231565b7fd93c066500000000000000000000000000000000000000000000000000000000815280613fff600482016102de565b0390fd5b908161401f6140196140145f613245565b610282565b91610282565b1461403b5761403991906140325f613245565b909161569d565b565b61407e6140475f613245565b61404f610231565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61408a61213c565b506140b860206140a261409d60036114d0565b6114dd565b6385462d6f906140b0610231565b938492611203565b825281806140c8600482016102de565b03915afa9081156141a3575f91614175575b509061410960206140f36140ee60036114d0565b6114dd565b634f4608a290614101610231565b938492611203565b82528180614119600482016102de565b03915afa9283156141705761413f9361413a925f91614142575b5092611364565b6113c6565b90565b614163915060203d8111614169575b61415b81836106b7565b810190611296565b5f614133565b503d614151565b61124a565b614196915060203d811161419c575b61418e81836106b7565b810190611296565b5f6140da565b503d614184565b61124a565b906141b1612116565b5060206141bd83614082565b926141db6141d4826141cf6004612154565b61141a565b600461160b565b6141f56141f06141eb600261126e565b6112c0565b6112cc565b6142225f61420a63a9059cbb9694889061141a565b9561422d614216610231565b97889687958694611203565b845260048401611480565b03925af1801561449f57614473575b5061424681614082565b614273602061425d61425860036114d0565b6114dd565b6304cc73259061426b610231565b938492611203565b82528180614283600482016102de565b03915afa90811561446e575f91614440575b50906142c460206142ae6142a960036114d0565b6114dd565b633b19e84a906142bc610231565b938492611203565b825281806142d4600482016102de565b03915afa801561443b576020915f9161440e575b50936143046142ff6142fa600261126e565b6112c0565b6112cc565b6143315f61431963a9059cbb9794879061141a565b9661433c614325610231565b98899687958694611203565b845260048401611480565b03925af1918215614409576020926143de575b5061436a614365614360600261126e565b6112c0565b6112cc565b61438d5f63a9059cbb959395614398614381610231565b97889687958694611203565b845260048401611480565b03925af180156143d9576143ad575b50600190565b6143cd9060203d81116143d2575b6143c581836106b7565b810190611462565b6143a7565b503d6143bb565b61124a565b6143fd90833d8111614402575b6143f581836106b7565b810190611462565b61434f565b503d6143eb565b61124a565b61442e9150823d8111614434575b61442681836106b7565b8101906114f8565b5f6142e8565b503d61441c565b61124a565b614461915060203d8111614467575b61445981836106b7565b8101906114f8565b5f614295565b503d61444f565b61124a565b6144939060203d8111614498575b61448b81836106b7565b810190611462565b61423c565b503d614481565b61124a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b6144d061326e565b503390565b916144e39291600192615843565b565b60409061450e614515949695939661450460608401985f850190610978565b6020830190610450565b0190610450565b565b906145229103610243565b90565b92919261453381839061395c565b90816145676145617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610243565b91610243565b03614574575b5050509050565b8161458761458187610243565b91610243565b106145ad576145a4939461459c919392614517565b905f92615843565b805f808061456d565b506145ec849291926145bd610231565b9384937ffb8f41b2000000000000000000000000000000000000000000000000000000008552600485016144e5565b0390fd5b918261460c6146066146015f613245565b610282565b91610282565b14614686578161462c6146266146215f613245565b610282565b91610282565b1461463f5761463d9291909161569d565b565b61468261464b5f613245565b614653610231565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6146c96146925f613245565b61469a610231565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6146d5613889565b6146ee6146e86146e36144c8565b610282565b91610282565b036146f557565b6147376147006144c8565b614708610231565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61474361599d565b61474b614783565b565b9061475960ff916115b2565b9181191691161790565b9061477861477361477f9261338b565b613397565b825461474d565b9055565b61479761478e614aee565b5f809101614763565b61479f6144c8565b6147d57f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa916147cc610231565b91829182610985565b0390a1565b6147e261473b565b565b6147ed906111c7565b90565b6147f9306147e4565b61482b6148257f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b148015614875575b61483957565b614841610231565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280614871600482016102de565b0390fd5b5061487e6159f0565b6148b06148aa7f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b1415614833565b506148c06146cd565b565b6148cb906148b7565b565b6148d6906111ab565b90565b6148e2906148cd565b90565b6148ee906111c7565b90565b6148fa816107eb565b0361490157565b5f80fd5b90505190614912826148f1565b565b9060208282031261492d5761492a915f01614905565b90565b61023b565b9190614960602061494a614945866148d9565b6148e5565b6352d1902d90614958610231565b938492611203565b82528180614970600482016102de565b03915afa80915f92614a40575b50155f146149d157505090600161499257505b565b6149cd9061499e610231565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b92836149ec6149e66149e161294b565b6107eb565b916107eb565b03614a01576149fc929350615a1a565b614990565b614a3c84614a0d610231565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016107fb565b0390fd5b614a6291925060203d8111614a69575b614a5a81836106b7565b810190614914565b905f61497d565b503d614a50565b614a79306147e4565b614aab614aa57f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b03614ab257565b614aba610231565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280614aea600482016102de565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b614b26614b21614b2b92613ec4565b611016565b61054c565b90565b614b40614b3b600161119e565b6111d3565b614b8f6307a2d13a916020614b5d614b58600161119e565b6111d3565b6370a0823190614b84614b6f3061127b565b92614b78610231565b96879485938493611203565b835260048301610985565b03915afa908115614d6c57614bcc936020935f93614d39575b50614bc190614bb5610231565b95869485938493611203565b83526004830161045d565b03915afa908115614d34575f91614d06575b5080614bfb614bf5614bf06005612154565b610243565b91610243565b115f14614cf757614c1690614c106005612154565b9061141a565b5b614c4b6020614c35614c30614c2b5f61126e565b6111eb565b6111f7565b63313ce56790614c43610231565b938492611203565b82528180614c5b600482016102de565b03915afa8015614cf257614ca4614ca991614caf935f91614cc4575b50614c9f614c99614c94600193614c8e6002614b12565b90611324565b611348565b91613f73565b611364565b610243565b91610243565b11614cb7575b565b614cbf6151af565b614cb5565b614ce5915060203d8111614ceb575b614cdd81836106b7565b81019061122c565b5f614c77565b503d614cd3565b61124a565b50614d015f611019565b614c17565b614d27915060203d8111614d2d575b614d1f81836106b7565b810190611296565b5f614bde565b503d614d15565b61124a565b614bc1919350614d5e90853d8111614d65575b614d5681836106b7565b810190611296565b9290614ba8565b503d614d4c565b61124a565b80614d8c614d86614d815f613245565b610282565b91610282565b14614da857614da691614d9e5f613245565b91909161569d565b565b614deb614db45f613245565b614dbc610231565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b614df7614fa8565b614e0f614e055f830161126e565b915f8491016134fb565b90614e43614e3d7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936131ce565b916131ce565b91614e4c610231565b80614e56816102de565b0390a3565b614e63613fb9565b614e6b614e6d565b565b614e82614e78614aee565b5f60019101614763565b614e8a6144c8565b614ec07f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891614eb7610231565b91829182610985565b0390a1565b614ecd614e5b565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b614f0490614eff615aa3565b614f06565b565b614f0f90615b7b565b565b614f1a90614ef3565b565b90614f2e91614f29615aa3565b614f30565b565b90614f3a91615dbe565b565b90614f4691614f1c565b565b614f50615aa3565b565b614f5a614f48565b565b614f64615aa3565b614f6c614f6e565b565b614f76615df9565b565b614f80614f5c565b565b614f8a615aa3565b614f92614f94565b565b614f9c615e2b565b565b614fa6614f82565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b60207f6c61626c65000000000000000000000000000000000000000000000000000000917f42616c756e695631795661756c743a204e6f20696e74657265737420617661695f8201520152565b615026602560409261032a565b61502f81614fcc565b0190565b6150489060208101905f818303910152615019565b90565b1561505257565b61505a610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061508a60048201615033565b0390fd5b5f7f42616c756e695631795661756c743a2052656465656d204661696c6564000000910152565b6150c2601d60209261032a565b6150cb8161508e565b0190565b6150e49060208101905f8183039101526150b5565b90565b156150ee57565b6150f6610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615126600482016150cf565b0390fd5b615133906111ab565b90565b61513f9061512a565b90565b61514b906111c7565b90565b61518361518a9461517960609498979561516f608086019a5f870190610978565b6020850190610978565b6040830190610450565b0190610978565b565b9160206151ad9294936151a660408201965f830190610450565b0190610450565b565b6151c16151bc600161119e565b6111d3565b6152106307a2d13a9160206151de6151d9600161119e565b6111d3565b6370a08231906152056151f03061127b565b926151f9610231565b96879485938493611203565b835260048301610985565b03915afa9081156156665761524d936020935f93615633575b5061524290615236610231565b95869485938493611203565b83526004830161045d565b03915afa90811561562e575f91615600575b508061527c6152766152716005612154565b610243565b91610243565b115f146155f157615297906152916005612154565b9061141a565b5b6152b4816152ae6152a85f611019565b91610243565b1161504b565b6152f560206152cb6152c6600161119e565b6111d3565b63c6e6f592906152ea85926152de610231565b95869485938493611203565b83526004830161045d565b03915afa9081156155ec575f916155be575b50602061531c615317600161119e565b6111d3565b63ba08765292906153515f6153303061127b565b9561535c61533d3061127b565b615345610231565b98899788968795611203565b8552600485016113e8565b03925af19081156155b9575f9161558b575b5061538b8161538561537f5f611019565b91610243565b116150e7565b6153b860206153a261539d60036114d0565b6114dd565b6382755ebb906153b0610231565b938492611203565b825281806153c8600482016102de565b03915afa8015615586576153e3915f91615558575b50615136565b6153fc6153f76153f25f61126e565b6112c0565b6112cc565b90602063095ea7b39261540e83615142565b9061542c5f8796615437615420610231565b98899687958694611203565b845260048401611480565b03925af19182156155535761545192615527575b50615142565b6020632d6bc8ea916154625f61126e565b906154945f615471600261126e565b9561549f8861547f3061127b565b90615488610231565b998a9889978896611203565b86526004860161514e565b03925af18015615522576154f6575b503390916154dc7f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed926131ce565b926154f16154e8610231565b9283928361518c565b0390a2565b6155169060203d811161551b575b61550e81836106b7565b810190611296565b6154ae565b503d615504565b61124a565b6155479060203d811161554c575b61553f81836106b7565b810190611462565b61544b565b503d615535565b61124a565b615579915060203d811161557f575b61557181836106b7565b8101906114f8565b5f6153dd565b503d615567565b61124a565b6155ac915060203d81116155b2575b6155a481836106b7565b810190611296565b5f61536e565b503d61559a565b61124a565b6155df915060203d81116155e5575b6155d781836106b7565b810190611296565b5f615307565b503d6155cd565b61124a565b506155fb5f611019565b615298565b615621915060203d8111615627575b61561981836106b7565b810190611296565b5f61525f565b503d61560f565b61124a565b61524291935061565890853d811161565f575b61565081836106b7565b810190611296565b9290615229565b503d615646565b61124a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b9061569a9101610243565b90565b9190916156a86144a4565b816156c36156bd6156b85f613245565b610282565b91610282565b145f146157ae576156ea836156e460028401916156df83612154565b612205565b9061160b565b5b836157066157006156fb5f613245565b610282565b91610282565b145f1461577f5761572e9061572860028592019161572383612154565b614517565b9061160b565b5b91909161577a6157686157627fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef936131ce565b936131ce565b93615771610231565b9182918261045d565b0390a3565b6157a9906157a36157945f86930187906131da565b9161579e83612154565b61568f565b9061160b565b61572f565b6157c36157be5f830184906131da565b612154565b806157d66157d086610243565b91610243565b10615800576157e96157fb918590614517565b6157f65f840185906131da565b61160b565b6156eb565b9161583f91509192615810610231565b9384937fe450d38c000000000000000000000000000000000000000000000000000000008552600485016144e5565b0390fd5b909261584d6144a4565b8261586861586261585d5f613245565b610282565b91610282565b14615956578461588861588261587d5f613245565b610282565b91610282565b1461590f576158af906158aa6158a360018793018690613946565b87906131da565b61160b565b6158b9575b505050565b9190916159046158f26158ec7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925936131ce565b936131ce565b936158fb610231565b9182918261045d565b0390a35f80806158b4565b61595261591b5f613245565b615923610231565b9182917f94280d6200000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6159996159625f613245565b61596a610231565b9182917fe602df0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6159ae6159a86129bd565b156103f3565b6159b457565b6159bc610231565b7f8dfc202b000000000000000000000000000000000000000000000000000000008152806159ec600482016102de565b0390fd5b6159f861326e565b50615a135f615a0d615a0861294b565b615e35565b0161126e565b90565b5190565b90615a2482615e38565b81615a4f7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916131ce565b90615a58610231565b80615a62816102de565b0390a2615a6e81615a16565b615a80615a7a5f611019565b91610243565b115f14615a9457615a9091615f48565b505b565b5050615a9e615ead565b615a92565b615ab4615aae615f77565b156103f3565b615aba57565b615ac2610231565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280615af2600482016102de565b0390fd5b615b0790615b02615aa3565b615b09565b565b80615b24615b1e615b195f613245565b610282565b91610282565b14615b3457615b3290614def565b565b615b77615b405f613245565b615b48610231565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b615b8490615af6565b565b90615b9891615b93615aa3565b615d9a565b565b601f602091010490565b1b90565b91906008615be2910291615bdc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84615ba4565b92615ba4565b9181191691161790565b9190615c02615bfd615c0a936115ec565b611608565b908354615ba8565b9055565b615c2091615c1a61213c565b91615bec565b565b5b818110615c2e575050565b80615c3b5f600193615c0e565b01615c23565b9190601f8111615c51575b505050565b615c5d615c8293612027565b906020615c6984615b9a565b83019310615c8a575b615c7b90615b9a565b0190615c22565b5f8080615c4c565b9150615c7b81929050615c72565b90615ca8905f19906008026105a9565b191690565b81615cb791615c98565b906002021790565b90615cc981610326565b9067ffffffffffffffff8211615d8957615ced82615ce78554611ff4565b85615c41565b602090601f8311600114615d2157918091615d10935f92615d15575b5050615cad565b90555b565b90915001515f80615d09565b601f19831691615d3085612027565b925f5b818110615d7157509160029391856001969410615d57575b50505002019055615d13565b615d67910151601f841690615c98565b90555f8080615d4b565b91936020600181928787015181550195019201615d33565b61068a565b90615d9891615cbf565b565b6004615dbc92615db5615dab6144a4565b9360038501615d8e565b9101615d8e565b565b90615dc891615b86565b565b615dd2615aa3565b615dda615ddc565b565b615df7615de761566b565b5f615df0613f8f565b910161160b565b565b615e01615dca565b565b615e0b615aa3565b615e13615e15565b565b615e29615e20614aee565b5f809101614763565b565b615e33615e03565b565b90565b803b615e4c615e465f611019565b91610243565b14615e6e57615e6c905f615e66615e6161294b565b615e35565b016134fb565b565b615ea990615e7a610231565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b34615ec0615eba5f611019565b91610243565b11615ec757565b615ecf610231565b7fb398979f00000000000000000000000000000000000000000000000000000000815280615eff600482016102de565b0390fd5b606090565b90615f1a615f15836106f5565b6106e0565b918252565b3d5f14615f3a57615f2f3d615f08565b903d5f602084013e5b565b615f42615f03565b90615f38565b5f80615f7493615f56615f03565b508390602081019051915af490615f6b615f1f565b90919091615f95565b90565b615f7f612116565b50615f925f615f8c614ecf565b016132d0565b90565b90615fa990615fa2615f03565b50156103f3565b5f14615fb55750616039565b615fbe82615a16565b615fd0615fca5f611019565b91610243565b148061601e575b615fdf575090565b61601a90615feb610231565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b50803b61603361602d5f611019565b91610243565b14615fd7565b61604281615a16565b61605461604e5f611019565b91610243565b115f1461606357805190602001fd5b61606b610231565b7f1425ea420000000000000000000000000000000000000000000000000000000081528061609b600482016102de565b0390fdfea26469706673582212204125746dc8c176e7250c424280085f35e8fb8ff91c456a89d0a6ea44db81bcde64736f6c63430008190033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x3E JUMPI PUSH2 0x11 PUSH2 0x4D JUMP JUMPDEST PUSH2 0x19 PUSH2 0x43 JUMP JUMPDEST PUSH2 0x60D5 PUSH2 0x102 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x4801 ADD MSTORE DUP2 DUP2 PUSH2 0x4886 ADD MSTORE PUSH2 0x4A81 ADD MSTORE PUSH2 0x60D5 SWAP1 RETURN JUMPDEST PUSH2 0x49 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x55 PUSH2 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5F PUSH2 0x61 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x69 PUSH2 0x6B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x73 PUSH2 0x75 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x7D PUSH2 0x7F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x87 PUSH2 0x89 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x91 PUSH2 0x93 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x9B PUSH2 0x9D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xA5 PUSH2 0xA7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xAF PUSH2 0xF3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD3 PUSH2 0xCE PUSH2 0xD8 SWAP3 PUSH2 0xB1 JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH2 0xB1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xE4 SWAP1 PUSH2 0xBF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xF0 SWAP1 PUSH2 0xDB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xFC ADDRESS PUSH2 0xE7 JUMP JUMPDEST PUSH1 0x80 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x22B JUMP JUMPDEST DUP1 PUSH3 0xF714CE EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x36B77107 EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x374261AB EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x6560BC80 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x88696F62 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x9DB5DF46 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xA6F2AE3A EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xE56F2FE4 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xF7FDE10F EQ PUSH2 0x18B JUMPI PUSH4 0xFDF262B7 SUB PUSH2 0xE JUMPI PUSH2 0xFAA JUMP JUMPDEST PUSH2 0xF66 JUMP JUMPDEST PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST PUSH2 0xEB5 JUMP JUMPDEST PUSH2 0xDEB JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST PUSH2 0xD08 JUMP JUMPDEST PUSH2 0xC5A JUMP JUMPDEST PUSH2 0xC27 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xBBD JUMP JUMPDEST PUSH2 0xB88 JUMP JUMPDEST PUSH2 0xB4E JUMP JUMPDEST PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x99A JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH2 0x910 JUMP JUMPDEST PUSH2 0x8BE JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST PUSH2 0x845 JUMP JUMPDEST PUSH2 0x810 JUMP JUMPDEST PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST PUSH2 0x4E1 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST PUSH2 0x391 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24F DUP2 PUSH2 0x243 JUMP JUMPDEST SUB PUSH2 0x256 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x267 DUP3 PUSH2 0x246 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x28B SWAP1 PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x297 DUP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x29E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x2AF DUP3 PUSH2 0x28E JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x2D9 JUMPI DUP1 PUSH2 0x2CD PUSH2 0x2D6 SWAP3 PUSH0 DUP7 ADD PUSH2 0x25A JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x312 JUMPI PUSH2 0x2FC PUSH2 0x2F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1 JUMP JUMPDEST SWAP1 PUSH2 0x1FB6 JUMP JUMPDEST PUSH2 0x304 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x30E DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x321 JUMPI JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x367 PUSH2 0x370 PUSH1 0x20 SWAP4 PUSH2 0x375 SWAP4 PUSH2 0x35E DUP2 PUSH2 0x326 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x32A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x333 JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x38E SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x348 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3C1 JUMPI PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x3BD PUSH2 0x3AC PUSH2 0x20F7 JUMP JUMPDEST PUSH2 0x3B4 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x3EE JUMPI DUP1 PUSH2 0x3E2 PUSH2 0x3EB SWAP3 PUSH0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x25A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x401 SWAP1 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x418 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3F8 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x44B JUMPI PUSH2 0x447 PUSH2 0x436 PUSH2 0x430 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 PUSH2 0x211A JUMP JUMPDEST PUSH2 0x43E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x459 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x470 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4A2 JUMPI PUSH2 0x482 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x49E PUSH2 0x48D PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x495 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x4DC JUMPI PUSH2 0x4D9 PUSH2 0x4C2 DUP5 PUSH0 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0x4D0 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x25A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0x512 JUMPI PUSH2 0x50E PUSH2 0x4FD PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A7 JUMP JUMPDEST SWAP2 PUSH2 0x2180 JUMP JUMPDEST PUSH2 0x505 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x547 JUMPI PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x543 PUSH2 0x532 PUSH2 0x222A JUMP JUMPDEST PUSH2 0x53A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x55B SWAP1 PUSH2 0x54C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x572 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x552 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5A4 JUMPI PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x5A0 PUSH2 0x58F PUSH2 0x2734 JUMP JUMPDEST PUSH2 0x597 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C0 SWAP1 PUSH1 0x8 PUSH2 0x5C5 SWAP4 MUL PUSH2 0x5A9 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5D3 SWAP2 SLOAD PUSH2 0x5B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E2 PUSH1 0x5 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x615 JUMPI PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x611 PUSH2 0x600 PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x608 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x64A JUMPI PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x646 PUSH2 0x635 PUSH2 0x274A JUMP JUMPDEST PUSH2 0x63D PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x67D JUMPI PUSH2 0x65F CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x667 PUSH2 0x28D5 JUMP JUMPDEST PUSH2 0x66F PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x679 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x6C1 SWAP1 PUSH2 0x33E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6DB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 PUSH2 0x6F3 PUSH2 0x6EC PUSH2 0x231 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x6B7 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x713 JUMPI PUSH2 0x70F PUSH1 0x20 SWAP2 PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x738 PUSH2 0x733 DUP3 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x754 JUMPI PUSH2 0x752 SWAP3 PUSH2 0x718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x686 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x777 JUMPI DUP2 PUSH1 0x20 PUSH2 0x774 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x7BC JUMPI PUSH2 0x795 DUP4 PUSH0 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7B7 JUMPI PUSH2 0x7B4 SWAP3 ADD PUSH2 0x759 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x7D5 PUSH2 0x7CF CALLDATASIZE PUSH1 0x4 PUSH2 0x77C JUMP JUMPDEST SWAP1 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0x7DD PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x7E7 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F7 SWAP1 PUSH2 0x7EB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x80E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7EE JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x840 JUMPI PUSH2 0x820 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x83C PUSH2 0x82B PUSH2 0x2983 JUMP JUMPDEST PUSH2 0x833 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7FB JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x875 JUMPI PUSH2 0x855 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x871 PUSH2 0x860 PUSH2 0x29BD JUMP JUMPDEST PUSH2 0x868 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x886 PUSH1 0x6 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8B9 JUMPI PUSH2 0x899 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x8B5 PUSH2 0x8A4 PUSH2 0x87A JUMP JUMPDEST PUSH2 0x8AC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x8ED JUMPI PUSH2 0x8D7 PUSH2 0x8D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1 JUMP JUMPDEST SWAP1 PUSH2 0x31C2 JUMP JUMPDEST PUSH2 0x8DF PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x8E9 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x90B JUMPI PUSH2 0x908 SWAP2 PUSH0 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0x940 JUMPI PUSH2 0x93C PUSH2 0x92B PUSH2 0x926 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x31F0 JUMP JUMPDEST PUSH2 0x933 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x973 JUMPI PUSH2 0x955 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x95D PUSH2 0x3264 JUMP JUMPDEST PUSH2 0x965 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x96F DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x981 SWAP1 PUSH2 0x282 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x998 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x9CA JUMPI PUSH2 0x9AA CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x9C6 PUSH2 0x9B5 PUSH2 0x3272 JUMP JUMPDEST PUSH2 0x9BD PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x9FD JUMPI PUSH2 0x9DF CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x9E7 PUSH2 0x32AC JUMP JUMPDEST PUSH2 0x9EF PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x9F9 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA20 JUMPI PUSH2 0xA1C PUSH1 0x20 SWAP2 PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xA3A PUSH2 0xA35 DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xA56 JUMPI PUSH2 0xA54 SWAP3 PUSH2 0x718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x686 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xA79 JUMPI DUP2 PUSH1 0x20 PUSH2 0xA76 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xA25 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xA94 DUP2 PUSH2 0xA7E JUMP JUMPDEST SUB PUSH2 0xA9B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xAAC DUP3 PUSH2 0xA8B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xE0 DUP2 DUP4 SUB SLT PUSH2 0xB49 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB44 JUMPI DUP3 PUSH2 0xAD7 SWAP2 DUP4 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB3F JUMPI DUP4 PUSH2 0xAF8 SWAP2 DUP5 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH2 0xB06 DUP2 PUSH1 0x40 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xB14 DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xB3C PUSH2 0xB25 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0xB33 DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0xA9F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xB83 JUMPI PUSH2 0xB6D PUSH2 0xB61 CALLDATASIZE PUSH1 0x4 PUSH2 0xAAE JUMP JUMPDEST SWAP6 SWAP5 SWAP1 SWAP5 SWAP4 SWAP2 SWAP4 PUSH2 0x3878 JUMP JUMPDEST PUSH2 0xB75 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xB7F DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xBB8 JUMPI PUSH2 0xB98 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xBB4 PUSH2 0xBA3 PUSH2 0x3889 JUMP JUMPDEST PUSH2 0xBAB PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xBED JUMPI PUSH2 0xBCD CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xBE9 PUSH2 0xBD8 PUSH2 0x38A7 JUMP JUMPDEST PUSH2 0xBE0 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC22 JUMPI PUSH2 0xC02 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xC0D PUSH2 0x38C6 JUMP JUMPDEST PUSH2 0xC15 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC55 JUMPI PUSH2 0xC37 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xC3F PUSH2 0x391A JUMP JUMPDEST PUSH2 0xC47 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xC51 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC8B JUMPI PUSH2 0xC87 PUSH2 0xC76 PUSH2 0xC70 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 PUSH2 0x3924 JUMP JUMPDEST PUSH2 0xC7E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 PUSH2 0xCA2 PUSH2 0xC9D DUP4 PUSH2 0xA02 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xCD8 PUSH1 0x5 PUSH2 0xC90 JUMP JUMPDEST SWAP1 PUSH2 0xCE5 PUSH1 0x20 DUP4 ADD PUSH2 0xCA7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCEF PUSH2 0xCCE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCFA PUSH2 0xCE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD05 PUSH2 0xCF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD38 JUMPI PUSH2 0xD18 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xD34 PUSH2 0xD23 PUSH2 0xCFD JUMP JUMPDEST PUSH2 0xD2B PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD66 SWAP1 PUSH1 0x8 PUSH2 0xD6B SWAP4 MUL PUSH2 0x5A9 JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD79 SWAP2 SLOAD PUSH2 0xD56 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD86 PUSH0 DUP1 PUSH2 0xD6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDB9 JUMPI PUSH2 0xD99 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xDB5 PUSH2 0xDA4 PUSH2 0xD7C JUMP JUMPDEST PUSH2 0xDAC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xDE6 JUMPI DUP1 PUSH2 0xDDA PUSH2 0xDE3 SWAP3 PUSH0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xE1C JUMPI PUSH2 0xE18 PUSH2 0xE07 PUSH2 0xE01 CALLDATASIZE PUSH1 0x4 PUSH2 0xDBE JUMP JUMPDEST SWAP1 PUSH2 0x395C JUMP JUMPDEST PUSH2 0xE0F PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0xEB0 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEAB JUMPI DUP4 PUSH2 0xE4C SWAP2 DUP5 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEA6 JUMPI DUP2 PUSH2 0xE6D SWAP2 DUP6 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH2 0xE7B DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xEA3 PUSH2 0xE8C DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0xE9A DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xEEA JUMPI PUSH2 0xED4 PUSH2 0xEC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xE21 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x3C73 JUMP JUMPDEST PUSH2 0xEDC PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xEE6 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xF1F JUMPI PUSH2 0xEFF CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xF1B PUSH2 0xF0A PUSH2 0x3CA2 JUMP JUMPDEST PUSH2 0xF12 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xF52 JUMPI PUSH2 0xF3C PUSH2 0xF37 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x3EB9 JUMP JUMPDEST PUSH2 0xF44 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xF4E DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0xF63 PUSH1 0x4 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF96 JUMPI PUSH2 0xF76 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xF92 PUSH2 0xF81 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xF89 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0xFA7 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0xD6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xFDA JUMPI PUSH2 0xFBA CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xFD6 PUSH2 0xFC5 PUSH2 0xF9B JUMP JUMPDEST PUSH2 0xFCD PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0xFF5 SWAP2 PUSH2 0xFF0 PUSH2 0x3EF0 JUMP JUMPDEST PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xFFD PUSH2 0x3F9C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1011 SWAP2 PUSH2 0x100C PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x162B JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x102D PUSH2 0x1028 PUSH2 0x1032 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x536861726573206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1068 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1071 DUP2 PUSH2 0x1035 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x108A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x105C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1094 JUMPI JUMP JUMPDEST PUSH2 0x109C PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x10CC PUSH1 0x4 DUP3 ADD PUSH2 0x1075 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742062616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1104 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x110D DUP2 PUSH2 0x10D0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1126 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10F7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1130 JUMPI JUMP JUMPDEST PUSH2 0x1138 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1168 PUSH1 0x4 DUP3 ADD PUSH2 0x1111 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1196 PUSH2 0x119B SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x1171 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11A8 SWAP1 SLOAD PUSH2 0x118A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11BF PUSH2 0x11BA PUSH2 0x11C4 SWAP3 PUSH2 0x269 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11D0 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11DC SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11E8 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11F4 SWAP1 PUSH2 0x11DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1200 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x1212 DUP2 PUSH2 0x54C JUMP JUMPDEST SUB PUSH2 0x1219 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x122A DUP3 PUSH2 0x1209 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1245 JUMPI PUSH2 0x1242 SWAP2 PUSH0 ADD PUSH2 0x121D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x1252 PUSH2 0x231 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x1266 PUSH2 0x126B SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1278 SWAP1 SLOAD PUSH2 0x125A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1284 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1294 DUP3 PUSH2 0x246 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x12AF JUMPI PUSH2 0x12AC SWAP2 PUSH0 ADD PUSH2 0x1287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x12BD SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C9 SWAP1 PUSH2 0x12B4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12D5 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12EF PUSH2 0x12EA PUSH2 0x12F4 SWAP3 PUSH2 0x12D8 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1330 PUSH2 0x1336 SWAP2 PUSH2 0x54C JUMP JUMPDEST SWAP2 PUSH2 0x54C JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x1343 JUMPI JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x1351 SWAP1 PUSH2 0x54C JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x135F JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x1373 PUSH2 0x1379 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x1385 DUP4 DUP3 MUL PUSH2 0x243 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1394 JUMPI JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x13D2 PUSH2 0x13D8 SWAP2 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x13E3 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x1399 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x1411 PUSH2 0x1418 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x1407 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1429 PUSH2 0x142F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x143A JUMPI JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x1448 DUP2 PUSH2 0x3F3 JUMP JUMPDEST SUB PUSH2 0x144F JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1460 DUP3 PUSH2 0x143F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x147B JUMPI PUSH2 0x1478 SWAP2 PUSH0 ADD PUSH2 0x1453 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x14A1 SWAP3 SWAP5 SWAP4 PUSH2 0x149A PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14C8 PUSH2 0x14CD SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x14A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14DA SWAP1 SLOAD PUSH2 0x14BC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14E6 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x14F6 DUP3 PUSH2 0x28E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1511 JUMPI PUSH2 0x150E SWAP2 PUSH0 ADD PUSH2 0x14E9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH0 PUSH32 0x4661696C656420746F207472616E736665722071756F74654173736574000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x154A PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1553 DUP2 PUSH2 0x1516 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x156C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x153D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1576 JUMPI JUMP JUMPDEST PUSH2 0x157E PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x15AE PUSH1 0x4 DUP3 ADD PUSH2 0x1557 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x15B2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1600 PUSH2 0x15FB PUSH2 0x1605 SWAP3 PUSH2 0x243 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1620 PUSH2 0x161B PUSH2 0x1627 SWAP3 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0x1608 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15B7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1647 DUP2 PUSH2 0x1641 PUSH2 0x163B PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x108D JUMP JUMPDEST PUSH2 0x166C PUSH2 0x1653 CALLER PUSH2 0x31F0 JUMP JUMPDEST PUSH2 0x1665 PUSH2 0x165F DUP5 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT ISZERO PUSH2 0x1129 JUMP JUMPDEST PUSH2 0x16A9 PUSH1 0x20 PUSH2 0x1693 PUSH2 0x168E PUSH2 0x1689 PUSH2 0x1684 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x16A1 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x16B9 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FB1 JUMPI PUSH0 SWAP2 PUSH2 0x1F83 JUMPI JUMPDEST POP SWAP1 PUSH2 0x1702 PUSH1 0x20 PUSH2 0x16EC PUSH2 0x16E7 PUSH2 0x16E2 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x16FA PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1712 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F7E JUMPI PUSH0 SWAP2 PUSH2 0x1F50 JUMPI JUMPDEST POP SWAP1 PUSH2 0x176F PUSH1 0x20 PUSH2 0x173D PUSH2 0x1738 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1764 PUSH2 0x174F ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x1758 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F4B JUMPI PUSH0 SWAP2 PUSH2 0x1F1D JUMPI JUMPDEST POP SWAP3 PUSH2 0x17D4 PUSH1 0x20 PUSH2 0x17A2 PUSH2 0x179D PUSH2 0x1798 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x17C9 PUSH2 0x17B4 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x17BD PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F18 JUMPI PUSH0 SWAP2 PUSH2 0x1EEA JUMPI JUMPDEST POP SWAP1 PUSH2 0x1838 PUSH1 0x20 PUSH2 0x1806 PUSH2 0x1801 PUSH2 0x17FC PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x182D PUSH2 0x1818 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x1821 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1EE5 JUMPI PUSH0 SWAP2 PUSH2 0x1EB7 JUMPI JUMPDEST POP SWAP5 PUSH1 0x12 DUP3 SWAP1 PUSH2 0x1859 SWAP1 PUSH2 0x12DB JUMP JUMPDEST SWAP1 PUSH2 0x1863 SWAP2 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x186C SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x1875 SWAP2 PUSH2 0x1364 JUMP JUMPDEST SWAP2 PUSH1 0x12 DUP6 SWAP1 PUSH2 0x1883 SWAP1 PUSH2 0x12DB JUMP JUMPDEST SWAP1 PUSH2 0x188D SWAP2 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1896 SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x189F SWAP2 PUSH2 0x1364 JUMP JUMPDEST SWAP2 DUP4 SWAP1 PUSH2 0x18AB SWAP2 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x18B3 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x18BC SWAP2 PUSH2 0x13C6 JUMP JUMPDEST SWAP2 DUP4 SWAP1 PUSH2 0x18C8 SWAP2 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x18D0 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x18D9 SWAP2 PUSH2 0x13C6 JUMP JUMPDEST SWAP3 CALLER SWAP1 PUSH2 0x18E5 SWAP2 PUSH2 0x4003 JUMP JUMPDEST PUSH1 0x12 PUSH2 0x18F0 SWAP1 PUSH2 0x12DB JUMP JUMPDEST SWAP1 PUSH2 0x18FA SWAP2 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1903 SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x190C SWAP2 PUSH2 0x13C6 JUMP JUMPDEST SWAP2 PUSH1 0x12 PUSH2 0x1918 SWAP1 PUSH2 0x12DB JUMP JUMPDEST SWAP1 PUSH2 0x1922 SWAP2 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x192B SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x1934 SWAP2 PUSH2 0x13C6 JUMP JUMPDEST SWAP2 PUSH2 0x193F PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x1948 SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0xBA087652 ADDRESS PUSH2 0x1957 SWAP1 PUSH2 0x127B JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x1962 SWAP1 PUSH2 0x127B JUMP JUMPDEST SWAP5 PUSH2 0x196B PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP4 PUSH2 0x1978 DUP6 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD SWAP3 PUSH2 0x1988 SWAP4 PUSH2 0x13E8 JUMP JUMPDEST SUB DUP2 GAS PUSH1 0x20 SWAP5 PUSH0 SWAP2 CALL SWAP2 DUP3 ISZERO PUSH2 0x1EB2 JUMPI PUSH2 0x19EF SWAP3 PUSH2 0x1E86 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x19BD PUSH2 0x19B8 PUSH2 0x19B3 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x19E4 PUSH2 0x19CF ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x19D8 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1E81 JUMPI PUSH2 0x1A0A SWAP3 PUSH0 SWAP2 PUSH2 0x1E53 JUMPI JUMPDEST POP PUSH2 0x141A JUMP JUMPDEST DUP1 PUSH2 0x1A1D PUSH2 0x1A17 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x1B80 JUMPI JUMPDEST POP DUP1 PUSH2 0x1A37 PUSH2 0x1A31 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x1B67 JUMPI JUMPDEST POP POP PUSH2 0x1A51 PUSH2 0x1A4C PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x1AA0 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x1A6E PUSH2 0x1A69 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1A95 PUSH2 0x1A80 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x1A89 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1B62 JUMPI PUSH2 0x1ADD SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x1B2F JUMPI JUMPDEST POP PUSH2 0x1AD2 SWAP1 PUSH2 0x1AC6 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1B2A JUMPI PUSH2 0x1AFA SWAP2 PUSH0 SWAP2 PUSH2 0x1AFC JUMPI JUMPDEST POP PUSH1 0x5 PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B1D SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B23 JUMPI JUMPDEST PUSH2 0x1B15 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x1AF2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B0B JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1AD2 SWAP2 SWAP4 POP PUSH2 0x1B54 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x1B5B JUMPI JUMPDEST PUSH2 0x1B4C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x1AB9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B42 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1B79 SWAP2 PUSH2 0x1B74 SWAP2 PUSH2 0x41A8 JUMP JUMPDEST PUSH2 0x156F JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH2 0x1B89 DUP2 PUSH2 0x4082 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x1BA5 PUSH2 0x1BA0 PUSH2 0x1B9B PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x1BD4 PUSH0 PUSH2 0x1BBC DUP10 SWAP5 DUP9 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP6 PUSH2 0x1BDF PUSH2 0x1BC8 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1E4E JUMPI PUSH2 0x1E22 JUMPI JUMPDEST POP PUSH2 0x1BF8 DUP2 PUSH2 0x4082 JUMP JUMPDEST PUSH2 0x1C25 PUSH1 0x20 PUSH2 0x1C0F PUSH2 0x1C0A PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x1C1D PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1C35 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E1D JUMPI PUSH0 SWAP2 PUSH2 0x1DEF JUMPI JUMPDEST POP SWAP1 PUSH2 0x1C76 PUSH1 0x20 PUSH2 0x1C60 PUSH2 0x1C5B PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x1C6E PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1C86 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1DEA JUMPI PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x1DBD JUMPI JUMPDEST POP SWAP4 PUSH2 0x1CB5 PUSH2 0x1CB0 PUSH2 0x1CAB PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x1CE2 PUSH0 PUSH2 0x1CCA PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP7 PUSH2 0x1CED PUSH2 0x1CD6 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1DB8 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x1D8D JUMPI JUMPDEST POP PUSH2 0x1D1A PUSH2 0x1D15 PUSH2 0x1D10 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x1D3D PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x1D48 PUSH2 0x1D31 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1D88 JUMPI PUSH2 0x1D5C JUMPI JUMPDEST PUSH2 0x1A23 JUMP JUMPDEST PUSH2 0x1D7C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D81 JUMPI JUMPDEST PUSH2 0x1D74 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1D57 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D6A JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1DAC SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x1DB1 JUMPI JUMPDEST PUSH2 0x1DA4 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1D00 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D9A JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1DDD SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x1DE3 JUMPI JUMPDEST PUSH2 0x1DD5 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x1C9A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1DCB JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1E10 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E16 JUMPI JUMPDEST PUSH2 0x1E08 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x1C47 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1DFE JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1E42 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E47 JUMPI JUMPDEST PUSH2 0x1E3A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1BEE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E30 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1E74 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E7A JUMPI JUMPDEST PUSH2 0x1E6C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x1A04 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E62 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1EA6 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EAB JUMPI JUMPDEST PUSH2 0x1E9E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x19A1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E94 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1ED8 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EDE JUMPI JUMPDEST PUSH2 0x1ED0 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x184A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EC6 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F0B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F11 JUMPI JUMPDEST PUSH2 0x1F03 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x17E6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EF9 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F3E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F44 JUMPI JUMPDEST PUSH2 0x1F36 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x1781 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F2C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F71 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F77 JUMPI JUMPDEST PUSH2 0x1F69 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x1724 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F5F JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1FA4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FAA JUMPI JUMPDEST PUSH2 0x1F9C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x16CB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F92 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST SWAP1 PUSH2 0x1FC0 SWAP2 PUSH2 0xFE3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x2014 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x200F JUMPI JUMP JUMPDEST PUSH2 0x1FC7 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x2004 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x204A PUSH2 0x2043 DUP4 PUSH2 0x1FF4 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x201E JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x20A1 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2065 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2072 SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x2027 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x2089 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x2060 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x2076 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x2060 JUMP JUMPDEST SWAP1 PUSH2 0x20C6 SWAP2 PUSH2 0x2030 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20E9 PUSH2 0x20E2 SWAP3 PUSH2 0x20D9 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x20BC JUMP JUMPDEST SUB DUP4 PUSH2 0x6B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x20F4 SWAP1 PUSH2 0x20C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20FF PUSH2 0x1FC2 JUMP JUMPDEST POP PUSH2 0x2113 PUSH1 0x3 PUSH2 0x210D PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x20EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2137 SWAP2 PUSH2 0x2126 PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x212F PUSH2 0x44C8 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x44D5 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x214C PUSH2 0x2151 SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x215E SWAP1 SLOAD PUSH2 0x2140 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2169 PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x217D PUSH1 0x2 PUSH2 0x2177 PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x2154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x21AA SWAP3 PUSH2 0x218D PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x21A2 PUSH2 0x2199 PUSH2 0x44C8 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x4525 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x45F0 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x21B8 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21C4 SWAP1 PUSH2 0x21AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21D0 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x21FC PUSH2 0x2203 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x21F2 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2214 PUSH2 0x221A SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2225 JUMPI JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x2232 PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x2260 PUSH1 0x20 PUSH2 0x224A PUSH2 0x2245 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2258 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2270 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x272B JUMPI PUSH2 0x228B SWAP2 PUSH0 SWAP2 PUSH2 0x26FD JUMPI JUMPDEST POP PUSH2 0x21BB JUMP JUMPDEST PUSH2 0x22B8 PUSH1 0x20 PUSH2 0x22A2 PUSH2 0x229D PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x22B0 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x22C8 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x26F8 JUMPI PUSH0 SWAP2 PUSH2 0x26CA JUMPI JUMPDEST POP SWAP1 PUSH2 0x22E5 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x232E PUSH1 0x20 PUSH2 0x22FC PUSH2 0x22F7 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2323 PUSH2 0x230E ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x2317 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x26C5 JUMPI PUSH2 0x2381 SWAP2 PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x2698 JUMPI JUMPDEST POP PUSH2 0x235A PUSH2 0x2355 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2376 PUSH4 0x7A2D13A PUSH2 0x236A PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2693 JUMPI PUSH0 SWAP2 PUSH2 0x2665 JUMPI JUMPDEST POP PUSH2 0x23E5 PUSH1 0x20 PUSH2 0x23B3 PUSH2 0x23AE PUSH2 0x23A9 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x23DA PUSH2 0x23C5 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x23CE PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2660 JUMPI PUSH0 SWAP2 PUSH2 0x2632 JUMPI JUMPDEST POP PUSH2 0x2401 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x2413 PUSH2 0x240D DUP8 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x2596 JUMPI JUMPDEST PUSH1 0x20 PUSH2 0x2424 DUP6 PUSH2 0x21C7 JUMP JUMPDEST PUSH4 0x248391FF SWAP1 PUSH2 0x2459 PUSH2 0x2437 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST SWAP3 PUSH2 0x2464 PUSH2 0x2444 PUSH0 PUSH2 0x126E JUMP JUMPDEST SWAP7 PUSH2 0x244D PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x21D3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2591 JUMPI PUSH2 0x2488 SWAP4 PUSH2 0x2483 SWAP3 PUSH0 SWAP3 PUSH2 0x2561 JUMPI JUMPDEST POP PUSH2 0x2205 JUMP JUMPDEST PUSH2 0x2205 JUMP JUMPDEST SWAP2 PUSH2 0x2491 PUSH2 0x274A JUMP JUMPDEST SWAP2 PUSH2 0x249B PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x24AD PUSH2 0x24A7 DUP5 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x24C3 JUMPI JUMPDEST POP POP SWAP1 PUSH2 0x24C0 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24CE PUSH1 0x20 SWAP2 PUSH2 0x21C7 JUMP JUMPDEST SWAP2 PUSH4 0x248391FF SWAP3 PUSH2 0x24FB PUSH2 0x24E1 PUSH0 PUSH2 0x126E JUMP JUMPDEST SWAP3 SWAP5 PUSH2 0x2506 DUP8 PUSH2 0x24EF PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x21D3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x255C JUMPI PUSH2 0x24C0 SWAP4 PUSH2 0x2525 SWAP3 PUSH0 SWAP3 PUSH2 0x252C JUMPI JUMPDEST POP PUSH2 0x2205 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x24B3 JUMP JUMPDEST PUSH2 0x254E SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2555 JUMPI JUMPDEST PUSH2 0x2546 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x251F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x253C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2583 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x258A JUMPI JUMPDEST PUSH2 0x257B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x247D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2571 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST SWAP2 PUSH2 0x25A0 DUP5 PUSH2 0x21C7 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x248391FF SWAP3 PUSH2 0x25B2 PUSH0 PUSH2 0x126E JUMP JUMPDEST SWAP1 PUSH2 0x25D0 DUP10 SWAP6 PUSH2 0x25DB DUP9 PUSH2 0x25C4 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x21D3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x262D JUMPI PUSH2 0x25F7 SWAP3 PUSH0 SWAP3 PUSH2 0x25FD JUMPI JUMPDEST POP PUSH2 0x2205 JUMP JUMPDEST SWAP2 PUSH2 0x2419 JUMP JUMPDEST PUSH2 0x261F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2626 JUMPI JUMPDEST PUSH2 0x2617 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x25F1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x260D JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2653 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2659 JUMPI JUMPDEST PUSH2 0x264B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x23F7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2641 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2686 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x268C JUMPI JUMPDEST PUSH2 0x267E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x2393 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2674 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x26B8 SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x26BE JUMPI JUMPDEST PUSH2 0x26B0 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x2347 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x26EB SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x26F1 JUMPI JUMPDEST PUSH2 0x26E3 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x22DA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26D9 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x271E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2724 JUMPI JUMPDEST PUSH2 0x2716 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x2285 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x270C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x273C PUSH2 0x2730 JUMP JUMPDEST POP PUSH2 0x2747 PUSH1 0x12 PUSH2 0x12DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2752 PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x2765 PUSH2 0x2760 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x27B4 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x2782 PUSH2 0x277D PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x27A9 PUSH2 0x2794 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x279D PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x28B4 JUMPI PUSH2 0x27F1 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x2881 JUMPI JUMPDEST POP PUSH2 0x27E6 SWAP1 PUSH2 0x27DA PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x287C JUMPI PUSH0 SWAP2 PUSH2 0x284E JUMPI JUMPDEST POP DUP1 PUSH2 0x2820 PUSH2 0x281A PUSH2 0x2815 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x283F JUMPI PUSH2 0x283B SWAP1 PUSH2 0x2835 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST SWAP1 PUSH2 0x141A JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x2849 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x283C JUMP JUMPDEST PUSH2 0x286F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2875 JUMPI JUMPDEST PUSH2 0x2867 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x2803 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x285D JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x27E6 SWAP2 SWAP4 POP PUSH2 0x28A6 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x28AD JUMPI JUMPDEST PUSH2 0x289E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x27CD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2894 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x28C1 PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x28C9 PUSH2 0x28CB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D3 PUSH2 0x47DA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28DD PUSH2 0x28B9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x28F1 SWAP2 PUSH2 0x28EC PUSH2 0x47F0 JUMP JUMPDEST PUSH2 0x28F3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2906 SWAP2 PUSH2 0x2901 DUP2 PUSH2 0x48C2 JUMP JUMPDEST PUSH2 0x4932 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2912 SWAP2 PUSH2 0x28DF JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2929 SWAP1 PUSH2 0x2924 PUSH2 0x4A70 JUMP JUMPDEST PUSH2 0x2977 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2943 PUSH2 0x293E PUSH2 0x2948 SWAP3 PUSH2 0x292C JUMP JUMPDEST PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2974 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x292F JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x2980 PUSH2 0x294B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2993 PUSH2 0x298E PUSH2 0x2914 JUMP JUMPDEST PUSH2 0x2918 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x29A8 PUSH2 0x29AD SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x2996 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29BA SWAP1 SLOAD PUSH2 0x299C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29C5 PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x29D8 PUSH0 PUSH2 0x29D2 PUSH2 0x4AEE JUMP JUMPDEST ADD PUSH2 0x29B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x29ED SWAP2 PUSH2 0x29E8 PUSH2 0x3EF0 JUMP JUMPDEST PUSH2 0x29F7 JUMP JUMPDEST PUSH2 0x29F5 PUSH2 0x3F9C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2A09 SWAP2 PUSH2 0x2A04 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x2AC9 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2A3E PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x2A47 DUP2 PUSH2 0x2A0B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2A60 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2A32 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2A6A JUMPI JUMP JUMPDEST PUSH2 0x2A72 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2AA2 PUSH1 0x4 DUP3 ADD PUSH2 0x2A4B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x2AC7 SWAP3 SWAP5 SWAP4 PUSH2 0x2AC0 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2AE5 DUP2 PUSH2 0x2ADF PUSH2 0x2AD9 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x2A63 JUMP JUMPDEST PUSH2 0x2AED PUSH2 0x4B2E JUMP JUMPDEST PUSH2 0x2B06 PUSH2 0x2B01 PUSH2 0x2AFC PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x2B36 PUSH0 PUSH2 0x2B1D ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP6 PUSH2 0x2B41 DUP9 PUSH2 0x2B2A PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x21D3 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x31BD JUMPI PUSH2 0x3191 JUMPI JUMPDEST POP PUSH2 0x2B7E PUSH1 0x20 PUSH2 0x2B68 PUSH2 0x2B63 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x2B76 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2B8E PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x318C JUMPI PUSH0 SWAP2 PUSH2 0x315E JUMPI JUMPDEST POP PUSH2 0x2BCE PUSH1 0x20 PUSH2 0x2BB8 PUSH2 0x2BB3 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x2BC6 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BDE PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3159 JUMPI PUSH0 SWAP2 PUSH2 0x312B JUMPI JUMPDEST POP SWAP2 PUSH2 0x2BFB DUP2 PUSH2 0x4082 JUMP JUMPDEST SWAP2 PUSH2 0x2C05 DUP4 PUSH2 0x4082 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2C20 PUSH2 0x2C1B PUSH2 0x2C16 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0xA9059CBB SWAP4 SWAP1 PUSH2 0x2C4E PUSH0 PUSH2 0x2C36 DUP10 DUP8 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP7 PUSH2 0x2C59 PUSH2 0x2C42 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3126 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x30FB JUMPI JUMPDEST POP PUSH2 0x2C86 PUSH2 0x2C81 PUSH2 0x2C7C PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x2CA9 PUSH0 PUSH4 0xA9059CBB SWAP8 SWAP4 SWAP8 PUSH2 0x2CB4 PUSH2 0x2C9D PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x30F6 JUMPI PUSH2 0x2CCE SWAP4 PUSH2 0x30CA JUMPI JUMPDEST POP PUSH2 0x141A JUMP JUMPDEST SWAP1 PUSH2 0x2CE8 PUSH2 0x2CE3 PUSH2 0x2CDE PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x2D02 PUSH2 0x2CFD PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST SWAP1 PUSH2 0x2D20 PUSH0 DUP8 SWAP6 PUSH2 0x2D2B PUSH2 0x2D14 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x30C5 JUMPI PUSH2 0x3099 JUMPI JUMPDEST POP PUSH2 0x2D4D PUSH2 0x2D48 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x6E553F65 SWAP4 DUP3 SWAP1 PUSH2 0x2D7D PUSH0 PUSH2 0x2D65 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP8 PUSH2 0x2D88 PUSH2 0x2D71 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x2AA6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x3094 JUMPI PUSH2 0x2DCE SWAP4 PUSH2 0x3068 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x2DB8 PUSH2 0x2DB3 PUSH2 0x2DAE PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x2DC6 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2DDE PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3063 JUMPI PUSH2 0x2E2E SWAP4 PUSH0 SWAP2 PUSH2 0x3035 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x2E18 PUSH2 0x2E13 PUSH2 0x2E0E PUSH2 0x2E09 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x2E26 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2E3E PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3030 JUMPI PUSH2 0x2EA8 PUSH2 0x2EB3 SWAP4 PUSH2 0x2EAD SWAP3 PUSH2 0x2EB9 SWAP8 PUSH0 SWAP2 PUSH2 0x3002 JUMPI JUMPDEST POP SWAP4 DUP1 PUSH2 0x2E73 PUSH2 0x2E6D DUP8 PUSH2 0x54C JUMP JUMPDEST SWAP2 PUSH2 0x54C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2FE1 JUMPI PUSH2 0x2E91 PUSH2 0x2E8C PUSH2 0x2E97 SWAP4 SWAP3 DUP8 SWAP1 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST SWAP1 PUSH2 0x13C6 JUMP JUMPDEST JUMPDEST SWAP3 PUSH2 0x2EA3 PUSH1 0x12 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST SWAP1 PUSH2 0x1364 JUMP JUMPDEST SWAP1 PUSH2 0x4D71 JUMP JUMPDEST PUSH2 0x2ECB PUSH2 0x2EC6 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2F1A PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x2EE8 PUSH2 0x2EE3 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2F0F PUSH2 0x2EFA ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x2F03 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2FDC JUMPI PUSH2 0x2F57 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x2FA9 JUMPI JUMPDEST POP PUSH2 0x2F4C SWAP1 PUSH2 0x2F40 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2FA4 JUMPI PUSH2 0x2F74 SWAP2 PUSH0 SWAP2 PUSH2 0x2F76 JUMPI JUMPDEST POP PUSH1 0x5 PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2F97 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2F9D JUMPI JUMPDEST PUSH2 0x2F8F DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x2F6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F85 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2F4C SWAP2 SWAP4 POP PUSH2 0x2FCE SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x2FD5 JUMPI JUMPDEST PUSH2 0x2FC6 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x2F33 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2FBC JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2FF7 PUSH2 0x2FF2 PUSH2 0x2FFD SWAP4 SWAP3 DUP8 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST SWAP1 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x2E98 JUMP JUMPDEST PUSH2 0x3023 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3029 JUMPI JUMPDEST PUSH2 0x301B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x2E5E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3011 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x3056 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x305C JUMPI JUMPDEST PUSH2 0x304E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x2DF3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3044 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x3088 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x308D JUMPI JUMPDEST PUSH2 0x3080 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x2D9C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3076 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x30B9 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x30BE JUMPI JUMPDEST PUSH2 0x30B1 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x2D3A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30A7 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x30EA SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x30EF JUMPI JUMPDEST PUSH2 0x30E2 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x2CC8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30D8 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x311A SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x311F JUMPI JUMPDEST PUSH2 0x3112 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x2C6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3108 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x314C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3152 JUMPI JUMPDEST PUSH2 0x3144 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x2BF0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x313A JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x317F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3185 JUMPI JUMPDEST PUSH2 0x3177 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x2BA0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x316D JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x31B1 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x31B6 JUMPI JUMPDEST PUSH2 0x31A9 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x2B50 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x319F JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST SWAP1 PUSH2 0x31CC SWAP2 PUSH2 0x29DB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x31D7 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x31E4 SWAP1 PUSH2 0x31CE JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x320F PUSH2 0x3214 SWAP2 PUSH2 0x31FF PUSH2 0x213C JUMP JUMPDEST POP PUSH0 PUSH2 0x3209 PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x2154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x321F PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x3227 PUSH2 0x3251 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x323D PUSH2 0x3238 PUSH2 0x3242 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x324E SWAP1 PUSH2 0x3229 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3262 PUSH2 0x325D PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x4DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x326C PUSH2 0x3217 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x327A PUSH2 0x326E JUMP JUMPDEST POP PUSH2 0x328D PUSH2 0x3288 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3298 PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x32A0 PUSH2 0x32A2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x32AA PUSH2 0x4EC5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x32B4 PUSH2 0x3290 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH2 0x32C8 PUSH2 0x32CD SWAP2 PUSH2 0x32B6 JUMP JUMPDEST PUSH2 0x2996 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x32DA SWAP1 SLOAD PUSH2 0x32BC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x32F6 PUSH2 0x32FB SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x32DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3308 SWAP1 SLOAD PUSH2 0x32EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x331E PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x15B2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x333C PUSH2 0x3337 PUSH2 0x3341 SWAP3 PUSH2 0xA7E JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x335C PUSH2 0x3357 PUSH2 0x3363 SWAP3 PUSH2 0x3328 JUMP JUMPDEST PUSH2 0x3344 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x330B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3381 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x3367 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3394 SWAP1 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x33AF PUSH2 0x33AA PUSH2 0x33B6 SWAP3 PUSH2 0x338B JUMP JUMPDEST PUSH2 0x3397 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x336D JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x33C3 SWAP1 PUSH2 0xA7E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x33DA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x33BA JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP4 SWAP5 SWAP1 SWAP5 DUP3 SWAP7 PUSH2 0x33ED PUSH2 0x4ECF JUMP JUMPDEST SWAP6 PUSH2 0x33F9 PUSH0 DUP9 ADD PUSH2 0x32D0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x34AA JUMPI JUMPDEST PUSH2 0x346E JUMPI PUSH2 0x3433 SWAP8 PUSH2 0x342A SWAP7 PUSH2 0x3418 DUP12 PUSH0 DUP12 ADD PUSH2 0x3347 JUMP JUMPDEST PUSH2 0x3425 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x339A JUMP JUMPDEST PUSH2 0x377D JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x339A JUMP JUMPDEST PUSH2 0x3469 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x3460 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x33C7 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x3476 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x34A6 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x34B6 PUSH0 DUP9 ADD PUSH2 0x32FE JUMP JUMPDEST PUSH2 0x34C8 PUSH2 0x34C2 DUP12 PUSH2 0xA7E JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST LT ISZERO PUSH2 0x3400 JUMP JUMPDEST SWAP1 PUSH2 0x34EE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x15B2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3510 PUSH2 0x350B PUSH2 0x3517 SWAP3 PUSH2 0x31CE JUMP JUMPDEST PUSH2 0x34F8 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x34CF JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3524 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3530 SWAP1 PUSH2 0x351B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x353C SWAP1 PUSH2 0x351B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3557 PUSH2 0x3552 PUSH2 0x355E SWAP3 PUSH2 0x3533 JUMP JUMPDEST PUSH2 0x353F JUMP JUMPDEST DUP3 SLOAD PUSH2 0x34CF JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x356B SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3577 SWAP1 PUSH2 0x3562 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3583 SWAP1 PUSH2 0x3562 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x359E PUSH2 0x3599 PUSH2 0x35A5 SWAP3 PUSH2 0x357A JUMP JUMPDEST PUSH2 0x3586 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x34CF JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657441206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x35DD PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x35E6 DUP2 PUSH2 0x35A9 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x35FF SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x35D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3609 JUMPI JUMP JUMPDEST PUSH2 0x3611 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3641 PUSH1 0x4 DUP3 ADD PUSH2 0x35EA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420596561726E205661756C7420616464726573730000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3679 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3682 DUP2 PUSH2 0x3645 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x369B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x366C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x36A5 JUMPI JUMP JUMPDEST PUSH2 0x36AD PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x36DD PUSH1 0x4 DUP3 ADD PUSH2 0x3686 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657442206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3715 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x371E DUP2 PUSH2 0x36E1 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3737 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3708 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3741 JUMPI JUMP JUMPDEST PUSH2 0x3749 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3779 PUSH1 0x4 DUP3 ADD PUSH2 0x3722 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x37E5 SWAP7 POP PUSH2 0x37D9 SWAP4 PUSH2 0x37C6 PUSH2 0x37DE SWAP8 SWAP7 SWAP5 PUSH2 0x37A8 PUSH2 0x37D2 SWAP6 PUSH2 0x37CB SWAP6 PUSH2 0x37A3 CALLER PUSH2 0x4F11 JUMP JUMPDEST PUSH2 0x4F3C JUMP JUMPDEST PUSH2 0x37B0 PUSH2 0x4F52 JUMP JUMPDEST PUSH2 0x37B8 PUSH2 0x4F78 JUMP JUMPDEST PUSH2 0x37C0 PUSH2 0x4F9E JUMP JUMPDEST PUSH0 PUSH2 0x34FB JUMP JUMPDEST PUSH2 0x3527 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3542 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x34FB JUMP JUMPDEST PUSH2 0x356E JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3589 JUMP JUMPDEST PUSH2 0x3812 PUSH2 0x37F1 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x380B PUSH2 0x3805 PUSH2 0x3800 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3602 JUMP JUMPDEST PUSH2 0x3848 PUSH2 0x3827 PUSH2 0x3822 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3841 PUSH2 0x383B PUSH2 0x3836 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x369E JUMP JUMPDEST PUSH2 0x3876 PUSH2 0x3855 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x386F PUSH2 0x3869 PUSH2 0x3864 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x373A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3887 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x33DC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3891 PUSH2 0x326E JUMP JUMPDEST POP PUSH2 0x38A4 PUSH0 PUSH2 0x389E PUSH2 0x4FA8 JUMP JUMPDEST ADD PUSH2 0x126E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38AF PUSH2 0x1FC2 JUMP JUMPDEST POP PUSH2 0x38C3 PUSH1 0x4 PUSH2 0x38BD PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x20EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38CE PUSH2 0x326E JUMP JUMPDEST POP PUSH2 0x38E1 PUSH2 0x38DC PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38EC PUSH2 0x3EF0 JUMP JUMPDEST PUSH2 0x38F4 PUSH2 0x38FE JUMP JUMPDEST PUSH2 0x38FC PUSH2 0x3F9C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3906 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x390E PUSH2 0x3910 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3918 PUSH2 0x51AF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3922 PUSH2 0x38E4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3941 SWAP2 PUSH2 0x3930 PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x3939 PUSH2 0x44C8 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x45F0 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3950 SWAP1 PUSH2 0x31CE JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x398A SWAP2 PUSH2 0x3980 PUSH2 0x3985 SWAP3 PUSH2 0x396F PUSH2 0x213C JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x397A PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x3946 JUMP JUMPDEST PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x2154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39A1 PUSH2 0x399C PUSH2 0x39A6 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39C0 PUSH2 0x39BB PUSH2 0x39C5 SWAP3 PUSH2 0x39A9 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39D1 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39DD SWAP1 PUSH2 0x39AC JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x39F4 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x39D4 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP5 SWAP2 SWAP5 SWAP4 SWAP1 SWAP4 PUSH2 0x3A05 PUSH2 0x4ECF JUMP JUMPDEST SWAP6 PUSH2 0x3A1A PUSH2 0x3A14 PUSH0 DUP10 ADD PUSH2 0x32D0 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST SWAP6 PUSH2 0x3A26 PUSH0 DUP10 ADD PUSH2 0x32FE JUMP JUMPDEST DUP1 PUSH2 0x3A39 PUSH2 0x3A33 PUSH0 PUSH2 0x398D JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST EQ DUP1 PUSH2 0x3B73 JUMPI JUMPDEST SWAP1 PUSH2 0x3A54 PUSH2 0x3A4E PUSH1 0x1 PUSH2 0x39AC JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST EQ DUP1 PUSH2 0x3B4B JUMPI JUMPDEST PUSH2 0x3A66 SWAP1 SWAP2 ISZERO PUSH2 0x3F3 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x3B3A JUMPI JUMPDEST POP PUSH2 0x3AFE JUMPI PUSH2 0x3A96 SWAP6 PUSH2 0x3A8B PUSH2 0x3A83 PUSH1 0x1 PUSH2 0x39AC JUMP JUMPDEST PUSH0 DUP12 ADD PUSH2 0x3347 JUMP JUMPDEST DUP8 PUSH2 0x3AEC JUMPI JUMPDEST PUSH2 0x3B7A JUMP JUMPDEST PUSH2 0x3A9E JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x3AAB SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3AE3 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x3ADA PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x39E1 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x3A9B JUMP JUMPDEST PUSH2 0x3AF9 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x339A JUMP JUMPDEST PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x3B06 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3B36 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B45 SWAP2 POP ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH0 PUSH2 0x3A6D JUMP JUMPDEST POP PUSH2 0x3A66 PUSH2 0x3B58 ADDRESS PUSH2 0x39C8 JUMP JUMPDEST EXTCODESIZE PUSH2 0x3B6B PUSH2 0x3B65 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x3A5B JUMP JUMPDEST POP DUP8 PUSH2 0x3A40 JUMP JUMPDEST PUSH2 0x3BC6 PUSH2 0x3BE0 SWAP7 SWAP5 PUSH2 0x3BC1 PUSH2 0x3BD4 SWAP6 PUSH2 0x3BA3 PUSH2 0x3BD9 SWAP10 SWAP7 PUSH2 0x3BCD SWAP7 PUSH2 0x3B9E CALLER PUSH2 0x4F11 JUMP JUMPDEST PUSH2 0x4F3C JUMP JUMPDEST PUSH2 0x3BAB PUSH2 0x4F52 JUMP JUMPDEST PUSH2 0x3BB3 PUSH2 0x4F78 JUMP JUMPDEST PUSH2 0x3BBB PUSH2 0x4F9E JUMP JUMPDEST PUSH0 PUSH2 0x34FB JUMP JUMPDEST PUSH2 0x3527 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3542 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x34FB JUMP JUMPDEST PUSH2 0x356E JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3589 JUMP JUMPDEST PUSH2 0x3C0D PUSH2 0x3BEC PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x3C06 PUSH2 0x3C00 PUSH2 0x3BFB PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3602 JUMP JUMPDEST PUSH2 0x3C43 PUSH2 0x3C22 PUSH2 0x3C1D PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3C3C PUSH2 0x3C36 PUSH2 0x3C31 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x369E JUMP JUMPDEST PUSH2 0x3C71 PUSH2 0x3C50 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x3C6A PUSH2 0x3C64 PUSH2 0x3C5F PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x373A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3C81 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x39F6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3C9A PUSH2 0x3C95 PUSH2 0x3C9F SWAP3 PUSH2 0x3C83 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3CAA PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x3CB3 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x3CC5 PUSH2 0x3CBF PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x3E28 JUMPI PUSH2 0x3CF7 PUSH1 0x20 PUSH2 0x3CE1 PUSH2 0x3CDC PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x3CEF PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3D07 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3E23 JUMPI PUSH2 0x3D31 PUSH2 0x3D2C PUSH2 0x3D47 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x3DF6 JUMPI JUMPDEST POP PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3D3F PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3D57 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3DF1 JUMPI PUSH2 0x3D9B PUSH2 0x3D8E PUSH2 0x3D89 PUSH2 0x3DB2 SWAP4 PUSH2 0x3DC0 SWAP6 PUSH0 SWAP2 PUSH2 0x3DC3 JUMPI JUMPDEST POP PUSH2 0x3D84 PUSH1 0x12 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x3D96 PUSH2 0x222A JUMP JUMPDEST PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x3DAC PUSH8 0xDE0B6B3A7640000 PUSH2 0x3C86 JUMP JUMPDEST SWAP1 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x3DBA PUSH2 0x2161 JUMP JUMPDEST SWAP1 PUSH2 0x13C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DE4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3DEA JUMPI JUMPDEST PUSH2 0x3DDC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x3D79 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DD2 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x3E16 SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x3E1C JUMPI JUMPDEST PUSH2 0x3E0E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x3D26 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3E04 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x3E31 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E45 SWAP1 PUSH2 0x3E40 PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x3E47 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x3E62 PUSH2 0x3E5C PUSH2 0x3E57 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x3E72 JUMPI PUSH2 0x3E70 SWAP1 PUSH2 0x4DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3EB5 PUSH2 0x3E7E PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x3E86 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3EC2 SWAP1 PUSH2 0x3E34 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EDB PUSH2 0x3ED6 PUSH2 0x3EE0 SWAP3 PUSH2 0x3EC4 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EED PUSH1 0x2 PUSH2 0x3EC7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EF8 PUSH2 0x566B JUMP JUMPDEST PUSH2 0x3F03 PUSH0 DUP3 ADD PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x3F1C PUSH2 0x3F16 PUSH2 0x3F11 PUSH2 0x3EE3 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x3F37 JUMPI PUSH2 0x3F35 SWAP1 PUSH0 PUSH2 0x3F2E PUSH2 0x3EE3 JUMP JUMPDEST SWAP2 ADD PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3F3F PUSH2 0x231 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3F6F PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3F87 PUSH2 0x3F82 PUSH2 0x3F8C SWAP3 PUSH2 0x39A9 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3F99 PUSH1 0x1 PUSH2 0x3F73 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3FB7 PUSH2 0x3FA7 PUSH2 0x566B JUMP JUMPDEST PUSH0 PUSH2 0x3FB0 PUSH2 0x3F8F JUMP JUMPDEST SWAP2 ADD PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3FC1 PUSH2 0x29BD JUMP JUMPDEST PUSH2 0x3FC7 JUMPI JUMP JUMPDEST PUSH2 0x3FCF PUSH2 0x231 JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3FFF PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP2 PUSH2 0x401F PUSH2 0x4019 PUSH2 0x4014 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x403B JUMPI PUSH2 0x4039 SWAP2 SWAP1 PUSH2 0x4032 PUSH0 PUSH2 0x3245 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x569D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x407E PUSH2 0x4047 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x404F PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x408A PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x40B8 PUSH1 0x20 PUSH2 0x40A2 PUSH2 0x409D PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x40B0 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x40C8 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x41A3 JUMPI PUSH0 SWAP2 PUSH2 0x4175 JUMPI JUMPDEST POP SWAP1 PUSH2 0x4109 PUSH1 0x20 PUSH2 0x40F3 PUSH2 0x40EE PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x4101 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4119 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x4170 JUMPI PUSH2 0x413F SWAP4 PUSH2 0x413A SWAP3 PUSH0 SWAP2 PUSH2 0x4142 JUMPI JUMPDEST POP SWAP3 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x13C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4163 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4169 JUMPI JUMPDEST PUSH2 0x415B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x4133 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4151 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x4196 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x419C JUMPI JUMPDEST PUSH2 0x418E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x40DA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4184 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST SWAP1 PUSH2 0x41B1 PUSH2 0x2116 JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x41BD DUP4 PUSH2 0x4082 JUMP JUMPDEST SWAP3 PUSH2 0x41DB PUSH2 0x41D4 DUP3 PUSH2 0x41CF PUSH1 0x4 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x141A JUMP JUMPDEST PUSH1 0x4 PUSH2 0x160B JUMP JUMPDEST PUSH2 0x41F5 PUSH2 0x41F0 PUSH2 0x41EB PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x4222 PUSH0 PUSH2 0x420A PUSH4 0xA9059CBB SWAP7 SWAP5 DUP9 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP6 PUSH2 0x422D PUSH2 0x4216 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x449F JUMPI PUSH2 0x4473 JUMPI JUMPDEST POP PUSH2 0x4246 DUP2 PUSH2 0x4082 JUMP JUMPDEST PUSH2 0x4273 PUSH1 0x20 PUSH2 0x425D PUSH2 0x4258 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x426B PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4283 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x446E JUMPI PUSH0 SWAP2 PUSH2 0x4440 JUMPI JUMPDEST POP SWAP1 PUSH2 0x42C4 PUSH1 0x20 PUSH2 0x42AE PUSH2 0x42A9 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x42BC PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x42D4 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x443B JUMPI PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x440E JUMPI JUMPDEST POP SWAP4 PUSH2 0x4304 PUSH2 0x42FF PUSH2 0x42FA PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x4331 PUSH0 PUSH2 0x4319 PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP7 PUSH2 0x433C PUSH2 0x4325 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x4409 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x43DE JUMPI JUMPDEST POP PUSH2 0x436A PUSH2 0x4365 PUSH2 0x4360 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x438D PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x4398 PUSH2 0x4381 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x43D9 JUMPI PUSH2 0x43AD JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x43CD SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x43D2 JUMPI JUMPDEST PUSH2 0x43C5 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x43A7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x43BB JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x43FD SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x4402 JUMPI JUMPDEST PUSH2 0x43F5 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x434F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x43EB JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x442E SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x4434 JUMPI JUMPDEST PUSH2 0x4426 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x42E8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x441C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x4461 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4467 JUMPI JUMPDEST PUSH2 0x4459 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x4295 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x444F JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x4493 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4498 JUMPI JUMPDEST PUSH2 0x448B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x423C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4481 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x44D0 PUSH2 0x326E JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x44E3 SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x5843 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x450E PUSH2 0x4515 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x4504 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4522 SWAP2 SUB PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x4533 DUP2 DUP4 SWAP1 PUSH2 0x395C JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x4567 PUSH2 0x4561 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST SUB PUSH2 0x4574 JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x4587 PUSH2 0x4581 DUP8 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT PUSH2 0x45AD JUMPI PUSH2 0x45A4 SWAP4 SWAP5 PUSH2 0x459C SWAP2 SWAP4 SWAP3 PUSH2 0x4517 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x5843 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x456D JUMP JUMPDEST POP PUSH2 0x45EC DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x45BD PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x44E5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x460C PUSH2 0x4606 PUSH2 0x4601 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x4686 JUMPI DUP2 PUSH2 0x462C PUSH2 0x4626 PUSH2 0x4621 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x463F JUMPI PUSH2 0x463D SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x569D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4682 PUSH2 0x464B PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x4653 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x46C9 PUSH2 0x4692 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x469A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x46D5 PUSH2 0x3889 JUMP JUMPDEST PUSH2 0x46EE PUSH2 0x46E8 PUSH2 0x46E3 PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x46F5 JUMPI JUMP JUMPDEST PUSH2 0x4737 PUSH2 0x4700 PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x4708 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4743 PUSH2 0x599D JUMP JUMPDEST PUSH2 0x474B PUSH2 0x4783 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4759 PUSH1 0xFF SWAP2 PUSH2 0x15B2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4778 PUSH2 0x4773 PUSH2 0x477F SWAP3 PUSH2 0x338B JUMP JUMPDEST PUSH2 0x3397 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x474D JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4797 PUSH2 0x478E PUSH2 0x4AEE JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x4763 JUMP JUMPDEST PUSH2 0x479F PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x47D5 PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 PUSH2 0x47CC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x47E2 PUSH2 0x473B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x47ED SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47F9 ADDRESS PUSH2 0x47E4 JUMP JUMPDEST PUSH2 0x482B PUSH2 0x4825 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x4875 JUMPI JUMPDEST PUSH2 0x4839 JUMPI JUMP JUMPDEST PUSH2 0x4841 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4871 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x487E PUSH2 0x59F0 JUMP JUMPDEST PUSH2 0x48B0 PUSH2 0x48AA PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x4833 JUMP JUMPDEST POP PUSH2 0x48C0 PUSH2 0x46CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x48CB SWAP1 PUSH2 0x48B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x48D6 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x48E2 SWAP1 PUSH2 0x48CD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x48EE SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x48FA DUP2 PUSH2 0x7EB JUMP JUMPDEST SUB PUSH2 0x4901 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x4912 DUP3 PUSH2 0x48F1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x492D JUMPI PUSH2 0x492A SWAP2 PUSH0 ADD PUSH2 0x4905 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4960 PUSH1 0x20 PUSH2 0x494A PUSH2 0x4945 DUP7 PUSH2 0x48D9 JUMP JUMPDEST PUSH2 0x48E5 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x4958 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4970 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x4A40 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x49D1 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x4992 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x49CD SWAP1 PUSH2 0x499E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x49EC PUSH2 0x49E6 PUSH2 0x49E1 PUSH2 0x294B JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST SWAP2 PUSH2 0x7EB JUMP JUMPDEST SUB PUSH2 0x4A01 JUMPI PUSH2 0x49FC SWAP3 SWAP4 POP PUSH2 0x5A1A JUMP JUMPDEST PUSH2 0x4990 JUMP JUMPDEST PUSH2 0x4A3C DUP5 PUSH2 0x4A0D PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x7FB JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4A62 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4A69 JUMPI JUMPDEST PUSH2 0x4A5A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4914 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x497D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4A50 JUMP JUMPDEST PUSH2 0x4A79 ADDRESS PUSH2 0x47E4 JUMP JUMPDEST PUSH2 0x4AAB PUSH2 0x4AA5 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x4AB2 JUMPI JUMP JUMPDEST PUSH2 0x4ABA PUSH2 0x231 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4AEA PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH2 0x4B26 PUSH2 0x4B21 PUSH2 0x4B2B SWAP3 PUSH2 0x3EC4 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4B40 PUSH2 0x4B3B PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x4B8F PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x4B5D PUSH2 0x4B58 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x4B84 PUSH2 0x4B6F ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x4B78 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4D6C JUMPI PUSH2 0x4BCC SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x4D39 JUMPI JUMPDEST POP PUSH2 0x4BC1 SWAP1 PUSH2 0x4BB5 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4D34 JUMPI PUSH0 SWAP2 PUSH2 0x4D06 JUMPI JUMPDEST POP DUP1 PUSH2 0x4BFB PUSH2 0x4BF5 PUSH2 0x4BF0 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x4CF7 JUMPI PUSH2 0x4C16 SWAP1 PUSH2 0x4C10 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST SWAP1 PUSH2 0x141A JUMP JUMPDEST JUMPDEST PUSH2 0x4C4B PUSH1 0x20 PUSH2 0x4C35 PUSH2 0x4C30 PUSH2 0x4C2B PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x4C43 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4C5B PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x4CF2 JUMPI PUSH2 0x4CA4 PUSH2 0x4CA9 SWAP2 PUSH2 0x4CAF SWAP4 PUSH0 SWAP2 PUSH2 0x4CC4 JUMPI JUMPDEST POP PUSH2 0x4C9F PUSH2 0x4C99 PUSH2 0x4C94 PUSH1 0x1 SWAP4 PUSH2 0x4C8E PUSH1 0x2 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST SWAP2 PUSH2 0x3F73 JUMP JUMPDEST PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x4CB7 JUMPI JUMPDEST JUMP JUMPDEST PUSH2 0x4CBF PUSH2 0x51AF JUMP JUMPDEST PUSH2 0x4CB5 JUMP JUMPDEST PUSH2 0x4CE5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4CEB JUMPI JUMPDEST PUSH2 0x4CDD DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x4C77 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4CD3 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST POP PUSH2 0x4D01 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x4C17 JUMP JUMPDEST PUSH2 0x4D27 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4D2D JUMPI JUMPDEST PUSH2 0x4D1F DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x4BDE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4D15 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x4BC1 SWAP2 SWAP4 POP PUSH2 0x4D5E SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x4D65 JUMPI JUMPDEST PUSH2 0x4D56 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x4BA8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4D4C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST DUP1 PUSH2 0x4D8C PUSH2 0x4D86 PUSH2 0x4D81 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x4DA8 JUMPI PUSH2 0x4DA6 SWAP2 PUSH2 0x4D9E PUSH0 PUSH2 0x3245 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x569D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4DEB PUSH2 0x4DB4 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x4DBC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4DF7 PUSH2 0x4FA8 JUMP JUMPDEST PUSH2 0x4E0F PUSH2 0x4E05 PUSH0 DUP4 ADD PUSH2 0x126E JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x34FB JUMP JUMPDEST SWAP1 PUSH2 0x4E43 PUSH2 0x4E3D PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP2 PUSH2 0x31CE JUMP JUMPDEST SWAP2 PUSH2 0x4E4C PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x4E56 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x4E63 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x4E6B PUSH2 0x4E6D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4E82 PUSH2 0x4E78 PUSH2 0x4AEE JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP2 ADD PUSH2 0x4763 JUMP JUMPDEST PUSH2 0x4E8A PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x4EC0 PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 PUSH2 0x4EB7 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x4ECD PUSH2 0x4E5B JUMP JUMPDEST JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x4F04 SWAP1 PUSH2 0x4EFF PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x4F06 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F0F SWAP1 PUSH2 0x5B7B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F1A SWAP1 PUSH2 0x4EF3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4F2E SWAP2 PUSH2 0x4F29 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x4F30 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4F3A SWAP2 PUSH2 0x5DBE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4F46 SWAP2 PUSH2 0x4F1C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F50 PUSH2 0x5AA3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F5A PUSH2 0x4F48 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F64 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x4F6C PUSH2 0x4F6E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F76 PUSH2 0x5DF9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F80 PUSH2 0x4F5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F8A PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x4F92 PUSH2 0x4F94 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F9C PUSH2 0x5E2B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4FA6 PUSH2 0x4F82 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6C61626C65000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631795661756C743A204E6F20696E7465726573742061766169 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x5026 PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x502F DUP2 PUSH2 0x4FCC JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5048 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5019 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5052 JUMPI JUMP JUMPDEST PUSH2 0x505A PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x508A PUSH1 0x4 DUP3 ADD PUSH2 0x5033 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x42616C756E695631795661756C743A2052656465656D204661696C6564000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x50C2 PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x50CB DUP2 PUSH2 0x508E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x50E4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x50B5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x50EE JUMPI JUMP JUMPDEST PUSH2 0x50F6 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5126 PUSH1 0x4 DUP3 ADD PUSH2 0x50CF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5133 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x513F SWAP1 PUSH2 0x512A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x514B SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5183 PUSH2 0x518A SWAP5 PUSH2 0x5179 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x516F PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x51AD SWAP3 SWAP5 SWAP4 PUSH2 0x51A6 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x51C1 PUSH2 0x51BC PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x5210 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x51DE PUSH2 0x51D9 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5205 PUSH2 0x51F0 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x51F9 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5666 JUMPI PUSH2 0x524D SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x5633 JUMPI JUMPDEST POP PUSH2 0x5242 SWAP1 PUSH2 0x5236 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x562E JUMPI PUSH0 SWAP2 PUSH2 0x5600 JUMPI JUMPDEST POP DUP1 PUSH2 0x527C PUSH2 0x5276 PUSH2 0x5271 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x55F1 JUMPI PUSH2 0x5297 SWAP1 PUSH2 0x5291 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST SWAP1 PUSH2 0x141A JUMP JUMPDEST JUMPDEST PUSH2 0x52B4 DUP2 PUSH2 0x52AE PUSH2 0x52A8 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x504B JUMP JUMPDEST PUSH2 0x52F5 PUSH1 0x20 PUSH2 0x52CB PUSH2 0x52C6 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0xC6E6F592 SWAP1 PUSH2 0x52EA DUP6 SWAP3 PUSH2 0x52DE PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x55EC JUMPI PUSH0 SWAP2 PUSH2 0x55BE JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x531C PUSH2 0x5317 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0xBA087652 SWAP3 SWAP1 PUSH2 0x5351 PUSH0 PUSH2 0x5330 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP6 PUSH2 0x535C PUSH2 0x533D ADDRESS PUSH2 0x127B JUMP JUMPDEST PUSH2 0x5345 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13E8 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x55B9 JUMPI PUSH0 SWAP2 PUSH2 0x558B JUMPI JUMPDEST POP PUSH2 0x538B DUP2 PUSH2 0x5385 PUSH2 0x537F PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x50E7 JUMP JUMPDEST PUSH2 0x53B8 PUSH1 0x20 PUSH2 0x53A2 PUSH2 0x539D PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x53B0 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x53C8 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5586 JUMPI PUSH2 0x53E3 SWAP2 PUSH0 SWAP2 PUSH2 0x5558 JUMPI JUMPDEST POP PUSH2 0x5136 JUMP JUMPDEST PUSH2 0x53FC PUSH2 0x53F7 PUSH2 0x53F2 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x540E DUP4 PUSH2 0x5142 JUMP JUMPDEST SWAP1 PUSH2 0x542C PUSH0 DUP8 SWAP7 PUSH2 0x5437 PUSH2 0x5420 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x5553 JUMPI PUSH2 0x5451 SWAP3 PUSH2 0x5527 JUMPI JUMPDEST POP PUSH2 0x5142 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 PUSH2 0x5462 PUSH0 PUSH2 0x126E JUMP JUMPDEST SWAP1 PUSH2 0x5494 PUSH0 PUSH2 0x5471 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST SWAP6 PUSH2 0x549F DUP9 PUSH2 0x547F ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP1 PUSH2 0x5488 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x1203 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x514E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x5522 JUMPI PUSH2 0x54F6 JUMPI JUMPDEST POP CALLER SWAP1 SWAP2 PUSH2 0x54DC PUSH32 0x1CBC5AB135991BD2B6A4B034A04AA2AA086DAC1371CB9B16B8B5E2ED6B036BED SWAP3 PUSH2 0x31CE JUMP JUMPDEST SWAP3 PUSH2 0x54F1 PUSH2 0x54E8 PUSH2 0x231 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x518C JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x5516 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x551B JUMPI JUMPDEST PUSH2 0x550E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x54AE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5504 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x5547 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x554C JUMPI JUMPDEST PUSH2 0x553F DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x544B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5535 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x5579 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x557F JUMPI JUMPDEST PUSH2 0x5571 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x53DD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5567 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x55AC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x55B2 JUMPI JUMPDEST PUSH2 0x55A4 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x536E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x559A JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x55DF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x55E5 JUMPI JUMPDEST PUSH2 0x55D7 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x5307 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x55CD JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST POP PUSH2 0x55FB PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x5298 JUMP JUMPDEST PUSH2 0x5621 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5627 JUMPI JUMPDEST PUSH2 0x5619 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x525F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x560F JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x5242 SWAP2 SWAP4 POP PUSH2 0x5658 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x565F JUMPI JUMPDEST PUSH2 0x5650 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x5229 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5646 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x569A SWAP2 ADD PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x56A8 PUSH2 0x44A4 JUMP JUMPDEST DUP2 PUSH2 0x56C3 PUSH2 0x56BD PUSH2 0x56B8 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x57AE JUMPI PUSH2 0x56EA DUP4 PUSH2 0x56E4 PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x56DF DUP4 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x2205 JUMP JUMPDEST SWAP1 PUSH2 0x160B JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x5706 PUSH2 0x5700 PUSH2 0x56FB PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x577F JUMPI PUSH2 0x572E SWAP1 PUSH2 0x5728 PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x5723 DUP4 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x4517 JUMP JUMPDEST SWAP1 PUSH2 0x160B JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x577A PUSH2 0x5768 PUSH2 0x5762 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP4 PUSH2 0x5771 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x57A9 SWAP1 PUSH2 0x57A3 PUSH2 0x5794 PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x31DA JUMP JUMPDEST SWAP2 PUSH2 0x579E DUP4 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x568F JUMP JUMPDEST SWAP1 PUSH2 0x160B JUMP JUMPDEST PUSH2 0x572F JUMP JUMPDEST PUSH2 0x57C3 PUSH2 0x57BE PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x2154 JUMP JUMPDEST DUP1 PUSH2 0x57D6 PUSH2 0x57D0 DUP7 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT PUSH2 0x5800 JUMPI PUSH2 0x57E9 PUSH2 0x57FB SWAP2 DUP6 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH2 0x57F6 PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x160B JUMP JUMPDEST PUSH2 0x56EB JUMP JUMPDEST SWAP2 PUSH2 0x583F SWAP2 POP SWAP2 SWAP3 PUSH2 0x5810 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x44E5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP3 PUSH2 0x584D PUSH2 0x44A4 JUMP JUMPDEST DUP3 PUSH2 0x5868 PUSH2 0x5862 PUSH2 0x585D PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x5956 JUMPI DUP5 PUSH2 0x5888 PUSH2 0x5882 PUSH2 0x587D PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x590F JUMPI PUSH2 0x58AF SWAP1 PUSH2 0x58AA PUSH2 0x58A3 PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x3946 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x160B JUMP JUMPDEST PUSH2 0x58B9 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x5904 PUSH2 0x58F2 PUSH2 0x58EC PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP4 PUSH2 0x58FB PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x58B4 JUMP JUMPDEST PUSH2 0x5952 PUSH2 0x591B PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x5923 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5999 PUSH2 0x5962 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x596A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x59AE PUSH2 0x59A8 PUSH2 0x29BD JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x59B4 JUMPI JUMP JUMPDEST PUSH2 0x59BC PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x59EC PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x59F8 PUSH2 0x326E JUMP JUMPDEST POP PUSH2 0x5A13 PUSH0 PUSH2 0x5A0D PUSH2 0x5A08 PUSH2 0x294B JUMP JUMPDEST PUSH2 0x5E35 JUMP JUMPDEST ADD PUSH2 0x126E JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5A24 DUP3 PUSH2 0x5E38 JUMP JUMPDEST DUP2 PUSH2 0x5A4F PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x31CE JUMP JUMPDEST SWAP1 PUSH2 0x5A58 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x5A62 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x5A6E DUP2 PUSH2 0x5A16 JUMP JUMPDEST PUSH2 0x5A80 PUSH2 0x5A7A PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x5A94 JUMPI PUSH2 0x5A90 SWAP2 PUSH2 0x5F48 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x5A9E PUSH2 0x5EAD JUMP JUMPDEST PUSH2 0x5A92 JUMP JUMPDEST PUSH2 0x5AB4 PUSH2 0x5AAE PUSH2 0x5F77 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x5ABA JUMPI JUMP JUMPDEST PUSH2 0x5AC2 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5AF2 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5B07 SWAP1 PUSH2 0x5B02 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x5B09 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x5B24 PUSH2 0x5B1E PUSH2 0x5B19 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x5B34 JUMPI PUSH2 0x5B32 SWAP1 PUSH2 0x4DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B77 PUSH2 0x5B40 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x5B48 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5B84 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5B98 SWAP2 PUSH2 0x5B93 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x5D9A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x5BE2 SWAP2 MUL SWAP2 PUSH2 0x5BDC PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x5BA4 JUMP JUMPDEST SWAP3 PUSH2 0x5BA4 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5C02 PUSH2 0x5BFD PUSH2 0x5C0A SWAP4 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0x1608 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x5BA8 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5C20 SWAP2 PUSH2 0x5C1A PUSH2 0x213C JUMP JUMPDEST SWAP2 PUSH2 0x5BEC JUMP JUMPDEST JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x5C2E JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x5C3B PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x5C0E JUMP JUMPDEST ADD PUSH2 0x5C23 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x5C51 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5C5D PUSH2 0x5C82 SWAP4 PUSH2 0x2027 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x5C69 DUP5 PUSH2 0x5B9A JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x5C8A JUMPI JUMPDEST PUSH2 0x5C7B SWAP1 PUSH2 0x5B9A JUMP JUMPDEST ADD SWAP1 PUSH2 0x5C22 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x5C4C JUMP JUMPDEST SWAP2 POP PUSH2 0x5C7B DUP2 SWAP3 SWAP1 POP PUSH2 0x5C72 JUMP JUMPDEST SWAP1 PUSH2 0x5CA8 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0x5A9 JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x5CB7 SWAP2 PUSH2 0x5C98 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5CC9 DUP2 PUSH2 0x326 JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x5D89 JUMPI PUSH2 0x5CED DUP3 PUSH2 0x5CE7 DUP6 SLOAD PUSH2 0x1FF4 JUMP JUMPDEST DUP6 PUSH2 0x5C41 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x5D21 JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x5D10 SWAP4 PUSH0 SWAP3 PUSH2 0x5D15 JUMPI JUMPDEST POP POP PUSH2 0x5CAD JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x5D09 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x5D30 DUP6 PUSH2 0x2027 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x5D71 JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x5D57 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x5D13 JUMP JUMPDEST PUSH2 0x5D67 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x5C98 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x5D4B JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x5D33 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 PUSH2 0x5D98 SWAP2 PUSH2 0x5CBF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x5DBC SWAP3 PUSH2 0x5DB5 PUSH2 0x5DAB PUSH2 0x44A4 JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x5D8E JUMP JUMPDEST SWAP2 ADD PUSH2 0x5D8E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5DC8 SWAP2 PUSH2 0x5B86 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5DD2 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x5DDA PUSH2 0x5DDC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5DF7 PUSH2 0x5DE7 PUSH2 0x566B JUMP JUMPDEST PUSH0 PUSH2 0x5DF0 PUSH2 0x3F8F JUMP JUMPDEST SWAP2 ADD PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E01 PUSH2 0x5DCA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E0B PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x5E13 PUSH2 0x5E15 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E29 PUSH2 0x5E20 PUSH2 0x4AEE JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x4763 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E33 PUSH2 0x5E03 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x5E4C PUSH2 0x5E46 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x5E6E JUMPI PUSH2 0x5E6C SWAP1 PUSH0 PUSH2 0x5E66 PUSH2 0x5E61 PUSH2 0x294B JUMP JUMPDEST PUSH2 0x5E35 JUMP JUMPDEST ADD PUSH2 0x34FB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5EA9 SWAP1 PUSH2 0x5E7A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x5EC0 PUSH2 0x5EBA PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x5EC7 JUMPI JUMP JUMPDEST PUSH2 0x5ECF PUSH2 0x231 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5EFF PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5F1A PUSH2 0x5F15 DUP4 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x5F3A JUMPI PUSH2 0x5F2F RETURNDATASIZE PUSH2 0x5F08 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x5F42 PUSH2 0x5F03 JUMP JUMPDEST SWAP1 PUSH2 0x5F38 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5F74 SWAP4 PUSH2 0x5F56 PUSH2 0x5F03 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x5F6B PUSH2 0x5F1F JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x5F95 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5F7F PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x5F92 PUSH0 PUSH2 0x5F8C PUSH2 0x4ECF JUMP JUMPDEST ADD PUSH2 0x32D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5FA9 SWAP1 PUSH2 0x5FA2 PUSH2 0x5F03 JUMP JUMPDEST POP ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH0 EQ PUSH2 0x5FB5 JUMPI POP PUSH2 0x6039 JUMP JUMPDEST PUSH2 0x5FBE DUP3 PUSH2 0x5A16 JUMP JUMPDEST PUSH2 0x5FD0 PUSH2 0x5FCA PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ DUP1 PUSH2 0x601E JUMPI JUMPDEST PUSH2 0x5FDF JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x601A SWAP1 PUSH2 0x5FEB PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x6033 PUSH2 0x602D PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x5FD7 JUMP JUMPDEST PUSH2 0x6042 DUP2 PUSH2 0x5A16 JUMP JUMPDEST PUSH2 0x6054 PUSH2 0x604E PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x6063 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x606B PUSH2 0x231 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x609B PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0x25 PUSH21 0x6DC8C176E7250C424280085F35E8FB8FF91C456A89 0xD0 0xA6 0xEA PREVRANDAO 0xDB DUP2 0xBC 0xDE PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"773:9941:68:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;67:736:42:-;;;:::i;:::-;:::o;701:3153:5:-;;;:::i;:::-;:::o;950:3411:6:-;;;:::i;:::-;:::o;1576:10896:3:-;;;:::i;:::-;:::o;278:1764:8:-;;;:::i;:::-;:::o;277:405:13:-;;;:::i;:::-;:::o;203:2575:12:-;;;:::i;:::-;:::o;749:3275:0:-;;;:::i;:::-;:::o;688:505:4:-;;;:::i;:::-;:::o;773:9941:68:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5606:2:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5606::o"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":791,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":674,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":5353,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_address":{"entryPoint":3518,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_addresst_uint256":{"entryPoint":1191,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_addresst_bytes":{"entryPoint":1916,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_addresst_uint256":{"entryPoint":966,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":1827,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_string":{"entryPoint":2597,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":5218,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":1881,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes32_fromMemory":{"entryPoint":18708,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_string":{"entryPoint":2651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_stringt_stringt_addresst_addresst_addresst_address":{"entryPoint":3617,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_stringt_stringt_addresst_addresst_addresst_addresst_uint64":{"entryPoint":2734,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_t_bool_fromMemory":{"entryPoint":5203,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":18693,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":4743,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address":{"entryPoint":2290,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_address_fromMemory":{"entryPoint":5368,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_uint8_fromMemory":{"entryPoint":4652,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256":{"entryPoint":602,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":4758,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_address":{"entryPoint":689,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint64":{"entryPoint":2719,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":4637,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_string_storage":{"entryPoint":8380,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":2424,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address_uint256":{"entryPoint":8659,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_address":{"entryPoint":20814,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":5248,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_uint256_uint256":{"entryPoint":17637,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bool":{"entryPoint":1029,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool_to_bool":{"entryPoint":1016,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes32":{"entryPoint":2043,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_to_bytes32":{"entryPoint":2030,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_rational_by":{"entryPoint":14817,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_rational_by_to_uint64":{"entryPoint":14804,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":889,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":840,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":8240,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":4343,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335f":{"entryPoint":10827,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":10802,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_53fb":{"entryPoint":14114,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec":{"entryPoint":14088,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_5a2a":{"entryPoint":20505,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_8914":{"entryPoint":13932,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_c766":{"entryPoint":5437,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_df2e":{"entryPoint":20661,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f247":{"entryPoint":4188,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f9fc":{"entryPoint":13776,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple":{"entryPoint":734,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":2437,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":13958,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_4753":{"entryPoint":4369,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_5a2a":{"entryPoint":20531,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_c766":{"entryPoint":5463,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_df2e":{"entryPoint":20687,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_f247":{"entryPoint":4213,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral_f9fc":{"entryPoint":13802,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_uint64":{"entryPoint":13255,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":1117,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_address":{"entryPoint":10918,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint256_address_address":{"entryPoint":5096,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_to_uint256":{"entryPoint":1104,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256_uint256":{"entryPoint":20876,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint64":{"entryPoint":13242,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint8":{"entryPoint":1375,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint8_to_uint8":{"entryPoint":1362,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_memory":{"entryPoint":1760,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_bytes":{"entryPoint":24328,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":3216,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":561,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":1781,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2562,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":8231,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_bytes":{"entryPoint":23062,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_string":{"entryPoint":806,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_string":{"entryPoint":8222,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_string_fromStack":{"entryPoint":810,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":8709,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":5062,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_rational_by_uint8":{"entryPoint":4936,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":4964,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":5146,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint8":{"entryPoint":4900,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":23617,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_address":{"entryPoint":642,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":1011,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bytes32":{"entryPoint":2027,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_address":{"entryPoint":3389,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_bool":{"entryPoint":10646,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IBaluniV1Registry":{"entryPoint":5283,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_contract_IYearnVault":{"entryPoint":4465,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint256":{"entryPoint":1453,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_from_storage_uint64":{"entryPoint":13021,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by":{"entryPoint":10540,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_2_by":{"entryPoint":16068,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by":{"entryPoint":4824,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_rational_by_1":{"entryPoint":14761,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by":{"entryPoint":15491,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_by_1":{"entryPoint":4115,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint160":{"entryPoint":617,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint256":{"entryPoint":579,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint64":{"entryPoint":2686,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint8":{"entryPoint":1356,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":23586,"id":null,"parameterSlots":2,"returnSlots":0},"constant_ENTERED":{"entryPoint":16099,"id":null,"parameterSlots":0,"returnSlots":1},"constant_IMPLEMENTATION_SLOT":{"entryPoint":10571,"id":null,"parameterSlots":0,"returnSlots":1},"constant_NOT_ENTERED":{"entryPoint":16271,"id":null,"parameterSlots":0,"returnSlots":1},"constant_UPGRADE_INTERFACE_VERSION":{"entryPoint":3314,"id":null,"parameterSlots":0,"returnSlots":1},"convert_address_to_address":{"entryPoint":12750,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Oracle":{"entryPoint":8635,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Registry":{"entryPoint":13678,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IBaluniV1Swapper":{"entryPoint":20790,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC1822Proxiable":{"entryPoint":18649,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20":{"entryPoint":4800,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IERC20Metadata":{"entryPoint":4587,"id":null,"parameterSlots":1,"returnSlots":1},"convert_address_to_contract_IYearnVault":{"entryPoint":13607,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_string_storage_to_string":{"entryPoint":8427,"id":null,"parameterSlots":1,"returnSlots":1},"convert_bool_to_bool":{"entryPoint":13195,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_BaluniV1YearnVault_to_address":{"entryPoint":4731,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Oracle_to_address":{"entryPoint":8647,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_address":{"entryPoint":5341,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":13690,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IBaluniV1Swapper_to_address":{"entryPoint":20802,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC1822Proxiable_to_address":{"entryPoint":18661,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20Metadata_to_address":{"entryPoint":4599,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IERC20_to_address":{"entryPoint":4812,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IYearnVault_to_address":{"entryPoint":4563,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_IYearnVault_to_contract_IYearnVault":{"entryPoint":13619,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_Initializable_to_address":{"entryPoint":14792,"id":null,"parameterSlots":1,"returnSlots":1},"convert_contract_UUPSUpgradeable_to_address":{"entryPoint":18404,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_0_by_1_to_uint256":{"entryPoint":4121,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_1_by_1_to_uint256":{"entryPoint":16243,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_2_by_1_to_uint256":{"entryPoint":16071,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_address":{"entryPoint":12869,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_bytes32":{"entryPoint":10543,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint160":{"entryPoint":12841,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint256":{"entryPoint":15494,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint64":{"entryPoint":14764,"id":null,"parameterSlots":1,"returnSlots":1},"convert_rational_by_to_uint8":{"entryPoint":4827,"id":null,"parameterSlots":1,"returnSlots":1},"convert_stringliteral_2ade_to_string":{"entryPoint":3303,"id":null,"parameterSlots":0,"returnSlots":1},"convert_t_rational_by_to_t_uint64":{"entryPoint":14733,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_by_to_t_uint8":{"entryPoint":19218,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_address":{"entryPoint":4551,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Oracle":{"entryPoint":8623,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Registry":{"entryPoint":13666,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IBaluniV1Swapper":{"entryPoint":20778,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC1822Proxiable":{"entryPoint":18637,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20":{"entryPoint":4788,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IERC20Metadata":{"entryPoint":4575,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_contract_IYearnVault":{"entryPoint":13595,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint160_to_uint160":{"entryPoint":4523,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint256_to_uint256":{"entryPoint":5612,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint64_to_uint64":{"entryPoint":13096,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_string":{"entryPoint":8393,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_string_to_string":{"entryPoint":23743,"id":null,"parameterSlots":2,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1816,"id":null,"parameterSlots":3,"returnSlots":0},"copy_literal_to_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":3278,"id":null,"parameterSlots":0,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":819,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_ceil":{"entryPoint":23450,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":3336,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_accumulatedAssetB":{"entryPoint":3942,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allTimeInterest":{"entryPoint":2185,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_allowance":{"entryPoint":3563,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":1050,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":2320,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_baseAsset":{"entryPoint":3465,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_buy":{"entryPoint":3111,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_decimals":{"entryPoint":1396,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_deposit":{"entryPoint":2238,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":3765,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_interestEarned":{"entryPoint":1562,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_lastDeposit":{"entryPoint":1509,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_name":{"entryPoint":913,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":2952,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_pause":{"entryPoint":2511,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_paused":{"entryPoint":2117,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_proxiableUUID":{"entryPoint":2064,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quoteAsset":{"entryPoint":4010,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registry":{"entryPoint":2458,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reinitialize":{"entryPoint":2894,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_renounceOwnership":{"entryPoint":2373,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_symbol":{"entryPoint":3005,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":1138,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalValuation":{"entryPoint":1303,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transfer":{"entryPoint":3162,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":1249,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferOwnership":{"entryPoint":3876,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unitPrice":{"entryPoint":3823,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unpause":{"entryPoint":1615,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_upgradeToAndCall":{"entryPoint":1985,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_withdraw":{"entryPoint":739,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_yearnVault":{"entryPoint":3058,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":8180,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_dynamict_address":{"entryPoint":3414,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_dynamict_uint256":{"entryPoint":1456,"id":null,"parameterSlots":2,"returnSlots":1},"extract_from_storage_value_offset_8t_bool":{"entryPoint":12988,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_address":{"entryPoint":4698,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":10652,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IBaluniV1Registry":{"entryPoint":5308,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_contract_IYearnVault":{"entryPoint":4490,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint256":{"entryPoint":8512,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint64":{"entryPoint":13034,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":24351,"id":null,"parameterSlots":0,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":23725,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":1719,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init":{"entryPoint":20284,"id":698,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_inner":{"entryPoint":20272,"id":null,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained":{"entryPoint":23998,"id":726,"parameterSlots":2,"returnSlots":0},"fun_ERC20_init_unchained_inner":{"entryPoint":23962,"id":null,"parameterSlots":2,"returnSlots":0},"fun_Ownable_init":{"entryPoint":20241,"id":54,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_inner":{"entryPoint":20230,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained":{"entryPoint":23419,"id":81,"parameterSlots":1,"returnSlots":0},"fun_Ownable_init_unchained_inner":{"entryPoint":23305,"id":null,"parameterSlots":1,"returnSlots":0},"fun_Pausable_init":{"entryPoint":20382,"id":1345,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_inner":{"entryPoint":20372,"id":null,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_unchained":{"entryPoint":24107,"id":1363,"parameterSlots":0,"returnSlots":0},"fun_Pausable_init_unchained_inner":{"entryPoint":24085,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init":{"entryPoint":20344,"id":1509,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_inner":{"entryPoint":20334,"id":null,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained":{"entryPoint":24057,"id":1527,"parameterSlots":0,"returnSlots":0},"fun_ReentrancyGuard_init_unchained_inner":{"entryPoint":24028,"id":null,"parameterSlots":0,"returnSlots":0},"fun_UUPSUpgradeable_init":{"entryPoint":20306,"id":502,"parameterSlots":0,"returnSlots":0},"fun__approve":{"entryPoint":17621,"id":1130,"parameterSlots":3,"returnSlots":0},"fun__buy":{"entryPoint":20911,"id":21205,"parameterSlots":0,"returnSlots":0},"fun__pause":{"entryPoint":20165,"id":1444,"parameterSlots":0,"returnSlots":0},"fun__pause_inner":{"entryPoint":20077,"id":null,"parameterSlots":0,"returnSlots":0},"fun__transfer":{"entryPoint":17904,"id":954,"parameterSlots":3,"returnSlots":0},"fun__transferOwnership":{"entryPoint":19951,"id":193,"parameterSlots":1,"returnSlots":0},"fun_allowance":{"entryPoint":14684,"id":851,"parameterSlots":2,"returnSlots":1},"fun_approve":{"entryPoint":8474,"id":875,"parameterSlots":2,"returnSlots":1},"fun_approve_1198":{"entryPoint":22595,"id":1198,"parameterSlots":4,"returnSlots":0},"fun_authorizeUpgrade":{"entryPoint":18626,"id":20921,"parameterSlots":1,"returnSlots":0},"fun_balanceOf":{"entryPoint":12784,"id":803,"parameterSlots":1,"returnSlots":1},"fun_burn":{"entryPoint":16387,"id":1112,"parameterSlots":2,"returnSlots":0},"fun_buy":{"entryPoint":14618,"id":21217,"parameterSlots":0,"returnSlots":0},"fun_buy_inner":{"entryPoint":14608,"id":null,"parameterSlots":0,"returnSlots":0},"fun_checkInitializing":{"entryPoint":23203,"id":370,"parameterSlots":0,"returnSlots":0},"fun_checkNonPayable":{"entryPoint":24237,"id":2047,"parameterSlots":0,"returnSlots":0},"fun_checkNotDelegated":{"entryPoint":19056,"id":578,"parameterSlots":0,"returnSlots":0},"fun_checkOwner":{"entryPoint":18125,"id":122,"parameterSlots":0,"returnSlots":0},"fun_checkProxy":{"entryPoint":18416,"id":562,"parameterSlots":0,"returnSlots":0},"fun_decimals":{"entryPoint":10036,"id":767,"parameterSlots":0,"returnSlots":1},"fun_deposit":{"entryPoint":12738,"id":21102,"parameterSlots":2,"returnSlots":0},"fun_deposit_inner":{"entryPoint":10953,"id":null,"parameterSlots":2,"returnSlots":0},"fun_functionDelegateCall":{"entryPoint":24392,"id":2849,"parameterSlots":2,"returnSlots":1},"fun_getAddressSlot":{"entryPoint":24117,"id":2992,"parameterSlots":1,"returnSlots":1},"fun_getERC20Storage":{"entryPoint":17572,"id":682,"parameterSlots":0,"returnSlots":1},"fun_getImplementation":{"entryPoint":23024,"id":1806,"parameterSlots":0,"returnSlots":1},"fun_getInitializableStorage":{"entryPoint":20175,"id":447,"parameterSlots":0,"returnSlots":1},"fun_getOwnableStorage":{"entryPoint":20392,"id":25,"parameterSlots":0,"returnSlots":1},"fun_getPausableStorage":{"entryPoint":19182,"id":1319,"parameterSlots":0,"returnSlots":1},"fun_getReentrancyGuardStorage":{"entryPoint":22123,"id":1497,"parameterSlots":0,"returnSlots":1},"fun_haircut":{"entryPoint":16514,"id":21504,"parameterSlots":1,"returnSlots":1},"fun_handleWithdrawB":{"entryPoint":16808,"id":21873,"parameterSlots":2,"returnSlots":1},"fun_initialize":{"entryPoint":15475,"id":20819,"parameterSlots":6,"returnSlots":0},"fun_initialize_inner":{"entryPoint":15226,"id":null,"parameterSlots":6,"returnSlots":0},"fun_interestEarned":{"entryPoint":10058,"id":21537,"parameterSlots":0,"returnSlots":1},"fun_isInitializing":{"entryPoint":24439,"id":438,"parameterSlots":0,"returnSlots":1},"fun_mint":{"entryPoint":19825,"id":1079,"parameterSlots":2,"returnSlots":0},"fun_msgSender":{"entryPoint":17608,"id":1275,"parameterSlots":0,"returnSlots":1},"fun_name":{"entryPoint":8439,"id":742,"parameterSlots":0,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":16284,"id":1579,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":16112,"id":1563,"parameterSlots":0,"returnSlots":0},"fun_owner":{"entryPoint":14473,"id":105,"parameterSlots":0,"returnSlots":1},"fun_pause":{"entryPoint":12972,"id":21282,"parameterSlots":0,"returnSlots":0},"fun_pause_inner":{"entryPoint":12962,"id":null,"parameterSlots":0,"returnSlots":0},"fun_paused":{"entryPoint":10685,"id":1395,"parameterSlots":0,"returnSlots":1},"fun_processInterest":{"entryPoint":19246,"id":21272,"parameterSlots":0,"returnSlots":0},"fun_proxiableUUID":{"entryPoint":10627,"id":520,"parameterSlots":0,"returnSlots":1},"fun_proxiableUUID_inner":{"entryPoint":10615,"id":null,"parameterSlots":1,"returnSlots":1},"fun_registry":{"entryPoint":12914,"id":21465,"parameterSlots":0,"returnSlots":1},"fun_reinitialize":{"entryPoint":14456,"id":20912,"parameterSlots":7,"returnSlots":0},"fun_reinitialize_inner":{"entryPoint":14205,"id":null,"parameterSlots":7,"returnSlots":0},"fun_renounceOwnership":{"entryPoint":12900,"id":136,"parameterSlots":0,"returnSlots":0},"fun_renounceOwnership_inner":{"entryPoint":12881,"id":null,"parameterSlots":0,"returnSlots":0},"fun_requireNotPaused":{"entryPoint":16313,"id":1407,"parameterSlots":0,"returnSlots":0},"fun_requirePaused":{"entryPoint":22941,"id":1420,"parameterSlots":0,"returnSlots":0},"fun_revert":{"entryPoint":24633,"id":2929,"parameterSlots":1,"returnSlots":0},"fun_setImplementation":{"entryPoint":24120,"id":1833,"parameterSlots":1,"returnSlots":0},"fun_spendAllowance":{"entryPoint":17701,"id":1246,"parameterSlots":3,"returnSlots":0},"fun_symbol":{"entryPoint":14503,"id":758,"parameterSlots":0,"returnSlots":1},"fun_totalSupply":{"entryPoint":8545,"id":783,"parameterSlots":0,"returnSlots":1},"fun_totalValuation":{"entryPoint":8746,"id":21397,"parameterSlots":0,"returnSlots":1},"fun_transfer":{"entryPoint":14628,"id":827,"parameterSlots":2,"returnSlots":1},"fun_transferFrom":{"entryPoint":8576,"id":907,"parameterSlots":3,"returnSlots":1},"fun_transferOwnership":{"entryPoint":16057,"id":164,"parameterSlots":1,"returnSlots":0},"fun_transferOwnership_inner":{"entryPoint":15943,"id":null,"parameterSlots":1,"returnSlots":0},"fun_unitPrice":{"entryPoint":15522,"id":21453,"parameterSlots":0,"returnSlots":1},"fun_unpause":{"entryPoint":18394,"id":1468,"parameterSlots":0,"returnSlots":0},"fun_unpause_21292":{"entryPoint":10453,"id":21292,"parameterSlots":0,"returnSlots":0},"fun_unpause_21292_inner":{"entryPoint":10443,"id":null,"parameterSlots":0,"returnSlots":0},"fun_unpause_inner":{"entryPoint":18307,"id":null,"parameterSlots":0,"returnSlots":0},"fun_update":{"entryPoint":22173,"id":1046,"parameterSlots":3,"returnSlots":0},"fun_upgradeToAndCall":{"entryPoint":23066,"id":1867,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCallUUPS":{"entryPoint":18738,"id":629,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_540":{"entryPoint":10504,"id":540,"parameterSlots":2,"returnSlots":0},"fun_upgradeToAndCall_inner":{"entryPoint":10483,"id":null,"parameterSlots":2,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":24469,"id":2889,"parameterSlots":3,"returnSlots":1},"fun_withdraw":{"entryPoint":8118,"id":21805,"parameterSlots":2,"returnSlots":0},"fun_withdraw_inner":{"entryPoint":5675,"id":null,"parameterSlots":2,"returnSlots":0},"fun_yearnVault":{"entryPoint":14534,"id":21477,"parameterSlots":0,"returnSlots":1},"getter_fun_UPGRADE_INTERFACE_VERSION":{"entryPoint":3325,"id":472,"parameterSlots":0,"returnSlots":1},"getter_fun_accumulatedAssetB":{"entryPoint":3927,"id":20717,"parameterSlots":0,"returnSlots":1},"getter_fun_allTimeInterest":{"entryPoint":2170,"id":20721,"parameterSlots":0,"returnSlots":1},"getter_fun_baseAsset":{"entryPoint":3452,"id":20707,"parameterSlots":0,"returnSlots":1},"getter_fun_lastDeposit":{"entryPoint":1494,"id":20719,"parameterSlots":0,"returnSlots":1},"getter_fun_quoteAsset":{"entryPoint":3995,"id":20712,"parameterSlots":0,"returnSlots":1},"identity":{"entryPoint":4118,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_address_uint256_of_address":{"entryPoint":14662,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":12762,"id":null,"parameterSlots":2,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":23704,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":14838,"id":302,"parameterSlots":6,"returnSlots":0},"modifier_nonReentrant":{"entryPoint":10715,"id":1538,"parameterSlots":2,"returnSlots":0},"modifier_nonReentrant_21209":{"entryPoint":14564,"id":1538,"parameterSlots":0,"returnSlots":0},"modifier_nonReentrant_21545":{"entryPoint":4067,"id":1538,"parameterSlots":2,"returnSlots":0},"modifier_notDelegated":{"entryPoint":10520,"id":496,"parameterSlots":1,"returnSlots":1},"modifier_onlyInitializing":{"entryPoint":23286,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_1339":{"entryPoint":20354,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1348":{"entryPoint":24067,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1503":{"entryPoint":20316,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_1512":{"entryPoint":24010,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_47":{"entryPoint":20211,"id":357,"parameterSlots":1,"returnSlots":0},"modifier_onlyInitializing_499":{"entryPoint":20296,"id":357,"parameterSlots":0,"returnSlots":0},"modifier_onlyInitializing_690":{"entryPoint":20252,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyInitializing_705":{"entryPoint":23430,"id":357,"parameterSlots":2,"returnSlots":0},"modifier_onlyOwner":{"entryPoint":10425,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_126":{"entryPoint":12823,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyOwner_142":{"entryPoint":15924,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_20918":{"entryPoint":18615,"id":89,"parameterSlots":1,"returnSlots":0},"modifier_onlyOwner_21276":{"entryPoint":12944,"id":89,"parameterSlots":0,"returnSlots":0},"modifier_onlyProxy":{"entryPoint":10463,"id":488,"parameterSlots":2,"returnSlots":0},"modifier_reinitializer":{"entryPoint":13276,"id":349,"parameterSlots":7,"returnSlots":0},"modifier_whenNotPaused":{"entryPoint":20059,"id":1371,"parameterSlots":0,"returnSlots":0},"modifier_whenNotPaused_20931":{"entryPoint":10743,"id":1371,"parameterSlots":2,"returnSlots":0},"modifier_whenNotPaused_21211":{"entryPoint":14590,"id":1371,"parameterSlots":0,"returnSlots":0},"modifier_whenNotPaused_21547":{"entryPoint":4095,"id":1371,"parameterSlots":2,"returnSlots":0},"modifier_whenPaused":{"entryPoint":18235,"id":1379,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":4855,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5017,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":8135,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1674,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_address":{"entryPoint":13560,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_bool":{"entryPoint":13207,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IBaluniV1Registry":{"entryPoint":13702,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_contract_IYearnVault":{"entryPoint":13631,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint256":{"entryPoint":5640,"id":null,"parameterSlots":1,"returnSlots":1},"prepare_store_uint64":{"entryPoint":13124,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_dynamic_address":{"entryPoint":3438,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_dynamic_uint256":{"entryPoint":1480,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_storage_split_offset_address":{"entryPoint":4718,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":13008,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IBaluniV1Registry":{"entryPoint":5328,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IYearnVault":{"entryPoint":4510,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_t_bool":{"entryPoint":10672,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint256":{"entryPoint":8532,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint64":{"entryPoint":13054,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":4393,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_335f":{"entryPoint":10851,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_53fb":{"entryPoint":14138,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_5a2a":{"entryPoint":20555,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8914":{"entryPoint":13982,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_c766":{"entryPoint":5487,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_df2e":{"entryPoint":20711,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_f247":{"entryPoint":4237,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_f9fc":{"entryPoint":13826,"id":null,"parameterSlots":1,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":1666,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74":{"entryPoint":4063,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":1670,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":575,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb":{"entryPoint":567,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":571,"id":null,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":4682,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of":{"entryPoint":830,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left":{"entryPoint":5554,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_224":{"entryPoint":4611,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_64":{"entryPoint":13159,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":23460,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_0_unsigned":{"entryPoint":4460,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_64_unsigned":{"entryPoint":12982,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned":{"entryPoint":555,"id":null,"parameterSlots":1,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1449,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_uint256":{"entryPoint":23566,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c":{"entryPoint":3239,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_335ff2e4b249975444723ab3dc1716db90a7dff95cbce35a34ad25055762f887":{"entryPoint":10763,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5":{"entryPoint":4304,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_53fb86809bff5dc62f76bc95bbc7b572a1cc94bf1175d9568e8046d7847ef4ec":{"entryPoint":14049,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_5a2aae2d17adf319835d1d5e7cf18b37e3e2f2096577dc0ce875faec48f9a25a":{"entryPoint":20428,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_89141ec2c606ec003f6f5f1768c23192e8ad9a256043aab9d456c1693f9c79ae":{"entryPoint":13893,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c766bbf94e1d4ee2c587f13da8ba24e222f68835e65af46bb7ea43e218ad9a58":{"entryPoint":5398,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_df2ebb4d199325e76f7966b4aa783d4644729570ebb2dcefef37eefd936f4949":{"entryPoint":20622,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f247f7c1df7c48d1adf3ebe04e09d491abca7b6e14a32a1b30359ea588b9d3d6":{"entryPoint":4149,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f9fc9be991fb15edd8b6c78e603f09bcc597989ed5b6a9e284f87c92e42b3b89":{"entryPoint":13737,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_20_shift":{"entryPoint":13519,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_8_shift":{"entryPoint":13067,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_dynamic32":{"entryPoint":23464,"id":null,"parameterSlots":3,"returnSlots":1},"update_byte_slice_shift":{"entryPoint":5559,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_0":{"entryPoint":18253,"id":null,"parameterSlots":2,"returnSlots":1},"update_byte_slice_shift_8":{"entryPoint":13165,"id":null,"parameterSlots":2,"returnSlots":1},"update_storage_value_offsett_address_to_address":{"entryPoint":13563,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":13210,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_bool_to_t_bool":{"entryPoint":18275,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IBaluniV1Registry_to_contract_IBaluniV1Registry":{"entryPoint":13705,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_contract_IYearnVault_to_contract_IYearnVault":{"entryPoint":13634,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_string_to_string":{"entryPoint":23950,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":5643,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint64_to_uint64":{"entryPoint":13127,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_uint256_to_uint256":{"entryPoint":23532,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":654,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":5183,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes32":{"entryPoint":18673,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint256":{"entryPoint":582,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":2699,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":4617,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_add_uint256":{"entryPoint":22159,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_sub_uint256":{"entryPoint":17687,"id":null,"parameterSlots":2,"returnSlots":1},"zero_value_for_split_address":{"entryPoint":12910,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bool":{"entryPoint":8470,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes":{"entryPoint":24323,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_bytes32":{"entryPoint":10516,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_string":{"entryPoint":8130,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint256":{"entryPoint":8508,"id":null,"parameterSlots":0,"returnSlots":1},"zero_value_for_split_uint8":{"entryPoint":10032,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"468":[{"length":32,"start":18433},{"length":32,"start":18566},{"length":32,"start":19073}]},"linkReferences":{},"object":"60806040526004361015610013575b610fdf565b61001d5f3561022b565b8062f714ce1461022657806306fdde0314610221578063095ea7b31461021c57806318160ddd1461021757806323b872dd14610212578063295b93001461020d578063313ce5671461020857806336b7710714610203578063374261ab146101fe5780633f4ba83a146101f95780634f1ef286146101f457806352d1902d146101ef5780635c975abb146101ea5780636560bc80146101e55780636e553f65146101e057806370a08231146101db578063715018a6146101d65780637b103999146101d15780638456cb59146101cc57806388696f62146101c75780638da5cb5b146101c257806395d89b41146101bd5780639db5df46146101b8578063a6f2ae3a146101b3578063a9059cbb146101ae578063ad3cb1cc146101a9578063cdf456e1146101a4578063dd62ed3e1461019f578063e56f2fe41461019a578063e73faa2d14610195578063f2fde38b14610190578063f7fde10f1461018b5763fdf262b70361000e57610faa565b610f66565b610f24565b610eef565b610eb5565b610deb565b610d89565b610d08565b610c5a565b610c27565b610bf2565b610bbd565b610b88565b610b4e565b6109cf565b61099a565b610945565b610910565b6108be565b610889565b610845565b610810565b6107c1565b61064f565b61061a565b6105e5565b610574565b610517565b6104e1565b610472565b61041a565b610391565b6102e3565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b61024f81610243565b0361025657565b5f80fd5b9050359061026782610246565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b61028b90610269565b90565b61029781610282565b0361029e57565b5f80fd5b905035906102af8261028e565b565b91906040838203126102d957806102cd6102d6925f860161025a565b936020016102a2565b90565b61023b565b5f0190565b34610312576102fc6102f63660046102b1565b90611fb6565b610304610231565b8061030e816102de565b0390f35b610237565b5f91031261032157565b61023b565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b6103676103706020936103759361035e81610326565b9384809361032a565b95869101610333565b61033e565b0190565b61038e9160208201915f818403910152610348565b90565b346103c1576103a1366004610317565b6103bd6103ac6120f7565b6103b4610231565b91829182610379565b0390f35b610237565b91906040838203126103ee57806103e26103eb925f86016102a2565b9360200161025a565b90565b61023b565b151590565b610401906103f3565b9052565b9190610418905f602085019401906103f8565b565b3461044b576104476104366104303660046103c6565b9061211a565b61043e610231565b91829182610405565b0390f35b610237565b61045990610243565b9052565b9190610470905f60208501940190610450565b565b346104a257610482366004610317565b61049e61048d612161565b610495610231565b9182918261045d565b0390f35b610237565b90916060828403126104dc576104d96104c2845f85016102a2565b936104d081602086016102a2565b9360400161025a565b90565b61023b565b346105125761050e6104fd6104f73660046104a7565b91612180565b610505610231565b91829182610405565b0390f35b610237565b3461054757610527366004610317565b61054361053261222a565b61053a610231565b9182918261045d565b0390f35b610237565b60ff1690565b61055b9061054c565b9052565b9190610572905f60208501940190610552565b565b346105a457610584366004610317565b6105a061058f612734565b610597610231565b9182918261055f565b0390f35b610237565b1c90565b90565b6105c09060086105c593026105a9565b6105ad565b90565b906105d391546105b0565b90565b6105e260055f906105c8565b90565b34610615576105f5366004610317565b6106116106006105d6565b610608610231565b9182918261045d565b0390f35b610237565b3461064a5761062a366004610317565b61064661063561274a565b61063d610231565b9182918261045d565b0390f35b610237565b3461067d5761065f366004610317565b6106676128d5565b61066f610231565b80610679816102de565b0390f35b610237565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906106c19061033e565b810190811067ffffffffffffffff8211176106db57604052565b61068a565b906106f36106ec610231565b92836106b7565b565b67ffffffffffffffff81116107135761070f60209161033e565b0190565b61068a565b90825f939282370152565b90929192610738610733826106f5565b6106e0565b938185526020850190828401116107545761075292610718565b565b610686565b9080601f830112156107775781602061077493359101610723565b90565b610682565b9190916040818403126107bc57610795835f83016102a2565b92602082013567ffffffffffffffff81116107b7576107b49201610759565b90565b61023f565b61023b565b6107d56107cf36600461077c565b90612908565b6107dd610231565b806107e7816102de565b0390f35b90565b6107f7906107eb565b9052565b919061080e905f602085019401906107ee565b565b3461084057610820366004610317565b61083c61082b612983565b610833610231565b918291826107fb565b0390f35b610237565b3461087557610855366004610317565b6108716108606129bd565b610868610231565b91829182610405565b0390f35b610237565b61088660065f906105c8565b90565b346108b957610899366004610317565b6108b56108a461087a565b6108ac610231565b9182918261045d565b0390f35b610237565b346108ed576108d76108d13660046102b1565b906131c2565b6108df610231565b806108e9816102de565b0390f35b610237565b9060208282031261090b57610908915f016102a2565b90565b61023b565b346109405761093c61092b6109263660046108f2565b6131f0565b610933610231565b9182918261045d565b0390f35b610237565b3461097357610955366004610317565b61095d613264565b610965610231565b8061096f816102de565b0390f35b610237565b61098190610282565b9052565b9190610998905f60208501940190610978565b565b346109ca576109aa366004610317565b6109c66109b5613272565b6109bd610231565b91829182610985565b0390f35b610237565b346109fd576109df366004610317565b6109e76132ac565b6109ef610231565b806109f9816102de565b0390f35b610237565b67ffffffffffffffff8111610a2057610a1c60209161033e565b0190565b61068a565b90929192610a3a610a3582610a02565b6106e0565b93818552602085019082840111610a5657610a5492610718565b565b610686565b9080601f83011215610a7957816020610a7693359101610a25565b90565b610682565b67ffffffffffffffff1690565b610a9481610a7e565b03610a9b57565b5f80fd5b90503590610aac82610a8b565b565b60e081830312610b49575f81013567ffffffffffffffff8111610b445782610ad7918301610a5b565b92602082013567ffffffffffffffff8111610b3f5783610af8918401610a5b565b92610b0681604085016102a2565b92610b1482606083016102a2565b92610b3c610b2584608085016102a2565b93610b338160a086016102a2565b9360c001610a9f565b90565b61023f565b61023f565b61023b565b34610b8357610b6d610b61366004610aae565b95949094939193613878565b610b75610231565b80610b7f816102de565b0390f35b610237565b34610bb857610b98366004610317565b610bb4610ba3613889565b610bab610231565b91829182610985565b0390f35b610237565b34610bed57610bcd366004610317565b610be9610bd86138a7565b610be0610231565b91829182610379565b0390f35b610237565b34610c2257610c02366004610317565b610c1e610c0d6138c6565b610c15610231565b91829182610985565b0390f35b610237565b34610c5557610c37366004610317565b610c3f61391a565b610c47610231565b80610c51816102de565b0390f35b610237565b34610c8b57610c87610c76610c703660046103c6565b90613924565b610c7e610231565b91829182610405565b0390f35b610237565b90610ca2610c9d83610a02565b6106e0565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b610cd86005610c90565b90610ce560208301610ca7565b565b610cef610cce565b90565b610cfa610ce7565b90565b610d05610cf2565b90565b34610d3857610d18366004610317565b610d34610d23610cfd565b610d2b610231565b91829182610379565b0390f35b610237565b73ffffffffffffffffffffffffffffffffffffffff1690565b610d66906008610d6b93026105a9565b610d3d565b90565b90610d799154610d56565b90565b610d865f80610d6e565b90565b34610db957610d99366004610317565b610db5610da4610d7c565b610dac610231565b91829182610985565b0390f35b610237565b9190604083820312610de65780610dda610de3925f86016102a2565b936020016102a2565b90565b61023b565b34610e1c57610e18610e07610e01366004610dbe565b9061395c565b610e0f610231565b9182918261045d565b0390f35b610237565b909160c082840312610eb0575f82013567ffffffffffffffff8111610eab5783610e4c918401610a5b565b92602083013567ffffffffffffffff8111610ea65781610e6d918501610a5b565b92610e7b82604083016102a2565b92610ea3610e8c84606085016102a2565b93610e9a81608086016102a2565b9360a0016102a2565b90565b61023f565b61023f565b61023b565b34610eea57610ed4610ec8366004610e21565b94939093929192613c73565b610edc610231565b80610ee6816102de565b0390f35b610237565b34610f1f57610eff366004610317565b610f1b610f0a613ca2565b610f12610231565b9182918261045d565b0390f35b610237565b34610f5257610f3c610f373660046108f2565b613eb9565b610f44610231565b80610f4e816102de565b0390f35b610237565b610f6360045f906105c8565b90565b34610f9657610f76366004610317565b610f92610f81610f57565b610f89610231565b9182918261045d565b0390f35b610237565b610fa760025f90610d6e565b90565b34610fda57610fba366004610317565b610fd6610fc5610f9b565b610fcd610231565b91829182610985565b0390f35b610237565b5f80fd5b90610ff591610ff0613ef0565b610fff565b610ffd613f9c565b565b906110119161100c613fb9565b61162b565b565b90565b90565b61102d61102861103292611013565b611016565b610243565b90565b5f7f536861726573206d7573742062652067726561746572207468616e207a65726f910152565b6110686020809261032a565b61107181611035565b0190565b61108a9060208101905f81830391015261105c565b90565b1561109457565b61109c610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806110cc60048201611075565b0390fd5b5f7f496e73756666696369656e742062616c616e6365000000000000000000000000910152565b611104601460209261032a565b61110d816110d0565b0190565b6111269060208101905f8183039101526110f7565b90565b1561113057565b611138610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061116860048201611111565b0390fd5b5f1c90565b73ffffffffffffffffffffffffffffffffffffffff1690565b61119661119b9161116c565b611171565b90565b6111a8905461118a565b90565b6111bf6111ba6111c492610269565b611016565b610269565b90565b6111d0906111ab565b90565b6111dc906111c7565b90565b6111e8906111ab565b90565b6111f4906111df565b90565b611200906111c7565b90565b60e01b90565b6112128161054c565b0361121957565b5f80fd5b9050519061122a82611209565b565b9060208282031261124557611242915f0161121d565b90565b61023b565b611252610231565b3d5f823e3d90fd5b61126661126b9161116c565b610d3d565b90565b611278905461125a565b90565b611284906111c7565b90565b9050519061129482610246565b565b906020828203126112af576112ac915f01611287565b90565b61023b565b6112bd906111ab565b90565b6112c9906112b4565b90565b6112d5906111c7565b90565b90565b6112ef6112ea6112f4926112d8565b611016565b61054c565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6113306113369161054c565b9161054c565b90039060ff821161134357565b6112f7565b6113519061054c565b604d811161135f57600a0a90565b6112f7565b61137361137991939293610243565b92610243565b91611385838202610243565b92818404149015171561139457565b6112f7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6113d26113d891610243565b91610243565b9081156113e3570490565b611399565b604090611411611418949695939661140760608401985f850190610450565b6020830190610978565b0190610978565b565b61142961142f91939293610243565b92610243565b820391821161143a57565b6112f7565b611448816103f3565b0361144f57565b5f80fd5b905051906114608261143f565b565b9060208282031261147b57611478915f01611453565b90565b61023b565b9160206114a192949361149a60408201965f830190610978565b0190610450565b565b73ffffffffffffffffffffffffffffffffffffffff1690565b6114c86114cd9161116c565b6114a3565b90565b6114da90546114bc565b90565b6114e6906111c7565b90565b905051906114f68261028e565b565b906020828203126115115761150e915f016114e9565b90565b61023b565b5f7f4661696c656420746f207472616e736665722071756f74654173736574000000910152565b61154a601d60209261032a565b61155381611516565b0190565b61156c9060208101905f81830391015261153d565b90565b1561157657565b61157e610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806115ae60048201611557565b0390fd5b5f1b90565b906115e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff916115b2565b9181191691161790565b6116006115fb61160592610243565b611016565b610243565b90565b90565b9061162061161b611627926115ec565b611608565b82546115b7565b9055565b6116478161164161163b5f611019565b91610243565b1161108d565b61166c611653336131f0565b61166561165f84610243565b91610243565b1015611129565b6116a9602061169361168e611689611684600161119e565b6111d3565b6111eb565b6111f7565b63313ce567906116a1610231565b938492611203565b825281806116b9600482016102de565b03915afa908115611fb1575f91611f83575b509061170260206116ec6116e76116e2600261126e565b6111eb565b6111f7565b63313ce567906116fa610231565b938492611203565b82528180611712600482016102de565b03915afa908115611f7e575f91611f50575b509061176f602061173d611738600161119e565b6111d3565b6370a082319061176461174f3061127b565b92611758610231565b95869485938493611203565b835260048301610985565b03915afa908115611f4b575f91611f1d575b50926117d460206117a261179d611798600261126e565b6112c0565b6112cc565b6370a08231906117c96117b43061127b565b926117bd610231565b95869485938493611203565b835260048301610985565b03915afa908115611f18575f91611eea575b509061183860206118066118016117fc5f61126e565b6112c0565b6112cc565b6370a082319061182d6118183061127b565b92611821610231565b95869485938493611203565b835260048301610985565b03915afa908115611ee5575f91611eb7575b509460128290611859906112db565b9061186391611324565b61186c90611348565b61187591611364565b9160128590611883906112db565b9061188d91611324565b61189690611348565b61189f91611364565b9183906118ab91611364565b6118b3612161565b6118bc916113c6565b9183906118c891611364565b6118d0612161565b6118d9916113c6565b9233906118e591614003565b60126118f0906112db565b906118fa91611324565b61190390611348565b61190c916113c6565b916012611918906112db565b9061192291611324565b61192b90611348565b611934916113c6565b9161193f600161119e565b611948906111d3565b63ba087652306119579061127b565b90306119629061127b565b9461196b610231565b9586936119788594611203565b84526004840192611988936113e8565b03815a6020945f91f1918215611eb2576119ef92611e86575b5060206119bd6119b86119b35f61126e565b6112c0565b6112cc565b6370a08231906119e46119cf3061127b565b926119d8610231565b96879485938493611203565b835260048301610985565b03915afa8015611e8157611a0a925f91611e53575b5061141a565b80611a1d611a175f611019565b91610243565b11611b80575b5080611a37611a315f611019565b91610243565b11611b67575b5050611a51611a4c600161119e565b6111d3565b611aa06307a2d13a916020611a6e611a69600161119e565b6111d3565b6370a0823190611a95611a803061127b565b92611a89610231565b96879485938493611203565b835260048301610985565b03915afa908115611b6257611add936020935f93611b2f575b50611ad290611ac6610231565b95869485938493611203565b83526004830161045d565b03915afa8015611b2a57611afa915f91611afc575b50600561160b565b565b611b1d915060203d8111611b23575b611b1581836106b7565b810190611296565b5f611af2565b503d611b0b565b61124a565b611ad2919350611b5490853d8111611b5b575b611b4c81836106b7565b810190611296565b9290611ab9565b503d611b42565b61124a565b611b7991611b74916141a8565b61156f565b5f80611a3d565b611b8981614082565b906020611ba5611ba0611b9b5f61126e565b6112c0565b6112cc565b9163a9059cbb92611bd45f611bbc8994889061141a565b95611bdf611bc8610231565b97889687958694611203565b845260048401611480565b03925af18015611e4e57611e22575b50611bf881614082565b611c256020611c0f611c0a60036114d0565b6114dd565b6304cc732590611c1d610231565b938492611203565b82528180611c35600482016102de565b03915afa908115611e1d575f91611def575b5090611c766020611c60611c5b60036114d0565b6114dd565b633b19e84a90611c6e610231565b938492611203565b82528180611c86600482016102de565b03915afa8015611dea576020915f91611dbd575b5093611cb5611cb0611cab5f61126e565b6112c0565b6112cc565b611ce25f611cca63a9059cbb9794879061141a565b96611ced611cd6610231565b98899687958694611203565b845260048401611480565b03925af1918215611db857602092611d8d575b50611d1a611d15611d105f61126e565b6112c0565b6112cc565b611d3d5f63a9059cbb959395611d48611d31610231565b97889687958694611203565b845260048401611480565b03925af18015611d8857611d5c575b611a23565b611d7c9060203d8111611d81575b611d7481836106b7565b810190611462565b611d57565b503d611d6a565b61124a565b611dac90833d8111611db1575b611da481836106b7565b810190611462565b611d00565b503d611d9a565b61124a565b611ddd9150823d8111611de3575b611dd581836106b7565b8101906114f8565b5f611c9a565b503d611dcb565b61124a565b611e10915060203d8111611e16575b611e0881836106b7565b8101906114f8565b5f611c47565b503d611dfe565b61124a565b611e429060203d8111611e47575b611e3a81836106b7565b810190611462565b611bee565b503d611e30565b61124a565b611e74915060203d8111611e7a575b611e6c81836106b7565b810190611296565b5f611a04565b503d611e62565b61124a565b611ea69060203d8111611eab575b611e9e81836106b7565b810190611296565b6119a1565b503d611e94565b61124a565b611ed8915060203d8111611ede575b611ed081836106b7565b810190611296565b5f61184a565b503d611ec6565b61124a565b611f0b915060203d8111611f11575b611f0381836106b7565b810190611296565b5f6117e6565b503d611ef9565b61124a565b611f3e915060203d8111611f44575b611f3681836106b7565b810190611296565b5f611781565b503d611f2c565b61124a565b611f71915060203d8111611f77575b611f6981836106b7565b81019061122c565b5f611724565b503d611f5f565b61124a565b611fa4915060203d8111611faa575b611f9c81836106b7565b81019061122c565b5f6116cb565b503d611f92565b61124a565b90611fc091610fe3565b565b606090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b9060016002830492168015612014575b602083101461200f57565b611fc7565b91607f1691612004565b60209181520190565b5f5260205f2090565b905f929180549061204a61204383611ff4565b809461201e565b916001811690815f146120a15750600114612065575b505050565b6120729192939450612027565b915f925b81841061208957505001905f8080612060565b60018160209295939554848601520191019290612076565b92949550505060ff19168252151560200201905f8080612060565b906120c691612030565b90565b906120e96120e2926120d9610231565b938480926120bc565b03836106b7565b565b6120f4906120c9565b90565b6120ff611fc2565b50612113600361210d6144a4565b016120eb565b90565b5f90565b61213791612126612116565b5061212f6144c8565b9190916144d5565b600190565b5f90565b61214c6121519161116c565b6105ad565b90565b61215e9054612140565b90565b61216961213c565b5061217d60026121776144a4565b01612154565b90565b916121aa9261218d612116565b506121a26121996144c8565b82908491614525565b9190916145f0565b600190565b6121b8906111ab565b90565b6121c4906121af565b90565b6121d0906111c7565b90565b6040906121fc61220394969593966121f260608401985f850190610978565b6020830190610978565b0190610450565b565b61221461221a91939293610243565b92610243565b820180921161222557565b6112f7565b61223261213c565b50612260602061224a61224560036114d0565b6114dd565b63bb3ba04c90612258610231565b938492611203565b82528180612270600482016102de565b03915afa801561272b5761228b915f916126fd575b506121bb565b6122b860206122a261229d60036114d0565b6114dd565b631bf01e9b906122b0610231565b938492611203565b825281806122c8600482016102de565b03915afa9081156126f8575f916126ca575b50906122e55f611019565b61232e60206122fc6122f7600161119e565b6111d3565b6370a082319061232361230e3061127b565b92612317610231565b95869485938493611203565b835260048301610985565b03915afa9081156126c557612381916020915f91612698575b5061235a612355600161119e565b6111d3565b6123766307a2d13a61236a610231565b95869485938493611203565b83526004830161045d565b03915afa908115612693575f91612665575b506123e560206123b36123ae6123a9600261126e565b6112c0565b6112cc565b6370a08231906123da6123c53061127b565b926123ce610231565b95869485938493611203565b835260048301610985565b03915afa908115612660575f91612632575b506124015f61126e565b61241361240d87610282565b91610282565b03612596575b6020612424856121c7565b63248391ff90612459612437600261126e565b926124646124445f61126e565b9661244d610231565b97889687958695611203565b8552600485016121d3565b03915afa80156125915761248893612483925f92612561575b50612205565b612205565b9161249161274a565b9161249b5f61126e565b6124ad6124a784610282565b91610282565b036124c3575b5050906124c09190612205565b90565b6124ce6020916121c7565b9163248391ff926124fb6124e15f61126e565b9294612506876124ef610231565b97889687958695611203565b8552600485016121d3565b03915afa801561255c576124c093612525925f9261252c575b50612205565b915f6124b3565b61254e91925060203d8111612555575b61254681836106b7565b810190611296565b905f61251f565b503d61253c565b61124a565b61258391925060203d811161258a575b61257b81836106b7565b810190611296565b905f61247d565b503d612571565b61124a565b916125a0846121c7565b90602063248391ff926125b25f61126e565b906125d089956125db886125c4610231565b98899687958695611203565b8552600485016121d3565b03915afa90811561262d576125f7925f926125fd575b50612205565b91612419565b61261f91925060203d8111612626575b61261781836106b7565b810190611296565b905f6125f1565b503d61260d565b61124a565b612653915060203d8111612659575b61264b81836106b7565b810190611296565b5f6123f7565b503d612641565b61124a565b612686915060203d811161268c575b61267e81836106b7565b810190611296565b5f612393565b503d612674565b61124a565b6126b89150823d81116126be575b6126b081836106b7565b810190611296565b5f612347565b503d6126a6565b61124a565b6126eb915060203d81116126f1575b6126e381836106b7565b8101906114f8565b5f6122da565b503d6126d9565b61124a565b61271e915060203d8111612724575b61271681836106b7565b8101906114f8565b5f612285565b503d61270c565b61124a565b5f90565b61273c612730565b5061274760126112db565b90565b61275261213c565b50612765612760600161119e565b6111d3565b6127b46307a2d13a91602061278261277d600161119e565b6111d3565b6370a08231906127a96127943061127b565b9261279d610231565b96879485938493611203565b835260048301610985565b03915afa9081156128b4576127f1936020935f93612881575b506127e6906127da610231565b95869485938493611203565b83526004830161045d565b03915afa90811561287c575f9161284e575b508061282061281a6128156005612154565b610243565b91610243565b115f1461283f5761283b906128356005612154565b9061141a565b5b90565b506128495f611019565b61283c565b61286f915060203d8111612875575b61286781836106b7565b810190611296565b5f612803565b503d61285d565b61124a565b6127e69193506128a690853d81116128ad575b61289e81836106b7565b810190611296565b92906127cd565b503d612894565b61124a565b6128c16146cd565b6128c96128cb565b565b6128d36147da565b565b6128dd6128b9565b565b906128f1916128ec6147f0565b6128f3565b565b9061290691612901816148c2565b614932565b565b90612912916128df565b565b5f90565b61292990612924614a70565b612977565b90565b90565b61294361293e6129489261292c565b6115b2565b6107eb565b90565b6129747f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61292f565b90565b5061298061294b565b90565b61299361298e612914565b612918565b90565b60ff1690565b6129a86129ad9161116c565b612996565b90565b6129ba905461299c565b90565b6129c5612116565b506129d85f6129d2614aee565b016129b0565b90565b906129ed916129e8613ef0565b6129f7565b6129f5613f9c565b565b90612a0991612a04613fb9565b612ac9565b565b5f7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f910152565b612a3e6020809261032a565b612a4781612a0b565b0190565b612a609060208101905f818303910152612a32565b90565b15612a6a57565b612a72610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612aa260048201612a4b565b0390fd5b916020612ac7929493612ac060408201965f830190610450565b0190610978565b565b612ae581612adf612ad95f611019565b91610243565b11612a63565b612aed614b2e565b612b06612b01612afc5f61126e565b6112c0565b6112cc565b60206323b872dd913390612b365f612b1d3061127b565b95612b4188612b2a610231565b98899788968795611203565b8552600485016121d3565b03925af180156131bd57613191575b50612b7e6020612b68612b6360036114d0565b6114dd565b6304cc732590612b76610231565b938492611203565b82528180612b8e600482016102de565b03915afa90811561318c575f9161315e575b50612bce6020612bb8612bb360036114d0565b6114dd565b633b19e84a90612bc6610231565b938492611203565b82528180612bde600482016102de565b03915afa908115613159575f9161312b575b5091612bfb81614082565b91612c0583614082565b6020612c20612c1b612c165f61126e565b6112c0565b6112cc565b63a9059cbb9390612c4e5f612c3689879061141a565b96612c59612c42610231565b98899687958694611203565b845260048401611480565b03925af1918215613126576020926130fb575b50612c86612c81612c7c5f61126e565b6112c0565b6112cc565b612ca95f63a9059cbb979397612cb4612c9d610231565b998a9687958694611203565b845260048401611480565b03925af19283156130f657612cce936130ca575b5061141a565b90612ce8612ce3612cde5f61126e565b6112c0565b6112cc565b602063095ea7b391612d02612cfd600161119e565b6111d3565b90612d205f8795612d2b612d14610231565b97889687958694611203565b845260048401611480565b03925af180156130c557613099575b50612d4d612d48600161119e565b6111d3565b916020636e553f65938290612d7d5f612d653061127b565b97612d88612d71610231565b998a9687958694611203565b845260048401612aa6565b03925af192831561309457612dce93613068575b506020612db8612db3612dae5f61126e565b6111eb565b6111f7565b63313ce56790612dc6610231565b958692611203565b82528180612dde600482016102de565b03915afa801561306357612e2e935f91613035575b506020612e18612e13612e0e612e09600161119e565b6111d3565b6111eb565b6111f7565b63313ce56790612e26610231565b968792611203565b82528180612e3e600482016102de565b03915afa801561303057612ea8612eb393612ead92612eb9975f91613002575b509380612e73612e6d8761054c565b9161054c565b115f14612fe157612e91612e8c612e9793928790611324565b611348565b906113c6565b5b92612ea360126112db565b611324565b611348565b90611364565b90614d71565b612ecb612ec6600161119e565b6111d3565b612f1a6307a2d13a916020612ee8612ee3600161119e565b6111d3565b6370a0823190612f0f612efa3061127b565b92612f03610231565b96879485938493611203565b835260048301610985565b03915afa908115612fdc57612f57936020935f93612fa9575b50612f4c90612f40610231565b95869485938493611203565b83526004830161045d565b03915afa8015612fa457612f74915f91612f76575b50600561160b565b565b612f97915060203d8111612f9d575b612f8f81836106b7565b810190611296565b5f612f6c565b503d612f85565b61124a565b612f4c919350612fce90853d8111612fd5575b612fc681836106b7565b810190611296565b9290612f33565b503d612fbc565b61124a565b612ff7612ff2612ffd939287611324565b611348565b90611364565b612e98565b613023915060203d8111613029575b61301b81836106b7565b81019061122c565b5f612e5e565b503d613011565b61124a565b613056915060203d811161305c575b61304e81836106b7565b81019061122c565b5f612df3565b503d613044565b61124a565b6130889060203d811161308d575b61308081836106b7565b810190611296565b612d9c565b503d613076565b61124a565b6130b99060203d81116130be575b6130b181836106b7565b810190611462565b612d3a565b503d6130a7565b61124a565b6130ea9060203d81116130ef575b6130e281836106b7565b810190611462565b612cc8565b503d6130d8565b61124a565b61311a90833d811161311f575b61311281836106b7565b810190611462565b612c6c565b503d613108565b61124a565b61314c915060203d8111613152575b61314481836106b7565b8101906114f8565b5f612bf0565b503d61313a565b61124a565b61317f915060203d8111613185575b61317781836106b7565b8101906114f8565b5f612ba0565b503d61316d565b61124a565b6131b19060203d81116131b6575b6131a981836106b7565b810190611462565b612b50565b503d61319f565b61124a565b906131cc916129db565b565b6131d7906111c7565b90565b906131e4906131ce565b5f5260205260405f2090565b61320f613214916131ff61213c565b505f6132096144a4565b016131da565b612154565b90565b61321f6146cd565b613227613251565b565b61323d61323861324292611013565b611016565b610269565b90565b61324e90613229565b90565b61326261325d5f613245565b614def565b565b61326c613217565b565b5f90565b61327a61326e565b5061328d61328860036114d0565b6114dd565b90565b6132986146cd565b6132a06132a2565b565b6132aa614ec5565b565b6132b4613290565b565b60401c90565b6132c86132cd916132b6565b612996565b90565b6132da90546132bc565b90565b67ffffffffffffffff1690565b6132f66132fb9161116c565b6132dd565b90565b61330890546132ea565b90565b9061331e67ffffffffffffffff916115b2565b9181191691161790565b61333c61333761334192610a7e565b611016565b610a7e565b90565b90565b9061335c61335761336392613328565b613344565b825461330b565b9055565b60401b90565b9061338168ff000000000000000091613367565b9181191691161790565b613394906103f3565b90565b90565b906133af6133aa6133b69261338b565b613397565b825461336d565b9055565b6133c390610a7e565b9052565b91906133da905f602085019401906133ba565b565b9295919394909482966133ed614ecf565b956133f95f88016132d0565b80156134aa575b61346e576134339761342a966134188b5f8b01613347565b61342560015f8b0161339a565b61377d565b5f80910161339a565b6134697fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291613460610231565b918291826133c7565b0390a1565b613476610231565b7ff92ee8a9000000000000000000000000000000000000000000000000000000008152806134a6600482016102de565b0390fd5b506134b65f88016132fe565b6134c86134c28b610a7e565b91610a7e565b1015613400565b906134ee73ffffffffffffffffffffffffffffffffffffffff916115b2565b9181191691161790565b90565b9061351061350b613517926131ce565b6134f8565b82546134cf565b9055565b613524906111ab565b90565b6135309061351b565b90565b61353c9061351b565b90565b90565b9061355761355261355e92613533565b61353f565b82546134cf565b9055565b61356b906111ab565b90565b61357790613562565b90565b61358390613562565b90565b90565b9061359e6135996135a59261357a565b613586565b82546134cf565b9055565b5f7f496e76616c696420617373657441206164647265737300000000000000000000910152565b6135dd601660209261032a565b6135e6816135a9565b0190565b6135ff9060208101905f8183039101526135d0565b90565b1561360957565b613611610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613641600482016135ea565b0390fd5b5f7f496e76616c696420596561726e205661756c7420616464726573730000000000910152565b613679601b60209261032a565b61368281613645565b0190565b61369b9060208101905f81830391015261366c565b90565b156136a557565b6136ad610231565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806136dd60048201613686565b0390fd5b5f7f496e76616c696420617373657442206164647265737300000000000000000000910152565b613715601660209261032a565b61371e816136e1565b0190565b6137379060208101905f818303910152613708565b90565b1561374157565b613749610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061377960048201613722565b0390fd5b6137e596506137d9936137c66137de9796946137a86137d2956137cb956137a333614f11565b614f3c565b6137b0614f52565b6137b8614f78565b6137c0614f9e565b5f6134fb565b613527565b6001613542565b60026134fb565b61356e565b6003613589565b6138126137f15f61126e565b61380b6138056138005f613245565b610282565b91610282565b1415613602565b613848613827613822600161119e565b6111d3565b61384161383b6138365f613245565b610282565b91610282565b141561369e565b613876613855600261126e565b61386f6138696138645f613245565b610282565b91610282565b141561373a565b565b906138879695949392916133dc565b565b61389161326e565b506138a45f61389e614fa8565b0161126e565b90565b6138af611fc2565b506138c360046138bd6144a4565b016120eb565b90565b6138ce61326e565b506138e16138dc600161119e565b6111d3565b90565b6138ec613ef0565b6138f46138fe565b6138fc613f9c565b565b613906613fb9565b61390e613910565b565b6139186151af565b565b6139226138e4565b565b61394191613930612116565b506139396144c8565b9190916145f0565b600190565b90613950906131ce565b5f5260205260405f2090565b61398a916139806139859261396f61213c565b50600161397a6144a4565b01613946565b6131da565b612154565b90565b6139a161399c6139a692611013565b611016565b610a7e565b90565b90565b6139c06139bb6139c5926139a9565b611016565b610a7e565b90565b6139d1906111c7565b90565b6139dd906139ac565b9052565b91906139f4905f602085019401906139d4565b565b92949194939093613a05614ecf565b95613a1a613a145f89016132d0565b156103f3565b95613a265f89016132fe565b80613a39613a335f61398d565b91610a7e565b1480613b73575b90613a54613a4e60016139ac565b91610a7e565b1480613b4b575b613a669091156103f3565b9081613b3a575b50613afe57613a9695613a8b613a8360016139ac565b5f8b01613347565b87613aec575b613b7a565b613a9e575b50565b613aab905f80910161339a565b6001613ae37fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291613ada610231565b918291826139e1565b0390a15f613a9b565b613af960015f8b0161339a565b613a91565b613b06610231565b7ff92ee8a900000000000000000000000000000000000000000000000000000000815280613b36600482016102de565b0390fd5b613b459150156103f3565b5f613a6d565b50613a66613b58306139c8565b3b613b6b613b655f611019565b91610243565b149050613a5b565b5087613a40565b613bc6613be09694613bc1613bd495613ba3613bd99996613bcd96613b9e33614f11565b614f3c565b613bab614f52565b613bb3614f78565b613bbb614f9e565b5f6134fb565b613527565b6001613542565b60026134fb565b61356e565b6003613589565b613c0d613bec5f61126e565b613c06613c00613bfb5f613245565b610282565b91610282565b1415613602565b613c43613c22613c1d600161119e565b6111d3565b613c3c613c36613c315f613245565b610282565b91610282565b141561369e565b613c71613c50600261126e565b613c6a613c64613c5f5f613245565b610282565b91610282565b141561373a565b565b90613c8195949392916139f6565b565b90565b613c9a613c95613c9f92613c83565b611016565b610243565b90565b613caa61213c565b50613cb3612161565b613cc5613cbf5f611019565b91610243565b14613e2857613cf76020613ce1613cdc60036114d0565b6114dd565b631bf01e9b90613cef610231565b938492611203565b82528180613d07600482016102de565b03915afa908115613e2357613d31613d2c613d47936020935f91613df6575b506111eb565b6111f7565b63313ce56790613d3f610231565b938492611203565b82528180613d57600482016102de565b03915afa8015613df157613d9b613d8e613d89613db293613dc0955f91613dc3575b50613d8460126112db565b611324565b611348565b613d9661222a565b611364565b613dac670de0b6b3a7640000613c86565b90611364565b613dba612161565b906113c6565b90565b613de4915060203d8111613dea575b613ddc81836106b7565b81019061122c565b5f613d79565b503d613dd2565b61124a565b613e169150843d8111613e1c575b613e0e81836106b7565b8101906114f8565b5f613d26565b503d613e04565b61124a565b613e315f611019565b90565b613e4590613e406146cd565b613e47565b565b80613e62613e5c613e575f613245565b610282565b91610282565b14613e7257613e7090614def565b565b613eb5613e7e5f613245565b613e86610231565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b613ec290613e34565b565b90565b613edb613ed6613ee092613ec4565b611016565b610243565b90565b613eed6002613ec7565b90565b613ef861566b565b613f035f8201612154565b613f1c613f16613f11613ee3565b610243565b91610243565b14613f3757613f35905f613f2e613ee3565b910161160b565b565b613f3f610231565b7f3ee5aeb500000000000000000000000000000000000000000000000000000000815280613f6f600482016102de565b0390fd5b613f87613f82613f8c926139a9565b611016565b610243565b90565b613f996001613f73565b90565b613fb7613fa761566b565b5f613fb0613f8f565b910161160b565b565b613fc16129bd565b613fc757565b613fcf610231565b7fd93c066500000000000000000000000000000000000000000000000000000000815280613fff600482016102de565b0390fd5b908161401f6140196140145f613245565b610282565b91610282565b1461403b5761403991906140325f613245565b909161569d565b565b61407e6140475f613245565b61404f610231565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61408a61213c565b506140b860206140a261409d60036114d0565b6114dd565b6385462d6f906140b0610231565b938492611203565b825281806140c8600482016102de565b03915afa9081156141a3575f91614175575b509061410960206140f36140ee60036114d0565b6114dd565b634f4608a290614101610231565b938492611203565b82528180614119600482016102de565b03915afa9283156141705761413f9361413a925f91614142575b5092611364565b6113c6565b90565b614163915060203d8111614169575b61415b81836106b7565b810190611296565b5f614133565b503d614151565b61124a565b614196915060203d811161419c575b61418e81836106b7565b810190611296565b5f6140da565b503d614184565b61124a565b906141b1612116565b5060206141bd83614082565b926141db6141d4826141cf6004612154565b61141a565b600461160b565b6141f56141f06141eb600261126e565b6112c0565b6112cc565b6142225f61420a63a9059cbb9694889061141a565b9561422d614216610231565b97889687958694611203565b845260048401611480565b03925af1801561449f57614473575b5061424681614082565b614273602061425d61425860036114d0565b6114dd565b6304cc73259061426b610231565b938492611203565b82528180614283600482016102de565b03915afa90811561446e575f91614440575b50906142c460206142ae6142a960036114d0565b6114dd565b633b19e84a906142bc610231565b938492611203565b825281806142d4600482016102de565b03915afa801561443b576020915f9161440e575b50936143046142ff6142fa600261126e565b6112c0565b6112cc565b6143315f61431963a9059cbb9794879061141a565b9661433c614325610231565b98899687958694611203565b845260048401611480565b03925af1918215614409576020926143de575b5061436a614365614360600261126e565b6112c0565b6112cc565b61438d5f63a9059cbb959395614398614381610231565b97889687958694611203565b845260048401611480565b03925af180156143d9576143ad575b50600190565b6143cd9060203d81116143d2575b6143c581836106b7565b810190611462565b6143a7565b503d6143bb565b61124a565b6143fd90833d8111614402575b6143f581836106b7565b810190611462565b61434f565b503d6143eb565b61124a565b61442e9150823d8111614434575b61442681836106b7565b8101906114f8565b5f6142e8565b503d61441c565b61124a565b614461915060203d8111614467575b61445981836106b7565b8101906114f8565b5f614295565b503d61444f565b61124a565b6144939060203d8111614498575b61448b81836106b7565b810190611462565b61423c565b503d614481565b61124a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b6144d061326e565b503390565b916144e39291600192615843565b565b60409061450e614515949695939661450460608401985f850190610978565b6020830190610450565b0190610450565b565b906145229103610243565b90565b92919261453381839061395c565b90816145676145617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610243565b91610243565b03614574575b5050509050565b8161458761458187610243565b91610243565b106145ad576145a4939461459c919392614517565b905f92615843565b805f808061456d565b506145ec849291926145bd610231565b9384937ffb8f41b2000000000000000000000000000000000000000000000000000000008552600485016144e5565b0390fd5b918261460c6146066146015f613245565b610282565b91610282565b14614686578161462c6146266146215f613245565b610282565b91610282565b1461463f5761463d9291909161569d565b565b61468261464b5f613245565b614653610231565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6146c96146925f613245565b61469a610231565b9182917f96c6fd1e00000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6146d5613889565b6146ee6146e86146e36144c8565b610282565b91610282565b036146f557565b6147376147006144c8565b614708610231565b9182917f118cdaa700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b61474361599d565b61474b614783565b565b9061475960ff916115b2565b9181191691161790565b9061477861477361477f9261338b565b613397565b825461474d565b9055565b61479761478e614aee565b5f809101614763565b61479f6144c8565b6147d57f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa916147cc610231565b91829182610985565b0390a1565b6147e261473b565b565b6147ed906111c7565b90565b6147f9306147e4565b61482b6148257f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b148015614875575b61483957565b614841610231565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280614871600482016102de565b0390fd5b5061487e6159f0565b6148b06148aa7f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b1415614833565b506148c06146cd565b565b6148cb906148b7565b565b6148d6906111ab565b90565b6148e2906148cd565b90565b6148ee906111c7565b90565b6148fa816107eb565b0361490157565b5f80fd5b90505190614912826148f1565b565b9060208282031261492d5761492a915f01614905565b90565b61023b565b9190614960602061494a614945866148d9565b6148e5565b6352d1902d90614958610231565b938492611203565b82528180614970600482016102de565b03915afa80915f92614a40575b50155f146149d157505090600161499257505b565b6149cd9061499e610231565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b92836149ec6149e66149e161294b565b6107eb565b916107eb565b03614a01576149fc929350615a1a565b614990565b614a3c84614a0d610231565b9182917faa1d49a4000000000000000000000000000000000000000000000000000000008352600483016107fb565b0390fd5b614a6291925060203d8111614a69575b614a5a81836106b7565b810190614914565b905f61497d565b503d614a50565b614a79306147e4565b614aab614aa57f0000000000000000000000000000000000000000000000000000000000000000610282565b91610282565b03614ab257565b614aba610231565b7fe07c8dba00000000000000000000000000000000000000000000000000000000815280614aea600482016102de565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b614b26614b21614b2b92613ec4565b611016565b61054c565b90565b614b40614b3b600161119e565b6111d3565b614b8f6307a2d13a916020614b5d614b58600161119e565b6111d3565b6370a0823190614b84614b6f3061127b565b92614b78610231565b96879485938493611203565b835260048301610985565b03915afa908115614d6c57614bcc936020935f93614d39575b50614bc190614bb5610231565b95869485938493611203565b83526004830161045d565b03915afa908115614d34575f91614d06575b5080614bfb614bf5614bf06005612154565b610243565b91610243565b115f14614cf757614c1690614c106005612154565b9061141a565b5b614c4b6020614c35614c30614c2b5f61126e565b6111eb565b6111f7565b63313ce56790614c43610231565b938492611203565b82528180614c5b600482016102de565b03915afa8015614cf257614ca4614ca991614caf935f91614cc4575b50614c9f614c99614c94600193614c8e6002614b12565b90611324565b611348565b91613f73565b611364565b610243565b91610243565b11614cb7575b565b614cbf6151af565b614cb5565b614ce5915060203d8111614ceb575b614cdd81836106b7565b81019061122c565b5f614c77565b503d614cd3565b61124a565b50614d015f611019565b614c17565b614d27915060203d8111614d2d575b614d1f81836106b7565b810190611296565b5f614bde565b503d614d15565b61124a565b614bc1919350614d5e90853d8111614d65575b614d5681836106b7565b810190611296565b9290614ba8565b503d614d4c565b61124a565b80614d8c614d86614d815f613245565b610282565b91610282565b14614da857614da691614d9e5f613245565b91909161569d565b565b614deb614db45f613245565b614dbc610231565b9182917fec442f0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b614df7614fa8565b614e0f614e055f830161126e565b915f8491016134fb565b90614e43614e3d7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936131ce565b916131ce565b91614e4c610231565b80614e56816102de565b0390a3565b614e63613fb9565b614e6b614e6d565b565b614e82614e78614aee565b5f60019101614763565b614e8a6144c8565b614ec07f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891614eb7610231565b91829182610985565b0390a1565b614ecd614e5b565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b614f0490614eff615aa3565b614f06565b565b614f0f90615b7b565b565b614f1a90614ef3565b565b90614f2e91614f29615aa3565b614f30565b565b90614f3a91615dbe565b565b90614f4691614f1c565b565b614f50615aa3565b565b614f5a614f48565b565b614f64615aa3565b614f6c614f6e565b565b614f76615df9565b565b614f80614f5c565b565b614f8a615aa3565b614f92614f94565b565b614f9c615e2b565b565b614fa6614f82565b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b60207f6c61626c65000000000000000000000000000000000000000000000000000000917f42616c756e695631795661756c743a204e6f20696e74657265737420617661695f8201520152565b615026602560409261032a565b61502f81614fcc565b0190565b6150489060208101905f818303910152615019565b90565b1561505257565b61505a610231565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061508a60048201615033565b0390fd5b5f7f42616c756e695631795661756c743a2052656465656d204661696c6564000000910152565b6150c2601d60209261032a565b6150cb8161508e565b0190565b6150e49060208101905f8183039101526150b5565b90565b156150ee57565b6150f6610231565b7f08c379a000000000000000000000000000000000000000000000000000000000815280615126600482016150cf565b0390fd5b615133906111ab565b90565b61513f9061512a565b90565b61514b906111c7565b90565b61518361518a9461517960609498979561516f608086019a5f870190610978565b6020850190610978565b6040830190610450565b0190610978565b565b9160206151ad9294936151a660408201965f830190610450565b0190610450565b565b6151c16151bc600161119e565b6111d3565b6152106307a2d13a9160206151de6151d9600161119e565b6111d3565b6370a08231906152056151f03061127b565b926151f9610231565b96879485938493611203565b835260048301610985565b03915afa9081156156665761524d936020935f93615633575b5061524290615236610231565b95869485938493611203565b83526004830161045d565b03915afa90811561562e575f91615600575b508061527c6152766152716005612154565b610243565b91610243565b115f146155f157615297906152916005612154565b9061141a565b5b6152b4816152ae6152a85f611019565b91610243565b1161504b565b6152f560206152cb6152c6600161119e565b6111d3565b63c6e6f592906152ea85926152de610231565b95869485938493611203565b83526004830161045d565b03915afa9081156155ec575f916155be575b50602061531c615317600161119e565b6111d3565b63ba08765292906153515f6153303061127b565b9561535c61533d3061127b565b615345610231565b98899788968795611203565b8552600485016113e8565b03925af19081156155b9575f9161558b575b5061538b8161538561537f5f611019565b91610243565b116150e7565b6153b860206153a261539d60036114d0565b6114dd565b6382755ebb906153b0610231565b938492611203565b825281806153c8600482016102de565b03915afa8015615586576153e3915f91615558575b50615136565b6153fc6153f76153f25f61126e565b6112c0565b6112cc565b90602063095ea7b39261540e83615142565b9061542c5f8796615437615420610231565b98899687958694611203565b845260048401611480565b03925af19182156155535761545192615527575b50615142565b6020632d6bc8ea916154625f61126e565b906154945f615471600261126e565b9561549f8861547f3061127b565b90615488610231565b998a9889978896611203565b86526004860161514e565b03925af18015615522576154f6575b503390916154dc7f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed926131ce565b926154f16154e8610231565b9283928361518c565b0390a2565b6155169060203d811161551b575b61550e81836106b7565b810190611296565b6154ae565b503d615504565b61124a565b6155479060203d811161554c575b61553f81836106b7565b810190611462565b61544b565b503d615535565b61124a565b615579915060203d811161557f575b61557181836106b7565b8101906114f8565b5f6153dd565b503d615567565b61124a565b6155ac915060203d81116155b2575b6155a481836106b7565b810190611296565b5f61536e565b503d61559a565b61124a565b6155df915060203d81116155e5575b6155d781836106b7565b810190611296565b5f615307565b503d6155cd565b61124a565b506155fb5f611019565b615298565b615621915060203d8111615627575b61561981836106b7565b810190611296565b5f61525f565b503d61560f565b61124a565b61524291935061565890853d811161565f575b61565081836106b7565b810190611296565b9290615229565b503d615646565b61124a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b9061569a9101610243565b90565b9190916156a86144a4565b816156c36156bd6156b85f613245565b610282565b91610282565b145f146157ae576156ea836156e460028401916156df83612154565b612205565b9061160b565b5b836157066157006156fb5f613245565b610282565b91610282565b145f1461577f5761572e9061572860028592019161572383612154565b614517565b9061160b565b5b91909161577a6157686157627fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef936131ce565b936131ce565b93615771610231565b9182918261045d565b0390a3565b6157a9906157a36157945f86930187906131da565b9161579e83612154565b61568f565b9061160b565b61572f565b6157c36157be5f830184906131da565b612154565b806157d66157d086610243565b91610243565b10615800576157e96157fb918590614517565b6157f65f840185906131da565b61160b565b6156eb565b9161583f91509192615810610231565b9384937fe450d38c000000000000000000000000000000000000000000000000000000008552600485016144e5565b0390fd5b909261584d6144a4565b8261586861586261585d5f613245565b610282565b91610282565b14615956578461588861588261587d5f613245565b610282565b91610282565b1461590f576158af906158aa6158a360018793018690613946565b87906131da565b61160b565b6158b9575b505050565b9190916159046158f26158ec7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925936131ce565b936131ce565b936158fb610231565b9182918261045d565b0390a35f80806158b4565b61595261591b5f613245565b615923610231565b9182917f94280d6200000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6159996159625f613245565b61596a610231565b9182917fe602df0500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b6159ae6159a86129bd565b156103f3565b6159b457565b6159bc610231565b7f8dfc202b000000000000000000000000000000000000000000000000000000008152806159ec600482016102de565b0390fd5b6159f861326e565b50615a135f615a0d615a0861294b565b615e35565b0161126e565b90565b5190565b90615a2482615e38565b81615a4f7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916131ce565b90615a58610231565b80615a62816102de565b0390a2615a6e81615a16565b615a80615a7a5f611019565b91610243565b115f14615a9457615a9091615f48565b505b565b5050615a9e615ead565b615a92565b615ab4615aae615f77565b156103f3565b615aba57565b615ac2610231565b7fd7e6bcf800000000000000000000000000000000000000000000000000000000815280615af2600482016102de565b0390fd5b615b0790615b02615aa3565b615b09565b565b80615b24615b1e615b195f613245565b610282565b91610282565b14615b3457615b3290614def565b565b615b77615b405f613245565b615b48610231565b9182917f1e4fbdf700000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b615b8490615af6565b565b90615b9891615b93615aa3565b615d9a565b565b601f602091010490565b1b90565b91906008615be2910291615bdc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84615ba4565b92615ba4565b9181191691161790565b9190615c02615bfd615c0a936115ec565b611608565b908354615ba8565b9055565b615c2091615c1a61213c565b91615bec565b565b5b818110615c2e575050565b80615c3b5f600193615c0e565b01615c23565b9190601f8111615c51575b505050565b615c5d615c8293612027565b906020615c6984615b9a565b83019310615c8a575b615c7b90615b9a565b0190615c22565b5f8080615c4c565b9150615c7b81929050615c72565b90615ca8905f19906008026105a9565b191690565b81615cb791615c98565b906002021790565b90615cc981610326565b9067ffffffffffffffff8211615d8957615ced82615ce78554611ff4565b85615c41565b602090601f8311600114615d2157918091615d10935f92615d15575b5050615cad565b90555b565b90915001515f80615d09565b601f19831691615d3085612027565b925f5b818110615d7157509160029391856001969410615d57575b50505002019055615d13565b615d67910151601f841690615c98565b90555f8080615d4b565b91936020600181928787015181550195019201615d33565b61068a565b90615d9891615cbf565b565b6004615dbc92615db5615dab6144a4565b9360038501615d8e565b9101615d8e565b565b90615dc891615b86565b565b615dd2615aa3565b615dda615ddc565b565b615df7615de761566b565b5f615df0613f8f565b910161160b565b565b615e01615dca565b565b615e0b615aa3565b615e13615e15565b565b615e29615e20614aee565b5f809101614763565b565b615e33615e03565b565b90565b803b615e4c615e465f611019565b91610243565b14615e6e57615e6c905f615e66615e6161294b565b615e35565b016134fb565b565b615ea990615e7a610231565b9182917f4c9c8ce300000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b34615ec0615eba5f611019565b91610243565b11615ec757565b615ecf610231565b7fb398979f00000000000000000000000000000000000000000000000000000000815280615eff600482016102de565b0390fd5b606090565b90615f1a615f15836106f5565b6106e0565b918252565b3d5f14615f3a57615f2f3d615f08565b903d5f602084013e5b565b615f42615f03565b90615f38565b5f80615f7493615f56615f03565b508390602081019051915af490615f6b615f1f565b90919091615f95565b90565b615f7f612116565b50615f925f615f8c614ecf565b016132d0565b90565b90615fa990615fa2615f03565b50156103f3565b5f14615fb55750616039565b615fbe82615a16565b615fd0615fca5f611019565b91610243565b148061601e575b615fdf575090565b61601a90615feb610231565b9182917f9996b31500000000000000000000000000000000000000000000000000000000835260048301610985565b0390fd5b50803b61603361602d5f611019565b91610243565b14615fd7565b61604281615a16565b61605461604e5f611019565b91610243565b115f1461606357805190602001fd5b61606b610231565b7f1425ea420000000000000000000000000000000000000000000000000000000081528061609b600482016102de565b0390fdfea26469706673582212204125746dc8c176e7250c424280085f35e8fb8ff91c456a89d0a6ea44db81bcde64736f6c63430008190033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI JUMPDEST PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x1D PUSH0 CALLDATALOAD PUSH2 0x22B JUMP JUMPDEST DUP1 PUSH3 0xF714CE EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x295B9300 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x36B77107 EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x374261AB EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x6560BC80 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x7B103999 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x88696F62 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x9DB5DF46 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xA6F2AE3A EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xE56F2FE4 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xE73FAA2D EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xF7FDE10F EQ PUSH2 0x18B JUMPI PUSH4 0xFDF262B7 SUB PUSH2 0xE JUMPI PUSH2 0xFAA JUMP JUMPDEST PUSH2 0xF66 JUMP JUMPDEST PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xEEF JUMP JUMPDEST PUSH2 0xEB5 JUMP JUMPDEST PUSH2 0xDEB JUMP JUMPDEST PUSH2 0xD89 JUMP JUMPDEST PUSH2 0xD08 JUMP JUMPDEST PUSH2 0xC5A JUMP JUMPDEST PUSH2 0xC27 JUMP JUMPDEST PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0xBBD JUMP JUMPDEST PUSH2 0xB88 JUMP JUMPDEST PUSH2 0xB4E JUMP JUMPDEST PUSH2 0x9CF JUMP JUMPDEST PUSH2 0x99A JUMP JUMPDEST PUSH2 0x945 JUMP JUMPDEST PUSH2 0x910 JUMP JUMPDEST PUSH2 0x8BE JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST PUSH2 0x845 JUMP JUMPDEST PUSH2 0x810 JUMP JUMPDEST PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x61A JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST PUSH2 0x4E1 JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST PUSH2 0x391 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24F DUP2 PUSH2 0x243 JUMP JUMPDEST SUB PUSH2 0x256 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x267 DUP3 PUSH2 0x246 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x28B SWAP1 PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x297 DUP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x29E JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0x2AF DUP3 PUSH2 0x28E JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x2D9 JUMPI DUP1 PUSH2 0x2CD PUSH2 0x2D6 SWAP3 PUSH0 DUP7 ADD PUSH2 0x25A JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH0 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x312 JUMPI PUSH2 0x2FC PUSH2 0x2F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1 JUMP JUMPDEST SWAP1 PUSH2 0x1FB6 JUMP JUMPDEST PUSH2 0x304 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x30E DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x321 JUMPI JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 MCOPY ADD MSTORE JUMP JUMPDEST PUSH1 0x1F DUP1 NOT SWAP2 ADD AND SWAP1 JUMP JUMPDEST PUSH2 0x367 PUSH2 0x370 PUSH1 0x20 SWAP4 PUSH2 0x375 SWAP4 PUSH2 0x35E DUP2 PUSH2 0x326 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP4 PUSH2 0x32A JUMP JUMPDEST SWAP6 DUP7 SWAP2 ADD PUSH2 0x333 JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x38E SWAP2 PUSH1 0x20 DUP3 ADD SWAP2 PUSH0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x348 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x3C1 JUMPI PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x3BD PUSH2 0x3AC PUSH2 0x20F7 JUMP JUMPDEST PUSH2 0x3B4 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0x3EE JUMPI DUP1 PUSH2 0x3E2 PUSH2 0x3EB SWAP3 PUSH0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x25A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x401 SWAP1 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x418 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x3F8 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x44B JUMPI PUSH2 0x447 PUSH2 0x436 PUSH2 0x430 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 PUSH2 0x211A JUMP JUMPDEST PUSH2 0x43E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x459 SWAP1 PUSH2 0x243 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x470 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x4A2 JUMPI PUSH2 0x482 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x49E PUSH2 0x48D PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x495 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x4DC JUMPI PUSH2 0x4D9 PUSH2 0x4C2 DUP5 PUSH0 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0x4D0 DUP2 PUSH1 0x20 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x40 ADD PUSH2 0x25A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0x512 JUMPI PUSH2 0x50E PUSH2 0x4FD PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A7 JUMP JUMPDEST SWAP2 PUSH2 0x2180 JUMP JUMPDEST PUSH2 0x505 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x547 JUMPI PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x543 PUSH2 0x532 PUSH2 0x222A JUMP JUMPDEST PUSH2 0x53A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x55B SWAP1 PUSH2 0x54C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x572 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x552 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x5A4 JUMPI PUSH2 0x584 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x5A0 PUSH2 0x58F PUSH2 0x2734 JUMP JUMPDEST PUSH2 0x597 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SHR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5C0 SWAP1 PUSH1 0x8 PUSH2 0x5C5 SWAP4 MUL PUSH2 0x5A9 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5D3 SWAP2 SLOAD PUSH2 0x5B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5E2 PUSH1 0x5 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x615 JUMPI PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x611 PUSH2 0x600 PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x608 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x64A JUMPI PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x646 PUSH2 0x635 PUSH2 0x274A JUMP JUMPDEST PUSH2 0x63D PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x67D JUMPI PUSH2 0x65F CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x667 PUSH2 0x28D5 JUMP JUMPDEST PUSH2 0x66F PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x679 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x6C1 SWAP1 PUSH2 0x33E JUMP JUMPDEST DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6DB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 PUSH2 0x6F3 PUSH2 0x6EC PUSH2 0x231 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x6B7 JUMP JUMPDEST JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x713 JUMPI PUSH2 0x70F PUSH1 0x20 SWAP2 PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 DUP3 PUSH0 SWAP4 SWAP3 DUP3 CALLDATACOPY ADD MSTORE JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x738 PUSH2 0x733 DUP3 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0x754 JUMPI PUSH2 0x752 SWAP3 PUSH2 0x718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x686 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x777 JUMPI DUP2 PUSH1 0x20 PUSH2 0x774 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x7BC JUMPI PUSH2 0x795 DUP4 PUSH0 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x7B7 JUMPI PUSH2 0x7B4 SWAP3 ADD PUSH2 0x759 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x7D5 PUSH2 0x7CF CALLDATASIZE PUSH1 0x4 PUSH2 0x77C JUMP JUMPDEST SWAP1 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0x7DD PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x7E7 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x7F7 SWAP1 PUSH2 0x7EB JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x80E SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x7EE JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x840 JUMPI PUSH2 0x820 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x83C PUSH2 0x82B PUSH2 0x2983 JUMP JUMPDEST PUSH2 0x833 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x7FB JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x875 JUMPI PUSH2 0x855 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x871 PUSH2 0x860 PUSH2 0x29BD JUMP JUMPDEST PUSH2 0x868 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x886 PUSH1 0x6 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x8B9 JUMPI PUSH2 0x899 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x8B5 PUSH2 0x8A4 PUSH2 0x87A JUMP JUMPDEST PUSH2 0x8AC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x8ED JUMPI PUSH2 0x8D7 PUSH2 0x8D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1 JUMP JUMPDEST SWAP1 PUSH2 0x31C2 JUMP JUMPDEST PUSH2 0x8DF PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x8E9 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x90B JUMPI PUSH2 0x908 SWAP2 PUSH0 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0x940 JUMPI PUSH2 0x93C PUSH2 0x92B PUSH2 0x926 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x31F0 JUMP JUMPDEST PUSH2 0x933 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x973 JUMPI PUSH2 0x955 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x95D PUSH2 0x3264 JUMP JUMPDEST PUSH2 0x965 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x96F DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0x981 SWAP1 PUSH2 0x282 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x998 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x9CA JUMPI PUSH2 0x9AA CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x9C6 PUSH2 0x9B5 PUSH2 0x3272 JUMP JUMPDEST PUSH2 0x9BD PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0x9FD JUMPI PUSH2 0x9DF CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0x9E7 PUSH2 0x32AC JUMP JUMPDEST PUSH2 0x9EF PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x9F9 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA20 JUMPI PUSH2 0xA1C PUSH1 0x20 SWAP2 PUSH2 0x33E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xA3A PUSH2 0xA35 DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP4 DUP2 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 DUP3 DUP5 ADD GT PUSH2 0xA56 JUMPI PUSH2 0xA54 SWAP3 PUSH2 0x718 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x686 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xA79 JUMPI DUP2 PUSH1 0x20 PUSH2 0xA76 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xA25 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xA94 DUP2 PUSH2 0xA7E JUMP JUMPDEST SUB PUSH2 0xA9B JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP CALLDATALOAD SWAP1 PUSH2 0xAAC DUP3 PUSH2 0xA8B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0xE0 DUP2 DUP4 SUB SLT PUSH2 0xB49 JUMPI PUSH0 DUP2 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB44 JUMPI DUP3 PUSH2 0xAD7 SWAP2 DUP4 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB3F JUMPI DUP4 PUSH2 0xAF8 SWAP2 DUP5 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH2 0xB06 DUP2 PUSH1 0x40 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xB14 DUP3 PUSH1 0x60 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xB3C PUSH2 0xB25 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0xB33 DUP2 PUSH1 0xA0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0xC0 ADD PUSH2 0xA9F JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xB83 JUMPI PUSH2 0xB6D PUSH2 0xB61 CALLDATASIZE PUSH1 0x4 PUSH2 0xAAE JUMP JUMPDEST SWAP6 SWAP5 SWAP1 SWAP5 SWAP4 SWAP2 SWAP4 PUSH2 0x3878 JUMP JUMPDEST PUSH2 0xB75 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xB7F DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xBB8 JUMPI PUSH2 0xB98 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xBB4 PUSH2 0xBA3 PUSH2 0x3889 JUMP JUMPDEST PUSH2 0xBAB PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xBED JUMPI PUSH2 0xBCD CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xBE9 PUSH2 0xBD8 PUSH2 0x38A7 JUMP JUMPDEST PUSH2 0xBE0 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC22 JUMPI PUSH2 0xC02 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xC0D PUSH2 0x38C6 JUMP JUMPDEST PUSH2 0xC15 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC55 JUMPI PUSH2 0xC37 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xC3F PUSH2 0x391A JUMP JUMPDEST PUSH2 0xC47 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xC51 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xC8B JUMPI PUSH2 0xC87 PUSH2 0xC76 PUSH2 0xC70 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C6 JUMP JUMPDEST SWAP1 PUSH2 0x3924 JUMP JUMPDEST PUSH2 0xC7E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x405 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 PUSH2 0xCA2 PUSH2 0xC9D DUP4 PUSH2 0xA02 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST PUSH0 PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0xCD8 PUSH1 0x5 PUSH2 0xC90 JUMP JUMPDEST SWAP1 PUSH2 0xCE5 PUSH1 0x20 DUP4 ADD PUSH2 0xCA7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xCEF PUSH2 0xCCE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xCFA PUSH2 0xCE7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD05 PUSH2 0xCF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xD38 JUMPI PUSH2 0xD18 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xD34 PUSH2 0xD23 PUSH2 0xCFD JUMP JUMPDEST PUSH2 0xD2B PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x379 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD66 SWAP1 PUSH1 0x8 PUSH2 0xD6B SWAP4 MUL PUSH2 0x5A9 JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xD79 SWAP2 SLOAD PUSH2 0xD56 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xD86 PUSH0 DUP1 PUSH2 0xD6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xDB9 JUMPI PUSH2 0xD99 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xDB5 PUSH2 0xDA4 PUSH2 0xD7C JUMP JUMPDEST PUSH2 0xDAC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x40 DUP4 DUP3 SUB SLT PUSH2 0xDE6 JUMPI DUP1 PUSH2 0xDDA PUSH2 0xDE3 SWAP3 PUSH0 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0x20 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xE1C JUMPI PUSH2 0xE18 PUSH2 0xE07 PUSH2 0xE01 CALLDATASIZE PUSH1 0x4 PUSH2 0xDBE JUMP JUMPDEST SWAP1 PUSH2 0x395C JUMP JUMPDEST PUSH2 0xE0F PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0xC0 DUP3 DUP5 SUB SLT PUSH2 0xEB0 JUMPI PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEAB JUMPI DUP4 PUSH2 0xE4C SWAP2 DUP5 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEA6 JUMPI DUP2 PUSH2 0xE6D SWAP2 DUP6 ADD PUSH2 0xA5B JUMP JUMPDEST SWAP3 PUSH2 0xE7B DUP3 PUSH1 0x40 DUP4 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP3 PUSH2 0xEA3 PUSH2 0xE8C DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH2 0xE9A DUP2 PUSH1 0x80 DUP7 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP4 PUSH1 0xA0 ADD PUSH2 0x2A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23F JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST CALLVALUE PUSH2 0xEEA JUMPI PUSH2 0xED4 PUSH2 0xEC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xE21 JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x3C73 JUMP JUMPDEST PUSH2 0xEDC PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xEE6 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xF1F JUMPI PUSH2 0xEFF CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xF1B PUSH2 0xF0A PUSH2 0x3CA2 JUMP JUMPDEST PUSH2 0xF12 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST CALLVALUE PUSH2 0xF52 JUMPI PUSH2 0xF3C PUSH2 0xF37 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x3EB9 JUMP JUMPDEST PUSH2 0xF44 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0xF4E DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0xF63 PUSH1 0x4 PUSH0 SWAP1 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xF96 JUMPI PUSH2 0xF76 CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xF92 PUSH2 0xF81 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xF89 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH2 0xFA7 PUSH1 0x2 PUSH0 SWAP1 PUSH2 0xD6E JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xFDA JUMPI PUSH2 0xFBA CALLDATASIZE PUSH1 0x4 PUSH2 0x317 JUMP JUMPDEST PUSH2 0xFD6 PUSH2 0xFC5 PUSH2 0xF9B JUMP JUMPDEST PUSH2 0xFCD PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH2 0xFF5 SWAP2 PUSH2 0xFF0 PUSH2 0x3EF0 JUMP JUMPDEST PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xFFD PUSH2 0x3F9C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x1011 SWAP2 PUSH2 0x100C PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x162B JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x102D PUSH2 0x1028 PUSH2 0x1032 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x536861726573206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1068 PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1071 DUP2 PUSH2 0x1035 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x108A SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x105C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1094 JUMPI JUMP JUMPDEST PUSH2 0x109C PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x10CC PUSH1 0x4 DUP3 ADD PUSH2 0x1075 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E73756666696369656E742062616C616E6365000000000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x1104 PUSH1 0x14 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x110D DUP2 PUSH2 0x10D0 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x1126 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x10F7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1130 JUMPI JUMP JUMPDEST PUSH2 0x1138 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x1168 PUSH1 0x4 DUP3 ADD PUSH2 0x1111 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHR SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1196 PUSH2 0x119B SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x1171 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11A8 SWAP1 SLOAD PUSH2 0x118A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11BF PUSH2 0x11BA PUSH2 0x11C4 SWAP3 PUSH2 0x269 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11D0 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11DC SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11E8 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x11F4 SWAP1 PUSH2 0x11DF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1200 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHL SWAP1 JUMP JUMPDEST PUSH2 0x1212 DUP2 PUSH2 0x54C JUMP JUMPDEST SUB PUSH2 0x1219 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x122A DUP3 PUSH2 0x1209 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1245 JUMPI PUSH2 0x1242 SWAP2 PUSH0 ADD PUSH2 0x121D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x1252 PUSH2 0x231 JUMP JUMPDEST RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x1266 PUSH2 0x126B SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0xD3D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1278 SWAP1 SLOAD PUSH2 0x125A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1284 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1294 DUP3 PUSH2 0x246 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x12AF JUMPI PUSH2 0x12AC SWAP2 PUSH0 ADD PUSH2 0x1287 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH2 0x12BD SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12C9 SWAP1 PUSH2 0x12B4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12D5 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x12EF PUSH2 0x12EA PUSH2 0x12F4 SWAP3 PUSH2 0x12D8 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1330 PUSH2 0x1336 SWAP2 PUSH2 0x54C JUMP JUMPDEST SWAP2 PUSH2 0x54C JUMP JUMPDEST SWAP1 SUB SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x1343 JUMPI JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x1351 SWAP1 PUSH2 0x54C JUMP JUMPDEST PUSH1 0x4D DUP2 GT PUSH2 0x135F JUMPI PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x1373 PUSH2 0x1379 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x1385 DUP4 DUP3 MUL PUSH2 0x243 JUMP JUMPDEST SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1394 JUMPI JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x13D2 PUSH2 0x13D8 SWAP2 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x13E3 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x1399 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x1411 PUSH2 0x1418 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x1407 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1429 PUSH2 0x142F SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST DUP3 SUB SWAP2 DUP3 GT PUSH2 0x143A JUMPI JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x1448 DUP2 PUSH2 0x3F3 JUMP JUMPDEST SUB PUSH2 0x144F JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x1460 DUP3 PUSH2 0x143F JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x147B JUMPI PUSH2 0x1478 SWAP2 PUSH0 ADD PUSH2 0x1453 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x14A1 SWAP3 SWAP5 SWAP4 PUSH2 0x149A PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14C8 PUSH2 0x14CD SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x14A3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14DA SWAP1 SLOAD PUSH2 0x14BC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x14E6 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x14F6 DUP3 PUSH2 0x28E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1511 JUMPI PUSH2 0x150E SWAP2 PUSH0 ADD PUSH2 0x14E9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST PUSH0 PUSH32 0x4661696C656420746F207472616E736665722071756F74654173736574000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x154A PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x1553 DUP2 PUSH2 0x1516 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x156C SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x153D JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1576 JUMPI JUMP JUMPDEST PUSH2 0x157E PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x15AE PUSH1 0x4 DUP3 ADD PUSH2 0x1557 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x15B2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x1600 PUSH2 0x15FB PUSH2 0x1605 SWAP3 PUSH2 0x243 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1620 PUSH2 0x161B PUSH2 0x1627 SWAP3 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0x1608 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x15B7 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1647 DUP2 PUSH2 0x1641 PUSH2 0x163B PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x108D JUMP JUMPDEST PUSH2 0x166C PUSH2 0x1653 CALLER PUSH2 0x31F0 JUMP JUMPDEST PUSH2 0x1665 PUSH2 0x165F DUP5 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT ISZERO PUSH2 0x1129 JUMP JUMPDEST PUSH2 0x16A9 PUSH1 0x20 PUSH2 0x1693 PUSH2 0x168E PUSH2 0x1689 PUSH2 0x1684 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x16A1 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x16B9 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FB1 JUMPI PUSH0 SWAP2 PUSH2 0x1F83 JUMPI JUMPDEST POP SWAP1 PUSH2 0x1702 PUSH1 0x20 PUSH2 0x16EC PUSH2 0x16E7 PUSH2 0x16E2 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x16FA PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1712 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F7E JUMPI PUSH0 SWAP2 PUSH2 0x1F50 JUMPI JUMPDEST POP SWAP1 PUSH2 0x176F PUSH1 0x20 PUSH2 0x173D PUSH2 0x1738 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1764 PUSH2 0x174F ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x1758 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F4B JUMPI PUSH0 SWAP2 PUSH2 0x1F1D JUMPI JUMPDEST POP SWAP3 PUSH2 0x17D4 PUSH1 0x20 PUSH2 0x17A2 PUSH2 0x179D PUSH2 0x1798 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x17C9 PUSH2 0x17B4 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x17BD PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1F18 JUMPI PUSH0 SWAP2 PUSH2 0x1EEA JUMPI JUMPDEST POP SWAP1 PUSH2 0x1838 PUSH1 0x20 PUSH2 0x1806 PUSH2 0x1801 PUSH2 0x17FC PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x182D PUSH2 0x1818 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x1821 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1EE5 JUMPI PUSH0 SWAP2 PUSH2 0x1EB7 JUMPI JUMPDEST POP SWAP5 PUSH1 0x12 DUP3 SWAP1 PUSH2 0x1859 SWAP1 PUSH2 0x12DB JUMP JUMPDEST SWAP1 PUSH2 0x1863 SWAP2 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x186C SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x1875 SWAP2 PUSH2 0x1364 JUMP JUMPDEST SWAP2 PUSH1 0x12 DUP6 SWAP1 PUSH2 0x1883 SWAP1 PUSH2 0x12DB JUMP JUMPDEST SWAP1 PUSH2 0x188D SWAP2 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1896 SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x189F SWAP2 PUSH2 0x1364 JUMP JUMPDEST SWAP2 DUP4 SWAP1 PUSH2 0x18AB SWAP2 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x18B3 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x18BC SWAP2 PUSH2 0x13C6 JUMP JUMPDEST SWAP2 DUP4 SWAP1 PUSH2 0x18C8 SWAP2 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x18D0 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x18D9 SWAP2 PUSH2 0x13C6 JUMP JUMPDEST SWAP3 CALLER SWAP1 PUSH2 0x18E5 SWAP2 PUSH2 0x4003 JUMP JUMPDEST PUSH1 0x12 PUSH2 0x18F0 SWAP1 PUSH2 0x12DB JUMP JUMPDEST SWAP1 PUSH2 0x18FA SWAP2 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1903 SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x190C SWAP2 PUSH2 0x13C6 JUMP JUMPDEST SWAP2 PUSH1 0x12 PUSH2 0x1918 SWAP1 PUSH2 0x12DB JUMP JUMPDEST SWAP1 PUSH2 0x1922 SWAP2 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x192B SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x1934 SWAP2 PUSH2 0x13C6 JUMP JUMPDEST SWAP2 PUSH2 0x193F PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x1948 SWAP1 PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0xBA087652 ADDRESS PUSH2 0x1957 SWAP1 PUSH2 0x127B JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x1962 SWAP1 PUSH2 0x127B JUMP JUMPDEST SWAP5 PUSH2 0x196B PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP4 PUSH2 0x1978 DUP6 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD SWAP3 PUSH2 0x1988 SWAP4 PUSH2 0x13E8 JUMP JUMPDEST SUB DUP2 GAS PUSH1 0x20 SWAP5 PUSH0 SWAP2 CALL SWAP2 DUP3 ISZERO PUSH2 0x1EB2 JUMPI PUSH2 0x19EF SWAP3 PUSH2 0x1E86 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x19BD PUSH2 0x19B8 PUSH2 0x19B3 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x19E4 PUSH2 0x19CF ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x19D8 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1E81 JUMPI PUSH2 0x1A0A SWAP3 PUSH0 SWAP2 PUSH2 0x1E53 JUMPI JUMPDEST POP PUSH2 0x141A JUMP JUMPDEST DUP1 PUSH2 0x1A1D PUSH2 0x1A17 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x1B80 JUMPI JUMPDEST POP DUP1 PUSH2 0x1A37 PUSH2 0x1A31 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x1B67 JUMPI JUMPDEST POP POP PUSH2 0x1A51 PUSH2 0x1A4C PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x1AA0 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x1A6E PUSH2 0x1A69 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x1A95 PUSH2 0x1A80 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x1A89 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1B62 JUMPI PUSH2 0x1ADD SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x1B2F JUMPI JUMPDEST POP PUSH2 0x1AD2 SWAP1 PUSH2 0x1AC6 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1B2A JUMPI PUSH2 0x1AFA SWAP2 PUSH0 SWAP2 PUSH2 0x1AFC JUMPI JUMPDEST POP PUSH1 0x5 PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B1D SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1B23 JUMPI JUMPDEST PUSH2 0x1B15 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x1AF2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B0B JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1AD2 SWAP2 SWAP4 POP PUSH2 0x1B54 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x1B5B JUMPI JUMPDEST PUSH2 0x1B4C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x1AB9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1B42 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1B79 SWAP2 PUSH2 0x1B74 SWAP2 PUSH2 0x41A8 JUMP JUMPDEST PUSH2 0x156F JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH2 0x1B89 DUP2 PUSH2 0x4082 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x1BA5 PUSH2 0x1BA0 PUSH2 0x1B9B PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST SWAP2 PUSH4 0xA9059CBB SWAP3 PUSH2 0x1BD4 PUSH0 PUSH2 0x1BBC DUP10 SWAP5 DUP9 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP6 PUSH2 0x1BDF PUSH2 0x1BC8 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1E4E JUMPI PUSH2 0x1E22 JUMPI JUMPDEST POP PUSH2 0x1BF8 DUP2 PUSH2 0x4082 JUMP JUMPDEST PUSH2 0x1C25 PUSH1 0x20 PUSH2 0x1C0F PUSH2 0x1C0A PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x1C1D PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1C35 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E1D JUMPI PUSH0 SWAP2 PUSH2 0x1DEF JUMPI JUMPDEST POP SWAP1 PUSH2 0x1C76 PUSH1 0x20 PUSH2 0x1C60 PUSH2 0x1C5B PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x1C6E PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x1C86 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1DEA JUMPI PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x1DBD JUMPI JUMPDEST POP SWAP4 PUSH2 0x1CB5 PUSH2 0x1CB0 PUSH2 0x1CAB PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x1CE2 PUSH0 PUSH2 0x1CCA PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP7 PUSH2 0x1CED PUSH2 0x1CD6 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1DB8 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x1D8D JUMPI JUMPDEST POP PUSH2 0x1D1A PUSH2 0x1D15 PUSH2 0x1D10 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x1D3D PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x1D48 PUSH2 0x1D31 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x1D88 JUMPI PUSH2 0x1D5C JUMPI JUMPDEST PUSH2 0x1A23 JUMP JUMPDEST PUSH2 0x1D7C SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1D81 JUMPI JUMPDEST PUSH2 0x1D74 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1D57 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D6A JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1DAC SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x1DB1 JUMPI JUMPDEST PUSH2 0x1DA4 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1D00 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D9A JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1DDD SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x1DE3 JUMPI JUMPDEST PUSH2 0x1DD5 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x1C9A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1DCB JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1E10 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E16 JUMPI JUMPDEST PUSH2 0x1E08 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x1C47 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1DFE JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1E42 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E47 JUMPI JUMPDEST PUSH2 0x1E3A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1BEE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E30 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1E74 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1E7A JUMPI JUMPDEST PUSH2 0x1E6C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x1A04 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E62 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1EA6 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EAB JUMPI JUMPDEST PUSH2 0x1E9E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x19A1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E94 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1ED8 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1EDE JUMPI JUMPDEST PUSH2 0x1ED0 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x184A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EC6 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F0B SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F11 JUMPI JUMPDEST PUSH2 0x1F03 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x17E6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1EF9 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F3E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F44 JUMPI JUMPDEST PUSH2 0x1F36 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x1781 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F2C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F71 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F77 JUMPI JUMPDEST PUSH2 0x1F69 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x1724 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F5F JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1FA4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1FAA JUMPI JUMPDEST PUSH2 0x1F9C DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x16CB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F92 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST SWAP1 PUSH2 0x1FC0 SWAP2 PUSH2 0xFE3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x2 DUP4 DIV SWAP3 AND DUP1 ISZERO PUSH2 0x2014 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x200F JUMPI JUMP JUMPDEST PUSH2 0x1FC7 JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x2004 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 SWAP2 DUP1 SLOAD SWAP1 PUSH2 0x204A PUSH2 0x2043 DUP4 PUSH2 0x1FF4 JUMP JUMPDEST DUP1 SWAP5 PUSH2 0x201E JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 PUSH0 EQ PUSH2 0x20A1 JUMPI POP PUSH1 0x1 EQ PUSH2 0x2065 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2072 SWAP2 SWAP3 SWAP4 SWAP5 POP PUSH2 0x2027 JUMP JUMPDEST SWAP2 PUSH0 SWAP3 JUMPDEST DUP2 DUP5 LT PUSH2 0x2089 JUMPI POP POP ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x2060 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP6 SLOAD DUP5 DUP7 ADD MSTORE ADD SWAP2 ADD SWAP3 SWAP1 PUSH2 0x2076 JUMP JUMPDEST SWAP3 SWAP5 SWAP6 POP POP POP PUSH1 0xFF NOT AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 MUL ADD SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x2060 JUMP JUMPDEST SWAP1 PUSH2 0x20C6 SWAP2 PUSH2 0x2030 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x20E9 PUSH2 0x20E2 SWAP3 PUSH2 0x20D9 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x20BC JUMP JUMPDEST SUB DUP4 PUSH2 0x6B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x20F4 SWAP1 PUSH2 0x20C9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x20FF PUSH2 0x1FC2 JUMP JUMPDEST POP PUSH2 0x2113 PUSH1 0x3 PUSH2 0x210D PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x20EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2137 SWAP2 PUSH2 0x2126 PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x212F PUSH2 0x44C8 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x44D5 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x214C PUSH2 0x2151 SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x215E SWAP1 SLOAD PUSH2 0x2140 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2169 PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x217D PUSH1 0x2 PUSH2 0x2177 PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x2154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x21AA SWAP3 PUSH2 0x218D PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x21A2 PUSH2 0x2199 PUSH2 0x44C8 JUMP JUMPDEST DUP3 SWAP1 DUP5 SWAP2 PUSH2 0x4525 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x45F0 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x21B8 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21C4 SWAP1 PUSH2 0x21AF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x21D0 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x21FC PUSH2 0x2203 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x21F2 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2214 PUSH2 0x221A SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x243 JUMP JUMPDEST SWAP3 PUSH2 0x243 JUMP JUMPDEST DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2225 JUMPI JUMP JUMPDEST PUSH2 0x12F7 JUMP JUMPDEST PUSH2 0x2232 PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x2260 PUSH1 0x20 PUSH2 0x224A PUSH2 0x2245 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0xBB3BA04C SWAP1 PUSH2 0x2258 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2270 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x272B JUMPI PUSH2 0x228B SWAP2 PUSH0 SWAP2 PUSH2 0x26FD JUMPI JUMPDEST POP PUSH2 0x21BB JUMP JUMPDEST PUSH2 0x22B8 PUSH1 0x20 PUSH2 0x22A2 PUSH2 0x229D PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x22B0 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x22C8 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x26F8 JUMPI PUSH0 SWAP2 PUSH2 0x26CA JUMPI JUMPDEST POP SWAP1 PUSH2 0x22E5 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x232E PUSH1 0x20 PUSH2 0x22FC PUSH2 0x22F7 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2323 PUSH2 0x230E ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x2317 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x26C5 JUMPI PUSH2 0x2381 SWAP2 PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x2698 JUMPI JUMPDEST POP PUSH2 0x235A PUSH2 0x2355 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2376 PUSH4 0x7A2D13A PUSH2 0x236A PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2693 JUMPI PUSH0 SWAP2 PUSH2 0x2665 JUMPI JUMPDEST POP PUSH2 0x23E5 PUSH1 0x20 PUSH2 0x23B3 PUSH2 0x23AE PUSH2 0x23A9 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x23DA PUSH2 0x23C5 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x23CE PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2660 JUMPI PUSH0 SWAP2 PUSH2 0x2632 JUMPI JUMPDEST POP PUSH2 0x2401 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x2413 PUSH2 0x240D DUP8 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x2596 JUMPI JUMPDEST PUSH1 0x20 PUSH2 0x2424 DUP6 PUSH2 0x21C7 JUMP JUMPDEST PUSH4 0x248391FF SWAP1 PUSH2 0x2459 PUSH2 0x2437 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST SWAP3 PUSH2 0x2464 PUSH2 0x2444 PUSH0 PUSH2 0x126E JUMP JUMPDEST SWAP7 PUSH2 0x244D PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x21D3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2591 JUMPI PUSH2 0x2488 SWAP4 PUSH2 0x2483 SWAP3 PUSH0 SWAP3 PUSH2 0x2561 JUMPI JUMPDEST POP PUSH2 0x2205 JUMP JUMPDEST PUSH2 0x2205 JUMP JUMPDEST SWAP2 PUSH2 0x2491 PUSH2 0x274A JUMP JUMPDEST SWAP2 PUSH2 0x249B PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x24AD PUSH2 0x24A7 DUP5 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x24C3 JUMPI JUMPDEST POP POP SWAP1 PUSH2 0x24C0 SWAP2 SWAP1 PUSH2 0x2205 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24CE PUSH1 0x20 SWAP2 PUSH2 0x21C7 JUMP JUMPDEST SWAP2 PUSH4 0x248391FF SWAP3 PUSH2 0x24FB PUSH2 0x24E1 PUSH0 PUSH2 0x126E JUMP JUMPDEST SWAP3 SWAP5 PUSH2 0x2506 DUP8 PUSH2 0x24EF PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x21D3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x255C JUMPI PUSH2 0x24C0 SWAP4 PUSH2 0x2525 SWAP3 PUSH0 SWAP3 PUSH2 0x252C JUMPI JUMPDEST POP PUSH2 0x2205 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x24B3 JUMP JUMPDEST PUSH2 0x254E SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2555 JUMPI JUMPDEST PUSH2 0x2546 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x251F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x253C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2583 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x258A JUMPI JUMPDEST PUSH2 0x257B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x247D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2571 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST SWAP2 PUSH2 0x25A0 DUP5 PUSH2 0x21C7 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x248391FF SWAP3 PUSH2 0x25B2 PUSH0 PUSH2 0x126E JUMP JUMPDEST SWAP1 PUSH2 0x25D0 DUP10 SWAP6 PUSH2 0x25DB DUP9 PUSH2 0x25C4 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x21D3 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x262D JUMPI PUSH2 0x25F7 SWAP3 PUSH0 SWAP3 PUSH2 0x25FD JUMPI JUMPDEST POP PUSH2 0x2205 JUMP JUMPDEST SWAP2 PUSH2 0x2419 JUMP JUMPDEST PUSH2 0x261F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2626 JUMPI JUMPDEST PUSH2 0x2617 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x25F1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x260D JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2653 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2659 JUMPI JUMPDEST PUSH2 0x264B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x23F7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2641 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2686 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x268C JUMPI JUMPDEST PUSH2 0x267E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x2393 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2674 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x26B8 SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x26BE JUMPI JUMPDEST PUSH2 0x26B0 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x2347 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x26EB SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x26F1 JUMPI JUMPDEST PUSH2 0x26E3 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x22DA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x26D9 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x271E SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2724 JUMPI JUMPDEST PUSH2 0x2716 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x2285 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x270C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x273C PUSH2 0x2730 JUMP JUMPDEST POP PUSH2 0x2747 PUSH1 0x12 PUSH2 0x12DB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2752 PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x2765 PUSH2 0x2760 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x27B4 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x2782 PUSH2 0x277D PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x27A9 PUSH2 0x2794 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x279D PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x28B4 JUMPI PUSH2 0x27F1 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x2881 JUMPI JUMPDEST POP PUSH2 0x27E6 SWAP1 PUSH2 0x27DA PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x287C JUMPI PUSH0 SWAP2 PUSH2 0x284E JUMPI JUMPDEST POP DUP1 PUSH2 0x2820 PUSH2 0x281A PUSH2 0x2815 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x283F JUMPI PUSH2 0x283B SWAP1 PUSH2 0x2835 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST SWAP1 PUSH2 0x141A JUMP JUMPDEST JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x2849 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x283C JUMP JUMPDEST PUSH2 0x286F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2875 JUMPI JUMPDEST PUSH2 0x2867 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x2803 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x285D JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x27E6 SWAP2 SWAP4 POP PUSH2 0x28A6 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x28AD JUMPI JUMPDEST PUSH2 0x289E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x27CD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2894 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x28C1 PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x28C9 PUSH2 0x28CB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D3 PUSH2 0x47DA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28DD PUSH2 0x28B9 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x28F1 SWAP2 PUSH2 0x28EC PUSH2 0x47F0 JUMP JUMPDEST PUSH2 0x28F3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2906 SWAP2 PUSH2 0x2901 DUP2 PUSH2 0x48C2 JUMP JUMPDEST PUSH2 0x4932 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2912 SWAP2 PUSH2 0x28DF JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x2929 SWAP1 PUSH2 0x2924 PUSH2 0x4A70 JUMP JUMPDEST PUSH2 0x2977 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2943 PUSH2 0x293E PUSH2 0x2948 SWAP3 PUSH2 0x292C JUMP JUMPDEST PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2974 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x292F JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP PUSH2 0x2980 PUSH2 0x294B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2993 PUSH2 0x298E PUSH2 0x2914 JUMP JUMPDEST PUSH2 0x2918 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x29A8 PUSH2 0x29AD SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x2996 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29BA SWAP1 SLOAD PUSH2 0x299C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x29C5 PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x29D8 PUSH0 PUSH2 0x29D2 PUSH2 0x4AEE JUMP JUMPDEST ADD PUSH2 0x29B0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x29ED SWAP2 PUSH2 0x29E8 PUSH2 0x3EF0 JUMP JUMPDEST PUSH2 0x29F7 JUMP JUMPDEST PUSH2 0x29F5 PUSH2 0x3F9C JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x2A09 SWAP2 PUSH2 0x2A04 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x2AC9 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E207A65726F SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x2A3E PUSH1 0x20 DUP1 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x2A47 DUP2 PUSH2 0x2A0B JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x2A60 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x2A32 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2A6A JUMPI JUMP JUMPDEST PUSH2 0x2A72 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x2AA2 PUSH1 0x4 DUP3 ADD PUSH2 0x2A4B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x2AC7 SWAP3 SWAP5 SWAP4 PUSH2 0x2AC0 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2AE5 DUP2 PUSH2 0x2ADF PUSH2 0x2AD9 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x2A63 JUMP JUMPDEST PUSH2 0x2AED PUSH2 0x4B2E JUMP JUMPDEST PUSH2 0x2B06 PUSH2 0x2B01 PUSH2 0x2AFC PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH1 0x20 PUSH4 0x23B872DD SWAP2 CALLER SWAP1 PUSH2 0x2B36 PUSH0 PUSH2 0x2B1D ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP6 PUSH2 0x2B41 DUP9 PUSH2 0x2B2A PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x21D3 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x31BD JUMPI PUSH2 0x3191 JUMPI JUMPDEST POP PUSH2 0x2B7E PUSH1 0x20 PUSH2 0x2B68 PUSH2 0x2B63 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x2B76 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2B8E PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x318C JUMPI PUSH0 SWAP2 PUSH2 0x315E JUMPI JUMPDEST POP PUSH2 0x2BCE PUSH1 0x20 PUSH2 0x2BB8 PUSH2 0x2BB3 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x2BC6 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2BDE PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3159 JUMPI PUSH0 SWAP2 PUSH2 0x312B JUMPI JUMPDEST POP SWAP2 PUSH2 0x2BFB DUP2 PUSH2 0x4082 JUMP JUMPDEST SWAP2 PUSH2 0x2C05 DUP4 PUSH2 0x4082 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2C20 PUSH2 0x2C1B PUSH2 0x2C16 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH4 0xA9059CBB SWAP4 SWAP1 PUSH2 0x2C4E PUSH0 PUSH2 0x2C36 DUP10 DUP8 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP7 PUSH2 0x2C59 PUSH2 0x2C42 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3126 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x30FB JUMPI JUMPDEST POP PUSH2 0x2C86 PUSH2 0x2C81 PUSH2 0x2C7C PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x2CA9 PUSH0 PUSH4 0xA9059CBB SWAP8 SWAP4 SWAP8 PUSH2 0x2CB4 PUSH2 0x2C9D PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x30F6 JUMPI PUSH2 0x2CCE SWAP4 PUSH2 0x30CA JUMPI JUMPDEST POP PUSH2 0x141A JUMP JUMPDEST SWAP1 PUSH2 0x2CE8 PUSH2 0x2CE3 PUSH2 0x2CDE PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH1 0x20 PUSH4 0x95EA7B3 SWAP2 PUSH2 0x2D02 PUSH2 0x2CFD PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST SWAP1 PUSH2 0x2D20 PUSH0 DUP8 SWAP6 PUSH2 0x2D2B PUSH2 0x2D14 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x30C5 JUMPI PUSH2 0x3099 JUMPI JUMPDEST POP PUSH2 0x2D4D PUSH2 0x2D48 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH4 0x6E553F65 SWAP4 DUP3 SWAP1 PUSH2 0x2D7D PUSH0 PUSH2 0x2D65 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP8 PUSH2 0x2D88 PUSH2 0x2D71 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x2AA6 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x3094 JUMPI PUSH2 0x2DCE SWAP4 PUSH2 0x3068 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x2DB8 PUSH2 0x2DB3 PUSH2 0x2DAE PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x2DC6 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2DDE PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3063 JUMPI PUSH2 0x2E2E SWAP4 PUSH0 SWAP2 PUSH2 0x3035 JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x2E18 PUSH2 0x2E13 PUSH2 0x2E0E PUSH2 0x2E09 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x2E26 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x2E3E PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3030 JUMPI PUSH2 0x2EA8 PUSH2 0x2EB3 SWAP4 PUSH2 0x2EAD SWAP3 PUSH2 0x2EB9 SWAP8 PUSH0 SWAP2 PUSH2 0x3002 JUMPI JUMPDEST POP SWAP4 DUP1 PUSH2 0x2E73 PUSH2 0x2E6D DUP8 PUSH2 0x54C JUMP JUMPDEST SWAP2 PUSH2 0x54C JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x2FE1 JUMPI PUSH2 0x2E91 PUSH2 0x2E8C PUSH2 0x2E97 SWAP4 SWAP3 DUP8 SWAP1 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST SWAP1 PUSH2 0x13C6 JUMP JUMPDEST JUMPDEST SWAP3 PUSH2 0x2EA3 PUSH1 0x12 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST SWAP1 PUSH2 0x1364 JUMP JUMPDEST SWAP1 PUSH2 0x4D71 JUMP JUMPDEST PUSH2 0x2ECB PUSH2 0x2EC6 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x2F1A PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x2EE8 PUSH2 0x2EE3 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x2F0F PUSH2 0x2EFA ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x2F03 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2FDC JUMPI PUSH2 0x2F57 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x2FA9 JUMPI JUMPDEST POP PUSH2 0x2F4C SWAP1 PUSH2 0x2F40 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x2FA4 JUMPI PUSH2 0x2F74 SWAP2 PUSH0 SWAP2 PUSH2 0x2F76 JUMPI JUMPDEST POP PUSH1 0x5 PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2F97 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2F9D JUMPI JUMPDEST PUSH2 0x2F8F DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x2F6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2F85 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2F4C SWAP2 SWAP4 POP PUSH2 0x2FCE SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x2FD5 JUMPI JUMPDEST PUSH2 0x2FC6 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x2F33 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2FBC JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x2FF7 PUSH2 0x2FF2 PUSH2 0x2FFD SWAP4 SWAP3 DUP8 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST SWAP1 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x2E98 JUMP JUMPDEST PUSH2 0x3023 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3029 JUMPI JUMPDEST PUSH2 0x301B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x2E5E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3011 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x3056 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x305C JUMPI JUMPDEST PUSH2 0x304E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x2DF3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3044 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x3088 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x308D JUMPI JUMPDEST PUSH2 0x3080 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x2D9C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3076 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x30B9 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x30BE JUMPI JUMPDEST PUSH2 0x30B1 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x2D3A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30A7 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x30EA SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x30EF JUMPI JUMPDEST PUSH2 0x30E2 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x2CC8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30D8 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x311A SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x311F JUMPI JUMPDEST PUSH2 0x3112 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x2C6C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3108 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x314C SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3152 JUMPI JUMPDEST PUSH2 0x3144 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x2BF0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x313A JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x317F SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3185 JUMPI JUMPDEST PUSH2 0x3177 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x2BA0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x316D JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x31B1 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x31B6 JUMPI JUMPDEST PUSH2 0x31A9 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x2B50 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x319F JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST SWAP1 PUSH2 0x31CC SWAP2 PUSH2 0x29DB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x31D7 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x31E4 SWAP1 PUSH2 0x31CE JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x320F PUSH2 0x3214 SWAP2 PUSH2 0x31FF PUSH2 0x213C JUMP JUMPDEST POP PUSH0 PUSH2 0x3209 PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x2154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x321F PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x3227 PUSH2 0x3251 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x323D PUSH2 0x3238 PUSH2 0x3242 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x269 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x324E SWAP1 PUSH2 0x3229 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3262 PUSH2 0x325D PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x4DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x326C PUSH2 0x3217 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x327A PUSH2 0x326E JUMP JUMPDEST POP PUSH2 0x328D PUSH2 0x3288 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3298 PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x32A0 PUSH2 0x32A2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x32AA PUSH2 0x4EC5 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x32B4 PUSH2 0x3290 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SHR SWAP1 JUMP JUMPDEST PUSH2 0x32C8 PUSH2 0x32CD SWAP2 PUSH2 0x32B6 JUMP JUMPDEST PUSH2 0x2996 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x32DA SWAP1 SLOAD PUSH2 0x32BC JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x32F6 PUSH2 0x32FB SWAP2 PUSH2 0x116C JUMP JUMPDEST PUSH2 0x32DD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3308 SWAP1 SLOAD PUSH2 0x32EA JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x331E PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x15B2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x333C PUSH2 0x3337 PUSH2 0x3341 SWAP3 PUSH2 0xA7E JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x335C PUSH2 0x3357 PUSH2 0x3363 SWAP3 PUSH2 0x3328 JUMP JUMPDEST PUSH2 0x3344 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x330B JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 SHL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3381 PUSH9 0xFF0000000000000000 SWAP2 PUSH2 0x3367 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3394 SWAP1 PUSH2 0x3F3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x33AF PUSH2 0x33AA PUSH2 0x33B6 SWAP3 PUSH2 0x338B JUMP JUMPDEST PUSH2 0x3397 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x336D JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x33C3 SWAP1 PUSH2 0xA7E JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x33DA SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x33BA JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP6 SWAP2 SWAP4 SWAP5 SWAP1 SWAP5 DUP3 SWAP7 PUSH2 0x33ED PUSH2 0x4ECF JUMP JUMPDEST SWAP6 PUSH2 0x33F9 PUSH0 DUP9 ADD PUSH2 0x32D0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x34AA JUMPI JUMPDEST PUSH2 0x346E JUMPI PUSH2 0x3433 SWAP8 PUSH2 0x342A SWAP7 PUSH2 0x3418 DUP12 PUSH0 DUP12 ADD PUSH2 0x3347 JUMP JUMPDEST PUSH2 0x3425 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x339A JUMP JUMPDEST PUSH2 0x377D JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x339A JUMP JUMPDEST PUSH2 0x3469 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x3460 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x33C7 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x3476 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x34A6 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x34B6 PUSH0 DUP9 ADD PUSH2 0x32FE JUMP JUMPDEST PUSH2 0x34C8 PUSH2 0x34C2 DUP12 PUSH2 0xA7E JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST LT ISZERO PUSH2 0x3400 JUMP JUMPDEST SWAP1 PUSH2 0x34EE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH2 0x15B2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3510 PUSH2 0x350B PUSH2 0x3517 SWAP3 PUSH2 0x31CE JUMP JUMPDEST PUSH2 0x34F8 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x34CF JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3524 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3530 SWAP1 PUSH2 0x351B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x353C SWAP1 PUSH2 0x351B JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3557 PUSH2 0x3552 PUSH2 0x355E SWAP3 PUSH2 0x3533 JUMP JUMPDEST PUSH2 0x353F JUMP JUMPDEST DUP3 SLOAD PUSH2 0x34CF JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x356B SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3577 SWAP1 PUSH2 0x3562 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3583 SWAP1 PUSH2 0x3562 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x359E PUSH2 0x3599 PUSH2 0x35A5 SWAP3 PUSH2 0x357A JUMP JUMPDEST PUSH2 0x3586 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x34CF JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657441206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x35DD PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x35E6 DUP2 PUSH2 0x35A9 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x35FF SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x35D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3609 JUMPI JUMP JUMPDEST PUSH2 0x3611 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3641 PUSH1 0x4 DUP3 ADD PUSH2 0x35EA JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420596561726E205661756C7420616464726573730000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3679 PUSH1 0x1B PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x3682 DUP2 PUSH2 0x3645 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x369B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x366C JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x36A5 JUMPI JUMP JUMPDEST PUSH2 0x36AD PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x36DD PUSH1 0x4 DUP3 ADD PUSH2 0x3686 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x496E76616C696420617373657442206164647265737300000000000000000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x3715 PUSH1 0x16 PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x371E DUP2 PUSH2 0x36E1 JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x3737 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x3708 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3741 JUMPI JUMP JUMPDEST PUSH2 0x3749 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3779 PUSH1 0x4 DUP3 ADD PUSH2 0x3722 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x37E5 SWAP7 POP PUSH2 0x37D9 SWAP4 PUSH2 0x37C6 PUSH2 0x37DE SWAP8 SWAP7 SWAP5 PUSH2 0x37A8 PUSH2 0x37D2 SWAP6 PUSH2 0x37CB SWAP6 PUSH2 0x37A3 CALLER PUSH2 0x4F11 JUMP JUMPDEST PUSH2 0x4F3C JUMP JUMPDEST PUSH2 0x37B0 PUSH2 0x4F52 JUMP JUMPDEST PUSH2 0x37B8 PUSH2 0x4F78 JUMP JUMPDEST PUSH2 0x37C0 PUSH2 0x4F9E JUMP JUMPDEST PUSH0 PUSH2 0x34FB JUMP JUMPDEST PUSH2 0x3527 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3542 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x34FB JUMP JUMPDEST PUSH2 0x356E JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3589 JUMP JUMPDEST PUSH2 0x3812 PUSH2 0x37F1 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x380B PUSH2 0x3805 PUSH2 0x3800 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3602 JUMP JUMPDEST PUSH2 0x3848 PUSH2 0x3827 PUSH2 0x3822 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3841 PUSH2 0x383B PUSH2 0x3836 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x369E JUMP JUMPDEST PUSH2 0x3876 PUSH2 0x3855 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x386F PUSH2 0x3869 PUSH2 0x3864 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x373A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3887 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x33DC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3891 PUSH2 0x326E JUMP JUMPDEST POP PUSH2 0x38A4 PUSH0 PUSH2 0x389E PUSH2 0x4FA8 JUMP JUMPDEST ADD PUSH2 0x126E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38AF PUSH2 0x1FC2 JUMP JUMPDEST POP PUSH2 0x38C3 PUSH1 0x4 PUSH2 0x38BD PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x20EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38CE PUSH2 0x326E JUMP JUMPDEST POP PUSH2 0x38E1 PUSH2 0x38DC PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x38EC PUSH2 0x3EF0 JUMP JUMPDEST PUSH2 0x38F4 PUSH2 0x38FE JUMP JUMPDEST PUSH2 0x38FC PUSH2 0x3F9C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3906 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x390E PUSH2 0x3910 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3918 PUSH2 0x51AF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3922 PUSH2 0x38E4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3941 SWAP2 PUSH2 0x3930 PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x3939 PUSH2 0x44C8 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x45F0 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3950 SWAP1 PUSH2 0x31CE JUMP JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x398A SWAP2 PUSH2 0x3980 PUSH2 0x3985 SWAP3 PUSH2 0x396F PUSH2 0x213C JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x397A PUSH2 0x44A4 JUMP JUMPDEST ADD PUSH2 0x3946 JUMP JUMPDEST PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x2154 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39A1 PUSH2 0x399C PUSH2 0x39A6 SWAP3 PUSH2 0x1013 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39C0 PUSH2 0x39BB PUSH2 0x39C5 SWAP3 PUSH2 0x39A9 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39D1 SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39DD SWAP1 PUSH2 0x39AC JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x39F4 SWAP1 PUSH0 PUSH1 0x20 DUP6 ADD SWAP5 ADD SWAP1 PUSH2 0x39D4 JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP5 SWAP2 SWAP5 SWAP4 SWAP1 SWAP4 PUSH2 0x3A05 PUSH2 0x4ECF JUMP JUMPDEST SWAP6 PUSH2 0x3A1A PUSH2 0x3A14 PUSH0 DUP10 ADD PUSH2 0x32D0 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST SWAP6 PUSH2 0x3A26 PUSH0 DUP10 ADD PUSH2 0x32FE JUMP JUMPDEST DUP1 PUSH2 0x3A39 PUSH2 0x3A33 PUSH0 PUSH2 0x398D JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST EQ DUP1 PUSH2 0x3B73 JUMPI JUMPDEST SWAP1 PUSH2 0x3A54 PUSH2 0x3A4E PUSH1 0x1 PUSH2 0x39AC JUMP JUMPDEST SWAP2 PUSH2 0xA7E JUMP JUMPDEST EQ DUP1 PUSH2 0x3B4B JUMPI JUMPDEST PUSH2 0x3A66 SWAP1 SWAP2 ISZERO PUSH2 0x3F3 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x3B3A JUMPI JUMPDEST POP PUSH2 0x3AFE JUMPI PUSH2 0x3A96 SWAP6 PUSH2 0x3A8B PUSH2 0x3A83 PUSH1 0x1 PUSH2 0x39AC JUMP JUMPDEST PUSH0 DUP12 ADD PUSH2 0x3347 JUMP JUMPDEST DUP8 PUSH2 0x3AEC JUMPI JUMPDEST PUSH2 0x3B7A JUMP JUMPDEST PUSH2 0x3A9E JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x3AAB SWAP1 PUSH0 DUP1 SWAP2 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3AE3 PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP2 PUSH2 0x3ADA PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x39E1 JUMP JUMPDEST SUB SWAP1 LOG1 PUSH0 PUSH2 0x3A9B JUMP JUMPDEST PUSH2 0x3AF9 PUSH1 0x1 PUSH0 DUP12 ADD PUSH2 0x339A JUMP JUMPDEST PUSH2 0x3A91 JUMP JUMPDEST PUSH2 0x3B06 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3B36 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B45 SWAP2 POP ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH0 PUSH2 0x3A6D JUMP JUMPDEST POP PUSH2 0x3A66 PUSH2 0x3B58 ADDRESS PUSH2 0x39C8 JUMP JUMPDEST EXTCODESIZE PUSH2 0x3B6B PUSH2 0x3B65 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x3A5B JUMP JUMPDEST POP DUP8 PUSH2 0x3A40 JUMP JUMPDEST PUSH2 0x3BC6 PUSH2 0x3BE0 SWAP7 SWAP5 PUSH2 0x3BC1 PUSH2 0x3BD4 SWAP6 PUSH2 0x3BA3 PUSH2 0x3BD9 SWAP10 SWAP7 PUSH2 0x3BCD SWAP7 PUSH2 0x3B9E CALLER PUSH2 0x4F11 JUMP JUMPDEST PUSH2 0x4F3C JUMP JUMPDEST PUSH2 0x3BAB PUSH2 0x4F52 JUMP JUMPDEST PUSH2 0x3BB3 PUSH2 0x4F78 JUMP JUMPDEST PUSH2 0x3BBB PUSH2 0x4F9E JUMP JUMPDEST PUSH0 PUSH2 0x34FB JUMP JUMPDEST PUSH2 0x3527 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3542 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x34FB JUMP JUMPDEST PUSH2 0x356E JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3589 JUMP JUMPDEST PUSH2 0x3C0D PUSH2 0x3BEC PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x3C06 PUSH2 0x3C00 PUSH2 0x3BFB PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x3602 JUMP JUMPDEST PUSH2 0x3C43 PUSH2 0x3C22 PUSH2 0x3C1D PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x3C3C PUSH2 0x3C36 PUSH2 0x3C31 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x369E JUMP JUMPDEST PUSH2 0x3C71 PUSH2 0x3C50 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x3C6A PUSH2 0x3C64 PUSH2 0x3C5F PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x373A JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x3C81 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x39F6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3C9A PUSH2 0x3C95 PUSH2 0x3C9F SWAP3 PUSH2 0x3C83 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3CAA PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x3CB3 PUSH2 0x2161 JUMP JUMPDEST PUSH2 0x3CC5 PUSH2 0x3CBF PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x3E28 JUMPI PUSH2 0x3CF7 PUSH1 0x20 PUSH2 0x3CE1 PUSH2 0x3CDC PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x1BF01E9B SWAP1 PUSH2 0x3CEF PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3D07 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3E23 JUMPI PUSH2 0x3D31 PUSH2 0x3D2C PUSH2 0x3D47 SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP2 PUSH2 0x3DF6 JUMPI JUMPDEST POP PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x3D3F PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x3D57 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x3DF1 JUMPI PUSH2 0x3D9B PUSH2 0x3D8E PUSH2 0x3D89 PUSH2 0x3DB2 SWAP4 PUSH2 0x3DC0 SWAP6 PUSH0 SWAP2 PUSH2 0x3DC3 JUMPI JUMPDEST POP PUSH2 0x3D84 PUSH1 0x12 PUSH2 0x12DB JUMP JUMPDEST PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x3D96 PUSH2 0x222A JUMP JUMPDEST PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x3DAC PUSH8 0xDE0B6B3A7640000 PUSH2 0x3C86 JUMP JUMPDEST SWAP1 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x3DBA PUSH2 0x2161 JUMP JUMPDEST SWAP1 PUSH2 0x13C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3DE4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3DEA JUMPI JUMPDEST PUSH2 0x3DDC DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x3D79 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DD2 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x3E16 SWAP2 POP DUP5 RETURNDATASIZE DUP2 GT PUSH2 0x3E1C JUMPI JUMPDEST PUSH2 0x3E0E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x3D26 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3E04 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x3E31 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3E45 SWAP1 PUSH2 0x3E40 PUSH2 0x46CD JUMP JUMPDEST PUSH2 0x3E47 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x3E62 PUSH2 0x3E5C PUSH2 0x3E57 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x3E72 JUMPI PUSH2 0x3E70 SWAP1 PUSH2 0x4DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3EB5 PUSH2 0x3E7E PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x3E86 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3EC2 SWAP1 PUSH2 0x3E34 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EDB PUSH2 0x3ED6 PUSH2 0x3EE0 SWAP3 PUSH2 0x3EC4 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EED PUSH1 0x2 PUSH2 0x3EC7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3EF8 PUSH2 0x566B JUMP JUMPDEST PUSH2 0x3F03 PUSH0 DUP3 ADD PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x3F1C PUSH2 0x3F16 PUSH2 0x3F11 PUSH2 0x3EE3 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x3F37 JUMPI PUSH2 0x3F35 SWAP1 PUSH0 PUSH2 0x3F2E PUSH2 0x3EE3 JUMP JUMPDEST SWAP2 ADD PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3F3F PUSH2 0x231 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3F6F PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x3F87 PUSH2 0x3F82 PUSH2 0x3F8C SWAP3 PUSH2 0x39A9 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3F99 PUSH1 0x1 PUSH2 0x3F73 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x3FB7 PUSH2 0x3FA7 PUSH2 0x566B JUMP JUMPDEST PUSH0 PUSH2 0x3FB0 PUSH2 0x3F8F JUMP JUMPDEST SWAP2 ADD PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x3FC1 PUSH2 0x29BD JUMP JUMPDEST PUSH2 0x3FC7 JUMPI JUMP JUMPDEST PUSH2 0x3FCF PUSH2 0x231 JUMP JUMPDEST PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x3FFF PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP2 PUSH2 0x401F PUSH2 0x4019 PUSH2 0x4014 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x403B JUMPI PUSH2 0x4039 SWAP2 SWAP1 PUSH2 0x4032 PUSH0 PUSH2 0x3245 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x569D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x407E PUSH2 0x4047 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x404F PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x408A PUSH2 0x213C JUMP JUMPDEST POP PUSH2 0x40B8 PUSH1 0x20 PUSH2 0x40A2 PUSH2 0x409D PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x85462D6F SWAP1 PUSH2 0x40B0 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x40C8 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x41A3 JUMPI PUSH0 SWAP2 PUSH2 0x4175 JUMPI JUMPDEST POP SWAP1 PUSH2 0x4109 PUSH1 0x20 PUSH2 0x40F3 PUSH2 0x40EE PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x4F4608A2 SWAP1 PUSH2 0x4101 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4119 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x4170 JUMPI PUSH2 0x413F SWAP4 PUSH2 0x413A SWAP3 PUSH0 SWAP2 PUSH2 0x4142 JUMPI JUMPDEST POP SWAP3 PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x13C6 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4163 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4169 JUMPI JUMPDEST PUSH2 0x415B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x4133 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4151 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x4196 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x419C JUMPI JUMPDEST PUSH2 0x418E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x40DA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4184 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST SWAP1 PUSH2 0x41B1 PUSH2 0x2116 JUMP JUMPDEST POP PUSH1 0x20 PUSH2 0x41BD DUP4 PUSH2 0x4082 JUMP JUMPDEST SWAP3 PUSH2 0x41DB PUSH2 0x41D4 DUP3 PUSH2 0x41CF PUSH1 0x4 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x141A JUMP JUMPDEST PUSH1 0x4 PUSH2 0x160B JUMP JUMPDEST PUSH2 0x41F5 PUSH2 0x41F0 PUSH2 0x41EB PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x4222 PUSH0 PUSH2 0x420A PUSH4 0xA9059CBB SWAP7 SWAP5 DUP9 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP6 PUSH2 0x422D PUSH2 0x4216 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x449F JUMPI PUSH2 0x4473 JUMPI JUMPDEST POP PUSH2 0x4246 DUP2 PUSH2 0x4082 JUMP JUMPDEST PUSH2 0x4273 PUSH1 0x20 PUSH2 0x425D PUSH2 0x4258 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x4CC7325 SWAP1 PUSH2 0x426B PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4283 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x446E JUMPI PUSH0 SWAP2 PUSH2 0x4440 JUMPI JUMPDEST POP SWAP1 PUSH2 0x42C4 PUSH1 0x20 PUSH2 0x42AE PUSH2 0x42A9 PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x3B19E84A SWAP1 PUSH2 0x42BC PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x42D4 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x443B JUMPI PUSH1 0x20 SWAP2 PUSH0 SWAP2 PUSH2 0x440E JUMPI JUMPDEST POP SWAP4 PUSH2 0x4304 PUSH2 0x42FF PUSH2 0x42FA PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x4331 PUSH0 PUSH2 0x4319 PUSH4 0xA9059CBB SWAP8 SWAP5 DUP8 SWAP1 PUSH2 0x141A JUMP JUMPDEST SWAP7 PUSH2 0x433C PUSH2 0x4325 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x4409 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x43DE JUMPI JUMPDEST POP PUSH2 0x436A PUSH2 0x4365 PUSH2 0x4360 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x438D PUSH0 PUSH4 0xA9059CBB SWAP6 SWAP4 SWAP6 PUSH2 0x4398 PUSH2 0x4381 PUSH2 0x231 JUMP JUMPDEST SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x43D9 JUMPI PUSH2 0x43AD JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x43CD SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x43D2 JUMPI JUMPDEST PUSH2 0x43C5 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x43A7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x43BB JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x43FD SWAP1 DUP4 RETURNDATASIZE DUP2 GT PUSH2 0x4402 JUMPI JUMPDEST PUSH2 0x43F5 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x434F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x43EB JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x442E SWAP2 POP DUP3 RETURNDATASIZE DUP2 GT PUSH2 0x4434 JUMPI JUMPDEST PUSH2 0x4426 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x42E8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x441C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x4461 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4467 JUMPI JUMPDEST PUSH2 0x4459 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x4295 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x444F JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x4493 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4498 JUMPI JUMPDEST PUSH2 0x448B DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x423C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4481 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 JUMP JUMPDEST PUSH2 0x44D0 PUSH2 0x326E JUMP JUMPDEST POP CALLER SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x44E3 SWAP3 SWAP2 PUSH1 0x1 SWAP3 PUSH2 0x5843 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH2 0x450E PUSH2 0x4515 SWAP5 SWAP7 SWAP6 SWAP4 SWAP7 PUSH2 0x4504 PUSH1 0x60 DUP5 ADD SWAP9 PUSH0 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4522 SWAP2 SUB PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x4533 DUP2 DUP4 SWAP1 PUSH2 0x395C JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x4567 PUSH2 0x4561 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST SUB PUSH2 0x4574 JUMPI JUMPDEST POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x4587 PUSH2 0x4581 DUP8 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT PUSH2 0x45AD JUMPI PUSH2 0x45A4 SWAP4 SWAP5 PUSH2 0x459C SWAP2 SWAP4 SWAP3 PUSH2 0x4517 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH2 0x5843 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 PUSH2 0x456D JUMP JUMPDEST POP PUSH2 0x45EC DUP5 SWAP3 SWAP2 SWAP3 PUSH2 0x45BD PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x44E5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP2 DUP3 PUSH2 0x460C PUSH2 0x4606 PUSH2 0x4601 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x4686 JUMPI DUP2 PUSH2 0x462C PUSH2 0x4626 PUSH2 0x4621 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x463F JUMPI PUSH2 0x463D SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x569D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4682 PUSH2 0x464B PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x4653 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x46C9 PUSH2 0x4692 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x469A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x46D5 PUSH2 0x3889 JUMP JUMPDEST PUSH2 0x46EE PUSH2 0x46E8 PUSH2 0x46E3 PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x46F5 JUMPI JUMP JUMPDEST PUSH2 0x4737 PUSH2 0x4700 PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x4708 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4743 PUSH2 0x599D JUMP JUMPDEST PUSH2 0x474B PUSH2 0x4783 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4759 PUSH1 0xFF SWAP2 PUSH2 0x15B2 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4778 PUSH2 0x4773 PUSH2 0x477F SWAP3 PUSH2 0x338B JUMP JUMPDEST PUSH2 0x3397 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x474D JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4797 PUSH2 0x478E PUSH2 0x4AEE JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x4763 JUMP JUMPDEST PUSH2 0x479F PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x47D5 PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA SWAP2 PUSH2 0x47CC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x47E2 PUSH2 0x473B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x47ED SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x47F9 ADDRESS PUSH2 0x47E4 JUMP JUMPDEST PUSH2 0x482B PUSH2 0x4825 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x4875 JUMPI JUMPDEST PUSH2 0x4839 JUMPI JUMP JUMPDEST PUSH2 0x4841 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4871 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x487E PUSH2 0x59F0 JUMP JUMPDEST PUSH2 0x48B0 PUSH2 0x48AA PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ ISZERO PUSH2 0x4833 JUMP JUMPDEST POP PUSH2 0x48C0 PUSH2 0x46CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x48CB SWAP1 PUSH2 0x48B7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x48D6 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x48E2 SWAP1 PUSH2 0x48CD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x48EE SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x48FA DUP2 PUSH2 0x7EB JUMP JUMPDEST SUB PUSH2 0x4901 JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 POP MLOAD SWAP1 PUSH2 0x4912 DUP3 PUSH2 0x48F1 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x492D JUMPI PUSH2 0x492A SWAP2 PUSH0 ADD PUSH2 0x4905 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x23B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x4960 PUSH1 0x20 PUSH2 0x494A PUSH2 0x4945 DUP7 PUSH2 0x48D9 JUMP JUMPDEST PUSH2 0x48E5 JUMP JUMPDEST PUSH4 0x52D1902D SWAP1 PUSH2 0x4958 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4970 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 SWAP2 PUSH0 SWAP3 PUSH2 0x4A40 JUMPI JUMPDEST POP ISZERO PUSH0 EQ PUSH2 0x49D1 JUMPI POP POP SWAP1 PUSH1 0x1 PUSH2 0x4992 JUMPI POP JUMPDEST JUMP JUMPDEST PUSH2 0x49CD SWAP1 PUSH2 0x499E PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP3 DUP4 PUSH2 0x49EC PUSH2 0x49E6 PUSH2 0x49E1 PUSH2 0x294B JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST SWAP2 PUSH2 0x7EB JUMP JUMPDEST SUB PUSH2 0x4A01 JUMPI PUSH2 0x49FC SWAP3 SWAP4 POP PUSH2 0x5A1A JUMP JUMPDEST PUSH2 0x4990 JUMP JUMPDEST PUSH2 0x4A3C DUP5 PUSH2 0x4A0D PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x7FB JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4A62 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4A69 JUMPI JUMPDEST PUSH2 0x4A5A DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4914 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x497D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4A50 JUMP JUMPDEST PUSH2 0x4A79 ADDRESS PUSH2 0x47E4 JUMP JUMPDEST PUSH2 0x4AAB PUSH2 0x4AA5 PUSH32 0x0 PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST SUB PUSH2 0x4AB2 JUMPI JUMP JUMPDEST PUSH2 0x4ABA PUSH2 0x231 JUMP JUMPDEST PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x4AEA PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH2 0x4B26 PUSH2 0x4B21 PUSH2 0x4B2B SWAP3 PUSH2 0x3EC4 JUMP JUMPDEST PUSH2 0x1016 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x4B40 PUSH2 0x4B3B PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x4B8F PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x4B5D PUSH2 0x4B58 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x4B84 PUSH2 0x4B6F ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x4B78 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4D6C JUMPI PUSH2 0x4BCC SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x4D39 JUMPI JUMPDEST POP PUSH2 0x4BC1 SWAP1 PUSH2 0x4BB5 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x4D34 JUMPI PUSH0 SWAP2 PUSH2 0x4D06 JUMPI JUMPDEST POP DUP1 PUSH2 0x4BFB PUSH2 0x4BF5 PUSH2 0x4BF0 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x4CF7 JUMPI PUSH2 0x4C16 SWAP1 PUSH2 0x4C10 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST SWAP1 PUSH2 0x141A JUMP JUMPDEST JUMPDEST PUSH2 0x4C4B PUSH1 0x20 PUSH2 0x4C35 PUSH2 0x4C30 PUSH2 0x4C2B PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH4 0x313CE567 SWAP1 PUSH2 0x4C43 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x4C5B PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x4CF2 JUMPI PUSH2 0x4CA4 PUSH2 0x4CA9 SWAP2 PUSH2 0x4CAF SWAP4 PUSH0 SWAP2 PUSH2 0x4CC4 JUMPI JUMPDEST POP PUSH2 0x4C9F PUSH2 0x4C99 PUSH2 0x4C94 PUSH1 0x1 SWAP4 PUSH2 0x4C8E PUSH1 0x2 PUSH2 0x4B12 JUMP JUMPDEST SWAP1 PUSH2 0x1324 JUMP JUMPDEST PUSH2 0x1348 JUMP JUMPDEST SWAP2 PUSH2 0x3F73 JUMP JUMPDEST PUSH2 0x1364 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x4CB7 JUMPI JUMPDEST JUMP JUMPDEST PUSH2 0x4CBF PUSH2 0x51AF JUMP JUMPDEST PUSH2 0x4CB5 JUMP JUMPDEST PUSH2 0x4CE5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4CEB JUMPI JUMPDEST PUSH2 0x4CDD DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x122C JUMP JUMPDEST PUSH0 PUSH2 0x4C77 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4CD3 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST POP PUSH2 0x4D01 PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x4C17 JUMP JUMPDEST PUSH2 0x4D27 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x4D2D JUMPI JUMPDEST PUSH2 0x4D1F DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x4BDE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4D15 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x4BC1 SWAP2 SWAP4 POP PUSH2 0x4D5E SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x4D65 JUMPI JUMPDEST PUSH2 0x4D56 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x4BA8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4D4C JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST DUP1 PUSH2 0x4D8C PUSH2 0x4D86 PUSH2 0x4D81 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x4DA8 JUMPI PUSH2 0x4DA6 SWAP2 PUSH2 0x4D9E PUSH0 PUSH2 0x3245 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x569D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4DEB PUSH2 0x4DB4 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x4DBC PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x4DF7 PUSH2 0x4FA8 JUMP JUMPDEST PUSH2 0x4E0F PUSH2 0x4E05 PUSH0 DUP4 ADD PUSH2 0x126E JUMP JUMPDEST SWAP2 PUSH0 DUP5 SWAP2 ADD PUSH2 0x34FB JUMP JUMPDEST SWAP1 PUSH2 0x4E43 PUSH2 0x4E3D PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP2 PUSH2 0x31CE JUMP JUMPDEST SWAP2 PUSH2 0x4E4C PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x4E56 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x4E63 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x4E6B PUSH2 0x4E6D JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4E82 PUSH2 0x4E78 PUSH2 0x4AEE JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP2 ADD PUSH2 0x4763 JUMP JUMPDEST PUSH2 0x4E8A PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x4EC0 PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 SWAP2 PUSH2 0x4EB7 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x4ECD PUSH2 0x4E5B JUMP JUMPDEST JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x4F04 SWAP1 PUSH2 0x4EFF PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x4F06 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F0F SWAP1 PUSH2 0x5B7B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F1A SWAP1 PUSH2 0x4EF3 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4F2E SWAP2 PUSH2 0x4F29 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x4F30 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4F3A SWAP2 PUSH2 0x5DBE JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x4F46 SWAP2 PUSH2 0x4F1C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F50 PUSH2 0x5AA3 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F5A PUSH2 0x4F48 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F64 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x4F6C PUSH2 0x4F6E JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F76 PUSH2 0x5DF9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F80 PUSH2 0x4F5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F8A PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x4F92 PUSH2 0x4F94 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4F9C PUSH2 0x5E2B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x4FA6 PUSH2 0x4F82 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x6C61626C65000000000000000000000000000000000000000000000000000000 SWAP2 PUSH32 0x42616C756E695631795661756C743A204E6F20696E7465726573742061766169 PUSH0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x5026 PUSH1 0x25 PUSH1 0x40 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x502F DUP2 PUSH2 0x4FCC JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x5048 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x5019 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x5052 JUMPI JUMP JUMPDEST PUSH2 0x505A PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x508A PUSH1 0x4 DUP3 ADD PUSH2 0x5033 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH32 0x42616C756E695631795661756C743A2052656465656D204661696C6564000000 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x50C2 PUSH1 0x1D PUSH1 0x20 SWAP3 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x50CB DUP2 PUSH2 0x508E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH2 0x50E4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH0 DUP2 DUP4 SUB SWAP2 ADD MSTORE PUSH2 0x50B5 JUMP JUMPDEST SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x50EE JUMPI JUMP JUMPDEST PUSH2 0x50F6 PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5126 PUSH1 0x4 DUP3 ADD PUSH2 0x50CF JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5133 SWAP1 PUSH2 0x11AB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x513F SWAP1 PUSH2 0x512A JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x514B SWAP1 PUSH2 0x11C7 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5183 PUSH2 0x518A SWAP5 PUSH2 0x5179 PUSH1 0x60 SWAP5 SWAP9 SWAP8 SWAP6 PUSH2 0x516F PUSH1 0x80 DUP7 ADD SWAP11 PUSH0 DUP8 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x978 JUMP JUMPDEST JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x51AD SWAP3 SWAP5 SWAP4 PUSH2 0x51A6 PUSH1 0x40 DUP3 ADD SWAP7 PUSH0 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x51C1 PUSH2 0x51BC PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH2 0x5210 PUSH4 0x7A2D13A SWAP2 PUSH1 0x20 PUSH2 0x51DE PUSH2 0x51D9 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0x70A08231 SWAP1 PUSH2 0x5205 PUSH2 0x51F0 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP3 PUSH2 0x51F9 PUSH2 0x231 JUMP JUMPDEST SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x5666 JUMPI PUSH2 0x524D SWAP4 PUSH1 0x20 SWAP4 PUSH0 SWAP4 PUSH2 0x5633 JUMPI JUMPDEST POP PUSH2 0x5242 SWAP1 PUSH2 0x5236 PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x562E JUMPI PUSH0 SWAP2 PUSH2 0x5600 JUMPI JUMPDEST POP DUP1 PUSH2 0x527C PUSH2 0x5276 PUSH2 0x5271 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x55F1 JUMPI PUSH2 0x5297 SWAP1 PUSH2 0x5291 PUSH1 0x5 PUSH2 0x2154 JUMP JUMPDEST SWAP1 PUSH2 0x141A JUMP JUMPDEST JUMPDEST PUSH2 0x52B4 DUP2 PUSH2 0x52AE PUSH2 0x52A8 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x504B JUMP JUMPDEST PUSH2 0x52F5 PUSH1 0x20 PUSH2 0x52CB PUSH2 0x52C6 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0xC6E6F592 SWAP1 PUSH2 0x52EA DUP6 SWAP3 PUSH2 0x52DE PUSH2 0x231 JUMP JUMPDEST SWAP6 DUP7 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH2 0x1203 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x45D JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x55EC JUMPI PUSH0 SWAP2 PUSH2 0x55BE JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x531C PUSH2 0x5317 PUSH1 0x1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x11D3 JUMP JUMPDEST PUSH4 0xBA087652 SWAP3 SWAP1 PUSH2 0x5351 PUSH0 PUSH2 0x5330 ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP6 PUSH2 0x535C PUSH2 0x533D ADDRESS PUSH2 0x127B JUMP JUMPDEST PUSH2 0x5345 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH2 0x1203 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x13E8 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x55B9 JUMPI PUSH0 SWAP2 PUSH2 0x558B JUMPI JUMPDEST POP PUSH2 0x538B DUP2 PUSH2 0x5385 PUSH2 0x537F PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x50E7 JUMP JUMPDEST PUSH2 0x53B8 PUSH1 0x20 PUSH2 0x53A2 PUSH2 0x539D PUSH1 0x3 PUSH2 0x14D0 JUMP JUMPDEST PUSH2 0x14DD JUMP JUMPDEST PUSH4 0x82755EBB SWAP1 PUSH2 0x53B0 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP3 PUSH2 0x1203 JUMP JUMPDEST DUP3 MSTORE DUP2 DUP1 PUSH2 0x53C8 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x5586 JUMPI PUSH2 0x53E3 SWAP2 PUSH0 SWAP2 PUSH2 0x5558 JUMPI JUMPDEST POP PUSH2 0x5136 JUMP JUMPDEST PUSH2 0x53FC PUSH2 0x53F7 PUSH2 0x53F2 PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12CC JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH4 0x95EA7B3 SWAP3 PUSH2 0x540E DUP4 PUSH2 0x5142 JUMP JUMPDEST SWAP1 PUSH2 0x542C PUSH0 DUP8 SWAP7 PUSH2 0x5437 PUSH2 0x5420 PUSH2 0x231 JUMP JUMPDEST SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH2 0x1203 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x1480 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x5553 JUMPI PUSH2 0x5451 SWAP3 PUSH2 0x5527 JUMPI JUMPDEST POP PUSH2 0x5142 JUMP JUMPDEST PUSH1 0x20 PUSH4 0x2D6BC8EA SWAP2 PUSH2 0x5462 PUSH0 PUSH2 0x126E JUMP JUMPDEST SWAP1 PUSH2 0x5494 PUSH0 PUSH2 0x5471 PUSH1 0x2 PUSH2 0x126E JUMP JUMPDEST SWAP6 PUSH2 0x549F DUP9 PUSH2 0x547F ADDRESS PUSH2 0x127B JUMP JUMPDEST SWAP1 PUSH2 0x5488 PUSH2 0x231 JUMP JUMPDEST SWAP10 DUP11 SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH2 0x1203 JUMP JUMPDEST DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x514E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x5522 JUMPI PUSH2 0x54F6 JUMPI JUMPDEST POP CALLER SWAP1 SWAP2 PUSH2 0x54DC PUSH32 0x1CBC5AB135991BD2B6A4B034A04AA2AA086DAC1371CB9B16B8B5E2ED6B036BED SWAP3 PUSH2 0x31CE JUMP JUMPDEST SWAP3 PUSH2 0x54F1 PUSH2 0x54E8 PUSH2 0x231 JUMP JUMPDEST SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x518C JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x5516 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x551B JUMPI JUMPDEST PUSH2 0x550E DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x54AE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5504 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x5547 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x554C JUMPI JUMPDEST PUSH2 0x553F DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x544B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5535 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x5579 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x557F JUMPI JUMPDEST PUSH2 0x5571 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14F8 JUMP JUMPDEST PUSH0 PUSH2 0x53DD JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5567 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x55AC SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x55B2 JUMPI JUMPDEST PUSH2 0x55A4 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x536E JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x559A JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x55DF SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x55E5 JUMPI JUMPDEST PUSH2 0x55D7 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x5307 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x55CD JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST POP PUSH2 0x55FB PUSH0 PUSH2 0x1019 JUMP JUMPDEST PUSH2 0x5298 JUMP JUMPDEST PUSH2 0x5621 SWAP2 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x5627 JUMPI JUMPDEST PUSH2 0x5619 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH0 PUSH2 0x525F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x560F JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH2 0x5242 SWAP2 SWAP4 POP PUSH2 0x5658 SWAP1 DUP6 RETURNDATASIZE DUP2 GT PUSH2 0x565F JUMPI JUMPDEST PUSH2 0x5650 DUP2 DUP4 PUSH2 0x6B7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1296 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x5229 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x5646 JUMP JUMPDEST PUSH2 0x124A JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x569A SWAP2 ADD PUSH2 0x243 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x56A8 PUSH2 0x44A4 JUMP JUMPDEST DUP2 PUSH2 0x56C3 PUSH2 0x56BD PUSH2 0x56B8 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x57AE JUMPI PUSH2 0x56EA DUP4 PUSH2 0x56E4 PUSH1 0x2 DUP5 ADD SWAP2 PUSH2 0x56DF DUP4 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x2205 JUMP JUMPDEST SWAP1 PUSH2 0x160B JUMP JUMPDEST JUMPDEST DUP4 PUSH2 0x5706 PUSH2 0x5700 PUSH2 0x56FB PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH0 EQ PUSH2 0x577F JUMPI PUSH2 0x572E SWAP1 PUSH2 0x5728 PUSH1 0x2 DUP6 SWAP3 ADD SWAP2 PUSH2 0x5723 DUP4 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x4517 JUMP JUMPDEST SWAP1 PUSH2 0x160B JUMP JUMPDEST JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x577A PUSH2 0x5768 PUSH2 0x5762 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP4 PUSH2 0x5771 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 LOG3 JUMP JUMPDEST PUSH2 0x57A9 SWAP1 PUSH2 0x57A3 PUSH2 0x5794 PUSH0 DUP7 SWAP4 ADD DUP8 SWAP1 PUSH2 0x31DA JUMP JUMPDEST SWAP2 PUSH2 0x579E DUP4 PUSH2 0x2154 JUMP JUMPDEST PUSH2 0x568F JUMP JUMPDEST SWAP1 PUSH2 0x160B JUMP JUMPDEST PUSH2 0x572F JUMP JUMPDEST PUSH2 0x57C3 PUSH2 0x57BE PUSH0 DUP4 ADD DUP5 SWAP1 PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x2154 JUMP JUMPDEST DUP1 PUSH2 0x57D6 PUSH2 0x57D0 DUP7 PUSH2 0x243 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST LT PUSH2 0x5800 JUMPI PUSH2 0x57E9 PUSH2 0x57FB SWAP2 DUP6 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH2 0x57F6 PUSH0 DUP5 ADD DUP6 SWAP1 PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x160B JUMP JUMPDEST PUSH2 0x56EB JUMP JUMPDEST SWAP2 PUSH2 0x583F SWAP2 POP SWAP2 SWAP3 PUSH2 0x5810 PUSH2 0x231 JUMP JUMPDEST SWAP4 DUP5 SWAP4 PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x44E5 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 SWAP3 PUSH2 0x584D PUSH2 0x44A4 JUMP JUMPDEST DUP3 PUSH2 0x5868 PUSH2 0x5862 PUSH2 0x585D PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x5956 JUMPI DUP5 PUSH2 0x5888 PUSH2 0x5882 PUSH2 0x587D PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x590F JUMPI PUSH2 0x58AF SWAP1 PUSH2 0x58AA PUSH2 0x58A3 PUSH1 0x1 DUP8 SWAP4 ADD DUP7 SWAP1 PUSH2 0x3946 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x31DA JUMP JUMPDEST PUSH2 0x160B JUMP JUMPDEST PUSH2 0x58B9 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x5904 PUSH2 0x58F2 PUSH2 0x58EC PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP4 PUSH2 0x31CE JUMP JUMPDEST SWAP4 PUSH2 0x58FB PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x45D JUMP JUMPDEST SUB SWAP1 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x58B4 JUMP JUMPDEST PUSH2 0x5952 PUSH2 0x591B PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x5923 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5999 PUSH2 0x5962 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x596A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x59AE PUSH2 0x59A8 PUSH2 0x29BD JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x59B4 JUMPI JUMP JUMPDEST PUSH2 0x59BC PUSH2 0x231 JUMP JUMPDEST PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x59EC PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x59F8 PUSH2 0x326E JUMP JUMPDEST POP PUSH2 0x5A13 PUSH0 PUSH2 0x5A0D PUSH2 0x5A08 PUSH2 0x294B JUMP JUMPDEST PUSH2 0x5E35 JUMP JUMPDEST ADD PUSH2 0x126E JUMP JUMPDEST SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5A24 DUP3 PUSH2 0x5E38 JUMP JUMPDEST DUP2 PUSH2 0x5A4F PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP2 PUSH2 0x31CE JUMP JUMPDEST SWAP1 PUSH2 0x5A58 PUSH2 0x231 JUMP JUMPDEST DUP1 PUSH2 0x5A62 DUP2 PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x5A6E DUP2 PUSH2 0x5A16 JUMP JUMPDEST PUSH2 0x5A80 PUSH2 0x5A7A PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x5A94 JUMPI PUSH2 0x5A90 SWAP2 PUSH2 0x5F48 JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST POP POP PUSH2 0x5A9E PUSH2 0x5EAD JUMP JUMPDEST PUSH2 0x5A92 JUMP JUMPDEST PUSH2 0x5AB4 PUSH2 0x5AAE PUSH2 0x5F77 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x5ABA JUMPI JUMP JUMPDEST PUSH2 0x5AC2 PUSH2 0x231 JUMP JUMPDEST PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5AF2 PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5B07 SWAP1 PUSH2 0x5B02 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x5B09 JUMP JUMPDEST JUMP JUMPDEST DUP1 PUSH2 0x5B24 PUSH2 0x5B1E PUSH2 0x5B19 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x282 JUMP JUMPDEST SWAP2 PUSH2 0x282 JUMP JUMPDEST EQ PUSH2 0x5B34 JUMPI PUSH2 0x5B32 SWAP1 PUSH2 0x4DEF JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5B77 PUSH2 0x5B40 PUSH0 PUSH2 0x3245 JUMP JUMPDEST PUSH2 0x5B48 PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x5B84 SWAP1 PUSH2 0x5AF6 JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5B98 SWAP2 PUSH2 0x5B93 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x5D9A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1F PUSH1 0x20 SWAP2 ADD DIV SWAP1 JUMP JUMPDEST SHL SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x8 PUSH2 0x5BE2 SWAP2 MUL SWAP2 PUSH2 0x5BDC PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 PUSH2 0x5BA4 JUMP JUMPDEST SWAP3 PUSH2 0x5BA4 JUMP JUMPDEST SWAP2 DUP2 NOT AND SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5C02 PUSH2 0x5BFD PUSH2 0x5C0A SWAP4 PUSH2 0x15EC JUMP JUMPDEST PUSH2 0x1608 JUMP JUMPDEST SWAP1 DUP4 SLOAD PUSH2 0x5BA8 JUMP JUMPDEST SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x5C20 SWAP2 PUSH2 0x5C1A PUSH2 0x213C JUMP JUMPDEST SWAP2 PUSH2 0x5BEC JUMP JUMPDEST JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT PUSH2 0x5C2E JUMPI POP POP JUMP JUMPDEST DUP1 PUSH2 0x5C3B PUSH0 PUSH1 0x1 SWAP4 PUSH2 0x5C0E JUMP JUMPDEST ADD PUSH2 0x5C23 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x5C51 JUMPI JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5C5D PUSH2 0x5C82 SWAP4 PUSH2 0x2027 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x5C69 DUP5 PUSH2 0x5B9A JUMP JUMPDEST DUP4 ADD SWAP4 LT PUSH2 0x5C8A JUMPI JUMPDEST PUSH2 0x5C7B SWAP1 PUSH2 0x5B9A JUMP JUMPDEST ADD SWAP1 PUSH2 0x5C22 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x5C4C JUMP JUMPDEST SWAP2 POP PUSH2 0x5C7B DUP2 SWAP3 SWAP1 POP PUSH2 0x5C72 JUMP JUMPDEST SWAP1 PUSH2 0x5CA8 SWAP1 PUSH0 NOT SWAP1 PUSH1 0x8 MUL PUSH2 0x5A9 JUMP JUMPDEST NOT AND SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x5CB7 SWAP2 PUSH2 0x5C98 JUMP JUMPDEST SWAP1 PUSH1 0x2 MUL OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5CC9 DUP2 PUSH2 0x326 JUMP JUMPDEST SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x5D89 JUMPI PUSH2 0x5CED DUP3 PUSH2 0x5CE7 DUP6 SLOAD PUSH2 0x1FF4 JUMP JUMPDEST DUP6 PUSH2 0x5C41 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x5D21 JUMPI SWAP2 DUP1 SWAP2 PUSH2 0x5D10 SWAP4 PUSH0 SWAP3 PUSH2 0x5D15 JUMPI JUMPDEST POP POP PUSH2 0x5CAD JUMP JUMPDEST SWAP1 SSTORE JUMPDEST JUMP JUMPDEST SWAP1 SWAP2 POP ADD MLOAD PUSH0 DUP1 PUSH2 0x5D09 JUMP JUMPDEST PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH2 0x5D30 DUP6 PUSH2 0x2027 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x5D71 JUMPI POP SWAP2 PUSH1 0x2 SWAP4 SWAP2 DUP6 PUSH1 0x1 SWAP7 SWAP5 LT PUSH2 0x5D57 JUMPI JUMPDEST POP POP POP MUL ADD SWAP1 SSTORE PUSH2 0x5D13 JUMP JUMPDEST PUSH2 0x5D67 SWAP2 ADD MLOAD PUSH1 0x1F DUP5 AND SWAP1 PUSH2 0x5C98 JUMP JUMPDEST SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x5D4B JUMP JUMPDEST SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD PUSH2 0x5D33 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST SWAP1 PUSH2 0x5D98 SWAP2 PUSH2 0x5CBF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH2 0x5DBC SWAP3 PUSH2 0x5DB5 PUSH2 0x5DAB PUSH2 0x44A4 JUMP JUMPDEST SWAP4 PUSH1 0x3 DUP6 ADD PUSH2 0x5D8E JUMP JUMPDEST SWAP2 ADD PUSH2 0x5D8E JUMP JUMPDEST JUMP JUMPDEST SWAP1 PUSH2 0x5DC8 SWAP2 PUSH2 0x5B86 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5DD2 PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x5DDA PUSH2 0x5DDC JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5DF7 PUSH2 0x5DE7 PUSH2 0x566B JUMP JUMPDEST PUSH0 PUSH2 0x5DF0 PUSH2 0x3F8F JUMP JUMPDEST SWAP2 ADD PUSH2 0x160B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E01 PUSH2 0x5DCA JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E0B PUSH2 0x5AA3 JUMP JUMPDEST PUSH2 0x5E13 PUSH2 0x5E15 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E29 PUSH2 0x5E20 PUSH2 0x4AEE JUMP JUMPDEST PUSH0 DUP1 SWAP2 ADD PUSH2 0x4763 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5E33 PUSH2 0x5E03 JUMP JUMPDEST JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP1 EXTCODESIZE PUSH2 0x5E4C PUSH2 0x5E46 PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x5E6E JUMPI PUSH2 0x5E6C SWAP1 PUSH0 PUSH2 0x5E66 PUSH2 0x5E61 PUSH2 0x294B JUMP JUMPDEST PUSH2 0x5E35 JUMP JUMPDEST ADD PUSH2 0x34FB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x5EA9 SWAP1 PUSH2 0x5E7A PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x5EC0 PUSH2 0x5EBA PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH2 0x5EC7 JUMPI JUMP JUMPDEST PUSH2 0x5ECF PUSH2 0x231 JUMP JUMPDEST PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x5EFF PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5F1A PUSH2 0x5F15 DUP4 PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x6E0 JUMP JUMPDEST SWAP2 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE PUSH0 EQ PUSH2 0x5F3A JUMPI PUSH2 0x5F2F RETURNDATASIZE PUSH2 0x5F08 JUMP JUMPDEST SWAP1 RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST JUMP JUMPDEST PUSH2 0x5F42 PUSH2 0x5F03 JUMP JUMPDEST SWAP1 PUSH2 0x5F38 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5F74 SWAP4 PUSH2 0x5F56 PUSH2 0x5F03 JUMP JUMPDEST POP DUP4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 MLOAD SWAP2 GAS DELEGATECALL SWAP1 PUSH2 0x5F6B PUSH2 0x5F1F JUMP JUMPDEST SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x5F95 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x5F7F PUSH2 0x2116 JUMP JUMPDEST POP PUSH2 0x5F92 PUSH0 PUSH2 0x5F8C PUSH2 0x4ECF JUMP JUMPDEST ADD PUSH2 0x32D0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x5FA9 SWAP1 PUSH2 0x5FA2 PUSH2 0x5F03 JUMP JUMPDEST POP ISZERO PUSH2 0x3F3 JUMP JUMPDEST PUSH0 EQ PUSH2 0x5FB5 JUMPI POP PUSH2 0x6039 JUMP JUMPDEST PUSH2 0x5FBE DUP3 PUSH2 0x5A16 JUMP JUMPDEST PUSH2 0x5FD0 PUSH2 0x5FCA PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ DUP1 PUSH2 0x601E JUMPI JUMPDEST PUSH2 0x5FDF JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x601A SWAP1 PUSH2 0x5FEB PUSH2 0x231 JUMP JUMPDEST SWAP2 DUP3 SWAP2 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x985 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP DUP1 EXTCODESIZE PUSH2 0x6033 PUSH2 0x602D PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST EQ PUSH2 0x5FD7 JUMP JUMPDEST PUSH2 0x6042 DUP2 PUSH2 0x5A16 JUMP JUMPDEST PUSH2 0x6054 PUSH2 0x604E PUSH0 PUSH2 0x1019 JUMP JUMPDEST SWAP2 PUSH2 0x243 JUMP JUMPDEST GT PUSH0 EQ PUSH2 0x6063 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x606B PUSH2 0x231 JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP1 PUSH2 0x609B PUSH1 0x4 DUP3 ADD PUSH2 0x2DE JUMP JUMPDEST SUB SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0x25 PUSH21 0x6DC8C176E7250C424280085F35E8FB8FF91C456A89 0xD0 0xA6 0xEA PREVRANDAO 0xDB DUP2 0xBC 0xDE PUSH5 0x736F6C6343 STOP ADDMOD NOT STOP CALLER ","sourceMap":"773:9941:68:-:0;;;;;;;;;-1:-1:-1;773:9941:68;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1170:26::-;;;;;;:::i;:::-;;:::o;773:9941::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1203:30::-;;;;;;:::i;:::-;;:::o;773:9941::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:2:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;773:9941:68:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;986:24::-;;;;;:::i;:::-;;:::o;773:9941::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1131:32::-;;;;;;:::i;:::-;;:::o;773:9941::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1055:25::-;;;;;;:::i;:::-;;:::o;773:9941::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3217:103:6;;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;2345:1;2281:72;;;:::i;:::-;2345:1;:::i;:::-;2281:72::o;773:9941:68:-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;8071:2048::-;8173:55;8181:6;:10;;8190:1;8181:10;:::i;:::-;;;:::i;:::-;;8173:55;:::i;:::-;8239:64;8247:21;8257:10;8247:21;:::i;:::-;:31;;8272:6;8247:31;:::i;:::-;;;:::i;:::-;;;8239:64;:::i;:::-;8337:47;;:45;:36;8352:20;8360:11;;;:::i;:::-;8352:20;:::i;:::-;8337:36;:::i;:::-;:45;:::i;:::-;;:47;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8071:2048;8316:68;8431:10;8416:37;;:35;:26;8431:10;;;:::i;:::-;8416:26;:::i;:::-;:35;:::i;:::-;;:37;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8071:2048;8395:58;8492:11;:36;;:21;:11;;;:::i;:::-;:21;:::i;:::-;;8522:4;8492:36;8514:13;8522:4;8514:13;:::i;:::-;8492:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8071:2048;8464:64;8569:10;8562:43;;:28;:18;8569:10;;;:::i;:::-;8562:18;:::i;:::-;:28;:::i;:::-;;8599:4;8562:43;8591:13;8599:4;8591:13;:::i;:::-;8562:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8071:2048;8539:66;8645:9;8638:42;;:27;:17;8645:9;;;:::i;:::-;8638:17;:::i;:::-;:27;:::i;:::-;;8674:4;8638:42;8666:13;8674:4;8666:13;:::i;:::-;8638:42;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;8071:2048;8616:64;8719:2;;8724:12;8719:17;;;;:::i;:::-;;;;;:::i;:::-;8712:25;;;:::i;:::-;8691:46;;;:::i;:::-;8771:2;;8776:12;8771:17;;;;:::i;:::-;;;;;:::i;:::-;8764:25;;;:::i;:::-;8748:41;;;:::i;:::-;8829:6;;8838:17;8829:26;;;:::i;:::-;8859:13;;:::i;:::-;8828:44;;;:::i;:::-;8910:6;;8919:12;8910:21;;;:::i;:::-;8935:13;;:::i;:::-;8909:39;;;:::i;:::-;8967:10;;8979:6;;;;:::i;:::-;9025:2;:17;;;:::i;:::-;;;;;:::i;:::-;9018:25;;;:::i;:::-;8999:44;;;:::i;:::-;9080:2;;:17;;;:::i;:::-;;;;;:::i;:::-;9073:25;;;:::i;:::-;9054:44;;;:::i;:::-;9111:11;;;;:::i;:::-;:18;;;:::i;:::-;;9155:4;9147:13;;;:::i;:::-;9170:4;;9162:13;;;:::i;:::-;9111:65;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;9216:42;9111:65;;;8071:2048;9223:9;9216:42;:27;:17;9223:9;;;:::i;:::-;9216:17;:::i;:::-;:27;:::i;:::-;;9252:4;9216:42;9244:13;9252:4;9244:13;:::i;:::-;9216:42;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9292:30;9216:42;;;;;8071:2048;9189:69;9292:30;:::i;:::-;9371:12;:16;;9386:1;9371:16;:::i;:::-;;;:::i;:::-;;9367:467;;8071:2048;9850:15;;:19;;9868:1;9850:19;:::i;:::-;;;:::i;:::-;;9846:174;;8071:2048;10046:11;;:27;:11;;;:::i;:::-;:27;:::i;:::-;10074:36;10046:27;10074:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;10104:4;10074:36;10096:13;10104:4;10096:13;:::i;:::-;10074:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10046:65;10074:36;10046:65;10074:36;;;;;8071:2048;10046:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;10032:79;10046:65;;;;;8071:2048;10032:79;;;:::i;:::-;8071:2048::o;10046:65::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10074:36::-;10046:65;10074:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;9846:174::-;9959:49;9918:15;9901:43;9918:15;9901:43;:::i;:::-;9959:49;:::i;:::-;9846:174;;;;9367:467;9419:22;9428:12;9419:22;:::i;:::-;9463:9;9456:60;:26;:17;9463:9;;;:::i;:::-;9456:17;:::i;:::-;:26;:::i;:::-;;;9483:8;9456:60;;9493:22;9483:8;9493:12;9508:7;9493:22;;:::i;:::-;9456:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;9367:467;9556:7;9547:17;9556:7;9547:17;:::i;:::-;9602:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;9367:467;9579:50;9663:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;9701:60;9663:23;;;;;9367:467;9644:42;9708:9;9701:26;:17;9708:9;;;:::i;:::-;9701:17;:::i;:::-;:26;:::i;:::-;:60;;9742:18;9701:26;9728:12;9742:7;9752:8;9742:18;;:::i;:::-;9701:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;9776:46;9701:60;;;9367:467;9783:9;9776:26;:17;9783:9;;;:::i;:::-;9776:17;:::i;:::-;:26;:::i;:::-;:46;;:26;9803:8;9813;9776:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;9367:467;;;9776:46;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;9701:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;9663:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9602:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9456:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;9216:42::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;9111:65::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;8638:42::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8562:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8492:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8416:37::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8337:47::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8071:2048::-;;;;;:::i;:::-;:::o;773:9941::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;3011:144:3:-;3056:13;;:::i;:::-;3106:18;3134:14;3141:7;3106:18;;:::i;:::-;3141:7;3134:14;:::i;:::-;;:::o;773:9941:68:-;;;:::o;5505:186:3:-;5657:5;5505:186;5578:4;;:::i;:::-;5610:12;;;:::i;:::-;5648:7;5657:5;;;:::i;:::-;5680:4;5673:11;:::o;773:9941:68:-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4191:152:3:-;4243:7;;:::i;:::-;4287:18;4322:14;;4287:18;;:::i;:::-;4322:14;;:::i;:::-;4315:21;:::o;6251:244::-;;6461:5;6251:244;6338:4;;:::i;:::-;6372:12;6425:5;6372:12;;:::i;:::-;6410:4;6416:7;6425:5;;;:::i;:::-;6457:2;6461:5;;;:::i;:::-;6484:4;6477:11;:::o;773:9941:68:-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;5982:872::-;6038:7;;:::i;:::-;6099:9;:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;6083:44;6099:27;;;;;5982:872;6083:44;;:::i;:::-;6153:19;;:17;:9;;;:::i;:::-;:17;:::i;:::-;;:19;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5982:872;6138:34;6203:1;6183:21;6203:1;6183:21;:::i;:::-;6237:36;;:21;:11;;;:::i;:::-;:21;:::i;:::-;;6267:4;6237:36;6259:13;6267:4;6259:13;:::i;:::-;6237:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6311:41;6237:36;6311:41;6237:36;;;;;5982:872;6217:56;6311:27;:11;;;:::i;:::-;:27;:::i;:::-;:41;:27;:41;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;5982:872;6284:68;6383:43;;:28;:18;6390:10;;;:::i;:::-;6383:18;:::i;:::-;:28;:::i;:::-;;6420:4;6383:43;6412:13;6420:4;6412:13;:::i;:::-;6383:43;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;5982:872;6363:63;6443:9;;;:::i;:::-;:17;;6456:4;6443:17;:::i;:::-;;;:::i;:::-;;6439:88;;5982:872;6551:51;:14;:6;:14;:::i;:::-;;6566:10;6551:51;6566:10;;;:::i;:::-;6578:9;6551:51;6578:9;;;:::i;:::-;6589:12;6551:51;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;6613:32;6551:51;6538:64;6551:51;;;;;5982:872;6538:64;;:::i;:::-;6613:32;:::i;:::-;6677:16;;;:::i;:::-;6710:9;;;;:::i;:::-;:17;;6723:4;6710:17;:::i;:::-;;;:::i;:::-;;6706:77;;5982:872;6809:8;;;6796:21;6809:8;6796:21;;:::i;:::-;6830:16;:::o;6706:77::-;6742:14;:41;:6;:14;:::i;:::-;;;6757:9;6742:41;6757:9;;;:::i;:::-;6768:4;6774:8;6742:41;6774:8;6742:41;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;6796:21;6742:41;6729:54;6742:41;;;;;6706:77;6729:54;;:::i;:::-;6706:77;;;;6742:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6551:51::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6439:88::-;6475:6;:14;:6;:14;:::i;:::-;;:52;:14;6490:9;;;;:::i;:::-;6501:4;6475:52;6501:4;6507:19;6475:52;6507:19;6475:52;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;6462:65;6475:52;;;;;6439:88;6462:65;;:::i;:::-;6439:88;;;6475:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;6383:43::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6311:41::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6237:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6153:19::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6099:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;773:9941::-;;;:::o;4049:82:3:-;4098:5;;:::i;:::-;4122:2;4115:9;4122:2;4115:9;:::i;:::-;;:::o;7779:284:68:-;7835:7;;:::i;:::-;7877:11;:27;:11;;;:::i;:::-;:27;:::i;:::-;7905:36;7877:27;7905:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;7935:4;7905:36;7927:13;7935:4;7927:13;:::i;:::-;7905:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;7877:65;7905:36;7877:65;7905:36;;;;;7779:284;7877:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;7779:284;7855:87;7972:11;:25;;7986:11;;;:::i;:::-;7972:25;:::i;:::-;;;:::i;:::-;;:57;;;;8000:25;:11;8014;;;:::i;:::-;8000:25;;:::i;:::-;7972:57;8040:15;:::o;7972:57::-;8028:1;7972:57;8028:1;7972:57;:::i;:::-;;;7877:65;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7905:36::-;7877:65;7905:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;5898:76:68:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;2622:62:2:-;;2676:1;2622:62;;;:::i;:::-;2676:1;:::i;:::-;2622:62::o;4158:214::-;;4360:4;4158:214;4291:17;;;:::i;:::-;4360:4;:::i;:::-;4158:214::o;:::-;;;;;:::i;:::-;:::o;773:9941:68:-;;;:::o;2890:72:2:-;2954:1;2890:72;;;:::i;:::-;2954:1;:::i;:::-;2890:72;:::o;773:9941:68:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1279:114:9:-;1327:66;;;:::i;:::-;1279:114;:::o;3705:134:2:-;3800:32;;;:::i;:::-;3793:39;:::o;3705:134::-;3774:7;;;:::i;:::-;;:::i;:::-;3705:134;:::o;773:9941:68:-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:5:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;3217:103:6:-;;3282:1;3217:103;;;:::i;:::-;3282:1;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;2345:1;2281:72;;;:::i;:::-;2345:1;:::i;:::-;2281:72::o;773:9941:68:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;3104:1368::-;3205:55;3213:6;:10;;3222:1;3213:10;:::i;:::-;;;:::i;:::-;;3205:55;:::i;:::-;;;:::i;:::-;3304:30;:17;3311:9;;;:::i;:::-;3304:17;:::i;:::-;:30;:::i;:::-;:65;:30;3335:10;;3355:4;3304:65;;3347:13;3355:4;3347:13;:::i;:::-;3362:6;3304:65;3362:6;3304:65;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;3104:1368;3405:9;:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3104:1368;3382:50;3462:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3104:1368;3443:42;3522:6;3513:16;3522:6;3513:16;:::i;:::-;3565:7;3556:17;3565:7;3556:17;:::i;:::-;3586:60;:26;:17;3593:9;;;:::i;:::-;3586:17;:::i;:::-;:26;:::i;:::-;;3613:12;3627:7;3586:60;;3627:18;:7;3637:8;3627:18;;:::i;:::-;3586:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;3657:46;3586:60;;;3104:1368;3664:9;3657:26;:17;3664:9;;;:::i;:::-;3657:17;:::i;:::-;:26;:::i;:::-;:46;;:26;3684:8;3694;3657:46;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;3738:16;3657:46;;;3104:1368;3738:6;:16;:::i;:::-;3774:9;3767:25;:17;3774:9;;;:::i;:::-;3767:17;:::i;:::-;:25;:::i;:::-;:60;:25;3801:11;3793:20;3801:11;;;:::i;:::-;3793:20;:::i;:::-;3815:11;3767:60;;3815:11;3767:60;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;3104:1368;3838:11;:19;:11;;;:::i;:::-;:19;:::i;:::-;;:47;:19;3858:11;;3879:4;3838:47;;3871:13;3879:4;3871:13;:::i;:::-;3838:47;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;3918:36;3838:47;;;3104:1368;3933:9;3918:36;:34;:25;3933:9;;;:::i;:::-;3918:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;3986:47;3918:36;;;;;3104:1368;3898:56;3986:47;:45;:36;4001:20;4009:11;;;:::i;:::-;4001:20;:::i;:::-;3986:36;:::i;:::-;:45;:::i;:::-;;:47;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;4318:17;4297:39;3986:47;4311:25;3986:47;4359:12;3986:47;;;;;3104:1368;3965:68;4050:11;;:26;;4064:12;4050:26;:::i;:::-;;;:::i;:::-;;4046:216;;;;4121:34;4128:26;4107:48;:11;4128;4142:12;4128:26;;:::i;:::-;4121:34;:::i;:::-;4107:48;;:::i;:::-;4046:216;4318:2;:17;:2;:17;:::i;:::-;;:::i;:::-;4311:25;:::i;:::-;4297:39;;:::i;:::-;4359:12;;:::i;:::-;4399:27;:11;;;:::i;:::-;:27;:::i;:::-;4427:36;4399:27;4427:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;4457:4;4427:36;4449:13;4457:4;4449:13;:::i;:::-;4427:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4399:65;4427:36;4399:65;4427:36;;;;;4046:216;4399:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;4385:79;4399:65;;;;;4046:216;4385:79;;;:::i;:::-;3104:1368::o;4399:65::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4427:36::-;4399:65;4427:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;4046:216::-;4216:34;4223:26;4202:48;:11;4223:12;;:26;:::i;:::-;4216:34;:::i;:::-;4202:48;;:::i;:::-;4046:216;;3986:47;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3918:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3838:47::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3767:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3657:46::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3586:60::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3462:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3405:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;3304:65::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;3104:1368::-;;;;;:::i;:::-;:::o;773:9941::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4401:171:3:-;4545:20;;4401:171;4466:7;;:::i;:::-;4510:18;4545:11;4510:18;;:::i;:::-;4545:11;:20;:::i;:::-;;:::i;:::-;4538:27;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;773:9941:68:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;3155:101:0:-;3238:10;;3246:1;3238:10;:::i;:::-;;:::i;:::-;3155:101::o;:::-;;;:::i;:::-;:::o;773:9941:68:-;;;:::o;7312:105::-;7364:7;;:::i;:::-;7399:9;7391:18;7399:9;;;:::i;:::-;7391:18;:::i;:::-;7384:25;:::o;2303:62:0:-;;;:::i;:::-;2357:1;;:::i;:::-;2303:62::o;5818:72:68:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;773:9941::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;6252:431:1:-;;;;;;;;2409:8:68;6390:26:1;;;:::i;:::-;6431:1;:15;;:1;:15;;:::i;:::-;:44;;;;6252:431;6427:105;;6618:23;6558:7;6607:1;6558:7;6541:24;6558:7;6541:14;:1;:14;:24;:::i;:::-;6575:22;6593:4;6575:15;:1;:15;:22;:::i;:::-;6607:1;:::i;:::-;6618:15;6636:5;6618:1;:15;:23;:::i;:::-;6656:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6252:431::o;6427:105::-;6498:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6431:44;6450:1;:14;;:1;:14;;:::i;:::-;:25;;6468:7;6450:25;:::i;:::-;;;:::i;:::-;;;6431:44;;773:9941:68;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;2145:859;2723:47;2145:859;;2692:20;2145:859;2606:19;2735:35;2145:859;;;2487:7;2636:45;2145:859;2650:31;2145:859;2445:10;;;:::i;:::-;2487:7;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2606:19;;:::i;:::-;2650:31;:::i;:::-;2636:45;;:::i;:::-;2692:20;;:::i;:::-;2735:35;:::i;:::-;2723:47;;:::i;:::-;2783:58;2791:9;;;:::i;:::-;:23;;2804:10;2812:1;2804:10;:::i;:::-;2791:23;:::i;:::-;;;:::i;:::-;;;2783:58;:::i;:::-;2852:74;2860:20;2868:11;;;:::i;:::-;2860:20;:::i;:::-;:34;;2884:10;2892:1;2884:10;:::i;:::-;2860:34;:::i;:::-;;;:::i;:::-;;;2852:74;:::i;:::-;2937:59;2945:10;;;:::i;:::-;:24;;2959:10;2967:1;2959:10;:::i;:::-;2945:24;:::i;:::-;;;:::i;:::-;;;2937:59;:::i;:::-;2145:859::o;:::-;;;;;;;;;;:::i;:::-;:::o;2441:144:0:-;2487:7;;:::i;:::-;2533:20;2570:8;;2533:20;;:::i;:::-;2570:8;;:::i;:::-;2563:15;:::o;3268:148:3:-;3315:13;;:::i;:::-;3365:18;3393:16;3400:9;3365:18;;:::i;:::-;3400:9;3393:16;:::i;:::-;;:::o;7425:109:68:-;7479:7;;:::i;:::-;7514:11;7506:20;7514:11;;;:::i;:::-;7506:20;:::i;:::-;7499:27;:::o;3217:103:6:-;;;:::i;:::-;3282:1;;:::i;:::-;;;:::i;:::-;3217:103::o;2281:72:5:-;;;:::i;:::-;2345:1;;:::i;:::-;2281:72::o;5304:85:68:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;4767:178:3:-;4911:5;4767:178;4836:4;;:::i;:::-;4868:12;;;:::i;:::-;4907:2;4911:5;;;:::i;:::-;4934:4;4927:11;:::o;773:9941:68:-;;;;;:::i;:::-;;;;;;;;;:::o;5003:195:3:-;5162:29;5003:195;5162:20;:29;5003:195;5083:7;;:::i;:::-;5127:18;5162:13;5127:18;;:::i;:::-;5162:13;:20;:::i;:::-;:29;:::i;:::-;;:::i;:::-;5155:36;:::o;773:9941:68:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:1:-;;;;;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1318:819:68;1783:31;1856:47;1318:819;;1739:19;1825:20;1318:819;1620:7;1868:35;1318:819;;1769:45;1318:819;1578:10;;;:::i;:::-;1620:7;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;1739:19;;:::i;:::-;1783:31;:::i;:::-;1769:45;;:::i;:::-;1825:20;;:::i;:::-;1868:35;:::i;:::-;1856:47;;:::i;:::-;1916:58;1924:9;;;:::i;:::-;:23;;1937:10;1945:1;1937:10;:::i;:::-;1924:23;:::i;:::-;;;:::i;:::-;;;1916:58;:::i;:::-;1985:74;1993:20;2001:11;;;:::i;:::-;1993:20;:::i;:::-;:34;;2017:10;2025:1;2017:10;:::i;:::-;1993:34;:::i;:::-;;;:::i;:::-;;;1985:74;:::i;:::-;2070:59;2078:10;;;:::i;:::-;:24;;2092:10;2100:1;2092:10;:::i;:::-;2078:24;:::i;:::-;;;:::i;:::-;;;2070:59;:::i;:::-;1318:819::o;:::-;;;;;;;;;:::i;:::-;:::o;773:9941::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6862:442::-;6915:7;;:::i;:::-;6939:13;;;:::i;:::-;:18;;6956:1;6939:18;:::i;:::-;;;:::i;:::-;;6935:32;;6993:19;;:17;:9;;;:::i;:::-;:17;:::i;:::-;;:19;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;7040:29;:20;:31;6993:19;7040:31;6993:19;;;;;6862:442;6978:34;7040:20;:::i;:::-;:29;:::i;:::-;;:31;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;7159:25;7099:21;7106:13;7222:24;7040:31;7221:42;7040:31;;;;;6862:442;7023:48;7106:13;:2;:13;:::i;:::-;;:::i;:::-;7099:21;:::i;:::-;7159:16;;:::i;:::-;:25;:::i;:::-;7222:24;7242:4;7222:24;:::i;:::-;;;:::i;:::-;7250:13;;:::i;:::-;7221:42;;:::i;:::-;7274:22;:::o;7040:31::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6993:19::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6935:32::-;6959:8;6966:1;6959:8;:::i;:::-;;:::o;2303:62:0:-;2357:1;2303:62;;;:::i;:::-;2357:1;:::i;:::-;2303:62::o;3405:215::-;3489:8;:22;;3501:10;3509:1;3501:10;:::i;:::-;3489:22;:::i;:::-;;;:::i;:::-;;3485:91;;3604:8;;;:::i;:::-;3405:215::o;3485:91::-;3534:31;3554:10;3562:1;3554:10;:::i;:::-;3534:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3405:215;;;;:::i;:::-;:::o;773:9941:68:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1812:36:6:-;1847:1;;;:::i;:::-;1812:36;:::o;3326:384::-;3410:28;;:::i;:::-;3526:9;;:1;:9;;:::i;:::-;:20;;3539:7;;:::i;:::-;3526:20;:::i;:::-;;;:::i;:::-;;3522:88;;3684:19;3696:7;3684:9;3696:7;;:::i;:::-;3684:1;:9;:19;:::i;:::-;3326:384::o;3522:88::-;3569:30;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;773:9941:68;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1766:40:6:-;1805:1;;;:::i;:::-;1766:40;:::o;3716:283::-;3969:23;3799:28;;:::i;:::-;3969:9;3981:11;;:::i;:::-;3969:1;:9;:23;:::i;:::-;3716:283::o;2905:128:5:-;2970:8;;:::i;:::-;2966:61;;2905:128::o;2966:61::-;3001:15;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;9522:206:3;;9592:7;:21;;9603:10;9611:1;9603:10;:::i;:::-;9592:21;:::i;:::-;;;:::i;:::-;;9588:89;;9715:5;9694:7;9711:1;9703:10;9711:1;9703:10;:::i;:::-;9715:5;;;:::i;:::-;9522:206::o;9588:89::-;9636:30;9655:10;9663:1;9655:10;:::i;:::-;9636:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;7542:229:68;7599:7;;:::i;:::-;7638:9;:22;;:20;:9;;;:::i;:::-;:20;:::i;:::-;;:22;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;7542:229;7619:41;7691:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;7732:31;7691:23;7733:17;7691:23;;;;;7542:229;7671:43;7733:6;:17;:::i;:::-;7732:31;:::i;:::-;7725:38;:::o;7691:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7638:22::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10127:584::-;;10214:4;;:::i;:::-;10255:15;10329:64;10246:25;10255:15;10246:25;:::i;:::-;10303:15;10282:36;;10303:15;10282:36;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;10329:27;:18;10336:10;;;:::i;:::-;10329:18;:::i;:::-;:27;:::i;:::-;:64;;10367:25;10329:27;10357:8;10367:15;10385:7;10367:25;;:::i;:::-;10329:64;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;10127:584;10429:7;10420:17;10429:7;10420:17;:::i;:::-;10471:27;;:25;:9;;;:::i;:::-;:25;:::i;:::-;;:27;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;10127:584;10448:50;10528:9;:23;;:21;:9;;;:::i;:::-;:21;:::i;:::-;;:23;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;10562:61;10528:23;;;;;10127:584;10509:42;10569:10;10562:27;:18;10569:10;;;:::i;:::-;10562:18;:::i;:::-;:27;:::i;:::-;:61;;10604:18;10562:27;10590:12;10604:7;10614:8;10604:18;;:::i;:::-;10562:61;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;10634:47;10562:61;;;10127:584;10641:10;10634:27;:18;10641:10;;;:::i;:::-;10634:18;:::i;:::-;:27;:::i;:::-;:47;;:27;10662:8;10672;10634:47;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;10127:584;10699:4;;10692:11;:::o;10634:47::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;10562:61::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;10528:23::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10471:27::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10329:64::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;2242:153:3:-;2326:63;2242:153;:::o;887:96:4:-;940:7;;:::i;:::-;966:10;;959:17;:::o;10264:128:3:-;;10380:4;10264:128;10364:7;10380:4;;;:::i;:::-;10264:128::o;773:9941:68:-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::o;11993:477:3:-;;;;12119:25;12129:5;12136:7;12119:25;;:::i;:::-;12158:16;;:37;;12178:17;12158:37;:::i;:::-;;;:::i;:::-;;12154:310;;11993:477;;;;;;:::o;12154:310::-;12215:16;:24;;12234:5;12215:24;:::i;:::-;;;:::i;:::-;;12211:130;;12433:5;12391;;12407:24;12391:5;12398:7;12407:16;:24;:::i;:::-;12433:5;;;;:::i;:::-;12154:310;;;;;;12211:130;12293:7;12266:60;12293:7;;12302:16;12320:5;12266:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6868:300;;6951:4;:18;;6959:10;6967:1;6959:10;:::i;:::-;6951:18;:::i;:::-;;;:::i;:::-;;6947:86;;7046:2;:16;;7052:10;7060:1;7052:10;:::i;:::-;7046:16;:::i;:::-;;;:::i;:::-;;7042:86;;7155:5;7145:4;7151:2;7155:5;;;:::i;:::-;6868:300::o;7042:86::-;7085:32;7106:10;7114:1;7106:10;:::i;:::-;7085:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6947:86;6992:30;7011:10;7019:1;7011:10;:::i;:::-;6992:30;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2658:162:0;2717:7;;:::i;:::-;:23;;2728:12;;:::i;:::-;2717:23;:::i;:::-;;;:::i;:::-;;2713:101;;2658:162::o;2713:101::-;2763:40;2790:12;;:::i;:::-;2763:40;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;2531:66:5;;;:::i;:::-;2589:1;;:::i;:::-;2531:66::o;773:9941:68:-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3674:178:5:-;3791:17;3760:21;;:::i;:::-;3791:9;3803:5;3791:1;:9;:17;:::i;:::-;3832:12;;:::i;:::-;3823:22;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3674:178::o;:::-;;;:::i;:::-;:::o;773:9941:68:-;;;;:::i;:::-;;:::o;4599:312:2:-;4671:13;4679:4;4671:13;:::i;:::-;:23;;4688:6;4671:23;:::i;:::-;;;:::i;:::-;;:120;;;;4599:312;4654:251;;4599:312::o;4654:251::-;4865:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;4671:120;4749:32;;;:::i;:::-;:42;;4785:6;4749:42;:::i;:::-;;;:::i;:::-;;;4671:120;;2303:62:0;;;;:::i;:::-;:::o;3012:84:68:-;;;;:::i;:::-;:::o;773:9941::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6052:538:2:-;;;6151:52;;:50;:36;6169:17;6151:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6052:538;6147:437;;;;;;;;;;;;;;6052:538::o;6147:437::-;6513:60;6555:17;6513:60;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6147:437;6245:4;;:40;;6253:32;;:::i;:::-;6245:40;:::i;:::-;;;:::i;:::-;;6241:120;;6423:4;6404:17;;;6423:4;:::i;:::-;6147:437;;6241:120;6312:34;6341:4;6312:34;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6151:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5028:213;5094:13;5102:4;5094:13;:::i;:::-;:23;;5111:6;5094:23;:::i;:::-;;;:::i;:::-;;5090:145;;5028:213::o;5090:145::-;5195:29;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1147:162:5;1237:66;1147:162;:::o;773:9941:68:-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5397:413::-;5467:27;:11;;;:::i;:::-;:27;:::i;:::-;5495:36;5467:27;5495:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;5525:4;5495:36;5517:13;5525:4;5517:13;:::i;:::-;5495:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;5467:65;5495:36;5467:65;5495:36;;;;;5397:413;5467:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;5397:413;5445:87;5562:11;:25;;5576:11;;;:::i;:::-;5562:25;:::i;:::-;;;:::i;:::-;;:57;;;;5590:25;:11;5604;;;:::i;:::-;5590:25;;:::i;:::-;5562:57;5650:36;;:34;:25;5665:9;;;:::i;:::-;5650:25;:::i;:::-;:34;:::i;:::-;;:36;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5710:27;5752:16;5650:36;5752:16;5650:36;;;;;5562:57;5630:56;5710:27;5714:23;5721:15;5710:1;5721:11;:15;5735:1;5721:15;:::i;:::-;;;:::i;:::-;5714:23;:::i;:::-;5710:27;;:::i;:::-;;:::i;:::-;5752:16;:::i;:::-;;;:::i;:::-;;5748:55;;5562:57;5397:413::o;5748:55::-;;;:::i;:::-;;;5650:36;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5562:57::-;5618:1;5562:57;5618:1;5562:57;:::i;:::-;;;5467:65;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;5495:36::-;5467:65;5495:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;8996:208:3:-;9066:7;:21;;9077:10;9085:1;9077:10;:::i;:::-;9066:21;:::i;:::-;;;:::i;:::-;;9062:91;;9191:5;9178:1;9170:10;9178:1;9170:10;:::i;:::-;9182:7;9191:5;;;:::i;:::-;8996:208::o;9062:91::-;9110:32;9131:10;9139:1;9131:10;:::i;:::-;9110:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3774:248:0;3874:20;;:::i;:::-;3941:19;3923:8;;:1;:8;;:::i;:::-;3952;3941;3952;3941:1;:8;:19;:::i;:::-;4006:8;3975:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;3774:248::o;2281:72:5:-;;;:::i;:::-;2345:1;;:::i;:::-;2281:72::o;3366:176::-;3484:16;3453:21;;:::i;:::-;3484:9;3496:4;3484:1;:9;:16;:::i;:::-;3522:12;;:::i;:::-;3515:20;;;;;:::i;:::-;;;;;;:::i;:::-;;;;3366:176::o;:::-;;;:::i;:::-;:::o;8737:170:1:-;8837:64;8737:170;:::o;6893:76::-;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1847:127:0:-;1954:12;1847:127;1954:12;:::i;:::-;1847:127::o;:::-;;;;:::i;:::-;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;2577:147:3:-;;2709:7;2577:147;2709:7;:::i;:::-;2577:147::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;:::o;2968:67:2:-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2540:111:6:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:5:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;1192:159:0:-;1280:65;1192:159;:::o;773:9941:68:-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4480:816::-;4538:27;:11;;;:::i;:::-;:27;:::i;:::-;4566:36;4538:27;4566:11;:36;:21;:11;;;:::i;:::-;:21;:::i;:::-;;4596:4;4566:36;4588:13;4596:4;4588:13;:::i;:::-;4566:36;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;4538:65;4566:36;4538:65;4566:36;;;;;4480:816;4538:65;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;4480:816;4516:87;4633:11;:25;;4647:11;;;:::i;:::-;4633:25;:::i;:::-;;;:::i;:::-;;:57;;;;4661:25;:11;4675;;;:::i;:::-;4661:25;;:::i;:::-;4633:57;4701:62;4709:8;:12;;4720:1;4709:12;:::i;:::-;;;:::i;:::-;;4701:62;:::i;:::-;4801:37;;:27;:11;;;:::i;:::-;:27;:::i;:::-;;4829:8;4801:37;4829:8;4801:37;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;4633:57;4776:62;4869:64;:18;:11;;;:::i;:::-;:18;:::i;:::-;;4888:14;4912:4;4869:64;;4904:13;4912:4;4904:13;:::i;:::-;4927:4;4869:64;4919:13;4927:4;4919:13;:::i;:::-;4869:64;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;4633:57;4849:84;4946:55;4954:9;:13;;4966:1;4954:13;:::i;:::-;;;:::i;:::-;;4946:55;:::i;:::-;5058:28;;:26;:9;;;:::i;:::-;:26;:::i;:::-;;:28;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;5041:46;5058:28;;;;;4633:57;5041:46;;:::i;:::-;5100:25;:17;5107:9;;;:::i;:::-;5100:17;:::i;:::-;:25;:::i;:::-;;:54;:25;5134:7;5126:16;5134:7;5126:16;:::i;:::-;5144:9;5100:54;;5144:9;5100:54;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;5167:18;5100:54;;;4633:57;5167:7;:18;:::i;:::-;:67;:18;5186:9;;;;:::i;:::-;5197:10;5167:67;;5197:10;;;:::i;:::-;5209:9;5167:67;5209:9;5220:13;5228:4;5220:13;:::i;:::-;5167:67;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;4633:57;5256:10;;5268:9;5279:8;5252:36;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;4480:816::o;5167:67::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5100:54::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;5058:28::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4869:64::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4801:37::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4633:57::-;4689:1;4633:57;4689:1;4633:57;:::i;:::-;;;4538:65;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4566:36::-;4538:65;4566:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;2251:183:6:-;2355:73;2251:183;:::o;773:9941:68:-;;;;;;:::i;:::-;;:::o;7483:1170:3:-;;;;7593:18;;:::i;:::-;7625:4;:18;;7633:10;7641:1;7633:10;:::i;:::-;7625:18;:::i;:::-;;;:::i;:::-;;7621:546;;;;7761:23;7779:5;7761:23;:14;:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;7621:546;8181:2;:16;;8187:10;8195:1;8187:10;:::i;:::-;8181:16;:::i;:::-;;;:::i;:::-;;8177:429;;;;8344:23;8362:5;8344:23;:14;8362:5;8344:1;:14;:23;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;8636:2;8640:5;8621:25;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;7483:1170::o;8177:429::-;8557:24;8576:5;8557:24;:15;:11;8576:5;8557:1;:11;8569:2;8557:15;;:::i;:::-;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;8177:429;;7621:546;7837:17;;:11;:1;:11;7849:4;7837:17;;:::i;:::-;;:::i;:::-;7872:11;:19;;7886:5;7872:19;:::i;:::-;;;:::i;:::-;;7868:115;;8123:19;8103:39;8123:11;8137:5;8123:19;;:::i;:::-;8103:17;:11;:1;:11;8115:4;8103:17;;:::i;:::-;:39;:::i;:::-;7621:546;;7868:115;7943:4;7918:50;7943:4;;7949:11;7962:5;7918:50;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11224:487;;;11357:18;;:::i;:::-;11389:5;:19;;11398:10;11406:1;11398:10;:::i;:::-;11389:19;:::i;:::-;;;:::i;:::-;;11385:89;;11487:7;:21;;11498:10;11506:1;11498:10;:::i;:::-;11487:21;:::i;:::-;;;:::i;:::-;;11483:90;;11582:37;11614:5;11582:29;:20;:13;11614:5;11582:1;:13;11596:5;11582:20;;:::i;:::-;11603:7;11582:29;;:::i;:::-;:37;:::i;:::-;11629:76;;11224:487;;;;:::o;11629:76::-;11679:7;11688:5;11663:31;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;11629:76;;;;;11483:90;11531:31;11551:10;11559:1;11551:10;:::i;:::-;11531:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;11385:89;11431:32;11452:10;11460:1;11452:10;:::i;:::-;11431:32;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;3105:126:5;3167:9;3168:8;;:::i;:::-;3167:9;;:::i;:::-;3163:62;;3105:126::o;3163:62::-;3199:15;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;1957:138:9;2009:7;;:::i;:::-;2062:19;2035:53;;:47;2062:19;;:::i;:::-;2035:47;:::i;:::-;:53;;:::i;:::-;2028:60;:::o;773:9941:68:-;;;:::o;2779:335:9:-;;2889:17;;;:::i;:::-;2931;2922:27;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2964:11;:4;:11;:::i;:::-;:15;;2978:1;2964:15;:::i;:::-;;;:::i;:::-;;2960:148;;;;2995:53;3024:17;2995:53;:::i;:::-;;2960:148;2779:335::o;2960:148::-;;;;;:::i;:::-;;;7084:141:1;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;6893:76;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;1980:235:0:-;2076:12;:26;;2092:10;2100:1;2092:10;:::i;:::-;2076:26;:::i;:::-;;;:::i;:::-;;2072:95;;2195:12;;;:::i;:::-;1980:235::o;2072:95::-;2125:31;2145:10;2153:1;2145:10;:::i;:::-;2125:31;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;1980:235;;;;:::i;:::-;:::o;6893:76:1:-;;6961:1;6893:76;;;:::i;:::-;6961:1;:::i;:::-;6893:76::o;773:9941:68:-;;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;2730:216:3:-;2920:9;:19;2730:216;2895:15;2867:18;;:::i;:::-;2905:5;2895:7;:1;:7;:15;:::i;:::-;2920:1;:9;:19;:::i;:::-;2730:216::o;:::-;;;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2657:183:6:-;2810:23;2772:28;;:::i;:::-;2810:9;2822:11;;:::i;:::-;2810:1;:9;:23;:::i;:::-;2657:183::o;:::-;;;:::i;:::-;:::o;6893:76:1:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:5:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;1684:190:16:-;;:::o;2186:281:9:-;2263:17;:29;:34;;2296:1;2263:34;:::i;:::-;;;:::i;:::-;;2259:119;;2387:73;2443:17;2387:53;:47;2414:19;;:::i;:::-;2387:47;:::i;:::-;:53;:73;:::i;:::-;2186:281::o;2259:119::-;2320:47;2349:17;2320:47;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;6598:122;6648:9;:13;;6660:1;6648:13;:::i;:::-;;;:::i;:::-;;6644:70;;6598:122::o;6644:70::-;6684:19;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;773:9941:68;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;4106:253:14;4255:25;4106:253;4297:55;4106:253;4189:12;;:::i;:::-;4255:6;;4275:4;4255:25;;;;;;;;;;;:::i;:::-;4324:6;4332:7;4341:10;4297:55;;:::i;:::-;4290:62;:::o;8487:120:1:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;4625:582:14:-;;4797:8;4625:582;4769:12;;:::i;:::-;4798:7;4797:8;;:::i;:::-;4793:408;;;;4829:10;;:::i;4793:408::-;5045:17;:10;:17;:::i;:::-;:22;;5066:1;5045:22;:::i;:::-;;;:::i;:::-;;:49;;;4793:408;5041:119;;5180:10;5173:17;:::o;5041:119::-;5121:24;5138:6;5121:24;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;5045:49;5071:6;;:18;:23;;5093:1;5071:23;:::i;:::-;;;:::i;:::-;;5045:49;;5743:516;5874:17;:10;:17;:::i;:::-;:21;;5894:1;5874:21;:::i;:::-;;;:::i;:::-;;5870:383;;;;6046:142;;;;;;5870:383;6225:17;;:::i;:::-;;;;;;;;;;:::i;:::-;;;"},"gasEstimates":{"creation":{"codeDepositCost":"4957800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","accumulatedAssetB()":"3302","allTimeInterest()":"2906","allowance(address,address)":"infinite","approve(address,uint256)":"infinite","balanceOf(address)":"infinite","baseAsset()":"3231","buy()":"infinite","decimals()":"infinite","deposit(uint256,address)":"infinite","initialize(string,string,address,address,address,address)":"infinite","interestEarned()":"infinite","lastDeposit()":"2774","name()":"infinite","owner()":"3148","pause()":"infinite","paused()":"2942","proxiableUUID()":"infinite","quoteAsset()":"3362","registry()":"infinite","reinitialize(string,string,address,address,address,address,uint64)":"infinite","renounceOwnership()":"infinite","symbol()":"infinite","totalSupply()":"2733","totalValuation()":"infinite","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"infinite","unitPrice()":"infinite","unpause()":"infinite","upgradeToAndCall(address,bytes)":"infinite","withdraw(uint256,address)":"infinite","yearnVault()":"infinite"},"internal":{"_authorizeUpgrade(address)":"infinite","_buy()":"infinite","_haircut(uint256)":"infinite","_handleWithdrawB(uint256,address)":"infinite","_processInterest()":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","accumulatedAssetB()":"f7fde10f","allTimeInterest()":"6560bc80","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseAsset()":"cdf456e1","buy()":"a6f2ae3a","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","initialize(string,string,address,address,address,address)":"e56f2fe4","interestEarned()":"374261ab","lastDeposit()":"36b77107","name()":"06fdde03","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","quoteAsset()":"fdf262b7","registry()":"7b103999","reinitialize(string,string,address,address,address,address,uint64)":"88696f62","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","totalValuation()":"295b9300","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unitPrice()":"e73faa2d","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(uint256,address)":"00f714ce","yearnVault()":"9db5df46"}},"metadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"interest\",\"type\":\"uint256\"}],\"name\":\"Buy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accumulatedAssetB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allTimeInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_assetA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_yearnVaultAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_assetB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_registryAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"interestEarned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastDeposit\",\"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\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quoteAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_assetA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_yearnVaultAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_assetB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_registryAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_version\",\"type\":\"uint64\"}],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalValuation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"yearnVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/vaults/BaluniV1YearnVault.sol\":\"BaluniV1YearnVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":20000},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\\n    struct OwnableStorage {\\n        address _owner;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Ownable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\\n\\n    function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\\n        assembly {\\n            $.slot := OwnableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    function __Ownable_init(address initialOwner) internal onlyInitializing {\\n        __Ownable_init_unchained(initialOwner);\\n    }\\n\\n    function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        return $._owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        OwnableStorage storage $ = _getOwnableStorage();\\n        address oldOwner = $._owner;\\n        $._owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Storage of the initializable contract.\\n     *\\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\\n     * when using with upgradeable contracts.\\n     *\\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\\n     */\\n    struct InitializableStorage {\\n        /**\\n         * @dev Indicates that the contract has been initialized.\\n         */\\n        uint64 _initialized;\\n        /**\\n         * @dev Indicates that the contract is in the process of being initialized.\\n         */\\n        bool _initializing;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Initializable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\\n\\n    /**\\n     * @dev The contract is already initialized.\\n     */\\n    error InvalidInitialization();\\n\\n    /**\\n     * @dev The contract is not initializing.\\n     */\\n    error NotInitializing();\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint64 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\\n     * production.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        // Cache values to avoid duplicated sloads\\n        bool isTopLevelCall = !$._initializing;\\n        uint64 initialized = $._initialized;\\n\\n        // Allowed calls:\\n        // - initialSetup: the contract is not in the initializing state and no previous version was\\n        //                 initialized\\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\\n        //                 current contract is just being deployed\\n        bool initialSetup = initialized == 0 && isTopLevelCall;\\n        bool construction = initialized == 1 && address(this).code.length == 0;\\n\\n        if (!initialSetup && !construction) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = 1;\\n        if (isTopLevelCall) {\\n            $._initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            $._initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint64 version) {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing || $._initialized >= version) {\\n            revert InvalidInitialization();\\n        }\\n        $._initialized = version;\\n        $._initializing = true;\\n        _;\\n        $._initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        _checkInitializing();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\\n     */\\n    function _checkInitializing() internal view virtual {\\n        if (!_isInitializing()) {\\n            revert NotInitializing();\\n        }\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        // solhint-disable-next-line var-name-mixedcase\\n        InitializableStorage storage $ = _getInitializableStorage();\\n\\n        if ($._initializing) {\\n            revert InvalidInitialization();\\n        }\\n        if ($._initialized != type(uint64).max) {\\n            $._initialized = type(uint64).max;\\n            emit Initialized(type(uint64).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint64) {\\n        return _getInitializableStorage()._initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _getInitializableStorage()._initializing;\\n    }\\n\\n    /**\\n     * @dev Returns a pointer to the storage namespace.\\n     */\\n    // solhint-disable-next-line var-name-mixedcase\\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\\n        assembly {\\n            $.slot := INITIALIZABLE_STORAGE\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC1822Proxiable} from \\\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\\\";\\nimport {ERC1967Utils} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\\n    address private immutable __self = address(this);\\n\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\\n     * during an upgrade.\\n     */\\n    string public constant UPGRADE_INTERFACE_VERSION = \\\"5.0.0\\\";\\n\\n    /**\\n     * @dev The call is from an unauthorized context.\\n     */\\n    error UUPSUnauthorizedCallContext();\\n\\n    /**\\n     * @dev The storage `slot` is unsupported as a UUID.\\n     */\\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\\n\\n    /**\\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n     * fail.\\n     */\\n    modifier onlyProxy() {\\n        _checkProxy();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n     * callable on the implementing contract but not through proxies.\\n     */\\n    modifier notDelegated() {\\n        _checkNotDelegated();\\n        _;\\n    }\\n\\n    function __UUPSUpgradeable_init() internal onlyInitializing {\\n    }\\n\\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n     */\\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n     * encoded in `data`.\\n     *\\n     * Calls {_authorizeUpgrade}.\\n     *\\n     * Emits an {Upgraded} event.\\n     *\\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n        _authorizeUpgrade(newImplementation);\\n        _upgradeToAndCallUUPS(newImplementation, data);\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\\n     * See {_onlyProxy}.\\n     */\\n    function _checkProxy() internal view virtual {\\n        if (\\n            address(this) == __self || // Must be called through delegatecall\\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\\n        ) {\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if the execution is performed via delegatecall.\\n     * See {notDelegated}.\\n     */\\n    function _checkNotDelegated() internal view virtual {\\n        if (address(this) != __self) {\\n            // Must not be called through delegatecall\\n            revert UUPSUnauthorizedCallContext();\\n        }\\n    }\\n\\n    /**\\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n     * {upgradeToAndCall}.\\n     *\\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n     *\\n     * ```solidity\\n     * function _authorizeUpgrade(address) internal onlyOwner {}\\n     * ```\\n     */\\n    function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n    /**\\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\\n     *\\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\\n     * is expected to be the implementation slot in ERC1967.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\\n                revert UUPSUnsupportedProxiableUUID(slot);\\n            }\\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n        } catch {\\n            // The implementation is not UUPS\\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\nimport {ContextUpgradeable} from \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport {IERC20Errors} from \\\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n */\\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\\n    struct ERC20Storage {\\n        mapping(address account => uint256) _balances;\\n\\n        mapping(address account => mapping(address spender => uint256)) _allowances;\\n\\n        uint256 _totalSupply;\\n\\n        string _name;\\n        string _symbol;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ERC20\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\\n\\n    function _getERC20Storage() private pure returns (ERC20Storage storage $) {\\n        assembly {\\n            $.slot := ERC20StorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n        __ERC20_init_unchained(name_, symbol_);\\n    }\\n\\n    function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        $._name = name_;\\n        $._symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        return $._allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            $._totalSupply += value;\\n        } else {\\n            uint256 fromBalance = $._balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                $._balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                $._totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                $._balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     * ```\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        ERC20Storage storage $ = _getERC20Storage();\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        $._allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner` s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance != type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ContextUpgradeable} from \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\\n    /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\\n    struct PausableStorage {\\n        bool _paused;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.Pausable\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\\n\\n    function _getPausableStorage() private pure returns (PausableStorage storage $) {\\n        assembly {\\n            $.slot := PausableStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Emitted when the pause is triggered by `account`.\\n     */\\n    event Paused(address account);\\n\\n    /**\\n     * @dev Emitted when the pause is lifted by `account`.\\n     */\\n    event Unpaused(address account);\\n\\n    /**\\n     * @dev The operation failed because the contract is paused.\\n     */\\n    error EnforcedPause();\\n\\n    /**\\n     * @dev The operation failed because the contract is not paused.\\n     */\\n    error ExpectedPause();\\n\\n    /**\\n     * @dev Initializes the contract in unpaused state.\\n     */\\n    function __Pausable_init() internal onlyInitializing {\\n        __Pausable_init_unchained();\\n    }\\n\\n    function __Pausable_init_unchained() internal onlyInitializing {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is not paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    modifier whenNotPaused() {\\n        _requireNotPaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    modifier whenPaused() {\\n        _requirePaused();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns true if the contract is paused, and false otherwise.\\n     */\\n    function paused() public view virtual returns (bool) {\\n        PausableStorage storage $ = _getPausableStorage();\\n        return $._paused;\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is paused.\\n     */\\n    function _requireNotPaused() internal view virtual {\\n        if (paused()) {\\n            revert EnforcedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Throws if the contract is not paused.\\n     */\\n    function _requirePaused() internal view virtual {\\n        if (!paused()) {\\n            revert ExpectedPause();\\n        }\\n    }\\n\\n    /**\\n     * @dev Triggers stopped state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    function _pause() internal virtual whenNotPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = true;\\n        emit Paused(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns to normal state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    function _unpause() internal virtual whenPaused {\\n        PausableStorage storage $ = _getPausableStorage();\\n        $._paused = false;\\n        emit Unpaused(_msgSender());\\n    }\\n}\\n\",\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.20;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant NOT_ENTERED = 1;\\n    uint256 private constant ENTERED = 2;\\n\\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\\n    struct ReentrancyGuardStorage {\\n        uint256 _status;\\n    }\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\\n        assembly {\\n            $.slot := ReentrancyGuardStorageLocation\\n        }\\n    }\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if ($._status == ENTERED) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        $._status = ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        $._status = NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\\n        return $._status == ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n */\\nlibrary ERC1967Utils {\\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Emitted when the beacon is changed.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev The `implementation` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidImplementation(address implementation);\\n\\n    /**\\n     * @dev The `admin` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidAdmin(address admin);\\n\\n    /**\\n     * @dev The `beacon` of the proxy is invalid.\\n     */\\n    error ERC1967InvalidBeacon(address beacon);\\n\\n    /**\\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\\n     */\\n    error ERC1967NonPayable();\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        if (newImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(newImplementation);\\n        }\\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-Upgraded} event.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function getAdmin() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        if (newAdmin == address(0)) {\\n            revert ERC1967InvalidAdmin(address(0));\\n        }\\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {IERC1967-AdminChanged} event.\\n     */\\n    function changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\\n     */\\n    // solhint-disable-next-line private-vars-leading-underscore\\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        if (newBeacon.code.length == 0) {\\n            revert ERC1967InvalidBeacon(newBeacon);\\n        }\\n\\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\\n\\n        address beaconImplementation = IBeacon(newBeacon).implementation();\\n        if (beaconImplementation.code.length == 0) {\\n            revert ERC1967InvalidImplementation(beaconImplementation);\\n        }\\n    }\\n\\n    /**\\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\\n     * to avoid stuck value in the contract.\\n     *\\n     * Emits an {IERC1967-BeaconUpgraded} event.\\n     *\\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\\n     * efficiency.\\n     */\\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n\\n        if (data.length > 0) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        } else {\\n            _checkNonPayable();\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\\n     * if an upgrade doesn't perform an initialization call.\\n     */\\n    function _checkNonPayable() private {\\n        if (msg.value > 0) {\\n            revert ERC1967NonPayable();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {UpgradeableBeacon} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error AddressInsufficientBalance(address account);\\n\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedInnerCall();\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        if (address(this).balance < amount) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            revert FailedInnerCall();\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason or custom error, it is bubbled\\n     * up by this function (like regular Solidity function calls). However, if\\n     * the call reverted with no returned reason, this function reverts with a\\n     * {FailedInnerCall} error.\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        if (address(this).balance < value) {\\n            revert AddressInsufficientBalance(address(this));\\n        }\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\\n     * unsuccessful call.\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata\\n    ) internal view returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            // only check if target is a contract if the call was successful and the return data is empty\\n            // otherwise we already know that it was a contract\\n            if (returndata.length == 0 && target.code.length == 0) {\\n                revert AddressEmptyCode(target);\\n            }\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\\n     * revert reason or with a default {FailedInnerCall} error.\\n     */\\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\\n        if (!success) {\\n            _revert(returndata);\\n        } else {\\n            return returndata;\\n        }\\n    }\\n\\n    /**\\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\\n     */\\n    function _revert(bytes memory returndata) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert FailedInnerCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n *     function _getImplementation() internal view returns (address) {\\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n *     }\\n *\\n *     function _setImplementation(address newImplementation) internal {\\n *         require(newImplementation.code.length > 0);\\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n *     }\\n * }\\n * ```\\n */\\nlibrary StorageSlot {\\n    struct AddressSlot {\\n        address value;\\n    }\\n\\n    struct BooleanSlot {\\n        bool value;\\n    }\\n\\n    struct Bytes32Slot {\\n        bytes32 value;\\n    }\\n\\n    struct Uint256Slot {\\n        uint256 value;\\n    }\\n\\n    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes value;\\n    }\\n\\n    /**\\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n     */\\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\"},\"contracts/interfaces/IBaluniV1Oracle.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Oracle {\\r\\n    function convert(address fromToken, address toToken, uint256 amount) external view returns (uint256 valuation);\\r\\n\\r\\n    function convertScaled(\\r\\n        address fromToken,\\r\\n        address toToken,\\r\\n        uint256 amount\\r\\n    ) external view returns (uint256 valuation);\\r\\n}\\r\\n\",\"keccak256\":\"0x2bc62f7640b15a1772de630216f6fe6aa7a719cb6cf0255befdde19ec8de785a\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Registry.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\n/**\\r\\n * @title IBaluniV1Registry\\r\\n * @dev Interface for the BaluniV1Registry contract.\\r\\n */\\r\\ninterface IBaluniV1Registry {\\r\\n    function setUniswapFactory(address _uniswapFactory) external;\\r\\n\\r\\n    function setUniswapRouter(address _uniswapRouter) external;\\r\\n\\r\\n    function setUniswapQuoter(address _uniswapQuoter) external;\\r\\n\\r\\n    function setBaluniAgentFactory(address _baluniAgentFactory) external;\\r\\n\\r\\n    function setBaluniPoolPeriphery(address _baluniPoolPeriphery) external;\\r\\n\\r\\n    function setBaluniSwapper(address _baluniSwapper) external;\\r\\n\\r\\n    function setBaluniOracle(address _baluniOracle) external;\\r\\n\\r\\n    function setBaluniPoolRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniDCAVaultRegistry(address _baluniPoolRegistry) external;\\r\\n\\r\\n    function setBaluniRebalancer(address _baluniRebalancer) external;\\r\\n\\r\\n    function setBaluniRouter(address _baluniRouter) external;\\r\\n\\r\\n    function setBaluniRegistry(address _baluniRegistry) external;\\r\\n\\r\\n    function setWNATIVE(address _WNATIVE) external;\\r\\n\\r\\n    function setUSDC(address _USDC) external;\\r\\n\\r\\n    function setREBALANCE_THRESHOLD(uint256 _REBALANCE_THRESHOLD) external;\\r\\n\\r\\n    function setTreasury(address _treasury) external;\\r\\n\\r\\n    function set1inchSpotAgg(address __1inchSpotAgg) external;\\r\\n\\r\\n    function setBPS_FEE(uint256 __BPS_FEE) external;\\r\\n\\r\\n    function setBaluniYearnVaultRegistry(address _baluniYearnVaultRegistry) external;\\r\\n\\r\\n    function setBaluniPoolZap(address _baluniPoolZap) external;\\r\\n\\r\\n    function setBaluniHyperPoolZap(address _baluniHyperPoolZap) external;\\r\\n\\r\\n    function getUniswapQuoter() external view returns (address);\\r\\n\\r\\n    function getUniswapFactory() external view returns (address);\\r\\n\\r\\n    function getUniswapRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniSwapper() external view returns (address);\\r\\n\\r\\n    function getBaluniOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniAgentFactory() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolPeriphery() external view returns (address);\\r\\n\\r\\n    function getBaluniDCAVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniRebalancer() external view returns (address);\\r\\n\\r\\n    function getBaluniRouter() external view returns (address);\\r\\n\\r\\n    function getBaluniRegistry() external view returns (address);\\r\\n\\r\\n    function getWNATIVE() external view returns (address);\\r\\n\\r\\n    function getUSDC() external view returns (address);\\r\\n\\r\\n    function get1inchSpotAgg() external view returns (address);\\r\\n\\r\\n    function getBPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getMAX_BPS_FEE() external view returns (uint256);\\r\\n\\r\\n    function getBPS_BASE() external view returns (uint256);\\r\\n\\r\\n    function getREBALANCE_THRESHOLD() external view returns (uint256);\\r\\n\\r\\n    function getTreasury() external view returns (address);\\r\\n\\r\\n    function setStaticOracle(address _staticOracle) external;\\r\\n\\r\\n    function getStaticOracle() external view returns (address);\\r\\n\\r\\n    function getBaluniYearnVaultRegistry() external view returns (address);\\r\\n\\r\\n    function getBaluniPoolZap() external view returns (address);\\r\\n\\r\\n    function getBaluniHyperPoolZap() external view returns (address);\\r\\n}\\r\\n\",\"keccak256\":\"0x8a5269da114538f58ead83106d244cfbb01a4d6106694a90ffcca33ff1b56a5c\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1Swapper.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1Swapper {\\r\\n    function singleSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n    function multiHopSwap(\\r\\n        address token0,\\r\\n        address token1,\\r\\n        address token2,\\r\\n        uint256 amount,\\r\\n        address receiver\\r\\n    ) external returns (uint256 amountOut);\\r\\n}\\r\\n\",\"keccak256\":\"0x8113df3342115499d21149fa3fe70412cb6bdbf79766870f929b3845e1d2a0fe\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IBaluniV1YearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\ninterface IBaluniV1YearnVault {\\r\\n    function baseAsset() external view returns (address);\\r\\n    function yearnVault() external view returns (address);\\r\\n    function quoteAsset() external view returns (address);\\r\\n    function registry() external view returns (address);\\r\\n    function lastDeposit() external view returns (uint256);\\r\\n    function deposit(uint256 amount, address to) external;\\r\\n    function withdraw(uint256 shares, address to) external;\\r\\n    function buy() external;\\r\\n    function pause() external;\\r\\n    function unpause() external;\\r\\n    function totalValuation() external view returns (uint256);\\r\\n    function unitPrice() external view returns (uint256);\\r\\n    function interestEarned() external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x1bc913632491c1953bdd30cc0a35acc2b8987b2309495e18bd8756f235b3f614\",\"license\":\"GNU AGPLv3\"},\"contracts/interfaces/IYearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\r\\npragma solidity ^0.8.0;\\r\\n\\r\\ninterface IYearnVault {\\r\\n    function asset() external view returns (address);\\r\\n\\r\\n    function balanceOf(address owner) external view returns (uint256);\\r\\n\\r\\n    function maxDeposit(address receiver) external view returns (uint256);\\r\\n\\r\\n    function redeem(uint256 shares, address receiver, address owner) external returns (uint256);\\r\\n\\r\\n    function deposit(uint256 assets, address receiver) external returns (uint256);\\r\\n\\r\\n    function totalAssets() external view returns (uint256);\\r\\n\\r\\n    function convertToAssets(uint256 shares) external view returns (uint256);\\r\\n\\r\\n    function convertToShares(uint256 assets) external view returns (uint256);\\r\\n\\r\\n    function previewWithdraw(uint256 assets) external view returns (uint256);\\r\\n\\r\\n    function maxRedeem(address owner) external view returns (uint256);\\r\\n}\\r\\n\",\"keccak256\":\"0x32952c4cf75af24a48eb5ce8ca05358d527dba5532e6f19e4db12ef418b82ab8\",\"license\":\"MIT\"},\"contracts/vaults/BaluniV1YearnVault.sol\":{\"content\":\"// SPDX-License-Identifier: GNU AGPLv3\\r\\npragma solidity 0.8.25;\\r\\n\\r\\nimport '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';\\r\\nimport '@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol';\\r\\n\\r\\nimport '../interfaces/IBaluniV1Registry.sol';\\r\\nimport '../interfaces/IYearnVault.sol';\\r\\nimport '../interfaces/IBaluniV1Swapper.sol';\\r\\nimport '../interfaces/IBaluniV1Oracle.sol';\\r\\nimport '../interfaces/IBaluniV1YearnVault.sol';\\r\\n\\r\\ncontract BaluniV1YearnVault is\\r\\n    Initializable,\\r\\n    UUPSUpgradeable,\\r\\n    OwnableUpgradeable,\\r\\n    ERC20Upgradeable,\\r\\n    ReentrancyGuardUpgradeable,\\r\\n    PausableUpgradeable,\\r\\n    IBaluniV1YearnVault\\r\\n{\\r\\n    address public baseAsset;\\r\\n    IYearnVault private _yearnVault;\\r\\n    address public quoteAsset;\\r\\n    IBaluniV1Registry private _registry;\\r\\n\\r\\n    uint256 public accumulatedAssetB;\\r\\n    uint256 public lastDeposit;\\r\\n    uint256 public allTimeInterest;\\r\\n\\r\\n    event Buy(address indexed sender, uint256 amount, uint256 interest);\\r\\n\\r\\n    function initialize(\\r\\n        string memory _name,\\r\\n        string memory _symbol,\\r\\n        address _assetA,\\r\\n        address _yearnVaultAddress,\\r\\n        address _assetB,\\r\\n        address _registryAddress\\r\\n    ) external initializer {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ERC20_init(_name, _symbol);\\r\\n        __UUPSUpgradeable_init();\\r\\n        __ReentrancyGuard_init();\\r\\n        __Pausable_init();\\r\\n\\r\\n        baseAsset = _assetA;\\r\\n        _yearnVault = IYearnVault(_yearnVaultAddress);\\r\\n        quoteAsset = _assetB;\\r\\n        _registry = IBaluniV1Registry(_registryAddress);\\r\\n\\r\\n        require(baseAsset != address(0), 'Invalid assetA address');\\r\\n        require(address(_yearnVault) != address(0), 'Invalid Yearn Vault address');\\r\\n        require(quoteAsset != address(0), 'Invalid assetB address');\\r\\n    }\\r\\n\\r\\n    function reinitialize(\\r\\n        string memory _name,\\r\\n        string memory _symbol,\\r\\n        address _assetA,\\r\\n        address _yearnVaultAddress,\\r\\n        address _assetB,\\r\\n        address _registryAddress,\\r\\n        uint64 _version\\r\\n    ) external reinitializer(_version) {\\r\\n        __Ownable_init(msg.sender);\\r\\n        __ERC20_init(_name, _symbol);\\r\\n        __UUPSUpgradeable_init();\\r\\n        __ReentrancyGuard_init();\\r\\n        __Pausable_init();\\r\\n\\r\\n        baseAsset = _assetA;\\r\\n        _yearnVault = IYearnVault(_yearnVaultAddress);\\r\\n        quoteAsset = _assetB;\\r\\n        _registry = IBaluniV1Registry(_registryAddress);\\r\\n\\r\\n        require(baseAsset != address(0), 'Invalid assetA address');\\r\\n        require(address(_yearnVault) != address(0), 'Invalid Yearn Vault address');\\r\\n        require(quoteAsset != address(0), 'Invalid assetB address');\\r\\n    }\\r\\n\\r\\n    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\\r\\n\\r\\n    function deposit(uint256 amount, address to) external override nonReentrant whenNotPaused {\\r\\n        require(amount > 0, 'Amount must be greater than zero');\\r\\n\\r\\n        _processInterest();\\r\\n\\r\\n        IERC20(baseAsset).transferFrom(msg.sender, address(this), amount);\\r\\n\\r\\n        address baluniRouter = _registry.getBaluniRouter();\\r\\n        address treasury = _registry.getTreasury();\\r\\n\\r\\n        uint hairCut = _haircut(amount);\\r\\n        uint hairCut2 = _haircut(hairCut);\\r\\n\\r\\n        IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n        IERC20(baseAsset).transfer(treasury, hairCut2);\\r\\n\\r\\n        uint256 amountAfter = amount - hairCut;\\r\\n\\r\\n        IERC20(baseAsset).approve(address(_yearnVault), amountAfter);\\r\\n        _yearnVault.deposit(amountAfter, address(this));\\r\\n\\r\\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\\r\\n        uint8 yearnDecimal = IERC20Metadata(address(_yearnVault)).decimals();\\r\\n\\r\\n        if (baseDecimal > yearnDecimal) {\\r\\n            amountAfter = amountAfter / 10 ** (baseDecimal - yearnDecimal);\\r\\n        } else {\\r\\n            amountAfter = amountAfter * 10 ** (yearnDecimal - baseDecimal);\\r\\n        }\\r\\n\\r\\n        uint256 amountScaled = amountAfter * 10 ** (18 - yearnDecimal);\\r\\n\\r\\n        _mint(to, amountScaled);\\r\\n\\r\\n        lastDeposit = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n    }\\r\\n\\r\\n    function _buy() internal {\\r\\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\\r\\n        require(interest > 0, 'BaluniV1yVault: No interest available');\\r\\n\\r\\n        uint256 sharesToRedeem = _yearnVault.convertToShares(interest);\\r\\n        uint256 amountOut = _yearnVault.redeem(sharesToRedeem, address(this), address(this));\\r\\n\\r\\n        require(amountOut > 0, 'BaluniV1yVault: Redeem Failed');\\r\\n\\r\\n        IBaluniV1Swapper swapper = IBaluniV1Swapper(_registry.getBaluniSwapper());\\r\\n\\r\\n        IERC20(baseAsset).approve(address(swapper), amountOut);\\r\\n\\r\\n        swapper.singleSwap(baseAsset, quoteAsset, amountOut, address(this));\\r\\n\\r\\n        emit Buy(msg.sender, amountOut, interest);\\r\\n    }\\r\\n\\r\\n    function buy() external override nonReentrant whenNotPaused {\\r\\n        _buy();\\r\\n    }\\r\\n\\r\\n    function _processInterest() internal {\\r\\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\\r\\n        uint8 baseDecimal = IERC20Metadata(baseAsset).decimals();\\r\\n        uint limit = 1 * 10 ** (baseDecimal - 2);\\r\\n        if (interest > limit) {\\r\\n            _buy();\\r\\n        }\\r\\n    }\\r\\n\\r\\n    function pause() external override onlyOwner {\\r\\n        _pause();\\r\\n    }\\r\\n\\r\\n    function unpause() external override onlyOwner {\\r\\n        _unpause();\\r\\n    }\\r\\n\\r\\n    function totalValuation() public view override returns (uint256) {\\r\\n        IBaluniV1Oracle oracle = IBaluniV1Oracle(_registry.getBaluniOracle());\\r\\n        address USDC = _registry.getUSDC();\\r\\n        uint256 valuation = 0;\\r\\n\\r\\n        uint yearnBalance = _yearnVault.balanceOf(address(this));\\r\\n        uint yearnBalanceConvert = _yearnVault.convertToAssets(yearnBalance);\\r\\n        uint balanceQuote = IERC20(quoteAsset).balanceOf(address(this));\\r\\n\\r\\n        if (baseAsset != USDC) valuation += oracle.convert(baseAsset, USDC, yearnBalanceConvert);\\r\\n        valuation += oracle.convert(quoteAsset, baseAsset, balanceQuote);\\r\\n        valuation += yearnBalanceConvert;\\r\\n\\r\\n        uint256 interest = interestEarned();\\r\\n\\r\\n        if (baseAsset != USDC) valuation += oracle.convert(baseAsset, USDC, interest);\\r\\n\\r\\n        valuation += interest;\\r\\n\\r\\n        return valuation;\\r\\n    }\\r\\n\\r\\n    function unitPrice() external view override returns (uint256) {\\r\\n        if (totalSupply() == 0) return 0;\\r\\n        address USDC = _registry.getUSDC();\\r\\n        uint8 decimals = IERC20Metadata(USDC).decimals();\\r\\n        uint256 factor = 10 ** (18 - decimals);\\r\\n        uint256 valuationScaledUp = totalValuation() * factor;\\r\\n        uint256 unitPriceScaled = (valuationScaledUp * 1e18) / totalSupply();\\r\\n        return unitPriceScaled;\\r\\n    }\\r\\n\\r\\n    function registry() external view override returns (address) {\\r\\n        return address(_registry);\\r\\n    }\\r\\n\\r\\n    function yearnVault() external view override returns (address) {\\r\\n        return address(_yearnVault);\\r\\n    }\\r\\n\\r\\n    function _haircut(uint256 amount) internal view returns (uint256) {\\r\\n        uint256 _BPS_FEE = _registry.getBPS_FEE();\\r\\n        uint256 _BPS_BASE = _registry.getBPS_BASE();\\r\\n        return (amount * _BPS_FEE) / _BPS_BASE;\\r\\n    }\\r\\n\\r\\n    function interestEarned() public view override returns (uint256) {\\r\\n        uint256 totalAssets = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n        uint256 interest = totalAssets > lastDeposit ? totalAssets - lastDeposit : 0;\\r\\n        return interest;\\r\\n    }\\r\\n\\r\\n    function withdraw(uint256 shares, address to) external override nonReentrant whenNotPaused {\\r\\n        require(shares > 0, 'Shares must be greater than zero');\\r\\n        require(balanceOf(msg.sender) >= shares, 'Insufficient balance');\\r\\n\\r\\n        uint8 yearnDecimal = IERC20Metadata(address(_yearnVault)).decimals();\\r\\n        uint8 quoteDecimal = IERC20Metadata(quoteAsset).decimals();\\r\\n        uint256 balanceYearnVault = _yearnVault.balanceOf(address(this));\\r\\n        uint256 quoteBalance = IERC20(quoteAsset).balanceOf(address(this));\\r\\n        uint256 baseBalance = IERC20(baseAsset).balanceOf(address(this));\\r\\n        balanceYearnVault *= 10 ** (18 - yearnDecimal);\\r\\n        quoteBalance *= 10 ** (18 - quoteDecimal);\\r\\n\\r\\n        uint256 withdrawAmountA = (shares * balanceYearnVault) / totalSupply();\\r\\n        uint256 withdrawAmountB = (shares * quoteBalance) / totalSupply();\\r\\n\\r\\n        _burn(msg.sender, shares);\\r\\n\\r\\n        withdrawAmountA /= 10 ** (18 - yearnDecimal);\\r\\n        withdrawAmountB /= 10 ** (18 - quoteDecimal);\\r\\n\\r\\n        _yearnVault.redeem(withdrawAmountA, address(this), address(this));\\r\\n\\r\\n        uint256 baseBalanceAfter = IERC20(baseAsset).balanceOf(address(this));\\r\\n        uint256 amountToSend = baseBalanceAfter - baseBalance;\\r\\n        address receiver = to;\\r\\n\\r\\n        if (amountToSend > 0) {\\r\\n            uint hairCut = _haircut(amountToSend);\\r\\n            IERC20(baseAsset).transfer(receiver, amountToSend - hairCut);\\r\\n            uint hairCut2 = _haircut(hairCut);\\r\\n            address baluniRouter = _registry.getBaluniRouter();\\r\\n            address treasury = _registry.getTreasury();\\r\\n            IERC20(baseAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n            IERC20(baseAsset).transfer(treasury, hairCut2);\\r\\n        }\\r\\n\\r\\n        if (withdrawAmountB > 0) {\\r\\n            bool success = _handleWithdrawB(withdrawAmountB, receiver);\\r\\n            require(success, \\\"Failed to transfer quoteAsset\\\");\\r\\n        }\\r\\n\\r\\n        lastDeposit = _yearnVault.convertToAssets(_yearnVault.balanceOf(address(this)));\\r\\n    }\\r\\n\\r\\n    function _handleWithdrawB(uint256 withdrawAmountB, address receiver) internal returns (bool) {\\r\\n        uint hairCut = _haircut(withdrawAmountB);\\r\\n        accumulatedAssetB -= withdrawAmountB;\\r\\n        IERC20(quoteAsset).transfer(receiver, withdrawAmountB - hairCut);\\r\\n        uint hairCut2 = _haircut(hairCut);\\r\\n        address baluniRouter = _registry.getBaluniRouter();\\r\\n        address treasury = _registry.getTreasury();\\r\\n        IERC20(quoteAsset).transfer(baluniRouter, hairCut - hairCut2);\\r\\n        IERC20(quoteAsset).transfer(treasury, hairCut2);\\r\\n        return true;\\r\\n    }\\r\\n}\\r\\n\",\"keccak256\":\"0x244d8b576a27c3739853b3e9e706d20ec0ff715b8ab88b6534462861316e9228\",\"license\":\"GNU AGPLv3\"}},\"version\":1}","storageLayout":{"storage":[{"astId":20707,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"baseAsset","offset":0,"slot":"0","type":"t_address"},{"astId":20710,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"_yearnVault","offset":0,"slot":"1","type":"t_contract(IYearnVault)5531"},{"astId":20712,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"quoteAsset","offset":0,"slot":"2","type":"t_address"},{"astId":20715,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"_registry","offset":0,"slot":"3","type":"t_contract(IBaluniV1Registry)4909"},{"astId":20717,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"accumulatedAssetB","offset":0,"slot":"4","type":"t_uint256"},{"astId":20719,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"lastDeposit","offset":0,"slot":"5","type":"t_uint256"},{"astId":20721,"contract":"contracts/vaults/BaluniV1YearnVault.sol:BaluniV1YearnVault","label":"allTimeInterest","offset":0,"slot":"6","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_contract(IBaluniV1Registry)4909":{"encoding":"inplace","label":"contract IBaluniV1Registry","numberOfBytes":"20"},"t_contract(IYearnVault)5531":{"encoding":"inplace","label":"contract IYearnVault","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}}}}